feat(app): add guided voice introduction onboarding

Merged
GI
1mo ago
+5229-799

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.