The Loop Features in Development provided by the Customization Select Script are:

  1. Profiles Save & Load
    • Save and load named Profiles, which contain a subset of your Therapy Settings
    • The name of the current profile is uploaded to Nightscout and can be viewed using LoopFollow when you use those auxilliary applications
  2. Basal Lock
    • Override Loop control to maintain scheduled basal when current glucose is above the selected value
    • Allowed range is 200 to 300 mg/dL (11.2 to 16.6 mmol/L)
  3. Live Activity and Dynamic Island
    • This feature adds Live Activity and Dynamic Island features to Loop 3.4.x or newer.
    • Requires iPhone 14 or newer, iOS 16.2 or newer
  4. Add Negative Insulin Damper to Loop Model
    • This feature adjusts glucose prediction model in the presence of negative IOB and suppresses insulin delivery because predicted glucose is dampened when this is enabled
    • This feature is disabled by default with controls found on the Algorithm Experiments screen
  5. Increase Remote Window to 15 minutes
    • This feature provides a longer window to accept remote commands from LoopCaregiver
    • Please read the documentation before using this and test it at home first

If you have never used the Customization Select Script before, please go to that link and read about it.

    Users of Loop dev branch:

    • Sometimes updates to the dev code require the customization to be modified to maintain compatibility
      • When that happens, it may take a few days before the customizations are updated
      • In that case, keep using the older versions of dev

    This page is devoted to describing features that are more complicated than simple line edits. These customizations are available as part of the Customization Select script. Some may eventually be added to Loop in the future.

    WARNING: These are development features and you are responsible for understanding them prior to use. These are NOT supported by the Loop developers. Please post issues on Loop and Learn Facebook including what you tried to customize on what version of code. If you do not use Facebook, you can post your question here: https://github.com/loopandlearn/lnl-scripts/issues

    Profiles Save & Load

    The Profile feature is crafted to swiftly save and transition between therapy setting subsets tailored to your needs.

    This is a work in progress, but even with the current code, it is quite useful. After adding this customization, the Profiles row is found on the Loop Settings screen below the Therapy Settings option. A pump must be added to Loop for the Profiles screen to be visible.

    On 20 January 2024, this feature was enhanced to upload the name of the current Profile to Nightscout. This was added at the request of caregivers who also use Loop Follow. Note that only the current Profile is uploaded to Nightscout.

    • Therapy Settings included in the saved Profile
      • Basal Rate Schedule
      • Correction Schedule
      • Carb Ratio Schedule
      • Insulin Senstivity Factor Schedule

    The User can save new profiles (from their current Therapy Settings), and they can load, rename or delete saved profiles

    • The Profiles are saved in the local Loop Storage on the users phone
    • To edit an existing profile that is currently selected
      • Edit Therapy Settings and Save
      • Go to the Profiles screen and Update the profile
    • To create a new profile
      • Edit Therapy Settings and Save
      • Go to the Profiles screen and Cancel instead of updating the profile
      • Tap on the + sign to create a new Saved Profile and name it
    • To load a Saved Profile
      • Go to the Profiles screen and select the desired profile
      • After reviewing the settings, select the Load Profile button to update to those saved Therapy settings

      Loop Settings Screen with Profiles Added

      The graphic below shows an updated Loop Settings screen when the profiles customizations is added.

      The Profiles feature is accessed by tapping on the Profiles button underneath Therapy Settings.

       

      loop settings screen when both algorithm experiments and profiles are added to Loop via customization

       

      loop dosing for unannounced meal with all settings for algorithm experiments

      Reverse Chronology of Updates

      • As of 14 September 2024 the folder name for this customization was changed from 2002 (the original PR number) to profiles
        • The script was updated so the either “2002” or “profiles” can be used in the build_loop.yml file to add this customization for Browser Build
        • Users of the menu driven customatization script (using Xcode) will not notice a difference
      • As of 20 January 2024, the current Profile name is uploaded to Nightscout, (but still not to Tidepool)
        • To accommodate the requirements of Nightscout, the “.” and “<” characters cannot be used in a profile name
        • Any existing, or new, profile names will automatically have those characters replaced with an underscore (“_”) – feel free to rename again, just find something other than “.” or “<” to use – they will be replaced when you save
        • The length of the name is now truncated to 32 characters to improve legibility in Nightscout and in LoopFollow
        • There are slight differences in Nightscout behavior for 14.2.6 and 15.0.2, with 15.0.2 recommended
          • Nightcout: Dashboard display shows the current Profile name on the left side plot
          • Nightscout: Edit Profiles shows the current Profile name
          • Nightscout: Reports: Profiles are a side-by-side display of identical profiles called Default and current Profile name
            • Sometimes when the user renames a profile, the old name may be displayed in Nightscout: Reports: Profiles
          • Nightscout: Reports: Day-to-Day plot is the one active at midnight and has same naming issues as the Reports: Profiles
      • As of 13 September 2023 an enhancement was added – graphics above are from this version
        • An information screen is presented when you select the “i”
        • The Profile that was last saved from your Therapy Settings is now indicated with a check mark
        • If you modified Therapy Settings (basal, correction, CR or ISF) after saving a profile – you are offered the choice to update the named profile
        • If you choose not to update the named profile, you can save it as a new profile
        • You can reorder the profiles in the list by holding and dragging

      The original formal PR is found at https://github.com/LoopKit/Loop/pull/2002. That PR is no longer being updated and is not aligned with the current customization.

        Basal Lock

        This feature replaces the basal lock that used to be in CustomTypeOne LoopPatches.

        It now has proper guardrails and can be adjusted in the app using a new Preferences Row found on Settings below Favorite Foods and above Services.

          Live Activity and Dynamic Island

          This feature adds Live Activity and Dynamic Island features to Loop 3.4.x or newer.

          • This only works on iPhones 14 and newer
            • The dynamic island support is found on iPhone 14 Pro models
          • The minimum iOS is 16.2
          • The configuration for the Live Activity widget on the lock screen is found under Loop, Settings, Notifications, Live Activity
          • You must also enable Live Activity under iPhone settings, Loop, tap on Live Activites and enable Allow Live Activites and More Frequent Update
          • There may still be a few display issues regarding overrides – please review [DRAFT] feature: Live Activity

            Add Negative Insulin Damper to Loop Model

            This feature adds the Negative Insulin Damper to the Glucose Prediction Model for Loop 3.4.4 or newer.

            This feature is added to the Algorithm Experiments screen and is disabled by default. The goal of this new customization is to limit the instances of “Double Low” when Negative IOB accumulates, a low glucose event occurs and is treated.

            Please see Report for Negative Insulin Damper for more information.

              Increase Remote Window to 15 minutes

              This feature provides a longer window to accept remote commands from LoopCaregiver.

              You must read the information below before using this and test it at home first.  This information below and this customization are based upon developer Bill Gestrich’s google doc.

              The Basics

              Terminology

              • Creation Time: The time a treatment was created. This is not the same as the start time for a treatment which is sometimes scheduled for a time later/earlier than the creation time (for carb treatments particularly)
              • Treatment: Either a bolus or carb entry.
              • Conflicting Treatment: A treatment entered within 15 minutes of a remote command
              • Remote Command: A remote treatment delivered via Caregiver or Nightscout

              Summary

              This customization includes these features:

              • Allow Older Remote Commands Accept Remote commands for up to 15 minutes after the creation date, rather than 1 minute. The increased period aims to mitigate the issues from push notifications being delayed by Apple.
              • Reject Remote Carb Treatments For Conflicts Remote carb commands will be rejected by Loop if any other carbs were entered within 15 minutes of the carb command.
              • Reduce Remote Bolus Treatments For Conflicts The amount of insulin in a remote bolus command will be reduced by Loop for any other boluses entered within 15 minutes of the bolus command.
              • New List in Loop Showing Remote Command Status

              Adding the Customization

              Apply Patches

              Follow the instructions here:
              Browser Builders 

              Mac-Xcode Builders  (currently #17, but numbering is subject to change)

              Using LoopCaregiver after applying the Customization

              Remote Status List

              Loop now includes remote command status: Loop Settings -> Services -> Nightscout. This will help to troubleshoot when remote commands fail.

              Note this will not include commands that never make it to Loop (i.e. network failure). If the command does not show in this list in Loop, it never made it to the app.

              Nightscout Treatment Source

                In Nightscout,  tap on the carb/bolus treatment to see whether a treatment was a remote command.

                 Remote Carbs will be Rejected for Conflicts

                Remote Caregivers must wait 15 minutes between entering multiple carb treatments. If one is detected 15 minutes before, Loop will reject the remote carbs. This may require more upfront planning when entering remote carbs/boluses, to combine multiple entries.

                 

                Accepted? Scenario Explanation
                2 carb treatments created 16 minute apart Since the carb treatments were created more than 15 minutes apart, there is no rejection.
                2 carb treatments created 10 minutes apart Since the treatments were created less than 15 minutes apart, the second treatment will be rejected.

                 

                Remote Boluses will be Reduced

                The bolus functionality works differently from carbs. Instead of rejecting a remote bolus that is within 15 minutes of another bolus, Loop will attempt to deliver a partial amount. For instance, if a remote caregiver delivers 1 unit of insulin, but loop detects 0.4 units was delivered 9 minutes before, Loop will only deliver 0.6 units (1.0 – 0.4 = 0.6)

                 

                Accepted? Scenario Explanation
                2 bolus treatments created 16 minutes apart Since the treatments were created more than 15 minutes apart, there is no reduction in the amount delivered.
                ⚠️ 2 bolus treatments created 8 minutes apart – amounts 0.4 U and1.0 U Since the treatments were created less than 15 minutes apart, the amount of remote bolus treatment will be reduced by the recent bolus. In this case 0.6 U will be delivered. (1.0 – 0.4 = 0.6)
                2 bolus treatments created 8 minutes apart – amounts 1.0 U and 1.0 U Since the treatments were created less than 15 minutes apart, the amount of remote bolus treatment will be reduced. However, after subtracting the amounts within 15 minutes, there is nothing to deliver (1.0 – 1.0 = 0.0)

                 

                How can you know whether a bolus amount was reduced? 

                You can infer this by tapping on the bolus treatment in Nightscout. If it says “Loop (via Remote Command)”, that is a bolus from your remote command. If that bolus amount in Nightscout is less than what you remember delivering, then it was reduced.

                In Loop, the new remote command status list mentioned above will indicate if the bolus was reduced.

                Carbs Before Boluses or Bolus Before Carbs?

                It is typically recommended that you deliver boluses before carbs due to the risk of duplicating an auto-bolus entry. Caregivers may decide to now enter carbs before boluses since the remote command should be reduced via the patches.

                Continue to Closely Monitor Looper

                While these changes intend to more aggressively reject treatments that conflict, we can’t remove the possibility of over-treatment. It is still possible that a caregiver may not have the most up-to-date treatment data available from Loop. These patches assume treatments older than 15 minutes are visible to caregivers in the Caregiver app or Nightscout. But there is a chance these treatments are not visible for various reasons (ex: bug in Loop/remote code, network issue delaying an upload, etc). You should always make sure Nightscout/Caregiver data is showing recent data before delivering treatments. Also be prepared for the possibility there are treatments you don’t know about by closely monitoring your Looper.