Multi-language onboarding support (Spanish, Latin, Icelandic)#122
Merged
Multi-language onboarding support (Spanish, Latin, Icelandic)#122
Conversation
- Add database migration for language_id column on user_profiles - Add language selection as first step in onboarding flow - Update OnboardingWelcome with language picker (Step 1 of 4) - Update AssessmentChat with language-specific UI text - Update assessment page to show language name and pass to chat - Update complete page with language-specific congratulations - All onboarding API routes now accept and handle language param - Progress indicator updated from 3 to 4 steps throughout flow Closes #112 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use shadcn Button and Textarea components - Match input area layout with DialogView (min-h-[80px], flex gap-2) - Consistent button styling with icon + text pattern 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Unit Tests (lib/prompts/__tests__/onboarding-assessment.test.ts): - Enable previously skipped multi-language tests - Test getOnboardingSystemPrompt for es, la, is - Test getAssessmentPrompt with language parameter - Test getFallbackMessage for all languages - Test UI_TEXT coverage for AssessmentChat E2E Tests (tests/e2e/onboarding/multi-language-onboarding.spec.ts): - Language selection step (all 3 languages displayed) - Language highlighting on selection - Continue button disabled until selection - sessionStorage persistence - Goals step with language-specific placeholders - Back navigation - Assessment chat loading states - API route verification for language params - Full flow smoke tests for each language - Congratulations messages 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Profile Page: - Add language dropdown to change learning language preference - Full-width 'View All Vocabulary' button on mobile Onboarding Complete: - Prioritize courses matching user's selected language - For Spanish: highlight 'Vibras Puras' - For Latin/Icelandic: highlight first course matching language Assessment Chat: - Autoplay audio for first AI message - Pass correct language to AudioButton Dark Mode Fixes: - NotificationSettings language preferences now dark-mode aware - Push notifications section now dark-mode aware 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
language_idcolumnChanges
Database
20251221_add_language_to_profiles.sqladdslanguage_idcolumn with constraintUI Components
OnboardingWelcome.tsx: New language selection step with flag emojis and native namesAssessmentChat.tsx: Language-specific thinking/placeholder textapp/onboarding/assessment/page.tsx: Dynamic header text based on languageapp/onboarding/complete/page.tsx: Language-specific congratulationsAPI Routes
/api/onboarding/chat: Accepts and uses language for AI prompts/api/onboarding/assess: Accepts language for assessment evaluation/api/onboarding/complete: Saves language_id to user profileTest Plan
Closes #112
🤖 Generated with Claude Code