Accessibility and visual QA across photo, alert, and privacy paths #14

Open
opened 2026-08-19 01:58:59 +00:00 by timmy · 1 comment
Owner

Parent epic: #1

Outcome

Meet a practical mobile accessibility baseline without losing Timmy’s character.

Acceptance criteria

  • Keyboard/focus order and dialog trapping are tested.
  • Touch targets, contrast, reduced motion, and text zoom are checked.
  • Red-flag screens remain visually serious and unclipped.

Dependencies

  • None

Required evidence

  • Test or executable receipt attached to the issue/PR
  • Privacy/safety boundary checked where applicable
  • Clean checkout and relevant full suite pass

Delivery

Open a focused branch and PR with Closes #ISSUE. Do not include real medical images in issue comments or Git history.

Parent epic: #1 ## Outcome Meet a practical mobile accessibility baseline without losing Timmy’s character. ## Acceptance criteria - [ ] Keyboard/focus order and dialog trapping are tested. - [ ] Touch targets, contrast, reduced motion, and text zoom are checked. - [ ] Red-flag screens remain visually serious and unclipped. ## Dependencies - None ## Required evidence - Test or executable receipt attached to the issue/PR - Privacy/safety boundary checked where applicable - Clean checkout and relevant full suite pass ## Delivery Open a focused branch and PR with `Closes #ISSUE`. Do not include real medical images in issue comments or Git history.
timmy added this to the M1 — Sovereign Photo Intelligence milestone 2026-08-19 01:58:59 +00:00
timmy added the
type/test
priority/P1
area/frontend
labels 2026-08-19 01:58:59 +00:00
Member

[EVIDENCE]
Branch free/step-timmy-14 → PR #65 (Closes #14, no merge, no deploy).

Strict RED-GREEN, each defect verified failing first in a real Chromium browser:

  • Nav buttons lacked accessible names / active state → now aria-label + aria-current=page (RED: null aria-label)
  • Urgent red-flag alert silent to screen readers → #urgent-box is now role=alert aria-live=assertive (RED: 0 alert regions)
  • Modal had no Escape path → keydown handler added (RED: sheet persisted on Escape)
  • --muted #756e68 failed AA on paper (4.49:1) and soft (4.15:1) → darkened to #6a635c (≥4.8:1 everywhere)

New deterministic gates (npm run test:a11y, wired into CI with screenshot artifacts): landmarks, labels, focus-ring visibility, 44px touch targets, prefers-reduced-motion collapse, urgent-alert announcement + dialog semantics, CSS-token contrast math, 200% text-zoom resilience. Synthetic screenshots written to artifacts/a11y-*.png and visually inspected (red-flag alert serious/unclipped; zoom layout usable; journal + privacy screens clean).

Full verification: 67/67 unit tests, 20/20 staging-deploy tests, test:ui / test:photo / test:sleek PASS, check:syntax clean, check_diff clean, npm audit 0 vulnerabilities. Privacy/safety paths unchanged: local-first storage, consent-gated photo analysis, deterministic urgent override, no credentials or medical images in Git history.

[EVIDENCE] Branch free/step-timmy-14 → PR https://forge.alexanderwhitestone.com/git/stackchain/timmy-talking-turd/pulls/65 (Closes #14, no merge, no deploy). Strict RED-GREEN, each defect verified failing first in a real Chromium browser: - Nav buttons lacked accessible names / active state → now aria-label + aria-current=page (RED: null aria-label) - Urgent red-flag alert silent to screen readers → #urgent-box is now role=alert aria-live=assertive (RED: 0 alert regions) - Modal had no Escape path → keydown handler added (RED: sheet persisted on Escape) - --muted #756e68 failed AA on paper (4.49:1) and soft (4.15:1) → darkened to #6a635c (≥4.8:1 everywhere) New deterministic gates (npm run test:a11y, wired into CI with screenshot artifacts): landmarks, labels, focus-ring visibility, 44px touch targets, prefers-reduced-motion collapse, urgent-alert announcement + dialog semantics, CSS-token contrast math, 200% text-zoom resilience. Synthetic screenshots written to artifacts/a11y-*.png and visually inspected (red-flag alert serious/unclipped; zoom layout usable; journal + privacy screens clean). Full verification: 67/67 unit tests, 20/20 staging-deploy tests, test:ui / test:photo / test:sleek PASS, check:syntax clean, check_diff clean, npm audit 0 vulnerabilities. Privacy/safety paths unchanged: local-first storage, consent-gated photo analysis, deterministic urgent override, no credentials or medical images in Git history.
rockachopa added the
state:review
label 2026-08-22 23:21:49 +00:00
Sign in to join this conversation.
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: stackchain/timmy-talking-turd#14
No description provided.