Repository navigation
Qualify Code OSS accessibility semantics, keyboard navigation, and native exposure #262
Description
Activity
- addedvscode-oss/plannedPlanned for the AppScene/WebScene VS Code OSS integrationPlanned for the AppScene/WebScene VS Code OSS integration
on Sep 17, 2026 CSS/global dependency boundary confirmed:
- Qualify forced-colors, system colors, focus visuals, and motion preferences #255 remains the sole owner of forced-colors, system-color, focus-paint, native-control theming, and reduced-motion CSS behavior.
- Implement CSS containment, container queries, and content visibility for dynamic panels #254 owns whether content-visibility/containment hides, exposes, or restores content correctly; Bound visual-tree churn, idle publication, and memory across panel mutations #258 owns repeated panel lifecycle, stale retained-node/peer detection, idle publication, and memory slope.
- Consume Establish Chromium/AppScene visual and geometry regression gates for unchanged Code OSS #259's common deterministic capture/readiness manifest and Publish a Code OSS Web API capability ledger and expand WPT coverage #263's capability ledger. Keep native bridge implementation under the linked AppScene accessibility roadmap.
The cumulative accessibility gate should compare stable semantic identities and native peer counts across initial/hide-detach/restore states, require exactly-once ordered live announcements, and report explicit pass/fail/skipped/unavailable totals with exact revisions. This avoids duplicating CSS behavior or visual oracle machinery here.
Cross-layer audit at WebScene
e33fdbc6/ AppScene50da4995proved the first missing accessibility implementation boundary: WebScene exports preferences but no lossless semantic tree ABI, while AppScene paint commands cannot recover roles/names/states/relationships/actions. A bounded generation-stamped read-only semantic snapshot lease for top-level and nested documents is now active as the prerequisite; AppScene #30 platform peers follow. Only diff-check will run in this implementation wave.- added sub-issues
on Sep 19, 2026
Current accessibility checkpoint — 20 September 2026
Exact merged heads: WebScene
a46b62e14eb197603f7e227c1558afb9088633b0; AppScene97702daeb9ad71341ced7226f0aa966dc77ea53c; unchanged Code OSS645f29cc3176500b4b5762ba887cf2a7f0ffdf2c; local vscode-demo123ad63a345dd77ceb0d75aed4c8eda244cf1288(clean, intentionally unpushed). Open consolidations remain WebScene #76085bba760fa571c8f08ea866dc5dd1ec27c4d376, AppScene #65ce66ef6ceb776b3f14e129f853bfc08b5c5e608c, and vscode-demo #1; do not merge them. One-agent mode is active.#799/#806 adds pointer identity, capture, and cancellation required for coherent touch/pen activation, but does not itself qualify keyboard navigation or native accessibility exposure. Exact AT-SPI/UIA/macOS semantics, focus restoration, pointer/keyboard parity, screen-reader behavior, package lifecycle, and cross-RID accessibility evidence 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
Proposed PR stack
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.