View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0012002 | Taler | merchant portal webui | public | 2026-11-10 23:41 | 2026-11-10 23:55 |
| 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 | 0012002: Merchant portal: dialogs, PIN/code prompts and single-purpose forms open without keyboard focus on the obvious field | ||||
| Description | Noticed first in merchant account creation: the email/SMS code (PIN) steps have one input, but focus stays on the submit button, so typing the code does nothing. An audit of the whole portal found the same problem across dialogs, prompts and create forms (children of this issue). Three root causes in this package: (1) TanCodeInputGroup, shared by sign-up, sign-in 2FA and the 'Confirm it is you' MFA screen, never focuses its input; the old portal's fix for this (0011487, e157ed6e2) was lost when e38ceeaba replaced the legacy portal. (2) ui/Modal.tsx picks its initial focus with one querySelector over a selector list, which matches in document order, so the title's close button always wins and [autofocus] is never honoured. (3) Hand-built overlays and create pages have no focus logic at all. Also part of the patch set, not a bug on master: tutorial chapters render live previews of real screens, so once screens focus a field on mount, opening a chapter would pull the reader's focus into a preview and scroll the page by thousands of pixels. LiveComponentPreview keeps preview content inert while it mounts (unless the reader's focus is already inside), which is committed before the screen changes. Why this keeps happening: Preact does not implement autoFocus. It only sets the HTML autofocus attribute, which browsers honour once per document (initial load), so in these single-page apps a field rendered later, such as a dialog, a wizard step or a new route, stays unfocused unless code calls focus() on mount. Several components accept a `focus` prop that nothing passes or nothing acts on. Each child issue describes one dialog/screen/component, with before/after screenshots and a patch. All fixes are on branch dev/bots/autofocus (durian); the commit ids are added as a note here. Rules followed: focus the only input of a PIN/code prompt; the first empty field of a create/edit form or step; the safe choice (Cancel) of a confirmation without input, never the destructive action; keep overview/list pages and review-and-pay steps unfocused; focus once on mount or step change, never on re-render. | ||||
| Tags | No tags attached. | ||||
| ID | Summary | Status | Assigned To | Estimated effort (hours) |
|---|---|---|---|---|
| 0012003 | Merchant portal: verification-code (PIN) steps and sign-in/sign-up/reset forms open without keyboard focus | new | ||
| 0012004 | Merchant: every Modal dialog opens on its close button instead of its first field, and ignores [autofocus] | new | ||
| 0012005 | Merchant: 'Pair a till' dialog does not focus Device Name, and its credential step drops focus (Escape stops working) | new | ||
| 0012006 | Merchant: Bank monitoring dialog stays on its close button after its settings load | new | ||
| 0012007 | Merchant: 'Point this portal at a different server' page does not focus the server address | new | ||
| 0012008 | Merchant: first-run 'Set up this merchant server' form does not focus Business name | new | ||
| 0012009 | Merchant: admin 'Reset merchant account password' page does not focus New password | new | ||
| 0012010 | Merchant: admin 'Create merchant account' form does not focus Account ID | new | ||
| 0012011 | Merchant: 'Create New Product' does not focus Product Name | new | ||
| 0012012 | Merchant: 'Create Machine Access' does not focus 'Used for' | new | ||
| 0012013 | Merchant: 'Add offline payment device' does not focus Name | new | ||
| 0012014 | Merchant: 'Add a bank account' does not focus the IBAN | new | ||
| 0012015 | Merchant: 'Create New Order' does not focus the amount | new | ||
| 0012016 | Merchant: Grant Refund screen does not focus the refund amount | new | ||
| 0012017 | Merchant: Schedule a Report form does not focus its Description field | new | ||
| 0012018 | Merchant: Add/Edit Product Group and Money Pot dialogs focus the close button instead of the identifier | new | ||
| 0012019 | Merchant: Delete Order confirmation leaves focus behind the overlay (and Escape does nothing) | new | ||
| 0012020 | Merchant: Remove bank account confirmation does not take focus (and Escape does nothing) | new | ||
| 0012021 | Merchant: Templates list 'Delete template' and 'Show QR' dialogs leave focus on the row menu behind them | new | ||
| 0012022 | Merchant PoS: ad-hoc item and quick-refund dialogs, and the paid screen, do not focus what they ask for | new | ||
| 0012023 | Merchant: 'You have been signed out' page does not focus 'Sign In Again' | new | ||
| This issue (hours) | ||||
| Its children (hours) | 0 | |||
| Together (hours) | 0 | |||
Not planned yet: 0012003, 0012004, 0012005, 0012006, 0012007, 0012008, 0012009, 0012010, 0012011, 0012012, 0012013, 0012014, 0012015, 0012016, 0012017, 0012018, 0012019, 0012020, 0012021, 0012022, 0012023. The plan of this issue cannot be finished while part of it is unplanned.
| parent of | 0012003 | new | Merchant portal: verification-code (PIN) steps and sign-in/sign-up/reset forms open without keyboard focus | |
| parent of | 0012004 | new | Merchant: every Modal dialog opens on its close button instead of its first field, and ignores [autofocus] | |
| parent of | 0012005 | new | Merchant: 'Pair a till' dialog does not focus Device Name, and its credential step drops focus (Escape stops working) | |
| parent of | 0012006 | new | Merchant: Bank monitoring dialog stays on its close button after its settings load | |
| parent of | 0012007 | new | Merchant: 'Point this portal at a different server' page does not focus the server address | |
| parent of | 0012008 | new | Merchant: first-run 'Set up this merchant server' form does not focus Business name | |
| parent of | 0012009 | new | Merchant: admin 'Reset merchant account password' page does not focus New password | |
| parent of | 0012010 | new | Merchant: admin 'Create merchant account' form does not focus Account ID | |
| parent of | 0012011 | new | Merchant: 'Create New Product' does not focus Product Name | |
| parent of | 0012012 | new | Merchant: 'Create Machine Access' does not focus 'Used for' | |
| parent of | 0012013 | new | Merchant: 'Add offline payment device' does not focus Name | |
| parent of | 0012014 | new | Merchant: 'Add a bank account' does not focus the IBAN | |
| parent of | 0012015 | new | Merchant: 'Create New Order' does not focus the amount | |
| parent of | 0012016 | new | Merchant: Grant Refund screen does not focus the refund amount | |
| parent of | 0012017 | new | Merchant: Schedule a Report form does not focus its Description field | |
| parent of | 0012018 | new | Merchant: Add/Edit Product Group and Money Pot dialogs focus the close button instead of the identifier | |
| parent of | 0012019 | new | Merchant: Delete Order confirmation leaves focus behind the overlay (and Escape does nothing) | |
| parent of | 0012020 | new | Merchant: Remove bank account confirmation does not take focus (and Escape does nothing) | |
| parent of | 0012021 | new | Merchant: Templates list 'Delete template' and 'Show QR' dialogs leave focus on the row menu behind them | |
| parent of | 0012022 | new | Merchant PoS: ad-hoc item and quick-refund dialogs, and the paid screen, do not focus what they ask for | |
| parent of | 0012023 | new | Merchant: 'You have been signed out' page does not focus 'Sign In Again' | |
| Not all the children of this issue are yet resolved or closed. | ||||
| Fixes for this issue and all its children are on branch dev/bots/autofocus (durian), rebased on master bf2e571a2: e4cfe1bd2 web-util: honour the focus flag in forms and dialogs c0c3962de merchant web UI: keep tutorial previews from taking focus 4693f4f1d merchant web UI: focus the code field in verification steps 8a4eb4219 merchant web UI: start dialogs and create forms on their first field b48f5dd89 bank web UI: focus the field each page and dialog asks for 216b033fe wallet web UI: focus the amount or field each form asks for first 908d48a85 anastasis web UI: focus the first field of three setup steps dbbabcf82 exchange AML web UI: focus the password, search and decision fields 21293f654 exchange KYC web UI: focus the first fillable field of a requirement form eaec0bcf6 challenger web UI: focus the address form and stop re-focusing the PIN 150044e2b auditor web UI: move focus into the suppress dialog and the menu drawer Merchant commits: c0c3962de (tutorial preview guard; must precede the screen changes), 4693f4f1d (0012003, code steps), 8a4eb4219 (the remaining children). Tests: merchant web UI unit suite 719/720; the one failure, "the storybook does not mount the portal shell", fails identically on unmodified master. tsc clean. Every child's before/after was measured in headless Chromium (screenshots attached to each child). | |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2026-11-10 23:41 | bot-cg | New Issue | |
| 2026-11-10 23:41 | bot-cg | Relationship added | parent of 0012003 |
| 2026-11-10 23:41 | bot-cg | Relationship added | parent of 0012019 |
| 2026-11-10 23:41 | bot-cg | Relationship added | parent of 0012018 |
| 2026-11-10 23:41 | bot-cg | Relationship added | parent of 0012017 |
| 2026-11-10 23:41 | bot-cg | Relationship added | parent of 0012016 |
| 2026-11-10 23:41 | bot-cg | Relationship added | parent of 0012015 |
| 2026-11-10 23:41 | bot-cg | Relationship added | parent of 0012014 |
| 2026-11-10 23:41 | bot-cg | Relationship added | parent of 0012013 |
| 2026-11-10 23:41 | bot-cg | Relationship added | parent of 0012012 |
| 2026-11-10 23:41 | bot-cg | Relationship added | parent of 0012011 |
| 2026-11-10 23:41 | bot-cg | Relationship added | parent of 0012010 |
| 2026-11-10 23:41 | bot-cg | Relationship added | parent of 0012009 |
| 2026-11-10 23:41 | bot-cg | Relationship added | parent of 0012008 |
| 2026-11-10 23:41 | bot-cg | Relationship added | parent of 0012007 |
| 2026-11-10 23:41 | bot-cg | Relationship added | parent of 0012006 |
| 2026-11-10 23:41 | bot-cg | Relationship added | parent of 0012005 |
| 2026-11-10 23:41 | bot-cg | Relationship added | parent of 0012004 |
| 2026-11-10 23:41 | bot-cg | Relationship added | parent of 0012023 |
| 2026-11-10 23:41 | bot-cg | Relationship added | parent of 0012022 |
| 2026-11-10 23:41 | bot-cg | Relationship added | parent of 0012021 |
| 2026-11-10 23:41 | bot-cg | Relationship added | parent of 0012020 |
| 2026-11-10 23:55 | bot-cg | Note Added: 0030389 |