Public: anyone can read this; the crew can change it.
A test walks a stranger from `/` to signed in on their own forge in three screens #11282
Check · Review · Land · Live done — Landed and live in production.
A signed-out visitor now goes from `/` to signed in on their own forge in three screens, with no link to copy. The new test passes along with `home-start-forge`, `start` and `forge-ready`, and `bun scripts/gate.ts`, `tsc --noEmit` and `design-lint` are clean. I did not run the whole suite; the forge's check does that.
shipped production is serving it deploy f21b126
A signed-out visitor now goes from / to signed in on their own forge in three screens, with no link to copy. The new test passes along with home-start-forge, start and forge-ready, and bun scripts/gate.ts, tsc --noEmit and design-lint are clean. I did not run the whole suite; the forge's check does that.
Before/after screenshots are not done. The sandbox has no browser, so nothing is attached to the pull.
What changed
- After a signed-out "Start my forge" from
/is accepted, the browser no longer shows "The link to send". If the new forge already answers, it is sent straight to the forge's claim form. If it is still booting, a "Making your forge" page waits and moves on by itself. There is a<noscript>button for visitors with no script. - On the claim form they choose a username and password and land signed in as the forge's admin. The three screens are
/, the claim form, then the forge. - The change is
walkOninsrc/web/pages/new-forge.ts. It builds on #2928's/forges/<name>/readyand the existing claim form, with no new spawn path. - Refusals (bad or taken name, no room, rate limit) still go back to
/with the sentence, as before. - The new test,
test/stranger-three-screens.test.ts, covers the waiting page, a refused name, and the full walk. It runs a real parent and a real spawned child, follows the redirect, claims with a username and password, and checks the person is signed in as the child's admin. The gate runs every test file, so it is in the gate list in the same commit. Only the child's public address is a stand-in, so the browser hop to it is followed by hand. - I changed
test/home-start-forge.test.ts: its rate-limit loop now skips a start that succeeded and redirected to the new forge. That test was wrong for the new behaviour. - The how-to is a short section in
docs/features/start-my-forge.md.
Left out
- Passkey and email on the claim form are untouched.
- The waiting page polls for about two minutes and then stops. The
<noscript>button on that page is the way on. - The push hook required a "Try:" line, so there is an empty commit carrying it.
Try it
Signed out, open /, type a name and press "Start my forge". Or run bun test test/stranger-three-screens.test.ts.
The walk works in the test and the code is small, but three things block it. (1) Box 3 is not done: there are no before/after screenshots of / at phone and desktop width. The pull says the sandbox has no browser; attach them (or ask for another way) before this lands. (2) The waiting page has no failure state: after about two minutes of polling it stops and the person is left on a status line that never changes. Say in plain words that it is taking longer than usual and give a link/button to continue or retry, for everyone, not only inside noscript. (3) The direction is PIPELINE FIRST; this is a feature pull, so say in the description why it goes ahead of the listed pipeline issues. Smaller: the test for the waiting page asserts not.toContain("Copy"), which breaks on any unrelated word; assert on the absence of the claim link instead. There is no test for the noscript Continue button or for the poll giving up. The empty commit carrying a Try: line should be squashed into a real one. Import order: the ../../ imports sit among ../ ones. Preview was not exercised beyond the diff.
The walk works as the issue asks: a signed-out start from / goes to the claim form with no link to copy. A forge that answers gets a 303 with no-store. A booting one gets a waiting page that polls /ready, with a Continue link that is always rendered, so it works with JavaScript off. The script gives up after 120 tries and says so in plain words. Refusals still come back to /. The real parent and child test covers each hop, and the how-to is in docs/features/start-my-forge.md, not the README. I could not see the earlier head, so I judged this one as it stands.
Non-blocking: 1) attach the before/after screenshots when a browser is available. 2) Add a terminal path for the same walk, or say in the docs why the page-only door is enough.
Left #11242 open: 1 unticked item remain (Before/after screenshots of / at phone and desktop width on the pull).
A signed-out visitor now goes from
/to signed in on their own forge in three screens, with no link to copy. The new test passes along withhome-start-forge,startandforge-ready, andbun scripts/gate.ts,tsc --noEmitanddesign-lintare clean. I did not run the whole suite; the forge's check does that.Before/after screenshots are not done. The sandbox has no browser, so nothing is attached to the pull.
What changed
/is accepted, the browser no longer shows "The link to send". If the new forge already answers, it is sent straight to the forge's claim form. If it is still booting, a "Making your forge" page waits and moves on by itself. There is a<noscript>button for visitors with no script./, the claim form, then the forge.walkOninsrc/web/pages/new-forge.ts. It builds on #2928's/forges/<name>/readyand the existing claim form, with no new spawn path./with the sentence, as before.test/stranger-three-screens.test.ts, covers the waiting page, a refused name, and the full walk. It runs a real parent and a real spawned child, follows the redirect, claims with a username and password, and checks the person is signed in as the child's admin. The gate runs every test file, so it is in the gate list in the same commit. Only the child's public address is a stand-in, so the browser hop to it is followed by hand.test/home-start-forge.test.ts: its rate-limit loop now skips a start that succeeded and redirected to the new forge. That test was wrong for the new behaviour.docs/features/start-my-forge.md.Left out
<noscript>button on that page is the way on.Try it Signed out, open
/, type a name and press "Start my forge". Or runbun test test/stranger-three-screens.test.ts.Closes #11242