docs: update Phase 28.1/28.2 status in PLAN.md + android/plan.md

- PLAN.md: Phase 28 header now shows 28.1 ✅, 28.2 ✅, 28.3–28.7 pending
- PLAN.md: added 28.1 gate-pass + 28.2 dashcam browser/download summaries
- android/plan.md: 28.2 rewritten from NOT STARTED to DONE with real
  implementation details (PiApi, DashcamScreen, DashcamViewModel,
  WorkManager DownloadWorker, Coil thumbnails, bottom nav)
This commit is contained in:
Mathieu Moran
2026-08-12 02:29:22 -04:00
parent e19511fc67
commit 7a6c1750c9
2 changed files with 42 additions and 30 deletions
+22 -3
View File
@@ -1965,11 +1965,30 @@ tracked in FEATURES.md.
2. **FEAT-02** — QR / claim-code device pairing flow (medium)
3. **FEAT-04** — Replace SIM868 2G GSM with 4G LTE modem (large)
### Phase 28: Native Android companion app — 🚧 IN PROGRESS (low priority, always last)
### Phase 28: Native Android companion app — 🚧 IN PROGRESS (28.1 ✅, 28.2 ✅, 28.3–28.7 pending)
**Renumbered from former Phase 26 on 2026-08-10 to make room for the road-test bug-fix phase.
Renumbered to Phase 28 on 2026-08-11 to make room for Phase 27 feature additions. Planning
completed 2026-08-11; sub-phase 28.1 scaffold begins. Detailed implementation plan in
[android/plan.md](android/plan.md).**
completed 2026-08-11. Detailed implementation plan in [android/plan.md](android/plan.md).**
**28.1 — Scaffold + networking gate ✅ DONE (2026-08-12)**
- Project created in `android/` (Kotlin + Compose, Gradle KTS, version catalog).
- OkHttp + Retrofit networking layer with `PiApi` and `ServerApi` interfaces.
- `NetworkBinder.kt` discovers WiFi + cellular networks.
- `DualNetworkTestScreen` with simultaneous "Test Both" button.
- **Gate passed on real Pixel (2026-08-12):** Android OS routes `10.42.0.1` through WiFi
and `yaris.ceaf.dev` through cellular automatically — per-socket `Network.bindSocket()`
not needed. Both networks work simultaneously.
**28.2 — Dashcam browser + WiFi download ✅ DONE (2026-08-12)**
- `PiApi` extended: `listVideos`, `getVideoFile` (streaming), `getThumbnail`, `deleteVideo`.
- DTOs: `VideoListResponse`, `VideoFile`, `ConvertProgress`.
- `DashcamScreen`: `LazyColumn` with thumbnails (Coil), file size, date, upload status.
- `DashcamViewModel`: Retrofit-backed video list + download to phone storage + delete local copy.
- Downloads via `WorkManager` foreground service: `DownloadWorker` with notification +
`setProgressAsync()`, `ActiveDownload` state via `LiveData`. Survives screen lock/background.
FGS type `FOREGROUND_SERVICE_TYPE_DATA_SYNC` for Android 14+.
- Bottom nav: Dashcam tab + Test tab.
- **Verified:** video list loads from real Pi over "yaris 911" hotspot on the owner's Pixel.
#### Why native (not web, not PWA)
Revives the phone-relay goal (Phase 11/12) properly this time. The Phase 11 update proved