Show background syncing through the Today battery indicator#837
Conversation
ryanbr
left a comment
There was a problem hiding this comment.
Nice work — the component is properly tokenised, Reduce Motion is handled, previews included, and StrandDesign's catalog is updated. 32/32 and 9/9 green.
-
The build error is not upstream.
Strand/BLE/OuraMotionDump.swiftexists onmainand defines the type — it landed earlier today in #805. SinceStrand.xcodeprojis generated and not committed, a project generated before that commit will not contain the file, which produces exactly "cannot find type in scope".xcodegen generateafter pulling should clear it. Worth confirming, because it means the app target has not actually built against your change yet. -
This collides with #833. You delete
LiquidSyncChip; #833 is currently adding a "N pages behind" detail to that same chip. Whichever lands second either conflicts or silently drops the other's work. Needs a call from @ryanbr on which surface wins before either merges. -
The new indicator is boolean. It takes
syncing: Booland a fixed "Syncing" label, where the chip it replaces shows a live chunk count (plus pages-behind under #833). Classic Today keeps both since you do not touch it, so the two Today layouts would diverge in what they tell you. Deliberate? Your reasoning about header busyness is fair, but "syncing" with no progress signal is also the thing #806 and #833 were trying to move away from.
No BLE/protocol/analytics touched, iOS-only presentation — no parity obligation here.
What this PR does
Shows background strap-history syncing through the existing battery indicator instead of a separate status chip in the Liquid Today header.
Syncingcapsule as a lightweight notification, then collapses while syncing continues.StrandDesigncomponent with shared layout, typography, palette, and motion tokens, interactive previews, and Reduce Motion support.Syncing happens in the background and does not prevent the rest of the app from being used. A separate persistent chip makes the header feel busy and can make the app appear blocked; integrating the state into the battery control keeps the status visible without giving it undue prominence.
No BLE, protocol, analytics, or Android behavior changed.
Type of change
How it was tested
swift testinPackages/StrandDesign— 32 tests passed.python3 Tools/i18n_audit.py --ci upstream/main— passed for Android and all Apple catalogs.git diff --check— passed.upstream/mainfailure in untouched code:Strand/BLE/OuraLiveSource.swift:270: cannot find type 'OuraMotionDump' in scope. Retrying through fullxcodebuildproduces the same upstream error; no diagnostics originate from files changed here.Checklist
swift testinPackages/<name>)android/StrandDesigntokens — no hardcoded colors, fonts, or spacingdocs/CONTRIBUTING.mdStrand.xcodeproj/) or any secrets/keystoresRelated issues
None.