diff --git a/.github/workflows/build_loop.yml b/.github/workflows/build_loop.yml
index fab987e7b3..9dab27ff57 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.2.app/Contents/Developer"
+ run: "sudo xcode-select --switch /Applications/Xcode_26.4.app/Contents/Developer"
- name: Checkout Repo for building
uses: actions/checkout@v5
diff --git a/.gitmodules b/.gitmodules
index 1308e60c03..f3472ea060 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -31,9 +31,6 @@
[submodule "LogglyService"]
path = LogglyService
url = https://github.com/LoopKit/LogglyService.git
-[submodule "OmniBLE"]
- path = OmniBLE
- url = https://github.com/LoopKit/OmniBLE.git
[submodule "NightscoutRemoteCGM"]
path = NightscoutRemoteCGM
url = https://github.com/LoopKit/NightscoutRemoteCGM.git
@@ -46,9 +43,6 @@
[submodule "TidepoolService"]
path = TidepoolService
url = https://github.com/LoopKit/TidepoolService.git
-[submodule "OmniKit"]
- path = OmniKit
- url = https://github.com/LoopKit/OmniKit.git
[submodule "MinimedKit"]
path = MinimedKit
url = https://github.com/LoopKit/MinimedKit.git
@@ -58,3 +52,12 @@
[submodule "LibreTransmitter"]
path = LibreTransmitter
url = https://github.com/LoopKit/LibreTransmitter.git
+[submodule "OmnipodKit"]
+ path = OmnipodKit
+ url = https://github.com/loopandlearn/OmnipodKit
+[submodule "MedtrumKit"]
+ path = MedtrumKit
+ url = https://github.com/jbr7rr/MedtrumKit
+[submodule "EversenseKit"]
+ path = EversenseKit
+ url = https://github.com/bastiaanv/EversenseKit
diff --git a/EversenseKit b/EversenseKit
new file mode 160000
index 0000000000..43b808002f
--- /dev/null
+++ b/EversenseKit
@@ -0,0 +1 @@
+Subproject commit 43b808002ffb88f29dc628cb609ca06eca8c7aeb
diff --git a/Gemfile b/Gemfile
index f8b2b1e969..0eb90cb08b 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,2 +1,2 @@
source "https://rubygems.org"
-gem "fastlane", "2.234.0"
+gem "fastlane", "2.235.0"
diff --git a/Gemfile.lock b/Gemfile.lock
index ae7d7b3417..0089a8cdb4 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -72,7 +72,7 @@ GEM
faraday_middleware (1.2.1)
faraday (~> 1.0)
fastimage (2.4.0)
- fastlane (2.234.0)
+ fastlane (2.235.0)
CFPropertyList (>= 2.3, < 5.0.0)
abbrev (~> 0.1)
addressable (>= 2.8, < 3.0.0)
@@ -81,7 +81,7 @@ GEM
babosa (>= 1.0.3, < 2.0.0)
base64 (~> 0.2)
benchmark (>= 0.1.0)
- bundler (>= 1.17.3, < 5.0.0)
+ bundler (>= 2.4.0, < 5.0.0)
colored (~> 1.2)
commander (~> 4.6)
csv (~> 3.3)
@@ -96,12 +96,12 @@ GEM
gh_inspector (>= 1.1.2, < 2.0.0)
google-apis-androidpublisher_v3 (~> 0.3)
google-apis-playcustomapp_v1 (~> 0.1)
- google-cloud-env (>= 1.6.0, <= 2.1.1)
+ google-cloud-env (>= 1.6.0, < 2.3.0)
google-cloud-storage (~> 1.31)
highline (~> 2.0)
http-cookie (~> 1.0.5)
json (< 3.0.0)
- jwt (>= 2.1.0, < 3)
+ jwt (>= 2.1.0, < 4)
logger (>= 1.6, < 2.0)
mini_magick (>= 4.9.4, < 5.0.0)
multipart-post (>= 2.0.0, < 3.0.0)
@@ -230,7 +230,7 @@ PLATFORMS
ruby
DEPENDENCIES
- fastlane (= 2.234.0)
+ fastlane (= 2.235.0)
BUNDLED WITH
- 4.0.6
+ 4.0.12
diff --git a/Loop b/Loop
index e3229270a2..1f71ec4fa9 160000
--- a/Loop
+++ b/Loop
@@ -1 +1 @@
-Subproject commit e3229270a2704a601ef69ed3f407195717d5b09e
+Subproject commit 1f71ec4fa94941abdbd72fd5bd914770faa2e90b
diff --git a/LoopWorkspace.xcworkspace/contents.xcworkspacedata b/LoopWorkspace.xcworkspace/contents.xcworkspacedata
index a870f8b7c9..fed13e7d24 100644
--- a/LoopWorkspace.xcworkspace/contents.xcworkspacedata
+++ b/LoopWorkspace.xcworkspace/contents.xcworkspacedata
@@ -109,16 +109,19 @@
location = "group:TrueTime.swift/TrueTime.xcodeproj">
+ location = "group:RileyLinkKit/RileyLinkKit.xcodeproj">
+ location = "group:MinimedKit/MinimedKit.xcodeproj">
+ location = "group:OmnipodKit/OmnipodKit.xcodeproj">
+ location = "group:MedtrumKit/MedtrumKit.xcodeproj">
+
+
diff --git a/LoopWorkspace.xcworkspace/xcshareddata/xcschemes/LoopWorkspace.xcscheme b/LoopWorkspace.xcworkspace/xcshareddata/xcschemes/LoopWorkspace.xcscheme
index e09bc55654..19f95ce326 100644
--- a/LoopWorkspace.xcworkspace/xcshareddata/xcschemes/LoopWorkspace.xcscheme
+++ b/LoopWorkspace.xcworkspace/xcshareddata/xcschemes/LoopWorkspace.xcscheme
@@ -140,10 +140,10 @@
buildForAnalyzing = "YES">
+ BlueprintIdentifier = "3E767D422D67B790004B1971"
+ BuildableName = "MedtrumKitPlugin.loopplugin"
+ BlueprintName = "MedtrumKitPlugin"
+ ReferencedContainer = "container:MedtrumKit/MedtrumKit.xcodeproj">
+ BlueprintIdentifier = "C1E34B5A29C7AD01009A50A5"
+ BuildableName = "MinimedKitPlugin.loopplugin"
+ BlueprintName = "MinimedKitPlugin"
+ ReferencedContainer = "container:MinimedKit/MinimedKit.xcodeproj">
+ BlueprintIdentifier = "D889B2382D2B4BFE00C8E64C"
+ BuildableName = "OmnipodKitPlugin.loopplugin"
+ BlueprintName = "OmnipodKitPlugin"
+ ReferencedContainer = "container:OmnipodKit/OmnipodKit.xcodeproj">
+
+
+
+
-
-
-
-
-
-
-
-
+ BlueprintIdentifier = "431CE7761F98564200255374"
+ BuildableName = "RileyLinkBLEKitTests.xctest"
+ BlueprintName = "RileyLinkBLEKitTests"
+ ReferencedContainer = "container:RileyLinkKit/RileyLinkKit.xcodeproj">
+
+
+
+
+ BlueprintIdentifier = "B7D3A8D92C148CC4002EE003"
+ BuildableName = "MedtrumKitTests.xctest"
+ BlueprintName = "MedtrumKitTests"
+ ReferencedContainer = "container:MedtrumKit/MedtrumKit.xcodeproj">
diff --git a/MedtrumKit b/MedtrumKit
new file mode 160000
index 0000000000..60607476f2
--- /dev/null
+++ b/MedtrumKit
@@ -0,0 +1 @@
+Subproject commit 60607476f2e27ad02b9fe25af4d93fe713eccacf
diff --git a/OmniBLE b/OmniBLE
deleted file mode 160000
index 4e212a81aa..0000000000
--- a/OmniBLE
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 4e212a81aa30e3aedeb04cec6644c39463f9db8b
diff --git a/OmniKit b/OmniKit
deleted file mode 160000
index 2b4253b9fd..0000000000
--- a/OmniKit
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 2b4253b9fd3ec167d8a6b198dae6b59606058808
diff --git a/OmnipodKit b/OmnipodKit
new file mode 160000
index 0000000000..d68699c8cb
--- /dev/null
+++ b/OmnipodKit
@@ -0,0 +1 @@
+Subproject commit d68699c8cbaa2623375d4ae8576634101c6850b9
diff --git a/Scripts/LocalizationInstructions.md b/Scripts/LocalizationInstructions.md
index 17e0f450d5..d3ec622e94 100644
--- a/Scripts/LocalizationInstructions.md
+++ b/Scripts/LocalizationInstructions.md
@@ -19,10 +19,21 @@ Table of Contents:
* [Prepare xliff_out folder](#prepare-xliff_out-folder)
* [Update lokalise strings](#update-lokalise-strings)
* [Utility Scripts](#utility-scripts)
+ * [Additional Utility Scripts](#additional-utility-scripts)
* [Questions and notes](#questions-and-notes)
## Overview
+> The translations for these repositories are added to lokalise
+> * DanaKit
+> * EversenseKit
+> * MedtrumKit
+> * OmnipodKit
+
+> In order to manage those localization strings, the translation work will be done in the feat/all-managers branch, which includes all repositories.
+
+> The Scripts needed to handle these new repositories are found on in this branch (for now).
+
Translations for Loop are performed by volunteers at [lokalise](https://app.lokalise.com/projects).
Several scripts were added to assist in bringing those translations into the repositories and updating keys when strings are added or modified.
@@ -305,6 +316,42 @@ The define_common.sh is used by other scripts to provide a single source for the
If you need to start over but don't want to lose prior work, use archive_translations.sh. However, this is probably no longer necessary with the optional arguments available with the manual scripts.
+### Additional Utility Scripts
+
+These scripts, currently found in feat/all-managers, are used for several purposes but are not part of the Localization process.
+
+They are documented here for convenience. The alphabetic list is provided here.
+
+* open_selected_url.sh
+* reconfigure_remotes.sh
+* update_loopandlearn_forks.sh
+* update_submodule_refs.sh
+
+#### update_submodules_refs
+
+This is used to checkout the most recent branch for each submodule in the workspace. It is used as a final step after the translation is completed but also is used to bring in other updates from the submodules into the workspace.
+
+After running this script, use `git status` to determine which submodules were updated so the modifications can be tested and committed.
+
+#### reconfigure_remotes
+
+This is a helper script for a LoopWorkspace clone for use when the .gitmodules path name changes for any reason, and the local clone needs to be updated.
+
+This change was made because (2026 April 30) the translation work for feature branches and the submodule update work were using different paths and it was just too confusing and error prone. By using the upstream fork in .gitmodules and in the translations scripts, life is simpler.
+
+* The path for DanaKit, EversenseKit and MedtrumKit was changed from loopandlearn to the respective upstream repositories
+* If a local clone has any submodules pointing to loopandlearn as the remote named `origin`, run this script to update it
+
+There is no harm running the script even if all submodules are properly configured.
+
+### Trio Utility Scripts
+
+These are Trio support utilities run within a LoopWorkspace clone to sync the loopandlearn forks for use with Trio. They require appropriate permissions.
+
+We support Trio with some of the submodules. To enable Trio to use a slightly modified version of the repositories, Trio uses loopandlearn, not the upstream repos in their `.gitmodule` list. In order to keep the loopandlearn forks up to date, the `update_loopandlearn_forks.sh` automatically updates all the submodules used by Trio so that loopandlearn forks match the upstream forks for the appropriate branches.
+
+When there are submodules where Trio uses a slightly different version of code, a `trio` branch is created. In that case, the update is done manually. To assist in the process, the script `open_selected_url.sh` is called from within the `update_loopandlearn_forks.sh` script.
+
## Questions and notes
Most of the questions were worked through while developing the new scripts.
diff --git a/Scripts/define_common.sh b/Scripts/define_common.sh
index 0c75a998e0..a1a8aa197a 100755
--- a/Scripts/define_common.sh
+++ b/Scripts/define_common.sh
@@ -34,7 +34,6 @@ MESSAGE_FILE="xlate_message_file.txt"
# matches lokalise order, en plus alphabetical order by language name in English
LANGUAGES=(en \
ar \
- ce \
zh-Hans \
cs \
da \
@@ -43,10 +42,10 @@ LANGUAGES=(en \
fr \
de \
he \
- hi \
hu \
it \
ja \
+ ko \
nb \
pl \
pt-BR \
@@ -75,10 +74,11 @@ PROJECTS=( \
LoopKit:MinimedKit:main \
LoopKit:NightscoutRemoteCGM:dev \
LoopKit:NightscoutService:dev \
- LoopKit:OmniBLE:dev \
- LoopKit:OmniKit:main \
LoopKit:RileyLinkKit:dev \
LoopKit:TidepoolService:dev \
+ loopandlearn:OmnipodKit:main \
+ bastiaanv:EversenseKit:dev \
+ jbr7rr:MedtrumKit:dev \
)
function section_divider() {
diff --git a/Scripts/update_submodule_refs.sh b/Scripts/update_submodule_refs.sh
index b9edba347a..3fb71658a0 100755
--- a/Scripts/update_submodule_refs.sh
+++ b/Scripts/update_submodule_refs.sh
@@ -2,13 +2,24 @@
source Scripts/define_common.sh
+section_divider
+echo "You are running ${0}"
+echo
+echo " This modifies your local clone, in whatever branch is currently selected,"
+echo " so that every submodule is at the tip of the appropriate branch."
+echo
+current_branch=$(git branch --show-current 2>/dev/null)
+echo " The current LoopWorkspace branch is $current_branch"
+
+continue_or_quit ${0}
+
for project in ${PROJECTS}; do
+ echo
echo "Updating to $project"
IFS=":" read user dir branch <<< "$project"
echo "Updating to $branch on $user/$project"
cd $dir
git checkout $branch
- #git branch -D tidepool-sync
git pull
cd -
done
diff --git a/VersionOverride.xcconfig b/VersionOverride.xcconfig
index 3b8a554641..5253477701 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.1
+LOOP_MARKETING_VERSION = 3.14.2
CURRENT_PROJECT_VERSION = 57