Repository navigation
fix(frontend): low-severity accessibility fixes (focus, aria, target size) #729
Description
Summary
Low-severity accessibility items from the 2026-10-08 UI review.
Where
Reviewed commit b50ca38. UX-36 verified live (axe); the others are source-level.
- UX-27: Escape in the RI-exchange filter popover drops focus to the body (the History popover handles it correctly).
frontend/src/riexchange.ts:1268-1271; correct referencefrontend/src/lib/history-filter-popover.ts:116-121. Related: refactor(frontend): consolidate column-filter popover plumbing into shared lib #18 (consolidation refactor; would fix it incidentally but does not mention the defect). - UX-31: chip-select search keeps
aria-activedescendanton the trigger and focus is not returned to the trigger after a pick.frontend/src/lib/chip-select.ts:181,199-204,235. - UX-34: skeleton loaders are not announced (no
aria-busy); the ladder<canvas tabindex=0>is a dead Tab stop.frontend/src/lib/skeleton.ts;frontend/src/ladder-timeline.ts:36. Related: chore(frontend): standardize loading indicators and add slow/empty fallbacks #186 (loading indicator consistency, not announcement). - UX-36: axe:
#topbar-filtershasaria-labelon a plain div (needsrole="group"); 34 small inline links on Admin General fail target-size.frontend/src/index.html:42.
Failure scenario
Keyboard users lose their place after Escape or a chip pick; screen-reader users get no loading announcement and a Tab stop with no action; the global filter label is ignored by assistive tech.
User impact
Keyboard and screen-reader users on RI exchange, filters, the ladder and Admin General.
Suggested fix
Return focus to the trigger on Escape and after a pick; set aria-busy on skeleton containers; remove tabindex from the canvas (or give it a keyboard action); add role="group" to #topbar-filters; enlarge inline link targets.
Screenshots
In the review fleet archive (/Users/cristi/.claude/agent-comms/review-fleet-20261008/screens/), NOT uploaded: usab-th-filter-enter.png (focus falls to body in a filter header, related), usab-admin-general.png (UX-36). Others: none (source-level).
Severity
Low: WCAG gaps with workarounds; axe rates two of them serious but they are minor structural issues.
Reviewer IDs: UX-27 (usab L2), UX-31 (usab L6), UX-34 (usab L13), UX-36 (usab L15)
Found by the 2026-10-08 review fleet.
Activity
IAmJSD commentedon Oct 24, 2026
Claiming: working on this
fix(frontend): return focus after filter popovers and chip picks, fla…
Merge remote-tracking branch 'origin/main' into ui/issue-186
IAmJSD commentedon Oct 26, 2026
Closing as fixed on main. #1370 fixed UX-31 (chip-select aria-activedescendant + focus return), UX-34 aria-busy on skeletons and UX-36 role=group on #topbar-filters. It added tests for UX-27, already fixed on main by #1315. The ladder canvas tabindex was removed by #688. Caveat: the UX-36 '34 small inline links on Admin General' item could not be reproduced (Admin General has no elements on main), so it is unverified rather than fixed.
The fix PRs said Refs, so GitHub did not close this automatically. Checked against main on 2026-10-26 by IAmJSD's agent (IAmJSD is acting owner while the maintainers are away). Reopen if anything here is still wrong.