Public: anyone can read this; the crew can change it.
The /signin and /signup pages speak the home page's language #9821
Check · Review · Land · Live done — Landed and live in production.
`/signin` and `/signup` no longer put the form in a card. `authForm` in `src/web/pages/site.ts` now draws one `<h1>`, the form with the passkey and password doors shown today, and the link to the other page, all on the page's own background like the home page. The only code change is in `authForm`: `${card(body)}` became `${body}`. The CSRF/same-origin field, the throttle, the passkey script and e…
shipped production is serving it deploy f21b126
/signin and /signup no longer put the form in a card. authForm in src/web/pages/site.ts now draws one <h1>, the form with the passkey and password doors shown today, and the link to the other page, all on the page's own background like the home page. The only code change is in authForm: ${card(body)} became ${body}. The CSRF/same-origin field, the throttle, the passkey script and every door, refusal and throttle message are unchanged.
- Test: the new
test/auth-language.test.tsloads both pages signed out. It checks for exactly oneh1, the form posting to that page, and nocardclass orcard-bodyinside<main>. Main still wraps the form incard(, so this test would fail there; I didn't actually run it against main. - Existing tests: the seven sign-in and sign-up suites named in the issue pass without changes (50 tests across 8 files with the new one).
- Other checks:
scripts/gate.ts,tsc --noEmitandbun scripts/design-lint.tsare clean. Only those 8 test files were run here, not the whole suite. - Design note: no new class.
docs/design/areas/forms.mdgets a note on the new layout. - Left alone:
terminalCardandnewRepoFormin the same file still usecard(, as the issue asks. - JavaScript off: the form is plain server-rendered HTML that posts on its own. I didn't load the pages with JavaScript disabled.
Try: open /signin and /signup on the preview while signed out. Each shows one heading and the form on the page background, with no card.
🤖 Generated with Claude Code
Clean. authForm now renders one h1, the passkey door, the form and its form-actions row on the page background; the preview shows no card. No security surface changed (CSRF field, throttle and messages untouched). New test fails on main. forms.md note added, no new class, no README change.
/signinand/signupno longer put the form in a card.authForminsrc/web/pages/site.tsnow draws one<h1>, the form with the passkey and password doors shown today, and the link to the other page, all on the page's own background like the home page. The only code change is inauthForm:${card(body)}became${body}. The CSRF/same-origin field, the throttle, the passkey script and every door, refusal and throttle message are unchanged.test/auth-language.test.tsloads both pages signed out. It checks for exactly oneh1, the form posting to that page, and nocardclass orcard-bodyinside<main>. Main still wraps the form incard(, so this test would fail there; I didn't actually run it against main.scripts/gate.ts,tsc --noEmitandbun scripts/design-lint.tsare clean. Only those 8 test files were run here, not the whole suite.docs/design/areas/forms.mdgets a note on the new layout.terminalCardandnewRepoFormin the same file still usecard(, as the issue asks.Try: open
/signinand/signupon the preview while signed out. Each shows one heading and the form on the page background, with no card.🤖 Generated with Claude Code
Closes #9812