<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nav.git/android-app/app/src/main/res/layout, 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-04-07T06:42:51+00:00</updated>
<entry>
<title>fix(track): fix silent GPX save failure + add stop friction + quit button</title>
<updated>2026-04-07T06:42:51+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-04-07T06:42:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/nav.git/commit/?id=5ee2dd8925afa858f466ae63db3f7df5c7516953'/>
<id>urn:sha1:5ee2dd8925afa858f466ae63db3f7df5c7516953</id>
<content type='text'>
TrackStorage: openOutputStream null returned true (file never written).
Added IS_PENDING flag to fix Android 10-11 race where insert succeeds
but file isn't physically created yet. Added storage-mounted guard.
TrackRepository now logs save failures.

Stop tracking now requires a long press (haptic feedback) — prevents
accidental mid-sail stops from a single tap.

Quit button (top-right, tonal X) stops LocationService and calls
finishAffinity(). Prompts if a track is in progress.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(map): layer manager — satellite/charts/hybrid + wind toggle, long-press picker</title>
<updated>2026-04-06T16:22:42+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-04-06T16:22:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/nav.git/commit/?id=676314e3b5ad2445e64120c691fd1c2671076ebb'/>
<id>urn:sha1:676314e3b5ad2445e64120c691fd1c2671076ebb</id>
<content type='text'>
MapLayerManager: all raster sources registered at style-build time,
visibility toggled on demand. Persists base preset and wind state to
SharedPreferences. Sources: Google satellite, NOAA RNC charts
(tileservice.charts.noaa.gov), OWM wind, OpenSeaMap seamarks.

LayerPickerSheet: bottom sheet with chip group (Satellite/Charts/Hybrid)
and wind toggle, launched from map long-press.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(tracks): show summary sheet on track stop; 2-min minimum</title>
<updated>2026-04-06T15:38:31+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-04-06T15:38:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/nav.git/commit/?id=59d31d8d6198d5a8c2c4ba17cf9ad1b42a7e2018'/>
<id>urn:sha1:59d31d8d6198d5a8c2c4ba17cf9ad1b42a7e2018</id>
<content type='text'>
TrackSummarySheet: bottom sheet showing distance (nm), duration,
max/avg speed, avg wind and waves (when available, waves in ft).
Only shown for tracks ≥ 2 minutes — shorter tracks are discarded silently.

MainViewModel: exposes trackSummary SharedFlow (replay=0) and trackStartMs.
MainActivity: observes flow, shows sheet after stopTrack completes.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(ui): restructure instrument sheet layout — inline arrows, WaveView, ocean forecast section</title>
<updated>2026-04-06T05:29:18+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-04-06T05:29:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/nav.git/commit/?id=2cce533490baa4fe0d14f8541be1375e8069b164'/>
<id>urn:sha1:2cce533490baa4fe0d14f8541be1375e8069b164</id>
<content type='text'>
Full layout rewrite: 3×2 GridLayout instrument grid with inline
DirectionArrowView for AWS/TWS/HDG/COG, depth+baro row, animated
WaveView divider, and ocean-blue forecast section for Current/Waves/Swell.

Stubs valueCurrDir/valueWaveDir as nullable in InstrumentHandler
to compile; full handler rewrite follows in Task 6.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(ui): remove report section from instrument sheet, fix touch-through</title>
<updated>2026-04-05T07:30:27+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-04-05T07:30:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/nav.git/commit/?id=2d86c0bcbc6c0f499406ef817b4bf54195756b45'/>
<id>urn:sha1:2d86c0bcbc6c0f499406ef817b4bf54195756b45</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(ui): surface trip planning and reports in instrument sheet</title>
<updated>2026-04-04T07:10:41+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-04-04T07:10:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/nav.git/commit/?id=9f01ddfba17dda7fb386e83f007c671fec6d5b8e'/>
<id>urn:sha1:9f01ddfba17dda7fb386e83f007c671fec6d5b8e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>refactor(ui): stabilize layout by moving BottomNav outside CoordinatorLayout</title>
<updated>2026-04-04T04:53:50+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-04-04T04:53:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/nav.git/commit/?id=a8d851e5bfb78b065f10d457bf3ce8f2c771bb4c'/>
<id>urn:sha1:a8d851e5bfb78b065f10d457bf3ce8f2c771bb4c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(tripreport): add pre-trip planning and past track visualization</title>
<updated>2026-04-04T02:38:51+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-04-04T02:38:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/nav.git/commit/?id=91645cc9029798d78f6d5630ff9ec121e391ec49'/>
<id>urn:sha1:91645cc9029798d78f6d5630ff9ec121e391ec49</id>
<content type='text'>
- Fix compilation errors (missing imports for PropertyFactory and MaterialButton)
- Implement Pre-Trip Report with weather summary, boat profile, and sail suggestions
- Differentiate between active track (solid red) and past tracks (dotted red) on map
- Add navigation to Pre-Trip Report from Safety Dashboard
- Robustify track storage to preserve multiple tracks in session

Co-Authored-By: Gemini CLI &lt;gemini-cli@google.com&gt;
</content>
</entry>
<entry>
<title>feat(tripreport): add AI trip narrative generator with multiple styles</title>
<updated>2026-04-04T02:31:54+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-04-04T02:31:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/nav.git/commit/?id=e182619ce43bddea8dbee73592e3318fa9fbfc71'/>
<id>urn:sha1:e182619ce43bddea8dbee73592e3318fa9fbfc71</id>
<content type='text'>
- Consolidate track data, weather, and log entries into a TripSummary
- Implement TripReportGenerator with Professional, Adventurous, Journal, and Pirate styles
- Add TripReportFragment and ViewModel for UI interaction
- Share TrackRepository and LogbookRepository via NavApplication singleton
- Fix compilation error in MainViewModel rich metadata recording

Co-Authored-By: Gemini CLI &lt;gemini-cli@google.com&gt;
</content>
</entry>
<entry>
<title>feat(instruments): add forecast wind, wave, swell and current from Open-Meteo</title>
<updated>2026-04-03T07:38:22+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-04-03T07:38:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/nav.git/commit/?id=9417a7c6b08da362ad97e85973b7570e05d4f0b5'/>
<id>urn:sha1:9417a7c6b08da362ad97e85973b7570e05d4f0b5</id>
<content type='text'>
- Add swell params to MarineApiService request
- Add swell fields to MarineHourly model
- Add MarineConditions snapshot model
- Add WeatherRepository.fetchCurrentConditions() (first forecast hour)
- Add MainViewModel.loadConditions() + marineConditions StateFlow
- Add Forecast section to instrument sheet: Curr / Wave / Swell
- Populate TWS from forecast wind speed on first GPS fix
- Trigger loadConditions() once on first GPS position received

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
