<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nav.git/android-app/app/src/main/res/xml, branch main</title>
<subtitle>nav — android navigation app
</subtitle>
<id>https://git.terst.org/nav.git/atom?h=main</id>
<link rel='self' href='https://git.terst.org/nav.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.terst.org/nav.git/'/>
<updated>2026-05-26T20:35:38+00:00</updated>
<entry>
<title>Persist logbook JSON and photos in SAF so they survive reinstall</title>
<updated>2026-05-26T20:35:38+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-05-26T20:35:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/nav.git/commit/?id=0db33911ca4841c658b22912d3ecf32477e5e827'/>
<id>urn:sha1:0db33911ca4841c658b22912d3ecf32477e5e827</id>
<content type='text'>
- 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
</content>
</entry>
<entry>
<title>Persist log entries and photos; stamp with GPS location</title>
<updated>2026-05-25T18:12:11+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-05-25T18:12:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/nav.git/commit/?id=02776054778c3cbc8aefc43376b105becfec2b86'/>
<id>urn:sha1:02776054778c3cbc8aefc43376b105becfec2b86</id>
<content type='text'>
- 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
</content>
</entry>
</feed>
