feat: feature-gap build wave — wire dead UI, 7 new pages, DB persistence, .dev hosts, admin auth #4068
ccantynzcommented Jun 11, 2026
Originally written by @vercel[bot] on GitHub.
Deployment failed with the following error:
There is no GitHub account connected to this Vercel account.ccantynzcommented Jun 11, 2026
Originally written by @vercel[bot] on GitHub.
The latest updates on your projects. Learn more about Vercel for GitHub.
| Project | Deployment | Actions | Updated (UTC) |
|---|---|---|---|
| alec-rae-com-admin | Preview, Comment | Jun 11, 2026 11:41am |
Cross-repo impact
See what breaks downstream if this PR merges.
⮌ Merged
This pull request was merged into main.
c comment · e edit title · m merge · a approve · r request changes · ? shortcuts
Originally written by @ccantynz-alt on GitHub.
Imported from https://github.com/ccantynz-alt/AlecRae.com/pull/63
Why
PR #62's audit found the web UI exposed ~20% of the backend, the sidebar was literally unclickable,
/v1/admin/*was unprotected, 10 stores lost data on restart, and.devplaceholder hostnames blocked customer-domain onboarding. This PR closes all of it. Note: main is currently red (PR #62 merged with an in-flight typed-routes error) — the first commit here fixes that, so merging this PR restores green.What's in it
Fixes
onNavigate; clicks werepreventDefault'd into a no-op) — fixed, plus the Next typed-routes follow-up (9b724d9)/v1/admin/*had no admin check — any authenticated user could read cross-account stats/users/messages. NewrequireAdmin()(admin scope or owner/admin DB role)GET /status/:idand collaborate comments now account-scopedWeb — wiring + new surface
aiWritingApi), Cmd+K command palette (shared store), focus mode/automations(AI rules, auto-responder, workflows),/calendar,/tasks,/search(AI + email query console),/voice(clone manager + voice replies),/scripts,/settings/developer(API keys, webhooks, Zapier/Make/n8n integrations)Backend — persistence (issue #28)
0002_goofy_scarecrow.sql; exact API response shapes preserved; documented hybrid for snooze undo (timer in-memory, window persisted + reconciled after restart). Runbun run db:migratebefore prod.Production blockers
.devhostname (dns, mta, analytics tracking, inbound, imap, support copy,.env.example) is env-driven with.comdefaults matching the onboarding runbookassertProductionEnv()): DATABASE_URL, JWT_SECRET ≥32, WEBAUTHN_RP_ID/ORIGIN; warn-only for recommended varsDocs
Verification
next buildgreen (all new routes generated), web tests pass, ESLint cleandb:check-driftin sync (3 migrations)docs:check49/49 stampedhttps://claude.ai/code/session_013mN1D3m3P95nke5gceVegG