feat(ui): app-wide keyboard and screen-reader accessibility#89
Merged
Conversation
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Accessibility pass built on the pinned GPUI's AccessKit support (roles, aria props, tab_index, focus_visible, automatic Enter/Space activation — verified in vendored source).
accessible_clickabletreatment in material.rs: tab stop + semantic role + localized accessible name + theme-aware 2px focus outline; applied to all raw clickable surfaces (composer send/steer/stop, chat Git/Open actions, sidebar search/settings/project/thread rows, terminal tabs, diff tabs/rows, settings nav/popovers, toast disclosures, recent-project rows).aria_selected+ active-descendant tracking while focus stays in the input.Verification: fmt / clippy -D warnings / workspace tests green (139 UI tests incl. new regression tests for focus order, Enter/Space activation, palette navigation, toggle inversion). Manual walkthrough in the built app: full Tab/Shift-Tab traversal with no dead ends, real activations (thread switch, settings toggle, composer menu, palette) and native AccessKit tree inspection showing localized names/roles. VoiceOver was not enabled — no auditory claim made. Known remainder: some pre-existing icon-only component buttons are focusable but unnamed; keyboard resizing/scrollbars/terminal-grid SR output deliberately out of scope.
🤖 Generated with Claude Code