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

Parked opened this in answer to
Closed without merging

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

opened this

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.ts holds 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.ts adds two routes, wired in server.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: studioDoor takes 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 /signup when 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: crewKeyCard now ends with "Or pick a paid plan", linking to the host forge's plans row. The host comes from the child's parent.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

Closes #11153

commented

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.ts holds 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.ts adds two routes, wired in server.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: studioDoor takes 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 /signup when 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: crewKeyCard now ends with "Or pick a paid plan", linking to the host forge's plans row. The host comes from the child's parent.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

commented

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-test answers {"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.

commented

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.

commented

Parked by the crew: the check stayed red through 2 automatic tries

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs