View Issue Details

IDProjectCategoryView StatusLast Update
0012050Talerwallet (WebExtension)public2026-11-10 23:43
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 
Summary0012050: Wallet: 'Enter a wallet link' page does not focus the link field
DescriptionWhat happens:
Balances -> enter link (#/enter, also 'Enter link manually' from the QR scanner). The page's only input (Wallet link) is not focused; activeElement BODY.

Expected:
The Wallet link input is focused on arrival so the user can paste/type immediately.

Where:
  - packages/wallet-webui/src/screens/UriInputScreen.tsx:17

Measured in headless Chromium (document.activeElement):
  before: BODY (nothing focused)
  after: INPUT#taler-uri

Proposed fix:
Ref on the input, focus once on mount (preventScroll).

Patch against taler-typescript-core master attached; the same change is committed on branch dev/bots/autofocus (durian). Screenshots attached (focused element outlined in red): 'before' is master, 'after' is with the patch.

Verified: tsc ok (0 errors in wallet-webui with workspace sources; plain `tsc --noEmit -p .` output identical to baseline, whose errors come from stale taler-util/wallet-core lib/); eslint + prettier clean on changed files; package tests screens/exchange-removal/payment-entry/routing bundled from src: 89/95 pass, the same 6 App-level demo tests fail before and after; scratch test; screenshots.
TagsNo tags attached.
Attached Files
wallet--uri-entry.diff (1,134 bytes)   
diff --git a/packages/wallet-webui/src/screens/UriInputScreen.tsx b/packages/wallet-webui/src/screens/UriInputScreen.tsx
index 7def8c7ef..d687139c9 100644
--- a/packages/wallet-webui/src/screens/UriInputScreen.tsx
+++ b/packages/wallet-webui/src/screens/UriInputScreen.tsx
@@ -1,3 +1,4 @@
+import { useEffect, useRef } from "preact/hooks";
 import { Button } from "../ui/Button.js";
 import { Card } from "../ui/Card.js";
 import { i18n } from "../i18n/runtime.js";
@@ -13,6 +14,11 @@ export function UriInputScreen(props: {
   onScan: () => void;
   onBack: () => void;
 }) {
+  const input = useRef<HTMLInputElement>(null);
+  // The link is the only thing to enter on this page.
+  useEffect(() => {
+    input.current?.focus({ preventScroll: true });
+  }, []);
   return (
     <FocusedPage class="space-y-6">
       <div class="flex items-center gap-4">
@@ -43,6 +49,7 @@ export function UriInputScreen(props: {
             class="text-sm font-semibold"
           >{i18n.str`Wallet link`}</label>
           <input
+            ref={input}
             id="taler-uri"
             type="text"
             value={props.value}
wallet--uri-entry.diff (1,134 bytes)   
wallet--uri-entry--before.png (40,539 bytes)   
wallet--uri-entry--before.png (40,539 bytes)   
wallet--uri-entry--after.png (41,718 bytes)   
wallet--uri-entry--after.png (41,718 bytes)   

Required notifications

Address or linkRemarkAdded byNotifiedActions

Relationships

child of 0012024 new Web UIs (bank, wallet, exchange AML/KYC, challenger, auditor, web-util forms): dialogs and single-purpose forms open without keyboard focus on the obvious field 

Activities

Issue History

Date ModifiedUsernameFieldChange
2026-11-10 23:42bot-cgNew Issue
2026-11-10 23:42bot-cgRelationship addedchild of 0012024
2026-11-10 23:43bot-cgFile Added: wallet--uri-entry.diff
2026-11-10 23:43bot-cgFile Added: wallet--uri-entry--before.png
2026-11-10 23:43bot-cgFile Added: wallet--uri-entry--after.png