summaryrefslogtreecommitdiff
path: root/scripts/.claude/ct-wire-tidal-to-map.yaml
diff options
context:
space:
mode:
authorClaude <noreply@anthropic.com>2026-04-09 09:39:20 +0000
committerClaude <noreply@anthropic.com>2026-04-09 09:39:20 +0000
commite109271f563327e461191c7c2988243c75cd58ab (patch)
treee8401f41bb7f96421175d242bee77245eb68c738 /scripts/.claude/ct-wire-tidal-to-map.yaml
parent3cddcd3b0a8719da5e828734a1d3054cef803235 (diff)
parent5ee2dd8925afa858f466ae63db3f7df5c7516953 (diff)
merge: reconcile master particle-wind work with origin/main redesign
Merged divergent branches (common ancestor a9d87b6). Took origin/main as base (layer manager, recenter, quit button, GPX tracks, marine conditions, dark theme, user position layer, active/past track layers) and layered in particle wind simulation work: - MapHandler: added setupWindLayer, updateWindLayer, updateWindGridLayer; kept their user-pos layer, follow/recenter state, active+past tracks - WeatherRepository: kept their fetchCurrentConditions, added fetchWindGrid - MainViewModel: kept their track/marine/summary changes, added windGrid StateFlow, loadWindGrid, buildGrid - MainActivity: kept their full UI (layer picker, quit, recenter, fade animations), added particleWindView wiring, weatherLoaded guard, windArrow/windGrid observers - activity_main.xml: took their LinearLayout redesign, added ParticleWindView overlay inside ConstraintLayout https://claude.ai/code/session_01HXPjBsogsJVRwCiekDGkJX
Diffstat (limited to 'scripts/.claude/ct-wire-tidal-to-map.yaml')
-rw-r--r--scripts/.claude/ct-wire-tidal-to-map.yaml75
1 files changed, 75 insertions, 0 deletions
diff --git a/scripts/.claude/ct-wire-tidal-to-map.yaml b/scripts/.claude/ct-wire-tidal-to-map.yaml
new file mode 100644
index 0000000..b5a1923
--- /dev/null
+++ b/scripts/.claude/ct-wire-tidal-to-map.yaml
@@ -0,0 +1,75 @@
+name: "Wire tidal current state to map overlay"
+description: "LocationService.tidalCurrentState is emitted but never collected in MainActivity — MapHandler.updateTidalCurrents() is never called, so the tidal arrow layer is always empty"
+agent:
+ model: "sonnet"
+ working_dir: "/workspace/nav"
+ instructions: |
+ Context
+ -------
+ LocationService exposes a public StateFlow:
+ LocationService.tidalCurrentState: StateFlow<TidalCurrentState>
+ (android-app/app/src/main/kotlin/org/terst/nav/LocationService.kt, companion object, line ~354)
+
+ MapHandler has a fully-implemented method:
+ fun updateTidalCurrents(state: TidalCurrentState)
+ (android-app/app/src/main/kotlin/org/terst/nav/ui/MapHandler.kt, line ~155)
+
+ MainActivity.observeDataSources()
+ (android-app/app/src/main/kotlin/org/terst/nav/MainActivity.kt)
+ never subscribes to tidalCurrentState, so updateTidalCurrents() is never called.
+ The tidal arrow overlay on the map is always empty regardless of what data arrives.
+
+ The map style must be loaded before calling updateTidalCurrents — use loadedStyleFlow
+ as a gate, the same way updateTrackLayer is gated (see the combine() pattern already
+ in observeDataSources for track points).
+
+ Goal
+ ----
+ Subscribe to LocationService.tidalCurrentState in MainActivity.observeDataSources()
+ and forward each emission to mapHandler?.updateTidalCurrents(state).
+
+ The subscription should be gated on loadedStyleFlow being non-null (style loaded),
+ matching the pattern used for track points.
+
+ Step 1 — Add the observer
+ -------------------------
+ In android-app/app/src/main/kotlin/org/terst/nav/MainActivity.kt,
+ inside observeDataSources(), add after the existing collectors:
+
+ lifecycleScope.launch {
+ loadedStyleFlow.filterNotNull().collect {
+ LocationService.tidalCurrentState.collect { state ->
+ mapHandler?.updateTidalCurrents(state)
+ }
+ }
+ }
+
+ Or equivalently using combine(), consistent with the track pattern:
+
+ lifecycleScope.launch {
+ loadedStyleFlow.filterNotNull()
+ .combine(LocationService.tidalCurrentState) { _, state -> state }
+ .collect { state -> mapHandler?.updateTidalCurrents(state) }
+ }
+
+ No import changes needed — LocationService is already imported.
+
+ Step 2 — Build
+ --------------
+ cd android-app && ANDROID_HOME=/opt/android-sdk ./gradlew assembleDebug 2>&1 | tail -5
+ Confirm BUILD SUCCESSFUL.
+
+ Step 3 — Commit and push
+ ------------------------
+ git add android-app/app/src/main/kotlin/org/terst/nav/MainActivity.kt
+ git commit -m "fix(map): wire tidal current state to map overlay in MainActivity
+
+ LocationService.tidalCurrentState was emitted but never collected.
+ Subscribe in observeDataSources() gated on style load, forwarding
+ each TidalCurrentState to mapHandler.updateTidalCurrents()."
+ git push github main && git push local main
+timeout: "15m"
+tags:
+ - "map"
+ - "tidal"
+ - "wiring"