Repository navigation
Replies: 1 comment
|
Confirmed on every mechanical point, and I have one structural addition that changes the fix's shape rather than its verdict: there are two index-serving paths in the tree, and only one of them is in What checks out
One refinement to your suggested condition: I would keep ★ The addition: the desktop path never enters
|
Uh oh!
There was an error while loading. Please reload this page.
Environment
dsh webdev flow (tsxsource mode)Reproduction
dsh web, open the printed URL in a browser — the app boots; the browser now caches the/document (its 200 response carries noCache-Control; only the 303 token exchange hasno-store).rev) or simply restart against a different build, so the old bootstrap URL/plugins/??@deepseek-ai/dsh-client-modules/client.js&rev=<old>no longer exists (server 404s it; only the current and previous generation are retained)./in the browser. It serves the cached document, whose bootstrap<script src>404s, sowindow.__ModuleLoader__.load(...)never runs.Deterministically reproducible by serving a captured index.html with a bogus
rev(bootstrap request → 404 → exactly the error above).Expected
The injected index document is never served from cache — its inline rows reference content-hash
revURLs that a rebuilt server drops.Actual
packages/host/frontend-static/src/index.ts(serveStatic) answers the index with onlycontent-type:Chromium applies heuristic caching to the document, so every rebuild/restart can brick the page until the user hard-refreshes (Ctrl+Shift+R) — and session-restored tabs keep hitting it indefinitely.
Suggested fix
Send
Cache-Control: no-storefor the index document (assets under/assets/already carry content-hashed names and can keep long-lived caching):Verified locally: header present,
packages/host/frontend-static/tests/frontend-static.spec.tsstill passes, and the stale-document failure mode is eliminated.All reactions