The faint-line grey fails WCAG 1.4.3 in 16 more places #772

Closed
opened 2026-09-23 07:36:59 +00:00 by claude-bot · 0 comments
Collaborator

Found while writing J6 (#770, #726).

text-gray-400 dark:text-gray-600 is the pre-redesign pages' pair for a faint line. At the 12px those lines use it measures #99a1af on #ffffff, 2.6:1 — against WCAG 2.2 AA 1.4.3's 4.5:1 minimum for text that size. Dark mode is about as bad (#4a5565 on the dark paper, ≈2.1:1).

#770 fixed one instance, on WikiFront.jsx, because a journey walks it. The same pair is on 16 more faint lines across 7 files:

  • components/BeatNotesEditor.jsx
  • components/ColdOpenPanel.jsx
  • components/ShelfPalette.jsx (×4)
  • pages/CampaignPlanning.jsx
  • pages/SessionDetail.jsx
  • pages/SessionShelf.jsx (×7)
  • pages/SessionTable.jsx

text-gray-500 dark:text-gray-400 is the fix — 4.84:1 light, ≈6.7:1 dark — and is what #770 used.

Why this is its own issue

Every one of those files is on a surface lanes 4, 5 or 8 still have to rebuild, so in principle each will be fixed by the lane that replaces it. Two reasons not to simply wait:

  1. They are live today, on the at-the-table and prep surfaces, which are the ones most likely to be read in bad light.
  2. Every journey those lanes write will walk into them. J4, J5 and J8 will each hit this before they have rebuilt the page, and — per #771 — they will not be able to tolerate it for one page either. Better to clear it deliberately once than to have three lanes each discover it as a blocker.

A sixteen-place change is a one-line sed plus a read of each site to check none of them is a decorative element rather than text. It wants a deliberate commit, which is precisely why it was kept out of a journeys PR.

Why it had never fired before

The J6 fix's own site only draws when a storyline has a generated_at, and until J6 seeded a story no e2e stack had ever had one. The rest are on pages the axe gate has never visited. That is worth knowing: the scan is only as good as the journeys' reach, and these sixteen are a measure of how much of the product the suite still does not walk.

🤖 Generated with Claude Code

Found while writing J6 (#770, #726). `text-gray-400 dark:text-gray-600` is the pre-redesign pages' pair for a faint line. At the 12px those lines use it measures **#99a1af on #ffffff, 2.6:1** — against WCAG 2.2 AA 1.4.3's 4.5:1 minimum for text that size. Dark mode is about as bad (#4a5565 on the dark paper, ≈2.1:1). #770 fixed **one** instance, on `WikiFront.jsx`, because a journey walks it. The same pair is on **16 more faint lines across 7 files**: - `components/BeatNotesEditor.jsx` - `components/ColdOpenPanel.jsx` - `components/ShelfPalette.jsx` (×4) - `pages/CampaignPlanning.jsx` - `pages/SessionDetail.jsx` - `pages/SessionShelf.jsx` (×7) - `pages/SessionTable.jsx` `text-gray-500 dark:text-gray-400` is the fix — 4.84:1 light, ≈6.7:1 dark — and is what #770 used. ## Why this is its own issue Every one of those files is on a surface **lanes 4, 5 or 8 still have to rebuild**, so in principle each will be fixed by the lane that replaces it. Two reasons not to simply wait: 1. **They are live today**, on the at-the-table and prep surfaces, which are the ones most likely to be read in bad light. 2. **Every journey those lanes write will walk into them.** J4, J5 and J8 will each hit this before they have rebuilt the page, and — per #771 — they will not be able to tolerate it for one page either. Better to clear it deliberately once than to have three lanes each discover it as a blocker. A sixteen-place change is a one-line sed plus a read of each site to check none of them is a decorative element rather than text. It wants a deliberate commit, which is precisely why it was kept out of a journeys PR. ## Why it had never fired before The J6 fix's own site only draws when a storyline has a `generated_at`, and until J6 seeded a story no e2e stack had ever had one. The rest are on pages the axe gate has never visited. That is worth knowing: **the scan is only as good as the journeys' reach**, and these sixteen are a measure of how much of the product the suite still does not walk. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
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
rbrooks/Quest-Board#772
No description provided.