Skip to content

Qualify Code OSS accessibility semantics, keyboard navigation, and native exposure #262

Description

@wieslawsoltes

Current accessibility checkpoint — 19 September 2026

Exact heads are WebScene 2cd3913fceff7a0c9660aca05ab232fa237bda1d, AppScene 0ef434a4040d0bf3bff840045987566904f1a34c, and unchanged Code OSS 645f29cc3176500b4b5762ba887cf2a7f0ffdf2c. Semantic snapshots/actions/live/deltas and macOS/Windows/Linux projection/action/live controllers are merged. WebScene #599/#600 packages the Windows native C++ link surface; AppScene #220/#221 adds the optional Linux AT-SPI host boundary.

Remaining implementation is the Win32 renderer/executable/package host and a real Linux GUI/bus/package target with reviewed dependencies. Nested accessibility remains under #267/#268. Only git diff --check ran; browser/native/package/performance/lifecycle and VoiceOver/UIA/Orca acceptance remain open.

Parent epic: #227.
Related platform roadmap: SceneTech/AppScene#30.

Problem

Visual parity does not prove accessibility. The Code OSS release needs an explicit contract for DOM/ARIA semantics, native accessibility exposure, keyboard traversal, focus restoration, live regions, high contrast, and reduced motion across dynamically added and removed panels.

Investigation first

Inventory the unchanged workbench accessibility tree and keyboard flows in Chromium, then capture the WebScene DOM/ARIA state and AppScene native accessibility exposure for the same states. Map each missing role, name, state, relationship, action, live announcement, focus transition, or hidden-subtree rule to the owning layer. Link focused CSS visuals to #255 and do not duplicate its forced-colors/focus-ring work.

Scope

Editor, activity bar, side bars, trees, lists, tabs, menus, dialogs, Command Palette, Settings controls, terminal, Problems/Output, notifications, Markdown/webviews, Chat, file pickers, status bar, and panel layout changes.

Acceptance

  • Roles, accessible names/descriptions, value/state, levels/positions, ownership/controls relationships, selection, expansion, and disabled/read-only state match the accepted Chromium oracle.
  • Tab, arrow, shortcut, escape, type-ahead, and focus-trap/restore paths work without pointer input.
  • Hidden/detached/content-visibility nodes do not remain actionable; dynamic rows and panels expose stable identities without stale native peers.
  • Live regions announce deterministic terminal/problem/task/chat test events once and in order.
  • Light/dark/high-contrast/forced-colors/reduced-motion behavior meets Qualify forced-colors, system colors, focus visuals, and motion preferences #255 without losing semantic focus.
  • Browser/WPT-derived DOM/ARIA tests, native accessibility contracts, packaged computer-use evidence, and repeated lifecycle/performance/memory budgets pass on supported release platforms.

Proposed PR stack

  1. semantic inventory + oracle + capability report;
  2. WebScene DOM/ARIA/focus contracts;
  3. AppScene native accessibility bridge fixes, if evidence requires them;
  4. packaged keyboard/screen-reader-style acceptance and lifecycle/performance gates.

Implementation checkpoint — 19 September 2026

WebScene's bounded provider sequence is merged: full snapshots #541/#542 at 9afd161; actions #545/#553 at b386936; live events #546/#558 at a48ce70; deltas #547/#564 at 7fa7dac.

AppScene macOS snapshot peers #182/#188 and semantic delta child #198/#199 are merged through 7779cba5bb4cabbf9adb41600b75e62fd1dc592f. The delta consumer applies capped operations transactionally on the Cocoa main thread, checks every generation boundary, preserves surviving semantic-ID peers, and recovers with a full snapshot.

Windows UIA projection #200/#201 and COM host bridge #208/#209 are merged. Linux AT-SPI projection #204/#205 and macOS action/live #206/#207 are merged; the Linux #185 action/live controller is active. Real platform hosts and packaged assistive-technology gates remain open. Keyboard, native assistive-technology, nested-webview accessibility, package, performance, memory, lifecycle and unchanged-product acceptance remain open.

Only git diff --check ran in the latest implementation wave; authored regressions and runtime gates remain unexecuted.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    vscode-oss/plannedPlanned for the AppScene/WebScene VS Code OSS integration

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions