Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
5d55285
Bump release version to 3.12.1
marionbarker Apr 2, 2026
ddb4eae
Merge pull request #426 from LoopKit/release_3.12.1
marionbarker Apr 3, 2026
1f49269
Merge branch 'dev' into release/3.14.0
marionbarker May 14, 2026
a2b527d
Merge pull request #446 from LoopKit/release/3.14.0
marionbarker May 14, 2026
4ad21c1
Bump version to 3.14.2
marionbarker May 29, 2026
488c57a
update Loop: warn if on dev, support OmnipodKit
marionbarker May 29, 2026
b27af62
update OmniBLE: fix identifier for 17e for Pod Keep Alive
marionbarker May 29, 2026
e18ef9a
update GitHub action to use Xcode 26.4
marionbarker May 30, 2026
4cf9e34
update to fastlane 2.335.0
marionbarker May 30, 2026
a61dab4
add submodule OmnipodKit:
marionbarker Jun 1, 2026
c96dcf9
Merge branch 'main' into update_dev_to_3.14.2
marionbarker Jun 3, 2026
adbbd6e
update OmnipodKit: update localization
marionbarker Jun 3, 2026
dd94296
add MedtrumKit submodule
marionbarker Jun 4, 2026
812b500
add MedtrumKit tests
marionbarker Jun 4, 2026
5397f06
add EversenseKit submodule
marionbarker Jun 4, 2026
c0a5592
add EversenseKit tests
marionbarker Jun 4, 2026
a1dbed7
Revert "add EversenseKit tests" until the issues are resolved
marionbarker Jun 5, 2026
7ea6cbd
remove OmniKit submodule, replaced with OmnipodKit
marionbarker Jun 5, 2026
e695c5f
remove OmniBLE submodule, replaced with OmnipodKit
marionbarker Jun 5, 2026
589068d
update Scripts for 3.14.2
marionbarker Jun 5, 2026
4dfa028
remove OmniBLE and OmniKit from Scripts/define_common.sh
marionbarker Jun 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build_loop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
15 changes: 9 additions & 6 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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
Comment thread
marionbarker marked this conversation as resolved.
[submodule "MedtrumKit"]
path = MedtrumKit
url = https://github.com/jbr7rr/MedtrumKit
[submodule "EversenseKit"]
path = EversenseKit
url = https://github.com/bastiaanv/EversenseKit
1 change: 1 addition & 0 deletions EversenseKit
Submodule EversenseKit added at 43b808
2 changes: 1 addition & 1 deletion Gemfile
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
source "https://rubygems.org"
gem "fastlane", "2.234.0"
gem "fastlane", "2.235.0"
12 changes: 6 additions & 6 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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)
Expand All @@ -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)
Expand Down Expand Up @@ -230,7 +230,7 @@ PLATFORMS
ruby

DEPENDENCIES
fastlane (= 2.234.0)
fastlane (= 2.235.0)

