From 06944a2a8d49bc1fc275fb6815991c733893b8e2 Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Sun, 27 Oct 2024 12:58:42 -0500 Subject: [PATCH 01/12] Tidepool Merge --- AmplitudeService | 2 +- CGMBLEKit | 2 +- G7SensorKit | 2 +- LibreTransmitter | 2 +- LogglyService | 2 +- Loop | 2 +- LoopKit | 2 +- LoopOnboarding | 2 +- LoopSupport | 2 +- .../xcshareddata/swiftpm/Package.resolved | 14 +++++++++++--- MinimedKit | 2 +- MixpanelService | 2 +- NightscoutRemoteCGM | 2 +- NightscoutService | 2 +- OmniBLE | 2 +- OmniKit | 2 +- RileyLinkKit | 2 +- Scripts/sync.swift | 1 + TidepoolService | 2 +- dexcom-share-client-swift | 2 +- 20 files changed, 30 insertions(+), 21 deletions(-) diff --git a/AmplitudeService b/AmplitudeService index 98f9759b1..f75f64f25 160000 --- a/AmplitudeService +++ b/AmplitudeService @@ -1 +1 @@ -Subproject commit 98f9759b17e8716c65257c24a652564ead3c5183 +Subproject commit f75f64f25b399b9e9a007a01a71a592875b948a8 diff --git a/CGMBLEKit b/CGMBLEKit index 4adef2662..5f1991f26 160000 --- a/CGMBLEKit +++ b/CGMBLEKit @@ -1 +1 @@ -Subproject commit 4adef2662060f7d11d1abd8d099c3e022bf00cef +Subproject commit 5f1991f260808e87dd180d0af38f67c54a0d1dfc diff --git a/G7SensorKit b/G7SensorKit index 2be3eb29b..8458d602d 160000 --- a/G7SensorKit +++ b/G7SensorKit @@ -1 +1 @@ -Subproject commit 2be3eb29b0a18aa89f8b60281341e46e07d024e5 +Subproject commit 8458d602d555c0996d67c440b056573992859ad9 diff --git a/LibreTransmitter b/LibreTransmitter index c01eba63e..995bef901 160000 --- a/LibreTransmitter +++ b/LibreTransmitter @@ -1 +1 @@ -Subproject commit c01eba63e94e9f6f2841a8835680c4e39c61b18d +Subproject commit 995bef901481ff9d1ff9abfd1fee19539719bd02 diff --git a/LogglyService b/LogglyService index 1bb822374..2ef148d89 160000 --- a/LogglyService +++ b/LogglyService @@ -1 +1 @@ -Subproject commit 1bb8223748003e51770875200489cce83f74c570 +Subproject commit 2ef148d898d7af249598c1e238ff01985f3ed7c2 diff --git a/Loop b/Loop index 1aaee2db4..95901af7f 160000 --- a/Loop +++ b/Loop @@ -1 +1 @@ -Subproject commit 1aaee2db4953dbcdbe71a15cad967dbb190dc238 +Subproject commit 95901af7f45703dcfbb8b16c879d9873c9c401e8 diff --git a/LoopKit b/LoopKit index 3ce43ded2..6310fb13a 160000 --- a/LoopKit +++ b/LoopKit @@ -1 +1 @@ -Subproject commit 3ce43ded238a776f7c8a8a9bea339db47adc0c20 +Subproject commit 6310fb13ad24d1dbdb7d7a029d5ba2b73cb701c1 diff --git a/LoopOnboarding b/LoopOnboarding index 4c5c19279..3305ec45a 160000 --- a/LoopOnboarding +++ b/LoopOnboarding @@ -1 +1 @@ -Subproject commit 4c5c1927999ae5dd3861e67ca9f10c14a59d1cc6 +Subproject commit 3305ec45a0fb702ffc5cd75c0cfd5831d0aaff99 diff --git a/LoopSupport b/LoopSupport index 4728c6783..7bfdeda78 160000 --- a/LoopSupport +++ b/LoopSupport @@ -1 +1 @@ -Subproject commit 4728c67836e6a60118fcf6cc262010e9b3d14e68 +Subproject commit 7bfdeda786adc5c985dbc3ae061ebd8b245916be diff --git a/LoopWorkspace.xcworkspace/xcshareddata/swiftpm/Package.resolved b/LoopWorkspace.xcworkspace/xcshareddata/swiftpm/Package.resolved index 20f167d45..037e3f031 100644 --- a/LoopWorkspace.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/LoopWorkspace.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "f8d1e9c237647ab612da7f2bd3ae26946f39410508314c00cf54509a673f147e", + "originHash" : "1082d4ca5948c4d25085bad8b89b58cf4e0c25583a64f6b79c3320b7c7bb777b", "pins" : [ { "identity" : "amplitude-ios", @@ -37,6 +37,15 @@ "version" : "1.7.1" } }, + { + "identity" : "loopalgorithm", + "kind" : "remoteSourceControl", + "location" : "https://github.com/tidepool-org/LoopAlgorithm", + "state" : { + "branch" : "main", + "revision" : "c4455e105d268757d6c304728e2b7638af7e6c53" + } + }, { "identity" : "mixpanel-swift", "kind" : "remoteSourceControl", @@ -96,7 +105,7 @@ "location" : "https://github.com/tidepool-org/TidepoolKit", "state" : { "branch" : "dev", - "revision" : "54045c2e7d720dcd8a0909037772dcd6f54f0158" + "revision" : "b21a7906a202525c4e303dbee9b92182927ef0b5" } }, { @@ -104,7 +113,6 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/LoopKit/ZIPFoundation.git", "state" : { - "branch" : "stream-entry", "revision" : "c67b7509ec82ee2b4b0ab3f97742b94ed9692494" } } diff --git a/MinimedKit b/MinimedKit index a079b5311..1c0b30187 160000 --- a/MinimedKit +++ b/MinimedKit @@ -1 +1 @@ -Subproject commit a079b53119594b37436043859f0fe0a0754724e2 +Subproject commit 1c0b30187a067b2c53629084ec8d5215d802570b diff --git a/MixpanelService b/MixpanelService index b33debdac..439e9d0a1 160000 --- a/MixpanelService +++ b/MixpanelService @@ -1 +1 @@ -Subproject commit b33debdac37d6ef3be955eebb0c42495a1f19232 +Subproject commit 439e9d0a1e6c5a81a2b3f4e4e862f0fdf39cb4de diff --git a/NightscoutRemoteCGM b/NightscoutRemoteCGM index 3b220185d..6e014e173 160000 --- a/NightscoutRemoteCGM +++ b/NightscoutRemoteCGM @@ -1 +1 @@ -Subproject commit 3b220185d0bea9f5f49c2d8d99db95cfe4c636c0 +Subproject commit 6e014e1737ba6ff48d468d9a07f33526a91b3399 diff --git a/NightscoutService b/NightscoutService index d839b6605..f6a1d6e4a 160000 --- a/NightscoutService +++ b/NightscoutService @@ -1 +1 @@ -Subproject commit d839b66054623c213ba79c57540f00e08fad81c3 +Subproject commit f6a1d6e4aece02639967954b404d395a566b533a diff --git a/OmniBLE b/OmniBLE index b82d2e1ff..3930aa8d9 160000 --- a/OmniBLE +++ b/OmniBLE @@ -1 +1 @@ -Subproject commit b82d2e1fff5f0fccc42145fcbbe4731b80898fff +Subproject commit 3930aa8d9691fa50070560cd3d33ef7fac8c3093 diff --git a/OmniKit b/OmniKit index 3a75484ba..2ab9c8e5f 160000 --- a/OmniKit +++ b/OmniKit @@ -1 +1 @@ -Subproject commit 3a75484ba062f647e9c5ff0291948859c77ba9b2 +Subproject commit 2ab9c8e5f9df7a300c3d44f16dac910510e0ccfd diff --git a/RileyLinkKit b/RileyLinkKit index a0e419da3..9dbf381ac 160000 --- a/RileyLinkKit +++ b/RileyLinkKit @@ -1 +1 @@ -Subproject commit a0e419da314d0ad42b41ccb04af73cd1fbf41257 +Subproject commit 9dbf381ace7d563daf93a6f378151ce350d4f031 diff --git a/Scripts/sync.swift b/Scripts/sync.swift index 2553551e0..f71ca4504 100755 --- a/Scripts/sync.swift +++ b/Scripts/sync.swift @@ -112,6 +112,7 @@ for project in projects { try await repository.checkout(revspec: syncBranch) // Merge changes from tidepool to diy + print("Starting merge for \(project.project)") try await repository.merge(revisionSpecification: "\(incomingRemote)/\(project.branch)", signature: signature) let originTree = try repository.lookupTree(for: "origin/\(project.branch)") diff --git a/TidepoolService b/TidepoolService index 6e007cbde..dae116935 160000 --- a/TidepoolService +++ b/TidepoolService @@ -1 +1 @@ -Subproject commit 6e007cbde9920a9d8f25ae855deb36f989a2ce0f +Subproject commit dae116935c0adb41105f3851c2a84c2d9cee579c diff --git a/dexcom-share-client-swift b/dexcom-share-client-swift index 21d8657d7..e012b3403 160000 --- a/dexcom-share-client-swift +++ b/dexcom-share-client-swift @@ -1 +1 @@ -Subproject commit 21d8657d727f26df76342188e580022bf4884714 +Subproject commit e012b3403cfd8a8f8b7bbb2ff063e9f870c9c8bc From b376db02e440c9df68cdb520f1e1e5fae4679e15 Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Sun, 27 Oct 2024 13:15:11 -0500 Subject: [PATCH 02/12] Recent Tidepool updates --- Loop | 2 +- LoopKit | 2 +- LoopOnboarding | 2 +- LoopWorkspace.xcworkspace/xcshareddata/swiftpm/Package.resolved | 2 +- TidepoolService | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Loop b/Loop index 95901af7f..b833eb482 160000 --- a/Loop +++ b/Loop @@ -1 +1 @@ -Subproject commit 95901af7f45703dcfbb8b16c879d9873c9c401e8 +Subproject commit b833eb482cec9742d5a182955650f9289a39daa9 diff --git a/LoopKit b/LoopKit index 6310fb13a..0057c1e44 160000 --- a/LoopKit +++ b/LoopKit @@ -1 +1 @@ -Subproject commit 6310fb13ad24d1dbdb7d7a029d5ba2b73cb701c1 +Subproject commit 0057c1e44b98be8d081a8ea9458bf3078230c4ef diff --git a/LoopOnboarding b/LoopOnboarding index 3305ec45a..5b36d90fe 160000 --- a/LoopOnboarding +++ b/LoopOnboarding @@ -1 +1 @@ -Subproject commit 3305ec45a0fb702ffc5cd75c0cfd5831d0aaff99 +Subproject commit 5b36d90feea816a78fcd97939bda56251d73aa87 diff --git a/LoopWorkspace.xcworkspace/xcshareddata/swiftpm/Package.resolved b/LoopWorkspace.xcworkspace/xcshareddata/swiftpm/Package.resolved index 037e3f031..af2e947a9 100644 --- a/LoopWorkspace.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/LoopWorkspace.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -43,7 +43,7 @@ "location" : "https://github.com/tidepool-org/LoopAlgorithm", "state" : { "branch" : "main", - "revision" : "c4455e105d268757d6c304728e2b7638af7e6c53" + "revision" : "9d2405464d16a3bd2953e114f046b20bf2cabb48" } }, { diff --git a/TidepoolService b/TidepoolService index dae116935..ab70ef9e6 160000 --- a/TidepoolService +++ b/TidepoolService @@ -1 +1 @@ -Subproject commit dae116935c0adb41105f3851c2a84c2d9cee579c +Subproject commit ab70ef9e6cabc1cafceb186fedfb825d73a9bcf4 From 47b1d957d392b823fbc8d2061ec4d67567a0a15e Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Sun, 27 Oct 2024 21:35:41 -0500 Subject: [PATCH 03/12] Bump loopkit submodule --- LoopKit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LoopKit b/LoopKit index 0057c1e44..2da195366 160000 --- a/LoopKit +++ b/LoopKit @@ -1 +1 @@ -Subproject commit 0057c1e44b98be8d081a8ea9458bf3078230c4ef +Subproject commit 2da19536650e1089034aaf8fdf50c1e12c175050 From e3ff4c07f6f13661d60d227d85d11bed540b0748 Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Sun, 27 Oct 2024 21:37:55 -0500 Subject: [PATCH 04/12] CircleCI build update to Xcode 16 --- .circleci/config.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0ea0edd9a..5c65e2a9e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,7 +1,7 @@ jobs: build_and_test: macos: - xcode: 15.4.0 + xcode: 16.0 steps: - checkout - run: @@ -9,10 +9,10 @@ jobs: command: git submodule update --init --recursive --depth 1 - run: name: Build Loop - command: set -o pipefail && time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme 'LoopWorkspace' -destination 'platform=iOS Simulator,name=iPhone 15,OS=17.5' build | xcpretty + command: set -o pipefail && time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme 'LoopWorkspace' -destination 'name=iPhone 16' build | xcpretty - run: name: Run Tests - command: set -o pipefail && time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme 'LoopWorkspace' -destination 'platform=iOS Simulator,name=iPhone 15,OS=17.5' test | xcpretty + command: set -o pipefail && time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme 'LoopWorkspace' -destination 'name=iPhone 15' test | xcpretty workflows: version: 2 build_and_test: From 752fd084d3605cc4370510d123901aed19a28a37 Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Sun, 27 Oct 2024 22:05:19 -0500 Subject: [PATCH 05/12] Missed updating tests to iPhone 16 --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 5c65e2a9e..1281b7eee 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -12,7 +12,7 @@ jobs: command: set -o pipefail && time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme 'LoopWorkspace' -destination 'name=iPhone 16' build | xcpretty - run: name: Run Tests - command: set -o pipefail && time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme 'LoopWorkspace' -destination 'name=iPhone 15' test | xcpretty + command: set -o pipefail && time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme 'LoopWorkspace' -destination 'name=iPhone 16' test | xcpretty workflows: version: 2 build_and_test: From 8104de1fdf95c1d6ca9ac9fd219fae081daaf169 Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Mon, 28 Oct 2024 14:58:53 -0500 Subject: [PATCH 06/12] Use LoopKit LoopAlgorithm --- LoopKit | 2 +- .../xcshareddata/swiftpm/Package.resolved | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/LoopKit b/LoopKit index 2da195366..a24e91983 160000 --- a/LoopKit +++ b/LoopKit @@ -1 +1 @@ -Subproject commit 2da19536650e1089034aaf8fdf50c1e12c175050 +Subproject commit a24e91983f1724c3b26c0ad3d4137b974bbd1426 diff --git a/LoopWorkspace.xcworkspace/xcshareddata/swiftpm/Package.resolved b/LoopWorkspace.xcworkspace/xcshareddata/swiftpm/Package.resolved index af2e947a9..08c84be7c 100644 --- a/LoopWorkspace.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/LoopWorkspace.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "1082d4ca5948c4d25085bad8b89b58cf4e0c25583a64f6b79c3320b7c7bb777b", + "originHash" : "fd72e13865455a2feb38fe4cd881140a6934ac07e655a5d873c322bc9fac19f7", "pins" : [ { "identity" : "amplitude-ios", @@ -40,7 +40,7 @@ { "identity" : "loopalgorithm", "kind" : "remoteSourceControl", - "location" : "https://github.com/tidepool-org/LoopAlgorithm", + "location" : "https://github.com/LoopKit/LoopAlgorithm", "state" : { "branch" : "main", "revision" : "9d2405464d16a3bd2953e114f046b20bf2cabb48" From cd51d3c225ca265080417456c2f4692d754f1565 Mon Sep 17 00:00:00 2001 From: Marion Barker <19607791+marionbarker@users.noreply.github.com> Date: Tue, 29 Oct 2024 11:48:39 -0700 Subject: [PATCH 07/12] Tidepool merge browser build update (#214) * update to Fastlane 2.223.1 * match Apple website location for keys in error message * Do not print patch match tables * update to Xcode 16.1; sync and alive behavior to match main --- .github/workflows/add_identifiers.yml | 11 +- .github/workflows/build_loop.yml | 327 ++++++++++++++----------- .github/workflows/create_certs.yml | 11 +- .github/workflows/validate_secrets.yml | 40 +-- Gemfile.lock | 49 ++-- 5 files changed, 243 insertions(+), 195 deletions(-) diff --git a/.github/workflows/add_identifiers.yml b/.github/workflows/add_identifiers.yml index aab334ab6..8ff87a55f 100644 --- a/.github/workflows/add_identifiers.yml +++ b/.github/workflows/add_identifiers.yml @@ -24,8 +24,15 @@ jobs: # Patch Fastlane Match to not print tables - name: Patch Match Tables - run: find /usr/local/lib/ruby/gems -name table_printer.rb | xargs sed -i "" "/puts(Terminal::Table.new(params))/d" - + 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 diff --git a/.github/workflows/build_loop.yml b/.github/workflows/build_loop.yml index dc84dbee8..f704f38ee 100644 --- a/.github/workflows/build_loop.yml +++ b/.github/workflows/build_loop.yml @@ -2,26 +2,27 @@ name: 4. Build Loop run-name: Build Loop (${{ github.ref_name }}) on: workflow_dispatch: - + ## Remove the "#" sign from the beginning of the line below to get automated builds on push (code changes in your repository) #push: - + schedule: - - cron: '0 8 * * 3' # Checks for updates at 08:00 UTC every Wednesday - - cron: '0 6 1 * *' # Builds the app on the 1st of every month at 06:00 UTC + - cron: "0 8 * * 3" # Checks for updates at 08:00 UTC every Wednesday + - cron: "0 6 1 * *" # Builds the app on the 1st of every month at 06:00 UTC env: 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, and target branch on upstream to be kept alive (replace with specific branch name if needed) - ALIVE_BRANCH: alive + ALIVE_BRANCH_MAIN: alive-main + ALIVE_BRANCH_DEV: alive-dev jobs: validate: name: Validate uses: ./.github/workflows/validate_secrets.yml secrets: inherit - + # Checks if GH_PAT holds workflow permissions # Checks for existence of alive branch; if non-existent creates it check_alive_and_permissions: @@ -32,126 +33,155 @@ jobs: contents: write outputs: WORKFLOW_PERMISSION: ${{ steps.workflow-permission.outputs.has_permission }} - + steps: - - name: Check for workflow permissions - id: workflow-permission - env: - TOKEN_TO_CHECK: ${{ secrets.GH_PAT }} - run: | - PERMISSIONS=$(curl -sS -f -I -H "Authorization: token ${{ env.TOKEN_TO_CHECK }}" https://api.github.com | grep ^x-oauth-scopes: | cut -d' ' -f2-); - - if [[ $PERMISSIONS =~ "workflow" || $PERMISSIONS == "" ]]; then - echo "GH_PAT holds workflow permissions or is fine-grained PAT." - echo "has_permission=true" >> $GITHUB_OUTPUT # Set WORKFLOW_PERMISSION to false. - else - echo "GH_PAT lacks workflow permissions." - echo "Automated build features will be skipped!" - echo "has_permission=false" >> $GITHUB_OUTPUT # Set WORKFLOW_PERMISSION to false. - fi - - - name: Check for alive branch - if: steps.workflow-permission.outputs.has_permission == 'true' - env: - GITHUB_TOKEN: ${{ secrets.GH_PAT }} - run: | - if [[ "$(gh api -H "Accept: application/vnd.github+json" /repos/${{ github.repository_owner }}/LoopWorkspace/branches | jq --raw-output 'any(.name=="alive")')" == "true" ]]; then - echo "Branch 'alive' exists." - echo "ALIVE_BRANCH_EXISTS=true" >> $GITHUB_ENV # Set ALIVE_BRANCH_EXISTS to true - else - echo "Branch 'alive' does not exist." - echo "ALIVE_BRANCH_EXISTS=false" >> $GITHUB_ENV # Set ALIVE_BRANCH_EXISTS to false - fi - - - name: Create alive branch - if: env.ALIVE_BRANCH_EXISTS == 'false' - env: - GITHUB_TOKEN: ${{ secrets.GH_PAT }} - run: | - # Get ref for LoopKit/LoopWorkspace:dev - SHA=$(curl -sS https://api.github.com/repos/${{ env.UPSTREAM_REPO }}/git/refs \ - | jq '.[] | select(.ref == "refs/heads/dev" ) | .object.sha' \ - | tr -d '"' - ); - - # Create alive branch based on LoopKit/LoopWorkspace:dev - gh api \ - --method POST \ - -H "Authorization: token $GITHUB_TOKEN" \ - -H "Accept: application/vnd.github.v3+json" \ - /repos/${{ github.repository_owner }}/LoopWorkspace/git/refs \ - -f ref='refs/heads/alive' \ - -f sha=$SHA - + - name: Check for workflow permissions + id: workflow-permission + env: + TOKEN_TO_CHECK: ${{ secrets.GH_PAT }} + run: | + PERMISSIONS=$(curl -sS -f -I -H "Authorization: token ${{ env.TOKEN_TO_CHECK }}" https://api.github.com | grep ^x-oauth-scopes: | cut -d' ' -f2-); + + if [[ $PERMISSIONS =~ "workflow" || $PERMISSIONS == "" ]]; then + echo "GH_PAT holds workflow permissions or is fine-grained PAT." + echo "has_permission=true" >> $GITHUB_OUTPUT # Set WORKFLOW_PERMISSION to false. + else + echo "GH_PAT lacks workflow permissions." + echo "Automated build features will be skipped!" + echo "has_permission=false" >> $GITHUB_OUTPUT # Set WORKFLOW_PERMISSION to false. + fi + + - name: Check for alive branches + if: steps.workflow-permission.outputs.has_permission == 'true' + env: + GITHUB_TOKEN: ${{ secrets.GH_PAT }} + run: | + if [[ $(gh api -H "Accept: application/vnd.github+json" /repos/${{ github.repository_owner }}/LoopWorkspace/branches | jq --raw-output '[.[] | select(.name == "alive-main" or .name == "alive-dev")] | length > 0') == "true" ]]; then + echo "Branches 'alive-main' or 'alive-dev' exist." + echo "ALIVE_BRANCH_EXISTS=true" >> $GITHUB_ENV + else + echo "Branches 'alive-main' and 'alive-dev' do not exist." + echo "ALIVE_BRANCH_EXISTS=false" >> $GITHUB_ENV + fi + + - name: Create alive branches + if: env.ALIVE_BRANCH_EXISTS == 'false' + env: + GITHUB_TOKEN: ${{ secrets.GH_PAT }} + run: | + # Get ref for LoopKit/LoopWorkspace:main + SHA_MAIN=$(curl -sS -H "Authorization: token $GITHUB_TOKEN" https://api.github.com/repos/${{ env.UPSTREAM_REPO }}/git/refs/heads/main | jq -r '.object.sha') + + # Get ref for LoopKit/LoopWorkspace:dev + SHA_DEV=$(curl -sS -H "Authorization: token $GITHUB_TOKEN" https://api.github.com/repos/${{ env.UPSTREAM_REPO }}/git/refs/heads/dev | jq -r '.object.sha') + + # Create alive-main branch based on LoopKit/LoopWorkspace:main + gh api \ + --method POST \ + -H "Authorization: token $GITHUB_TOKEN" \ + -H "Accept: application/vnd.github.v3+json" \ + /repos/${{ github.repository_owner }}/LoopWorkspace/git/refs \ + -f ref='refs/heads/alive-main' \ + -f sha=$SHA_MAIN + + # Create alive-dev branch based on LoopKit/LoopWorkspace:dev + gh api \ + --method POST \ + -H "Authorization: token $GITHUB_TOKEN" \ + -H "Accept: application/vnd.github.v3+json" \ + /repos/${{ github.repository_owner }}/LoopWorkspace/git/refs \ + -f ref='refs/heads/alive-dev' \ + -f sha=$SHA_DEV + # Checks for changes in upstream repository; if changes exist prompts sync for build # Performs keepalive to avoid stale fork check_latest_from_upstream: needs: [validate, check_alive_and_permissions] runs-on: ubuntu-latest name: Check upstream and keep alive - outputs: + outputs: NEW_COMMITS: ${{ steps.sync.outputs.has_new_commits }} - + ABORT_SYNC: ${{ steps.check_branch.outputs.ABORT_SYNC }} + steps: - - name: Checkout target repo - if: | - needs.check_alive_and_permissions.outputs.WORKFLOW_PERMISSION == 'true' && - (vars.SCHEDULED_BUILD != 'false' || vars.SCHEDULED_SYNC != 'false') - uses: actions/checkout@v4 - with: - token: ${{ secrets.GH_PAT }} - ref: alive - - - name: Sync upstream changes - if: | # do not run the upstream sync action on the upstream repository - needs.check_alive_and_permissions.outputs.WORKFLOW_PERMISSION == 'true' && - vars.SCHEDULED_SYNC != 'false' && github.repository_owner != 'LoopKit' - id: sync - uses: aormsby/Fork-Sync-With-Upstream-action@v3.4.1 - with: - target_sync_branch: ${{ env.ALIVE_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: | - needs.check_alive_and_permissions.outputs.WORKFLOW_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: | - needs.check_alive_and_permissions.outputs.WORKFLOW_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: needs.check_alive_and_permissions.outputs.WORKFLOW_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 - - # Keep repository "alive": add empty commits to ALIVE_BRANCH after "time_elapsed" days of inactivity to avoid inactivation of scheduled workflows - - name: Keep alive - if: | - needs.check_alive_and_permissions.outputs.WORKFLOW_PERMISSION == 'true' && - (vars.SCHEDULED_BUILD != 'false' || vars.SCHEDULED_SYNC != 'false') - uses: gautamkrishnar/keepalive-workflow@v1 # using the workflow with default settings - with: - time_elapsed: 20 # Time elapsed from the previous commit to trigger a new automated commit (in days) - - - name: Show scheduled build configuration message - if: needs.check_alive_and_permissions.outputs.WORKFLOW_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 - + - name: Check if running on main or dev branch + if: | + needs.check_alive_and_permissions.outputs.WORKFLOW_PERMISSION == 'true' && + (vars.SCHEDULED_BUILD != 'false' || vars.SCHEDULED_SYNC != 'false') + id: check_branch + run: | + if [ "${GITHUB_REF##*/}" = "main" ]; then + echo "Running on main branch" + echo "ALIVE_BRANCH=${ALIVE_BRANCH_MAIN}" >> $GITHUB_OUTPUT + echo "ABORT_SYNC=false" >> $GITHUB_OUTPUT + elif [ "${GITHUB_REF##*/}" = "dev" ]; then + echo "Running on dev branch" + echo "ALIVE_BRANCH=${ALIVE_BRANCH_DEV}" >> $GITHUB_OUTPUT + echo "ABORT_SYNC=false" >> $GITHUB_OUTPUT + else + echo "Not running on main or dev branch" + echo "ABORT_SYNC=true" >> $GITHUB_OUTPUT + fi + + - name: Checkout target repo + if: | + needs.check_alive_and_permissions.outputs.WORKFLOW_PERMISSION == 'true' && + (vars.SCHEDULED_BUILD != 'false' || vars.SCHEDULED_SYNC != 'false') + uses: actions/checkout@v4 + with: + token: ${{ secrets.GH_PAT }} + ref: ${{ steps.check_branch.outputs.ALIVE_BRANCH }} + + - name: Sync upstream changes + if: | # do not run the upstream sync action on the upstream repository + needs.check_alive_and_permissions.outputs.WORKFLOW_PERMISSION == 'true' && + vars.SCHEDULED_SYNC != 'false' && github.repository_owner != 'LoopKit' && steps.check_branch.outputs.ABORT_SYNC == 'false' + id: sync + uses: aormsby/Fork-Sync-With-Upstream-action@v3.4.1 + with: + target_sync_branch: ${{ steps.check_branch.outputs.ALIVE_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: | + needs.check_alive_and_permissions.outputs.WORKFLOW_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: | + needs.check_alive_and_permissions.outputs.WORKFLOW_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: needs.check_alive_and_permissions.outputs.WORKFLOW_PERMISSION == 'true' && vars.SCHEDULED_SYNC != 'false' && steps.check_branch.outputs.ABORT_SYNC == 'false' + run: | + echo ${{ steps.sync.outputs.has_new_commits }} + echo "NEW_COMMITS=${{ steps.sync.outputs.has_new_commits }}" >> $GITHUB_OUTPUT + + # Keep repository "alive": add empty commits to ALIVE_BRANCH after "time_elapsed" days of inactivity to avoid inactivation of scheduled workflows + - name: Keep alive + if: | + needs.check_alive_and_permissions.outputs.WORKFLOW_PERMISSION == 'true' && + (vars.SCHEDULED_BUILD != 'false' || vars.SCHEDULED_SYNC != 'false') + uses: gautamkrishnar/keepalive-workflow@v1 # using the workflow with default settings + with: + time_elapsed: 20 # Time elapsed from the previous commit to trigger a new automated commit (in days) + + - name: Show scheduled build configuration message + if: needs.check_alive_and_permissions.outputs.WORKFLOW_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 + # Builds Loop build: name: Build @@ -159,16 +189,17 @@ jobs: runs-on: macos-14 permissions: contents: write - if: | # runs if started manually, or if sync schedule is set and enabled and scheduled on the first Saturday each month, or if sync schedule is set and enabled and new commits were found - github.event_name == 'workflow_dispatch' || - (needs.check_alive_and_permissions.outputs.WORKFLOW_PERMISSION == 'true' && - (vars.SCHEDULED_BUILD != 'false' && github.event.schedule == '0 6 1 * *') || - (vars.SCHEDULED_SYNC != 'false' && needs.check_latest_from_upstream.outputs.NEW_COMMITS == 'true' ) - ) + if: + | # runs if started manually, or if sync schedule is set and enabled and scheduled on the first Saturday each month, or if sync schedule is set and enabled and new commits were found + github.event_name == 'workflow_dispatch' || + (needs.check_alive_and_permissions.outputs.WORKFLOW_PERMISSION == 'true' && + (vars.SCHEDULED_BUILD != 'false' && github.event.schedule == '0 6 1 * *') || + (vars.SCHEDULED_SYNC != 'false' && needs.check_latest_from_upstream.outputs.NEW_COMMITS == 'true' ) + ) steps: - name: Select Xcode version - run: "sudo xcode-select --switch /Applications/Xcode_15.4.app/Contents/Developer" - + run: "sudo xcode-select --switch /Applications/Xcode_16.1.app/Contents/Developer" + - name: Checkout Repo for syncing if: | needs.check_alive_and_permissions.outputs.WORKFLOW_PERMISSION == 'true' && @@ -176,12 +207,12 @@ jobs: uses: actions/checkout@v4 with: token: ${{ secrets.GH_PAT }} - ref: ${{ env.TARGET_BRANCH }} - + ref: ${{ env.TARGET_BRANCH }} + - name: Sync upstream changes if: | # do not run the upstream sync action on the upstream repository needs.check_alive_and_permissions.outputs.WORKFLOW_PERMISSION == 'true' && - vars.SCHEDULED_SYNC != 'false' && github.repository_owner != 'LoopKit' + vars.SCHEDULED_SYNC != 'false' && github.repository_owner != 'LoopKit' && needs.check_latest_from_upstream.outputs.ABORT_SYNC == 'false' id: sync uses: aormsby/Fork-Sync-With-Upstream-action@v3.4.1 with: @@ -190,24 +221,24 @@ jobs: 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: | needs.check_alive_and_permissions.outputs.WORKFLOW_PERMISSION == 'true' && - vars.SCHEDULED_SYNC != 'false' && steps.sync.outputs.has_new_commits == 'true' + vars.SCHEDULED_SYNC != 'false' && steps.sync.outputs.has_new_commits == 'true' && needs.check_latest_from_upstream.outputs.ABORT_SYNC == 'false' run: echo "New commits were found to sync." - + - name: No new commits if: | needs.check_alive_and_permissions.outputs.WORKFLOW_PERMISSION == 'true' && - vars.SCHEDULED_SYNC != 'false' && steps.sync.outputs.has_new_commits == 'false' + vars.SCHEDULED_SYNC != 'false' && steps.sync.outputs.has_new_commits == 'false' && needs.check_latest_from_upstream.outputs.ABORT_SYNC == 'false' run: echo "There were no new commits." - + - name: Show value of 'has_new_commits' if: | needs.check_alive_and_permissions.outputs.WORKFLOW_PERMISSION == 'true' - && vars.SCHEDULED_SYNC != 'false' + && vars.SCHEDULED_SYNC != 'false' && needs.check_latest_from_upstream.outputs.ABORT_SYNC == 'false' run: | echo ${{ steps.sync.outputs.has_new_commits }} echo "NEW_COMMITS=${{ steps.sync.outputs.has_new_commits }}" >> $GITHUB_OUTPUT @@ -218,7 +249,7 @@ jobs: token: ${{ secrets.GH_PAT }} submodules: recursive ref: ${{ env.TARGET_BRANCH }} - + # Customize Loop: Download and apply patches - name: Customize Loop run: | @@ -233,24 +264,30 @@ jobs: # 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: find /usr/local/lib/ruby/gems -name table_printer.rb | xargs sed -i "" "/puts(Terminal::Table.new(params))/d" - + 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 @@ -258,10 +295,10 @@ jobs: # 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 + run: bundle exec fastlane build_loop env: TEAMID: ${{ secrets.TEAMID }} GH_PAT: ${{ secrets.GH_PAT }} @@ -269,7 +306,7 @@ jobs: 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 @@ -289,4 +326,4 @@ jobs: name: build-artifacts path: | artifacts - buildlog + buildlog \ No newline at end of file diff --git a/.github/workflows/create_certs.yml b/.github/workflows/create_certs.yml index 90bb4f75b..9c4b51722 100644 --- a/.github/workflows/create_certs.yml +++ b/.github/workflows/create_certs.yml @@ -24,8 +24,15 @@ jobs: # Patch Fastlane Match to not print tables - name: Patch Match Tables - run: find /usr/local/lib/ruby/gems -name table_printer.rb | xargs sed -i "" "/puts(Terminal::Table.new(params))/d" - + 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 diff --git a/.github/workflows/validate_secrets.yml b/.github/workflows/validate_secrets.yml index 5ad976a01..15562a740 100644 --- a/.github/workflows/validate_secrets.yml +++ b/.github/workflows/validate_secrets.yml @@ -16,14 +16,14 @@ jobs: id: access-token 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 @@ -65,12 +65,12 @@ jobs: echo "has_workflow_permission=true" >> $GITHUB_OUTPUT fi fi - + # Exit unsuccessfully if secret validation failed. if [ $failed ]; then exit 2 fi - + validate-match-secrets: name: Match-Secrets needs: validate-access-token @@ -81,10 +81,10 @@ jobs: - name: Validate Match-Secrets run: | # Validate Match-Secrets - + # Ensure that gh exit codes are handled when output is piped. set -o pipefail - + # If a Match-Secrets repository does not exist, attempt to create one. if ! visibility=$(gh repo view ${{ github.repository_owner }}/Match-Secrets --json visibility | jq --raw-output '.visibility | ascii_downcase'); then echo "A '${{ github.repository_owner }}/Match-Secrets' repository could not be found using the GH_PAT secret. Attempting to create one..." @@ -103,12 +103,12 @@ jobs: else echo "Found a private '${{ github.repository_owner }}/Match-Secrets' repository to use." fi - + # Exit unsuccessfully if secret validation failed. if [ $failed ]; then exit 2 fi - + validate-fastlane-secrets: name: Fastlane needs: [validate-access-token, validate-match-secrets] @@ -124,18 +124,18 @@ jobs: steps: - name: Checkout Repo uses: actions/checkout@v4 - + - 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 - + - name: Validate Fastlane Secrets run: | # Validate Fastlane Secrets - + # Validate TEAMID if [ -z "$TEAMID" ]; then failed=true @@ -147,20 +147,20 @@ jobs: failed=true echo "::error::The TEAMID secret is set but invalid. Verify that it is set correctly (only uppercase letters and numbers) and try again." fi - + # Validate MATCH_PASSWORD if [ -z "$MATCH_PASSWORD" ]; then failed=true echo "::error::The MATCH_PASSWORD secret is unset or empty. Set it and try again." fi - + # Ensure that fastlane exit codes are handled when output is piped. set -o pipefail - + # Validate FASTLANE_ISSUER_ID, FASTLANE_KEY_ID, and FASTLANE_KEY FASTLANE_KEY_ID_PATTERN='^[A-Z0-9]+$' FASTLANE_ISSUER_ID_PATTERN='^\{?[A-F0-9a-f]{8}-[A-F0-9a-f]{4}-[A-F0-9a-f]{4}-[A-F0-9a-f]{4}-[A-F0-9a-f]{12}\}?$' - + if [ -z "$FASTLANE_ISSUER_ID" ] || [ -z "$FASTLANE_KEY_ID" ] || [ -z "$FASTLANE_KEY" ]; then failed=true [ -z "$FASTLANE_ISSUER_ID" ] && echo "::error::The FASTLANE_ISSUER_ID secret is unset or empty. Set it and try again." @@ -168,13 +168,13 @@ jobs: [ -z "$FASTLANE_KEY" ] && echo "::error::The FASTLANE_KEY secret is unset or empty. Set it and try again." elif [ ${#FASTLANE_KEY_ID} -ne 10 ]; then failed=true - echo "::error::The FASTLANE_KEY_ID secret is set but has wrong length. Verify that you copied it correctly from the 'Keys' tab at https://appstoreconnect.apple.com/access/api and try again." + echo "::error::The FASTLANE_KEY_ID secret is set but has wrong length. Verify that you copied it correctly from the 'Keys' tab at https://appstoreconnect.apple.com/access/integrations/api and try again." elif ! [[ $FASTLANE_KEY_ID =~ $FASTLANE_KEY_ID_PATTERN ]]; then failed=true - echo "::error::The FASTLANE_KEY_ID secret is set but invalid. Verify that you copied it correctly from the 'Keys' tab at https://appstoreconnect.apple.com/access/api and try again." + echo "::error::The FASTLANE_KEY_ID secret is set but invalid. Verify that you copied it correctly from the 'Keys' tab at https://appstoreconnect.apple.com/access/integrations/api and try again." elif ! [[ $FASTLANE_ISSUER_ID =~ $FASTLANE_ISSUER_ID_PATTERN ]]; then failed=true - echo "::error::The FASTLANE_ISSUER_ID secret is set but invalid. Verify that you copied it correctly from the 'Keys' tab at https://appstoreconnect.apple.com/access/api and try again." + echo "::error::The FASTLANE_ISSUER_ID secret is set but invalid. Verify that you copied it correctly from the 'Keys' tab at https://appstoreconnect.apple.com/access/integrations/api and try again." elif ! echo "$FASTLANE_KEY" | openssl pkcs8 -nocrypt >/dev/null; then failed=true echo "::error::The FASTLANE_KEY secret is set but invalid. Verify that you copied it correctly from the API Key file (*.p8) you downloaded and try again." @@ -190,7 +190,7 @@ jobs: echo "::error::Unable to create a valid authorization token for the App Store Connect API. Verify that the FASTLANE_ISSUER_ID, FASTLANE_KEY_ID, and FASTLANE_KEY secrets are set correctly and try again." fi fi - + # Exit unsuccessfully if secret validation failed. if [ $failed ]; then exit 2 diff --git a/Gemfile.lock b/Gemfile.lock index 1ff12d548..8caeede21 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -10,20 +10,20 @@ GEM artifactory (3.0.17) atomos (0.1.3) aws-eventstream (1.3.0) - aws-partitions (1.949.0) - aws-sdk-core (3.200.0) + aws-partitions (1.981.0) + aws-sdk-core (3.209.1) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.651.0) - aws-sigv4 (~> 1.8) + aws-sigv4 (~> 1.9) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.87.0) - aws-sdk-core (~> 3, >= 3.199.0) - aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.155.0) - aws-sdk-core (~> 3, >= 3.199.0) + aws-sdk-kms (1.94.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-s3 (1.166.0) + aws-sdk-core (~> 3, >= 3.207.0) aws-sdk-kms (~> 1) - aws-sigv4 (~> 1.8) - aws-sigv4 (1.8.0) + aws-sigv4 (~> 1.5) + aws-sigv4 (1.10.0) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) base64 (0.2.0) @@ -40,7 +40,7 @@ GEM dotenv (2.8.1) emoji_regex (3.2.3) excon (0.109.0) - faraday (1.10.3) + faraday (1.10.4) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) @@ -61,15 +61,15 @@ GEM faraday-httpclient (1.0.1) faraday-multipart (1.0.4) multipart-post (~> 2) - faraday-net_http (1.0.1) + faraday-net_http (1.0.2) faraday-net_http_persistent (1.2.0) faraday-patron (1.0.0) faraday-rack (1.0.0) faraday-retry (1.0.3) - faraday_middleware (1.2.0) + faraday_middleware (1.2.1) faraday (~> 1.0) fastimage (2.3.1) - fastlane (2.221.1) + fastlane (2.223.1) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -148,14 +148,14 @@ GEM os (>= 0.9, < 2.0) signet (>= 0.16, < 2.a) highline (2.0.3) - http-cookie (1.0.6) + http-cookie (1.0.7) domain_name (~> 0.5) httpclient (2.8.3) jmespath (1.6.2) json (2.7.2) - jwt (2.8.2) + jwt (2.9.1) base64 - mini_magick (4.13.1) + mini_magick (4.13.2) mini_mime (1.1.5) multi_json (1.15.0) multipart-post (2.4.1) @@ -172,8 +172,7 @@ GEM trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.2.9) - strscan + rexml (3.3.7) rouge (2.0.7) ruby2_keywords (0.0.5) rubyzip (2.3.2) @@ -186,7 +185,6 @@ GEM simctl (1.6.10) CFPropertyList naturally - strscan (3.1.0) terminal-notifier (2.0.0) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) @@ -196,18 +194,16 @@ GEM tty-spinner (0.9.3) tty-cursor (~> 0.7) uber (0.1.0) - unf (0.1.4) - unf_ext - unf_ext (0.0.9.1) - unicode-display_width (2.5.0) + unf (0.2.0) + unicode-display_width (2.6.0) word_wrap (1.0.0) - xcodeproj (1.24.0) + xcodeproj (1.25.0) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) colored2 (~> 3.1) nanaimo (~> 0.3.0) - rexml (~> 3.2.4) + rexml (>= 3.3.2, < 4.0) xcpretty (0.3.0) rouge (~> 2.0.7) xcpretty-travis-formatter (1.0.1) @@ -218,6 +214,7 @@ PLATFORMS arm64-darwin-22 arm64-darwin-23 x86_64-darwin-19 + x86_64-darwin-24 x86_64-linux DEPENDENCIES From 0f75bc73ea252a5c644c9023d655635e60fa7712 Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Thu, 31 Oct 2024 08:56:57 -0500 Subject: [PATCH 08/12] Update submodule refs --- AmplitudeService | 2 +- LogglyService | 2 +- Loop | 2 +- LoopKit | 2 +- LoopOnboarding | 2 +- NightscoutService | 2 +- TidepoolService | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/AmplitudeService b/AmplitudeService index f75f64f25..1faa8c7c7 160000 --- a/AmplitudeService +++ b/AmplitudeService @@ -1 +1 @@ -Subproject commit f75f64f25b399b9e9a007a01a71a592875b948a8 +Subproject commit 1faa8c7c77334ce3d645f7942ca779ed08fbd1cb diff --git a/LogglyService b/LogglyService index 2ef148d89..a655c1cdf 160000 --- a/LogglyService +++ b/LogglyService @@ -1 +1 @@ -Subproject commit 2ef148d898d7af249598c1e238ff01985f3ed7c2 +Subproject commit a655c1cdfc747097b9b1106f1f83d25cc65a9e77 diff --git a/Loop b/Loop index b833eb482..14686ef86 160000 --- a/Loop +++ b/Loop @@ -1 +1 @@ -Subproject commit b833eb482cec9742d5a182955650f9289a39daa9 +Subproject commit 14686ef863e0a33c456814e9bc770569ff36acf5 diff --git a/LoopKit b/LoopKit index a24e91983..06559976f 160000 --- a/LoopKit +++ b/LoopKit @@ -1 +1 @@ -Subproject commit a24e91983f1724c3b26c0ad3d4137b974bbd1426 +Subproject commit 06559976f42922910b4958d234d2e6ac91b9bc57 diff --git a/LoopOnboarding b/LoopOnboarding index 5b36d90fe..6abfc4c7c 160000 --- a/LoopOnboarding +++ b/LoopOnboarding @@ -1 +1 @@ -Subproject commit 5b36d90feea816a78fcd97939bda56251d73aa87 +Subproject commit 6abfc4c7c911d2575aaf74bc3c2ec4394b5e1d06 diff --git a/NightscoutService b/NightscoutService index f6a1d6e4a..4ec123b86 160000 --- a/NightscoutService +++ b/NightscoutService @@ -1 +1 @@ -Subproject commit f6a1d6e4aece02639967954b404d395a566b533a +Subproject commit 4ec123b865ac785b8bc451631fc52728b57f699c diff --git a/TidepoolService b/TidepoolService index ab70ef9e6..1c1578983 160000 --- a/TidepoolService +++ b/TidepoolService @@ -1 +1 @@ -Subproject commit ab70ef9e6cabc1cafceb186fedfb825d73a9bcf4 +Subproject commit 1c157898309adc6ef1ab8c73a5311616d4e20f5f From 7386557c04b796d0254e4b351adc0e26ce978190 Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Thu, 31 Oct 2024 09:22:00 -0500 Subject: [PATCH 09/12] Update Mixpanel for protocol changes --- MixpanelService | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MixpanelService b/MixpanelService index 439e9d0a1..52e9963bb 160000 --- a/MixpanelService +++ b/MixpanelService @@ -1 +1 @@ -Subproject commit 439e9d0a1e6c5a81a2b3f4e4e862f0fdf39cb4de +Subproject commit 52e9963bbc1548d9a706cd863c3574a637508e56 From 8ac0eccb6ed59d74ae717f12718fe61575e79589 Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Thu, 31 Oct 2024 09:28:14 -0500 Subject: [PATCH 10/12] disable module verifier for build performance --- AmplitudeService | 2 +- LibreTransmitter | 2 +- LoopKit | 2 +- MixpanelService | 2 +- OmniBLE | 2 +- OmniKit | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/AmplitudeService b/AmplitudeService index 1faa8c7c7..a8b67c879 160000 --- a/AmplitudeService +++ b/AmplitudeService @@ -1 +1 @@ -Subproject commit 1faa8c7c77334ce3d645f7942ca779ed08fbd1cb +Subproject commit a8b67c8797d8249051b88023dd7a7040a5e93aab diff --git a/LibreTransmitter b/LibreTransmitter index 995bef901..e14a1b18c 160000 --- a/LibreTransmitter +++ b/LibreTransmitter @@ -1 +1 @@ -Subproject commit 995bef901481ff9d1ff9abfd1fee19539719bd02 +Subproject commit e14a1b18c3b73df934208b8d554586e690fcdeda diff --git a/LoopKit b/LoopKit index 06559976f..5af8e7e5b 160000 --- a/LoopKit +++ b/LoopKit @@ -1 +1 @@ -Subproject commit 06559976f42922910b4958d234d2e6ac91b9bc57 +Subproject commit 5af8e7e5b939ef739ea9018cd74bd8754b9f3578 diff --git a/MixpanelService b/MixpanelService index 52e9963bb..23cae11cc 160000 --- a/MixpanelService +++ b/MixpanelService @@ -1 +1 @@ -Subproject commit 52e9963bbc1548d9a706cd863c3574a637508e56 +Subproject commit 23cae11cc542625148abda93c6e37d250fe7191e diff --git a/OmniBLE b/OmniBLE index 3930aa8d9..56808fb0d 160000 --- a/OmniBLE +++ b/OmniBLE @@ -1 +1 @@ -Subproject commit 3930aa8d9691fa50070560cd3d33ef7fac8c3093 +Subproject commit 56808fb0dafffe6838c349f7d6277ac00da9a574 diff --git a/OmniKit b/OmniKit index 2ab9c8e5f..403bce381 160000 --- a/OmniKit +++ b/OmniKit @@ -1 +1 @@ -Subproject commit 2ab9c8e5f9df7a300c3d44f16dac910510e0ccfd +Subproject commit 403bce381943eb64bbbc632ee076356d97812dc6 From 17aa656fdad6378414578791b65f9b8e453e6a11 Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Thu, 31 Oct 2024 11:11:07 -0500 Subject: [PATCH 11/12] Fixes around manual injections --- Loop | 2 +- TidepoolService | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Loop b/Loop index 14686ef86..438096a81 160000 --- a/Loop +++ b/Loop @@ -1 +1 @@ -Subproject commit 14686ef863e0a33c456814e9bc770569ff36acf5 +Subproject commit 438096a8184fd26fd11c60c96e15aeb8ad6c25d3 diff --git a/TidepoolService b/TidepoolService index 1c1578983..2cd32ca19 160000 --- a/TidepoolService +++ b/TidepoolService @@ -1 +1 @@ -Subproject commit 1c157898309adc6ef1ab8c73a5311616d4e20f5f +Subproject commit 2cd32ca193eedd4fb4ed769679f36f1a01126669 From 18064d4f39e620355cd63226c83ce117c1264d5f Mon Sep 17 00:00:00 2001 From: Pete Schwamb Date: Wed, 11 Jun 2025 15:22:38 -0500 Subject: [PATCH 12/12] Bring in fix for tests --- Loop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Loop b/Loop index 83b0f071e..1b341c803 160000 --- a/Loop +++ b/Loop @@ -1 +1 @@ -Subproject commit 83b0f071ea6366851a24f9547b02727848b95996 +Subproject commit 1b341c8035649dcdd5f7dfda1386faabf784043f