Context
The Svelte 5 rewrite (#1248) was deliberately behavior-preserving and did not touch accessibility. Now that every component is modern runes code, an a11y pass is low-cost and worthwhile.
Scope
Audit and improve keyboard/ARIA across the migrated GUIs:
- The
role="button" + tabindex + manual onclick/onkeypress patterns in choice rows (ChoiceListItem, MultiChoiceListItem, ChoiceItemRightButtons), command rows (the 7 MacroGUIs/Components/*), and the drag handles.
- Focus management in the modals (
ChoiceBuilder/templateChoiceBuilder, MacroBuilder, ConditionalBranchEditorModal, the PackageManager modals).
- ARIA roles/labels and keyboard operability of the drag-to-reorder handles (svelte-dnd-action).
- Run
eslint-plugin-svelte's a11y rules at a stricter level and address findings.
Acceptance
- Keyboard-only operability of choice/command CRUD + reorder.
- No regressions to existing behavior (verify in the dev vault).
Deferred from #1248 (out of scope for a behavior-preserving migration).
Context
The Svelte 5 rewrite (#1248) was deliberately behavior-preserving and did not touch accessibility. Now that every component is modern runes code, an a11y pass is low-cost and worthwhile.
Scope
Audit and improve keyboard/ARIA across the migrated GUIs:
role="button"+tabindex+ manualonclick/onkeypresspatterns in choice rows (ChoiceListItem,MultiChoiceListItem,ChoiceItemRightButtons), command rows (the 7MacroGUIs/Components/*), and the drag handles.ChoiceBuilder/templateChoiceBuilder,MacroBuilder,ConditionalBranchEditorModal, the PackageManager modals).eslint-plugin-svelte's a11y rules at a stricter level and address findings.Acceptance
Deferred from #1248 (out of scope for a behavior-preserving migration).