Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
aeafc77
fix(therapy): Size editor save bars relative to their containers
gordolio Oct 27, 2026
35e60ec
fix(sheets): Pin list top margin in Treatments and adjustment forms
gordolio Oct 28, 2026
262cf39
fix(help): Pad help sheets inside their navigation stacks
gordolio Oct 28, 2026
0b23a26
fix(ui): Size sticky action bars relative to their containers
gordolio Oct 28, 2026
c6bd339
fix(ui): Size error buttons and widget preview relative to containers
gordolio Oct 28, 2026
5897074
ci: Re-run unit tests
gordolio Oct 28, 2026
8c3404a
Remove unused code and dead configuration
lolzivkovic Oct 29, 2026
fcaa8f6
Store the pump status in Core Data
bjorkert Oct 30, 2026
92b86a7
Keep the stored pump status across removals, migration and purges, wi…
bjorkert Oct 31, 2026
69bedb5
Fix glucose delta rounding and use one delta formatter
lolzivkovic Oct 31, 2026
6998a6c
Remove unused formatters
lolzivkovic Oct 31, 2026
7cf6747
Clear the stored reservoir when the pump is removed or the Medtrum pa…
bjorkert Oct 31, 2026
180d2fe
Merge pull request #1703 from bjorkert/feature/pump-status-storage
dnzxy Oct 31, 2026
32876aa
CI: Bump APP_DEV_VERSION to 1.0.2.43 [skip ci]
github-actions[bot] Oct 31, 2026
fc9a9e4
Merge pull request #1682 from gordolio/fix/duo-therapy-save-bar
dnzxy Oct 31, 2026
8c9cd5f
CI: Bump APP_DEV_VERSION to 1.0.2.44 [skip ci]
github-actions[bot] Oct 31, 2026
252428d
Merge pull request #1683 from gordolio/fix/duo-sheet-top-inset
dnzxy Oct 31, 2026
a4e1609
CI: Bump APP_DEV_VERSION to 1.0.2.45 [skip ci]
github-actions[bot] Oct 31, 2026
be06187
Merge pull request #1684 from gordolio/fix/duo-help-sheet-padding
dnzxy Oct 31, 2026
a9e1b10
CI: Bump APP_DEV_VERSION to 1.0.2.46 [skip ci]
github-actions[bot] Oct 31, 2026
d0968c8
Merge pull request #1685 from gordolio/fix/duo-sticky-action-bars
dnzxy Oct 31, 2026
f5cedb5
CI: Bump APP_DEV_VERSION to 1.0.2.47 [skip ci]
github-actions[bot] Oct 31, 2026
a50d55a
Merge branch 'dev' into fix/duo-error-screen-buttons
dnzxy Oct 31, 2026
31d4030
Merge pull request #1693 from lolzivkovic/cleanup/remove-unused-code
dnzxy Oct 31, 2026
87126ef
CI: Bump APP_DEV_VERSION to 1.0.2.48 [skip ci]
github-actions[bot] Oct 31, 2026
e400df2
Merge pull request #1710 from lolzivkovic/fix/glucose-delta
dnzxy Oct 31, 2026
6bc16eb
CI: Bump APP_DEV_VERSION to 1.0.2.49 [skip ci]
github-actions[bot] Oct 31, 2026
b9cf850
Merge pull request #1711 from lolzivkovic/refactor/remove-unused-form…
dnzxy Oct 31, 2026
e92ee42
CI: Bump APP_DEV_VERSION to 1.0.2.50 [skip ci]
github-actions[bot] Oct 31, 2026
5b346ff
Merge pull request #1686 from gordolio/fix/duo-error-screen-buttons
dnzxy Oct 31, 2026
ccb00bb
CI: Bump APP_DEV_VERSION to 1.0.2.51 [skip ci]
github-actions[bot] Oct 31, 2026
49f7a4b
Merge remote-tracking branch 'upstream/dev' into fix/reservoir-after-…
bjorkert Oct 31, 2026
0028dd3
Read the reservoir from the pump manager instead of storing it
bjorkert Oct 31, 2026
5a69d67
fix(ui): Fill the glucose simulator's Reset to Defaults with system blue
gordolio Oct 31, 2026
cba6b42
Stop critical audio only for the alert that owns it
dnzxy Oct 31, 2026
e9850f4
Ask for AlarmKit permission on launch
dnzxy Oct 31, 2026
11ecb63
Derive AlarmKit alarm IDs from the alert identifier
dnzxy Oct 31, 2026
7b3d028
Ring critical alarms for one bounded burst
dnzxy Oct 31, 2026
5e4ccc5
Pass nil decisionId to pump enact calls
dnzxy Oct 31, 2026
d53acb6
Treat pumpInoperable as pump unavailable
dnzxy Oct 31, 2026
46f5dfc
Use LoopQuantity and LoopUnit at LoopKit boundary
dnzxy Oct 31, 2026
901391b
Adopt async device delegate and alert APIs
dnzxy Oct 31, 2026
0b3d1a3
State plugin identifiers in device catalog
dnzxy Oct 31, 2026
fa63629
Move Tidepool to next-dev service API
dnzxy Oct 31, 2026
b09796a
Read device log through async fetch
dnzxy Oct 31, 2026
1bb4c46
Adopt next-dev LoopKitUI signatures
dnzxy Oct 31, 2026
e9d2f3d
Pass decisionId to test DoseEntry fixtures
dnzxy Oct 31, 2026
fee2a70
Bump TidepoolKit to LoopWorkspace next-dev pin
dnzxy Oct 31, 2026
4cab872
Pin LoopKit and kits to next-dev ports
dnzxy Oct 31, 2026
cb341ea
Link LoopAlgorithm only through LoopKit
dnzxy Oct 31, 2026
479f35c
Drop test for removed Tidepool automatedDelivery
dnzxy Oct 31, 2026
4690335
Don't loop against an inoperable pump
dnzxy Oct 31, 2026
138b003
Treat Libre 2 as a direct CGM for glucose alerts
dnzxy Oct 31, 2026
daf19d1
Play alert sounds while Trio is in the foreground
dnzxy Oct 31, 2026
a8d776f
Track trio-next-dev for G7SensorKit and LibreLoop
dnzxy Oct 31, 2026
3894c02
Merge pull request #1714 from gordolio/fix/glucose-sim-reset-button-c…
dnzxy Nov 1, 2026
cda314c
CI: Bump APP_DEV_VERSION to 1.0.2.52 [skip ci]
github-actions[bot] Nov 1, 2026
68e13b6
Use one formatter for glucose display
lolzivkovic Oct 31, 2026
c610d06
Merge branch 'dev' into fix/reservoir-after-pump-change
bjorkert Nov 1, 2026
c61c7ae
Keep ISF decimals and finish glucose formatting cleanup
lolzivkovic Nov 1, 2026
28c86f2
Ignore timeZoneSync pump events explicitly
dnzxy Nov 1, 2026
927ad50
Describe alert catalog as Trio-owned in comments
dnzxy Nov 1, 2026
2b74f6d
Mark Tidepool async upload operation Sendable
dnzxy Nov 1, 2026
680711f
Bump DanaKit, AccuChekKit and EversenseKit pins
dnzxy Nov 1, 2026
9b74620
Handle kit alerts off the main actor
dnzxy Nov 1, 2026
1b181d1
Mark Bluetooth state manager MainActor
dnzxy Nov 1, 2026
f6af098
Format Tidepool upload closure
dnzxy Nov 1, 2026
44dd6e8
Merge pull request #1715 from lolzivkovic/refactor/glucose-display-fo…
dnzxy Nov 1, 2026
ccb38a3
CI: Bump APP_DEV_VERSION to 1.0.2.53 [skip ci]
github-actions[bot] Nov 1, 2026
8a79053
Skip Apple Health insulin samples that end before they start
haarisedhi102 Nov 1, 2026
7518848
Merge pull request #1720 from haarisedhi102/fix/healthkit-insulin-sam…
dnzxy Nov 1, 2026
7b2b623
CI: Bump APP_DEV_VERSION to 1.0.2.54 [skip ci]
github-actions[bot] Nov 1, 2026
1eb8e44
Merge pull request #1718 from dnzxy/feat/loopkit-next-dev
dnzxy Nov 1, 2026
96bbe59
CI: Bump APP_DEV_VERSION to 1.0.2.55 [skip ci]
github-actions[bot] Nov 1, 2026
4ec3bcf
Merge branch 'dev' into fix/critical-audio-owner
dnzxy Nov 1, 2026
20c438e
Merge branch 'dev' into fix/reservoir-after-pump-change
dnzxy Nov 1, 2026
3e5d3f4
Bump submodules to LoopKit-owned value types
dnzxy Nov 2, 2026
a9ffc88
Update submodule branches in update script
dnzxy Nov 2, 2026
800ba23
Remove LoopAlgorithm submodule
dnzxy Nov 2, 2026
8bb6d77
Merge pull request #1712 from bjorkert/fix/reservoir-after-pump-change
dnzxy Nov 2, 2026
78491be
CI: Bump APP_DEV_VERSION to 1.0.2.56 [skip ci]
github-actions[bot] Nov 2, 2026
699fb20
Merge pull request #1716 from dnzxy/fix/critical-audio-owner
dnzxy Nov 3, 2026
1c6e49b
CI: Bump APP_DEV_VERSION to 1.0.2.57 [skip ci]
github-actions[bot] Nov 3, 2026
406278c
Merge pull request #1726 from dnzxy/feat/drop-loopalgorithm
dnzxy Nov 3, 2026
685a0d8
CI: Bump APP_DEV_VERSION to 1.0.2.58 [skip ci]
github-actions[bot] Nov 3, 2026
e11ddab
Adopt async device deletion and track next-dev
dnzxy Nov 4, 2026
b60a0d0
Merge pull request #1738 from dnzxy/feat/async-device-deletion
dnzxy Nov 5, 2026
23bb3be
CI: Bump APP_DEV_VERSION to 1.0.2.59 [skip ci]
github-actions[bot] Nov 5, 2026
653fedf
sync(trio): merge upstream/dev at 23bb3be36
mountrcg Nov 5, 2026
5c077e4
fix(sync): drop four dangling pbxproj refs and the dead fetchedTarget…
mountrcg Nov 5, 2026
15c45e8
fix(sync): port PumpConfig delivery limits to LoopQuantity
mountrcg Nov 5, 2026
b0458cc
fix(sync): restore numberFormatter for the autoISF chart axis labels
mountrcg Nov 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 15 additions & 5 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,54 +1,64 @@
[submodule "LoopKit"]
path = LoopKit
url = https://github.com/loopandlearn/LoopKit.git
branch = trio-next-dev
[submodule "CGMBLEKit"]
path = CGMBLEKit
url = https://github.com/loopandlearn/CGMBLEKit.git
branch = trio-next-dev
[submodule "dexcom-share-client-swift"]
path = dexcom-share-client-swift
url = https://github.com/loopandlearn/dexcom-share-client-swift.git
branch = next-dev
[submodule "RileyLinkKit"]
path = RileyLinkKit
url = https://github.com/loopandlearn/RileyLinkKit
branch = trio-next-dev
[submodule "G7SensorKit"]
path = G7SensorKit
url = https://github.com/loopandlearn/G7SensorKit.git
branch = feat/trio-g7-direct
branch = trio-next-dev
[submodule "MinimedKit"]
path = MinimedKit
url = https://github.com/loopandlearn/MinimedKit.git
branch = trio-next-dev
[submodule "LibreTransmitter"]
path = LibreTransmitter
url = https://github.com/loopandlearn/LibreTransmitter.git
branch = trio-next-dev
[submodule "TidepoolService"]
path = TidepoolService
url = https://github.com/loopandlearn/TidepoolService.git
branch = trio-next-dev
[submodule "DanaKit"]
path = DanaKit
url = https://github.com/loopandlearn/DanaKit
branch = trio-next-dev
[submodule "MedtrumKit"]
path = MedtrumKit
url = https://github.com/loopandlearn/MedtrumKit
branch = trio-next-dev
[submodule "OmnipodKit"]
path = OmnipodKit
url = https://github.com/loopandlearn/OmnipodKit
branch = next-dev
[submodule "AccuChekKit"]
path = AccuChekKit
url = https://github.com/loopandlearn/AccuChekKit
branch = trio-next-dev
[submodule "EversenseKit"]
path = EversenseKit
url = https://github.com/loopandlearn/EversenseKit
branch = trio-next-dev
[submodule "RoundWhiteDiscKit"]
path = RoundWhiteDiscKit
url = https://github.com/loopandlearn/RoundWhiteDiscKit.git
branch = main
[submodule "LibreLoop"]
path = LibreLoop
url = https://github.com/loopandlearn/LibreLoop.git
branch = legacy-loopkit-compat
[submodule "LoopAlgorithm"]
path = LoopAlgorithm
url = https://github.com/loopandlearn/LoopAlgorithm.git
branch = trio-next-dev
[submodule "SyaiKit"]
path = SyaiKit
url = https://github.com/nightscout/SyaiKit
branch = trio-next-dev
2 changes: 1 addition & 1 deletion Config.xcconfig
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ TRIO_APP_GROUP_ID = group.org.nightscout.$(DEVELOPMENT_TEAM).trio.trio-app-group

// The developers set the version numbers, please leave them alone
APP_VERSION = 1.0.2
APP_DEV_VERSION = 1.0.2.42
APP_DEV_VERSION = 1.0.2.59
APP_BUILD_NUMBER = 1
COPYRIGHT_NOTICE = autoISF 3.01

Expand Down
2 changes: 1 addition & 1 deletion G7SensorKit
Submodule G7SensorKit updated 43 files
+0 −20 Common/HKUnit.swift
+264 −12 G7SensorKit.xcodeproj/project.pbxproj
+58 −0 G7SensorKit.xcodeproj/xcshareddata/xcschemes/G7SensorKit-watchOS.xcscheme
+3 −106 G7SensorKit/Crypto/G7P256.swift
+349 −0 G7SensorKit/Crypto/G7P256Field.swift
+115 −0 G7SensorKit/Crypto/G7SensorIdentity.swift
+93 −26 G7SensorKit/G7CGMManager/G7Authenticator.swift
+1 −2 G7SensorKit/G7CGMManager/G7BackfillMessage.swift
+174 −27 G7SensorKit/G7CGMManager/G7BluetoothManager.swift
+269 −52 G7SensorKit/G7CGMManager/G7CGMManager.swift
+77 −1 G7SensorKit/G7CGMManager/G7CGMManagerState.swift
+12 −0 G7SensorKit/G7CGMManager/G7CalibrationRecord.swift
+8 −1 G7SensorKit/G7CGMManager/G7LifecycleAlert.swift
+33 −0 G7SensorKit/G7CGMManager/G7PeripheralManager.swift
+115 −27 G7SensorKit/G7CGMManager/G7Sensor.swift
+5 −4 G7SensorKit/G7CGMManager/G7SensorModel.swift
+384 −0 G7SensorKit/G7CGMManager/G7WatchAcquisition.swift
+58 −8 G7SensorKit/Messages/G7CalibrationMessage.swift
+1 −2 G7SensorKit/Messages/G7GlucoseMessage.swift
+1 −2 G7SensorKit/Pairing/G7Advertisement.swift
+14 −6 G7SensorKit/Pairing/G7PairingService.swift
+6 −149 G7SensorKit/Share/G7ShareClient.swift
+65 −36 G7SensorKit/Share/G7ShareUploader.swift
+5 −0 G7SensorKitTests/G7CGMManagerTests.swift
+135 −5 G7SensorKitTests/G7CalibrationTests.swift
+205 −0 G7SensorKitTests/G7DeviceHandoffTests.swift
+89 −22 G7SensorKitTests/G7LifecycleAlertTests.swift
+77 −0 G7SensorKitTests/G7SensorIdentityTests.swift
+20 −7 G7SensorKitTests/G7SessionModeMigrationTests.swift
+172 −15 G7SensorKitTests/G7ShareTests.swift
+1 −0 G7SensorKitUI/Extensions/G7SensorModel+Image.swift
+12 −15 G7SensorKitUI/G7CGMManager/G7CGMManager+UI.swift
+10 −13 G7SensorKitUI/G7CGMManager/G7UICoordinator.swift
+5 −2 G7SensorKitUI/Localizable.xcstrings
+6 −6 G7SensorKitUI/ViewModels/G7PairingViewModel.swift
+139 −20 G7SensorKitUI/Views/G7SettingsView.swift
+63 −7 G7SensorKitUI/Views/G7SettingsViewModel.swift
+1 −0 G7SensorKitUI/Views/Onboarding/G7DexcomAppWarningView.swift
+1 −0 G7SensorKitUI/Views/Onboarding/G7NotificationPermissionsView.swift
+34 −1 G7SensorKitUI/Views/Onboarding/G7PairingSuccessView.swift
+1 −0 G7SensorKitUI/Views/Onboarding/G7PairingView.swift
+0 −222 G7SensorKitUI/Views/Share/G7ShareFollowersView.swift
+2 −0 G7SensorPlugin/Info.plist
2 changes: 1 addition & 1 deletion LibreTransmitter
Submodule LibreTransmitter updated 44 files
+10 −1 Bluetooth/Transmitter/Libre2DirectTransmitter.swift
+0 −47 Common/Extensions/DateExtensions.swift
+0 −5 Common/Extensions/DoubleExtensions.swift
+0 −33 Common/HKUnit.swift
+0 −223 Common/Settings/GlucoseSchedules.swift
+0 −202 Common/Settings/UserDefaults+Alarmsettings.swift
+10 −2 Common/Settings/UserDefaults+GlucoseSettings.swift
+83 −0 Common/Settings/UserDefaults+NotificationSettings.swift
+18 −10 Features.swift
+4 −0 Info.plist
+0 −18 LibreDemoPlugin/Extensions/HKUnit.swift
+4 −2 LibreDemoPlugin/LibreDemoCGMManager.swift
+26 −0 LibreSensor/GlucoseAlgorithm/GlucoseSmoothing.swift
+3 −1 LibreSensor/SensorContents/PreLibre2.swift
+13 −2 LibreSensor/SensorPairing/SensorPairingService.swift
+158 −0 LibreSensor/SensorPairing/SimulatedSensorPairingService.swift
+16 −63 LibreTransmitter.xcodeproj/project.pbxproj
+1 −2 LibreTransmitter/ConcreteGlucoseDisplayable.swift
+48 −6 LibreTransmitter/LibreGlucose.swift
+13 −5 LibreTransmitter/LibreTransmitterManager+Libre2EU.swift
+2 −2 LibreTransmitter/LibreTransmitterManager+Transmitters.swift
+37 −56 LibreTransmitter/LibreTransmitterManagerV3.swift
+4 −0 LibreTransmitter/Localizable.xcstrings
+3 −205 LibreTransmitter/NotificationHelper.swift
+0 −15 LibreTransmitter/NotificationHelperOverride.swift
+0 −21 LibreTransmitter/Observables/AlarmStatus.swift
+3 −3 LibreTransmitter/Observables/GlucoseInfo.swift
+5 −1 LibreTransmitterPlugin/Info.plist
+117 −7 LibreTransmitterTests/LibreTransmitterTests.swift
+9 −9 LibreTransmitterUI/LibreTransmitterManager+UI.swift
+79 −1 LibreTransmitterUI/Localizable.xcstrings
+0 −380 LibreTransmitterUI/Views/Settings/AlarmSettings/AlarmSettingsView.swift
+0 −47 LibreTransmitterUI/Views/Settings/AlarmSettings/CriticalAlarmsVolumeView.swift
+0 −260 LibreTransmitterUI/Views/Settings/AlarmSettings/CustomDataPickerView.swift
+77 −2 LibreTransmitterUI/Views/Settings/GlucoseSettingsView.swift
+1 −85 LibreTransmitterUI/Views/Settings/NotificationSettingsView.swift
+1 −31 LibreTransmitterUI/Views/Settings/SettingsView.swift
+0 −141 LibreTransmitterUI/Views/Settings/SnoozeView.swift
+0 −1 LibreTransmitterUI/Views/Setup/BluetoothSelection.swift
+3 −0 LibreTransmitterUI/Views/Setup/Libre2DirectSetup.swift
+119 −0 LibreTransmitterUI/Views/Setup/SimulatorPairingNotice.swift
+0 −8 LibreTransmitterUI/Views/Utilities/ViewExtensions.swift
+0 −45 build.md
+0 −3 readme.md
19 changes: 0 additions & 19 deletions LiveActivity/LiveActivity+Helper.swift
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,6 @@ extension Int {
var asMmolL: Decimal {
rounded(Decimal(self) * GlucoseUnits.exchangeRate, scale: 1, roundingMode: .plain)
}

var formattedAsMmolL: String {
NumberFormatter.glucoseFormatter.string(from: asMmolL as NSDecimalNumber) ?? "\(asMmolL)"
}
}

extension Decimal {
Expand All @@ -52,21 +48,6 @@ extension Decimal {
var asMgdL: Decimal {
rounded(self / GlucoseUnits.exchangeRate, scale: 0, roundingMode: .plain)
}

var formattedAsMmolL: String {
NumberFormatter.glucoseFormatter.string(from: asMmolL as NSDecimalNumber) ?? "\(asMmolL)"
}
}

extension NumberFormatter {
static let glucoseFormatter: NumberFormatter = {
let formatter = NumberFormatter()
formatter.locale = Locale.current
formatter.numberStyle = .decimal
formatter.minimumFractionDigits = 1
formatter.maximumFractionDigits = 1
return formatter
}()
}

extension LiveActivityAttributes.ContentState {
Expand Down
1 change: 0 additions & 1 deletion LoopAlgorithm
Submodule LoopAlgorithm deleted from e3f5e3
2 changes: 1 addition & 1 deletion LoopKit
Submodule LoopKit updated 505 files
2 changes: 1 addition & 1 deletion MedtrumKit
Submodule MedtrumKit updated 70 files
+1 −1 Common/NewPumpEvent.swift
+13 −2 Common/UnfinalizedDose.swift
+161 −0 Localization/Localizable.xcstrings
+2 −4 MedtrumKit.xcodeproj/project.pbxproj
+3 −0 MedtrumKit/Packets/Enums/PatchState.swift
+7 −2 MedtrumKit/PumpManager/BluetoothManager.swift
+22 −1 MedtrumKit/PumpManager/MedtrumAlert.swift
+205 −82 MedtrumKit/PumpManager/MedtrumPumpManager.swift
+11 −0 MedtrumKit/PumpManager/MedtrumPumpState.swift
+77 −2 MedtrumKit/PumpManager/StateSyncer.swift
+4 −0 MedtrumKitPlugin/Info.plist
+130 −0 MedtrumKitTests/PumpManager/BaseResetDetectionTests.swift
+2 −2 MedtrumKitUI/MedtrumKitPumpManager+UI.swift
+0 −12 MedtrumKitUI/MedtrumUI.xcassets/attach_body.imageset/Contents.json
+ − MedtrumKitUI/MedtrumUI.xcassets/attach_body.imageset/attach_to_body_kr.png
+0 −12 MedtrumKitUI/MedtrumUI.xcassets/connect_base.imageset/Contents.json
+ − MedtrumKitUI/MedtrumUI.xcassets/connect_base.imageset/connect_kr.png
+0 −12 MedtrumKitUI/MedtrumUI.xcassets/fill_reservoir.imageset/Contents.json
+ − MedtrumKitUI/MedtrumUI.xcassets/fill_reservoir.imageset/fill_kr.png
+0 −12 MedtrumKitUI/MedtrumUI.xcassets/half_press_needle_button.imageset/Contents.json
+ − MedtrumKitUI/MedtrumUI.xcassets/half_press_needle_button.imageset/d7.png
+0 −12 MedtrumKitUI/MedtrumUI.xcassets/needle_insert.imageset/Contents.json
+ − MedtrumKitUI/MedtrumUI.xcassets/needle_insert.imageset/press_needle_kr.png
+0 −12 MedtrumKitUI/MedtrumUI.xcassets/remove_cover.imageset/Contents.json
+ − MedtrumKitUI/MedtrumUI.xcassets/remove_cover.imageset/press_kr.png
+12 −0 MedtrumKitUI/MedtrumUI.xcassets/step_attach_patch.imageset/Contents.json
+ − MedtrumKitUI/MedtrumUI.xcassets/step_attach_patch.imageset/step_attach_patch.png
+12 −0 MedtrumKitUI/MedtrumUI.xcassets/step_connect_base.imageset/Contents.json
+ − MedtrumKitUI/MedtrumUI.xcassets/step_connect_base.imageset/step_connect_base.png
+12 −0 MedtrumKitUI/MedtrumUI.xcassets/step_fill_patch.imageset/Contents.json
+ − MedtrumKitUI/MedtrumUI.xcassets/step_fill_patch.imageset/step_fill_patch.png
+12 −0 MedtrumKitUI/MedtrumUI.xcassets/step_fill_syringe.imageset/Contents.json
+ − MedtrumKitUI/MedtrumUI.xcassets/step_fill_syringe.imageset/step_fill_syringe.png
+12 −0 MedtrumKitUI/MedtrumUI.xcassets/step_infusion_site.imageset/Contents.json
+ − MedtrumKitUI/MedtrumUI.xcassets/step_infusion_site.imageset/step_infusion_site.png
+12 −0 MedtrumKitUI/MedtrumUI.xcassets/step_insert_needle.imageset/Contents.json
+ − MedtrumKitUI/MedtrumUI.xcassets/step_insert_needle.imageset/step_insert_needle.png
+12 −0 MedtrumKitUI/MedtrumUI.xcassets/step_peel_liner.imageset/Contents.json
+ − MedtrumKitUI/MedtrumUI.xcassets/step_peel_liner.imageset/step_peel_liner.png
+12 −0 MedtrumKitUI/MedtrumUI.xcassets/step_press_adhesive.imageset/Contents.json
+ − MedtrumKitUI/MedtrumUI.xcassets/step_press_adhesive.imageset/step_press_adhesive.png
+12 −0 MedtrumKitUI/MedtrumUI.xcassets/step_prime.imageset/Contents.json
+ − MedtrumKitUI/MedtrumUI.xcassets/step_prime.imageset/step_prime.png
+12 −0 MedtrumKitUI/MedtrumUI.xcassets/step_remove_air.imageset/Contents.json
+ − MedtrumKitUI/MedtrumUI.xcassets/step_remove_air.imageset/step_remove_air.png
+12 −0 MedtrumKitUI/MedtrumUI.xcassets/step_remove_patch.imageset/Contents.json
+ − MedtrumKitUI/MedtrumUI.xcassets/step_remove_patch.imageset/step_remove_patch.png
+12 −0 MedtrumKitUI/MedtrumUI.xcassets/step_remove_safety_lock.imageset/Contents.json
+ − MedtrumKitUI/MedtrumUI.xcassets/step_remove_safety_lock.imageset/step_remove_safety_lock.png
+12 −0 MedtrumKitUI/MedtrumUI.xcassets/step_retract_needle.imageset/Contents.json
+ − MedtrumKitUI/MedtrumUI.xcassets/step_retract_needle.imageset/step_retract_needle.png
+12 −0 MedtrumKitUI/MedtrumUI.xcassets/step_separate_base.imageset/Contents.json
+ − MedtrumKitUI/MedtrumUI.xcassets/step_separate_base.imageset/step_separate_base.png
+12 −0 MedtrumKitUI/MedtrumUI.xcassets/step_tap_bubbles.imageset/Contents.json
+ − MedtrumKitUI/MedtrumUI.xcassets/step_tap_bubbles.imageset/step_tap_bubbles.png
+12 −0 MedtrumKitUI/MedtrumUI.xcassets/step_vial_air.imageset/Contents.json
+ − MedtrumKitUI/MedtrumUI.xcassets/step_vial_air.imageset/step_vial_air.png
+12 −8 MedtrumKitUI/ViewController/MedtrumKitUICoordinator.swift
+1 −0 MedtrumKitUI/ViewModels/Settings/ManualTempBasalViewModel.swift
+4 −5 MedtrumKitUI/ViewModels/Settings/MedtrumKitSettingsViewModel.swift
+10 −9 MedtrumKitUI/ViewModels/Settings/PatchDetailsViewModel.swift
+31 −22 MedtrumKitUI/ViewModels/Settings/PatchSettingsViewModel.swift
+10 −9 MedtrumKitUI/ViewModels/Settings/PreviousPatchDetailsViewModel.swift
+49 −65 MedtrumKitUI/Views/Onboarding/PatchActivationView.swift
+23 −0 MedtrumKitUI/Views/Onboarding/PatchDeactivationView.swift
+488 −0 MedtrumKitUI/Views/Onboarding/PatchInstructions.swift
+51 −89 MedtrumKitUI/Views/Onboarding/PatchPrimingView.swift
+1 −0 MedtrumKitUI/Views/Settings/MedtrumKitSettings.swift
+170 −151 MedtrumKitUI/Views/Settings/PatchSettingsView.swift
+346 −0 patches/update_medtrumkit_for_LoopWorkspace_tidepool-sync-2026.patch
4 changes: 4 additions & 0 deletions Model/Classes+Properties/PumpStatusStored+CoreDataClass.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import CoreData
import Foundation

@objc(PumpStatusStored) public class PumpStatusStored: NSManagedObject {}
13 changes: 13 additions & 0 deletions Model/Classes+Properties/PumpStatusStored+CoreDataProperties.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import CoreData
import Foundation

public extension PumpStatusStored {
@nonobjc class func fetchRequest() -> NSFetchRequest<PumpStatusStored> {
NSFetchRequest<PumpStatusStored>(entityName: "PumpStatusStored")
}

@NSManaged var basalDeliveryState: String?
@NSManaged var date: Date?
}

extension PumpStatusStored: Identifiable {}
32 changes: 32 additions & 0 deletions Model/Helper/PumpStatusStored+helper.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import CoreData
import Foundation

extension PumpStatusStored {
/// Basal delivery as the pump manager reports it. Temp basals and their transitions count as active.
enum DeliveryState: String {
case active
/// Delivery active since `.distantPast`, which Omnipod reports while no pod is active.
case inactive
case suspending
case suspended
case resuming
/// No basal delivery state, or no pump.
case unknown
}

static func fetchLast() -> NSFetchRequest<PumpStatusStored> {
let request = PumpStatusStored.fetchRequest()
request.sortDescriptors = [NSSortDescriptor(keyPath: \PumpStatusStored.date, ascending: false)]
request.fetchLimit = 1
return request
}

var deliveryState: DeliveryState {
basalDeliveryState.flatMap(DeliveryState.init(rawValue:)) ?? .unknown
}

/// Without a pump manager nothing is bolusing, and the timestamp is when the stored state began.
var pumpStatus: PumpStatus {
PumpStatus(deliveryState: deliveryState, bolusing: false, timestamp: date)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,13 @@
</uniquenessConstraint>
</uniquenessConstraints>
</entity>
<entity name="PumpStatusStored" representedClassName="PumpStatusStored" syncable="YES">
<attribute name="basalDeliveryState" optional="YES" attributeType="String"/>
<attribute name="date" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
<fetchIndex name="byDate">
<fetchIndexElement property="date" type="Binary" order="descending"/>
</fetchIndex>
</entity>
<entity name="StatsData" representedClassName="StatsData" syncable="YES">
<attribute name="lastrun" attributeType="Date" defaultDateTimeInterval="704497620" usesScalarValueType="NO"/>
</entity>
Expand Down
2 changes: 1 addition & 1 deletion OmnipodKit
Submodule OmnipodKit updated 33 files
+21 −0 LICENSE
+21 −0 Localization/Localizable.xcstrings
+6 −0 OmniTests/AcknowledgeAlertsTests.swift
+1 −1 OmniTests/PodCommsSessionTests.swift
+20 −0 OmniTests/PodStateTests.swift
+1 −1 OmnipodKit/Bluetooth/BleMessageTransport.swift
+8 −0 OmnipodKit/Bluetooth/BlePodComms.swift
+18 −2 OmnipodKit/Bluetooth/PeripheralManagerError.swift
+20 −7 OmnipodKit/Bluetooth/PodProtocolError.swift
+2 −2 OmnipodKit/Bluetooth/Session/Milenage.swift
+11 −11 OmnipodKit/Bluetooth/Session/SessionEstablisher.swift
+0 −25 OmnipodKit/Common/HKUnit.swift
+13 −0 OmnipodKit/OmnipodCommon/PodType.swift
+2 −3 OmnipodKit/OmnipodCommon/PumpManagerAlert.swift
+14 −0 OmnipodKit/OmnipodCommon/UnfinalizedDose.swift
+202 −131 OmnipodKit/PumpManager/OmniPumpManager.swift
+1 −1 OmnipodKit/PumpManager/OmniPumpManagerState.swift
+7 −38 OmnipodKit/PumpManager/PodCommsSession.swift
+7 −4 OmnipodKit/PumpManager/PodState.swift
+5 −1 OmnipodKit/PumpManagerUI/OmniPumpManager+UI.swift
+4 −4 OmnipodKit/PumpManagerUI/ViewControllers/OmniUICoordinator.swift
+9 −11 OmnipodKit/PumpManagerUI/ViewModels/OmniSettingsViewModel.swift
+1 −1 OmnipodKit/PumpManagerUI/Views/CheckInsertedCannulaView.swift
+10 −6 OmnipodKit/PumpManagerUI/Views/ExpirationReminderPickerView.swift
+1 −1 OmnipodKit/PumpManagerUI/Views/ExpirationReminderSetupView.swift
+1 −2 OmnipodKit/PumpManagerUI/Views/LowReservoirView.swift
+21 −11 OmnipodKit/PumpManagerUI/Views/ManualTempBasalEntryView.swift
+1 −2 OmnipodKit/PumpManagerUI/Views/NotificationSettingsView.swift
+11 −6 OmnipodKit/PumpManagerUI/Views/OmniSettingsView.swift
+1 −0 OmnipodKit/PumpManagerUI/Views/TimeView.swift
+4 −0 OmnipodKitPlugin/Info.plist
+33 −12 README.md
+0 −825 patches/update_omnipodkit_for_LoopWorkspace_next-dev-with-ble-heartbeat.patch
2 changes: 1 addition & 1 deletion TidepoolService
Submodule TidepoolService updated 29 files
+1 −1 Cartfile.resolved
+251 −7 TidepoolService.xcodeproj/project.pbxproj
+1 −1 TidepoolService.xcodeproj/xcshareddata/xcschemes/Shared.xcscheme
+143 −0 TidepoolServiceKit/DeviceLogUploader.swift
+198 −9 TidepoolServiceKit/Extensions/DoseEntry.swift
+3 −4 TidepoolServiceKit/Extensions/Double.swift
+1 −2 TidepoolServiceKit/Extensions/GlucoseRangeSchedule.swift
+0 −31 TidepoolServiceKit/Extensions/HKUnit.swift
+33 −0 TidepoolServiceKit/Extensions/PersistedPumpEvent.swift
+1 −2 TidepoolServiceKit/Extensions/SingleQuantitySchedule.swift
+16 −8 TidepoolServiceKit/Extensions/StoredDosingDecision.swift
+4 −0 TidepoolServiceKit/Extensions/StoredGlucoseSample.swift
+6 −137 TidepoolServiceKit/Extensions/StoredSettings.swift
+1 −1 TidepoolServiceKit/Extensions/SyncCarbObject.swift
+1 −1 TidepoolServiceKit/Extensions/TDatum.swift
+124 −0 TidepoolServiceKit/Extensions/TemporaryScheduleOverride.swift
+118 −196 TidepoolServiceKit/TidepoolService.swift
+5 −1 TidepoolServiceKitPlugin/Info.plist
+161 −13 TidepoolServiceKitTests/Extensions/DoseEntryTests.swift
+5 −3 TidepoolServiceKitTests/Extensions/PersistedPumpEventTests.swift
+15 −16 TidepoolServiceKitTests/Extensions/StoredDosingDecisionTests.swift
+9 −10 TidepoolServiceKitTests/Extensions/StoredGlucoseSampleTests.swift
+4 −67 TidepoolServiceKitTests/Extensions/StoredSettingsTests.swift
+0 −1 TidepoolServiceKitTests/Extensions/SyncCarbObjectTests.swift
+6 −72 TidepoolServiceKitTests/TidepoolServiceTests.swift
+20 −0 TidepoolServiceKitUI/Extensions/EnvironmentValues.swift
+3 −0 TidepoolServiceKitUI/Localizable.xcstrings
+27 −6 TidepoolServiceKitUI/SettingsView.swift
+13 −9 TidepoolServiceKitUI/TidepoolService+UI.swift
Loading
Loading