Description
Full accessibility pass over every view added by the Dialogue feature. Apply the 9-point checklist from the global DS rule (CLAUDE.md §Design System) and run the manual audit workflow.
Spec: Epic #250 §9 acceptance criterion 8; CLAUDE.md §Design System → Accessibility checklist.
Scope
Views to cover
All new views added through D-1 through D-26:
Card, StatusIndicator, BlockCodeContainer (DS primitives — a11y at component level)
DialogueView, UserMessageView, AssistantMessageView
DialogueMarkdownView (rendered markdown)
ToolCallCardView + all 12 specialized widgets
ThinkingIndicatorView
StreamInspectorView
PreflightErrorView
9-point checklist — per view
.accessibilityLabel — concise noun.
.accessibilityHint — for non-trivial actions.
.accessibilityValue — for stateful controls.
.keyboardShortcut — on primary actions (⌘Return, ⌘., ⌘⇧D, ⌘⇧T, ⌘⌥R).
.focusable() + .contentShape(_:) on custom controls.
- Colour never sole signal — SF Symbol +
accessibilityDifferentiateWithoutColor.
- Animations wrapped in
accessibilityReduceMotion guard (re-verify every pulse/shake/spring).
- Materials respect
accessibilityReduceTransparency.
- Icon-only buttons have
.accessibilityLabel.
Manual audit (per CLAUDE.md workflow)
- Accessibility Inspector — open Debug Relay.app, step through Dialogue flows:
- Create new Dialogue session
- Watch assistant stream + tool calls
- Open Stream Inspector
- Open as Terminal action
- Preflight error path
Record + resolve every warning.
- VoiceOver sweep (⌘F5) — navigate each flow with arrow keys only. Every element must announce meaningfully.
- Dynamic accessibility — toggle Reduce Motion, Reduce Transparency, Increase Contrast one at a time; re-open app; verify animations, materials, colors adapt.
- Keyboard-only — disconnect mouse; tab through all interactive elements; verify focus ring visibility.
Fixes
Fix any issues discovered. Non-blocking polish — open follow-up issues.
Acceptance Criteria
Relationships
Description
Full accessibility pass over every view added by the Dialogue feature. Apply the 9-point checklist from the global DS rule (CLAUDE.md §Design System) and run the manual audit workflow.
Spec: Epic #250 §9 acceptance criterion 8; CLAUDE.md §Design System → Accessibility checklist.
Scope
Views to cover
All new views added through D-1 through D-26:
Card,StatusIndicator,BlockCodeContainer(DS primitives — a11y at component level)DialogueView,UserMessageView,AssistantMessageViewDialogueMarkdownView(rendered markdown)ToolCallCardView+ all 12 specialized widgetsThinkingIndicatorViewStreamInspectorViewPreflightErrorView9-point checklist — per view
.accessibilityLabel— concise noun..accessibilityHint— for non-trivial actions..accessibilityValue— for stateful controls..keyboardShortcut— on primary actions (⌘Return, ⌘., ⌘⇧D, ⌘⇧T, ⌘⌥R)..focusable()+.contentShape(_:)on custom controls.accessibilityDifferentiateWithoutColor.accessibilityReduceMotionguard (re-verify every pulse/shake/spring).accessibilityReduceTransparency..accessibilityLabel.Manual audit (per CLAUDE.md workflow)
Record + resolve every warning.
Fixes
Fix any issues discovered. Non-blocking polish — open follow-up issues.
Acceptance Criteria
Relationships