web: the accessibility findings from the wider scan !437

merged merged by cmc on 2026-09-20 00:21 UTC · krz/gitbay:axe-226 into main

Discussion

cmc

Ref #226. Three serious axe findings, all pre-existing, on pages the sixteen-page scan never covered: label chip contrast, <pre> blocks with no way to focus them, and links that share a line with other text.

  • A label chip carries a tone per scheme. Chip text is 12px, which owes 4.5:1 against the ground mixed from the colour itself, and the band that clears it on white ends below the band that clears it on the dark canvas — one colour cannot serve both. The stored hex still names the label; chipTones picks the tone, keeping the hue where scaling in linear light reaches the ratio. A page stamped light or dark now sets color-scheme with its tokens, which light-dark() reads and native controls follow.
  • Every pre scrolls sideways, so every one takes tabindex="0", the attribute focusableBlocks already puts on rendered markup.
  • A link sharing its line with other text is underlined: a path crumb, a heading naming an owner, an empty-state note.
  • The labels table's actions column header was empty.

Verified with the axe runner against a local instance in four theme paths (system light, system dark, stamped dark under a light OS, stamped light under a dark OS): zero violations on labels, issues, blob, blame, tree, search, snippets, notifications, builds, repo, landing and login. Production before the change reported 30 contrast nodes on the labels page, 13 blame nodes plus one each on the build and search pages, and breadcrumb findings on blob and snippets.