Skip to content

feat(desktop): add ARIA live-region & navigation semantics to the console UI #348

Description

@ceilf6

Problem

#344 added visual keyboard-focus rings and reduced-motion support, but assistive-technology semantics are still missing across the console. Several dynamic surfaces convey state purely visually:

  • StatusPill (components/StatusPill.tsx): run status (planning → running → completed/failed) changes with no role="status" / aria-live="polite", so screen readers never announce execution state transitions.
  • EventStream log (components/EventStream.tsx): telemetry lines append with no role="log" / aria-live, so SR users get no feedback as events stream in.
  • Navigation (App.tsx): nav buttons track selection only via data-active; no aria-current (or tab semantics), so the active view isn't exposed to AT.
  • ApprovalDrawer (components/ApprovalDrawer.tsx): a blocking approve/reject decision surface with icon-only and a bare risk token; no role="group"/aria-label tying the controls to the request.

Proposed change

  • Add role="status"/aria-live="polite" to StatusPill (announce label changes).
  • Add role="log"/aria-live="polite"/aria-relevant="additions" to the stream log container.
  • Add aria-current="page" to the active nav item.
  • Give ApprovalDrawer an aria-label describing the pending approval and a text alternative for the warning glyph/risk.

Purely additive ARIA attributes — no behavioral or visual change.

Scope

components/StatusPill.tsx, components/EventStream.tsx, components/ApprovalDrawer.tsx, renderer/App.tsx. Independent of the TaskComposer cleanup issue (no shared files).

Category / priority

Accessibility (P2). Distinct from #344, which covered only visual focus + motion.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions