Public: anyone can read this; the crew can change it.
The studio home keeps itself current: asks and apps arrive without a reload #64
Check · Review · Land · Live done — Landed and live in production.
The studio home already had the generic live-region mechanism (`data-live` + `liveRegionsJs`, from earlier upstream work) wired up for *Asks you*, *Your apps* and *Happening now* — it refetches the same `studioHome` render on a matching event and swaps just that region in place, coalescing bursts into one fetch, with no second fragment endpoint. What was missing:
shipped production is serving it deploy 79be2f6
Merged main into this branch and resolved the one conflict in test/studio.test.ts (an import-block collision: main added noteRunProgress and reordered the pulls/issues imports for its own runs-transcript work, mine added assignIssue/setIssueState; kept both). The only other conflicting files (docs/STUDIO.md, src/web/client.ts, src/web/pages/studio.ts) auto-merged cleanly — confirmed my live-region wiring (live-asks, live-apps, live-now, live-on-you, the data-busy swap guard) all survived intact alongside main's new "Working, on its own page" transcript feature.
bun x tsc --noEmit and the full check suite pass; the only failures are the same 6 pre-existing git-push-over-http-auth failures that exist on unmerged main too (sandbox networking limitation, unrelated to this change). Pushed the merge commit.
The studio home already had the generic live-region mechanism (
data-live+liveRegionsJs, from earlier upstream work) wired up for Asks you, Your apps and Happening now — it refetches the samestudioHomerender on a matching event and swaps just that region in place, coalescing bursts into one fetch, with no second fragment endpoint. What was missing:live-on-youregion, triggered by assignment, close, reopen and merge events.run.finished,pull.merged,pull.opened) to match the issue's list — widened to includeapp.serving(a deploy actually serving, the "app comes back up" case),app.stopped,run.queued/run.started, andpull.closed.liveRegionsJs: a region containing a[data-busy]element (asksJs sets this while a Ship/Close post is in flight) is skipped for that round.Authorization and headers are unchanged — it's the same
/route, samepage()security floor, same per-viewer reads. Updateddocs/STUDIO.md's The home section to describe the self-updating behavior.Tests added to
test/studio.test.ts(wiring for all four regions, security headers, signed-out gets a signed-out home, and a card leaving Asks you/Your apps/On you between two calls once a pull merges or an issue closes) andtest/live-pages.test.ts(same wiring check plus the busy-guard).bun x tsc --noEmitand the fullchecksuite pass; the 6 failures in the full run (git push-over-http auth) are pre-existing onmainand unrelated to this change, verified by re-running against the unmodified tree.Closes #55