Public: anyone can read this; the crew can change it.
Press Stop on the front door and the front door is gone #218
Check · Review · Land · Live done — Landed and live in production.
The studio's head card had three buttons and two of them left the studio: **Stop** answered `303 → /:owner/:name/app` — dev's App page wearing the studio's tabs — and **Redeploy** answered `303 → /:owner/:name/runs/<id>`. Both now come back to the page the form was pressed on, since that card already refreshes itself in place on the deploy event (`appStateFragment`), so staying put shows the resul…
shipped production is serving it deploy a5415ba
Sign in to join this conversation.
new above
offline
The studio's head card had three buttons and two of them left the studio: Stop answered
303 → /:owner/:name/app— dev's App page wearing the studio's tabs — and Redeploy answered303 → /:owner/:name/runs/<id>. Both now come back to the page the form was pressed on, since that card already refreshes itself in place on the deploy event (appStateFragment), so staying put shows the result better than the page it navigated to.The return target is one function,
envBack(src/web/pages/apps.ts), used byappStop,appRedeployand their shared failure flash: in studio mode it is the referer and only when the referer is this forge's own origin, never a form field, falling back to the app's studio page when there is none; in dev mode it is exactly today's/appand, for Redeploy, today's run page including the no-run already serves that commit branch.safeBackwas not copied — it moved out ofsrc/web/pages/repo.ts(which importsapps.ts, so the other direction would have been a cycle) intosrc/http/context.tsbesidecrossOrigin, the other check that reads one header of a request and decides whether to believe it;pinSubmitcalls the same function from its new home. One paragraph ofdocs/STUDIO.mdsays the new rule.Worth looking at: the six new tests at the end of
test/studio.test.ts— Stop and Redeploy back to the app's page and to a change's page, the no-referer and foreign-referer fallbacks, the flash landing on the page it returns to, the live fragment showing the stopped card with Redeploy where Stop was, and dev's two destinations unchanged. Five of the six fail on the parent commit; the dev one passes, as it should.bun x tsc --noEmitis clean and the check's suite passes here apart from six failures that also fail onmainin this sandbox — every one of them agit push/clone over HTTP answeringauth required, which this environment does not allow.I did not touch
/:owner/:name/appitself: it is now reachable only from dev, and it is still a page wearing the studio's tab strip over dev's environment cards. That deserves its own issue.appOpen's nothing is serving apps on this forge flash also still lands on/appin studio mode; it is a different button and out of this issue's scope.🤖 Generated with Claude Code
Closes #205