Skip to content

SimplrSSH - Accessibility AAA - 2026-10-16 - #23

Merged
bluenevus merged 1 commit into
integrationfrom
a11y/20261016-1010
Oct 16, 2026
Merged

bluenevus merged 1 commit into
integrationfrom
a11y/20261016-1010

Conversation

@bluenevus

Copy link
Copy Markdown
Contributor

Findings (WCAG 2.2 AAA 1.4.6 enhanced contrast; 1.4.11 focus indicator)

Source: main/include/ui_view.hpp theme tokens (all colors are centralized there). Measured contrast ratios:

  • DIM text (hints, details, placeholder, chat info lines): 6.15:1 on BG, 5.62 on SURFACE, 4.95 on DIVIDER (<7). Affects every screen on both boards.
  • DANGER text (battery low): 5.65 / 5.16 / 4.54 (<7).
  • OK/WARN on SURFACE: 6.81 / 6.85 (<7).
  • White text on ACCENT fill (selected row, user chat bubbles, pressed side-panel button): 3.75:1; selected-row dim text (SELECTED_DIM): 2.76:1; mark text drawn in ACCENT on white: ~3.7. Severity High: the selected row is the focus indicator users rely on.

Plan / changes

  • New token theme::ACCENT_BG (0x0D47A1) for fills behind white text; ACCENT (bright, 5.05:1 vs BG) stays for borders/focus outline only. Used in ui_view.cpp (selected row, marks), chat_app.cpp (user bubble), ssh_terminal.cpp (pressed button).
  • Brightened DIM 0xB1BAC4, DANGER 0xFFA198, OK 0x56D364, WARN 0xE3B341; SELECTED_DIM 0xE6EDF3.
  • New guard Contrast in test/guards/test_firmware_rules.py enforces >=7:1 for all text/fill pairs and 3:1 for the focus outline; rule noted in AI_RULES.md.

Gap analysis (final)

  • Theme contrast fixes + guard: done.
  • Selected row remains visible as focus indicator (dark-blue fill + bright accent border + white text): done.
  • Not done / not verifiable here: on-device visual check on T-Deck and Tab5 (no hardware); firmware build and RAM delta (no ESP-IDF in this environment; change is constants only, no RAM impact expected); SAST (not run locally).

Deferred (need product decision or hardware)

  • Terminal palette (term_view.cpp: green on black, ANSI colors such as 0x666666/0xCD3131/0x2472C8 on black fall below 7:1) - those are server-chosen colors; a 7:1 clamp changes terminal fidelity.
  • Target size 44x44 (2.5.5) on the T-Deck's 320x240 touchscreen rows/buttons - needs layout review on hardware.
  • Auto-dismissed notices / timeouts audit (2.2.3) and font-size legibility review - not covered in this run.

Verification

  • cd test/guards && python3 -m unittest test_supply_chain test_firmware_rules test_rules_file test_ci_scripts - passes (incl. new Contrast test).
  • SKIP_SAST=1 scripts/check.sh - guards pass; host cmake step fails in this sandbox (mbedcrypto dev library missing), so host unit tests and SAST were not run locally; CI will run them.
  • ruff check test: 11 pre-existing findings, same count before and after this change.

🤖 Generated with Claude Code

https://claude.ai/code/session_01MhbixBmwdwHL69hVrAaDPb


Generated by Claude Code

@bluenevus
bluenevus merged commit 367e443 into integration Oct 16, 2026
32 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants