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, 19 insertions, 0 deletions
diff --git a/.agent/worklog.md b/.agent/worklog.md
index deefddb..55fd5a7 100644
--- a/.agent/worklog.md
+++ b/.agent/worklog.md
@@ -104,6 +104,25 @@ Section 7.4 Trip Reporting & Enhanced Tracks — COMPLETE (2026-04-04)
- `activity_main.xml`: `fab_record_track` FAB anchored top|end of bottom nav
- `drawable/ic_track_record.xml`: red dot record icon
+### [APPROVED] Vessel Registry + Crew Management (2026-04-22)
+- `android-app/app/src/main/kotlin/org/terst/nav/vessel/Vessel.kt` — data class: name, MMSI, callsign, flag, homePort, hullType, LOA, beam, draft, displacement, engineHp, notes, isOwnVessel
+- `android-app/app/src/main/kotlin/org/terst/nav/vessel/CrewMember.kt` — data class: name, role (SKIPPER/FIRST_MATE/WATCH_CAPTAIN/CREW/GUEST), emergencyContact, emergencyPhone, certifications, notes
+- `android-app/app/src/main/kotlin/org/terst/nav/vessel/VesselRepository.kt` — in-memory CRUD for vessels and crew; addVessel, updateVessel, removeVessel, getOwnVessel, addCrewMember, updateCrewMember, removeCrewMember, getSkipper, getCrewByRole
+- `android-app/app/src/main/res/layout/fragment_vessel_registry.xml` — NestedScrollView with own vessel card, crew list, and known vessels list; + ADD buttons for crew and fleet
+- `android-app/app/src/main/kotlin/org/terst/nav/ui/vessel/VesselRegistryFragment.kt` — fragment with AlertDialog editors for vessels and crew; long-press to delete
+- `android-app/app/src/main/res/menu/bottom_nav_menu.xml` — added `nav_vessel` 5th tab with `ic_vessel` icon
+- `android-app/app/src/main/res/drawable/ic_vessel.xml` — sailboat silhouette vector icon
+- `MainViewModel.kt` — added `vesselRepository` property (public, for fragment access)
+- `MainActivity.kt` — `R.id.nav_vessel` case loads `VesselRegistryFragment`
+- Mirror classes in `test-runner/src/main/kotlin/org/terst/nav/vessel/`
+- 18 tests in `test-runner/src/test/kotlin/org/terst/nav/vessel/VesselRepositoryTest.kt` — all GREEN
+
+### [APPROVED] Thermal Alarm (2026-04-22)
+- `android-app/app/src/main/kotlin/org/terst/nav/thermal/ThermalMonitor.kt` — `thermalFlow(context)` as Kotlin Flow using `Intent.ACTION_BATTERY_CHANGED` for battery temperature; `PowerManager.addThermalStatusListener` on API 29+ for supplemental state; emits distinct `ThermalReading` only on state change
+- `ThermalState` enum: OK (<40°C), WARM (40–45°C), HOT (45–50°C), CRITICAL (>50°C)
+- `MainViewModel.kt` — `thermalState: StateFlow<ThermalState>`, `thermalReading: StateFlow<ThermalReading?>`, `onThermalReading()` entry point
+- `MainActivity.kt` — `startThermalMonitoring()` called from `observeDataSources()`; HOT triggers Toast + alarm sound (reuses `R.raw.mob_alarm`); CRITICAL triggers urgent Toast + alarm; OK/WARM stops alarm; alarm released in `onDestroy()`
+
## Next 3 Specific Steps
1. **Unit Tests for Trip Generators** — Add JVM tests in `test-runner` for `TripReportGenerator` and `PreTripReportGenerator`.
2. **Persist track to Room** — Replace in-memory `pastTracks` with a Room database for persistence across sessions.