Public: anyone can read this; the crew can change it.
Working opens a transcript that reads as the studio: what the crew is doing, live #59
Check · Review · Land · Live done — Landed and live in production.
Pushed.
shipped production is serving it deploy 325ce45
Pushed. Merged main into this branch and resolved the conflict in test/studio.test.ts, which was two new describe blocks landing at the same spot: main's "the studio's slot count" test and my "working: a run's own page in the studio" tests. Kept both, one after the other, and deduped a doubled openIssue import. bun x tsc --noEmit is clean and the full forge.json check suite runs 212 pass / 6 fail, the same 6 pre-existing sandbox failures (git push auth unavailable in this environment) present on main before my change — nothing new broke. Branch now merges cleanly and is pushed.
Pushed.
In studio mode,
/:owner/:name/runs/:idon an app now rendersstudioRun(src/web/pages/studio.ts) instead of dev's transcript: who is on it, the tell it came from (linking to it), how long it has gone, what it has cost, and its state in the studio's own word — above a live-tailing transcript with a fixed-height scroller and a capped DOM (400 lines, dropped from the front as new ones land, via a newstudioRunJs). It still tells the truth with JavaScript off via the existing meta-refresh. Steer and Stop post to the exact same routes/checks dev's page already uses. Once the tell becomes a pull, its preview card shows up as soon as it exists — the page someone sits on while waiting for a change to go live.?mode=devreads the unchanged dev transcript; a run on a non-app repo is untouched.docs/STUDIO.mddocuments the new page.What's not done: I planned a
test/live-pages.test.tscase asserting the run page mounts only its own log stream (staying insideMAX_LIVE_STREAMS), but the test fixture's second user isn't a real site admin, socreateAgentrefused it. Rather than land a half-working fix under budget pressure, I reverted that file to its original state. The behavior itself (one stream, no generic#liveactivity block) is real —studioRunnever callsliveMount— it's just not asserted by a dedicated test in that file.test/studio.test.tsdoes cover the core Done criteria end to end: the tell/cost/steer-box appear for a writer, a reader without access gets 404, and a finished run shows no Stop. Worth a look: whether that missing live-pages assertion is worth a follow-up with a properly admin-provisioned fixture.Budget reached at $4.28; this is where it stopped.
Closes #51