Describe the improvement
Keyboard-first users currently have a broken experience:
- Many interactive elements use
outline-none without a replacement (SettingsView.tsx:139,149,158,215,250,263; AiChatComponent.tsx:873; GitExplorerComponent.tsx:589,612,669,...).
- Icon-only buttons have no accessible name — only
title tooltips (ActivityBar, TitleBar, StatusBar, TabBar close, AiChat send/stop/close, BottomPanel tabs).
- ActivityBar and TabBar and BottomPanel tabs are rendered with
<div onClick> and have no role="tablist"/role="tab", no arrow-key navigation.
Proposed change:
- Introduce a global focus-visible style (
:focus-visible { outline: 2px solid #4c8bff; outline-offset: 2px }) and apply it to all buttons/inputs/tabs. Tailwind: focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-400.
- Add
aria-label (translated via t()) to every icon-only button. Convert StatusBar <div cursor-pointer> elements to real <button>.
- Implement the ARIA Tabs pattern on ActivityBar, TabBar and BottomPanel:
role="tablist" + role="tab" + aria-selected + arrow-key navigation + Home/End.
Would you like to implement this improvement yourself by sending a PR?
Maybe
Describe the improvement
Keyboard-first users currently have a broken experience:
outline-nonewithout a replacement (SettingsView.tsx:139,149,158,215,250,263;AiChatComponent.tsx:873;GitExplorerComponent.tsx:589,612,669,...).titletooltips (ActivityBar, TitleBar, StatusBar, TabBar close, AiChat send/stop/close, BottomPanel tabs).<div onClick>and have norole="tablist"/role="tab", no arrow-key navigation.Proposed change:
:focus-visible { outline: 2px solid #4c8bff; outline-offset: 2px }) and apply it to all buttons/inputs/tabs. Tailwind:focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-400.aria-label(translated viat()) to every icon-only button. Convert StatusBar<div cursor-pointer>elements to real<button>.role="tablist"+role="tab"+aria-selected+ arrow-key navigation + Home/End.Would you like to implement this improvement yourself by sending a PR?
Maybe