Repository navigation
Conversation
A Live Activity only redraws when an update reaches it, so with no network or a stopped app it cannot show that its data is old. staleDate is now 12 minutes after the reading and is sent in update pushes, so iOS can flag the activity without the app. Renewal relies only on laRenewBy and laRenewalFailed, so stale data no longer replaces the activity when the app opens; an activity with no stored deadline is still replaced, since it could never renew. The small family, shown on CarPlay and in the Watch Smart Stack: - A stale reading is struck out in red, with the BG and arrow grey. - A status line, on by default, shows the update time, IOB and COB (or Not Looping in their place) and any active override with its insulin needs, range and time left. While it is on, IOB, COB and Override are not offered for the right slot; a stored choice of one of them comes back when the line is turned off. Turning it off also restores the original font sizes. - A Tight CarPlay Layout switch, off by default, replaces the right slot with projected BG, IOB, COB and basal, and centres the bottom row. No API tells CarPlay from the Watch, so it also needs a width of at least 205 points: the 240-wide CarPlay layouts, not the 170-wide one. Both switches explain themselves in an info button.
A small widget for the CarPlay Widgets screen, also usable on the Home Screen (iOS 26 and later). A button in the corner steps through its pages: - Now: the reading, delta and the time of the reading, the loop values, and any running override as insulin needs, target range (the override's own, else the loop's current range) and end time, or ∞ with no end. - Alerts: only in the cycle while there is something to report. - 3 h: the last three hours against the target range. Alerts come from LoopFollow's alarms. Each alarm has a "Show in CarPlay" toggle, off by default, and is listed with LoopFollow's icon and wording. Alarms about a state stay listed while it holds, including carbs on board and recommended bolus above their threshold; alarms about an event stay listed for 15 minutes after they fire. Times on the widget and on the CarPlay Live Activity are clock times rather than ages or countdowns, so the text stays still while driving. The app writes the widget's state after each alarm check and Live Activity refresh and asks for a reload only when something shown has changed. As the system holds back reloads from an app in the background, the app then also sends a WidgetKit push, coalescing changes within 10 seconds into one. The Live Activity extension gets the Push Notifications capability and entitlement for this. Reload requests and pushes are logged at debug level under a new CarPlay log category.
MtlPhil
requested review from
bjorkert,
codebymini and
marionbarker
as code owners
November 10, 2026 13:14
MtlPhil
marked this pull request as draft
November 10, 2026 13:16
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.
The widget reuses what #829 adds to
GlucoseSnapshot: the override details (insulin needs and range) and the stale check.A small widget for the CarPlay Widgets screen, also usable on the Home Screen (iOS 26 and later). A button in the corner steps through its pages:
Alerts
Clock times
Refreshing
Builders
Tests cover which alarms are listed and for how long.