- DashcamScreen: LazyColumn of imported Pi videos with thumbnails (Coil),
file size, date, upload status, converting progress
- DashcamViewModel: Retrofit-backed video list + download to phone storage
+ delete local copy
- PiApi extended: listVideos, getVideoFile (streaming), getThumbnail, deleteVideo
- DTOs: VideoListResponse, VideoFile, ConvertProgress
- Bottom nav: Dashcam tab + Test tab
- Verified: video list loads from real Pi over yaris 911 hotspot
- Simplified to single OkHttpClient — Android OS routes correctly:
10.42.0.1 → WiFi (Pi hotspot subnet)
yaris.ceaf.dev → cellular (WiFi has no internet)
- Removed NetworkBinder-based per-socket binding (EPERM on Pixel,
OS-routed approach works better for this use case)
- Verified on real Pixel: Pi GPS + server health both return 200
simultaneously while connected to "yaris 911" hotspot
- NetworkBinder functions were suspend but never actually suspended
(ConnectivityManager calls are synchronous) — made them plain fun
- MainActivity.discoverNetworks() now calls them directly, no coroutine
- Wrapped in try/catch so network discovery failure doesn't crash Activity
- Removed unused awaitNetwork() extension + coroutine imports