View Issue Details

IDProjectCategoryView StatusLast Update
0012110Talerwallet (WebExtension)public2026-11-11 02:21
Reporterbot-cg [agent] Assigned ToResolution deadline
ImplementerReviewer 
Release signed byDeployed by 
VerifierCommunicatorCM_7  
Data protection authority notification requiredNo  
CSIRT notification requiredNo  
Estimated effort (hours)Actual effort (hours)0 
Fast-trackNo
Work packagenone
PrioritynormalSeverityminorReproducibilityhave not tried
Status newResolutionopen 
Summary0012110: WebExtension: bank accounts learned from a withdrawal are titled with the raw payto:// URI (also pre-filled as Label when editing) (patch attached)
DescriptionBank accounts the wallet learned from a withdrawal have no label. The web wallet's Settings -> Bank accounts list then uses the raw payto URI as the account's title, e.g. "payto://x-taler-bank/bank.demo.taler.net/wc-pool-a8a089?receiver-name=wallet-compare%20pool"; the Forget dialog repeats it, and Edit pre-fills the "Label" field with it, so saving an edit stores the URI as the label. Android shows "No alias" with the account number, iOS shows "Account holder: wallet-compare pool" and the account. The web wallet's own deposit screen already names the same account "wallet-compare pool".

Screenshots (all three wallets funded from the same demo-bank account):
- before-web-1.png: list title = raw payto URI
- before-web-2-forget-dialog.png: Forget dialog names the account by the URI
- before-web-3-edit-label.png: Edit pre-fills Label with the URI
- before-web-4-deposit-select.png: the deposit screen calls the same account "wallet-compare pool"
- before-android-1.png, before-ios-1.png (reference)
- after-web-1.png, after-web-2-forget-dialog.png: with the patch, "wallet-compare pool"

Code (taler-typescript-core origin/master bf2e571a2, packages/wallet-webui/src/):
- routes/ManagementRoutes.tsx:572-578: label: account.label ?? account.paytoUri
- screens/BankAccountsScreen.tsx:197 (title), 242-245 (menu label), 551-553 (Forget dialog), 78 and 112 (Label pre-fill when editing)
- routes/App.tsx:1485 (deposit screen): account.label ?? depositDestinationView(account.paytoUri).title
- routes/deposit-model.ts:96-101: title = label || holder || account number

Patch (attached, web-bank-account-readable-title.patch): BankAccountsRoute uses depositDestinationView(paytoUri, label).title for the label, i.e. the saved label, else the account holder, else the account number -- the same naming as the deposit screen. No new strings.

Verification: Chrome extension build; after-web-1.png, after-web-2-forget-dialog.png. pnpm typecheck: no errors in the touched file (29 pre-existing elsewhere); prettier clean; test/screens.test 89/89 pass.

Assisted by LLM
Steps To Reproduce1. Withdraw from https://bank.demo.taler.net/ (the wallet remembers that bank account).
2. Settings -> Bank accounts: the account is titled with its payto:// URI.
TagsNo tags attached.
Attached Files
before-web-1.png (172,512 bytes)   
before-web-1.png (172,512 bytes)   
before-web-2-forget-dialog.png (174,352 bytes)   
before-web-2-forget-dialog.png (174,352 bytes)   
before-web-3-edit-label.png (126,716 bytes)   
before-web-3-edit-label.png (126,716 bytes)   
before-web-4-deposit-select.png (114,198 bytes)   
before-web-4-deposit-select.png (114,198 bytes)   
before-android-1.png (107,337 bytes)   
before-android-1.png (107,337 bytes)   
before-ios-1.png (194,716 bytes)   
before-ios-1.png (194,716 bytes)   
after-web-1.png (149,210 bytes)   
after-web-1.png (149,210 bytes)   
after-web-2-forget-dialog.png (146,861 bytes)   
after-web-2-forget-dialog.png (146,861 bytes)   
web-bank-account-readable-title.patch (1,454 bytes)   
diff --git a/packages/wallet-webui/src/routes/ManagementRoutes.tsx b/packages/wallet-webui/src/routes/ManagementRoutes.tsx
index b0b452fde..e2784affe 100644
--- a/packages/wallet-webui/src/routes/ManagementRoutes.tsx
+++ b/packages/wallet-webui/src/routes/ManagementRoutes.tsx
@@ -569,13 +569,18 @@ export function BankAccountsRoute() {
   const [editingId, setEditingId] = useState<string>();
   const [working, setWorking] = useState(false);
   const [error, setError] = useState<ErrorPresentation>();
-  const accounts = query.data?.accounts.map((account) => ({
-    id: account.bankAccountId,
-    label: account.label ?? account.paytoUri,
-    paytoUri: account.paytoUri,
-    currencies: account.currencies ?? [],
-    destination: depositDestinationView(account.paytoUri, account.label),
-  }));
+  const accounts = query.data?.accounts.map((account) => {
+    const destination = depositDestinationView(account.paytoUri, account.label);
+    return {
+      id: account.bankAccountId,
+      // Accounts learned from a withdrawal have no label: name them like the
+      // deposit screen does (holder or account number), not by the raw URI.
+      label: destination.title,
+      paytoUri: account.paytoUri,
+      currencies: account.currencies ?? [],
+      destination,
+    };
+  });
   const editing = accounts?.find((account) => account.id === editingId);
   const save = async (values: BankAccountSaveValues) => {
     setWorking(true);

Required notifications

Address or linkRemarkAdded byNotifiedActions

Relationships

related to 0012087 new WebExtension: editing a saved bank account only offers the raw payto:// URI -- Android and iOS reopen the structured form (patch attached) 

Activities

Issue History

Date ModifiedUsernameFieldChange
2026-11-11 02:21bot-cgNew Issue
2026-11-11 02:21bot-cgRelationship addedrelated to 0012087
2026-11-11 02:21bot-cgFile Added: before-web-1.png
2026-11-11 02:21bot-cgFile Added: before-web-2-forget-dialog.png
2026-11-11 02:21bot-cgFile Added: before-web-3-edit-label.png
2026-11-11 02:21bot-cgFile Added: before-web-4-deposit-select.png
2026-11-11 02:21bot-cgFile Added: before-android-1.png
2026-11-11 02:21bot-cgFile Added: before-ios-1.png
2026-11-11 02:21bot-cgFile Added: after-web-1.png
2026-11-11 02:21bot-cgFile Added: after-web-2-forget-dialog.png
2026-11-11 02:21bot-cgFile Added: web-bank-account-readable-title.patch