summaryrefslogtreecommitdiff
path: root/scripts/.claude/ct-wire-anchor-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-anchor-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-anchor-to-map.yaml')
-rw-r--r--scripts/.claude/ct-wire-anchor-to-map.yaml82
1 files changed, 82 insertions, 0 deletions
diff --git a/scripts/.claude/ct-wire-anchor-to-map.yaml b/scripts/.claude/ct-wire-anchor-to-map.yaml
new file mode 100644
index 0000000..9ef8513
--- /dev/null
+++ b/scripts/.claude/ct-wire-anchor-to-map.yaml
@@ -0,0 +1,82 @@
+name: "Wire anchor watch state to map overlay"
+description: "LocationService.anchorWatchState is collected in MainActivity but only updates SafetyFragment text — MapHandler.updateAnchorWatch() is never called, so the anchor point and radius circle never appear on the map"
+agent:
+ model: "sonnet"
+ working_dir: "/workspace/nav"
+ instructions: |
+ Context
+ -------
+ LocationService.anchorWatchState: StateFlow<AnchorWatchState>
+ (android-app/app/src/main/kotlin/org/terst/nav/LocationService.kt, companion, line ~353)
+
+ MapHandler.updateAnchorWatch(state: AnchorWatchState) is fully implemented — it shows
+ an anchor icon and radius circle on the map, or clears them when inactive:
+ (android-app/app/src/main/kotlin/org/terst/nav/ui/MapHandler.kt, line ~139)
+
+ In MainActivity.observeDataSources(), anchorWatchState IS collected, but only
+ to update a text field in SafetyFragment:
+ LocationService.anchorWatchState.collect { state ->
+ safetyFragment.updateAnchorStatus(...)
+ }
+ There is no call to mapHandler?.updateAnchorWatch(state) anywhere.
+
+ AnchorWatchState:
+ (android-app/app/src/main/kotlin/org/terst/nav/AnchorWatchData.kt)
+ data class AnchorWatchState(
+ val isActive: Boolean,
+ val anchorLocation: Location?,
+ val watchCircleRadiusMeters: Double,
+ val setTimeMillis: Long
+ )
+
+ The map style must be loaded before calling updateAnchorWatch — gate on loadedStyleFlow.
+
+ Goal
+ ----
+ In the existing anchorWatchState collector in observeDataSources(), add a call to
+ mapHandler?.updateAnchorWatch(state) alongside the existing safetyFragment update.
+ Gate the map call on the style being loaded.
+
+ Step 1 — Update the existing collector
+ ---------------------------------------
+ In android-app/app/src/main/kotlin/org/terst/nav/MainActivity.kt,
+ find the anchorWatchState collector in observeDataSources():
+
+ lifecycleScope.launch {
+ LocationService.anchorWatchState.collect { state ->
+ safetyFragment.updateAnchorStatus(if (state.isActive) "Active: ${state.watchCircleRadiusMeters}m" else "Inactive")
+ }
+ }
+
+ Replace with:
+
+ lifecycleScope.launch {
+ LocationService.anchorWatchState.collect { state ->
+ safetyFragment.updateAnchorStatus(if (state.isActive) "Active: ${state.watchCircleRadiusMeters}m" else "Inactive")
+ if (loadedStyleFlow.value != null) {
+ mapHandler?.updateAnchorWatch(state)
+ }
+ }
+ }
+
+ No import changes needed.
+
+ 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 anchor watch state to map overlay
+
+ The anchorWatchState collector in observeDataSources() was only updating
+ SafetyFragment text. Now also calls mapHandler.updateAnchorWatch(state)
+ when the map style is loaded, showing the anchor icon and radius circle."
+ git push github main && git push local main
+timeout: "15m"
+tags:
+ - "map"
+ - "anchor"
+ - "wiring"