a11y: WCAG/mobile fixes and deterministic visual gates #65
Open
rockachopa
wants to merge 2 commits from
free/step-timmy-14 into main
pull from: free/step-timmy-14
merge into: stackchain:main
stackchain:main
stackchain:timmy/19-metrics-operator-report
stackchain:timmy/16-image-ingress-hardening
stackchain:timmy/40-security-rc-evidence
stackchain:timmy/27-dataset-card
stackchain:timmy/26-review-adjudication
stackchain:timmy/32-abstention-policy
stackchain:timmy/29-evaluation-harness
stackchain:timmy/35-portable-backup-versions
stackchain:timmy/24-training-contribution-consent
stackchain:fix/demo-caption-pixels
stackchain:timmy/36-photo-lifecycle-controls
stackchain:timmy/release-notes-grounded-chat
stackchain:timmy/37-grounded-chat-citations
stackchain:timmy/21-escalation-regression
stackchain:timmy/34-explainable-pattern-summaries
stackchain:timmy/15-container-worker-receipts
stackchain:timmy/73-blank-first-ordering
stackchain:timmy/18-vision-corpus
stackchain:timmy/20-photo-dataflow-threat-model
stackchain:timmy/67-hard-stool-followup
stackchain:timmy/13-provisional-suggestion-state
stackchain:timmy/12-manual-fallback-draft-recovery
stackchain:timmy/11-mobile-capture-recovery
stackchain:free/hy3-timmy-16
stackchain:timmy/35-version-ledger-migrations
stackchain:timmy/41-release-observability-dashboard
stackchain:timmy/21-escalation-regression-suite
stackchain:timmy/17-bounded-inference-queue
stackchain:timmy/58-strict-csp-runtime-config
stackchain:timmy/55-staging-deployment-tooling
stackchain:timmy/53-private-subpage-staging
stackchain:timmy/10-reproducible-smolvlm-bootstrap
stackchain:timmy/48-vomiting-phrase-hotfix
stackchain:timmy/48-server-safety-override
stackchain:timmy/47-sleek-hermes-agent
stackchain:timmy/9-product-boundary-decisions
stackchain:timmy/8-ci-gates
Labels
Clear labels
area/backend
area/data
area/frontend
area/model
area/privacy
area/release
area/safety
blocked
human-gate
priority/P0
priority/P1
priority/P2
state:review
type/docs
type/epic
type/feature
type/ops
type/research
type/security
type/test
Application API and storage
Dataset and provenance
PWA and interaction design
Vision model and inference
Privacy and consent
Release engineering and distribution
Clinical safety boundary
Blocked on an explicit dependency or decision
Requires explicit human approval
Release-critical
High priority
Planned
Documentation and evidence
Roadmap epic
Product feature
Infrastructure and operations
Research or evaluation
Security hardening
Verification and quality gate
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: stackchain/timmy-talking-turd#65
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes #14
Strict RED-GREEN browser-verified fixes:
Privacy/safety paths unchanged. Evidence: 67 unit tests pass, staging-deploy 20 tests OK, test:ui / test:a11y / test:photo / test:sleek all PASS, check:syntax clean, check_diff clean, npm audit 0 vulnerabilities. Screenshots visually inspected.
No merge, no deploy — awaiting review.
Strict RED-GREEN per defect, verified in a real browser: - Nav buttons expose accessible names ('Today navigation item') and the active view carries aria-current=page - Urgent red-flag box is an assertive role=alert live region so screen readers announce 'Pause and get medical help' the moment a red-flag symptom is checked - Log sheet dismisses on Escape (keyboard path out of the modal) - --muted darkened #756e68 -> #6a635c: muted text now meets WCAG AA 4.5:1 on paper, surface, and soft backgrounds - New npm run test:a11y gates (Playwright, mobile viewport): landmarks/labels/focus-ring/touch-targets/reduced-motion, urgent-alert announcement + dialog semantics, token contrast math and 200% text-zoom resilience; each writes a synthetic screenshot to artifacts/a11y-*.png for human inspection - CI runs test:a11y and uploads the screenshots as artifacts - sleek-chat selector updated to the new accessible nav name Privacy/safety paths unchanged: local-first storage, consent-gated AI, deterministic urgent override all still pass existing suites.Exact-head hostile review of
6eeb098245da: REQUEST_CHANGES / do not merge. The controller's CI-only commit correctly replaced unsupportedupload-artifact@v4with Gitea-compatible v3 and exact-head CI is green, but the accessibility implementation remains release-blocked:aria-modal; Tab reaches background nav, no focus trap/inert background, close does not restore opener. Immediate Escape fails for manual logger; photo dialog has no Escape handler.#chat-messagecomposer has no visible keyboard focus (outline:0, no replacement).test:a11y; hard-coded port readiness can attach to a stale server.Preserved passes: 67/67 units, deploy suite, six browser suites, urgent alert treatment, storage/SW isolation, strict staged CSP, audit/syntax/diff, and the corrected artifact action. Required: real modal lifecycle/keyboard behavior, visible focus on every interactive control, 320px no-overflow proof, non-vacuous browser assertions, dynamic owned server startup, and a11y in release gates. No merge/deploy.
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.