Skip to content

feat: onboarding personality + name step with dynamic email domain#761

Draft
AggManik wants to merge 1 commit intomainfrom
manik/onboarding/personality-name-step
Draft

feat: onboarding personality + name step with dynamic email domain#761
AggManik wants to merge 1 commit intomainfrom
manik/onboarding/personality-name-step

Conversation

@AggManik
Copy link
Copy Markdown
Contributor

@AggManik AggManik commented Apr 2, 2026

Summary

  • Two-step onboarding at /onboarding/name: personality selection (5 presets + custom "build your own") then name/email form
  • Auto-generates butler email as {butlerName}_{userName}@{domain} when a default personality is selected
  • Removes hardcoded getcore.me; derives email domain from LOGIN_ORIGIN env var at runtime
  • Custom personality option prefills prompt with Alfred voice guide; saves to workspace metadata on submit
  • Saves personality selection to user.metadata.personality on completion
  • Exports ALFRED_VOICE from personality.ts for reuse
  • Adds utils/onboarding-email.ts with deriveEmailDomain, generateButlerEmailSlug, generateButlerEmail helpers and vitest unit tests

Test plan

  • Select each of the 5 default personalities; verify step 2 pre-fills Name and auto-generates email
  • Change Name field; verify email updates automatically
  • Edit Email field directly; verify auto-generation stops
  • Click "change personality" ghost button; verify returns to step 1 with state preserved
  • Select custom (+); verify Name/Email empty, prompt pre-filled with Alfred content
  • Submit custom; verify custom personality saved to workspace metadata and user.metadata.personality set to custom ID
  • Confirm LOGIN_ORIGIN=https://app.example.com yields domain app.example.com in email
  • Run pnpm --filter webapp test to confirm unit tests pass

🤖 Generated with Claude Code

- Two-step onboarding at /onboarding/name: personality selection (5 presets + custom) then name/email form
- Auto-generates butler email as {butlerName}_{userName}@{domain} for default personalities
- Removes hardcoded getcore.me; derives email domain from LOGIN_ORIGIN env var
- Custom personality option prefills prompt with Alfred voice guide; saves to workspace on submit
- Saves personality selection to user.metadata on completion
- Exports ALFRED_VOICE from personality.ts for reuse
- Adds utils/onboarding-email.ts (deriveEmailDomain, generateButlerEmailSlug, generateButlerEmail) with vitest tests

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant