summaryrefslogtreecommitdiff
path: root/.agent/worklog.md
diff options
context:
space:
mode:
Diffstat (limited to '.agent/worklog.md')
-rw-r--r--.agent/worklog.md19
1 files changed, 16 insertions, 3 deletions
diff --git a/.agent/worklog.md b/.agent/worklog.md
index e17781b..7a4467f 100644
--- a/.agent/worklog.md
+++ b/.agent/worklog.md
@@ -127,10 +127,23 @@ Section 7.3 AIS display — COMPLETE (2026-03-15): AIS integrated into ViewModel
- `MainViewModelTest` — 3 new tests: valid type-1 adds vessel, same MMSI deduped, non-AIS stays empty
- JVM test harness: `/tmp/ais-vm-test-runner/` (3 tests — all GREEN)
+### [APPROVED] TrackRepository (2026-03-25)
+- `android-app/app/src/main/kotlin/org/terst/nav/track/TrackRepository.kt`
+- `test-runner/src/main/kotlin/org/terst/nav/track/TrackRepository.kt`
+- `isRecording` flag; `startTrack()` clears + starts; `stopTrack()`; `addPoint()` guards on isRecording; `getPoints()` returns snapshot
+- 8 tests — all GREEN (`TrackRepositoryTest`)
+
+### [APPROVED] Track ViewModel + Map overlay + Record FAB (2026-03-25)
+- `MainViewModel`: TrackRepository wired in; exposes `isRecording: StateFlow<Boolean>`, `trackPoints: StateFlow<List<TrackPoint>>`; `startTrack()`, `stopTrack()`, `addGpsPoint(lat, lon, sogKnots, cogDeg)`
+- `MapHandler.updateTrackLayer(style, points)`: lazy LineLayer init; red (#E53935) 3dp polyline from List<TrackPoint>
+- `MainActivity`: stores `loadedStyle`; GPS flow feeds `viewModel.addGpsPoint()` (m/s→knots); observes `trackPoints` → `mapHandler.updateTrackLayer()`; observes `isRecording` → FAB icon toggle (ic_track_record / ic_close)
+- `activity_main.xml`: `fab_record_track` FAB anchored top|end of bottom nav
+- `drawable/ic_track_record.xml`: red dot record icon
+
## Next 3 Specific Steps
-1. **CPA/TCPA alarms** — use CpaCalculator in ViewModel to emit alarm when CPA < threshold; add UI indicator in MapFragment
-2. **AISHub periodic polling** — call refreshAisFromInternet() on a timer (e.g. every 60s) when GPS position is known
-3. **AIS TCP full implementation** — replace stub socket reader with NmeaStreamManager integration
+1. **Persist track to GPX/Room** — export recorded track as GPX file or store in Room DB
+2. **Track stats in Log tab** — show elapsed time, distance, avg SOG while recording
+3. **AnchorWatchHandler UI** — wire `AnchorWatchHandler` fully into SafetyFragment (currently stub)
## Scripts Added
- `test-runner/` — standalone Kotlin/JVM Gradle project; runs all 22 GPS/NMEA tests without Android SDK