Repository navigation
Label skin temp: absolute °C vs Δ°C baseline deviation (#622) — supersedes #1221 - #1224
Merged
Merged
Conversation
Live BLE stores ±°C vs personal baseline in skinTempDevC while deep timeline charts absolute wrist °C — so Today/Health showing bare "−0.1°" looked like a broken thermometer next to a 34°C chart. Add SkinTempDisplay (Swift + Kotlin twin): kind, Δ°C unit, signed number format. Wire Health vitals, Health detail, Today skin card, Metric/Compare formatters so absolute reads "34.2 °C" and deviation reads "−0.1 Δ°C" with "vs baseline" provenance. Empty caption notes the ~4-night calibration path. No score/math change; no BLE change.
7 tasks done
ryanbr
added a commit
that referenced
this pull request
Aug 11, 2026
#1228) #1224 (#622) deliberately changed how computed skin temp presents — a deviation now renders as a signed baseline delta ("+1.1 Δ°F" / "-7.6 Δ°F" / "+0.6 Δ°C") and its provenance caption reads "vs baseline" — but the two app-target tests that pin those strings were never updated. Because app-build.yml is disabled, no default CI runs StrandTests, so main went red silently at that merge. - UnitFormatterTests.testSkinTempMetricPicksDeltaVsAbsoluteByValue: expect the signed Δ deviation strings; absolute readings still format plain. - VitalSourceResolutionTests.testComputedSkinTemperatureShowsComputedCaption: expect the "vs baseline" caption. - VitalSignsSummary: refresh the stale doc comment ("Overnight computed" -> "vs baseline") to match the shipped label. Test/comment-only; matches behavior already on main.
simoncad7
pushed a commit
to simoncad7/noop
that referenced
this pull request
Aug 17, 2026
…yanbr#1224) Label the bimodal skin-temp field honestly (absolute °C vs signed Δ°C deviation) via a SkinTempDisplay helper (Swift + Kotlin twin). Presentation-only; no score/decode change. Original work by @dnesdan; rebase onto main + reconcile with ryanbr#1223 + localize the new strings by ryanbr. Co-authored-by: Dan Urbanek <abc@dnesdan.cz>
simoncad7
pushed a commit
to simoncad7/noop
that referenced
this pull request
Aug 17, 2026
…relabel (ryanbr#1228) ryanbr#1224 (ryanbr#622) deliberately changed how computed skin temp presents — a deviation now renders as a signed baseline delta ("+1.1 Δ°F" / "-7.6 Δ°F" / "+0.6 Δ°C") and its provenance caption reads "vs baseline" — but the two app-target tests that pin those strings were never updated. Because app-build.yml is disabled, no default CI runs StrandTests, so main went red silently at that merge. - UnitFormatterTests.testSkinTempMetricPicksDeltaVsAbsoluteByValue: expect the signed Δ deviation strings; absolute readings still format plain. - VitalSourceResolutionTests.testComputedSkinTemperatureShowsComputedCaption: expect the "vs baseline" caption. - VitalSignsSummary: refresh the stale doc comment ("Overnight computed" -> "vs baseline") to match the shipped label. Test/comment-only; matches behavior already on main.
5 tasks done
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.
Based on #1221 by @dnesdan, rebased onto current
main+ reconciled with the just-merged #1223 + localized. Supersedes #1221 (which wentCONFLICTINGafter #1223 landed). Fixes #622.What (from #1221)
Live skin temp on Today/Health showed a bare
−0.1°while the deep timeline showed~34°C, so users thought the homepage was broken. Both are correct (absolute wrist °C vs signed deviation from personal baseline, both stored inskinTempDevC); the bug was presentation. Adds aSkinTempDisplayhelper (Swift + Kotlin twin) that labels the scale honestly:v ≥ 20, via the existingVitalBands.isAbsoluteSkinTempcontract) vs deviation.°C/°FvsΔ°C/Δ°F; numbers unsigned-absolute vs always-signed-deviation. (Correct °F handling: a deviation scales by 9/5 with no +32 offset.)Skin TempvsSkin Temp Δ,vs baselinecaption on live deviation, honest empty-state.My reconcile + fix-up
mainand reconciled with Drop calibrated SpO₂ from live WHOOP capabilities (#548) — supersedes #1216 #1223 (both touchedVitalSignsSummary/HealthVitalsLogic+ the skin caption): kept Drop calibrated SpO₂ from live WHOOP capabilities (#548) — supersedes #1216 #1223's localizedmissingCaption(uiString(R.string.skin_temp_missing_caption)), dropped fix(ui): label skin temp absolute °C vs baseline deviation (#622) #1221's hardcoded duplicate of the same text.#1221introduced"Skin Temp Δ"and"vs baseline"as literals (iOSString(localized:)with no xcstrings; Android hardcoded). Added them toLocalizable.xcstrings(9 locales) +skin_temp_delta_title/skin_temp_vs_baselineAndroid resources (all locales), and routedHealthVitalsLogic+HealthScreenthroughuiString.Verification
SkinTempDisplayTest(7) +SchemaOracleTest(4, unaffected) green;compileFullDebugKotlinclean;i18n_audit --ciexit 0.SkinTempDisplayis inStrandAnalytics→ validated byswift-packagesCI (test (StrandAnalytics)).VitalSignsSummary/MetricCatalogare app-target — I'll run the compile gate (testing build) before merge.Closes #622. Credit: @dnesdan.
Co-authored-by: dnesdan dnesdan@users.noreply.github.com