app
Adom Hydrogen
Public Made by Adomby adom
The whole Adom experience as one signed native app: your editor, your AI agent, and the full electronics design toolchain, running locally on your own machine.
← Commit history
dockbar guide: serve dashboard HTML no-store, and cross-check page version against /api/status
1 file changed
+22
docs/dockbar.md+22@@ -195,6 +195,28 @@ text that fights the card's caption, or when the dock deserves a tighter crop. T cache-busts the image on every manifest re-resolve and on the right-click refresh actions, so a pushed replacement shows up without the user clearing anything. +### Serve your dashboard HTML with `Cache-Control: no-store`++Measured on pup, 2026-08-24, and it invalidates the obvious mental model of an update:++> `pkg update` ran, the new server was live, `/api/status` reported the NEW dashboard+> version, and the page in the webview was still executing the OLD build's JavaScript.++The webview had cached the HTML across a version change. The app's `/api/*` routes sent+`no-store`; the HTML did not, so the shell reused the page it already had while talking to a+freshly restarted server. Nothing looks wrong from any single angle: the dock's Hard Refresh+Open did its job, the package really did update, the server really is current, and the user+is still looking at yesterday's UI.++**Send `Cache-Control: no-store, must-revalidate` on the dashboard HTML itself**, not only on+your API routes. Hashed static assets may cache normally; the entry document must not.++**Verifying an update actually reached the user** (do this whenever you screenshot or+cold-verify a dashboard): fetch `<readyUrl>/api/status` and compare the version it reports+against the version the PAGE renders. If they disagree, you are looking at a cached page, not+a stale server. If your dashboard shows no version in-page, the header popover is where the+contract puts it (see the `dash-header` skill).+ ### Retiring your own older instance: the "(deleted)" trap Version-aware serve is what makes an update actually reach the user: a fresh build must find