NES: gutter indicator menu lacks ARIA menu semantics and arrow-key navigation
- Dominant language
- TypeScript
- Stars
- 193k
- Forks
- 42.4k
- PR merge metrics
- PR metrics pending
Description
Found while doing a hands-on accessibility pass over Next Edit Suggestions. Related to #327616 (which covers reaching the menu at all).
Does this issue occur when all extensions are disabled?: No — NES requires the GitHub Copilot extension to provide the inline edit.
- VS Code Version: 1.132.0 (built from source, `3ddd267c500`)
- Copilot Chat Extension Version: 0.60.0
- OS Version: macOS 26.5.2
## Steps to Reproduce
1. Trigger a next edit suggestion and hover the gutter indicator to open its menu (**Go To / Accept**, **Reject**, **Show Collapsed**, **Snooze**, **Settings**, **Feedback**).
2. Inspect the menu items.
## Actual
The menu is a custom construction that does not expose ARIA menu semantics:
- Items are `div.monaco-menu-option` with `tabIndex: 0` but **no `role="menuitem"`**.
- There is **no `role="menu"` container**, so the items are not grouped as a menu and the item count/position is not conveyed.
- Items have **no `aria-label`**; the accessible name is only the concatenated text plus the keybinding label.
- Keyboard handling is **Enter only** — no Space, and no Up/Down arrow navigation. Users must Tab through each item individually, which is not the expected menu interaction model.
## Cause
`src/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.ts`
```ts
function option(props: { ... }) {
return derived({ name: 'inlineEdits.option' }, (_reader) => n.div({
class: ['monaco-menu-option', props.isActive?.map(v => v && 'active')],
onmouseenter: ...,
onmouseleave: ...,
onclick: props.onAction,
onkeydown: e => {
if (e.key === 'Enter') {
props.onAction?.();
}
},
tabIndex: 0,
...
```
## Expected
Either adopt the existing menu widget (which already handles roles, arrow navigation and typeahead), or add `role="menu"` on the container, `role="menuitem"` on the options, arrow-key navigation, and Space activation.
Contributor guide
Assessment
This issue has not been assessed yet.