Bump submodules and version to 3.15.2 - #485
Conversation
OmnipodKit 4763ce6 -> 366380d eager connect watchdog (#133) LoopKit c4a8f64 -> 011a3db persistent store (#606), override loop (#608) G7SensorKit 468eefc -> fb87aa9 suspected session end grace (#63) Loop c4d89c0 -> 3ab37d5 CarbMath preconditionFailure (#2489) LibreTransmitter a38975d -> c192a2f device manufacturer field (#41), configurable glucose smoothing LOOP_MARKETING_VERSION 3.15.1 -> 3.15.2. CURRENT_PROJECT_VERSION left at 58.
Picks up "Xcode 27 Fix" (#605): isDurationPickerExpanded in CreatePresetNameAndScheduledEdit is declared without an inline initial value, which Xcode 27 requires here.
Test❌ does not build in current configuration with Xcode 27 Methodconfirm this branch is compatible with Xcode 27, builds and uses the desired submodule SHA
|
Building with Xcode 27 (27A5237l) failed before reaching any of our code: TrueTime.xcodeproj: error: The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 12.0, but the range of supported deployment target versions is 15.0 to 27.0.x. (in target 'TrueTime-iOS') Upstream fixed this in "bump deployment (#3)", which raises the target from 12.0 to 15.0 and changes nothing else. Testers already building with Xcode 27 are on that commit. Xcode 26 was unaffected, which is why this went unnoticed.
Picks up #609: LoopKitTests now declares its dependency on LoopKitUI. Test-target wiring only, 15 lines of project file, no source or product change.
OmnipodKit 366380d -> d58b11f InPlay connection strings (#140) LibreTransmitter c192a2f -> 6058dd2 glucose smoothing and every-minute reading strings (#50) Both were added by earlier work but never had the regenerated catalog committed, so the strings had not reached translation. Raised by @marionbarker in review. Catalog content only, no source change.
|
Thanks @marionbarker — both points addressed. TrueTime / Xcode 27. Fixed in 97cbbfc, which landed after you tested. Your observation that only 2 of 4 The branch is now verified on both toolchains — Xcode 26.6 ( xcstrings. Two of the four had real user-facing strings that had never reached translation, both now committed upstream and picked up here:
I left Loop and LibreLoop alone deliberately. Loop produced only two After bumping, a rebuild leaves both catalogs clean, so the committed content matches what the build regenerates. |
LibreLoop e4a4642 -> 9e5c3fc 18 new keys plus a one-time serialiser
normalisation (#10)
Loop 3ab37d5 -> bc4d79ff two removed pre-meal strings marked stale
(#2500)
Completes the catalog cleanup @marionbarker raised. All four submodules
now regenerate clean: a rebuild after these bumps leaves no catalog
dirty.
|
edited because I was testing an older version: a82069d, will repeat the test. I'm ok leaving the xcstrings not commited for now, especially because the file that change for Loop depend on whether Xcode 26.6 or 27 beta 5 is used. I'm downloading beta 6 now. Still no 27 RC available yet and I know things can change. ✅ successful build to SE 3rd gen phone running iOS 26.6.1 We probably want to pick up the RileyLink fix too. I'll test that next. |
Repeated test build with updated commit✅ successful build with commit 4bf44ef onto SE 3rd gen test phone running iOS 26.6.1 |
Picks up #16: shouldConnect(to:) and connectingCount read autoConnectIDs from the main thread while centralQueue mutates it, which tore the Set and crashed with "unrecognized selector sent to instance 0x8000000000000000" when a RileyLink switch was toggled repeatedly (LoopKit/Loop#2462). The property is now backed by a lock. Affects MinimedKit, OmniKit and OmnipodKit with Omnipod Classic, which share the provider.
Brings in the five submodules with merged work and bumps the marketing version.
Submodules
4763ce6d58b11fc4a8f646083d81468eefcfb87aa9c4d89c0bc4d79fa38975d6058dd28a3164b8ba261cautoConnectIDssafe to read off centralQueue, fixing a crash when toggling a RileyLink switch (#16, closes Loop#2462)d140b0f5dc1285LibreTransmitter was not on the original list for this bump — it had two commits waiting on its
next-dev, so it is included here. Flagging it because the glucose smoothing change is behaviour-affecting and may want its own attention.LibreLoop
e4a4642→9e5c3fc: 18 new keys plus a one-time catalog normalisation (#10). Its display-only forward throttle was bumped separately in3e74b97.Three crash fixes worth calling out
LoopKit #608 fixes an infinite loop that presented as an allocation-failure crash while entering a manual glucose value. Reachable whenever an active override meets the manual bolus screen with no dose in flight — which a CGM outage long enough to outlast the last temp basal produces reliably.
LoopKit #606 stops a Core Data migration that loses a race with the widget extension from turning into a crash loop. Relevant to any release that changes the model, since that migration runs on first launch after upgrade.
RileyLinkKit #16 fixes a long-standing data race behind
unrecognized selector sent to instance 0x8000000000000000when a RileyLink switch is toggled repeatedly. Shared by every RileyLink-based pump manager. Note this one is reasoned from the call sites rather than reproduced on device — the race surfaces probabilistically, so it is worth someone repeating the toggle test on a build carrying it.Version
Xcode 27
LoopKit#605exists to satisfy Xcode 27, so this branch was built with it — Xcode 27.0 beta, build27A5237l, the same toolchain testers are reporting from.That surfaced a second, unrelated blocker. The build failed before reaching any of our code:
Our TrueTime pin predated upstream's
bump deployment (#3), which raises the target to 15.0 and changes nothing else. Bumping it fixes the build. Xcode 26 was unaffected, which is why this went unnoticed — and why testers already on Xcode 27 are already on the newer TrueTime commit.String catalogs
@marionbarker flagged in review that four submodules had uncommitted
Localizable.xcstringsafter a build. Two carried real user-facing strings that had never reached translation, and both are now committed upstream and picked up here:All four are now committed upstream and picked up here:
grepconfirms neither is referenced in source any moreLibreLoop's diff looked at first like pure churn, but separating it showed 18 genuinely new keys against 162 entries that were only reformatted. That reformatting is a one-time serialiser normalisation — current Xcode writes
xcstringswith a space before the colon and keys sorted alphabetically — and is not specific to Xcode 27: OmnipodKit's catalog was already in the new format and stayed clean under Xcode 26.After these bumps a rebuild leaves every catalog clean, so the committed content matches what the build produces and the churn does not recur.
Verification
17F113)27A5237l)19 plugins. Version confirmed in the built app rather than just the config file:
Not installed to a device from this exact tree; the constituent changes have had device time individually.