Skip to content

Next dev - #454

Open
ps2 wants to merge 253 commits into
devfrom
next-dev
Open

ps2 wants to merge 253 commits into
devfrom
next-dev

Conversation

@ps2

@ps2 ps2 commented Jun 4, 2026 •

Copy link
Copy Markdown
Contributor

This branch is a holding ground for the next major set of features to land in dev.

It includes the Tidepool Sync (#450) and OmnipodKit, and new Libre 3 integration.

loopkitdev and others added 30 commits March 12, 2026 19:45
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
Bump LibreLoop submodule to pick up the DeviceManager / Pluggable /
AlertResponder updates needed against the tidepool-sync LoopKit.
Bumps the LibreLoop pointer so post-background disconnect traces land
in Documents/libreloop/log.txt. Adds pull-libreloop-log.sh to fetch the
file via devicectl without bouncing through Console.app.
ps2 added 30 commits September 25, 2026 18:40
xcodebuild -exportLocalizations / -importLocalizations build every target
for all platforms they support, including Mac Catalyst. Loop ships no
Catalyst app, and under Xcode 27 the Catalyst builds fail because several
frameworks fall back to an unsupported macOS 10.15 deployment target
(min is 12.0). Pass SUPPORTS_MACCATALYST=NO so Catalyst isn't built,
which lets the export/import run to completion.

Verified: the export previously failed at LoopKit (then LibreLoop,
MixpanelServiceKit, ...); with SUPPORTS_MACCATALYST=NO it builds no
Catalyst variants and completes, producing xcloc output.
Includes LoopKit/Loop#2538 Fix watch bolus recommendation doubling after
a carb+bolus delivery, on top of #2535 (watch Pre-Meal icon).
Matches dev: the macOS jobs run on the xcode-27 runner and select
Xcode 27.0, and the Linux jobs run on ubuntu-26.04. The manual build had
been on Xcode 26.4 and the automatic build on 26.5. next-dev already
builds cleanly with Xcode 27.
…atalyst

Skip Mac Catalyst in the localization export/import (Xcode 27)
- Loop -> 8e6be4a4: don't confirm a Loop reset before launch completes
  (#2551); forward device manager analytics events (#2552)
- LoopKit -> a6269033: device managers can record analytics events
  through their delegate (#630)
- OmnipodKit -> 63a2d6f: Pod Paired / Pod Ended analytics and pump
  events (#180); backport dev PRs 169, 172, 173, 174, 175 (#181)
- MedtrumKit -> 2d48bfc: merge MedtrumKit dev through ef866fa (#4)
- EversenseKit -> 8666dda: merge EversenseKit dev through e1bb6fa (#2)
- CGMBLEKit -> 7fe0426: surface G5/G6 sensor lifecycle, detect
  Anubis-modded G6 (#222)
- G7SensorKit -> 5a78636: direct pairing onboarding (#72), signal
  strength logging (#78), drop the 20-minute signal-loss alert (#79)
- RileyLinkKit -> 2c2343d: watchOS framework targets (#21)
- LoopAlgorithm -> 4604ee3: unify fork history with tidepool-org (#8)
…iscKit

- Loop -> 0e757ab5: raise the iOS deployment target to 17.6 (#2553)
- LoopKit -> 5caf3e28: GlucoseStore reads managed objects on its queue
  when saving to HealthKit, and skips HealthKit samples without dates,
  which crash-looped the watch app (#629)
- LibreLoop -> 1a3195e: switch from LibreCRKit to RoundWhiteDiscKit,
  downloading its runtime tables from Arweave once (#14)
- Replace the LibreCRKit submodule with RoundWhiteDiscKit at dccf013,
  the commit LibreLoop pins. It is added to the workspace as a local
  package, which overrides LibreLoop's remote reference, so no remote pin
  appears in Package.resolved.
- Note in the dev notes that the RoundWhiteDiscKit submodule and
  LibreLoop's Arweave txid have to move together.
Build next-dev with Xcode 27; bump submodules
- RoundWhiteDiscKit 0e076b2: pair with plain-key app identities, without
  the runtime tables (airedev326/RoundWhiteDiscKit#3).
- LibreLoop 252b079: use them before the whitebox, with field diagnostics
  for identity selection and rejection (LoopKit/LibreLoop#16).
- OmnipodKit 65a6ec4: acknowledge the expired-pod alert, and retry the
  acknowledgement once (LoopKit/OmnipodKit#182).
Bump RoundWhiteDiscKit, LibreLoop and OmnipodKit
Shows the sensor's security version and region, and whether it paired
with an app identity or the whitebox, in its Debug Info settings
(LoopKit/LibreLoop#17).
Bump Loop for the watch carb double-count fix
RoundWhiteDiscKit takes its app credentials from the host; LibreLoop
downloads them and picks the sensor by its advertised BLE address
(LoopKit/LibreLoop#18).
Bump RoundWhiteDiscKit to e66da6c and LibreLoop to 150d2b1
CircleCI retired configuration version 2 at the end of September, so
every pipeline since then has errored before running a single step.
Declaring version 2.1 restores the builds. The image moves to Xcode 27
to match the browser build and local development, the raw xcodebuild
logs are kept as artifacts, and simulator diagnostics collection is
skipped because it hangs for ten minutes on the CI image.
- Loop 0de85b71: don't run an action tab when a home swipe starts on the bar (LoopKit/Loop#2565)
- LoopKit e4ebe3d3: extensible CGM event model, Modelv7 (LoopKit/LoopKit#635)
- G7SensorKit 8fa9c73: nonzero-status glucose messages and serial-number device ids (LoopKit/G7SensorKit#85), sensor identity certificates (#86), comment fixes (#87), Simulator pairing over a Bluetooth bridge (#89)
Bump LoopKit, G7SensorKit, CGMBLEKit and NightscoutService (CGM sensorIssue events)
…r-events

Bump LoopKit, Loop, EversenseKit and LibreLoop (CI test-host fixes, sensor events)
Fix CircleCI config for next-dev: declare version 2.1 and build with Xcode 27
Brings in the VoiceOver label fixes (LoopKit/Loop#2569, LoopKit/LoopKit#640,
loopandlearn/OmnipodKit#189, LoopKit/G7SensorKit#92), the compiler warning
cleanup (LoopKit/Loop#2567, LoopKit/LoopKit#639) and real pod Bluetooth in
the Simulator when a bridge is injected (loopandlearn/OmnipodKit#188).
…les) (#532)

* Pin the plugin picker subtitle branches

Points the 17 submodules at their plugin-picker-subtitle branches (Camji55's manufacturer field PRs merged onto the current base, plus the picker subtitle), so CI builds and tests them together.

* Bump submodules to the merged plugin picker PRs

Pins each submodule to its base branch tip, which is the merge commit of its plugin picker PR. Also picks up the other PRs merged since the last bump: LoopKit #641, #643 and #645; Loop #2570 and #2573; loopandlearn/OmnipodKit#191; G7SensorKit #93; and the warning cleanups.
…s, device models (#534)

* Bump Loop, LoopKit and LoopAlgorithm (Tidepool sync 2026-10-12)

Loop b16e8f43 (LoopKit/Loop#2571), LoopKit 9092a78c (LoopKit/LoopKit#642) and
LoopAlgorithm 7ef6724 (LoopKit/LoopAlgorithm#9) merge tidepool-org dev/main.
All other Tidepool forks had nothing new since the 2026-05-11 sync.

Records the sync and the two new DIY divergences in the sync dev notes.

* Bump submodules for backfill tagging, analytics and fixes

Bumps CGMBLEKit, EversenseKit, G7SensorKit, LibreLoop, LibreTransmitter, Loop, LoopKit, LoopSupport, NightscoutService, OmnipodKit, RileyLinkKit and TidepoolService to their base branch tips, and NightscoutKit to main (8ae3e6e).

* Bump Loop, OmnipodKit, LibreLoop and EversenseKit for device models in analytics
* Bump Loop, LoopKit and G7SensorKit for the HealthKit glucose purge fix and Support build info

* Bump LoopKit for the revert of the newer-store guard

* Bump LoopKit to next-dev after merging #652
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.

5 participants