7 Commits
Author SHA1 Message Date
jzzliu a339ea93b1 Version the stylesheet URL by content hash at image build
A CDN in front of the site caches /style.css for hours, so a redeploy served
new HTML with the old stylesheet. The Dockerfile now rewrites the link to
style.css?v=<hash> in the built image (source stays unversioned) and fails
the build if the rewrite does not apply.
2026-11-07 21:29:43 -07:00
jzzliu eb101c3e05 Add dependency-free browser test suite and README
49 tests run in headless Chrome via tests/run.sh: unit tests for the pure
modules plus integration tests that drive the real page in an iframe
(filtering, URL state, bag, limits, cross-tab sync, checkout, dialogs,
accessibility and overflow checks).
2026-11-07 21:18:38 -07:00
jzzliu 7d34ab22f8 Add security and cache headers to the Caddy config
Strict Content-Security-Policy (the site has no inline script or style),
nosniff, referrer and permissions policies, no Server header, no-cache for
HTML and five-minute caching for unfingerprinted assets.
2026-11-07 21:18:38 -07:00
jzzliu 73fcc0548c Rework storefront into modules and tokenised styles
Split the 100-line script into catalog, cart, format, dom and main modules.
Money is integer cents, the bag is capped and sanitised and syncs across
tabs, and the view (category, sort) lives in the URL. Templates escape every
interpolation.

Rewrite the minified stylesheet as cascade layers on design tokens. Fixes
heading tracking that collapsed word gaps, a 2.6:1 focus ring on the hero,
1.3:1 control borders, misaligned cart quantities, uneven product cards and
undersized touch targets. Adds a favicon and a resolvable dialog label.
2026-11-07 21:18:38 -07:00
jzzliu f39f67e3e4 Remove Sites hosting configuration 2026-11-07 20:18:35 -07:00
jzzliu d360fd7db3 Package Fieldwork storefront for Docker 2026-11-07 20:16:27 -07:00
jzzliu bae4b557ae Update Site source 2026-11-07 20:13:33 -07:00