Tags: NoopApp/noop
Tags
v3.2.0 — iOS-17 / macOS-14 API migration (no behaviour change) Reimplements @vulnix0x4's #331 as NoopApp: migrates the 45 deprecated single-parameter onChange(of:perform:) call sites and 4 plotAreaFrame sites to current iOS-17/macOS-14 APIs, behind onChangeCompat / plotRectCompat shims in StrandDesign so the macOS-13 build still compiles. Chose a SINGLE-parameter onChangeCompat (vs the PR's two-parameter form): every call site reads only the new value, so the closures stay byte-for-byte unchanged — zero behaviour-change risk, the deprecation acknowledged exactly once in the shim. Also migrated the 2 sites the original PR missed; StrandiOSApp (iOS-only) uses the native two-parameter form, not the shim. Verified: macOS-13 build (legacy branch) + iOS-17 build (modern branch) both green. Credit @vulnix0x4 (#331). Bump: marketing 3.2.0, mac 125, iOS 80, android versionCode 167.
v3.1.0 — community-fixes wave: accuracy, reliability & accessibility Reimplemented 20 verified community PRs + 3 scoped subsets as first-party code, each independently reviewed against the real source before landing. Cross-platform parity ports applied; all platforms build green. Smart alarm (#376, #379): daily re-arm so a connected strap keeps waking you past the first morning (iOS/Mac/Android); 5/MG firmware alarm stays gated behind Experimental. Accuracy (#360, #366, #357, #387): bout-only calorie time-weighting (day path unchanged to avoid over-count), HR-zone gap cap, waking-only daytime-stress reference, imported-only recovery baseline. BLE (#378, #386): correct family decode after iOS background restore; Live Activity ends on disconnect. Data safety (#383, #385): failed-import rollback keeps existing data; AI key never reused across providers. A11y/polish (#359, #362, #381, #363, #361, #388, #358, #389, #390): Reduce Motion, VoiceOver HR chart, Dynamic Type, bigger tap targets, 12/24h + localized times, smoother Today, What's-New ordering, accurate menu-bar toggle. Android (#370, #367, #373): tappable workout rows + detail sheet, sleep-consistency tile fix, Rest confidence parity. Credits: @vulnix0x4, @ujix. Bump: marketing 3.1.0, mac 124, iOS 79, android versionCode 166.
v2.18.5 — Today sparkline tiles no longer truncate their value on pho… …nes (#332) The SparkStatTile value column shares its row with an inline sparkline, so on narrow phones it could be only ~3 chars wide. AutoSizeValue was supposed to shrink the value to fit, but it was invoked with no width modifier — a single-line Text then takes its intrinsic width, didOverflowWidth never trips, and the value silently ellipsizes at full size ("100%"->"10…", "15.5"->"15…"). The plain StatTile worked because it passes weight(1f) (a hard width). Give the SparkStatTile value fillMaxWidth() so the shrink actually fires, and trim the inline sparkline (64->48dp) so values keep more room and shrink less.
v2.18.4 — Dynamic Island toggle now ends an already-showing Live Acti… …vity (#341) The #336 opt-out only ended Live Activities this controller instance had started. A Live Activity that outlived a previous app session left the fresh controller with activity == nil, so toggling the setting off couldn't reach it — only the iOS system switch worked. Re-adopt Activity.activities on the next HR tick, and end() now ends every NOOP activity, not just the cached one.
PreviousNext