Tidepool sync 2026-05-11#450
Conversation
- Point all 18 submodule URLs to https://github.com/loopkitdev/* forks - Minizip and TrueTime.swift retain LoopKit origin (no forks) - Add docs/tidepool-sync-2026-03-10.md (Tidepool sync documentation)
…ce docs - Update all 17 submodule commit pointers to reflect rewritten history (filter-branch changed SHAs when fixing author to LoopKit Developer) - Add Loop build fix commit (LoopDataManager init ordering) - Add LOOPKIT_SYNC_PROCESS.md, SYNC_PROGRESS.md, sync-docs/
Catches the superproject up to all submodule work that has accumulated
on tidepool-sync/2026-03-10 since the initial sync commit, including:
- Loop: restore manual dose entry "+" button on insulin delivery screen
- LoopKit, NightscoutService, TidepoolService, LibreTransmitter:
string catalog updates from Xcode build
- OmniKit: fix reentrant lock crash in isSignalLost
- Various submodules: merge upstream/{dev,main} into tidepool-sync branch
Parallel fix to OmniKit 924f10d — OmniBLE had the identical bug where isSignalLost() read state.lastPumpDataReportDate from inside a lockedState.mutate closure, causing recursive lock acquisition.
Tier 1 - LoopKit: bd30c463 (409 commits from tidepool/dev; 18 source conflicts + 19 pbxproj regions resolved; DIY divergence preserved at BasalRateScheduleEditor) - Loop: 76b6b1e3 (14 commits from tidepool/dev; 3 pbxproj regions) Tier 3 - CGM drivers - CGMBLEKit: 69562e7 - G7SensorKit: d024513 - dexcom-share-client-swift: 541de2f - NightscoutRemoteCGM: b1ea9ee - LibreTransmitter: c99daf1 Tier 3 - Pump drivers - RileyLinkKit: 19f5ae8 - OmniKit: b3b6080 (preserves reentrant lock fix; adopts mutateState) - OmniBLE: 645e0fc (preserves reentrant lock fix and Pod Keep Alive suspend special case; adopts mutateState) - MinimedKit: f994d6e (preserves CAGE/IAGE tracking) Tier 3 - Services - TidepoolService: 5f6a064 (incl. DoseEntry dedupe follow-up) - NightscoutService: 1b5cded (preserves APNS response feature) - AmplitudeService: 77dae3e - LogglyService: 8e18081 - MixpanelService: unchanged (already up to date with tidepool) Tier 3 - Support/Onboarding - LoopSupport: a312dfb - LoopOnboarding: fd7e410 Package.resolved - LoopAlgorithm: tidepool-org/LoopAlgorithm bd1a879 (4 test-only commits)
docs/tidepool-sync-2026-05-11.md describes the merge, conflicts, and divergences. SYNC_PROGRESS.md updated to reflect the new branch and the divergences carried forward.
Pulls in 3 small origin/dev updates that landed after this sync started: - Loop: PR #2410 Live activity plot fixes (manual merge to preserve our post-Tidepool-sync API: kept async/await sample fetch + LoopUnit signature, adopted upstream's presetStart<=presetEnd guard and the adjustedChartStart/End helpers) - CGMBLEKit: PR LoopKit#211 handle inactive CGM sensor sessions (clean merge) - OmniBLE: Lokalise translation update (clean merge)
… charts Picks up loopkitdev/Loop@4eea0b24 — widens the carbStatus.dynamicGlucoseEffects sampling window in fetchCarbAbsorptionReview and getHistoricalChartsData from `from: end` to `from: start` so the model-predicted line spans the full chart again (was only generating samples in now+1h … now+7h, outside the visible window). UI-only; no dosing-path impact.
Test use of MinimedKit✅ Successful addition of Medtronic pump to this PR. Once I remembered that I needed to finish the rewind and prime after adding a battery, I got the expected: pump did not respond in time error, but the time on the pump was updated. When this version of code, I was able to retry a couple of times from the same screen and have it connect whereas with previous version (Loop 3.14) I would have needed to cancel and then add back in the pump parameters again. Got a green loop within a few minutes. |
Test Continued✅ An issue was found and fixed. Medtronic pump is now working. See #450 (comment) I may have posted success and approved some PR too soon. I was getting the hang posted below and I thought it might have been an issue with building an earlier loop in the interim (by mistake). I deleted all Loop apps off the phone and built fresh, imported settings from Nightscout and attached an MDT pump (this time a 523 - before it was a 515). I get this hang on my SE 3rd gen running vanilla tidepool-sync/2026-05-11 version of LoopWorkspace with an MDT pump attached using Nightscout as a CGM. I can't get to a green loop without this hang. If I rebuild after the hang, I am able to bolus but then it hangs again.
|
Test ContinuedI built over the app again and was able to delete the MDT before Loop hung and then add a SImulator Pump. The simulator pump ran with green loop for several hours. I then deleted simulator pump and added MDT 523 again and go the same hang. |
Favorite Foods InsightsEdited to add : this was fixed with a later version. see #450 (comment) I noticed what looks like a nice feature for Favorite Foods, but when I tap on the box to see more, the app quits. |
Test Remotes from LoopCaregiverI installed LoopCaregiver from TestFlight (when testing another PR). Using that app, I issued some remote commands to my personal phone running what is substantially tidepool-sync/2026-05-11 ✅ successful issue remote bolus of 0.11 U, Loop rounded it to 0.1 U and delivered it |
Includes tidepool-org/TidepoolKit#79 so sessions persisted before userRoles was added decode cleanly on upgrade -- preserves the TidepoolService configuration across the dev->sync upgrade instead of forcing the user to re-authenticate.
TestThe Favorite Foods Insights mentioned here is fixed. Configuration
ScreenshotThe graphics below show insights for the last two times I used the "Lunch" Favorite Food. I will be exploring this more in the future - pretty nice.
|
Test✅ The loss of Tidepool connection mentioned here is fixed. Configurationbuild Loop-dev 3.14.2 onto a test phone (SE 2nd gen running iOS 18.7.8). The build using the tidepool-sync clone mentioned here, up to commit f03461f was built onto the test phone - transition went smoothly. ScreenshotThere are two notes icons in this screenshot
✅ The tidepool connection remained through the transitiion.
|
Test✅ The hang when trying to read history from Medtronic pump reported here has been fixed. ConfigurationSame build on the SE 2nd gen as used for the Tidepool transition test. Test Narrative
Leave the pump connected to this build overnight. edited to add - the Medtronic worked flawlessly with this PR version of Loop overnight. |
Test❌ Manual Temp Basal is canceled at next Loop cycle Using the version on my personal phone, which is at commit 1b894f (the watch fix, but not the Tidepool update), I noticed that Manual Temp Basal ended at the next Loop cycle. Glucose was rising and I was trying to decide if it is a site failure or not so I increased basal from scheduled rate of 0.65 U/hr to 1 U/hr. But when I looked later, it was back at scheduled. I confirmed on Nightscout that I just had a small blip of basal above scheduled rate. So I set it again and watched. The next CGM reading, it returned to scheduled. |
Test❌ Repeat Manual Temp Basal test ConfigurationContinue with the configuration described here and with phone used for the successful overnight test with Medtronic. Test Details
To make sure it has nothing to do with OmnipodKit, repeat the test with OmniBLE
|





Refreshed Tidepool → DIY sync for the whole workspace, from the
tidepool-sync/2026-05-11branch. Supersedes and replaces the previous Tidepool merge PR (#213).See Tidepool → LoopKit DIY Sync — 2026-03-10 and Tidepool → LoopKit DIY Sync — 2026-05-11 for more details
Submodule gitlinks currently point at the unmerged per-repo
tidepool-sync/2026-05-11branches. They will be updated to the merged commits as each submodule PR below lands.Submodule PRs
Notes
devwas merged into the Loop sync branch to resolve conflicts (WatchAppInfo.plistLive Activity launch keys +project.pbxprojlocalization file references). Loop builds clean.