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 #9850

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

The `/claim` page and its used, expired, made-up and owned states no longer render inside `card(...)`. Design lint, `tsc`, the gate script, `test/claim-link.test.ts` and `test/claim-timing.test.ts` all pass. I did not run the whole suite; the forge's check does that on push. I didn't open the page in a browser.

shipped production is serving it deploy df0381c

opened this

The /claim page and its used, expired, made-up and owned states no longer render inside card(...). Design lint, tsc, the gate script, test/claim-link.test.ts and test/claim-timing.test.ts all pass. I did not run the whole suite; the forge's check does that on push. I didn't open the page in a browser.

What changed

  • In src/web/pages/claim.ts, claimForm is now a pageHead followed by one <section class="settings-block">. The section holds the plain sentence about the forge, the #claim-access sentence and the form, the same shape as Settings › Machines.
  • The state page is the same settings-block section with its sentence, plus the Sign in button on used and owned.
  • No wording, field, id, action or script changed, so the passkey ceremony still finds every element it looks for.
  • The card import is gone.
  • A new test in test/claim-link.test.ts asserts the form page and a made-up-link page have no class="card. It also checks #claim-access, a form posting to /claim, and the new section.
  • docs/design/areas/passkey.md gets a paragraph describing the page. It adds no new class, so it points at settings-block rather than defining anything.

Left out: the form's layout is unchanged beyond removing the card, because the existing field and button styling already fits inside a settings block.

Try it: open /claim#<token> on a spawned forge, or /claim on a forge that was not spawned to see the made-up state.

🤖 Generated with Claude Code

Closes #9840

commented

The /claim page and its used, expired, made-up and owned states no longer render inside card(...). Design lint, tsc, the gate script, test/claim-link.test.ts and test/claim-timing.test.ts all pass. I did not run the whole suite; the forge's check does that on push. I didn't open the page in a browser.

What changed

  • In src/web/pages/claim.ts, claimForm is now a pageHead followed by one <section class="settings-block">. The section holds the plain sentence about the forge, the #claim-access sentence and the form, the same shape as Settings › Machines.
  • The state page is the same settings-block section with its sentence, plus the Sign in button on used and owned.
  • No wording, field, id, action or script changed, so the passkey ceremony still finds every element it looks for.
  • The card import is gone.
  • A new test in test/claim-link.test.ts asserts the form page and a made-up-link page have no class="card. It also checks #claim-access, a form posting to /claim, and the new section.
  • docs/design/areas/passkey.md gets a paragraph describing the page. It adds no new class, so it points at settings-block rather than defining anything.

Left out: the form's layout is unchanged beyond removing the card, because the existing field and button styling already fits inside a settings block.

Try it: open /claim#<token> on a spawned forge, or /claim on a forge that was not spawned to see the made-up state.

🤖 Generated with Claude Code

commented

The /claim page and its used, expired, made-up and owned states no longer sit in cards. The pull's gate check failed because no commit message had a "Try:" line. I added an empty commit with one and pushed it. bun scripts/gate.ts printed nothing locally, and I haven't seen the forge's verdict on the new push yet.

What changed

  • In src/web/pages/claim.ts, claimForm is now a pageHead followed by one <section class="settings-block">. The section holds the plain sentence about the forge, the #claim-access sentence and the form, the same shape as Settings › Machines.
  • The state page is the same section with its sentence, plus the Sign in button on used and owned.
  • Nothing the page says changed, and every id the passkey script looks for is still there.
  • test/claim-link.test.ts has a new test. It checks that the form page and a made-up-link page have no class="card. It also checks that #claim-access, a form posting to /claim, and the new section are present.
  • docs/design/areas/passkey.md has a paragraph describing the page. It adds no new class.

I left the form's layout alone beyond removing the card.

Try: open /claim on the preview and see the claim form with no card around it. Opening /claim#<token> on a spawned forge gives the real flow.

🤖 Generated with Claude Code

Approved

The card is gone from /claim and its used, expired, made-up and owned states. They now use pageHead plus one settings-block, with no new class. The preview serves /claim with no class="card". Every id, sentence and field is kept, and the test covers the form page and the dead-link page. Next two things: (1) re-indent the lines inside the new section in claimForm; the diff shows the old card indentation left in place, so run the formatter. (2) Give the settings-block its own short heading, as Settings › Machines does, or say in passkey.md why it has none.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs