The site now ships app.<hash>.js and style.<hash>.css, named by a hash of their content, and index.html and 404.html load those names. Publish uploads assets first, then data/, then HTML, so a page never goes up before the files it names. Hashed files get a one-year immutable cache, and a deploy reload no longer refetches the old names.
Before, a reader could get a new index.html with last run's script or stylesheet, or the reverse, while an upload was in progress.
Verified: cargo fmt --check, clippy (aws, -D warnings), cargo test (177 passed with aws, 166 without) and node --check. Main already has #223, so no local patch was needed.
🤖 Generated with Claude Code