Complete a native accessibility audit and remediation pass #13
Labels
No labels
delivered
outstanding
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
kayg/hermternal-apple#13
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Complete a native accessibility audit and remediation pass across Hermternal before adding more visual complexity.
Coverage
Performance guardrails
Accessibility must not add per-token announcements, eager accessibility trees for off-screen transcript rows, or repeated full-transcript Markdown parsing. Measure VoiceOver navigation on a 500+ row cached chat.
Acceptance
Audit with Accessibility Inspector and VoiceOver on the real macOS app; record and fix every blocker/serious finding, then verify keyboard-only completion of sign-in, chat selection, sending, interrupting, and Settings changes.
Related follow-on: new issue #26 (Verify Reduce Transparency and add opaque fallback) covers a narrower, concrete verification and implementation slice within this audit's Reduce Transparency coverage. Keep #26 as a separate issue for the explicit opaque fallback across all glass/material surfaces and transition/relaunch verification; use this issue as the broader audit and remediation authority.
Cross-reference from #26: the existing v0.0.1 glass/material surfaces were verified with Reduce Transparency enabled, and the system fallback is sufficient (screenshot: https://img.kayg.org/u/0cLKx5.png). When future glass surfaces are added—especially the search panel—verify the live Reduce Transparency toggle and relaunch behavior on the real app as part of this accessibility audit.
Verified sidebar row accessibility finding: rows are now native
Buttons carrying the accessible label and identifier. On macOS, anAXRowis anNSAccessibilityGroupand does not carry the title; the correct expectation is an unlabelledAXRowcontaining a labelledAXButton. Do not useaccessibilityElement(children: .ignore), because it actively hides child elements.