diff --git a/docs/browser/custom-browser.md b/docs/browser/custom-browser.md index b1ada618664..eb128772944 100644 --- a/docs/browser/custom-browser.md +++ b/docs/browser/custom-browser.md @@ -23,10 +23,10 @@ Please read the documentation for these on the [Loop and Learn: Customization Se * [List of Customizations Available](https://www.loopandlearn.org/custom-code#custom-list) * When building using a browser you will be modifying one of the special files that enable the *GitHub* action to build the *Loop* app. This file is called the build_loop.yml file and can be located at your `fork` of your `LoopWorkspace` repository. There are several sections you need to review on the *Loop and Learn* page: - * [Overview](https://www.loopandlearn.org/custom-code/#github-intro) of how to modify the build_loop.yml file * You will copy a template that you paste into that file and then edit it to keep just the customizations you want - * [Template for `main`](https://www.loopandlearn.org/custom-code#template) - * [Template for `dev`](https://www.loopandlearn.org/custom-code#template-dev) + * [Overview](https://www.loopandlearn.org/custom-code-browser-build/){: target="_blank" } of how to modify the build_loop.yml file + * [Template for `main`](https://www.loopandlearn.org/custom-code-browser-build/#template-main){: target="_blank" } + * [Template for `dev`](https://www.loopandlearn.org/custom-code-browser-build/#template-dev){: target="_blank" } ## Personal Customizations diff --git a/docs/browser/edit-browser.md b/docs/browser/edit-browser.md index bcd8ebaf250..8d7290fbe94 100644 --- a/docs/browser/edit-browser.md +++ b/docs/browser/edit-browser.md @@ -1,7 +1,7 @@ ## Hot Topics !!! tip "Pro Tip" - The method on this page allows you to create a set of personalized customizations that you can use in addition to the [Loop and Learn: Prepared Customizations](https://www.loopandlearn.org/custom-code#prepared-custom-list). You can use (and re-use) your customizations with either Browser Build or *Mac* builds so you don't have to repeat the customization with every update. + The method on this page allows you to create a set of personalized customizations that you can use in addition to the [Loop and Learn: Prepared Customizations](https://www.loopandlearn.org/custom-code/#custom-list). You can use (and re-use) your customizations with either Browser Build or *Mac* builds so you don't have to repeat the customization with every update. * If you are building with *Mac* method, you can use the same lines prepared for Build with Browser method and simply paste them in your terminal at the LoopWorkspace folder to customize your code * You can often use the same customization for several releases diff --git a/docs/build/custom-mac.md b/docs/build/custom-mac.md index 3c31eec117b..36dda54fcdb 100644 --- a/docs/build/custom-mac.md +++ b/docs/build/custom-mac.md @@ -22,7 +22,7 @@ The *Loop and Learn* team is committed to maintaining these prepared customizati Please read the documentation for these on the [Loop and Learn: Customization Select Page](https://www.loopandlearn.org/custom-code): * [List of Customizations Available](https://www.loopandlearn.org/custom-code/#custom-list) -* [Customization Select Script](https://www.loopandlearn.org/custom-code/#customization-select) +* [Customization Select Script](https://www.loopandlearn.org/custom-code-mac-xcode-build/#script) ## Personal Customizations diff --git a/docs/faqs/cgm-faqs.md b/docs/faqs/cgm-faqs.md index 9c632ca5c76..52e99ff11c0 100644 --- a/docs/faqs/cgm-faqs.md +++ b/docs/faqs/cgm-faqs.md @@ -101,7 +101,7 @@ sequenceDiagram ### Troubleshoot Connections -The "normal" *Libre* 2 sensors have a firmware configuration that makes them slow to reconnect when they loose the connection to iOS (both iOS and the sensors are to blame for this). What usually helps is to make sure your app is open and in the foreground and that your phone is unlocked. iOS seems to be better at reconnecting Bluetooth devices under such conditions (i.e. it gives more Bluetooth priority to the foreground app). If you need to modify how quickly your phone locks, this is found under iOS settings, Display & Brightness, Auto-Lock. +The "normal" *Libre* 2 sensors have a firmware configuration that makes them slow to reconnect when they lose the connection to iOS (both iOS and the sensors are to blame for this). What usually helps is to make sure your app is open and in the foreground and that your phone is unlocked. iOS seems to be better at reconnecting Bluetooth devices under such conditions (i.e. it gives more Bluetooth priority to the foreground app). If you need to modify how quickly your phone locks, this is found under iOS settings, Display & Brightness, Auto-Lock. If you try to pair a sensor in the app multiple times in a short period (let's say within a couple of minutes), you may need to just stop and wait. @@ -109,11 +109,11 @@ If you try to pair a sensor in the app multiple times in a short period (let's s * Multiple pairing attempts may make the sensor temporarily unable to function * If this matches your use case, shut off your phone and let it stay shut down for up to five minutes -Optionally: you can use miaomiao or bubble third party transmitters attached on top of your normal *Libre* 2 sensors . Although the setup is a bit more bulky, it works and does not have connection problems. LibreTransmitter supports bubble and miaomiao on top of *Libre* 1 sensors, but it also works with *Libre* 2 sensors. +Optionally: you can use miaomiao or bubble third-party transmitters attached on top of your normal *Libre* 2 sensors. Although the setup is a bit more bulky, it works and does not have connection problems. LibreTransmitter supports bubble and miaomiao on top of *Libre* 1 sensors, but it also works with *Libre* 2 sensors. ### Can I use *Libre* sensors with a reader like Miao Miao? -Loop 3.4.x and later enables the use of those *Libre* sensors supported by [LibreTransmitter](https://github.com/dabear/LibreTransmitter#libretransmitter-for-loop){: target="_blank" }. +Loop 3.4.x and later enables the use of those *Libre* sensors supported by [LibreTransmitter](https://github.com/LoopKit/LibreTransmitter#libretransmitter-for-loop){: target="_blank" }. ### What about other *Libre* sensors? @@ -121,7 +121,7 @@ There are a number of *Libre* sensors in which the only option for digital acces **The use of *LibreLinkUp* requires internet access via WiFi or Cell service.** -If this is your only option for CGM, evaluate whether you want to add xDrip4iOS as a CGM option. Instructions for this customization are found at [Loop and Learn: Add CGM to Loop](https://www.loopandlearn.org/custom-code/#add-cgm). The reason to recommend this option is that xDrip4iOS can sense when the *Libre* transmits glucose readings to your phone, although it cannot read the glucose value. Shortly thereafter, it will request the CGM reading from *LibreLinkUp*. +If this is your only option for CGM, evaluate whether you want to add xDrip4iOS as a CGM option. Instructions for this customization are found at [Loop and Learn: Add CGM to Loop](https://www.loopandlearn.org/custom-code-add-cgm-pump/). The reason to recommend this option is that xDrip4iOS can sense when the *Libre* transmits glucose readings to your phone, although it cannot read the glucose value. Shortly thereafter, it will request the CGM reading from *LibreLinkUp*. If you prefer not to customize Loop, then you can configure [Nightscout](https://nightscout.github.io/uploader/uploaders/#abbott-freestyle-*Libre*) to access data from *LibreLinkUp* and then use Nightscout as a CGM. @@ -144,9 +144,9 @@ If you can connect your CGM directly to *Loop* that is preferred. You can custom If possible, it is recommended that *Libre* users take advantage of [LibreTransmitter](https://github.com/LoopKit/LibreTransmitter/blob/main/readme.md) which is incorporated into the *Loop* app for version 3.4 and later. However, some *Libre* sensors have encryption that limits ability to get data through open-source code and instead requires using the *LibreLinkUp* server. -You can add *xDrip4iOS* as a CGM option to the *Loop* app by applying a [code customization](https://www.loopandlearn.org/custom-code). This uses the shared AppGroup feature to transfer data from the CGM app to Loop. This is not the preferred approach if you have another choice. For *Libre* users with a sensor that is not handled by LibreTransmitter, this is your only option for closed-loop. +You can add *xDrip4iOS* as a CGM option to the *Loop* app by applying a [code customization](https://www.loopandlearn.org/custom-code-add-cgm-pump/). This uses the shared AppGroup feature to transfer data from the CGM app to Loop. This is not the preferred approach if you have another choice. For *Libre* users with a sensor that is not handled by LibreTransmitter, this is your only option for closed-loop. -* xDrip4iOS can sense when the *Libre* are providing updates over Bluetooth but cannot interpret the readings because of the encryption for some sensor models +* xDrip4iOS can sense when the *Libre* is providing updates over Bluetooth but cannot interpret the readings because of the encryption for some sensor models * xDrip4iOS waits a few seconds after the new reading and then queries *LibreLinkUp* using your login credentials * Be aware this makes your ability for closed-loop dependent on having internet access diff --git a/docs/loop-3/add-cgm.md b/docs/loop-3/add-cgm.md index a9bb97473fe..7ac990f8151 100644 --- a/docs/loop-3/add-cgm.md +++ b/docs/loop-3/add-cgm.md @@ -77,11 +77,11 @@ To use the Dexcom G5, G6 or ONE: #### Where to get the Transmitter ID for Dexcom G6? -You can find the **transmitter ID** in your Dexcom G6 app or on the back of the transmitter box (please refer to the below screenshots). +You can find the **transmitter ID** in your Dexcom G6 app or on the back of the transmitter box (see screenshots below). * In your Dexcom G6 app * Tap "⚙️ Settings" - * The **transmitter ID** is located under section "CGM" where it says "Transmitter" with a the 6-digit string. + * The **transmitter ID** is located under the section "CGM" where it says "Transmitter" with a 6-digit string. * Alternatively, while in Settings, tap on the > in the "Transmitter" row: your **transmitter ID** is the 6-digit identifier next to "SN" (short for serial number). ![dexcom app settings to retrieve transmitter id](img/dexcom-g6-transmitter-id.svg){width="550"} @@ -97,11 +97,11 @@ It is suggested that you enable [Remote Upload from Loop](#remote-upload-from-lo #### Change Dexcom Sensor -When you change a Dexcom G5, G6 or ONE sensor, you do this in the Dexcom app. When the sensor completes warmup and CGM values are once again reported in the Dexcom app, Loop picks these values up because you are using the same Dexcom Transmitter. +When you change a Dexcom G5, G6, or ONE sensor, you do this in the Dexcom app. When the sensor completes warmup and CGM values are once again reported in the Dexcom app, Loop picks these values up because you are using the same Dexcom Transmitter. #### Change Dexcom Transmitter -When you change the Dexcom G5, G6 or ONE Transmitter, you need to delete your CGM selection from Loop and then add it back after you complete the pairing with the transmitter in your Dexcom app. +When you change the Dexcom G5, G6, or ONE Transmitter, you need to delete your CGM selection from Loop and then add it back after you complete the pairing with the transmitter in your Dexcom app. ??? info "FYI: When You Change Dexcom Transmitters (click to open)" @@ -129,7 +129,7 @@ It is suggested that you enable [Remote Upload from Loop](#remote-upload-from-lo {align="center"} !!! tip "Don't forget Health Permissions" - For those switching from *Dexcom G6* to *Dexcom G7*, you might forget to add permission for the *G7* app to write to *Apple Health*. If you want long-term history of those CGM readings to persist in *Apple Health*, turn on the permission for the *Dexcom* app to write glucose to *Health*. + For those switching from *Dexcom G6* to *Dexcom G7*, you might forget to add permission for the *G7* app to write to *Apple Health*. If you want the long-term history of those CGM readings to persist in *Apple Health*, turn on the permission for the *Dexcom* app to write glucose to *Health*. If either the G6 or the G7 has permission to write to *Apple Health*, then *Loop* will delete the *Loop* glucose data in *Apple Health* that are older than 3 hours and newer than 1 week. The *Dexcom* app will write its glucose values to Health when each value is 3 hours old. @@ -137,19 +137,19 @@ It is suggested that you enable [Remote Upload from Loop](#remote-upload-from-lo The Libre plugin for Loop, [LibreTransmitter](https://github.com/LoopKit/LibreTransmitter/), connects directly via Near Field Communication (NFC) during pairing (for some sensors) and via Bluetooth (direct to sensor or direct to a transmitter attached to the sensor) for regular readings. No other app is needed. -* Libre 1 are supported but must use a third-party transmitter (miaomiao and bubble transmitters are supported) +* Libre 1 is supported but must use a third-party transmitter (miaomiao and bubble transmitters are supported) * European Libre 2 can be used directly or via transmitter * American Libre 2 is not supported * Libre 3 is not supported !!! tip "Connecting to Libre" - First reading for a new sensor will often take 2-4 minutes. This is due to some technicalities on how the Libre sensor announces its presence via bluetooth. + The first reading for a new sensor will often take 2-4 minutes. This is due to some technicalities on how the Libre sensor announces its presence via Bluetooth. There are solutions for some Libre 3 but they cannot reside on an iPhone. The Android solution can be uploaded to Nightscout, with Loop using Nightscout as a Remote CGM; but this requires internet access to continue closed-loop performance. -Part of the problem with Libre sensors is that there are differences in region, type and "security generations" which makes it hard to account for all variants. For example, the Libre 2 US has a different "security generation" than European Libre 2 sensors (different encryption in the data transmitted over bluetooth). +Part of the problem with Libre sensors is that there are differences in region, type and "security generations" which makes it hard to account for all variants. For example, the Libre 2 US has a different "security generation" than European Libre 2 sensors (different encryption in the data transmitted over Bluetooth). -Libre 3 sensors have started appearing as well, but are unsupported. Other Libre sensors that are unsupported: Libre Pro, Libre H, Libre Sense Glucose Sport Biosensors. +Libre 3 sensors have started appearing as well, but are unsupported. Other Libre sensors that are unsupported: Libre Pro, Libre H, and Libre Sense Glucose Sport Biosensors. ### Medtronic Enlite CGM @@ -163,7 +163,7 @@ The Medtronic Enlite CGM is only available if you have connected it to your comp !!! warning "If you need to use *Dexcom Share*" - If the dexcom is on another phone, you can use Share if internet / cell coverage is good. + If the Dexcom is on another phone, you can use *Dexcom Share* if Internet/cell coverage is good. *Dexcom Share* is not available for Dexcom ONE CGM. @@ -199,7 +199,12 @@ In addition to the risks of missing data, if the internet is not reliable, you m {align="center"} -The user must enter both the URL and API_SECRET for their site to ensure the security of the data. The URL must start with `https://` and cannot have any extra spaces in the line. +The user must enter both the URL and API_SECRET for their site to ensure the security of the data. + +!!! important "Format of the Nightscout URL" + The *Nightscout* URL must start with `https://`. + It cannot have any extra spaces in the line. + The `s` character is required after `http` and before `://`. ![Nightscout Remote CGM entry screen](img/nightscout-cgm-entry.svg){width="350"} {align="center"} @@ -225,7 +230,7 @@ Scroll to the bottom of the screen and select `Delete CGM`. ### Dexcom G5, G6 and One (not G7) -For older Dexcom sensors, the transmitter is replaced separately about once every three months. In order to enter a new transmitter number, you must first delete the CGM and then add the CGM. +For older Dexcom sensors, the transmitter is replaced separately about once every three months. To enter a new transmitter number, you must first delete the CGM and then add the CGM. Detailed instructions are found at [CGM FAQs: What do I do when I switch Dexcom transmitters?](../faqs/cgm-faqs.md#what-do-i-do-when-i-switch-dexcom-transmitters). diff --git a/docs/version/code-custom-edits.md b/docs/version/code-custom-edits.md index 512590fc1b5..9b991df1c25 100644 --- a/docs/version/code-custom-edits.md +++ b/docs/version/code-custom-edits.md @@ -2,7 +2,7 @@ For new Loopers, please build the code before you make any changes. Start with Open Loop and familiarize yourself with the interface. Later, you can make the customization(s) you desire and build again. The second build will be much easier than your first build. -These customizations require you modify the *Loop* app code and then build the app after making these customizations. This page supports version 3 and greater for the *Loop* app. +These customizations require you to modify the *Loop* app code and then build the app after making these customizations. This page supports version 3 and greater for the *Loop* app. ## Customization Options @@ -29,20 +29,20 @@ The instructions on this page identify the module, `Key_Phrase` or file and line !!! question "Why do I have to jump between pages?" * The code changes are defined on this page - * The method to make code changes depends on build method and are found at: + * The method to make code changes depends on build method and is found at: * [Custom Edits with Browser](../browser/edit-browser.md){: target="_blank" } * [Custom Edits with *Mac*](../build/edit-mac.md){: target="_blank" } !!! info "Line numbers may change" - Every effort will be made to update the line numbers as the code is updated, but there may be times where the screenshots and line numbers differ from the current version of Loop code. + Every effort will be made to update the line numbers as the code is updated, but there may be times when the screenshots and line numbers differ from the current version of Loop code. * You may notice some customizations list line numbers for different branches * If you cannot identify a line that looks exactly like the example - do not guess - go to your favorite social media group and ask for help - * Sometimes there is a bigger change than just line numbers. The git software is really good about finding the "right" code that is just at a different line number. When you see the notation `Stable: Changed on date`, that means you must select the correct version when making your personal customization depending on which version you are modifying. + * Sometimes there is a bigger change than just line numbers. The *git* software is really good about finding the "right" code that is just at a different line number. When you see the notation `Stable: Changed on date`, that means you must select the correct version when making your personal customization depending on which version you are modifying. * With the release of 3.4.x, no customizations fall into this category - * The notation is kept to handle future changes that might happen when development start again + * The notation is kept to handle future changes that might happen when development starts again This page is broken into two halves: @@ -58,21 +58,21 @@ For each customization, you will be given landmarks to find the correct location ### Key_Phrase ``` { .txt .copy title="Example of a Key_Phrase" } -use the copy button at right, paste into search -The copy button for this exampe is just for practice +use the copy button at right, paste it into the search box +The copy button for this example is just for practice Do not paste the result anywhere ``` To search using the `Key_Phrase` (see graphic above for an example): -* A copy button is available when you hover your mouse in the right-hand side +* A copy button is available when you hover your mouse on the right-hand side of the block below the title `Key_Phrase`; click on it to copy the phrase into your paste buffer * You can paste this into the search function of the tool you are using if desired (warning, you may have to hit back-space to remove a return character from the pasted text) -* Alternatively, navigate to the required file using Module, Folder, File and line number +* Alternatively, navigate to the required file using Module, Folder, File, and line number ### Module, Folder, File -Each customization provides the Module, Folder and File bullet below the key phrase. +Each customization provides the Module, Folder, and File bullet below the key phrase. * Module: Loop * Folder: Loop/subfolder1/subfolder2/etc. @@ -112,9 +112,9 @@ At the current time, all customizations are stable. It has been more than a year ![img/carb_screen.png](img/carb_screen.png){width="200"} {align="center"} -In prior versions of the *Loop* app, for example version 2.2.x, the lollipop (fast) icon was set for 2 hours, taco (medium) icon for 3 hours, and pizza (slow) icon for 4 hours. This is modified for `the *Loop* app` to 30 minutes, 3 hours and 5 hours respectively. Some people prefer different values. +In prior versions of the *Loop* app, for example version 2.2.x, the lollipop (fast) icon was set for 2 hours, taco (medium) icon for 3 hours, and pizza (slow) icon for 4 hours. This is modified for `the *Loop* app` to 30 minutes, 3 hours, and 5 hours respectively. Some people prefer different values. -If you want to change this to 2, 3 and 5 hours - that is available as a standard customization using the [*Loop and Learn*: Customization Select Script](https://www.loopandlearn.org/custom-code/#custom-list) +If you want to change this to 2, 3, and 5 hours - that is available as a standard customization using the [*Loop and Learn*: Customization Select Script](https://www.loopandlearn.org/custom-code/#custom-list) ??? question "Do you want to know more? (Click to open/close)" The developers did this because they expect fast to only be used for rapid-acting low treatments. The medium and slow values are for moderate and higher-fat or large meals. @@ -145,7 +145,7 @@ Note that if you change `fast` from 30 minutes to 1.5 hours, you must also chang With version 3.2.0, a new safety feature was added. This limits automatic dosing so IOB is no more than two times the $\mathit{maximumBolus}$ set in your Delivery Limits. (The term automatic dosing refers to insulin the app automatically delivers above your scheduled basal rate.) Manual Bolus, where you initiate the bolus yourself, is not subject to this limit. Please read [How do Delivery Limits Affect Automatic Dosing?](../faqs/algorithm-faqs.md#how-do-delivery-limits-affect-automatic-dosing) for detailed information on how this safety feature works. -The default value ($\mathit{2*maximumBolus}$) used for this feature is good for the majority of people who use the app. However, there are some individuals who might need to limit the size of any single bolus independent from the maximum IOB they want to set for their app. This is particularly true for those who find large boluses give rise to tunneling and the insulin leaks out along the cannula. +The default value ($\mathit{2*maximumBolus}$) used for this feature is good for the majority of people who use the app. However, some individuals might need to limit the size of any single bolus independent of the maximum IOB they want to set for their app. This is particularly true for those who find large boluses give rise to tunneling, and the insulin leaks out along the cannula. ``` { .txt .copy title="Key_Phrase" } automaticDosingIOBLimit = maxBolus @@ -178,7 +178,7 @@ If you are mostly happy with the Dosing Strategy of Automatic Bolus but wish it This customization changes the percent of the recommended bolus used for automatic delivery. The method for calculating that recommendation is not changed by this modification. The default value is 40% (0.4). It is recommended you take small changes of 0.1 at a time. Once you modify it once and try it out for a while, it’s easy to go back and change it again. -**Change just the number and double check that the value is less than 1.** +**Change just the number and double-check that the value is less than 1.** ``` { .txt .copy title="Key_Phrase" } let bolusPartialApplicationFactor @@ -414,7 +414,7 @@ An example change that a Free Loop App user (who has to build once a week) might ``` > .hours(4) ? .days(10) : .hours(2) ``` -Combined with an ```.hours(12)``` on line 16, they would get notified at 12 hours, 4 hours and 2 hours before expiration on the day of expiration and only when the app is opened. Since you'll be building once a week, you can play around with these values until you are happy. +Combined with an ```.hours(12)``` on line 16, they would get notified at 12 hours, 4 hours, and 2 hours before expiration on the day of expiration and only when the app is opened. Since you'll be building once a week, you can play around with these values until you are happy. ### Enable Child Model @@ -463,7 +463,7 @@ This *Loop* table of default values is provided for convenience. The times are a !!! warning "*Mac* Instructions" This can be done with Build with Browser but the instructions might need to be adjusted for that case. -If you want an app logo other than the default green circle for your Loop app, you can easily customize this. To make it easy to generate the correct sizes of icons, you can use a site like [appicon.build](http://www.appicon.build/) or [appicon.co](https://appicon.co/) and just drag and drop your source image. The source image needs to be 1024 pixels x 1024 pixels. The site will email you a zip file or automatically download a set of files. Highlight and copy the contents of the Appicon.appiconset that you are sent, including the Contents.json file +If you want an app logo other than the default green circle for your Loop app, you can easily customize this. To make it easy to generate the correct sizes of icons, you can use a site like [makeappicon.com](https://makeappicon.com/) or [appicon.co](https://appicon.co/) and just drag and drop your source image. The source image needs to be 1024 pixels x 1024 pixels. The site will email you a zip file or automatically download a set of files. Highlight and copy the contents of the Appicon.appiconset that you are sent, including the Contents.json file 1. Navigate to the LoopWorkspace folder 1. Open the OverrideAssetsLoop.xcassets folder @@ -477,9 +477,9 @@ And now you'll be the proud new owner of a custom Loop icon. ## Custom Edits Optional -The customizations listed below are incorporated into the [*Loop and Learn*: Customization Select Script](https://www.loopandlearn.org/custom-code). +The customizations listed below are available already prepared - please review [*Loop and Learn*: Customization](https://www.loopandlearn.org/custom-code/#custom-list). -You can use that script or make your own edit by following these directions. +You can use the prepared customizations or make your own edit by following these directions. ### Disable Authentication for Bolusing