The checks that were being run by hand lived in /tmp and would have been
lost, and the colour-contrast pass was ad-hoc enough that it missed
--dim2 entirely.
- tools/verify.js: headless smoke test. Boots the page against a stubbed
DOM/canvas and checks all 9 tabs render, all 10 maps draw with no
non-finite geometry and no squashed labels, dog-tag sub-checkboxes cover
every tag in every list, no photo appears in two steps, every theme has a
CSS block, and no personal data shipped.
- tools/theme-contrast.py: WCAG check across all themes, now also covering
--on-acc on --acc.
Running the stricter check found real problems: --dim2 (small captions) was
2.3-3.0:1 in four themes and --acc-d was 2.7-2.8:1 in two. Lightened those.
Worst theme is now 3.2:1, all on-accent pairs are 4.8:1 or better.
- AGENTS.md documents the architecture, build stages, assertions, data
provenance, deployment and the traps already hit, so a future session does
not rediscover them the hard way.
The Pages deployment is now the primary copy, so two things had to change:
- Hosted pages fall back to steam-sync.py on 127.0.0.1:8765 instead of
refusing to sync. steam-sync.py now answers Chrome's Private Network
Access preflight (Access-Control-Allow-Private-Network), which is what a
public https page needs before it may call into localhost.
- The build sources lived in /tmp and would have been lost. They now live in
build/, and build.py outputs to the repo root. deploy.sh rebuilds,
commits and pushes in one step.
Editing index.html directly is no longer the workflow - edit build/ and run
./deploy.sh.