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: install steps must be bounded, loud, and free of optional network work
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. +### Your install step is the user's first ten seconds. Keep it small and loud.++The dock shows your install running in the launch console, so whatever it does IS the app's+first impression. Two rules, both learned on adom-project-manager 2026-08-24, where a dock+launch sat for over ten minutes on a step whose real work took about two seconds.++**Never do unbounded network work in an install step, and never silence it.** Its+`install.sh` ran `npm install` with output redirected to `/dev/null` and no timeout, for a+tool only its publish flow ever used. Warm, the whole tree installs in ~2 seconds; on a box+where npm stalls (cold WSL, a proxy, an IPv6 hang) it is an invisible, unbounded hang inside+your step, and the console shows nothing at all because you silenced it.++- **Bound every network call** (`timeout 120 npm install ...`) and let the failure be visible.+- **Do not redirect install output to /dev/null.** The console is where a user finds out why+ their card is spinning; silence there is indistinguishable from a hang.+- **Defer anything optional to first use.** Tooling that only one code path needs should be+ fetched lazily by that path, bounded, with a degraded fallback if it fails, so the dock+ install never pays for it. (adom-project-manager 0.11.1 moved its GLB optimiser exactly+ this way and its dock install stopped touching npm entirely.)+- **Ship large assets lazily rather than in the install tarball** if they are not needed to+ render the first screen.+ ### Serve your dashboard HTML with `Cache-Control: no-store` This one is PREVENTION, not a war story: no app has yet been caught serving a stale entry