You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix(a11y): focus lost after declining planned-purchase cancel; Key Created dialog lacks role=dialog #1666
Discovered while verifying #1598 (burndown run 2026-11-04).
Summary
Two small dialog accessibility gaps on main:
Declining the "Cancel this scheduled purchase" confirm (Plans, planned purchase row X) leaves focus on <body> instead of the opener: after the decline plans.ts (disable case, ~lines 585-600) calls loadPlannedPurchases(), which re-renders the row and removes the opener element.
The one-time "Key Created Successfully" dialog (data-require-ack) has no role="dialog" (and so no accessible dialog semantics).
Steps to reproduce
Plans > a planned purchase row > X > close the confirm with Esc or its X: document.activeElement is BODY.
Create an API key; inspect the Key Created dialog: no role attribute.
Expected behaviour
Focus returns to the re-rendered row's control (or the planned-purchases heading) after the list reloads.
The dialog has role="dialog" (or alertdialog), aria-modal="true" and a label.
Proposed fix
After loadPlannedPurchases() resolves, focus the matching row's control by id, falling back to the section heading.
Add the role/aria attributes in the Key Created markup.
Activity