Skip to content

fix(a11y): give Windows UI Automation names and keyboard semantics - #1227

Open
Pates2004 wants to merge 1 commit into
AprilNEA:masterfrom
Pates2004:fix/windows-accessibility
Open

fix(a11y): give Windows UI Automation names and keyboard semantics#1227
Pates2004 wants to merge 1 commit into
AprilNEA:masterfrom
Pates2004:fix/windows-accessibility

Conversation

@Pates2004

@Pates2004 Pates2004 commented Sep 1, 2026

Copy link
Copy Markdown

Custom-painted controls exposed only pointer handlers or icon glyphs. Their
visible text was not an accessible name, so NVDA announced generic “button”,
“switch”, or “slider” controls—or nothing at all.

Changes

  • add semantic roles, names, values, ranges, orientation, and keyboard actions
    to sliders, toggles, radio/choice cards, tabs, menu rows, and device controls;
  • replace icon-only and pointer-only interactions with keyboard-focusable
    gpui_base controls while preserving the existing visual design;
  • name settings inputs, selects, update dialogs, device rename fields, and
    navigation regions;
  • add missing accessibility strings to every locale catalog;
  • update gpui-component to the label-capable revision and zed/gpui to the
    compatible lockfile revision.

Testing

  • cargo fmt --all -- --check
  • RUSTFLAGS=-D warnings cargo clippy --workspace --all-targets -- -D warnings
  • RUSTFLAGS=-D warnings cargo test --workspace (one pre-existing xtask CI-map
    assertion fails because ci.yml does not list the documented rustdoc command)
  • RUSTFLAGS=-D warnings cargo test -p openlogi-ui locale
  • RUSTFLAGS=-D warnings cargo test -p openlogi-desktop i18n
  • Windows UI Automation smoke test with NVDA running; real Logitech hardware
    was not attached.

Dependency follow-up

The settings sidebar fix is prepared as a separate upstream PR in this working
tree. Once it is merged, bump the OpenLogi pins to that upstream commit; the
current OpenLogi commit is intentionally based on the public label-capable
revision so it remains buildable without a local path dependency.
Fixes #1226

@Pates2004
Pates2004 requested a review from AprilNEA as a code owner September 1, 2026 11:13
@greptile-apps

greptile-apps Bot commented Sep 1, 2026

Copy link
Copy Markdown

Greptile Summary

The PR improves Windows accessibility across the desktop UI by assigning semantic roles, localized names, state and range metadata, focus behavior, and keyboard actions to custom-painted controls.

  • Adds reusable accessible sliders, toggles, dropdown triggers, tabs, menu rows, and choice controls.
  • Applies accessible names and navigation semantics throughout device panels, dialogs, settings, and application regions.
  • Adds the required accessibility strings to every locale catalog.
  • Updates the GPUI and gpui-component revisions needed by the new primitives.

Confidence Score: 5/5

The PR appears safe to merge; no concrete changed-code defect or independently actionable non-blocking issue was identified.

The new semantic wrappers preserve the existing state-update handlers while adding explicit names, roles, values, focusability, and keyboard or accessibility actions, and the dependency advisories inspected were not introduced by this change.

Important Files Changed

Filename Overview
crates/openlogi-desktop/src/ui/components.rs Introduces the central accessible control wrappers, including named sliders, switches, dropdown triggers, and profile tabs, with focused keyboard tests.
crates/openlogi-desktop/src/app.rs Makes the application root semantic and adjusts initial focus traversal so focus enters the first usable control.
crates/openlogi-desktop/src/windows/settings/appearance.rs Adds radio-group structure and accessible names to appearance, icon, radius, scale, filter, and theme controls.
crates/openlogi-desktop/src/ui/carousel.rs Replaces icon-only carousel arrows with named semantic buttons while preserving disabled navigation behavior.
Cargo.toml Advances gpui-component and related assets to the label-capable revision used by the accessibility implementation.
Cargo.lock Locks compatible GPUI and gpui-component revisions and their resulting transitive dependency graph.
crates/openlogi-ui/locales/en.yml Adds the English source accessibility strings mirrored across all locale catalogs.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
    User[Keyboard or assistive technology] --> Semantic[Named GPUI semantic control]
    Semantic --> Action[Keyboard or accessibility action]
    Action --> State[AppState update]
    State --> IPC[Existing agent IPC path]
    IPC --> Device[Device or application setting]
Loading

Reviews (1): Last reviewed commit: "fix(gui): improve Windows accessibility ..." | Re-trigger Greptile

@davidbudnick davidbudnick added type: bug Something is broken or behaves incorrectly area: gui Graphical user interface platform: windows Windows-specific issue labels Sep 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: gui Graphical user interface platform: windows Windows-specific issue type: bug Something is broken or behaves incorrectly

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Windows accessibility: NVDA encounters unnamed or silent controls

3 participants