Light and Solarized Light themes fail WCAG AA text contrast on four elements
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 55/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- css, typescript
- Domain
- accessibility, design
Research direction
Start with src/styles/tokens.css and the accessibility target in docs/specs/accessibility.md; consult docs/testing/manual-matrix.md §Findings, F-2 for the recorded measurements. Adjust only the light-theme tokens, then add a token-pair contrast assertion covering the listed text/surface pairs and verify focus indicators plus unchanged Dark ratios. Done means all listed text pairs reach 4.5:1, non-text indicators reach 3:1, and the PR records before/after ratios.
Written by the indexing model from the issue text.
Description
Goal
Bring the Light and Solarized Light palettes back to the WCAG 2.1 AA text-contrast target the project claims in docs/specs/accessibility.md.
Priority
p2. Nothing is broken at runtime and Dark is unaffected, but the repo states an AA conformance target and Solarized Light misses it by a wide margin (2.92:1 against a 4.5:1 requirement), so the claim is currently false for two of three themes.
Current gap
Measured from computed styles (foreground composited over the nearest opaque ancestor background) on 2026-11-02, while running the manual accessibility matrix:
| Theme | Element | Foreground on background | Size | Ratio | AA needs |
|---|---|---|---|---|---|
| Light | Active Settings nav label | rgb(21,128,61) on rgb(221,240,231) |
13px / 400 | 4.21:1 | 4.5:1 |
| Solarized Light | Active Settings nav label | rgb(38,139,210) on rgb(223,231,225) |
13px / 400 | 2.92:1 | 4.5:1 |
| Solarized Light | "New Connection" button label | rgb(38,139,210) on rgb(253,246,227) |
13px / 600 | 3.41:1 | 4.5:1 |
| Solarized Light | Recent-session timestamp ("2h ago") | rgb(101,123,131) on rgb(210,219,213) |
11px / 400 | 3.15:1 | 4.5:1 |
The Dark theme's minimum over the same elements is 6.28:1, so this is a light-theme palette problem, not a general one. Recorded in PR #96 (docs/testing/manual-matrix.md §Findings, F-2) and deliberately not fixed there, because that change is documentation only.
Scope
Adjust the light-theme accent, muted-text and secondary-surface tokens in src/styles/tokens.css so every text/background pair in the Light and Solarized Light themes reaches 4.5:1. Prefer moving the token over overriding per component; components must keep using tokens only.
Acceptance criteria
- Every text pair listed above reaches at least 4.5:1, with the measured before/after ratio recorded in the PR.
- The Dark theme's ratios do not regress (its current minimum over the same elements is 6.28:1).
- A check fails when a light-theme text token drops below 4.5:1 against the surfaces it is used on, so this cannot silently return. A token-pair table with a contrast assertion is enough; a full page scan is not required.
- Focus rings and non-text indicators remain visible against the new surfaces (3:1 non-text contrast).
- The change is confined to tokens; no component CSS gains raw colour values.
Boundaries
Do not redesign the palettes or add a fourth theme. Automated contrast checks do not prove WCAG conformance — the manual matrix still owns screen-reader and native-surface rows.
- Dominant language
- TypeScript
- Stars
- 0
- Forks
- 0
- Avg merge
- 6h 51m
- Merged PRs (30d)
- 68
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from bonzo81/comnd
-
p3 testing
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
maintenance p3 testing
Difficulty 3/5 1-2 days Newbie friendliness 74/100
Maintainers usually reply within 1 day
-
Difficulty 3/5 1-2 days Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
enhancement p3
Difficulty 4/5 1-2 days Newbie friendliness 55/100
Maintainers usually reply within 1 day
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
appandflow/stim#5258 ·
Maintainers usually reply within 1 day
-
area/docs framework/hugo help wanted language/markdown
Difficulty 1/5 Under an hour Newbie friendliness 88/100
Maintainers usually reply within 1 day
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Difficulty 1/5 Under an hour Newbie friendliness 68/100
lingdojo/kana-dojo#33660 · 1 comment · 5 reactions ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
drizzle-team/drizzle-orm#6639 ·
Maintainers usually reply within 4 days
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 76/100