Skip to content

Tidepool sync 2026-05-11#450

Open
loopkitdev wants to merge 47 commits into
LoopKit:devfrom
loopkitdev:tidepool-sync/2026-05-11
Open

Tidepool sync 2026-05-11#450
loopkitdev wants to merge 47 commits into
LoopKit:devfrom
loopkitdev:tidepool-sync/2026-05-11

Conversation

@loopkitdev
Copy link
Copy Markdown

@loopkitdev loopkitdev commented May 20, 2026

Refreshed Tidepool → DIY sync for the whole workspace, from the tidepool-sync/2026-05-11 branch. 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-11 branches. They will be updated to the merged commits as each submodule PR below lands.

Submodule PRs

Repo PR Base
Loop LoopKit/Loop#2438 dev
LoopKit LoopKit/LoopKit#591 dev
CGMBLEKit LoopKit/CGMBLEKit#213 dev
dexcom-share-client-swift LoopKit/dexcom-share-client-swift#53 dev
RileyLinkKit LoopKit/RileyLinkKit#15 dev
NightscoutService LoopKit/NightscoutService#24 dev
LoopOnboarding LoopKit/LoopOnboarding#34 dev
AmplitudeService LoopKit/AmplitudeService#30 dev
LogglyService LoopKit/LogglyService#27 dev
OmniBLE LoopKit/OmniBLE#169 dev
NightscoutRemoteCGM LoopKit/NightscoutRemoteCGM#33 dev
LoopSupport LoopKit/LoopSupport#29 dev
TidepoolService LoopKit/TidepoolService#36 dev
G7SensorKit LoopKit/G7SensorKit#55 main
OmniKit LoopKit/OmniKit#70 main
MinimedKit LoopKit/MinimedKit#32 main
MixpanelService LoopKit/MixpanelService#6 main
LibreTransmitter LoopKit/LibreTransmitter#40 main

Notes

  • dev was merged into the Loop sync branch to resolve conflicts (WatchApp Info.plist Live Activity launch keys + project.pbxproj localization file references). Loop builds clean.

loopkitdev and others added 30 commits March 12, 2026 15:50
- 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.
Pete Schwamb added 3 commits May 16, 2026 15:11
Picks up loopkitdev/Loop@30725413 — ports Marion's #2399 submodule list into
LoopAppManager.generateDiagnosticReport(). The script and BuildDetails plumbing
were already in place; only the report consumer was missing after the merges.
Loop submodule changes:
- Label manually-entered boluses as External Insulin in the delivery log,
  with a delete action in the event details screen
- Fix Text wrapping in presets training content
- Remove the unfinished Performance History entry point from presets

Also ignore .claude in the workspace.
@ps2 ps2 mentioned this pull request May 20, 2026
Pete Schwamb added 6 commits May 20, 2026 11:53
Bring in dev's workspace changes (CI workflows, Gemfile, lokalise script,
VersionOverride). Submodule gitlinks kept at the tidepool-sync/2026-05-11
tips (the unmerged sync branches), to be re-bumped as submodule PRs land.
@marionbarker
Copy link
Copy Markdown
Contributor

marionbarker commented May 21, 2026

Test

I have been testing this from the loopkitdev repository over the last few weeks.
I updated today, 20 May 2026, and did a few quick tests with the latest version.

Warning - we need to bump the version number - we can't leave it at 3.14.0.

Configuration

Most recent test is with LoopWorkspace commit 68ce294. This is behind but still valid for the items I tested.

Phone is SE 3rd gen running iOS 26.5.
Pump is simulator.
CGM is Nightscout where I can update the desired pattern.

Review prior issues with 213

Referring to the table in PR #213 which listed issues with the previous PR.

There were 10 items.

Item Status Brief Description
1 fixed Browser Build, Build succeeds:.
Mac expiration OK
TestFlight expiration OK
2 fixed Loop Report Format
3 fixed incomplete upload to Nightscout
4 n/a iOS 15 issue
5 fixed Tidepool Service, delete external insulin
6 n/a Time change indicator for Eros - fixed in OmniKit, don't retest
7 n/a Test method issue - will repeat check of dosing record again anyway
8 later do all test cases work?
9 fixed ICE display plot
this was fixed earlier, seems to not be fixed now
10 fixed preset need seemed inverted
see note below

Edited to update Item 1: there was a message about invalid Siri Support - Localized description for a few phrases in my email from Apple.

Note about preset change

The presets affects active insulin during the preset duration - not throughout the duration of the insulin lifetime.
The warning against extreme overrides (presets) is now different.
Be very careful how you use presets with the new method.

When you choose a preset that has 170% insulin needs or greater, the new code adds a new safety limit. Instead of using your glucose safety limit and your target range, it limits the lower bound to be 110 mg/dL.

See this table. Notice that the recommended dose for a fixed carb entry of 50 g for insulin needs of 200% is less than 150% because the modified minimum threshold (from 70 mg/dL to 110 mg/dL).

All other settings used glucose safety of 70 mg/dL. The target thresholds for all value are the same (110-120 mg/dL).
The CGM reading is steady of 110 mg/dL.

Preset Insulin Needs Changes
effective therapy settings
Basal
Rate
CR ISF Carb (g) Rec Bolus
none
100%
0.6 8 50 50 6.2
50% 0.3 16 100 50 3.1
150% 0.9 5 33 50 9.45
200% 1.2 4 25 50 6.7

Pete Schwamb added 8 commits May 20, 2026 20:17
Document that upgrading dev→sync migrates the shared store to Modelv6 and cannot
be reverted: dev ships only up to Modelv4 and can't open a v6 store, so reverting
leaves the app unable to load its data store (no on-disk data loss, but dev needs
a delete+reinstall, rebuilding from HealthKit). Also records that the forward
migration now preserves dose amounts (value→deliveredUnits). Includes the earlier
2026-03-10 LoopAlgorithm-packaging callout.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants