Regenerate the Launchpad Page
Regenerate the Launchpad Page
Section titled “Regenerate the Launchpad Page”The Launchpad is a single static HTML page listing every managed project with its dev / docs / prod / GitHub links and port band — built to be the browser’s default localhost site. The page is derived state with a single owner (the links index): it is never hand-edited, only regenerated.
Schema and derivation rules live in the Launchpad Links Index reference. Always-on serving is #1245; liveness badges are #1246.
node ~/.claude/scripts/launchpad/render-page.js --out ~/.claude/launchpad/index.htmlThat one command derives the links index from declared state (ports ledger, projects.json, each project’s dev.json / wrangler config / git remote) and renders the page. Re-running is always safe: unchanged inputs produce a byte-identical page.
When to regenerate
Section titled “When to regenerate”Whenever declared state changes — a project gains a port band, a dev.json,
a wrangler route, or a new repo remote:
- after
cdiprovisions a new project (port band allocated) - after adding or editing a project’s
dev.json - after a wrangler route / custom domain change
- after registering a project in
~/.claude/projects.json
Two-step variant (inspect the index first)
Section titled “Two-step variant (inspect the index first)”node ~/.claude/scripts/launchpad/links-index.js --out /tmp/links.json # 1. generatejq '.projects[] | select(.name=="tct")' /tmp/links.json # 2. inspectnode ~/.claude/scripts/launchpad/render-page.js --index /tmp/links.json --out ~/.claude/launchpad/index.htmlrender-page.js with --index renders a prebuilt index verbatim — useful for
diffing what changed before republishing, or for rendering a snapshot from
another machine.
Verify
Section titled “Verify”open ~/.claude/launchpad/index.html # macOS; or use the always-on server (runbooks/launchpad-serving.md)make test-launchpad-links test-launchpad-pageIn the page: / focuses the filter, typing narrows by project name or stack
term, Enter opens the first match’s dev server, Escape clears. Light/dark
follows the browser theme.
Dev/docs pills carry a liveness dot — filled = up, red = down, hollow =
unknown — painted per page load from the server’s /liveness.json probe.
Opened as a plain file (no server), the dots simply stay hollow; see the
probe semantics.
- Never edit the generated HTML. Fix the declared source (dev.json, wrangler config, ports ledger, projects.json) and regenerate.
- Nothing is guessed. A project missing a prod URL or docs link means no route / docs block is declared — declare it, then regenerate.
- The renderer adds no state of its own: no timestamps, no counters. Diffs of the output always reflect a diff of declared inputs.