<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nav.git/android-app/app/src/main/res/layout/layout_track_detail_sheet.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-26T05:13:48+00:00</updated>
<entry>
<title>Add notes to finished tracks, single Nav voice, fix speed coloring</title>
<updated>2026-05-26T05:13:48+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-05-26T05:13:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/nav.git/commit/?id=e34df09b96f4ded3c25c5a14a0332a874205b64a'/>
<id>urn:sha1:e34df09b96f4ded3c25c5a14a0332a874205b64a</id>
<content type='text'>
- TrackDetailSheet: + Add note button opens a dialog with text, camera,
  and gallery. Entry is saved with timestampMs=track.endMs so it lands
  inside the track's time window and appears automatically in the event
  log. logEventAdapter.update() refreshes the list after save.

- TripReportGenerator: removed NarrativeStyle enum and 4-style branch.
  generateNarrative() now emits a concise PASSAGE header (date, time
  range, duration), stats line (nm / avg kt / max kt), optional conditions
  (seas, temp), and a timestamped deck log. Fragment and layout updated to
  remove the ChipGroup style picker.

- TrackColors: replaced Expression.get("color") — which silently fails
  for lineColor on LineLayer in MapLibre Android 11.x — with
  Expression.step(Expression.get("speed"), ...) that maps the numeric
  "speed" property directly to color literals. "color" string property
  removed from speedSegments() features.

https://claude.ai/code/session_01YUbuZNDAoLea4cf9UGQ9qn
</content>
</entry>
<entry>
<title>Optimize nav location tracking: embedded track detail map, tack detection fixes, dim past tracks</title>
<updated>2026-05-20T21:20:35+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-05-20T21:20:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/nav.git/commit/?id=6c8ca71f3acc0686bbd351c53e4ea10a0e6e3c2d'/>
<id>urn:sha1:6c8ca71f3acc0686bbd351c53e4ea10a0e6e3c2d</id>
<content type='text'>
* Fix tack detection and convert track detail to embedded-map fragment

TackDetector: revert STABILITY_MAX to 30° (was tightened too far to 20°),
add 120s start-skip to filter GPS cold-start false positives, keep 45s
minimum gap between tacks.

TrackDetailSheet: convert from BottomSheetDialogFragment to a regular
Fragment with an embedded MapLibreMap in the top half. This fixes the
map centering issue (the embedded map is always sized to its own frame),
eliminates accidental dismissal when dragging the map, and makes the
view self-contained — back navigation restores the track list via the
fragment back stack. Tack markers rendered on the embedded map; tapping
a log event pans the embedded map directly.

https://claude.ai/code/session_01YUbuZNDAoLea4cf9UGQ9qn

* Fix XML conflict markers left in layout_track_detail_sheet.xml

https://claude.ai/code/session_01YUbuZNDAoLea4cf9UGQ9qn

* Fix Kotlin conflict markers left in TrackDetailSheet.kt

https://claude.ai/code/session_01YUbuZNDAoLea4cf9UGQ9qn

* Fix compile errors on feature branch

- SavedTracksFragment/VoiceLogFragment: remove references to SafState,
  safState, launchSafPicker, layout_empty, btn_setup_storage, and
  layout_log_entry — none of these exist on this branch
- TrackStorage: add missing onCancellation lambda to cont.resume()
- build.gradle: enable buildConfig generation (fixes unresolved BuildConfig)

https://claude.ai/code/session_01YUbuZNDAoLea4cf9UGQ9qn

* Dim past tracks: dark navy 0.12 opacity, solid lines

https://claude.ai/code/session_01YUbuZNDAoLea4cf9UGQ9qn

---------

