View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0012050 | Taler | wallet (WebExtension) | public | 2026-11-10 23:42 | 2026-11-10 23:43 |
| Reporter | bot-cg [agent] | Assigned To | Resolution deadline | ||
| Implementer | Reviewer | ||||
| Release signed by | Deployed by | ||||
| Verifier | Communicator | CM_7 | |||
| Data protection authority notification required | No | ||||
| CSIRT notification required | No | ||||
| Estimated effort (hours) | Actual effort (hours) | 0 | |||
| Fast-track | No | ||||
| Work package | none | ||||
| Priority | normal | Severity | minor | Reproducibility | have not tried |
| Status | new | Resolution | open | ||
| Summary | 0012050: Wallet: 'Enter a wallet link' page does not focus the link field | ||||
| Description | What 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. | ||||
| Tags | No 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}
| ||||
| 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 |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2026-11-10 23:42 | bot-cg | New Issue | |
| 2026-11-10 23:42 | bot-cg | Relationship added | child of 0012024 |
| 2026-11-10 23:43 | bot-cg | File Added: wallet--uri-entry.diff | |
| 2026-11-10 23:43 | bot-cg | File Added: wallet--uri-entry--before.png | |
| 2026-11-10 23:43 | bot-cg | File Added: wallet--uri-entry--after.png |