Public: anyone can read this; the crew can change it.
A person who opens the forge's link can start their own forge from the first… #11213
The anonymous home page now starts a forge from its first view: one sentence, one labelled field, one "Start my forge" button. I haven't run a browser test, the 360 px looks or the cold-read eval, so the acceptance items that need them are unchecked.
stopped parked by the crew deploy a95f9e4
The anonymous home page now starts a forge from its first view: one sentence, one labelled field, one "Start my forge" button. I haven't run a browser test, the 360 px looks or the cold-read eval, so the acceptance items that need them are unchecked.
bun scripts/gate.ts, bun x tsc --noEmit, bun scripts/design-lint.ts and about 30 related test files are green. scripts/fast.ts named 1875 test files for this diff, so I picked the related ones myself. test/start-forge.test.ts is new and covers the flow.
What changed
- Form:
src/web/studio/start_form.tsholds the form and a small script that shows "is free" or "is taken" as the person types. Without script the form still posts. - Handlers:
src/web/pages/start-forge.tsadds two routes, wired inserver.ts:
- POST /start calls spawnDoor as a stranger, so it uses the same free plan, rate limits and capacity as /forges/new. On success it answers 303 straight to the new forge's /claim#… page, where they choose a username and password and land signed in. There is no link to copy.
- GET /start/name answers the "free / taken" line.
- Refusals: a taken name, rate limit, no capacity or a bad name is drawn on the home page with plain words and what to do next. The typed name is kept.
- Door:
studioDoortakes an optional refusal and status. The hero's old primary button is now a small secondary link. - Header: on the door, "Create an account" still goes to
/signupwhen signup is open. When signup is closed or invite-only it becomes "Start your forge" and goes to/#start. /agents: keeps its form and gains one short "People: start here." link to the home form. The page's word ceiling is 56, so the link had to be that short.- No crew credit:
crewKeyCardnow ends with "Or pick a paid plan", linking to the host forge's plans row. The host comes from the child'sparent.json. The key field was already there. - Existing tests changed:
- front.test.ts now expects /#start in the closed case, where it expected /signup.
- design-audit.test.ts treats /start/name as a fragment, not a page.
- Docs:
docs/features/start-forge.md.
Not done
- First screen of the new forge: it does not get a new one-line "make an app or bring a repository" next step. The existing first-login card is unchanged (#600). The no-credit message sits on the pages that already show
crewKeyCard, not on a new first screen. - #2928: I did not build it. The claim page already takes a username and password and signs the person in, so I sent people there instead of duplicating that.
- Pricing page: the issue mentions
/pricing, but there is no such route. The plans row on the host's home (/#yours) is the target instead.
To try it: open / signed out, type a name, press "Start my forge", then set a username and password on the claim page.
🤖 Generated with Claude Code
I made no change and pushed nothing: the log you sent shows a successful deploy, not a failure.
The log ends with ready:, serving https://lab--11213--… and done:. The text "no tests declared, none run" is a note, not an error. The repository's forge.json has no app-level tests, and main is the same. The forge runs the real tests through check.fast and check.verify, not through the preview deploy.
I checked the live preview:
/answers 200 and contains the new start form (id="start-forge")./start/name?name=zz-testanswers{"free":true,"message":"zz-test is free."}.
The tests passed locally before the push: the gate, tsc --noEmit and about 30 related test files, including the new test/start-forge.test.ts. If a later check run in the forge fails, send me its log and I'll fix that.
The check failed on two gate rules, "both doors" and "pipeline first". I've pushed a commit that answers both, and bun scripts/gate.ts now exits 0 locally. I didn't run tsc or the tests again. The new commit is empty, so no code changed since the last push.
- No terminal screen: the commit message carries a
No door:line. The start-a-forge field is for someone who opened the link in a browser and has no terminal login yet, so there's nothing to reach from the terminal. - Feature without a pipeline change: the commit message carries a
Direction:line. Issue #11153 asks for the signed-out first view to start a forge from a name, which is the product's entry point and not a pipeline item.
If a reviewer wants the terminal screen anyway, that would be a separate change.
To try it: open / signed out, type a forge name, press "Start my forge", and set a username and password on the claim page.
Parked by the crew: the check stayed red through 2 automatic tries
The anonymous home page now starts a forge from its first view: one sentence, one labelled field, one "Start my forge" button. I haven't run a browser test, the 360 px looks or the cold-read eval, so the acceptance items that need them are unchecked.
bun scripts/gate.ts,bun x tsc --noEmit,bun scripts/design-lint.tsand about 30 related test files are green.scripts/fast.tsnamed 1875 test files for this diff, so I picked the related ones myself.test/start-forge.test.tsis new and covers the flow.What changed
src/web/studio/start_form.tsholds the form and a small script that shows "is free" or "is taken" as the person types. Without script the form still posts.src/web/pages/start-forge.tsadds two routes, wired inserver.ts:-
POST /startcallsspawnDooras a stranger, so it uses the same free plan, rate limits and capacity as/forges/new. On success it answers 303 straight to the new forge's/claim#…page, where they choose a username and password and land signed in. There is no link to copy. -GET /start/nameanswers the "free / taken" line.studioDoortakes an optional refusal and status. The hero's old primary button is now a small secondary link./signupwhen signup is open. When signup is closed or invite-only it becomes "Start your forge" and goes to/#start./agents: keeps its form and gains one short "People: start here." link to the home form. The page's word ceiling is 56, so the link had to be that short.crewKeyCardnow ends with "Or pick a paid plan", linking to the host forge's plans row. The host comes from the child'sparent.json. The key field was already there.-
front.test.tsnow expects/#startin the closed case, where it expected/signup. -design-audit.test.tstreats/start/nameas a fragment, not a page.docs/features/start-forge.md.Not done
crewKeyCard, not on a new first screen./pricing, but there is no such route. The plans row on the host's home (/#yours) is the target instead.To try it: open
/signed out, type a name, press "Start my forge", then set a username and password on the claim page.🤖 Generated with Claude Code
Closes #11153