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.)