From 4283c29a136c94f1a3419176b3df9117b57cc7da Mon Sep 17 00:00:00 2001 From: marionbarker Date: Sun, 21 Jun 2026 12:25:26 -0700 Subject: [PATCH 01/57] Bump version to 3.14.3 --- VersionOverride.xcconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VersionOverride.xcconfig b/VersionOverride.xcconfig index 5253477701..038d663c2f 100644 --- a/VersionOverride.xcconfig +++ b/VersionOverride.xcconfig @@ -8,5 +8,5 @@ // Version [for DIY Loop] // configure the version number in LoopWorkspace -LOOP_MARKETING_VERSION = 3.14.2 +LOOP_MARKETING_VERSION = 3.14.3 CURRENT_PROJECT_VERSION = 57 From 2b4168ffe34bcc87e409e25045d59bdb734402fd Mon Sep 17 00:00:00 2001 From: marionbarker Date: Sun, 21 Jun 2026 12:26:58 -0700 Subject: [PATCH 02/57] update EversenseKit: wait for write lock to be released --- EversenseKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EversenseKit b/EversenseKit index 43b808002f..b79d85800d 160000 --- a/EversenseKit +++ b/EversenseKit @@ -1 +1 @@ -Subproject commit 43b808002ffb88f29dc628cb609ca06eca8c7aeb +Subproject commit b79d85800d667e105f897d7b650d62fb4b65e76f From cecb8233f8222067b8c9e4af4d5fd7792fa897a3 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Sun, 21 Jun 2026 12:38:03 -0700 Subject: [PATCH 03/57] update to fastlane 2.236.1 --- Gemfile | 2 +- Gemfile.lock | 96 ++++++++++++++++++++++++++++------------------------ 2 files changed, 52 insertions(+), 46 deletions(-) diff --git a/Gemfile b/Gemfile index 0eb90cb08b..4d2c972bab 100644 --- a/Gemfile +++ b/Gemfile @@ -1,2 +1,2 @@ source "https://rubygems.org" -gem "fastlane", "2.235.0" +gem "fastlane", "2.236.1" diff --git a/Gemfile.lock b/Gemfile.lock index 0089a8cdb4..87c90e0112 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -8,8 +8,8 @@ GEM artifactory (3.0.17) atomos (0.1.3) aws-eventstream (1.4.0) - aws-partitions (1.1206.0) - aws-sdk-core (3.241.4) + aws-partitions (1.1261.0) + aws-sdk-core (3.252.0) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) aws-sigv4 (~> 1.9) @@ -17,19 +17,19 @@ GEM bigdecimal jmespath (~> 1, >= 1.6.1) logger - aws-sdk-kms (1.121.0) - aws-sdk-core (~> 3, >= 3.241.4) + aws-sdk-kms (1.129.0) + aws-sdk-core (~> 3, >= 3.248.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.211.0) - aws-sdk-core (~> 3, >= 3.241.3) + aws-sdk-s3 (1.226.0) + aws-sdk-core (~> 3, >= 3.248.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) aws-sigv4 (1.12.1) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) - base64 (0.2.0) + base64 (0.3.0) benchmark (0.5.0) - bigdecimal (4.0.1) + bigdecimal (4.1.2) claide (1.1.0) colored (1.2) colored2 (3.1.2) @@ -71,8 +71,8 @@ GEM faraday-retry (1.0.4) faraday_middleware (1.2.1) faraday (~> 1.0) - fastimage (2.4.0) - fastlane (2.235.0) + fastimage (2.4.1) + fastlane (2.236.1) CFPropertyList (>= 2.3, < 5.0.0) abbrev (~> 0.1) addressable (>= 2.8, < 3.0.0) @@ -101,9 +101,10 @@ GEM highline (~> 2.0) http-cookie (~> 1.0.5) json (< 3.0.0) - jwt (>= 2.1.0, < 4) + jwt (>= 2.10.3, < 4) logger (>= 1.6, < 2.0) mini_magick (>= 4.9.4, < 5.0.0) + multi_json (~> 1.12) multipart-post (>= 2.0.0, < 3.0.0) mutex_m (~> 0.3) naturally (~> 2.2) @@ -124,41 +125,46 @@ GEM xcpretty-travis-formatter (>= 0.0.3, < 2.0.0) fastlane-sirp (1.1.0) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.54.0) - google-apis-core (>= 0.11.0, < 2.a) - google-apis-core (0.11.3) + google-apis-androidpublisher_v3 (0.103.0) + google-apis-core (>= 0.15.0, < 2.a) + google-apis-core (0.18.0) addressable (~> 2.5, >= 2.5.1) - googleauth (>= 0.16.2, < 2.a) - httpclient (>= 2.8.1, < 3.a) + googleauth (~> 1.9) + httpclient (>= 2.8.3, < 3.a) mini_mime (~> 1.0) + mutex_m representable (~> 3.0) retriable (>= 2.0, < 4.a) - rexml - google-apis-iamcredentials_v1 (0.17.0) - google-apis-core (>= 0.11.0, < 2.a) - google-apis-playcustomapp_v1 (0.13.0) - google-apis-core (>= 0.11.0, < 2.a) - google-apis-storage_v1 (0.31.0) - google-apis-core (>= 0.11.0, < 2.a) - google-cloud-core (1.8.0) + google-apis-iamcredentials_v1 (0.28.0) + google-apis-core (>= 0.15.0, < 2.a) + google-apis-playcustomapp_v1 (0.18.0) + google-apis-core (>= 0.15.0, < 2.a) + google-apis-storage_v1 (0.64.0) + google-apis-core (>= 0.15.0, < 2.a) + google-cloud-core (1.9.0) google-cloud-env (>= 1.0, < 3.a) google-cloud-errors (~> 1.0) - google-cloud-env (1.6.0) - faraday (>= 0.17.3, < 3.0) - google-cloud-errors (1.5.0) - google-cloud-storage (1.47.0) + google-cloud-env (2.2.2) + base64 (~> 0.2) + faraday (>= 1.0, < 3.a) + google-cloud-errors (1.6.0) + google-cloud-storage (1.61.0) addressable (~> 2.8) digest-crc (~> 0.4) - google-apis-iamcredentials_v1 (~> 0.1) - google-apis-storage_v1 (~> 0.31.0) + google-apis-core (>= 0.18, < 2) + google-apis-iamcredentials_v1 (~> 0.18) + google-apis-storage_v1 (>= 0.42) google-cloud-core (~> 1.6) - googleauth (>= 0.16.2, < 2.a) + googleauth (~> 1.9) mini_mime (~> 1.0) - googleauth (1.8.1) - faraday (>= 0.17.3, < 3.a) - jwt (>= 1.4, < 3.0) - multi_json (~> 1.11) + google-logging-utils (0.2.0) + googleauth (1.17.1) + faraday (>= 1.0, < 3.a) + google-cloud-env (~> 2.2) + google-logging-utils (~> 0.1) + jwt (>= 1.4, < 4.0) os (>= 0.9, < 2.0) + pstore (~> 0.1) signet (>= 0.16, < 2.a) highline (2.0.3) http-cookie (1.0.8) @@ -166,39 +172,39 @@ GEM httpclient (2.9.0) mutex_m jmespath (1.6.2) - json (2.19.4) - jwt (2.10.2) + json (2.19.9) + jwt (3.2.0) base64 logger (1.7.0) mini_magick (4.13.2) mini_mime (1.1.5) - multi_json (1.19.1) + multi_json (1.21.1) multipart-post (2.4.1) mutex_m (0.3.0) nanaimo (0.4.0) naturally (2.3.0) - nkf (0.2.0) + nkf (0.3.0) optparse (0.8.1) os (1.1.4) ostruct (0.6.3) plist (3.7.2) - public_suffix (7.0.2) - rake (13.3.1) + pstore (0.2.1) + public_suffix (7.0.5) + rake (13.4.2) representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) - retriable (3.1.2) + retriable (3.8.0) rexml (3.4.4) rouge (3.28.0) ruby2_keywords (0.0.5) rubyzip (2.4.1) security (0.1.5) - signet (0.21.0) + signet (0.22.0) addressable (~> 2.8) faraday (>= 0.17.5, < 3.a) jwt (>= 1.5, < 4.0) - multi_json (~> 1.10) simctl (1.6.10) CFPropertyList naturally @@ -230,7 +236,7 @@ PLATFORMS ruby DEPENDENCIES - fastlane (= 2.235.0) + fastlane (= 2.236.1) BUNDLED WITH 4.0.12 From 4d834fb1e3365db4289a99365acfac8da0ebf86e Mon Sep 17 00:00:00 2001 From: marionbarker Date: Sun, 21 Jun 2026 12:40:06 -0700 Subject: [PATCH 04/57] update GitHub action to use Xcode 26.5, * matches default Xcode for macos-26 runners --- .github/workflows/build_loop.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_loop.yml b/.github/workflows/build_loop.yml index 9dab27ff57..52c00dedb2 100644 --- a/.github/workflows/build_loop.yml +++ b/.github/workflows/build_loop.yml @@ -175,7 +175,7 @@ jobs: (vars.SCHEDULED_SYNC != 'false' && needs.check_status.outputs.NEW_COMMITS == 'true' ) steps: - name: Select Xcode version - run: "sudo xcode-select --switch /Applications/Xcode_26.4.app/Contents/Developer" + run: "sudo xcode-select --switch /Applications/Xcode_26.5.app/Contents/Developer" - name: Checkout Repo for building uses: actions/checkout@v5 From 29512d2ec0c11cc61fa7a0423ed2dbebf08d0868 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Wed, 24 Jun 2026 17:00:08 -0700 Subject: [PATCH 05/57] update MedtrumKit: include PR 147, 148, 151; * fix navigation titles; * add LoopKit Alerts; * fix prevent deactivation while bolus is in progress; * fix duplicate reservoir update; * update translations; --- MedtrumKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MedtrumKit b/MedtrumKit index 60607476f2..3ad0979a3c 160000 --- a/MedtrumKit +++ b/MedtrumKit @@ -1 +1 @@ -Subproject commit 60607476f2e27ad02b9fe25af4d93fe713eccacf +Subproject commit 3ad0979a3c8fc36c2d48a76da8ea70ef2132943a From 03ca0bf7a849c123f597938aec6d9885825a930c Mon Sep 17 00:00:00 2001 From: marionbarker Date: Fri, 26 Jun 2026 11:45:04 -0700 Subject: [PATCH 06/57] update NightscoutKit and NightscoutService: report build environment and charging status --- .../xcshareddata/swiftpm/Package.resolved | 4 ++-- NightscoutService | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/LoopWorkspace.xcworkspace/xcshareddata/swiftpm/Package.resolved b/LoopWorkspace.xcworkspace/xcshareddata/swiftpm/Package.resolved index 85b387d04a..7c29bfd5f5 100644 --- a/LoopWorkspace.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/LoopWorkspace.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "7645108625333b4ec60e0e439db0c0dc8a91ad0942d36797c6b66208a9082ea2", + "originHash" : "8ea6e3a03561298c71ae41233e1f296e560815044250ac4de43a3e5985502b43", "pins" : [ { "identity" : "amplitude-ios", @@ -106,7 +106,7 @@ "location" : "https://github.com/LoopKit/NightscoutKit", "state" : { "branch" : "main", - "revision" : "ca8e2cea82ab465282cd180ce01d64c1cf25478d" + "revision" : "4ec9fd12a16b5d6c2de4f11870511361d42e1b7f" } }, { diff --git a/NightscoutService b/NightscoutService index 7721a8da0d..4f89c9a797 160000 --- a/NightscoutService +++ b/NightscoutService @@ -1 +1 @@ -Subproject commit 7721a8da0de4f69fbc6994bdaa5c860ba9a99ede +Subproject commit 4f89c9a79794110919b4ad8f8094c621ebc4135b From 8e2167de5a71fdcade71cfe5a4f0ff0b67da2c5c Mon Sep 17 00:00:00 2001 From: marionbarker Date: Fri, 26 Jun 2026 20:40:21 -0700 Subject: [PATCH 07/57] Updated translations from lokalise on Fri Jun 26 12:54:46 PDT 2026 --- G7SensorKit | 2 +- Loop | 2 +- LoopKit | 2 +- MinimedKit | 2 +- OmnipodKit | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/G7SensorKit b/G7SensorKit index 890e60754d..78cf94f69b 160000 --- a/G7SensorKit +++ b/G7SensorKit @@ -1 +1 @@ -Subproject commit 890e60754ded6b1610c8b8fac7a3c026bf704a64 +Subproject commit 78cf94f69b282b56d76015f7bc253082f4ead136 diff --git a/Loop b/Loop index 1f71ec4fa9..e3761d317a 160000 --- a/Loop +++ b/Loop @@ -1 +1 @@ -Subproject commit 1f71ec4fa94941abdbd72fd5bd914770faa2e90b +Subproject commit e3761d317a3290571e8e7aca1819d4ce05a3ad30 diff --git a/LoopKit b/LoopKit index e7e2ee2b54..7f32702789 160000 --- a/LoopKit +++ b/LoopKit @@ -1 +1 @@ -Subproject commit e7e2ee2b546c4d8122014838cb98a0e26dd91208 +Subproject commit 7f327027899ceda923202230777f3b1379655100 diff --git a/MinimedKit b/MinimedKit index 106467e8f8..60c46f50b3 160000 --- a/MinimedKit +++ b/MinimedKit @@ -1 +1 @@ -Subproject commit 106467e8f8effeae5a2872d121a33b548350f25c +Subproject commit 60c46f50b3fda0628da6f89f312d17c1a629cff4 diff --git a/OmnipodKit b/OmnipodKit index d68699c8cb..7e348f107a 160000 --- a/OmnipodKit +++ b/OmnipodKit @@ -1 +1 @@ -Subproject commit d68699c8cbaa2623375d4ae8576634101c6850b9 +Subproject commit 7e348f107a2253d0f31fa4de805c3bbf5b620153 From 724e68d24360a3bfe48c69484f4acd4987eaef63 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Sat, 27 Jun 2026 12:01:04 -0700 Subject: [PATCH 08/57] Updated translations from lokalise on Sat Jun 27 09:48:15 PDT 2026 --- OmnipodKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OmnipodKit b/OmnipodKit index 7e348f107a..3344095ea3 160000 --- a/OmnipodKit +++ b/OmnipodKit @@ -1 +1 @@ -Subproject commit 7e348f107a2253d0f31fa4de805c3bbf5b620153 +Subproject commit 3344095ea3f7238ca0cc4b08ea51c743b11cf862 From cf265f1ba4fe7c44d69c44cd3fdfe0dd46736dab Mon Sep 17 00:00:00 2001 From: marionbarker Date: Mon, 29 Jun 2026 22:20:42 -0700 Subject: [PATCH 09/57] update EversenseKit: fix time setting --- EversenseKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EversenseKit b/EversenseKit index b79d85800d..7d0789322b 160000 --- a/EversenseKit +++ b/EversenseKit @@ -1 +1 @@ -Subproject commit b79d85800d667e105f897d7b650d62fb4b65e76f +Subproject commit 7d0789322b47ba92e95ed670b959a8335dc134c8 From 4e5ce16657241195dc56f544e91f345245c7c467 Mon Sep 17 00:00:00 2001 From: David Aghaian <16483722+daghaian@users.noreply.github.com> Date: Tue, 30 Jun 2026 06:17:57 -0700 Subject: [PATCH 10/57] Merge pull request #461 from daghaian-loop-org/add-build-autotrigger feat: create new build_loop_auto file to prevent disabling by GitHub --- .github/workflows/build_loop.yml | 10 +- .github/workflows/build_loop_auto.yml | 263 ++++++++++++++++++++++++++ 2 files changed, 266 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/build_loop_auto.yml diff --git a/.github/workflows/build_loop.yml b/.github/workflows/build_loop.yml index 52c00dedb2..d359aa429c 100644 --- a/.github/workflows/build_loop.yml +++ b/.github/workflows/build_loop.yml @@ -1,11 +1,7 @@ -name: 4. Build Loop -run-name: Build Loop (${{ github.ref_name }}) +name: 4. Build Loop Manual +run-name: Build Loop Manual (${{ github.ref_name }}) on: workflow_dispatch: - schedule: - # Check for updates every Sunday - # Later logic builds if there are updates or if it is the 2nd Sunday of the month - - cron: "33 7 * * 0" # Sunday at UTC 7:33 env: GH_PAT: ${{ secrets.GH_PAT }} @@ -260,4 +256,4 @@ jobs: name: build-artifacts path: | artifacts - buildlog + buildlog \ No newline at end of file diff --git a/.github/workflows/build_loop_auto.yml b/.github/workflows/build_loop_auto.yml new file mode 100644 index 0000000000..b371b01523 --- /dev/null +++ b/.github/workflows/build_loop_auto.yml @@ -0,0 +1,263 @@ +name: 4. Build Loop Auto +run-name: Build Loop Auto (${{ github.ref_name }}) +on: + workflow_dispatch: + schedule: + # Check for updates every Sunday + # Later logic builds if there are updates or if it is the 2nd Sunday of the month + - cron: "33 7 * * 0" # Sunday at UTC 7:33 + +env: + GH_PAT: ${{ secrets.GH_PAT }} + UPSTREAM_REPO: LoopKit/LoopWorkspace + UPSTREAM_BRANCH: ${{ github.ref_name }} # branch on upstream repository to sync from (replace with specific branch name if needed) + TARGET_BRANCH: ${{ github.ref_name }} # target branch on fork to be kept in sync + +jobs: + # use a single runner for these sequential steps + check_status: + runs-on: ubuntu-latest + name: Check status to decide whether to build + permissions: + contents: write + outputs: + NEW_COMMITS: ${{ steps.sync.outputs.has_new_commits }} + IS_SECOND_IN_MONTH: ${{ steps.date-check.outputs.is_second_instance }} + + # Check GH_PAT, sync repository, check day in month + steps: + + - name: Access + id: workflow-permission + run: | + # Validate Access Token + + # Ensure that gh exit codes are handled when output is piped. + set -o pipefail + + # Define patterns to validate the access token (GH_PAT) and distinguish between classic and fine-grained tokens. + GH_PAT_CLASSIC_PATTERN='^ghp_[a-zA-Z0-9]{36}$' + GH_PAT_FINE_GRAINED_PATTERN='^github_pat_[a-zA-Z0-9]{22}_[a-zA-Z0-9]{59}$' + + # Validate Access Token (GH_PAT) + if [ -z "$GH_PAT" ]; then + failed=true + echo "::error::The GH_PAT secret is unset or empty. Set it and try again." + else + if [[ $GH_PAT =~ $GH_PAT_CLASSIC_PATTERN ]]; then + provides_scopes=true + echo "The GH_PAT secret is a structurally valid classic token." + elif [[ $GH_PAT =~ $GH_PAT_FINE_GRAINED_PATTERN ]]; then + echo "The GH_PAT secret is a structurally valid fine-grained token." + else + unknown_format=true + echo "The GH_PAT secret does not have a known token format." + fi + + # Attempt to capture the x-oauth-scopes scopes of the token. + if ! scopes=$(curl -sS -f -I -H "Authorization: token $GH_PAT" https://api.github.com | { grep -i '^x-oauth-scopes:' || true; } | cut -d ' ' -f2- | tr -d '\r'); then + failed=true + if [ $unknown_format ]; then + echo "::error::Unable to connect to GitHub using the GH_PAT secret. Verify that it is set correctly (including the 'ghp_' or 'github_pat_' prefix) and try again." + else + echo "::error::Unable to connect to GitHub using the GH_PAT secret. Verify that the token exists and has not expired at https://github.com/settings/tokens. If necessary, regenerate or create a new token (and update the secret), then try again." + fi + elif [[ $scopes =~ workflow ]]; then + echo "The GH_PAT secret has repo and workflow permissions." + echo "has_permission=true" >> $GITHUB_OUTPUT + elif [[ $scopes =~ repo ]]; then + echo "The GH_PAT secret has repo (but not workflow) permissions." + elif [ $provides_scopes ]; then + failed=true + if [ -z "$scopes" ]; then + echo "The GH_PAT secret is valid and can be used to connect to GitHub, but it does not provide any permission scopes." + else + echo "The GH_PAT secret is valid and can be used to connect to GitHub, but it only provides the following permission scopes: $scopes" + fi + echo "::error::The GH_PAT secret is lacking at least the 'repo' permission scope required to access the Match-Secrets repository. Update the token permissions at https://github.com/settings/tokens (to include the 'repo' and 'workflow' scopes) and try again." + else + echo "The GH_PAT secret is valid and can be used to connect to GitHub, but it does not provide inspectable scopes. Assuming that the 'repo' and 'workflow' permission scopes required to access the Match-Secrets repository and perform automations are present." + echo "has_permission=true" >> $GITHUB_OUTPUT + fi + fi + + # Exit unsuccessfully if secret validation failed. + if [ $failed ]; then + exit 2 + fi + + - name: Checkout target repo + if: | + steps.workflow-permission.outputs.has_permission == 'true' && + (vars.SCHEDULED_BUILD != 'false' || vars.SCHEDULED_SYNC != 'false') + uses: actions/checkout@v5 + with: + token: ${{ secrets.GH_PAT }} + + # This syncs any target branch to upstream branch of the same name + - name: Sync upstream changes + if: | # do not run the upstream sync action on the upstream repository + steps.workflow-permission.outputs.has_permission == 'true' && + vars.SCHEDULED_SYNC != 'false' && github.repository_owner != 'LoopKit' + id: sync + uses: aormsby/Fork-Sync-With-Upstream-action@v3.4.2 + with: + target_sync_branch: ${{ env.TARGET_BRANCH }} + shallow_since: 6 months ago + target_repo_token: ${{ secrets.GH_PAT }} + upstream_sync_branch: ${{ env.UPSTREAM_BRANCH }} + upstream_sync_repo: ${{ env.UPSTREAM_REPO }} + + # Display a sample message based on the sync output var 'has_new_commits' + - name: New commits found + if: | + steps.workflow-permission.outputs.has_permission == 'true' && + vars.SCHEDULED_SYNC != 'false' && steps.sync.outputs.has_new_commits == 'true' + run: echo "New commits were found to sync." + + - name: No new commits + if: | + steps.workflow-permission.outputs.has_permission == 'true' && + vars.SCHEDULED_SYNC != 'false' && steps.sync.outputs.has_new_commits == 'false' + run: echo "There were no new commits." + + - name: Show value of 'has_new_commits' + if: steps.workflow-permission.outputs.has_permission == 'true' && vars.SCHEDULED_SYNC != 'false' + run: | + echo ${{ steps.sync.outputs.has_new_commits }} + echo "NEW_COMMITS=${{ steps.sync.outputs.has_new_commits }}" >> $GITHUB_OUTPUT + + - name: Show scheduled build configuration message + if: steps.workflow-permission.outputs.has_permission != 'true' + run: | + echo "### :calendar: Scheduled Sync and Build Disabled :mobile_phone_off:" >> $GITHUB_STEP_SUMMARY + echo "You have not yet configured the scheduled sync and build for Loop's browser build." >> $GITHUB_STEP_SUMMARY + echo "Synchronizing your fork of LoopWorkspace with the upstream repository LoopKit/LoopWorkspace will be skipped." >> $GITHUB_STEP_SUMMARY + echo "If you want to enable automatic builds and updates for your Loop, please follow the instructions \ + under the following path LoopWorkspace/fastlane/testflight.md." >> $GITHUB_STEP_SUMMARY + + # Set a logic flag if this is the second instance of this day-of-week in this month + - name: Check if this is the second time this day-of-week happens this month + id: date-check + run: | + DAY_OF_MONTH=$(date +%-d) + WEEK_OF_MONTH=$(( ($(date +%-d) - 1) / 7 + 1 )) + if [[ $WEEK_OF_MONTH -eq 2 ]]; then + echo "is_second_instance=true" >> "$GITHUB_OUTPUT" + else + echo "is_second_instance=false" >> "$GITHUB_OUTPUT" + fi + + # Checks if Distribution certificate is present and valid, optionally nukes and + # creates new certs if the repository variable ENABLE_NUKE_CERTS == 'true' + # only run if a build is planned + check_certs: + needs: [check_status] + name: Check certificates + uses: ./.github/workflows/create_certs.yml + secrets: inherit + if: | + github.event_name == 'workflow_dispatch' || + (vars.SCHEDULED_BUILD != 'false' && needs.check_status.outputs.IS_SECOND_IN_MONTH == 'true') || + (vars.SCHEDULED_SYNC != 'false' && needs.check_status.outputs.NEW_COMMITS == 'true' ) + + # Builds Loop + build: + name: Build + needs: [check_certs, check_status] + runs-on: macos-26 + permissions: + contents: write + if: + | # builds with manual start; if scheduled: once a month or when new commits are found + github.event_name == 'workflow_dispatch' || + (vars.SCHEDULED_BUILD != 'false' && needs.check_status.outputs.IS_SECOND_IN_MONTH == 'true') || + (vars.SCHEDULED_SYNC != 'false' && needs.check_status.outputs.NEW_COMMITS == 'true' ) + steps: + - name: Select Xcode version + run: "sudo xcode-select --switch /Applications/Xcode_26.5.app/Contents/Developer" + + - name: Checkout Repo for building + uses: actions/checkout@v5 + with: + token: ${{ secrets.GH_PAT }} + submodules: recursive + ref: ${{ env.TARGET_BRANCH }} + + # Customize Loop: Download and apply patches + - name: Customize Loop + run: | + + # LoopWorkspace patches + # -applies any patches located in the LoopWorkspace/patches/ directory + if $(ls ./patches/* &> /dev/null); then + git apply ./patches/* --allow-empty -v --whitespace=fix + fi + + # Submodule Loop patches: + # Template for customizing submodule Loop (changes Loop app name to "CustomLoop") + # Remove the "#" sign from the beginning of the line below to activate: + #curl https://github.com/loopnlearn/Loop/commit/d206432b024279ef710df462b20bd464cd9682d4.patch | git apply --directory=Loop -v --whitespace=fix + + # Submodule LoopKit patches: + # General template for customizing submodule LoopKit + # Copy url from a GitHub commit or pull request and insert below, and remove the "#" sign from the beginning of the line to activate: + #curl url_to_github_commit.patch | git apply --directory=LoopKit -v --whitespace=fix + + # Submodule xxxxx patches: + + # Add patches for customization of additional submodules by following the templates above, + # and make sure to specify the submodule by setting "--directory=(submodule_name)". + # Several patches may be added per submodule. + # Adding comments (#) may be useful to easily tell the individual patches apart. + + # Patch Fastlane Match to not print tables + - name: Patch Match Tables + run: | + TABLE_PRINTER_PATH=$(ruby -e 'puts Gem::Specification.find_by_name("fastlane").gem_dir')/match/lib/match/table_printer.rb + if [ -f "$TABLE_PRINTER_PATH" ]; then + sed -i "" "/puts(Terminal::Table.new(params))/d" "$TABLE_PRINTER_PATH" + else + echo "table_printer.rb not found" + exit 1 + fi + + # Install project dependencies + - name: Install Project Dependencies + run: bundle install + + # Sync the GitHub runner clock with the Windows time server (workaround as suggested in https://github.com/actions/runner/issues/2996) + - name: Sync clock + run: sudo sntp -sS time.windows.com + + # Build signed Loop IPA file + - name: Fastlane Build & Archive + run: bundle exec fastlane build_loop + env: + TEAMID: ${{ secrets.TEAMID }} + GH_PAT: ${{ secrets.GH_PAT }} + FASTLANE_KEY_ID: ${{ secrets.FASTLANE_KEY_ID }} + FASTLANE_ISSUER_ID: ${{ secrets.FASTLANE_ISSUER_ID }} + FASTLANE_KEY: ${{ secrets.FASTLANE_KEY }} + MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} + + # Upload to TestFlight + - name: Fastlane upload to TestFlight + run: bundle exec fastlane release + env: + TEAMID: ${{ secrets.TEAMID }} + GH_PAT: ${{ secrets.GH_PAT }} + FASTLANE_KEY_ID: ${{ secrets.FASTLANE_KEY_ID }} + FASTLANE_ISSUER_ID: ${{ secrets.FASTLANE_ISSUER_ID }} + FASTLANE_KEY: ${{ secrets.FASTLANE_KEY }} + MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} + + # Upload Build artifacts + - name: Upload build log, IPA and Symbol artifacts + if: always() + uses: actions/upload-artifact@v6 + with: + name: build-artifacts + path: | + artifacts + buildlog \ No newline at end of file From 4176bb2a3cadf954ef38917848018a5b17d4e7e5 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Tue, 30 Jun 2026 09:20:45 -0700 Subject: [PATCH 11/57] update OmnipodKit: provide code to support Omnipod 5 pods with token --- OmnipodKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OmnipodKit b/OmnipodKit index 3344095ea3..54d43f1c7f 160000 --- a/OmnipodKit +++ b/OmnipodKit @@ -1 +1 @@ -Subproject commit 3344095ea3f7238ca0cc4b08ea51c743b11cf862 +Subproject commit 54d43f1c7f4fda54484125f26f90bc527484fa59 From c6a2d39b965cd8cc7f59fdec383a095b007b8336 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Tue, 30 Jun 2026 16:30:07 -0700 Subject: [PATCH 12/57] update OmnipodKit: localizations and improved status updates with faults --- OmnipodKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OmnipodKit b/OmnipodKit index 54d43f1c7f..08c4efe25f 160000 --- a/OmnipodKit +++ b/OmnipodKit @@ -1 +1 @@ -Subproject commit 54d43f1c7f4fda54484125f26f90bc527484fa59 +Subproject commit 08c4efe25f224b552e6c48fdcf6d1b33970e7c12 From 41dad8aa40dfb5428bff5984daa73d500e44c7e8 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Wed, 1 Jul 2026 14:07:21 -0700 Subject: [PATCH 13/57] update G7SensorKit: Extend displaying remaining lifetime from 24 to 48 hrs --- G7SensorKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/G7SensorKit b/G7SensorKit index 78cf94f69b..0c87905297 160000 --- a/G7SensorKit +++ b/G7SensorKit @@ -1 +1 @@ -Subproject commit 78cf94f69b282b56d76015f7bc253082f4ead136 +Subproject commit 0c87905297b70a7f0fa41e87fa0fbe1efff6c29f From ae75603c8484f72ee283432bceb61773b6578eba Mon Sep 17 00:00:00 2001 From: mikael Date: Mon, 6 Jul 2026 13:45:49 +0200 Subject: [PATCH 14/57] Clarify scheduled build documentation --- CONTRIBUTING.md | 2 +- fastlane/testflight.md | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b708ff16d8..ed1796ba7f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -63,7 +63,7 @@ Loop is a collaborative project, and contributions of all kinds are welcome. Whe - Update docstrings when your change affects setup, configuration, behavior, workflows, or troubleshooting. - Keep documentation changes clear and practical. -- ocumentation contributions are just as valuable as code contributions. +- Documentation contributions are just as valuable as code contributions. ## Branches, commits, and pull requests diff --git a/fastlane/testflight.md b/fastlane/testflight.md index b44f07df07..5f30b5445d 100644 --- a/fastlane/testflight.md +++ b/fastlane/testflight.md @@ -236,9 +236,9 @@ If you choose not to have automatic building enabled, be sure the `GH_PAT` has ` ### Modify scheduled building and synchronization -You can modify the automation by creating and using some variables. +You can modify the automation by creating and using repository variables. -To configure the automated build more granularly involves creating up to two environment variables: `SCHEDULED_BUILD` and/or `SCHEDULED_SYNC`. See [How to configure a variable](#how-to-configure-a-variable). +To configure the automated build more granularly, create up to two repository variables: `SCHEDULED_BUILD` and/or `SCHEDULED_SYNC`. See [How to configure a variable](#how-to-configure-a-variable). Note that the weekly build actions will continue, but the actions are modified if one or more of these variables is set to false. **A successful Action Log will still appear, even if no automatic activity happens**. @@ -264,9 +264,9 @@ Note that the weekly build actions will continue, but the actions are modified i - Type `SCHEDULED_BUILD` in the "Name" field - Type `false` in the "Value" field - Click the green `Add variable` button to save. -7. To disable scheduled syncing, add a variable: +6. To disable scheduled syncing, add a variable: - Click on the green `New repository variable` button (upper right) - - - Type `SCHEDULED_SYNC` in the "Name" field + - Type `SCHEDULED_SYNC` in the "Name" field - Type `false` in the "Value" field - Click the green `Add variable` button to save @@ -276,8 +276,8 @@ Your build will run on the following conditions: - If updates are detected, it will update your repository and build - If it is the second Sunday of the month, it will build even when no changes are detected - If you disable any automation (both variables set to `false`), no updates or building happens when the build action runs -- If you disabled just scheduled synchronization (`SCHEDULED_SYNC` set to`false`), it will still build once a month, but no update will happen -- If you disabled just scheduled build (`SCHEDULED_BUILD` set to`false`), it will run once weekly, to check for changes; if there are changes, it will update and build +- If you disabled just scheduled synchronization (`SCHEDULED_SYNC` set to `false`), it will still build once a month, but no update will happen +- If you disabled just scheduled build (`SCHEDULED_BUILD` set to `false`), it will run once weekly, to check for changes; if there are changes, it will update and build ## What if I build using more than one GitHub username From 4072ad513f0b0e0347eae4255b90e777e6ecce1c Mon Sep 17 00:00:00 2001 From: marionbarker Date: Fri, 17 Jul 2026 07:02:22 -0700 Subject: [PATCH 15/57] Bump version to 3.14.4 --- VersionOverride.xcconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VersionOverride.xcconfig b/VersionOverride.xcconfig index 038d663c2f..c856330297 100644 --- a/VersionOverride.xcconfig +++ b/VersionOverride.xcconfig @@ -8,5 +8,5 @@ // Version [for DIY Loop] // configure the version number in LoopWorkspace -LOOP_MARKETING_VERSION = 3.14.3 +LOOP_MARKETING_VERSION = 3.14.4 CURRENT_PROJECT_VERSION = 57 From 218e864f27caa80b1d057ff28f54a2417b868451 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Fri, 17 Jul 2026 07:05:30 -0700 Subject: [PATCH 16/57] update OmnipodKit: * fix handling of DASH reset faults; * fix release of RileyLink devices; * update tests --- OmnipodKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OmnipodKit b/OmnipodKit index 08c4efe25f..8b2c3d330a 160000 --- a/OmnipodKit +++ b/OmnipodKit @@ -1 +1 @@ -Subproject commit 08c4efe25f224b552e6c48fdcf6d1b33970e7c12 +Subproject commit 8b2c3d330aa9f193e99b76a2393d2d1dfe5ac66a From 24c8847510dbf27e3e2702db9bd23646b48e14cc Mon Sep 17 00:00:00 2001 From: Marion Barker <19607791+marionbarker@users.noreply.github.com> Date: Mon, 20 Jul 2026 10:35:22 -0700 Subject: [PATCH 17/57] improve clarity: when build is skipped, run is canceled no green check mark is shown (#472) --- .github/workflows/build_loop_auto.yml | 24 ++++++++++++++++++++++++ fastlane/testflight.md | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_loop_auto.yml b/.github/workflows/build_loop_auto.yml index b371b01523..5d2d647be3 100644 --- a/.github/workflows/build_loop_auto.yml +++ b/.github/workflows/build_loop_auto.yml @@ -148,6 +148,30 @@ jobs: echo "is_second_instance=false" >> "$GITHUB_OUTPUT" fi + # When a scheduled run finds nothing new to build, cancel the run so it shows + # as "cancelled" instead of "success" — a green check should always mean a + # new build was made. + cancel_when_no_build: + needs: check_status + name: Cancel run when there is nothing to build + runs-on: ubuntu-latest + permissions: + actions: write + if: | + github.event_name == 'schedule' && + !(vars.SCHEDULED_BUILD != 'false' && needs.check_status.outputs.IS_SECOND_IN_MONTH == 'true') && + !(vars.SCHEDULED_SYNC != 'false' && needs.check_status.outputs.NEW_COMMITS == 'true') + steps: + - name: Cancel the run + env: + GH_TOKEN: ${{ github.token }} + run: | + echo "Repository is up to date and no monthly build is due — cancelling this run so it is not reported as a successful build." >> "$GITHUB_STEP_SUMMARY" + gh run cancel ${{ github.run_id }} --repo ${{ github.repository }} + # Keep the job alive until the cancellation lands, so the run ends as + # "cancelled" rather than completing successfully first. + sleep 300 + # Checks if Distribution certificate is present and valid, optionally nukes and # creates new certs if the repository variable ENABLE_NUKE_CERTS == 'true' # only run if a build is planned diff --git a/fastlane/testflight.md b/fastlane/testflight.md index b44f07df07..185aea17e0 100644 --- a/fastlane/testflight.md +++ b/fastlane/testflight.md @@ -12,7 +12,7 @@ These instructions allow you to build your app without having access to a Mac. > The browser build **defaults to** automatically updating and building a new version of Loop according to this schedule: > - automatically checks for updates weekly and if updates are found, it will build a new version of the app > - even when there are no updates, it builds on the second Sunday of the month -> - with each scheduled weekly run, a successful build log appears - if the time is very short, it did not need to build - only the long actions (>20 minutes) built a new app +> - if a scheduled run finds nothing new to build, the run is cancelled and shows as cancelled (grey) in the Actions list - a green check always means a new build was made and uploaded to TestFlight > > The [**Optional**](#optional) section provides instructions to modify the default behavior if desired. From 648cf30b33085cccccb50cc9df430d3842f7686f Mon Sep 17 00:00:00 2001 From: marionbarker Date: Mon, 20 Jul 2026 11:21:18 -0700 Subject: [PATCH 18/57] update CGMBLEKit: recognize Anubis transmitter, enable user to select desired sensor life for lifecycle reporting --- CGMBLEKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CGMBLEKit b/CGMBLEKit index edd8fb232e..c9e6c841f1 160000 --- a/CGMBLEKit +++ b/CGMBLEKit @@ -1 +1 @@ -Subproject commit edd8fb232e18a09a6c162b489172ea9d381d7bb6 +Subproject commit c9e6c841f1f20452a30f3ce45120a998401a49b6 From 8780352337b1c78c4f45783f1a91d677003ffd4c Mon Sep 17 00:00:00 2001 From: marionbarker Date: Mon, 20 Jul 2026 11:32:07 -0700 Subject: [PATCH 19/57] update EversenseKit: fix: navigation titles; chore: remove CryptoSwift dependency; style: add loader to calibration --- EversenseKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EversenseKit b/EversenseKit index 7d0789322b..66979665bc 160000 --- a/EversenseKit +++ b/EversenseKit @@ -1 +1 @@ -Subproject commit 7d0789322b47ba92e95ed670b959a8335dc134c8 +Subproject commit 66979665bc73137b0a70e9b4f6f88f21558fa4c9 From 3f70f0c5f6c636333c5bb253a1234afac449ddee Mon Sep 17 00:00:00 2001 From: marionbarker Date: Mon, 20 Jul 2026 11:41:38 -0700 Subject: [PATCH 20/57] update Loop: fix LiveActivityManager bug --- Loop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Loop b/Loop index e3761d317a..fa3b3cd85f 160000 --- a/Loop +++ b/Loop @@ -1 +1 @@ -Subproject commit e3761d317a3290571e8e7aca1819d4ce05a3ad30 +Subproject commit fa3b3cd85fcd3619c19f22a9a5963cfa8a3172f6 From dfaa2fbaded27f656bfa64c665a117cde148ae8d Mon Sep 17 00:00:00 2001 From: marionbarker Date: Mon, 20 Jul 2026 11:50:37 -0700 Subject: [PATCH 21/57] update MedtrumKit: enable Manual Temp Basal, various fixes, updated translations --- MedtrumKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MedtrumKit b/MedtrumKit index 3ad0979a3c..9914b18c05 160000 --- a/MedtrumKit +++ b/MedtrumKit @@ -1 +1 @@ -Subproject commit 3ad0979a3c8fc36c2d48a76da8ea70ef2132943a +Subproject commit 9914b18c05e9d1064756eaf76a975ea02790e199 From 5855ce51b4b09e713a6cccade561b2b16067b578 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Sun, 26 Jul 2026 08:19:10 -0700 Subject: [PATCH 22/57] update EversenseKit: feat: implement LoopKit alerts, fix: prevent crash after disconnect --- EversenseKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EversenseKit b/EversenseKit index 66979665bc..b46c45ccd2 160000 --- a/EversenseKit +++ b/EversenseKit @@ -1 +1 @@ -Subproject commit 66979665bc73137b0a70e9b4f6f88f21558fa4c9 +Subproject commit b46c45ccd205f289c0765095167ed9f860cf64fb From 23237ac12ef8cb117d36726e68f198f553a1768c Mon Sep 17 00:00:00 2001 From: marionbarker Date: Tue, 28 Jul 2026 13:59:54 -0700 Subject: [PATCH 23/57] update Loop, LoopKit to support new BLE management for Pods --- Loop | 2 +- LoopKit | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Loop b/Loop index fa3b3cd85f..e881321c54 160000 --- a/Loop +++ b/Loop @@ -1 +1 @@ -Subproject commit fa3b3cd85fcd3619c19f22a9a5963cfa8a3172f6 +Subproject commit e881321c5426f40e402736529e57594a005b86ce diff --git a/LoopKit b/LoopKit index 7f32702789..a5beee96d8 160000 --- a/LoopKit +++ b/LoopKit @@ -1 +1 @@ -Subproject commit 7f327027899ceda923202230777f3b1379655100 +Subproject commit a5beee96d8e0770fc6999372a73ea5f523351a43 From 5727b6cc16af2e7c210a75443dc72de00d26be1a Mon Sep 17 00:00:00 2001 From: marionbarker Date: Tue, 28 Jul 2026 14:06:19 -0700 Subject: [PATCH 24/57] update OmnipodKit: new BLE Management for DASH and Omnipod 5, Connect-on-demand BLE management, optional CGM aligned heartbeat, connectionless fault detection --- OmnipodKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OmnipodKit b/OmnipodKit index 8b2c3d330a..fa5afdb5e2 160000 --- a/OmnipodKit +++ b/OmnipodKit @@ -1 +1 @@ -Subproject commit 8b2c3d330aa9f193e99b76a2393d2d1dfe5ac66a +Subproject commit fa5afdb5e2695241e3adbf59af6204cef4522a0b From 2bf6a99b038983c900dd0f2b2b2407012ab440fe Mon Sep 17 00:00:00 2001 From: marionbarker Date: Tue, 28 Jul 2026 14:29:38 -0700 Subject: [PATCH 25/57] update Loop: bump watch deployment --- Loop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Loop b/Loop index e881321c54..3894e1ab67 160000 --- a/Loop +++ b/Loop @@ -1 +1 @@ -Subproject commit e881321c5426f40e402736529e57594a005b86ce +Subproject commit 3894e1ab67067798b43d9bf2f37c0415294f412f From 8af5ca0a766296bfc9ad876ecccb0b30aff4b0dd Mon Sep 17 00:00:00 2001 From: marionbarker Date: Wed, 29 Jul 2026 15:36:32 -0700 Subject: [PATCH 26/57] update fastlane to 2.237.0 --- Gemfile | 2 +- Gemfile.lock | 29 ++++++++++++++++------------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/Gemfile b/Gemfile index 4d2c972bab..502d6331b5 100644 --- a/Gemfile +++ b/Gemfile @@ -1,2 +1,2 @@ source "https://rubygems.org" -gem "fastlane", "2.236.1" +gem "fastlane", "2.237.0" diff --git a/Gemfile.lock b/Gemfile.lock index 87c90e0112..8e70830ead 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -8,8 +8,8 @@ GEM artifactory (3.0.17) atomos (0.1.3) aws-eventstream (1.4.0) - aws-partitions (1.1261.0) - aws-sdk-core (3.252.0) + aws-partitions (1.1267.0) + aws-sdk-core (3.253.0) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) aws-sigv4 (~> 1.9) @@ -42,8 +42,9 @@ GEM domain_name (0.6.20240107) dotenv (2.8.1) emoji_regex (3.2.3) - excon (0.112.0) - faraday (1.10.5) + excon (1.5.0) + logger + faraday (1.10.6) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) @@ -72,10 +73,10 @@ GEM faraday_middleware (1.2.1) faraday (~> 1.0) fastimage (2.4.1) - fastlane (2.236.1) + fastlane (2.237.0) CFPropertyList (>= 2.3, < 5.0.0) abbrev (~> 0.1) - addressable (>= 2.8, < 3.0.0) + addressable (>= 2.9.0, < 3.0.0) artifactory (~> 3.0) aws-sdk-s3 (~> 1.197) babosa (>= 1.0.3, < 2.0.0) @@ -87,7 +88,7 @@ GEM csv (~> 3.3) dotenv (>= 2.1.1, < 3.0.0) emoji_regex (>= 0.1, < 4.0) - excon (>= 0.71.0, < 1.0.0) + excon (>= 0.71.0, < 2.0.0) faraday (~> 1.0) faraday-cookie_jar (~> 0.0.6) faraday_middleware (~> 1.0) @@ -125,7 +126,7 @@ GEM xcpretty-travis-formatter (>= 0.0.3, < 2.0.0) fastlane-sirp (1.1.0) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.103.0) + google-apis-androidpublisher_v3 (0.104.0) google-apis-core (>= 0.15.0, < 2.a) google-apis-core (0.18.0) addressable (~> 2.5, >= 2.5.1) @@ -147,8 +148,8 @@ GEM google-cloud-env (2.2.2) base64 (~> 0.2) faraday (>= 1.0, < 3.a) - google-cloud-errors (1.6.0) - google-cloud-storage (1.61.0) + google-cloud-errors (1.7.0) + google-cloud-storage (1.62.0) addressable (~> 2.8) digest-crc (~> 0.4) google-apis-core (>= 0.18, < 2) @@ -172,7 +173,7 @@ GEM httpclient (2.9.0) mutex_m jmespath (1.6.2) - json (2.19.9) + json (2.20.0) jwt (3.2.0) base64 logger (1.7.0) @@ -219,12 +220,14 @@ GEM uber (0.1.0) unicode-display_width (2.6.0) word_wrap (1.0.0) - xcodeproj (1.27.0) + xcodeproj (1.28.1) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) + base64 claide (>= 1.0.2, < 2.0) colored2 (~> 3.1) nanaimo (~> 0.4.0) + nkf rexml (>= 3.3.6, < 4.0) xcpretty (0.4.1) rouge (~> 3.28.0) @@ -236,7 +239,7 @@ PLATFORMS ruby DEPENDENCIES - fastlane (= 2.236.1) + fastlane (= 2.237.0) BUNDLED WITH 4.0.12 From 74c169441bcdd7e2c82c44278656d10123d5fd5f Mon Sep 17 00:00:00 2001 From: marionbarker Date: Sun, 2 Aug 2026 13:38:14 -0700 Subject: [PATCH 27/57] update Loop: bump WATCHOS_DEPLOYMENT_TARGET to 9.0 --- Loop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Loop b/Loop index 3894e1ab67..5465bcd782 160000 --- a/Loop +++ b/Loop @@ -1 +1 @@ -Subproject commit 3894e1ab67067798b43d9bf2f37c0415294f412f +Subproject commit 5465bcd7825a897e14fcf45eddf92b863b37928d From 491a7deab16b87ffe64b5ef573ab3cba7f26b2f7 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Sun, 2 Aug 2026 13:39:53 -0700 Subject: [PATCH 28/57] update OmnipodKit: same code, new SHA with PR 118 merged, removed some claude generated md files --- OmnipodKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OmnipodKit b/OmnipodKit index fa5afdb5e2..cc47471286 160000 --- a/OmnipodKit +++ b/OmnipodKit @@ -1 +1 @@ -Subproject commit fa5afdb5e2695241e3adbf59af6204cef4522a0b +Subproject commit cc4747128630ccdc50d7e041899bc964d443d86d From 3bd4e7142707da124e428384f0a59bfded533c2f Mon Sep 17 00:00:00 2001 From: marionbarker Date: Mon, 3 Aug 2026 14:01:19 -0700 Subject: [PATCH 29/57] update MedtrumKit: stable version with updated localizations --- MedtrumKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MedtrumKit b/MedtrumKit index 9914b18c05..f5daa6e61e 160000 --- a/MedtrumKit +++ b/MedtrumKit @@ -1 +1 @@ -Subproject commit 9914b18c05e9d1064756eaf76a975ea02790e199 +Subproject commit f5daa6e61edebdef684e6f2341a99702341d35c0 From 4aed4ed7657ee1d4f0f34da861388199919111f2 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Thu, 6 Aug 2026 09:54:53 -0700 Subject: [PATCH 30/57] update OmnipodKit: bugfix, prevent lost comms issue --- OmnipodKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OmnipodKit b/OmnipodKit index cc47471286..e31a8d1c9e 160000 --- a/OmnipodKit +++ b/OmnipodKit @@ -1 +1 @@ -Subproject commit cc4747128630ccdc50d7e041899bc964d443d86d +Subproject commit e31a8d1c9e450750e07c0823384e8aa4b2abdffe From a8c97d524382ed2be7fcd046da8b797094a2e955 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Mon, 10 Aug 2026 15:33:08 -0700 Subject: [PATCH 31/57] update OmnipodKit: fix intermittent deadlock --- OmnipodKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OmnipodKit b/OmnipodKit index e31a8d1c9e..792dc1974c 160000 --- a/OmnipodKit +++ b/OmnipodKit @@ -1 +1 @@ -Subproject commit e31a8d1c9e450750e07c0823384e8aa4b2abdffe +Subproject commit 792dc1974c3cb3138350883dbab32be48d2cd2ba From aab6dc8f828a57028eb98c492678b3da058e9850 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Wed, 19 Aug 2026 17:23:53 -0700 Subject: [PATCH 32/57] update TrueTime.swift: bump IPHONEOS_DEPLOYMENT_TARGET to 15.0 --- TrueTime.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TrueTime.swift b/TrueTime.swift index d140b0f08a..5dc1285f3e 160000 --- a/TrueTime.swift +++ b/TrueTime.swift @@ -1 +1 @@ -Subproject commit d140b0f08ab9fbcaeaf6e4eb7a3da3e3d05bae3c +Subproject commit 5dc1285f3ea85fed3d132fb226c969d6a06b1208 From 0a4aa27574e68c80071ff17b1877826adf5bdb5d Mon Sep 17 00:00:00 2001 From: marionbarker Date: Wed, 19 Aug 2026 18:32:02 -0700 Subject: [PATCH 33/57] update Loop: more Xcode 27 fixes --- Loop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Loop b/Loop index 5465bcd782..728a14123d 160000 --- a/Loop +++ b/Loop @@ -1 +1 @@ -Subproject commit 5465bcd7825a897e14fcf45eddf92b863b37928d +Subproject commit 728a14123d34a99dc508e1b500b55557ccb1ae47 From 3773cd297096d427d2e6cd334dd5670aa31d6653 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Fri, 21 Aug 2026 15:06:13 -0700 Subject: [PATCH 34/57] update G7SensorKit: add MIT license, fix typo in state string --- G7SensorKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/G7SensorKit b/G7SensorKit index 0c87905297..aeaec95e34 160000 --- a/G7SensorKit +++ b/G7SensorKit @@ -1 +1 @@ -Subproject commit 0c87905297b70a7f0fa41e87fa0fbe1efff6c29f +Subproject commit aeaec95e341a58ca846b510125954dd4e5a44bbb From d0d57d341cd446459c6246f075234d66d1df51a6 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Sun, 30 Aug 2026 15:22:54 -0700 Subject: [PATCH 35/57] update EversenseKit: update logging, credential storage, support Outside US zone --- EversenseKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EversenseKit b/EversenseKit index b46c45ccd2..b8cf64b95a 160000 --- a/EversenseKit +++ b/EversenseKit @@ -1 +1 @@ -Subproject commit b46c45ccd205f289c0765095167ed9f860cf64fb +Subproject commit b8cf64b95aeb65b38c2376570e80ddd02df63db8 From 524f05e22eb48eedce298c2c6cc4a7d9fe3934b1 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Mon, 31 Aug 2026 05:51:19 -0700 Subject: [PATCH 36/57] update G7SensorKit: Defer forgetting sensor on suspected session end to avoid long reconnection outages (#62) --- G7SensorKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/G7SensorKit b/G7SensorKit index aeaec95e34..6eabc649a2 160000 --- a/G7SensorKit +++ b/G7SensorKit @@ -1 +1 @@ -Subproject commit aeaec95e341a58ca846b510125954dd4e5a44bbb +Subproject commit 6eabc649a248065f7b0102f209362fb6cb0af231 From e8e65794a54db87415ee47c670db7d30a4f33c76 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Mon, 31 Aug 2026 06:18:45 -0700 Subject: [PATCH 37/57] update OmnipodKit: display information text for Omnipod 5 setup (#136) --- OmnipodKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OmnipodKit b/OmnipodKit index 792dc1974c..ccd44384e4 160000 --- a/OmnipodKit +++ b/OmnipodKit @@ -1 +1 @@ -Subproject commit 792dc1974c3cb3138350883dbab32be48d2cd2ba +Subproject commit ccd44384e44f6ed11052043f0c9dfbc4465e00ad From 0f4bee5855c73db615ef1b0d19b489fd33229a3c Mon Sep 17 00:00:00 2001 From: marionbarker Date: Mon, 31 Aug 2026 07:21:33 -0700 Subject: [PATCH 38/57] update RileyLinkKit: Make autoConnectIDs safe to read off centralQueue --- RileyLinkKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RileyLinkKit b/RileyLinkKit index d953e1c79b..80a9a35edc 160000 --- a/RileyLinkKit +++ b/RileyLinkKit @@ -1 +1 @@ -Subproject commit d953e1c79b36f06d68b7255bb8f4331d906cc30d +Subproject commit 80a9a35edc12ae65d25a1bdb406e128cf8a4dac9 From 58efd202ede0258ea74580b18483f84f6d73e8ae Mon Sep 17 00:00:00 2001 From: marionbarker Date: Tue, 1 Sep 2026 06:04:29 -0700 Subject: [PATCH 39/57] Bump version to 3.14.5 --- VersionOverride.xcconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VersionOverride.xcconfig b/VersionOverride.xcconfig index c856330297..6922fba435 100644 --- a/VersionOverride.xcconfig +++ b/VersionOverride.xcconfig @@ -8,5 +8,5 @@ // Version [for DIY Loop] // configure the version number in LoopWorkspace -LOOP_MARKETING_VERSION = 3.14.4 +LOOP_MARKETING_VERSION = 3.14.5 CURRENT_PROJECT_VERSION = 57 From 164f5e72f25d42233e613d35ab8c9a6f4e899b77 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Tue, 1 Sep 2026 18:47:40 -0700 Subject: [PATCH 40/57] update OmnipodKit: backport fixes for pod keep alive; ble-heartbeat method --- OmnipodKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OmnipodKit b/OmnipodKit index ccd44384e4..89dff0aecd 160000 --- a/OmnipodKit +++ b/OmnipodKit @@ -1 +1 @@ -Subproject commit ccd44384e44f6ed11052043f0c9dfbc4465e00ad +Subproject commit 89dff0aecdc6c27439397f8039d654e952dd6bd5 From cc2c930b7e18ec74036952e236ab7c08baac38b4 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Tue, 1 Sep 2026 19:37:40 -0700 Subject: [PATCH 41/57] update .circleci config --- .circleci/config.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index ead42a398e..ef02ead944 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,18 +1,23 @@ jobs: build_and_test: macos: - xcode: 16.4 + xcode: 26.4 steps: - checkout - run: name: Checkout submodules command: git submodule update --init --recursive --depth 1 + - run: + name: Install xcbeautify + command: brew list xcbeautify >/dev/null 2>&1 || brew install xcbeautify - run: name: Build Loop - command: set -o pipefail && time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme 'LoopWorkspace' -destination 'platform=iOS Simulator,name=iPhone 16,OS=18.5' build | xcpretty + command: set -o pipefail && time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme 'LoopWorkspace' -destination 'platform=iOS Simulator,name=iPhone 17' build | xcbeautify - run: name: Run Tests - command: set -o pipefail && time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme 'LoopWorkspace' -destination 'platform=iOS Simulator,name=iPhone 16,OS=18.5' test | xcpretty + command: set -o pipefail && time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme 'LoopWorkspace' -destination 'platform=iOS Simulator,name=iPhone 17' test | xcbeautify --report junit --report-path test-results/results.xml + - store_test_results: + path: test-results workflows: version: 2 build_and_test: From cc778598f2d10f303e0c412adfbdd2b32c2bc8b4 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Wed, 2 Sep 2026 07:11:40 -0700 Subject: [PATCH 42/57] update OmnipodKit: fix simulator-only that prevented circeci tests --- OmnipodKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OmnipodKit b/OmnipodKit index 89dff0aecd..27f7076c15 160000 --- a/OmnipodKit +++ b/OmnipodKit @@ -1 +1 @@ -Subproject commit 89dff0aecdc6c27439397f8039d654e952dd6bd5 +Subproject commit 27f7076c15ae4450b3cda4b077956f49057ebefe From bdc39cc5d99c595c523f6532f3e0a38519c5b9d0 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Wed, 2 Sep 2026 10:35:59 -0700 Subject: [PATCH 43/57] update EversenseKit: fix migration US, Outside US zones --- EversenseKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EversenseKit b/EversenseKit index b8cf64b95a..f5796d8a68 160000 --- a/EversenseKit +++ b/EversenseKit @@ -1 +1 @@ -Subproject commit b8cf64b95aeb65b38c2376570e80ddd02df63db8 +Subproject commit f5796d8a683bb89c046a7ec1a28fc4d07cae3377 From 53bcc643f83afa0f665eff093fd6065872ebd8e9 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Wed, 2 Sep 2026 12:58:58 -0700 Subject: [PATCH 44/57] update LoopKit: Fix intermittent testObserverQueryStartup failures --- LoopKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LoopKit b/LoopKit index a5beee96d8..73a36cb380 160000 --- a/LoopKit +++ b/LoopKit @@ -1 +1 @@ -Subproject commit a5beee96d8e0770fc6999372a73ea5f523351a43 +Subproject commit 73a36cb380ba644af754c7ef6aacb67575b416e7 From 669ef69aafe5c709ccd16779ffc18b9b77ad0478 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Wed, 2 Sep 2026 16:34:05 -0700 Subject: [PATCH 45/57] update MedrumKit: Bluetooth and dosing updates --- MedtrumKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MedtrumKit b/MedtrumKit index f5daa6e61e..dfebc132f4 160000 --- a/MedtrumKit +++ b/MedtrumKit @@ -1 +1 @@ -Subproject commit f5daa6e61edebdef684e6f2341a99702341d35c0 +Subproject commit dfebc132f485eb0483467ae13b9fbd21d710c73f From 0646bf6df88bf6716984862992d23b67bfab85f1 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Thu, 3 Sep 2026 11:12:20 -0700 Subject: [PATCH 46/57] update EversenseKit: fix: onboarding api zone --- EversenseKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EversenseKit b/EversenseKit index f5796d8a68..45b8311565 160000 --- a/EversenseKit +++ b/EversenseKit @@ -1 +1 @@ -Subproject commit f5796d8a683bb89c046a7ec1a28fc4d07cae3377 +Subproject commit 45b83115653a65ceaa756e765ca330c9837674ef From 3f71b352667c3899b33649153fb541e47523e69b Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Fri, 4 Sep 2026 19:45:49 -0500 Subject: [PATCH 47/57] Localization scripts: use the shared PROJECTS list, pin an iOS destination import_localizations.sh carried its own copy of PROJECTS that had drifted badly from the maintained list in define_common.sh, which ten other scripts already source. The stale copy still named OmniBLE and OmniKit, neither of which has been a submodule since OmnipodKit replaced them, and it was missing OmnipodKit, EversenseKit and MedtrumKit entirely. Since the script runs under `set -e`, `cd OmniBLE` aborted it outright -- and had it continued, translations for the three missing repos would never have been imported. Source define_common.sh instead of duplicating, so the list has one home. The maintained list also carries the correct upstream targets for pull requests (loopandlearn:OmnipodKit, bastiaanv:EversenseKit, jbr7rr:MedtrumKit) rather than the LoopKit forks. Also pass -destination 'generic/platform=iOS' to the build, export and import invocations in all four localization scripts. They previously specified no destination, unlike .circleci/config.yml and AGENTS.md, which left xcodebuild free to resolve destinations across platforms; a translator hit macOS deployment target validation errors under the Xcode 27 beta. The explicit iOS destination cannot resolve to macOS. Verified: all four scripts pass `zsh -n`, the sourced PROJECTS list expands correctly, and the workspace builds with the new destination flag under both Xcode 26.6 and the Xcode 27.0 beta. --- Scripts/export_localizations.sh | 2 +- Scripts/import_localizations.sh | 10 +++++++--- Scripts/manual_export_localizations.sh | 2 +- Scripts/manual_import_localizations.sh | 4 ++-- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Scripts/export_localizations.sh b/Scripts/export_localizations.sh index 7b850b20a8..e6af2b3e66 100755 --- a/Scripts/export_localizations.sh +++ b/Scripts/export_localizations.sh @@ -10,7 +10,7 @@ LANGUAGES=(ar cs ru en zh-Hans nl fr de it nb pl es ja pt-BR vi da sv fi ro tr h argstring="${LANGUAGES[@]/#/-exportLanguage }" IFS=" "; args=( $=argstring ) -xcodebuild -scheme LoopWorkspace -exportLocalizations -localizationPath xclocs $args +xcodebuild -scheme LoopWorkspace -destination 'generic/platform=iOS' -exportLocalizations -localizationPath xclocs $args mkdir -p xliff_out find xclocs -name '*.xliff' -exec cp {} xliff_out \; diff --git a/Scripts/import_localizations.sh b/Scripts/import_localizations.sh index e1756b497b..ac072d20bb 100755 --- a/Scripts/import_localizations.sh +++ b/Scripts/import_localizations.sh @@ -27,7 +27,11 @@ lokalise2 \ --replace-breaks=false \ --unzip-to ./xliff_in -PROJECTS=(LoopKit:AmplitudeService:dev LoopKit:CGMBLEKit:dev LoopKit:G7SensorKit:main LoopKit:LogglyService:dev LoopKit:Loop:dev LoopKit:LoopKit:dev LoopKit:LoopOnboarding:dev LoopKit:LoopSupport:dev LoopKit:NightscoutRemoteCGM:dev LoopKit:NightscoutService:dev LoopKit:OmniBLE:dev LoopKit:TidepoolService:dev LoopKit:dexcom-share-client-swift:dev LoopKit:RileyLinkKit:dev LoopKit:OmniKit:main LoopKit:MinimedKit:main LoopKit:LibreTransmitter:main) +# PROJECTS (and LANGUAGES) are defined in one place so this list cannot drift again. +# The copy that used to live here still named OmniBLE and OmniKit, which have not been +# submodules since they were replaced by OmnipodKit -- with `set -e`, `cd OmniBLE` aborted +# this script outright. +source Scripts/define_common.sh for project in ${PROJECTS}; do echo "Prepping $project" @@ -42,12 +46,12 @@ for project in ${PROJECTS}; do done # Build Loop -set -o pipefail && time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme 'LoopWorkspace' build | xcpretty +set -o pipefail && time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme 'LoopWorkspace' -destination 'generic/platform=iOS' build | xcpretty # Apply translations foreach file in xliff_in/*.xliff - xcodebuild -workspace LoopWorkspace.xcworkspace -scheme "LoopWorkspace" -importLocalizations -localizationPath $file + xcodebuild -workspace LoopWorkspace.xcworkspace -scheme "LoopWorkspace" -destination 'generic/platform=iOS' -importLocalizations -localizationPath $file end diff --git a/Scripts/manual_export_localizations.sh b/Scripts/manual_export_localizations.sh index eb2836363f..459ca5cfd8 100755 --- a/Scripts/manual_export_localizations.sh +++ b/Scripts/manual_export_localizations.sh @@ -13,7 +13,7 @@ source Scripts/define_common.sh argstring="${LANGUAGES[@]/#/-exportLanguage }" IFS=" "; args=( $=argstring ) -xcodebuild -scheme LoopWorkspace -exportLocalizations -localizationPath xclocs $args +xcodebuild -scheme LoopWorkspace -destination 'generic/platform=iOS' -exportLocalizations -localizationPath xclocs $args mkdir -p xliff_out find xclocs -name '*.xliff' -exec cp {} xliff_out \; diff --git a/Scripts/manual_import_localizations.sh b/Scripts/manual_import_localizations.sh index 307ef3b821..f132cc0b49 100755 --- a/Scripts/manual_import_localizations.sh +++ b/Scripts/manual_import_localizations.sh @@ -60,14 +60,14 @@ for project in ${PROJECTS}; do done # Build Loop -set -o pipefail && time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme 'LoopWorkspace' build | xcpretty +set -o pipefail && time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme 'LoopWorkspace' -destination 'generic/platform=iOS' build | xcpretty # Apply translations foreach file in xliff_in/*.xliff section_divider echo " importing ${file}" section_divider - /usr/bin/time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme "LoopWorkspace" -importLocalizations -localizationPath $file + /usr/bin/time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme "LoopWorkspace" -destination 'generic/platform=iOS' -importLocalizations -localizationPath $file end section_divider From f1a752263754e2012dcb34d0674e45351b4f488a Mon Sep 17 00:00:00 2001 From: marionbarker Date: Fri, 4 Sep 2026 20:49:02 -0700 Subject: [PATCH 48/57] fix typo in Script/manual_cleanup --- Scripts/manual_cleanup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Scripts/manual_cleanup.sh b/Scripts/manual_cleanup.sh index 2db77ee306..4c4eeca51b 100755 --- a/Scripts/manual_cleanup.sh +++ b/Scripts/manual_cleanup.sh @@ -42,7 +42,7 @@ for project in ${PROJECTS}; do echo " already on $TRANSLATION_BRANCH, take no action" elif [ -n "$(git branch --list "$TRANSLATION_BRANCH")" ]; then echo " Local branch '$TRANSLATION_BRANCH' exists, deleting it." - git branch -D "${TRANSLATION_BRANCH}" + git branch -D ${TRANSLATION_BRANCH} else echo " no branch named $TRANSLATION_BRANCH exists, take no action" fi From 3336cd232cc72984e4ca1110c97a9deda7f92252 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Sat, 5 Sep 2026 15:10:36 -0700 Subject: [PATCH 49/57] update submodules: Updated translations from lokalise on Fri Sep 4 20:53:19 PDT 2026; * EversenseKit, MedtrumKit: pin deployment target to 17.6; * MedtrumKit: fixes (PRs 190, 192) & writes Medtrum log to Loop Report --- CGMBLEKit | 2 +- EversenseKit | 2 +- G7SensorKit | 2 +- LibreTransmitter | 2 +- LogglyService | 2 +- Loop | 2 +- LoopKit | 2 +- LoopOnboarding | 2 +- MedtrumKit | 2 +- MinimedKit | 2 +- NightscoutRemoteCGM | 2 +- NightscoutService | 2 +- OmnipodKit | 2 +- RileyLinkKit | 2 +- TidepoolService | 2 +- dexcom-share-client-swift | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/CGMBLEKit b/CGMBLEKit index c9e6c841f1..d83fd0d1ec 160000 --- a/CGMBLEKit +++ b/CGMBLEKit @@ -1 +1 @@ -Subproject commit c9e6c841f1f20452a30f3ce45120a998401a49b6 +Subproject commit d83fd0d1ec14188ac64312f9df9f5d0afbdc03b2 diff --git a/EversenseKit b/EversenseKit index 45b8311565..57c14e2f41 160000 --- a/EversenseKit +++ b/EversenseKit @@ -1 +1 @@ -Subproject commit 45b83115653a65ceaa756e765ca330c9837674ef +Subproject commit 57c14e2f410a6a3932308be8c7d7683b394e3de1 diff --git a/G7SensorKit b/G7SensorKit index 6eabc649a2..4a1e18d695 160000 --- a/G7SensorKit +++ b/G7SensorKit @@ -1 +1 @@ -Subproject commit 6eabc649a248065f7b0102f209362fb6cb0af231 +Subproject commit 4a1e18d695cab810978d906458daa0468754cfb0 diff --git a/LibreTransmitter b/LibreTransmitter index d0d301208f..cc7e5dc3e0 160000 --- a/LibreTransmitter +++ b/LibreTransmitter @@ -1 +1 @@ -Subproject commit d0d301208faeb2bc763454baf0550f3fd4888bb7 +Subproject commit cc7e5dc3e0583fe0670971495623f7ef2ab9dcf7 diff --git a/LogglyService b/LogglyService index d6df99ea34..db7bcac28b 160000 --- a/LogglyService +++ b/LogglyService @@ -1 +1 @@ -Subproject commit d6df99ea34658c42eb721829d29812645c08fdad +Subproject commit db7bcac28b71202b1ed9ed21f9bf453bebcba91e diff --git a/Loop b/Loop index 728a14123d..9fc842e193 160000 --- a/Loop +++ b/Loop @@ -1 +1 @@ -Subproject commit 728a14123d34a99dc508e1b500b55557ccb1ae47 +Subproject commit 9fc842e19391a1a8829c986e5bf58f52fb2b2757 diff --git a/LoopKit b/LoopKit index 73a36cb380..29bc17ba29 160000 --- a/LoopKit +++ b/LoopKit @@ -1 +1 @@ -Subproject commit 73a36cb380ba644af754c7ef6aacb67575b416e7 +Subproject commit 29bc17ba29ede2bfb0d6111766dd5cd62072317e diff --git a/LoopOnboarding b/LoopOnboarding index 64f978e143..4aca97d2e8 160000 --- a/LoopOnboarding +++ b/LoopOnboarding @@ -1 +1 @@ -Subproject commit 64f978e143723765452957cef06a99db380b128c +Subproject commit 4aca97d2e8267cf61b64bd1273380f5fcbb27cb6 diff --git a/MedtrumKit b/MedtrumKit index dfebc132f4..b9c6901097 160000 --- a/MedtrumKit +++ b/MedtrumKit @@ -1 +1 @@ -Subproject commit dfebc132f485eb0483467ae13b9fbd21d710c73f +Subproject commit b9c6901097ca77e7f23d283ed5f6c00b3c852447 diff --git a/MinimedKit b/MinimedKit index 60c46f50b3..83d62c14a5 160000 --- a/MinimedKit +++ b/MinimedKit @@ -1 +1 @@ -Subproject commit 60c46f50b3fda0628da6f89f312d17c1a629cff4 +Subproject commit 83d62c14a5cbc9996c6583220e65946172982e73 diff --git a/NightscoutRemoteCGM b/NightscoutRemoteCGM index 383d3c1e6b..e2230e33c9 160000 --- a/NightscoutRemoteCGM +++ b/NightscoutRemoteCGM @@ -1 +1 @@ -Subproject commit 383d3c1e6b7c0c79def98a1633e4a5856bf221a4 +Subproject commit e2230e33c9da61ffa1d9c507231a3e815703a23e diff --git a/NightscoutService b/NightscoutService index 4f89c9a797..8cd05a386d 160000 --- a/NightscoutService +++ b/NightscoutService @@ -1 +1 @@ -Subproject commit 4f89c9a79794110919b4ad8f8094c621ebc4135b +Subproject commit 8cd05a386dd83b62647a0ed2bfa7aff17aa8013e diff --git a/OmnipodKit b/OmnipodKit index 27f7076c15..1d1f21be14 160000 --- a/OmnipodKit +++ b/OmnipodKit @@ -1 +1 @@ -Subproject commit 27f7076c15ae4450b3cda4b077956f49057ebefe +Subproject commit 1d1f21be147c677bf8355203895741944523f217 diff --git a/RileyLinkKit b/RileyLinkKit index 80a9a35edc..8beb8e6c25 160000 --- a/RileyLinkKit +++ b/RileyLinkKit @@ -1 +1 @@ -Subproject commit 80a9a35edc12ae65d25a1bdb406e128cf8a4dac9 +Subproject commit 8beb8e6c25d8ffa4c0b8a8b55309315d7805384b diff --git a/TidepoolService b/TidepoolService index 4ef78bf8b5..986c08203f 160000 --- a/TidepoolService +++ b/TidepoolService @@ -1 +1 @@ -Subproject commit 4ef78bf8b58e2cee3e7f00fe7670fc2a7b166874 +Subproject commit 986c08203f12bdf1b28b231e448091f9abaaa389 diff --git a/dexcom-share-client-swift b/dexcom-share-client-swift index 04804892ea..0f71fa2a45 160000 --- a/dexcom-share-client-swift +++ b/dexcom-share-client-swift @@ -1 +1 @@ -Subproject commit 04804892ea58778472e19c738ae39a87f41c0070 +Subproject commit 0f71fa2a450f55a92cff62e183d87c86b9c6633a From 536303d2899f54ca22666f9106b33b8990f96be5 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Tue, 8 Sep 2026 19:22:01 -0700 Subject: [PATCH 50/57] Bump version to 3.14.6 --- VersionOverride.xcconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VersionOverride.xcconfig b/VersionOverride.xcconfig index 6922fba435..5a9208faff 100644 --- a/VersionOverride.xcconfig +++ b/VersionOverride.xcconfig @@ -8,5 +8,5 @@ // Version [for DIY Loop] // configure the version number in LoopWorkspace -LOOP_MARKETING_VERSION = 3.14.5 +LOOP_MARKETING_VERSION = 3.14.6 CURRENT_PROJECT_VERSION = 57 From e91490284154e7586bd3d2df5e36b3157f0740f5 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Wed, 9 Sep 2026 08:37:29 -0700 Subject: [PATCH 51/57] Provide the BLE heartbeat for DASH pods not using a RileyLink (#153) --- OmnipodKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OmnipodKit b/OmnipodKit index 1d1f21be14..b47560e317 160000 --- a/OmnipodKit +++ b/OmnipodKit @@ -1 +1 @@ -Subproject commit 1d1f21be147c677bf8355203895741944523f217 +Subproject commit b47560e317212a6d58bc4a982b192ef1a69eba87 From 19871ab309d4f10d1425c1f5c0afe3c8510d414f Mon Sep 17 00:00:00 2001 From: marionbarker Date: Wed, 9 Sep 2026 15:54:26 -0700 Subject: [PATCH 52/57] update Loop: Increase spacing and size of main screen Liquid Glass toolbar icons --- Loop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Loop b/Loop index 9fc842e193..c1c170a6d9 160000 --- a/Loop +++ b/Loop @@ -1 +1 @@ -Subproject commit 9fc842e19391a1a8829c986e5bf58f52fb2b2757 +Subproject commit c1c170a6d9fa663bcb742a21b321168bc3186013 From 5b5f9228893abd834a8bbc767ee4c068691f4183 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Fri, 11 Sep 2026 07:15:38 -0700 Subject: [PATCH 53/57] update submodules: Updated translations from lokalise on Thu Sep 10 13:42:39 PDT 2026 --- CGMBLEKit | 2 +- G7SensorKit | 2 +- LibreTransmitter | 2 +- Loop | 2 +- LoopKit | 2 +- MedtrumKit | 2 +- MinimedKit | 2 +- OmnipodKit | 2 +- RileyLinkKit | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CGMBLEKit b/CGMBLEKit index d83fd0d1ec..7b660d22a4 160000 --- a/CGMBLEKit +++ b/CGMBLEKit @@ -1 +1 @@ -Subproject commit d83fd0d1ec14188ac64312f9df9f5d0afbdc03b2 +Subproject commit 7b660d22a447a6ea5e800dbb30b2c1b13864f5bc diff --git a/G7SensorKit b/G7SensorKit index 4a1e18d695..1486241a9e 160000 --- a/G7SensorKit +++ b/G7SensorKit @@ -1 +1 @@ -Subproject commit 4a1e18d695cab810978d906458daa0468754cfb0 +Subproject commit 1486241a9e4a6f3da13d98542b8e39a02938ab96 diff --git a/LibreTransmitter b/LibreTransmitter index cc7e5dc3e0..61e9981995 160000 --- a/LibreTransmitter +++ b/LibreTransmitter @@ -1 +1 @@ -Subproject commit cc7e5dc3e0583fe0670971495623f7ef2ab9dcf7 +Subproject commit 61e9981995d0e9f1eaeeef8fd7b758865db8f3ab diff --git a/Loop b/Loop index c1c170a6d9..2b4cd9a2fe 160000 --- a/Loop +++ b/Loop @@ -1 +1 @@ -Subproject commit c1c170a6d9fa663bcb742a21b321168bc3186013 +Subproject commit 2b4cd9a2feaeccf2c5c527a730d406b4d4ceb0c0 diff --git a/LoopKit b/LoopKit index 29bc17ba29..421c1a256e 160000 --- a/LoopKit +++ b/LoopKit @@ -1 +1 @@ -Subproject commit 29bc17ba29ede2bfb0d6111766dd5cd62072317e +Subproject commit 421c1a256e76a7166ab2848cedba53162d34fda1 diff --git a/MedtrumKit b/MedtrumKit index b9c6901097..77827f9a34 160000 --- a/MedtrumKit +++ b/MedtrumKit @@ -1 +1 @@ -Subproject commit b9c6901097ca77e7f23d283ed5f6c00b3c852447 +Subproject commit 77827f9a343cd28d64903d08060d6ebb846342f5 diff --git a/MinimedKit b/MinimedKit index 83d62c14a5..a9bf9ea5f6 160000 --- a/MinimedKit +++ b/MinimedKit @@ -1 +1 @@ -Subproject commit 83d62c14a5cbc9996c6583220e65946172982e73 +Subproject commit a9bf9ea5f6d882dfd48179c0f696fc7b27ec196a diff --git a/OmnipodKit b/OmnipodKit index b47560e317..aee61f93d8 160000 --- a/OmnipodKit +++ b/OmnipodKit @@ -1 +1 @@ -Subproject commit b47560e317212a6d58bc4a982b192ef1a69eba87 +Subproject commit aee61f93d8fc55f0539e6d2e599d4609fc908af1 diff --git a/RileyLinkKit b/RileyLinkKit index 8beb8e6c25..7ac340a4c3 160000 --- a/RileyLinkKit +++ b/RileyLinkKit @@ -1 +1 @@ -Subproject commit 8beb8e6c25d8ffa4c0b8a8b55309315d7805384b +Subproject commit 7ac340a4c3a3ec18e16264d0468474b04485ce8f From d6f8eeb535a6364b8e827fa7ba10e36dd4bc8dea Mon Sep 17 00:00:00 2001 From: marionbarker Date: Sat, 12 Sep 2026 06:24:36 -0700 Subject: [PATCH 54/57] update MedtrumKit: Updated translations from lokalise on Fri Sep 11 07:19:14 PDT 2026 --- MedtrumKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MedtrumKit b/MedtrumKit index 77827f9a34..afa2485ac9 160000 --- a/MedtrumKit +++ b/MedtrumKit @@ -1 +1 @@ -Subproject commit 77827f9a343cd28d64903d08060d6ebb846342f5 +Subproject commit afa2485ac9ae7cf275de09f3c3f7a8718486514e From be19dc098c357768fa35fd340b64a5b5c0e1003e Mon Sep 17 00:00:00 2001 From: marionbarker Date: Sat, 12 Sep 2026 06:42:30 -0700 Subject: [PATCH 55/57] update EversenseKit: fix to prevent app crashes --- EversenseKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EversenseKit b/EversenseKit index 57c14e2f41..063eb66e21 160000 --- a/EversenseKit +++ b/EversenseKit @@ -1 +1 @@ -Subproject commit 57c14e2f410a6a3932308be8c7d7683b394e3de1 +Subproject commit 063eb66e21e1555edf45e01548ab948af6a79519 From 15a883ad1c19fdcd989d2859898b1579232c2c8b Mon Sep 17 00:00:00 2001 From: marionbarker Date: Sun, 13 Sep 2026 14:35:36 -0700 Subject: [PATCH 56/57] Bump version to 3.14.7 --- VersionOverride.xcconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VersionOverride.xcconfig b/VersionOverride.xcconfig index 5a9208faff..b7da04d138 100644 --- a/VersionOverride.xcconfig +++ b/VersionOverride.xcconfig @@ -8,5 +8,5 @@ // Version [for DIY Loop] // configure the version number in LoopWorkspace -LOOP_MARKETING_VERSION = 3.14.6 +LOOP_MARKETING_VERSION = 3.14.7 CURRENT_PROJECT_VERSION = 57 From a89e37012b65e6b0555111646e080fc3a4688dd1 Mon Sep 17 00:00:00 2001 From: marionbarker Date: Mon, 14 Sep 2026 08:53:49 -0700 Subject: [PATCH 57/57] update OmnipodKit: fix disconnect mid-command when app background --- OmnipodKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OmnipodKit b/OmnipodKit index aee61f93d8..3b20e3bcd9 160000 --- a/OmnipodKit +++ b/OmnipodKit @@ -1 +1 @@ -Subproject commit aee61f93d8fc55f0539e6d2e599d4609fc908af1 +Subproject commit 3b20e3bcd9ffe077a9e090e8ba512ce4592a5bbd