Skip to content

fix(timeline): name the active device on the Deep Timeline source row, not a hardcoded "My WHOOP" - #2276

Merged
ryanbr merged 1 commit into
ryanbr:mainfrom
pipiche38:fix/deep-timeline-source-label-active-device
Sep 17, 2026
Merged

ryanbr merged 1 commit into
ryanbr:mainfrom
pipiche38:fix/deep-timeline-source-label-active-device

Conversation

@pipiche38

Copy link
Copy Markdown

What

The Deep Timeline's source row (under the day stepper) was a literal on both platforms — Text("My WHOOP") / R.string.timeline_my_whoop — written for #574 when the strap was the only possible owned source. Repository.timelineSeries reads the active device id first, so with an Oura ring active the chart plotted the ring's series under a WHOOP label (screenshot in #2274).

The row now shows the active device's registry display name via the existing PairedDevice.displayName / displayName(PairedDeviceRow) twins — nickname if set, else "Brand Model" — the same name the Devices screen and the "Make X your active strap" prompts already use. No registry row for the active id (the pre-registry seeded strap) keeps the legacy "My WHOOP".

  • Strand/Data/Repository.swift — activeDeviceDisplayName() beside activeStrapIsWhoop5(), same registry read.
  • Strand/Screens/FullDayChartView.swift — sourceName state, resolved on repo.deviceId; falls back to the existing literal.
  • android/…/ui/FullDayChartScreen.kt — sourceName from the pairedDevices() read the No SpO2 and respiration data captured or shown #623 gate already does; falls back to timeline_my_whoop.

Visible side effect for WHOOP users: a strap with a registry row now reads "WHOOP 4.0" / "WHOOP" / its nickname instead of "My WHOOP" — consistent with the Devices screen, and what a multi-WHOOP setup (#1300, #1304) needs anyway. Say if you'd rather keep "My WHOOP" for the WHOOP brand only; it's a one-line gate.

No new strings ⇒ no locale work; the existing "My WHOOP" translations stay in use for the fallback.

Verification

App-target Swift, so CI doesn't compile it — built locally:

  • macOS Strand — xcodebuild … build BUILD SUCCEEDED
  • iOS NOOPiOS — xcodebuild … -destination 'generic/platform=iOS Simulator' build BUILD SUCCEEDED
  • Android — ./gradlew compileFullDebugKotlin exit 0
  • Tools/doc_comment_lint.py — OK, no new detached doc comments
  • Tools/i18n_audit.py --ci upstream/main — OK, no new gaps
  • Not yet seen on-device (the phone runs integration/oura-full); a screenshot of the corrected row is owed once flashed.

Refs #2274

…, not a hardcoded "My WHOOP" (ryanbr#2274)

The source row under the day stepper was a literal on both platforms —
`Text("My WHOOP")` / `R.string.timeline_my_whoop` — written for ryanbr#574 when the
strap was the only possible owned source. `Repository.timelineSeries` reads
the ACTIVE device id first, so with an Oura ring active the chart plotted the
ring's series under a WHOOP label.

The row now shows the active device's registry display name (nickname, else
"Brand Model") via the existing `PairedDevice.displayName` /
`displayName(PairedDeviceRow)` twins — the same name the Devices screen uses.
No registry row (the pre-registry seeded strap) keeps the legacy "My WHOOP",
so no new strings and no locale work.

Verified: macOS `Strand` build, iOS `NOOPiOS` build, Android
`compileFullDebugKotlin`, `doc_comment_lint.py`, `i18n_audit.py --ci` all green.

Refs ryanbr#2274

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XQZpEYdY41SRMZ48HJdrGD
@pipiche38
pipiche38 marked this pull request as ready for review September 17, 2026 06:26
@pipiche38

Copy link
Copy Markdown
Author

Hardware check on iOS (build integration/oura-full@2fa8e0e0, which carries 679f6fded): with the Oura ring the active device, the Deep Timeline source row now reads the ring's registry name (brand + model, no nickname set) instead of "My WHOOP". The Branch: line of the diagnostics report.txt confirms the build. Nothing else on the screen changed. Refs #2274.

@ryanbr
ryanbr merged commit 2471ee0 into ryanbr:main Sep 17, 2026
5 checks passed
@pipiche38
pipiche38 deleted the fix/deep-timeline-source-label-active-device branch September 23, 2026 06:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants