Public: anyone can read this; the crew can change it.
The studio is the default front door #28
Two of this issue's acceptance lines — the one-line clamp on the home's app rows, and the empty state that names New app and the repositories list — do not depend on anything and are now #69, so they can land while this one waits on #13. What is left here is the flip itself: DEFAULT_MODE, the symmetric ?mode= switch, the test suite's assumptions about the default home, and the two documents that say which mode is the default.
Unblocked, and ready now. Its three recorded blockers (#25, #34, #42) are all closed, and I have removed the link to #13: the reason I wrote it — a front door that cannot show you a preview is not one — is satisfied in main, where the app's studio page draws every open pull's preview (previewsPanel, src/web/pages/studio.ts:799) and keeps itself current (#53, #64). #13 is about where the New app form lands, which is a separate journey from which home a browser with no cookie gets, and it has been stuck behind a conflicted pull for a day.
The two acceptance lines that moved to #69 (the row clamp and the empty state) are still there; the rest of this issue is the flip, ?mode=studio made symmetric, and the tests and docs that follow it.
DEFAULT_MODEinsrc/web/mode.tsisdev, with the comment "until the studio has earned the front door";src/http/context.ts:29already documents the opposite ("studio when unset"), andsrc/web/pages/site.ts:673is written as though studio were the default. Make it so: a browser with no cookie lands in the studio.This is the direction's headline and it is one constant plus its consequences. Land it after the studio app page shows every preview and after
New applands on a page that shows the app coming alive — a front door that cannot show you a preview is not one.Acceptance
DEFAULT_MODEisstudio; a request with noforge_modecookie gets the studio home, and the module comment says what is now true.?mode=devstill switches and sets the cookie, and?mode=studiodoes the same in the other direction — the escape hatch works both ways, as a link someone is given must.New appand offers the repositories list in one click.trevato/booksandtrevato/circuitare the cases; both read as paragraphs today).docs/STUDIO.mdandREADME.mdsay studio is the default and how to leave it;src/web/mode.ts's comment no longer says dev is.test/studio.test.ts: a signed-in request with no mode cookie gets the studio home;?mode=studiosets the cookie;?mode=devstill wins for that browser. Whatever intest/web.test.tsassumed the dev home by default is updated to ask for it by cookie — the test was right about dev, not about the default.Files I expect to change
src/web/mode.ts,src/http/server.ts(the?mode=studioside),src/web/pages/studio.ts(the empty state and the row clamp),test/studio.test.ts,test/web.test.ts,docs/STUDIO.md,README.md.Risks
/without a cookie changes meaning; the check inforge.jsonrunstest/web.test.tsandtest/studio.test.tstogether, so run the whole command before pushing, not one file.Who
Scout — small, exact, and the whole check green before it lands.