Co-authored-by: Claude &lt;noreply@anthropic.com&gt;</content>
</entry>
<entry>
<title>Fix Recenter bleed-through; drop noisy speed events; track detail as bottom sheet</title>
<updated>2026-05-20T09:52:18+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-05-20T09:52:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/nav.git/commit/?id=cdb3fa7c6167e108f46b4d411655f78a22e3bebe'/>
<id>urn:sha1:cdb3fa7c6167e108f46b4d411655f78a22e3bebe</id>
<content type='text'>
Recenter button was reappearing over overlays because the isFollowing
flow kept calling fadeIn(fabRecenter) even when an overlay was visible.
Added overlayShowing flag — the flow skips FAB updates while an overlay
is shown. hideOverlays() now correctly restores fabRecenter visibility
based on the actual following state instead of just resetting alpha.

Speed up/Slow down events fired on every 1.5 kt GPS jitter, flooding
the log with noise. Removed the detection loop entirely — no reliable
motor on/off signal is available from GPS alone.

TrackDetailSheet converted from a full-screen Fragment to a
BottomSheetDialogFragment: opens at half-screen height so the track
route is visible on the map behind it, draggable to full height, 20%
background dim. SavedTracksFragment now calls hideOverlays() then
sheet.show() instead of fragment-replacing the overlay container.

https://claude.ai/code/session_01YUbuZNDAoLea4cf9UGQ9qn
</content>
</entry>
<entry>
<title>fix: saved tracks browser, GPX import persistence</title>
<updated>2026-05-15T21:25:54+00:00</updated>
<author>
<name>Claude</name>
<email>noreply@anthropic.com</email>
</author>
<published>2026-05-15T20:32:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/nav.git/commit/?id=baa07bc5c062d4f358e8c655260bf32810184634'/>
<id>urn:sha1:baa07bc5c062d4f358e8c655260bf32810184634</id>
<content type='text'>
Saved tracks browser:
- TrackDetailSheet converted from BottomSheetDialogFragment to Fragment so
  it fills the overlay instead of floating over the map
- Adapter tap pushes detail fragment onto the back stack; back button returns
  to the list naturally via popBackStack()
- SavedTracksFragment back button calls hideOverlays() (made internal) to
  close the overlay and return to the map
- Layout updated to full-screen: header with back button, RecyclerView fills
  remaining space via layout_weight instead of fixed 300dp

GPX import persistence:
- TrackRepository.importTrack() saves parsed points to Documents/Nav/ via
  TrackStorage (URI is persisted to SharedPreferences) and adds to
  in-memory list
- MainViewModel.addImportedTrack() now calls importTrack() so files opened
  via the GPX handler load on future launches

https://claude.ai/code/session_01DNjbYxiC1cco83dArNGW3G
</content>
</entry>
<entry>
<title>Add saved tracks browser, tack detection, and map zoom-to-bounds</title>
<updated>2026-05-12T23:13:55+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-05-12T23:13:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/nav.git/commit/?id=f881a1f91f4e9f832ab987fce2b5220e100cee68'/>
<id>urn:sha1:f881a1f91f4e9f832ab987fce2b5220e100cee68</id>
<content type='text'>
- TackDetector: sliding-window COG algorithm (60-140deg delta = tack/jibe)
  with stability check to prevent mixed-window false positives; 13 tests green
- TackEvent, SavedTrack: new models wrapping points + summary + detected tacks
- TrackRepository.getSavedTracks(): returns List&lt;SavedTrack&gt; with lazy load
- MapHandler: zoomToTrackBounds (LatLngBounds fit with padding),
  panToPoint (log step-through), updateTackLayer (yellow circle markers)
- MainViewModel: savedTracks + selectedTrack StateFlows, panToPosition SharedFlow
- SavedTracksFragment: RecyclerView list with date/distance/duration/tack count
- TrackDetailSheet: bottom sheet with stats + event log (tacks, speed changes,
  start/end); tapping an entry pans the map to that position
- MainActivity: zoom map on track complete, wire Saved Tracks button in
  instrument sheet, observe panToPosition to drive map, show tack markers
  when a saved track is selected

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