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 #211 handle inactive CGM sensor sessions (clean merge) - OmniBLE: Lokalise translation update (clean merge)
Pulls in the new loopkitdev/LibreLoop repo (initial scaffold at 55b65d6), registers its xcodeproj in the workspace, and adds LibreLoopPlugin to the LoopWorkspace scheme so copy-plugins.sh embeds the .loopplugin bundle into Loop.app/Frameworks. With this in place Loop's CGM picker surfaces a "FreeStyle Libre 3" entry and runs the plugin's onboarding flow. No changes to Loop or LoopKit are required — discovery is purely via PluginManager's Info.plist scan.
Bumps the LibreLoop submodule pointer to the head of main, covering: - onboarding restructure (Apply -> Scan) - LibreCRKit SwiftPM dep + vendored phone_cert_162b - candidate Phase 5 handshake - BLE PIN persisted before BLE auth - in-session glucose streaming + monitor - redesigned status screen, lifecycle bar, last-N readings table - always-retrying reconnect + per-attempt scan timeout - post-pair backfill via PatchControlCommand - adopted upstream Libre3GlucoseQualityAssessment API - Pair-new-sensor flow, persisted latestSample - BLE state restoration via shared scanner + retrievePeripherals
- LibreLoop -> 84d7435 (reconnect safety, clinical-only backfill, sensor events, in-app log viewer) - Loop -> a29b6bab (alerts FAQ for no-entitlement builds, watch icon fix, orphan asset cleanup) - Add LibreCRKit as a submodule pinned to upstream airedev326 (aeb11d2), replacing the remote SPM dependency with a local workspace package.
Contributor
TestBuilt this version over an app that was running the old tidepool-sync/2026-05-11 branch from #450. Issue with new buildAs before - it took a couple of tries for the build with Xcode 26.5 to succeed. I just hit build again and it eventually found all the items it needed to finish the build. I will test a browser build to make sure that succeeds. |
Contributor
Browser Build Test✅ successful build |
…ization - LibreCRKit: per-op BLE timeouts (already upstream 5712710) - LibreLoop: silent-link watchdog + reconnect robustness - NightscoutRemoteCGM: optional API Secret localized strings
add OmnipodKit submodule to the next-dev branch
- LoopKit: bump c5a5beb9 -> 4490dddb (latest loopkitdev/LoopKit next-dev). - EversenseKit: add submodule (LoopKit/EversenseKit loop-next-dev @ 2aab7f9) -- adapted to current LoopKit CGMManager API + SwiftUI Picker. Forked to the LoopKit org since bastiaanv's repo is upstream we don't control. - MedtrumKit: add submodule (loopkitdev/MedtrumKit loop-next-dev @ 3b3af0c) -- LoopKit API compat + decisionId threading + voltage formatter; mirrors loopandlearn/MedtrumKit#2. - Workspace + scheme: add EversenseKit/MedtrumKit FileRefs and BuildActionEntries so both build as part of LoopWorkspace. LoopWorkspace scheme builds clean on Xcode 26.5 / iOS 17 simulator.
OmnipodKit replaces both legacy Omnipod drivers, matching upstream LoopKit/dev 3.14.2. Removes: - OmniBLE + OmniKit submodules (.gitmodules + gitlinks) - their .xcodeproj FileRefs from the workspace - their plugin BuildActionEntries and *Tests TestableReferences from the LoopWorkspace scheme Loop loads pump drivers as plugins and has no compile-time reference to either, so the app builds clean without them.
Follow-up fix to 1ffa139, which added the submodules/gitlinks but silently dropped the workspace and scheme edits (they were never staged before commit, then discarded with the worktree). As a result neither MedtrumKitPlugin nor EversenseKitPlugin was being built, so the drivers weren't embedded/offered by Loop. This commit adds: - the .xcodeproj FileRefs in LoopWorkspace.xcworkspace - the plugin BuildActionEntries in the LoopWorkspace scheme Verified both MedtrumKitPlugin.loopplugin and EversenseKitPlugin.loopplugin now build into the products dir (parity with OmnipodKit); the existing Install Plugins phase globs *.loopplugin so embedding follows.
Contributor
TestLoopWorkspace commit b643e2a
I successful built and both Eversense and Medtrum are shown as options for CGM and Pump respectively.
|
# Conflicts: # .gitmodules # Loop # LoopKit # LoopWorkspace.xcworkspace/xcshareddata/swiftpm/Package.resolved # NightscoutRemoteCGM
Integrate LibreLoop (Libre 3 CGM) + glucose alarms onto next-dev
Resolves PR #454 conflicts between the next-dev integration branch and the 3.14.2 release line: - Loop / LoopKit: clean sub-merges of dev's commits into next-dev's (Loop: OmnipodKit-support DeviceDataManager change; LoopKit: 3.14.2 localization updates), pushed to the loopkitdev forks' next-dev. - OmnipodKit: keep next-dev's f529581a (already contains dev's pin). - EversenseKit / MedtrumKit: keep next-dev's adapted forks (LoopKit/EversenseKit, loopkitdev/MedtrumKit) over dev's upstream pins; both build against current LoopKit. - .gitmodules: keep next-dev's loopkitdev fork URLs + the libre additions (LibreLoop, LibreCRKit) + LoopAlgorithm submodule. - Scheme: keep next-dev's Medtrum/Eversense plugin BuildActionEntries and add dev's MedtrumKitTests TestableReference. - VersionOverride: keep 3.15.0 (next-dev) over dev's 3.14.2. Brings in dev's 3.14.2 release infra (Xcode 26.4 CI, fastlane 2.335.0, scripts, kit tests). Full LoopWorkspace scheme builds clean.
CI couldn't clone https://github.com/loopkitdev/LibreLoop.git (that repo no longer exists -- it's now LoopKit/LibreLoop_old). The canonical fork is LoopKit/LibreLoop, which is public and already contains the pinned commit bb2f1e54, so only the URL changes -- the gitlink is unchanged.
The Xcode 16 Swift type-checker times out on LibreCRKit's crypto
expressions ("unable to type-check this expression in reasonable
time"); Xcode 26 compiles them fine. Aligns CircleCI with the GitHub
Actions workflow, which already runs Xcode 26.4 on macos-26.
Also removes the hardcoded OS=18.5 from the simulator destination --
the Xcode 26 image ships iOS 26.x simulators, so pinning 18.5 would
fail to find a matching destination.
In the CircleCI Xcode 26.4 image the iPhone 16 family only exists on iOS 18.6; the iOS 26.4.1 runtime ships the iPhone 17 family. With the OS unpinned (latest = 26.4.1), iPhone 16 had no match. iPhone 17 is present at 26.4.1, matching the local build destination.
loopandlearn/OmnipodKit loop-next-dev HEAD (f529581a) has a test that fails to compile -- UnfinalizedDose's bolus init now requires decisionId but PodCommsSessionTests wasn't updated, breaking the CI `test` step. Points OmnipodKit at loopkitdev/OmnipodKit loop-next-dev @ d03b34d (f529581a + the one-line test fix); upstream PR is loopandlearn/OmnipodKit#77. Revert to loopandlearn once that merges.
…s LoopTests compile)
…continuous decay, sorted appendedUnion input)
…vior LoopTests now 297 tests, 0 failures.
LoopWorkspace scheme now passes: 1242 tests, 0 failures.
xcpretty rendered every test as passing while xcodebuild itself exited 65 (set -o pipefail propagated the code, so the job correctly went red, but the failing tests were invisible in the log). xcbeautify preserves the exit code and prints the failing-test detail. Also emit a JUnit report + store_test_results so failures show in the Tests tab.
…data)) Fixes RawSpan build errors for anyone whose CryptoSwift resolves to 1.9.0/1.10.0 on the Xcode 26 SDK. Verified building against 1.10.0.
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.

This branch is a holding ground for the next major set of features to land in dev.
It includes the Tidepool Sync (#450) and will be updated to include LibreLoop (Libre 3/3+ integration) and other new integrations.