The deleted win7 tree held a few behaviours the modern tree never got:
- Context menu: the first ArrowUp in a fresh menu skipped the last item
(Delete in the row menu, Disconnect in the tab menu) — stepping from -1
landed one short. The index math moves to core/menu-nav.ts stepIndex(),
checked by menu-nav.spec.ts (bun test; verified to fail on the old logic).
Items get ids and the menu exposes aria-activedescendant, so screen
readers follow the arrow keys while focus stays on the menu.
- Middle-click closes a tab, as in browsers. auxclick also fires for the
right button, so only button 1 counts; closeWorkspace already refuses the
last tab. A middle press is swallowed so WebView2 doesn't start autoscroll
over the scrollable strip. The hover ✕ stays.
- ARIA: the tab strip is a tablist of role=tab buttons with aria-selected
(the in-tab ✕ is taken out of the a11y tree and tab order — Ctrl/Cmd+W and
the tab menu remain the keyboard paths); transfer bars are progressbars
with value and a name.
Co-Authored-By: Claude <noreply@anthropic.com>