feat(auth): register via API, collect names in onboarding for all new signups

Merged
RI
2d ago
+2958-725

Summary (AI generated)

Moves console registration from the Supabase SDK to POST /auth/register (email + password only), collects first and last name in console onboarding, and ships that name step to 100% of new signups with no onboarding_v6 experiment and no legacy path. Includes the work from #3744 and supersedes it.

  • Remove onboarding_v6 from ab_tests.json and delete hasProfileOnboarding / PROFILE_ONBOARDING_AB_TEST. onboardingABTests.ts is now identical to main.

  • Every self-signup without an organization (and not invited) completes About you (first + last name) before Your goal. Invited users and existing organization members keep their current flow.

  • OnboardingProfile, /onboarding/name and AppOnboardingFlow no longer wait for A/B assignments to decide whether to ask for names. Removed the "authoritative" reconcile option, the startup A/B wait and the redirect-on-assignment hook.

  • Initial onboarding runs (pre_org, not a new organization) always report analytics version 6. Other flows keep the existing experiment versions.

  • Route guard: if organizations fail to load, navigation is no longer aborted, so established users can't be stuck on a blank screen. The wizard still re-checks names before creating the organization.

  • Tests: removed the allocation test and the treatment fixtures in Playwright and visual diff. The register e2e spec now exercises the real flow with no seeded assignment.

  • src/pages/register.vue no longer calls supabase.auth.signUp, asks for names, or asks to confirm the password (email + password only, like the website); it calls POST /auth/register through src/services/registration.ts and sets the returned session.

  • New /onboarding/name (About you) step plus draft/resume handling, reused from #3744.

Landing page counterpart: Cap-go/website#1235.

Motivation (AI generated)

The name step should apply to every new account, not to an experiment cohort, and the legacy no-name onboarding path should be removed.

Business Impact (AI generated)

Every new account gets a real first and last name for Bento/PostHog and support, and signup has two fewer fields. One flow means less code to maintain and no stale experiment cohorts.

Test Plan (AI generated)

  • bun run typecheck (CLI, backend, frontend)
  • ESLint on all changed files
  • Focused unit suites: onboarding name gate/page/profile, app onboarding integration, auth guard (SSO provisioning): all pass
  • Full bun test:unit: the only remaining failures (dual-onboarding-*, native-device-stats, onboarding-redirect) fail identically on the base branch
  • playwright/e2e/register.spec.ts against local Supabase: 15/15 pass with no V6 fixture

Screenshots (AI generated)

Captured locally with a fictional account against this branch.

StepDesktopMobile
Register (email + password only, no confirm)
Onboarding: About you (required)
About you filled
Next: Your goal

Generated with AI

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added a dedicated onboarding step for collecting and saving first and last names, with draft recovery and validation.
    • Added clearer onboarding progress, navigation, resume, cancel, and logout experiences across screen sizes.
    • Registration now uses email and password, then continues directly into onboarding.
    • Added profile-recovery options when account information cannot be loaded.
  • Bug Fixes

    • Improved onboarding progress persistence and retry behavior.
    • Added localized messaging for account-loading failures and profile setup guidance.