- login: OAuth/email on top, phone collapsed behind 'Sign in with phone
instead' (prod providers: google on, email off, sms on — a developer
should never see a phone field as the front door)
- dashboard: plan card wired to GET /v1/billing/status; calls card shows
'—' + pointer to per-server metrics (no user-facing usage endpoint
exists; previous card showed invented '0 of 100,000 / Hobby')
- templates: server-rendered grid (revalidate 300) via fetchPublicTemplates,
client browser hydrates with initial data; inviting empty state with
labeled starter ideas instead of 'No templates yet'
- servers/new: removed upgrade nag from first analyze wait
- scripts/seed-templates.mjs: idempotent dry-run-by-default seeder driving
the real preview->create->live->publish flow for 6 first-party templates
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SXUwmPVRTD8AKQtio6gCN5
- login: SMS step now has a 60-country dial-code <select> (CH default)
and a national-number input, combined into strict E.164 client-side
- marketing header: probe /v1/auth/me, show "Dashboard" when signed in
instead of the Sign in / Start building CTAs
- dashboard overview: drop the duplicate "+ New server" button, the
navbar one is the single source
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>