taler-docs

Documentation for GNU Taler components, APIs and protocols
Log | Files | Refs | README | LICENSE

082-wallet-diagnostics.rst (3222B)


      1 DD 82: Wallet Diagnostics Export
      2 ################################
      3 
      4 :Design status: Accepted
      5 :Implementation status: Partial
      6 :DD shepherd: TBD
      7 :Historical contributors: Florian Dold
      8 :First published: 2026-02-12
      9 :Last substantive change: 2026-02-12
     10 :Implementation evidence: ``taler-typescript-core`` (2026-02-13); ``taler-ios`` (2026-02-14; 2026-02-15)
     11 :Normative references: :doc:`../wallet/wallet-core`, :doc:`../developer/taler-wallet-developer`
     12 :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.
     13 
     14 Summary
     15 =======
     16 
     17 This design document describes a new wallet feature to make gathering
     18 diagnostics information from wallet users safer and more convenient.
     19 
     20 Motivation
     21 ==========
     22 
     23 When users have a problem with their wallet, right now the only
     24 reliable way to diagnose it is a database export.
     25 
     26 This is a problem, because:
     27 
     28 * It requires us to deal with sensitive user data, including private keys and
     29   PII
     30 * It teaches the user that it's okay to export and send around their wallet
     31   database via e-mail etc.
     32 
     33 Requirements
     34 ============
     35 
     36 * Must be easy to use
     37 * Must give us relevant information to enable diagnostics
     38 * Must not contain private keys or unredacted personally identifiable
     39   information
     40 
     41 Proposed Solution
     42 =================
     43 
     44 Wallet-core implements a new ``getDiagnostics`` request. This request
     45 returns diagnostics information in a JSON format. The export **MUST NOT**
     46 contain private keys. IBANs **MUST** be truncated to six characters and user
     47 names should be scrubbed or truncated.
     48 
     49 The following new functionality is implemented in the UIs:
     50 
     51 * In settings mode, a new option "Save diagnostics information"
     52   is added. This option should *not* be restricted to the developer
     53   mode.
     54 * Clicking/tapping the option creates a diagnostics export
     55 
     56   * On mobile platforms, the user should be the option to
     57     share or save the export
     58   * In the browser, just saving the export should be sufficient
     59 
     60 Test Plan
     61 =========
     62 
     63 Since the UI for this is very static, a simple manual test
     64 of an export and share/save should be enough.
     65 
     66 Definition of Done
     67 ==================
     68 
     69 * [x] ``getDiagnostics`` implemented in wallet-core.
     70 * [x] Export/share UI implemented on iOS.
     71 * [ ] Export/share UI implemented on Android and WebExtension.
     72 * [ ] Manual cross-platform export test completed.
     73 * [x] The wallet developer manual documents the privacy/redaction invariants,
     74   not merely the current response fields.
     75 
     76 Future Extensions
     77 =================
     78 
     79 In future versions, we might ask users to exclude/include certain types of
     80 information from the export.
     81 
     82 Alternatives
     83 ============
     84 
     85 There is no good alternative, we don't want telemetry, we don't want full DB
     86 exports.
     87 
     88 Instead of JSON, we could export it to something more human-readable like
     89 YAML, to make it easier for users to review what the diagnostics export contains.
     90 
     91 Drawbacks
     92 =========
     93 
     94 * One more option that clutters the settings dialogue
     95 
     96 Discussion / Q&A
     97 ================
     98 
     99 (This should be filled in with results from discussions on mailing lists / personal communication.)