diff options
| author | Claude <noreply@anthropic.com> | 2026-04-22 08:45:55 +0000 |
|---|---|---|
| committer | Claude <noreply@anthropic.com> | 2026-04-22 08:45:55 +0000 |
| commit | 87f9cb753da3325d13fdbc442d526567e056d6e1 (patch) | |
| tree | fcad4c91a817b3ce623abbaf5b12dab875d08aa3 /.github/workflows | |
| parent | 447c274999b6b412985b640f841ab92d8c23c0f8 (diff) | |
feat: CPA/TCPA collision alerts and live track stats
CPA/TCPA alerts:
- CpaAlert data class with severity (CAUTION/WARNING/DANGER) and label()
- CpaThresholds: 0.5/1.0/2.0 nm, max TCPA 30 min
- MainViewModel.updateCpaAlerts() runs on every GPS update and AIS
sentence; skips stationary contacts; filters TCPA ≤ 0 or > 30 min;
sorts by TCPA ascending
- SafetyFragment: new COLLISION AVOIDANCE card shows live alert list,
color-coded by severity; clears to "No traffic alerts" when safe
- MainActivity: observes cpaAlerts → safetyFragment.updateCpaAlerts()
Track stats:
- TrackStats data class: distanceNm, durationMs, avgSogKnots,
durationFormatted (m:ss / h:mm:ss)
- TrackRepository.haversineNm() + computeStats() using point timestamps
- MainViewModel exposes trackStats StateFlow, cleared on stopTrack()
- activity_main: dark pill overlay bar (tv_track_stats) above map
- MainActivity: shows "● REC 0.00nm m:ss x.xkt avg" while recording
Tests: 95 total, all GREEN (+16 new — 9 TrackStats, 7 CpaAlert)
https://claude.ai/code/session_011h2dXbgXg3PesQMmQUNTCW
Diffstat (limited to '.github/workflows')
0 files changed, 0 insertions, 0 deletions
