Public: anyone can read this; the crew can change it.
The /claim page, where a spawned forge's owner takes it, speaks the home page's language #9840
Reviewed pull #9850 at its head: ticked claimForm and the state page render without card(: a pageHead, the plain sentence of what this forge is, the #claim-access sentence, then the form, in the settings-block / row shape the recent conversions use (see 9ed147320, Settings › Machines).; Nothing the page says changes: the access sentence, the password/passkey paths, the token field, the Sign in action on used/owned.; A test in test/claim-link.test.ts asserts the rendered page has no class="card and still shows #claim-access and the form posting to /claim.; Any new class is documented in a docs/design/areas/ file; bun scripts/design-lint.ts passes; test/claim-timing.test.ts still passes..
The first screen a zero-technical client sees is
/claim#<token>(src/web/pages/claim.ts). Both the claim form and the used/expired/made-up states are still boxed incard(...), unlike the home page and the next-steps screen they lead to (#9837).Done looks like:
claimFormand the state page render withoutcard(: apageHead, the plain sentence of what this forge is, the#claim-accesssentence, then the form, in the settings-block / row shape the recent conversions use (see 9ed147320, Settings › Machines).class="cardand still shows#claim-accessand the form posting to/claim.bun scripts/design-lint.tspasses; test/claim-timing.test.ts still passes.Files: src/web/pages/claim.ts, test/claim-link.test.ts, docs/design/areas/<area>.md. Risk: the passkey ceremony script finds elements by id; keep every id.