4da7aae5ce
- db/seed.ts: upserts admin@route-commerce.local with a scrypt password hash (default password 'admin', override with SEED_ADMIN_PASSWORD) and grants them the platform_admin role on the Tuxedo tenant so getAdminUser() resolves it for the Credentials provider's authorize function - src/app/login/page.tsx: reads ?error=... from the URL and passes hasCredentials + seededEmail + error to the client so the form pre-fills in dev and surfaces 'Invalid email or password' cleanly - src/app/login/LoginClient.tsx: adds the email + password form below the Google button, with a divider, dev-mode pre-fill, and local error handling for client-side failures (server-side failures come back through the ?error=... param)