Light and Solarized Light themes fail WCAG AA text contrast on four elements

Open
#98 0 comments 0 reactions 0 assignees View on GitHub

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

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

accessibility bug p2

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

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from bonzo81/comnd

All issues in bonzo81/comnd

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.