feat(app): add guided voice introduction onboarding
Merged
GI
1mo ago+5229+5229+0123456789012345678901234567890123456789-799-799-012345678901234567890123456789
Summary
Closes #14472
- Replace the open-ended interview with four guided sentence starters and a visible per-prompt progress bar.
- Start the next recording automatically after Next, while preserving pause, skip, interruption recovery, and one-tap short-sample recovery.
- Add an explicit review step with editable, checkable answers and one Save and finish action for voice enrollment, memories, and the qualitative goal.
- Save memories and goals through their canonical APIs with independent receipts and safe retries; a voice failure or one failed answer no longer blocks the others.
- Clean the goal locally with conservative deterministic rules before review, with an option to restore the original transcript. The mobile app has on-device speech recognition but no integrated on-device text-generation model.
- Add the guided flow to Settings > Profile and document its capture, consent, goal, retry, and voice-enrollment boundaries.
Verification
flutter test --no-pub test/providers/guided_voice_controller_test.dart test/providers/goal_text_cleanup_test.dart test/widgets/speech_profile_onboarding_test.dart test/providers/speech_profile_provider_test.dart test/unit/goals_api_defaults_test.dart— 70 passed.- Targeted
flutter analyze --no-pub ...— no issues found. python3 scripts/l10n.py check— 49 locales, 3077 keys.make preflight— all 16 selected checks passed.- Physical iPhone verification: the profile AOT dev build was built, codesigned, installed, and launched on the connected iPhone. The new review/save path is covered by widget tests and render verification; live user acceptance remains available from Settings > Profile > Let Omi get to know you.
The PR excludes machine-specific iOS signing and generated build settings used only for local device setup.