feat(web): harden keyboard and focus accessibility - #1
Conversation
|
Validation update (2026-08-29)
Merge and publication remain intentionally gated on real assistive-technology and disabled-user evidence. Community validation instructions remain available at omdsh-dev/dsh-accessibility#7 (comment). |
|
Structured-navigation checkpoint — automated gate complete (2026-08-30) Exact candidate: c45dd9d Implemented and automated:
Evidence:
The complete failed-checkpoint history and final job links are retained in the bilingual ledger update: omdsh-dev/dsh-accessibility#21 Evidence boundary: this closes only the deterministic structured-navigation row. Exact VoiceOver/NVDA speech, braille/virtual-cursor operation, dynamic-state announcements, and disabled-developer task effectiveness remain pending. The alpha.1 PR remains a partial candidate: do not merge, tag, expand companion peers, or publish npm from this checkpoint. |
|
Accessibility checkpoint: image lightbox and deterministic coverage capability Final candidate: 203cc45
Evidence boundary: this closes automated image-lightbox coverage only. Onboarding, workspace and directory dialogs, and other Modal consumers still need re-audit. VoiceOver and NVDA speech, virtual cursor, braille, physical target systems, and disabled-developer task completion/effectiveness/safety remain pending. This checkpoint does not authorize a tag, merge, or npm release and is not a complete-accessibility claim. Versioned ledger update: omdsh-dev/dsh-accessibility#21 |
Accessibility checkpoint: onboarding focus ownershipCommit 36e991a moves onboarding initial focus and application inertness under the shared Modal contract. OnboardingModal no longer installs duplicate inert/focus effects. The welcome heading is an explicit contained initial target; Tab and Shift+Tab from it reach the sole action, and an outside initial-focus reference cannot escape the dialog. Original CI run 33302223540 passed all 19 jobs without a rerun:
Versioned ledger update: omdsh-dev/dsh-accessibility#21 (comment) Boundary: this verifies deterministic code, keyboard, DOM, browser accessibility-tree, focus, and cross-platform behavior for the implemented slice. It does not verify exact screen-reader speech, virtual-cursor/braille operation, credential-safety comprehension, disabled-developer task completion/effectiveness/safety, or the remaining workspace/directory/other modal consumers. This is not a whole-product accessibility claim and does not authorize merge, tag, or npm publication. |
|
阶段性无障碍证据更新(不是整机完成声明) 候选 确定性证据:本地 2 个聚焦文件共 119 个测试通过, 失败历史没有被隐藏:产品提交的 run 33303729776 保留了一次 Windows Vitest fork worker 意外退出;没有无障碍断言失败,也没有重跑失败 job。后续提交把 worker 生命周期文件确定性隔离为单文件、单 worker 调用,再单独运行其余 4 个原生文件;最终分别通过 54/54 和 15 通过、1 跳过。 版本化边界已同步到 dsh-accessibility PR #21,其 macOS/Ubuntu/Windows × Node 22/24 六通道和汇总门禁均通过。 仍待完成:Workspace 重命名/删除、目录错误弹窗和其他 Modal 使用方;真实 VoiceOver/NVDA/JAWS/Orca 朗读、虚拟光标/盲文、错误恢复与安全理解;残障开发者独立完成核心任务的证据。因此此 PR 仍是 partial automated candidate,不授权合并、tag、npm 发布或“整个 DSH 已完全无障碍”的表述。欢迎社区按上述待验证项提交精确 AT/OS/浏览器版本、语言、脱敏任务、实际朗读、焦点和错误结果。 |
|
Final candidate checkpoint for
This is still a partial |
|
Automated alpha.1 accessibility checkpoint
This is automated evidence only. It does not include current VoiceOver, NVDA, JAWS, TalkBack, braille, switch, speech-input, magnifier, or disabled-developer task evidence, and it does not justify a whole-product or complete-accessibility claim. No merge, tag, release, peer-range expansion, or npm publication is authorized by this checkpoint. Community validation is requested using the reproducible protocol here: omdsh-dev/dsh-accessibility#7 (comment). Reports should include OS and version, DSH commit, browser or host, assistive technology and version, task, observed speech or braille, result, severity, and any sensitive-data redaction. |
Accessibility alpha.1 checkpoint — 2026-08-31Exact candidate: CI run 33321079481 passed 19/19 jobs on attempt 1 with no job rerun.
The failed history remains part of the evidence. Run 33317394451 retained the Windows fork exit after 10/21 lifecycle tests; run 33319805616 then proved the deterministic owner split and Windows 100% coverage but retained the independent typed-lint failure on the intentional non-Error rejection fixture. Neither failed job was rerun. The final commit adds only the reasoned one-line lint exemption. The bilingual ledger is updated at omdsh-dev/dsh-accessibility#21. Official This is still automated-review evidence, not a complete-accessibility claim or real VoiceOver/NVDA/disabled-developer validation. No merge, tag, or npm release is authorized by this checkpoint. |
Summary
Evidence
The macOS host does not resolve
remote.localhostthrough Node DNS, so the remote-welcome replay used a process-local mapping to the test contract's intended127.0.0.1; no repository or system DNS setting was changed.Scope and limitations
This PR establishes core interaction ownership and automated browser accessibility-tree evidence. It does not claim complete accessibility or assistive-technology certification. Task-level VoiceOver, NVDA, JAWS, Narrator, and Orca runs; disabled-user evidence; forced-colors, zoom/reflow, reduced-motion, and the remaining product workflows continue in the versioned accessibility program.
Related to omdsh-dev/dsh-accessibility#7.