Context:
Nine surfaces across seven members declare role="menu", role="listbox" or role="radiogroup". None implements arrow-key navigation.
chat/ChatSurface arrowkeys=0
org-workbench/OrgSearch arrowkeys=0
response-reviewer/ConnectorPalette arrowkeys=0
sort-filter-lens/App arrowkeys=0
search-and-add/ProviderPalette arrowkeys=0
pack-runner/ConnectorPalette arrowkeys=0
shell/DevelopersMenu arrowkeys=0
shell/JumboPopdown arrowkeys=0
shell/WorkspaceSwitcher arrowkeys=0
Two declare role="menu" with no menuitem children; one declares role="radiogroup" containing no radios — a widget a screen reader announces as structurally broken.
Each role is a promise: this is a widget you navigate with arrows, and Tab takes you out of it. All nine deliver a plain list of tab stops.
Selector--Listbox is built with 17 tests written before it (packages/shared-ui/test/selector.test.ts). Selector--Menu next. No --Radio: zero sightings.
Per-member adoption: failing test first, then refactor, then green.
Context:
Nine surfaces across seven members declare
role="menu",role="listbox"orrole="radiogroup". None implements arrow-key navigation.Two declare
role="menu"with nomenuitemchildren; one declaresrole="radiogroup"containing no radios — a widget a screen reader announces as structurally broken.Each role is a promise: this is a widget you navigate with arrows, and Tab takes you out of it. All nine deliver a plain list of tab stops.
Selector--Listboxis built with 17 tests written before it (packages/shared-ui/test/selector.test.ts).Selector--Menunext. No--Radio: zero sightings.Per-member adoption: failing test first, then refactor, then green.