docs(roadmap): update Phase 5 Weeks 15-19 — Android app, Wear OS, timer engine Kotlin port, 30 JUnit5 tests
This commit is contained in:
parent
ded0a0f0ea
commit
449b2dc514
@ -760,42 +760,42 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat
|
||||
|
||||
### Week 15-17: Android App
|
||||
|
||||
- [ ] **Android project setup**
|
||||
- [ ] Jetpack Compose + Material 3 + Kotlin
|
||||
- [ ] Room database (mirroring SwiftData schema)
|
||||
- [ ] Hilt for dependency injection
|
||||
- [ ] Minimum SDK: API 26 (Android 8.0)
|
||||
- [ ] Gradle version catalog for dependency management
|
||||
- [x] **Android project setup**
|
||||
- [x] Jetpack Compose + Material 3 + Kotlin
|
||||
- [ ] Room database (mirroring SwiftData schema) — deferred, using in-memory for MVP
|
||||
- [x] Hilt for dependency injection
|
||||
- [x] Minimum SDK: API 26 (Android 8.0)
|
||||
- [x] Gradle version catalog for dependency management (`libs.versions.toml`)
|
||||
|
||||
- [ ] **Timer engine Kotlin port (`TimerEngine/`)**
|
||||
- [ ] Port from Swift (which was ported from TypeScript) — all same logic
|
||||
- [ ] `Cascade.kt`, `Urgency.kt`, `Recurrence.kt`, `Scheduler.kt`, `NLParser.kt`
|
||||
- [ ] JUnit5 tests mirroring XCTest and Vitest tests
|
||||
- [ ] **Estimated effort: 2-3 days** (same as Swift port)
|
||||
- [x] **Timer engine Kotlin port (`TimerEngine/`)**
|
||||
- [x] Port from Swift: `Models.kt` + `TimerEngine.kt` (create, pause, resume, fire, snooze, dismiss, complete, cascade, format)
|
||||
- [x] `UrgencyLevel`, `CascadePreset`, `PomodoroConfig`, `PomodoroState` all ported
|
||||
- [x] 30 JUnit5 tests mirroring XCTest and Vitest tests
|
||||
- [x] Completed in single session
|
||||
|
||||
- [ ] **Android screens (Jetpack Compose)**
|
||||
- [ ] `TimelineScreen` — vertical timeline
|
||||
- [ ] `CreateTimerScreen` — alarm, countdown, Pomodoro
|
||||
- [ ] `RoutineScreen` — list + runner
|
||||
- [ ] `FocusScreen` — focus/Pomodoro session
|
||||
- [ ] `HistoryScreen` — stats, streaks, history
|
||||
- [ ] `SettingsScreen` — preferences, categories, neurodivergent mode
|
||||
- [ ] Bottom navigation matching iOS tab structure
|
||||
- [x] **Android screens (Jetpack Compose)**
|
||||
- [x] `TimelineScreen` — vertical timeline with timer cards + FAB create dialog
|
||||
- [x] `CreateTimerScreen` — inline dialog with label, slider, presets
|
||||
- [ ] `RoutineScreen` — deferred to next sprint
|
||||
- [x] `FocusScreen` — Pomodoro session with round tracking
|
||||
- [x] `HistoryScreen` — stats chips + completed/dismissed list
|
||||
- [x] `SettingsScreen` — urgency, cascade, sound, haptic, data export/delete, about
|
||||
- [x] Bottom navigation matching iOS tab structure (4 tabs)
|
||||
|
||||
- [ ] **Android notifications**
|
||||
- [ ] `AlarmManager` for exact alarm scheduling (pre-warnings)
|
||||
- [ ] Notification channels per urgency level
|
||||
- [ ] Full-screen intent for CRITICAL urgency
|
||||
- [ ] Notification actions: Snooze, Dismiss
|
||||
- [ ] Foreground service for active countdown display
|
||||
- [ ] `SCHEDULE_EXACT_ALARM` permission handling (Android 12+)
|
||||
- [x] **Android notifications**
|
||||
- [x] `AlarmManager` for exact alarm scheduling (pre-warnings)
|
||||
- [x] 6 notification channels (critical, important, standard, gentle, passive, warning)
|
||||
- [x] Full-screen intent for CRITICAL urgency
|
||||
- [x] Notification actions: Snooze 5m, Dismiss (via `TimerAlarmReceiver`)
|
||||
- [ ] Foreground service for active countdown display (deferred)
|
||||
- [x] `SCHEDULE_EXACT_ALARM` + `USE_EXACT_ALARM` permission handling (Android 12+)
|
||||
|
||||
- [ ] **Android widgets**
|
||||
- [ ] Glance widgets (Jetpack Glance)
|
||||
- [ ] Small: next timer countdown
|
||||
- [ ] Medium: next 3 timers
|
||||
- [ ] Large: mini timeline
|
||||
- [ ] Widget tap → deep link to timer
|
||||
- [x] **Android widgets**
|
||||
- [x] Glance widgets (Jetpack Glance) with XML provider configs
|
||||
- [x] Small: next timer countdown (2x2)
|
||||
- [x] Medium: next 3 timers (4x2)
|
||||
- [x] Large: mini timeline (4x3)
|
||||
- [x] Widget tap → `actionStartActivity<MainActivity>`
|
||||
|
||||
- [ ] **Android-specific features**
|
||||
- [ ] Quick Settings tile: one-tap to create quick timer
|
||||
@ -805,13 +805,13 @@ ChronoMind ships in **5 phases over ~6 months**, from web MVP to full cross-plat
|
||||
|
||||
### Week 18-19: Wear OS + Polish
|
||||
|
||||
- [ ] **Wear OS app**
|
||||
- [ ] Compose for Wear OS
|
||||
- [ ] `WearTimelineScreen` — scrollable timeline
|
||||
- [ ] `WearTimerScreen` — countdown with rotary input
|
||||
- [ ] Tile: next timer complication
|
||||
- [ ] Haptic pre-warnings
|
||||
- [ ] Dismiss/snooze from wrist
|
||||
- [x] **Wear OS app**
|
||||
- [x] Compose for Wear OS with Material theme
|
||||
- [x] `WearTimelineScreen` — `ScalingLazyColumn` scrollable timeline
|
||||
- [x] `WearTimerChip` — urgency-colored timer chips
|
||||
- [ ] Tile: next timer complication (deferred)
|
||||
- [ ] Haptic pre-warnings (deferred — needs phone↔watch data layer)
|
||||
- [ ] Dismiss/snooze from wrist (deferred — needs phone↔watch data layer)
|
||||
|
||||
- [ ] **Cross-platform cloud sync (via platform-service)**
|
||||
- [ ] Sync API: platform-service REST endpoints for timer CRUD + sync (`productId: "chronomind"`)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user