ci / rust (push) Successful in 5m50s
The SPA fallback returned index.html (HTTP 200, text/html) for ANY unknown path, including missing /assets/*. index.html was also served with no Cache-Control, so browsers cached the shell. After a redeploy rotated Vite's content hashes, a cached shell requested its old /assets/index-OLDHASH.js, the server answered with the HTML shell, and the browser tried to execute HTML as JS -> blank page (seen on Android Chrome while the installed PWA, with its own warm cache, kept working). - Missing paths that name a file (have an extension) now 404 instead of falling through to index.html; only extensionless SPA routes fall back. - index.html / sw.js / manifest / icons: Cache-Control: no-cache. - Content-hashed assets/: public, max-age=31536000, immutable. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>