Files
h-bitosInfantiles/STATUS.md
T

76 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# STATUS — Rachita
> Estado vivo del desarrollo. **Actualizar al cerrar cada hito o sesión de trabajo.**
> Si retomas en un chat nuevo: lee CLAUDE.md (arquitectura/convenciones), PRD-Rachita.md (requisitos) y este archivo (dónde vamos), en ese orden.
**Última actualización:** 2026-07-03 (sesión 2)
---
## Sprint 1 — progreso
| 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 |
| 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).
### ⚠️ 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`).
## Decisiones de producto tomadas en sesión 2
- **Racha v1 (DA-11):** se pierde completa al fallar un día; congelador pospuesto a v1.1 (recomendación del PRD §16.1).
- **Horarios por hábito:** el subtítulo ("A las 9:00 pm") es copy descriptivo; todo hábito cuenta antes de medianoche.
- **XP:** derivado 100 % de logs (10 XP por hábito hecho, nivel cada 500) — reversible y sin drift, igual que la racha. Sin tabla de recompensas aún (pregunta abierta §16.5).
- **Racha mostrada:** incluye hoy en cuanto se completa todo (feedback inmediato); desmarcar la revierte.
## Historial de commits relevantes
- `6f5bca6` chore(android): scaffold Gradle KTS + version catalog + manifest + recursos base
- `1b5a1f7` feat(theme): paleta PRD §6 + Baloo 2/Nunito + shapes
- `ae8f6b7` feat(onboarding): pantalla de avatar + mascotas Canvas + DataStore + NavHost
- `3f7602e` fix(nav): placeholder de Dashboard con contenido visible (un Surface vacío parecía "pantalla en blanco" en pruebas)
- `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
## Entorno de build (esta Mac)
- **NO hay Android Studio.** JDK: `/opt/homebrew/opt/openjdk@17` (el cask temurin@17 no registró bien; exportar `JAVA_HOME` explícito siempre).
- SDK: `/opt/homebrew/share/android-commandlinetools` (platforms 34+35, build-tools 34, platform-tools). `app/local.properties` ya apunta ahí (no versionado).
- Build: `cd app && JAVA_HOME=/opt/homebrew/opt/openjdk@17 ./gradlew assembleDebug`
- Instalar en dispositivo: mismo comando con `installDebug`. adb en `/opt/homebrew/share/android-commandlinetools/platform-tools/adb`.
- ⚠️ `installDebug` falla intermitente si el teléfono bloquea la pantalla → `adb shell input keyevent KEYCODE_WAKEUP` y reintentar.
- `compileSdk 35` / `targetSdk 34` / `minSdk 26` — androidx.core 1.15 exige compilar contra 35; NO "corregirlo" a 34.
## Decisiones tomadas
- Fuentes por Downloadable Fonts (Google Fonts provider), sin .ttf empaquetados. Ojo: `Font(googleFont=...)` se importa de `androidx.compose.ui.text.googlefonts.Font`.
- Mascotas vectoriales por código en `MascotIllustrations.kt`; estados tired/sleep se agregan con el módulo de batería.
- Avatar "Mi dibujo" usa Photo Picker (`PickVisualMedia`) — cero permisos de almacenamiento. Recorte orgánico (AV-02) pendiente de pulido.
- AV-08 (nombre configurable): ViewModel ya persiste `childName`, pero el onboarding no tiene campo de texto (el prototipo lo trata como prop, default "Lucía").
## 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.
## 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.