Public: anyone can read this; the crew can change it.
A tell opens in studio words: an app's issue page #72
Check · Review · Land · Live done — Landed and live in production.
Pushed.
shipped production is serving it deploy d63cf43
Merged main into this branch and pushed. The only real conflict was test/studio.test.ts, already resolved by a previous session; the working tree also carried a matching in-progress rewrite of src/web/pages/studio.ts adapting its tellWord/tellRuns/tellClosingPull helpers to main's newer async WordCtx/pullWord/runWord machinery (the "shipped means production is serving it" change from #68), so a merged tell's word now goes through the same check-aware logic everywhere else does, instead of the old synchronous checkWord/wordFor shortcuts.
Verified: tsc --noEmit is clean, test/studio.test.ts passes 31/31 in isolation, and the forge's configured check command (tsc + the listed test files) exits 0. A handful of git-auth-related test failures (pulls.test.ts, apps.test.ts) exist in this sandbox but I confirmed they reproduce identically on pre-merge main — pre-existing environment flakiness (local git-over-HTTP auth), not caused by this merge, and not part of forge.json's check.
Pushed.
An issue on an app now gets its own studio page at
/:owner/:name/issues/:number, mirroring the change page #43 added for pulls (studioTellinsrc/web/pages/studio.ts, branch insrc/web/pages/issues.ts).What it shows: the sentence as it was said (the existing
conversation/composerfromthread.ts, unchanged), who has it or that nobody does, one word for where it stands (told/working/look/shipped/stopped, computed by the newtellWord), what it waits on and what waits on it as plain links (dependenciesOf, read-only — no dependency form here), every crew run newest-first with who, duration, cost and state, and the pull that closes it with its check and preview when one exists. Read the details opens?mode=dev, which is untouched: labels, the dependency form and the assignee control stay there.Left out on purpose: the repository's standing direction issue gets a plain note ("always open, read by the planner directly") instead of showing as permanently
told/waiting, since it's never picked up like an ordinary tell.Tests: added to
test/studio.test.ts— a tell renders assignee/runs/dependencies with no label form; the direction issue doesn't read as waiting; a non-app repo's issue is unchanged; a reader without access gets 404.docs/STUDIO.mdgained a section describing the page. Fullbun x tsc --noEmitand thechecksuite pass (2 pre-existing failures intest/apps.test.tsare unrelated — they fail identically onmain, from a missinggitbinary in this sandbox). Manually verified the route end-to-end: 200 response, ~40ms server time, security headers intact.Closes #49