Skip to content

D-27: Dialogue — accessibility sweep (9-point checklist) #277

@kirich1409

Description

@kirich1409

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

  1. .accessibilityLabel — concise noun.
  2. .accessibilityHint — for non-trivial actions.
  3. .accessibilityValue — for stateful controls.
  4. .keyboardShortcut — on primary actions (⌘Return, ⌘., ⌘⇧D, ⌘⇧T, ⌘⌥R).
  5. .focusable() + .contentShape(_:) on custom controls.
  6. Colour never sole signal — SF Symbol + accessibilityDifferentiateWithoutColor.
  7. Animations wrapped in accessibilityReduceMotion guard (re-verify every pulse/shake/spring).
  8. Materials respect accessibilityReduceTransparency.
  9. Icon-only buttons have .accessibilityLabel.

Manual audit (per CLAUDE.md workflow)

  1. 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.
  2. VoiceOver sweep (⌘F5) — navigate each flow with arrow keys only. Every element must announce meaningfully.
  3. Dynamic accessibility — toggle Reduce Motion, Reduce Transparency, Increase Contrast one at a time; re-open app; verify animations, materials, colors adapt.
  4. 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

  • 9-point checklist verified on every listed view (tracked in PR description).
  • Accessibility Inspector audit: no warnings on Dialogue flows in Debug build.
  • VoiceOver sweep: every flow completable without mouse.
  • Reduce Motion: no pulses / shakes / springs — only fade or static.
  • Reduce Transparency: no see-through materials in Dialogue chrome.
  • Increase Contrast: every signal distinguishable (SF Symbol + tone).
  • Keyboard-only: every primary action reachable via ⌘-shortcut or Tab + Return.
  • PR description lists all findings + fixes (or follow-up issues).

Relationships

Metadata

Metadata

Assignees

No one assigned

    Labels

    a11yAccessibility: VoiceOver, Dynamic Type, Reduce Motion, etc.complexity:MdialogueDialogue feature — structured chat UI for agent sessionsfrontendwave-5

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions