| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2026-05-26 | Persist logbook JSON and photos in SAF so they survive reinstall | Claude | |
| - LogbookStorage: reads/writes nav_logbook.json and photos into the SAF logbook/ subfolder, using the same saf_tree_uri pref as TrackStorage. Automatically migrates legacy getExternalFilesDir JSON on first SAF write. Falls back to external files when SAF is not yet configured. - LogbookRepository: expose cameraDir (cache-backed temp for FileProvider), copyPhoto(Uri), and importPhoto(File) instead of the old photoDir. - VoiceLogFragment / TrackDetailSheet: camera writes temp to cacheDir then imports to SAF after capture; gallery delegates to copyPhoto(); photo display and decodeThumbnail handle both content:// URIs and file paths. - file_paths.xml: add cache-path entry so FileProvider can serve camera temp files from cacheDir/nav_camera/. https://claude.ai/code/session_01KXYBuAHZkvv63DeUG6XaZD | |||
| 2026-05-25 | Persist log entries and photos; stamp with GPS location | Claude | |
| - LogbookStorage: Moshi-backed JSON persistence to getExternalFilesDir, photos saved to Pictures/Nav/ instead of cache - LogbookRepository: file-backed replacement for in-memory store, loads saved entries on init so they survive app restarts - VoiceLogViewModel: expose entries StateFlow, accept lat/lon in save() - VoiceLogFragment: switch camera to TakePicture(Uri) via FileProvider for full-res photos; gallery copies content URI to persistent storage; passes current GPS position to save(); shows scrollable entries list - MainViewModel: expose currentPosition StateFlow updated on each GPS fix - AndroidManifest: add FileProvider for Pictures/Nav/ directory - TripReportViewModel: updated to use LogbookRepository https://claude.ai/code/session_01YUbuZNDAoLea4cf9UGQ9qn | |||
