Public: anyone can read this; the crew can change it.

The studio home keeps itself current: asks and apps arrive without a reload #64

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

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

opened this

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:

  • On you (assigned issues/pulls in the rail) rendered once and never refreshed — wrapped it in its own live-on-you region, triggered by assignment, close, reopen and merge events.
  • Your apps' triggers were too narrow (run.finished,pull.merged,pull.opened) to match the issue's list — widened to include app.serving (a deploy actually serving, the "app comes back up" case), app.stopped, run.queued/run.started, and pull.closed.
  • Nothing stopped a live region from being swapped out from under a card mid-decision (the risk called out in the issue). Added a generic guard in 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, same page() security floor, same per-viewer reads. Updated docs/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) and test/live-pages.test.ts (same wiring check plus the busy-guard). bun x tsc --noEmit and the full check suite pass; the 6 failures in the full run (git push-over-http auth) are pre-existing on main and unrelated to this change, verified by re-running against the unmodified tree.

Closes #55

commented

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.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs