1.2.0: contextual notifications + in-onboarding auto-fill (aha moment)

- New "Week Ready" onboarding step: auto-fills the first week inline right
  after dish creation, then pitches the Sunday reminder with context before
  requesting OS notification permission (no more cold prompt on Home)
- Notifications section in Settings: weekly reminder toggle, deep-link to
  system settings when permission is denied
- NotificationService: remindersEnabled preference, requestPermission(),
  authorizationStatus(), cancelAllReminders()
- Post-onboarding premium prompt deferred to 2nd session (paywall was just
  shown as the final onboarding step — 2s-later alert was prompt fatigue)
- Back navigation blocked after onboarding commit to avoid duplicate dishes
- 10 new strings × 6 languages

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UtWT52pAE91D7mbDda1cAM
This commit is contained in:
alexandrev-tibco
2026-07-03 10:08:04 +02:00
parent 13ece5f2e7
commit 73c2039338
13 changed files with 415 additions and 49 deletions
@@ -362,3 +362,17 @@
/* Week rating */
"week_rating_prompt" = "Wie war diese Woche?";
/* Week ready onboarding step (1.2.0) */
"onboarding_week_ready_title" = "Deine Woche ist fertig!";
"onboarding_week_ready_subtitle" = "%d Mahlzeiten automatisch geplant. Du kannst später alles anpassen.";
"onboarding_week_ready_subtitle_empty" = "Dein Wochenplan ist eingerichtet. Füge jederzeit Gerichte hinzu und fülle ihn mit einem Tipp.";
"onboarding_reminder_pitch" = "Erhalte jeden Sonntag eine Erinnerung, damit die Woche immer geplant beginnt.";
"onboarding_reminder_allow" = "Sonntags erinnern";
"onboarding_reminder_skip" = "Jetzt nicht";
/* Notification settings (1.2.0) */
"settings_notifications_header" = "Mitteilungen";
"settings_weekly_reminder" = "Wöchentliche Planungserinnerung";
"settings_notifications_denied_hint" = "Mitteilungen sind in den Systemeinstellungen deaktiviert.";
"settings_open_system_settings" = "Einstellungen öffnen";
@@ -362,3 +362,17 @@
/* Week rating */
"week_rating_prompt" = "How was this week?";
/* Week ready onboarding step (1.2.0) */
"onboarding_week_ready_title" = "Your week is ready!";
"onboarding_week_ready_subtitle" = "%d meals planned automatically. You can tweak anything later.";
"onboarding_week_ready_subtitle_empty" = "Your weekly plan is set up. Add dishes anytime and fill it in one tap.";
"onboarding_reminder_pitch" = "Get a gentle reminder every Sunday so next week is always planned before it starts.";
"onboarding_reminder_allow" = "Remind me on Sundays";
"onboarding_reminder_skip" = "Not now";
/* Notification settings (1.2.0) */
"settings_notifications_header" = "Notifications";
"settings_weekly_reminder" = "Weekly planning reminder";
"settings_notifications_denied_hint" = "Notifications are disabled in system settings.";
"settings_open_system_settings" = "Open Settings";
@@ -362,3 +362,17 @@
/* Week rating */
"week_rating_prompt" = "¿Qué tal fue la semana?";
/* Week ready onboarding step (1.2.0) */
"onboarding_week_ready_title" = "¡Tu semana está lista!";
"onboarding_week_ready_subtitle" = "%d comidas planificadas automáticamente. Podrás ajustarlo todo después.";
"onboarding_week_ready_subtitle_empty" = "Tu plan semanal está preparado. Añade platos cuando quieras y complétalo con un toque.";
"onboarding_reminder_pitch" = "Recibe un recordatorio cada domingo para que la semana siempre empiece planificada.";
"onboarding_reminder_allow" = "Recuérdamelo los domingos";
"onboarding_reminder_skip" = "Ahora no";
/* Notification settings (1.2.0) */
"settings_notifications_header" = "Notificaciones";
"settings_weekly_reminder" = "Recordatorio semanal de planificación";
"settings_notifications_denied_hint" = "Las notificaciones están desactivadas en los ajustes del sistema.";
"settings_open_system_settings" = "Abrir Ajustes";
@@ -362,3 +362,17 @@
/* Week rating */
"week_rating_prompt" = "Comment s'est passée cette semaine ?";
/* Week ready onboarding step (1.2.0) */
"onboarding_week_ready_title" = "Votre semaine est prête !";
"onboarding_week_ready_subtitle" = "%d repas planifiés automatiquement. Vous pourrez tout ajuster ensuite.";
"onboarding_week_ready_subtitle_empty" = "Votre planning hebdomadaire est prêt. Ajoutez des plats quand vous voulez et remplissez-le en un geste.";
"onboarding_reminder_pitch" = "Recevez un rappel chaque dimanche pour que la semaine commence toujours planifiée.";
"onboarding_reminder_allow" = "Rappelez-le-moi le dimanche";
"onboarding_reminder_skip" = "Pas maintenant";
/* Notification settings (1.2.0) */
"settings_notifications_header" = "Notifications";
"settings_weekly_reminder" = "Rappel hebdomadaire de planification";
"settings_notifications_denied_hint" = "Les notifications sont désactivées dans les réglages du système.";
"settings_open_system_settings" = "Ouvrir Réglages";
@@ -362,3 +362,17 @@
/* Week rating */
"week_rating_prompt" = "Com'è andata questa settimana?";
/* Week ready onboarding step (1.2.0) */
"onboarding_week_ready_title" = "La tua settimana è pronta!";
"onboarding_week_ready_subtitle" = "%d pasti pianificati automaticamente. Potrai modificare tutto in seguito.";
"onboarding_week_ready_subtitle_empty" = "Il tuo piano settimanale è pronto. Aggiungi piatti quando vuoi e completalo con un tocco.";
"onboarding_reminder_pitch" = "Ricevi un promemoria ogni domenica così la settimana inizia sempre pianificata.";
"onboarding_reminder_allow" = "Ricordamelo la domenica";
"onboarding_reminder_skip" = "Non ora";
/* Notification settings (1.2.0) */
"settings_notifications_header" = "Notifiche";
"settings_weekly_reminder" = "Promemoria settimanale di pianificazione";
"settings_notifications_denied_hint" = "Le notifiche sono disattivate nelle impostazioni di sistema.";
"settings_open_system_settings" = "Apri Impostazioni";
@@ -362,3 +362,17 @@
/* Week rating */
"week_rating_prompt" = "Como foi esta semana?";
/* Week ready onboarding step (1.2.0) */
"onboarding_week_ready_title" = "Sua semana está pronta!";
"onboarding_week_ready_subtitle" = "%d refeições planejadas automaticamente. Você pode ajustar tudo depois.";
"onboarding_week_ready_subtitle_empty" = "Seu plano semanal está pronto. Adicione pratos quando quiser e preencha com um toque.";
"onboarding_reminder_pitch" = "Receba um lembrete todo domingo para que a semana sempre comece planejada.";
"onboarding_reminder_allow" = "Lembrar aos domingos";
"onboarding_reminder_skip" = "Agora não";
/* Notification settings (1.2.0) */
"settings_notifications_header" = "Notificações";
"settings_weekly_reminder" = "Lembrete semanal de planejamento";
"settings_notifications_denied_hint" = "As notificações estão desativadas nos ajustes do sistema.";
"settings_open_system_settings" = "Abrir Ajustes";