BUNDLED WITH
4.0.6
4.0.12
2 changes: 1 addition & 1 deletion Loop
11 changes: 7 additions & 4 deletions LoopWorkspace.xcworkspace/contents.xcworkspacedata

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -140,10 +140,10 @@
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C1E34B5A29C7AD01009A50A5"
BuildableName = "MinimedKitPlugin.loopplugin"
BlueprintName = "MinimedKitPlugin"
ReferencedContainer = "container:MinimedKit/MinimedKit.xcodeproj">
BlueprintIdentifier = "3E767D422D67B790004B1971"
BuildableName = "MedtrumKitPlugin.loopplugin"
BlueprintName = "MedtrumKitPlugin"
ReferencedContainer = "container:MedtrumKit/MedtrumKit.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
Expand All @@ -154,10 +154,10 @@
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C124021629C7D93D00B32844"
BuildableName = "OmniKitPlugin.loopplugin"
BlueprintName = "OmniKitPlugin"
ReferencedContainer = "container:OmniKit/OmniKit.xcodeproj">
BlueprintIdentifier = "C1E34B5A29C7AD01009A50A5"
BuildableName = "MinimedKitPlugin.loopplugin"
BlueprintName = "MinimedKitPlugin"
ReferencedContainer = "container:MinimedKit/MinimedKit.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
Expand All @@ -168,10 +168,10 @@
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C187C196279086A8006E3557"
BuildableName = "OmniBLEPlugin.loopplugin"
BlueprintName = "OmniBLEPlugin"
ReferencedContainer = "container:OmniBLE/OmniBLE.xcodeproj">
BlueprintIdentifier = "D889B2382D2B4BFE00C8E64C"
BuildableName = "OmnipodKitPlugin.loopplugin"
BlueprintName = "OmnipodKitPlugin"
ReferencedContainer = "container:OmnipodKit/OmnipodKit.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
Expand Down Expand Up @@ -258,6 +258,20 @@
ReferencedContainer = "container:TrueTime.swift/TrueTime.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "3E6696E52E927EB900AAE4F1"
BuildableName = "EversenseKitPlugin.loopplugin"
BlueprintName = "EversenseKitPlugin"
ReferencedContainer = "container:EversenseKit/EversenseKit.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
Expand Down Expand Up @@ -370,20 +384,6 @@
ReferencedContainer = "container:Loop/Loop.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "NO"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "84752E8A26ED0FFE009FD801"
BuildableName = "OmniBLETests.xctest"
BlueprintName = "OmniBLETests"
ReferencedContainer = "container:OmniBLE/OmniBLE.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "NO"
Expand Down Expand Up @@ -469,16 +469,6 @@
ReferencedContainer = "container:LoopKit/LoopKit.xcodeproj">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "84752E8A26ED0FFE009FD801"
BuildableName = "OmniBLETests.xctest"
BlueprintName = "OmniBLETests"
ReferencedContainer = "container:OmniBLE/OmniBLE.xcodeproj">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
Expand Down Expand Up @@ -523,20 +513,30 @@
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C12ED9C929C7DBA900435701"
BuildableName = "OmniKitTests.xctest"
BlueprintName = "OmniKitTests"
ReferencedContainer = "container:OmniKit/OmniKit.xcodeproj">
BlueprintIdentifier = "431CE7761F98564200255374"
BuildableName = "RileyLinkBLEKitTests.xctest"
BlueprintName = "RileyLinkBLEKitTests"
ReferencedContainer = "container:RileyLinkKit/RileyLinkKit.xcodeproj">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "D8D0ED172D74EF41000B0AF4"
BuildableName = "OmniTests.xctest"
BlueprintName = "OmniTests"
ReferencedContainer = "container:OmnipodKit/OmnipodKit.xcodeproj">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "431CE7761F98564200255374"
BuildableName = "RileyLinkBLEKitTests.xctest"
BlueprintName = "RileyLinkBLEKitTests"
ReferencedContainer = "container:RileyLinkKit/RileyLinkKit.xcodeproj">
BlueprintIdentifier = "B7D3A8D92C148CC4002EE003"
BuildableName = "MedtrumKitTests.xctest"
BlueprintName = "MedtrumKitTests"
ReferencedContainer = "container:MedtrumKit/MedtrumKit.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
Expand Down
1 change: 1 addition & 0 deletions MedtrumKit
Submodule MedtrumKit added at 606074
1 change: 0 additions & 1 deletion OmniBLE
Submodule OmniBLE deleted from 4e212a
1 change: 0 additions & 1 deletion OmniKit
Submodule OmniKit deleted from 2b4253
1 change: 1 addition & 0 deletions OmnipodKit
Submodule OmnipodKit added at d68699
47 changes: 47 additions & 0 deletions Scripts/LocalizationInstructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down Expand Up @@ -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.
Expand Down
8 changes: 4 additions & 4 deletions Scripts/define_common.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
Expand All @@ -43,10 +42,10 @@ LANGUAGES=(en \
fr \
de \
he \
hi \
hu \
it \
ja \
ko \
nb \
pl \
pt-BR \
Expand Down Expand Up @@ -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() {
Expand Down
13 changes: 12 additions & 1 deletion Scripts/update_submodule_refs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Loading