23.83. DD 82: Wallet Diagnostics Export#

Design status:

Accepted

Implementation status:

Partial

DD shepherd:

TBD

Historical contributors:

Florian Dold

First published:

2026-02-12

Last substantive change:

2026-02-12

Implementation evidence:

taler-typescript-core (2026-02-13); taler-ios (2026-02-14; 2026-02-15)

Normative references:

Wallet-Core API Documentation, Wallet Developer Manual

Upstream follow-up:

Rename the stale TestingGetDiagnosticsOp/TestingGetDiagnostics API type names to match the public getDiagnostics operation; keep generated output unchanged here and fix the source generator/types upstream.

23.83.1. Summary#

This design document describes a new wallet feature to make gathering diagnostics information from wallet users safer and more convenient.

23.83.2. Motivation#

When users have a problem with their wallet, right now the only reliable way to diagnose it is a database export.

This is a problem, because:

  • It requires us to deal with sensitive user data, including private keys and PII

  • It teaches the user that it’s okay to export and send around their wallet database via e-mail etc.

23.83.3. Requirements#

  • Must be easy to use

  • Must give us relevant information to enable diagnostics

  • Must not contain private keys or unredacted personally identifiable information

23.83.4. Proposed Solution#

Wallet-core implements a new getDiagnostics request. This request returns diagnostics information in a JSON format. The export MUST NOT contain private keys. IBANs MUST be truncated to six characters and user names should be scrubbed or truncated.

The following new functionality is implemented in the UIs:

  • In settings mode, a new option “Save diagnostics information” is added. This option should not be restricted to the developer mode.

  • Clicking/tapping the option creates a diagnostics export

    • On mobile platforms, the user should be the option to share or save the export

    • In the browser, just saving the export should be sufficient

23.83.5. Test Plan#

Since the UI for this is very static, a simple manual test of an export and share/save should be enough.

23.83.6. Definition of Done#

  • [x] getDiagnostics implemented in wallet-core.

  • [x] Export/share UI implemented on iOS.

  • [ ] Export/share UI implemented on Android and WebExtension.

  • [ ] Manual cross-platform export test completed.

  • [x] The wallet developer manual documents the privacy/redaction invariants, not merely the current response fields.

23.83.7. Future Extensions#

In future versions, we might ask users to exclude/include certain types of information from the export.

23.83.8. Alternatives#

There is no good alternative, we don’t want telemetry, we don’t want full DB exports.

Instead of JSON, we could export it to something more human-readable like YAML, to make it easier for users to review what the diagnostics export contains.

23.83.9. Drawbacks#

  • One more option that clutters the settings dialogue

23.83.10. Discussion / Q&A#

(This should be filled in with results from discussions on mailing lists / personal communication.)