diff --git a/STATUS.md b/STATUS.md index 5f87263..d99d173 100644 --- a/STATUS.md +++ b/STATUS.md @@ -12,20 +12,24 @@ | Módulo | Estado | Notas | |---|---|---| | 1. Onboarding / Selección de avatar | ✅ **Hecho y verificado en dispositivo real** | Compose + MVVM + DataStore; mascotas 100 % Canvas | -| 2. Dashboard de hábitos + racha | 🟨 **Implementado, verificación en dispositivo a medias** | Ver "pendiente de verificar" abajo | +| 2. Dashboard de hábitos + racha | ✅ **Hecho y verificado en dispositivo real, punta a punta** | Toggle → contador → racha → XP → banner → persistencia tras force-stop | | 3. Monitoreo de batería (overlay <20 % + bloqueo en carga) | ⬜ Siguiente | `BatteryStatusMonitor` ya existe como base; notas en CLAUDE.md §8 | ### Verificado en dispositivo (2026-07-03, Huawei HBP-LX9, Android 12) - Onboarding completo: título, 4 tarjetas, mascotas animadas, badge, CTA, persistencia y navegación. - Fuentes Baloo 2 / Nunito cargan vía Downloadable Fonts (el equipo tiene Google Play Services). -- Dashboard: gate de arranque OK (entra directo con onboarding completado), saludo "¡Hola, Lucía!", fecha es-MX real, "te quedan 3 hábitos" (seed Room funcionó), sidebar completo (mascota sin orejas cortadas, Nv./XP/racha), columna derecha (En equipo, mensaje de mascota, Museo Diario). +- Dashboard punta a punta: gate de arranque, seed de 3 hábitos, tarjetas con check animado + "¡Hecho!", + contador "te quedan N", racha 0→1 con V del viernes palomeada, banner "¡Racha asegurada hoy! 🔥", + XP 0→30/500, mensaje celebratorio de la mascota, chip de batería real (verde cargando), singular/plural + de racha, y persistencia completa tras force-stop + relanzamiento. -### ⚠️ Pendiente de verificar (bloqueado por teléfono con PIN al final de la sesión) -En la única captura del dashboard NO se veían las 3 tarjetas de hábitos ni la tarjeta "Tu racha"; -todo lo demás renderizaba. Puede ser un frame capturado a destiempo (EMUI) o un bug real de layout. -**Primer paso de la próxima sesión:** relanzar la app y mirar la pantalla — si las tarjetas aparecen, -cerrar el tema; si no, bisecar con cajas de color en `CenterColumn`/`StreakCard`. -Nota: la regla de racha y el toggle están cubiertos por 6 tests unitarios verdes (`StreakCalculatorTest`). +### 🔎 Lecciones EMUI de esta sesión (para futuras pruebas en este equipo) +- El header original (Row con `Alignment.Bottom` + `SpaceBetween` + texto con composable-en-template) + medía ~270 dp fantasma SOLO en este dispositivo → la lista quedaba en altura 0 y las tarjetas ni se + componían. Diagnóstico vía `uiautomator dump` (bounds de semántica), no vía screenshots. +- Los taps de `adb input tap` a <40 px del borde inferior se los come la zona de gestos de EMUI. +- `adb shell settings put global stay_on_while_plugged_in 7` activado para que no se bloquee la pantalla + durante desarrollo (revertir con valor 0 cuando termine el sprint). ## Decisiones de producto tomadas en sesión 2 @@ -43,6 +47,7 @@ Nota: la regla de racha y el toggle están cubiertos por 6 tests unitarios verde - `28f2359` feat(habits): Room (Habit/HabitLog) + StreakCalculator + 6 tests - `33de656` feat(battery): BatteryStatusMonitor (callbackFlow sobre sticky broadcast) - `1d34b78` feat(dashboard): módulo 2 completo — 3 columnas, checks animados, confeti, gate +- `0eb4133` fix(dashboard): header a prueba de EMUI + weight en lista + singular de racha ## Entorno de build (esta Mac) @@ -62,14 +67,12 @@ Nota: la regla de racha y el toggle están cubiertos por 6 tests unitarios verde ## Deuda / pulido pendiente -1. ⚠️ Verificar tarjetas de hábitos + "Tu racha" en pantalla (ver arriba — prioridad 1 próxima sesión). -2. Avatar personalizado ("Mi dibujo") aún no se muestra como imagen (falta Coil o similar en el catálogo); hoy cae al marco punteado. Recorte orgánico AV-02 pendiente. -3. Layout diseñado para tablet 1280×800; en el teléfono de prueba (373 dp de alto útil) queda apretado. El target real es tablet — decidir si se adapta responsive o se asume tablet-only. -4. `confettiOn` (DA-05) hoy está fijo en true; se conecta cuando exista pantalla de Ajustes con gate parental. -5. Campo de nombre en onboarding (AV-08): el ViewModel ya lo persiste; falta el input en UI. +1. Avatar personalizado ("Mi dibujo") aún no se muestra como imagen (falta Coil o similar en el catálogo); hoy cae al marco punteado. Recorte orgánico AV-02 pendiente. +2. Layout diseñado para tablet 1280×800; en el teléfono de prueba (373 dp de alto útil) queda apretado y el pill "0/3 hoy" se recorta a la derecha. El target real es tablet — revisar en tablet física antes de optimizar. +3. `confettiOn` (DA-05) hoy está fijo en true; se conecta cuando exista pantalla de Ajustes con gate parental. Confeti no confirmado visualmente en captura (el trigger sí disparó — banner y mensaje aparecieron); confirmar a ojo en dispositivo. +4. Campo de nombre en onboarding (AV-08): el ViewModel ya lo persiste; falta el input en UI. ## Próximos pasos (en orden) -1. **Resolver el pendiente de verificación del dashboard** (arriba). -2. Módulo 3 — Batería: overlay <20 % con mascota cansada (estados tired/sleep en `MascotIllustrations`), Activity de bloqueo en carga con verificación real de desconexión (`BatteryStatusMonitor` ya provee el flow). -3. Sprint 2+: backend .NET 10 + deploy PapuTec (CLAUDE.md §4), CI Gitea Actions. +1. Módulo 3 — Batería: overlay <20 % con mascota cansada (estados tired/sleep en `MascotIllustrations`), Activity de bloqueo en carga con verificación real de desconexión (`BatteryStatusMonitor` ya provee el flow). +2. Sprint 2+: backend .NET 10 + deploy PapuTec (CLAUDE.md §4), CI Gitea Actions.