Public: anyone can read this; the crew can change it.

Sign-in shows no "Passkey off" badge, and offers the passkey button only where a passkey can run #7921

shipped production is serving it opened this has it
opened this

Intent: a visitor signing in sees a username, a password and one Sign in button — and a passkey button only when their browser can use it — never a state word about a feature they did not ask about.

Today production's /signin server-renders passkeyState() (src/web/passkey-state.ts) as an outline "Passkey off" badge, and a visible "Sign in with a passkey" button even before the client knows a passkey can run; passkey-client.ts flips them later, so the page also shifts.

Done:

  • [ ] /signin carries no data-passkey-state badge; the passkey button is server-rendered hidden with data-passkey="on" and passkey-client.ts shows it when a passkey can run, as it already does for the second Sign in button
  • [ ] with no script, the page is the password form with one visible Sign in button
  • [ ] the other pages that draw passkeyState() (passkeys, everyday, first-admin, claim) are left as they are, where the state is a setting the person is looking at
  • [ ] a test renders /signin and asserts no "Passkey off" text and that the passkey button is hidden

Files: src/web/pages/site.ts (the sign-in page), src/web/passkey-client.ts if the button needs its attribute, a test. Risk: keep the passkey ceremony working where it can run; run bun scripts/design-lint.ts.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs