diff --git a/AmplitudeService b/AmplitudeService index 5451d96d7f..1df8e64bb9 160000 --- a/AmplitudeService +++ b/AmplitudeService @@ -1 +1 @@ -Subproject commit 5451d96d7fd9d9c34f0277b4bd0b51afa04408b7 +Subproject commit 1df8e64bb9bbe36367ed9038bc9225d680544d0d diff --git a/CGMBLEKit b/CGMBLEKit index 7fb23093b4..4eee5121a1 160000 --- a/CGMBLEKit +++ b/CGMBLEKit @@ -1 +1 @@ -Subproject commit 7fb23093b459880eebd7cd657be7d97a7e188bd4 +Subproject commit 4eee5121a12c01032b306063b9b673ffea1bf126 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/G7SensorKit b/G7SensorKit index d3b81f56c5..8ce130e07b 160000 --- a/G7SensorKit +++ b/G7SensorKit @@ -1 +1 @@ -Subproject commit d3b81f56c574cafd4ae84061d15a6423f6083dd1 +Subproject commit 8ce130e07bce4fb7decdf420cf478a77b18ba3d7 diff --git a/Gemfile b/Gemfile index 502d6331b5..599db6eabf 100644 --- a/Gemfile +++ b/Gemfile @@ -1,2 +1,2 @@ source "https://rubygems.org" -gem "fastlane", "2.237.0" +gem "fastlane", "2.240.1" diff --git a/Gemfile.lock b/Gemfile.lock index 8e70830ead..67110040a4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -30,6 +30,7 @@ GEM base64 (0.3.0) benchmark (0.5.0) bigdecimal (4.1.2) + cgi (0.5.2) claide (1.1.0) colored (1.2) colored2 (3.1.2) @@ -42,38 +43,26 @@ GEM domain_name (0.6.20240107) dotenv (2.8.1) emoji_regex (3.2.3) + erb (6.0.7) excon (1.5.0) logger - faraday (1.10.6) - faraday-em_http (~> 1.0) - faraday-em_synchrony (~> 1.0) - faraday-excon (~> 1.1) - faraday-httpclient (~> 1.0) - faraday-multipart (~> 1.0) - faraday-net_http (~> 1.0) - faraday-net_http_persistent (~> 1.0) - faraday-patron (~> 1.0) - faraday-rack (~> 1.0) - faraday-retry (~> 1.0) - ruby2_keywords (>= 0.0.4) + faraday (2.14.4) + faraday-net_http (>= 2.0, < 3.5) + json + logger faraday-cookie_jar (0.0.8) faraday (>= 0.8.0) http-cookie (>= 1.0.0) - faraday-em_http (1.0.0) - faraday-em_synchrony (1.0.1) - faraday-excon (1.1.0) - faraday-httpclient (1.0.1) + faraday-follow_redirects (0.5.0) + faraday (>= 1, < 3) faraday-multipart (1.2.0) multipart-post (~> 2.0) - 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.4) - faraday_middleware (1.2.1) - faraday (~> 1.0) + faraday-net_http (3.4.4) + net-http (~> 0.5) + faraday-retry (2.4.0) + faraday (~> 2.0) fastimage (2.4.1) - fastlane (2.237.0) + fastlane (2.240.1) CFPropertyList (>= 2.3, < 5.0.0) abbrev (~> 0.1) addressable (>= 2.9.0, < 3.0.0) @@ -83,24 +72,27 @@ GEM base64 (~> 0.2) benchmark (>= 0.1.0) bundler (>= 2.4.0, < 5.0.0) + cgi (~> 0.4) colored (~> 1.2) commander (~> 4.6) csv (~> 3.3) dotenv (>= 2.1.1, < 3.0.0) emoji_regex (>= 0.1, < 4.0) excon (>= 0.71.0, < 2.0.0) - faraday (~> 1.0) - faraday-cookie_jar (~> 0.0.6) - faraday_middleware (~> 1.0) + faraday (~> 2.7) + faraday-cookie_jar (~> 0.0.8) + faraday-follow_redirects (~> 0.3) + faraday-multipart (~> 1.0) + faraday-retry (~> 2.0) fastimage (>= 2.1.0, < 3.0.0) fastlane-sirp (>= 1.1.0) gh_inspector (>= 1.1.2, < 2.0.0) - google-apis-androidpublisher_v3 (~> 0.3) + google-apis-androidpublisher_v3 (~> 0.99) google-apis-playcustomapp_v1 (~> 0.1) - google-cloud-env (>= 1.6.0, < 2.3.0) + google-cloud-env (>= 1.6.0, < 2.4.0) google-cloud-storage (~> 1.31) highline (~> 2.0) - http-cookie (~> 1.0.5) + irb (>= 1.8) json (< 3.0.0) jwt (>= 2.10.3, < 4) logger (>= 1.6, < 2.0) @@ -113,11 +105,11 @@ GEM optparse (>= 0.1.1, < 1.0.0) ostruct (>= 0.1.0) plist (>= 3.1.0, < 4.0.0) - rubyzip (>= 2.0.0, < 3.0.0) - security (= 0.1.5) + rubyzip (>= 3.4.0, < 4.0.0) + security (~> 0.3) simctl (~> 1.6.3) terminal-notifier (>= 2.0.0, < 3.0.0) - terminal-table (~> 3) + terminal-table (~> 4) tty-screen (>= 0.6.3, < 1.0.0) tty-spinner (>= 0.8.0, < 1.0.0) word_wrap (~> 1.0.0) @@ -172,8 +164,14 @@ GEM domain_name (~> 0.5) httpclient (2.9.0) mutex_m + io-console (0.9.4) + irb (1.18.0) + pp (>= 0.6.0) + prism (>= 1.3.0) + rdoc (>= 4.0.0) + reline (>= 0.4.2) jmespath (1.6.2) - json (2.20.0) + json (2.21.2) jwt (3.2.0) base64 logger (1.7.0) @@ -184,14 +182,31 @@ GEM mutex_m (0.3.0) nanaimo (0.4.0) naturally (2.3.0) + net-http (0.9.1) + uri (>= 0.11.1) nkf (0.3.0) optparse (0.8.1) os (1.1.4) ostruct (0.6.3) plist (3.7.2) + pp (0.6.4) + prettyprint + prettyprint (0.2.0) + prism (1.9.0) pstore (0.2.1) public_suffix (7.0.5) rake (13.4.2) + rbs (4.2.0) + logger + prism (>= 1.6.0) + tsort + rdoc (8.1.0) + erb + prism (>= 1.6.0) + rbs (>= 4.0.0) + tsort + reline (0.7.0) + io-console (~> 0.5) representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) @@ -199,9 +214,8 @@ GEM 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) + rubyzip (3.7.0) + security (0.3.0) signet (0.22.0) addressable (~> 2.8) faraday (>= 0.17.5, < 3.a) @@ -210,15 +224,17 @@ GEM CFPropertyList naturally terminal-notifier (2.0.0) - terminal-table (3.0.2) - unicode-display_width (>= 1.1.1, < 3) + terminal-table (4.0.0) + unicode-display_width (>= 1.1.1, < 4) trailblazer-option (0.1.2) + tsort (0.2.0) tty-cursor (0.7.1) tty-screen (0.8.2) tty-spinner (0.9.3) tty-cursor (~> 0.7) uber (0.1.0) unicode-display_width (2.6.0) + uri (1.1.1) word_wrap (1.0.0) xcodeproj (1.28.1) CFPropertyList (>= 2.3.3, < 4.0) @@ -239,7 +255,7 @@ PLATFORMS ruby DEPENDENCIES - fastlane (= 2.237.0) + fastlane (= 2.240.1) BUNDLED WITH 4.0.12 diff --git a/LibreTransmitter b/LibreTransmitter index dde20cd6b4..30e3739cf5 160000 --- a/LibreTransmitter +++ b/LibreTransmitter @@ -1 +1 @@ -Subproject commit dde20cd6b4f3c3537fc1fbeeacde45dc8411a778 +Subproject commit 30e3739cf5bed2e259bfe376ded356f1b1dbbafb diff --git a/LogglyService b/LogglyService index 02ec0cc310..89c94cb92a 160000 --- a/LogglyService +++ b/LogglyService @@ -1 +1 @@ -Subproject commit 02ec0cc310d3c229cc4372edee5e8112dc0f33e9 +Subproject commit 89c94cb92ac1c0f6bee247a960b7574c5e690017 diff --git a/Loop b/Loop index 65c0ddd608..4bb97fd1b8 160000 --- a/Loop +++ b/Loop @@ -1 +1 @@ -Subproject commit 65c0ddd608a7f599c09a0028e42884bfb2410e37 +Subproject commit 4bb97fd1b855339412984b6316c92dfef6b59528 diff --git a/LoopKit b/LoopKit index 150d7e8cb1..5513024d04 160000 --- a/LoopKit +++ b/LoopKit @@ -1 +1 @@ -Subproject commit 150d7e8cb1a3f97d943ecfc77d784e14a7c14755 +Subproject commit 5513024d04b74a3e83d7b1fc67e0247f70b77988 diff --git a/LoopOnboarding b/LoopOnboarding index c7a0b9270e..51a453c7b0 160000 --- a/LoopOnboarding +++ b/LoopOnboarding @@ -1 +1 @@ -Subproject commit c7a0b9270e733ddb8d085ad41f2ce0683d113195 +Subproject commit 51a453c7b03004d01136148fef1ecc1a734d9c16 diff --git a/LoopSupport b/LoopSupport index 115883ba09..d8a6c447ec 160000 --- a/LoopSupport +++ b/LoopSupport @@ -1 +1 @@ -Subproject commit 115883ba09ca0ad584b8aacb2c9dfe735b54655d +Subproject commit d8a6c447ec6a7f4d0055b6eda1e8cddda335c6de diff --git a/MedtrumKit b/MedtrumKit index f01a84de5a..ebdd2edb55 160000 --- a/MedtrumKit +++ b/MedtrumKit @@ -1 +1 @@ -Subproject commit f01a84de5a55d2a65cb0a59611aff1c56c7ee647 +Subproject commit ebdd2edb55c7adab442e88aeb2f92314dc3f05be diff --git a/MinimedKit b/MinimedKit index 6f8207e14b..81112d8ece 160000 --- a/MinimedKit +++ b/MinimedKit @@ -1 +1 @@ -Subproject commit 6f8207e14baeb930d1c1a842558fc5d03c832d9a +Subproject commit 81112d8ecee065e8ecf2ecb4f6707dcb4ae7f8f9 diff --git a/NightscoutRemoteCGM b/NightscoutRemoteCGM index 4cb3e6d289..fb054455cf 160000 --- a/NightscoutRemoteCGM +++ b/NightscoutRemoteCGM @@ -1 +1 @@ -Subproject commit 4cb3e6d2897908c51bc8ab89160ce8efe9a7b045 +Subproject commit fb054455cfcf4f0f9510468739f92408c4a96875 diff --git a/NightscoutService b/NightscoutService index 77397e3a2b..ec96a7869d 160000 --- a/NightscoutService +++ b/NightscoutService @@ -1 +1 @@ -Subproject commit 77397e3a2b69f5d693c87bc112f8e1747f9eb84b +Subproject commit ec96a7869dd2a27b3cc4078b3caa6ff22a253fac diff --git a/OmnipodKit b/OmnipodKit index 14cac36531..2481b36266 160000 --- a/OmnipodKit +++ b/OmnipodKit @@ -1 +1 @@ -Subproject commit 14cac365318f470bf18c636c614f4f6d0a72ebb3 +Subproject commit 2481b36266007fd8d7e6d770570bd4b074d742f6 diff --git a/RileyLinkKit b/RileyLinkKit index 777e7efc0b..1a40a3373a 160000 --- a/RileyLinkKit +++ b/RileyLinkKit @@ -1 +1 @@ -Subproject commit 777e7efc0b0b16a59bf5cec7ba49d02ea7e9120a +Subproject commit 1a40a3373a7999fc4922b8e6ce146a2457a7031e diff --git a/Scripts/define_common.sh b/Scripts/define_common.sh index a1a8aa197a..9d074196fc 100755 --- a/Scripts/define_common.sh +++ b/Scripts/define_common.sh @@ -76,7 +76,7 @@ PROJECTS=( \ LoopKit:NightscoutService:dev \ LoopKit:RileyLinkKit:dev \ LoopKit:TidepoolService:dev \ - loopandlearn:OmnipodKit:main \ + loopandlearn:OmnipodKit:dev \ bastiaanv:EversenseKit:dev \ jbr7rr:MedtrumKit:dev \ ) diff --git a/Scripts/export_localizations.sh b/Scripts/export_localizations.sh index 4beeceef25..3a7cd8ea4a 100755 --- a/Scripts/export_localizations.sh +++ b/Scripts/export_localizations.sh @@ -10,11 +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 ) -# SUPPORTS_MACCATALYST=NO: -exportLocalizations builds every target for all -# platforms it supports, including Mac Catalyst. Loop does not ship a Catalyst -# app, and under Xcode 27 the Catalyst builds fail (frameworks fall back to an -# unsupported macOS 10.15 deployment target), so skip Catalyst entirely. -xcodebuild -scheme LoopWorkspace -exportLocalizations -localizationPath xclocs SUPPORTS_MACCATALYST=NO $args +xcodebuild -scheme LoopWorkspace -destination 'generic/platform=iOS' -exportLocalizations -localizationPath xclocs SUPPORTS_MACCATALYST=NO $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 ce24c9f15b..2a3a497eeb 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,15 +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 | xcbeautify # Apply translations foreach file in xliff_in/*.xliff - # SUPPORTS_MACCATALYST=NO: -importLocalizations builds every target for all - # supported platforms; skip Mac Catalyst (not shipped, and fails under Xcode - # 27 with an unsupported macOS 10.15 deployment target). - xcodebuild -workspace LoopWorkspace.xcworkspace -scheme "LoopWorkspace" -importLocalizations -localizationPath $file SUPPORTS_MACCATALYST=NO + xcodebuild -workspace LoopWorkspace.xcworkspace -scheme "LoopWorkspace" -destination 'generic/platform=iOS' -importLocalizations -localizationPath $file SUPPORTS_MACCATALYST=NO end 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 diff --git a/Scripts/manual_export_localizations.sh b/Scripts/manual_export_localizations.sh index cf10ec6582..b182989e2f 100755 --- a/Scripts/manual_export_localizations.sh +++ b/Scripts/manual_export_localizations.sh @@ -13,9 +13,7 @@ source Scripts/define_common.sh argstring="${LANGUAGES[@]/#/-exportLanguage }" IFS=" "; args=( $=argstring ) -# SUPPORTS_MACCATALYST=NO: skip the Mac Catalyst variant builds, which Loop -# does not ship and which fail under Xcode 27 (unsupported macOS 10.15 default). -xcodebuild -scheme LoopWorkspace -exportLocalizations -localizationPath xclocs SUPPORTS_MACCATALYST=NO $args +xcodebuild -scheme LoopWorkspace -destination 'generic/platform=iOS' -exportLocalizations -localizationPath xclocs SUPPORTS_MACCATALYST=NO $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 c9a5a958d3..7043ab1dc5 100755 --- a/Scripts/manual_import_localizations.sh +++ b/Scripts/manual_import_localizations.sh @@ -60,16 +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 | xcbeautify # Apply translations foreach file in xliff_in/*.xliff section_divider echo " importing ${file}" section_divider - # SUPPORTS_MACCATALYST=NO: skip the Mac Catalyst variant builds (not shipped, - # and fail under Xcode 27 with an unsupported macOS 10.15 deployment target). - /usr/bin/time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme "LoopWorkspace" -importLocalizations -localizationPath $file SUPPORTS_MACCATALYST=NO + /usr/bin/time xcodebuild -workspace LoopWorkspace.xcworkspace -scheme "LoopWorkspace" -destination 'generic/platform=iOS' -importLocalizations -localizationPath $file SUPPORTS_MACCATALYST=NO end section_divider diff --git a/TidepoolService b/TidepoolService index 46171f37bf..54097855c7 160000 --- a/TidepoolService +++ b/TidepoolService @@ -1 +1 @@ -Subproject commit 46171f37bfdcafc4600fb2af19e0f2a1bfa6ce1e +Subproject commit 54097855c7ff9a868d406664ef17f1a7c929ebb7 diff --git a/dexcom-share-client-swift b/dexcom-share-client-swift index 506df57f2c..c91e893dad 160000 --- a/dexcom-share-client-swift +++ b/dexcom-share-client-swift @@ -1 +1 @@ -Subproject commit 506df57f2c1107c85ca841e6fdba6f27da54c25f +Subproject commit c91e893dadc2ccf21f8423675264c511c8433a8a diff --git a/fastlane/testflight.md b/fastlane/testflight.md index 185aea17e0..5786a33ef9 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