Car status dashboard: POTA-to-validate, ROTA miles, and session-fallback rows (pane) - #731
Open
patrickrb wants to merge 1 commit into
Open
Car status dashboard: POTA-to-validate, ROTA miles, and session-fallback rows (pane)#731patrickrb wants to merge 1 commit into
patrickrb wants to merge 1 commit into
Conversation
…s on the pane Ports the CarPlay/Android Auto status-dashboard design onto dev's pane path (the surface/map variant was removed in #729). The activation block now shows, via pure helpers in CarQsoStatus.kt: - POTA row with a "N more to validate the activation" / "Activation validated" secondary (POTA_ACTIVATION_TARGET = 10). - ROTA row with a "X.X mi driven this activation" secondary; car_rota_line is split to a 2-arg title + car_rota_miles secondary. - Session-fallback row ("Session · N QSOs" / "Last logged JA1XYZ · 20m · 41 min") when neither POTA nor ROTA is active — the design's "activation rows drop out, session stats take the slot." - Band row gains a "N decodes last cycle" secondary, read from currentMessages (per-cycle overlay, so it drops to 0 on a silent slot) rather than the cross-cycle mutableFt8MessageList. Activation rows keep #729's row-priority selection, so on a tight host they replace the band line instead of being dropped. buildCarActivationRows, potaValidateSpec, buildCarSessionRow, formatMiles, minutesAgo, and carDecodesSecondary are unit-tested in CarDashboardTest (17 cases). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## dev #731 +/- ##
============================================
+ Coverage 36.19% 36.23% +0.03%
Complexity 290 290
============================================
Files 244 244
Lines 30156 30202 +46
Branches 3954 3968 +14
============================================
+ Hits 10916 10943 +27
- Misses 18889 18907 +18
- Partials 351 352 +1
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Implements the CarPlay/Android Auto status-dashboard design (Claude Design project) on top of the merged
dev. This is the pane-path rework of #730: #729 removed the Play-rejected map/surface variant that #730 was originally built on, so this ports only the host-agnostic dashboard rows onto the read-onlyPaneTemplate.Beside the existing headline / sequence / band rows, the activation block now shows:
POTA K-1234 · N QSOswith aN more to validate the activation→Activation validatedsecondary (POTA's 10-QSO program rule;POTA_ACTIVATION_TARGET = 10).ROTA <trip> · N QSOswith aX.X mi driven this activationsecondary.car_rota_lineis split from Restore Android Auto (Play-approved IOT shape) + POTA/ROTA status rows #729's 3-arg inline form to a 2-arg title + newcar_rota_milessecondary.Session · N QSOs/Last logged JA1XYZ · 20m · 41 min, shown only when neither POTA nor ROTA is active (the design's "activation rows drop out, session stats take the slot").N decodes last cycle.How
Decision/format logic lives in pure, Android-free helpers in
CarQsoStatus.kt(buildCarActivationRows,potaValidateSpec,buildCarSessionRow,formatMiles,minutesAgo,carDecodesSecondary), unit-tested directly.QsoStatusScreenmaps the app singletons (PotaSessionManager,RotaTripManager,GeneralVariables.QSL_Callsign_list_today,FT8TransmitSignal.mutableQsoCompletedAt) into those helpers.CAR_ROW_ACTIVATION), so on a tight host they replace the band line rather than being silently dropped.vm.currentMessages(the per-cycle label overlay, cleared on a silent slot) instead ofmutableFt8MessageList, which accumulates across cycles whenclearDecodesEveryCycleis off (the default) — so "N decodes last cycle" is per-cycle and drops to 0 correctly. (This was the Copilot finding on Car status dashboard: ROTA + POTA-to-validate + session-fallback rows #730, carried over.)buildCarRotaLineand its tests are replaced by the ROTA row insidebuildCarActivationRows.Notes / judgment calls
QSL_Callsign_list_today) — the only cheap in-memory count; "last logged" is best-effort from the last partner + completion timestamp. Both documented at the call site.Testing
CarDashboardTest.kt— 17 new tests; fulltestDebugUnitTestgreen (incl. the Robolectric manifest-wiring test).assembleDebugpasses (validates the new string resources + manifest merge).Supersedes
Replaces #730 (which was built on the surface overlay #729 deleted). #730 can be closed once this lands.
🤖 Generated with Claude Code