Calm 2.0 Fase 2: check-in guiado full-screen (build 52)

El ritual mensual como flujo paso a paso en vez de formulario:
- Una fuente por pantalla: valor anterior a la vista, entrada grande (40pt
  rounded), delta en vivo (chip verde/rojo con importe y %), sugerencia de
  portapapeles, 'Igual que el mes pasado' y 'Omitir'
- Barra de progreso del ritual; cancelable solo al inicio (interactiveDismiss
  bloqueado a mitad para no perder valores)
- Reflexión: mood (5 estados existentes) + nota de una línea
- Cierre: total nuevo, delta del mes, streak, compartir y haptic de éxito
- Persistencia por los MISMOS caminos que Quick Update (Snapshots) y el journal
  (MonthlyCheckInStore → JournalEntry): coherente con el resto de entradas
- Entrada: CTA del check-in card en Home (fullScreenCover); la fila de
  completado sigue navegando al journal
- Fix: referenceDate congelada en @State al presentar — el card la recalcula al
  guardar y SwiftUI re-evaluaba el contenido del cover cambiando el mes a mitad
  de flujo
- --pending-checkin en ScreenshotMode (revierte el seed a 'mes pendiente') +
  UITest testGuidedCheckInFlow end-to-end (valor → skips → mood → cierre) ✓
- Strings ×7 idiomas

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WoScpmHdVj1aUf4rAp6hbe
This commit is contained in:
alexandrev-tibco
2026-07-09 10:51:11 +02:00
parent be7119f4b9
commit 7044cfd441
12 changed files with 701 additions and 11 deletions
@@ -474,3 +474,18 @@
"checkin_done_title" = "%@ check-in done";
"checkin_done_next" = "Next one: %@";
"checkin_sources_progress" = "%1$d of %2$d sources updated";
// Guided check-in (1.5.0 Fase 2)
"guided_previous_value" = "Last month";
"guided_paste_amount" = "Paste %@";
"guided_next" = "Next";
"guided_same_as_last" = "Same as last month";
"guided_skip" = "Skip";
"guided_reflection_title" = "How does this month feel?";
"guided_reflection_subtitle" = "A quick note for your future self.";
"guided_note_placeholder" = "One honest line about this month…";
"guided_finish" = "Finish check-in";
"guided_done_title" = "%@ check-in done";
"guided_streak" = "%d months in a row";
"guided_share_month" = "Share this month";
"guided_done_cta" = "Done";