An automated insulin delivery app template for iOS, built on LoopKit

Related tags

Audio Loop
Overview

Loop for iOS

App Icon

Build Status Join the chat at https://loop.zulipchat.com

Loop is an app template for building an automated insulin delivery system. It is a stone resting on the boulders of work done by many others.

Loop is built on top of LoopKit. LoopKit is a set of frameworks that provide data storage, retrieval, and calculation, as well as boilerplate view controllers used in Loop.

Please understand that this project:

  • Is highly experimental
  • Is not approved for therapy

Screenshot of status screen Screenshot of bolus screen Screenshot of battery change notification Screenshot of loop failure notification Screenshot of bolus failure notification

Screenshot of glucose complication on Apple Watch Screenshot of carb entry on Apple Watch Screenshot of bolus entry on Apple Watch Screenshot of the app menu on Apple Watch Screenshot of bolus failure notification on Apple Watch Screenshot of bolus failure notification on Apple Watch

Documentation

Please visit the Loop Docs for installation, algorithm, and other details.

For FAQs and other tips, refer to the Wiki

(Note: there is also a tab for the Wiki at the top of this page)

License and Code of Conduct

Please read the LICENSE and CODE_OF_CONDUCT

Comments
  • Support of FIAsp insulin curve

    Support of FIAsp insulin curve

    Add setting to select type of insulin A) Novo/Humalog B) FIAsp

    If A selected use current curve calculation If B selected use maths to match curve as described on page 12 of http://www.ema.europa.eu/docs/en_GB/document_library/EPAR_-_Product_Information/human/004046/WC500220890.pdf

    opened by CrushingT1D 91
  • Integral retrospective correction

    Integral retrospective correction

    Integral-retrospective-correction or IRC is an experimental modification of the Loop's Retrospective Correction.

    Integral Retrospective Correction (IRC) Status (Nov. 2019):

    • IRC is not a standard Loop feature and is not considered for inclusion in the standard Loop at this time.
    • IRC is considered highly experimental and is not recommended for new Loop users or users who are having issues with Loop settings.
    • The IRC algorithm was developed and implemented during 2018. At this time, the IRC algorithm and the IRC code are stable, and there are no known bugs.
    • Until further notice, I am planning to keep the IRC branch closely up to date with Loop dev branch for my own personal use. Since the Loop dev branch is updated very often, the IRC branch may be behind Loop dev at times.
    • If you wish to try IRC, you may do so on your own following the standard Loop installation directions. Please do not distribute IRC to other Loop users in any form.
    • Feel free to contact me (@ Dragan Maksimovic on Loop Zulip) about any algorithm questions or feedback you may have about IRC, but please note that I am unable to provide any installation support or any other technical support.
    • In the IRC branch, the IRC feature is disabled by default, and standard RC is enabled. To enable IRC, tap on the glucose chart, scroll down to the Algorithm Settings and turn the slider switch on.
    1. Known risk factors compared to standard Loop: with IRC turned on, in response to persistent discrepancies between observed and predicted glucose motion, Loop may increase insulin corrections, which may increase risks of hypoglycemia. In general, IRC may also lead to increased oscillations ("roller-coaster") in glucose responses. Both of these risk factors are increased if the user's setting value for Insulin Sensitivity (ISF) is too low. Increasing ISF setting value tends to mitigate these risks but it is impossible to offer any guarantees for anything around your own T1D.

    2. Compared to standard Loop, IRC is more likely to improve glucose control in the following situations:

    • Glucose staying above (or below) the correction range due to too low (or too high) basal rate settings
    • Glucose spikes (or dips) on tail ends of meals where carbs entered are underestimated or overestimated
    • Glucose spikes due to unannounced protein+fat effects
    • Glucose spikes due to any unannounced meals

    The current implementation of the IRC code is in IntegralRetrospectiveCorrection.swift and the algorithm is described below.

    ******************** .IRC Algorithm Description ******************************************** Integral retrospective correction (integral RC) is an experimental modification of the Loop's retrospective correction algorithm. Loop with integral RC, which is based on the current dev branch of Loop, has no customization other than the IRC code. Just as the standard RC, the motivation behind integral RC is to make Loop less dependent on how well carb entries, ISF, CR, or programmed basal rates represent reality, and to improve responses in the presence of any unmodeled factors.

    If you are interested in trying out the experimental integral RC Loop branch, some points to note:

    • I believe the algorithm and the code are safe and suitable for testing purposes, but since Loop with integral RC is even more highly experimental than standard Loop please do not even consider trying unless you are a Loop user who is willing and able to carefully observe operation and provide feedback. There are measures takes so that IRC should not make anything worse, but there is no way to guarantee that. Too low ISF setting value may lead to increased risks of hypoglycemia or oscillatory glucose responses.
    • Please do not expect any immediate or very substantial improvements. The algorithm changes described here are relatively modest tweaks to existing Loop algorithms.
    • Please read through the rest of this post (which is rather long, sorry), and feel free to ask any questions.

    Integral retrospective correction: algorithm description

    Operation of the standard Loop retrospective correction is illustrated below, where time = 0 represents present time.
    rc_illustration A modeling error called discrepancy is calculated as the difference between the actual BG and the BG predicted based on insulin and carbs models over the past 30 minutes. In the example shown, discrepancy = 15 mg/dL. The discrepancy is then used to modify the BG forecast over a correction interval of 60 min. The net effect of standard RC is that the eventual predicted BG is adjusted up (or down) by a retrospective correction equal to the current discrepancy (subject to momentum effects, but that’s a different topic).

    In the integral RC, the correction magnitude and the correction time interval depend not only on the current discrepancy but also on past discrepancy values, so that the correction becomes more aggressive if discrepancy persists over consecutive Loop cycles. This results is more aggressive dosing in response to any persistent modeling errors due to over/under-estimated carbs, parameters (ISF, CR, or basal rates) being away from reality, exercise, … whatever.

    Simulation examples

    In the first example, the actual basal needs increase by 40% (to 0.7 U/h) over a period of about 10 hours. Standard Loop high temps, which keeps BG from ramping up, but BG hovers away from the target. Integral RC kicks in more aggressive high temp corrections, which brings BG closer to the target.

    22g_12h

    In the second simulation example, the actual basal needs fall by 40% (to 0.3 U/h) over a period of around 10 hours. Standard Loop responds by low temping, but BG still drops below suspend threshold, which triggers some on/off oscillations around the suspend threshold. Integral RC results in a smaller BG drop and keeps BG closer to the target throughout.

    -22g_12h

    The third example is a case of unannounced 25 g carbs with absorption time of about 3 hours. Compared to the standard Loop, integral RC reduces the magnitude and the duration of the spike.

    25g_3 5h

    Integral RC math

    Integral RC math is relatively simple. Overall retrospective correction is computed as a sum of two components, proportional and integral:

    overallDiscrepancy = proportionalGain * discrepancy + integralDiscrepancy

    where integralDiscrepancy is computed as:

    integralDiscrepancy = integralForget * integralDiscrepancy + integralGain * discrepancy

    proportionalGain, integralForget and integralGain are constant parameters of the integral RC filter. In the standard RC, proportionalGain = 1, and integralGain = 0. In simple control theory terms, standard RC can be viewed as a proportional (P) controller trying to reduce modeling error (discrepancy). Integral RC adds an integral (I) action to this control loop. In addition to the above basic math, safety provisions (integration resets and limits) are included to minimize chances of over-correction.

    opened by dm61 83
  • Loop

    Loop "missing data: glucose data not available" but dexcom working

    Discussed a little bit here where Loop shows Missing data: Glucose data not available, though the Dexcom app shows no gaps and appears to otherwise be functioning fine.

    It is mentioned by @Kdisimone in the thread that this may be due to an iOS resource issue, but I was hoping there would be a way to make Loop reconnect? Someone else suggested that it's due to Apple Health lagging, but it never seemed to catch up in my case.

    Looking back, Apple Health has no Glucose measurements from Loop during that time, but Dexcom shows no interruptions. I can get back into a working Loop state when it happens by toggling Bluetooth on and off.

    I have set up Amplitude so I'll have that if it happens again in the future, but is there anything else I could do to help narrow down where the issue may be?

    I’m using Dexcom G5 and Dexcom app and have seen the issue on Loop 1.9.2.

    opened by mitchellhenke 65
  • Automatic bolus dosing

    Automatic bolus dosing

    An implementation of using boluses for dosing. Independent of https://github.com/LoopKit/Loop/pull/1205.

    This feature is enabled by a new switch in settings that allows the user to select between the existing temp basal strategy and this new bolus strategy.

    Boluses are issued for high corrections, when Loop thinks additional insulin is required beyond your basal needs. During each loop, up to 40% of the required insulin will be dosed via bolus. When insulin requirements are below basal, Loop will use temp basals, as before. High temps are no longer used, except to maintain scaled basal when a high override is in effect.

    Automatic bolus sizes are limited to not exceed 40% of your max bolus setting.

    opened by ps2 63
  • Enhanced Activity Mode Idea

    Enhanced Activity Mode Idea

    Yesterday I mountain biked for 4:20:00 in 92 degree weather, I once did a Marathon, and I have done 100+ mile road bike rides-so I get to use activity modes a lot. With a plain pump, I can do great simply by turning basal to 15-20% my normal rate. If I don't do this, I must eat about 30 grams of carb an hour, and that also works, but sometimes I just don't feel like eating/drinking or carrying so much food.

    With OpenAPS and Loop, I set an activity-mode target to about 140. Problem is, those modes have never really worked for me unless I eat / drink non-stop. Yesterday for my 4:20 of riding, I had to eat 14 cookies to keep from going low during the ride. That amounts to one Oreo cookie every 20 minutes, or about 30 grams of carb per hour - the same as if I had a pump and did nothing to the settings. So while the activity mode gave me some extra margin of safety, it never really addressed the root problem.

    My idea is for Loop to have a new configuration setting where you tell it what percentage of normal basal you want for when activity mode is active. It should accept a value from 0-100%, and I will set mine to 20%. It then reduces basal to this whenever activity mode is on.

    opened by rsilvers129 57
  • Rileylink connection

    Rileylink connection

    Hi, I have a lot of problems with rileylink signals, the problem is that lot of time the signal is close to -99db or less and then is not connecting. of course when I'm at home is easy to find some static position with a good signal, but when my son is out of home is difficult to control it.

    He is wearing a belt to assure the pump and the rileylink are close and in transversal position ( the pump horizontal and the riley vertical).

    The system turn Green after few minutes, so in the stable Bg is not a problem, but with a big bg changes the proposed temp could be important.

    know anybody how to improve the connection signal?

    thanks

    opened by davidmlb 53
  • x15 pumps - incorrect

    x15 pumps - incorrect "bolus many not have succeeded" notification after bolus

    I am using a medtronic 715wws pump. I am using offline-mode only with dexcom share.

    Loop 1.4 no problems. Loop 1.5: boluses fail every time with the attached error message img_0061

    The pump actually successfully enacts the bolus every time, despite this error message. 20 minutes after, the loop sends a notification that loop hasn't run successfully in 20 minutes and the loop circle is red.

    Here's the output from xcode terminal while running a bolus: https://gist.github.com/dabear/eab8ac4b982307e44167fc97c3a6f9a6

    opened by dabear 48
  • Disappearing Carb Entries

    Disappearing Carb Entries

    I have noticed that my carb entries disappear sometimes. This happened most recently during the evening of 4/23/2018. It happened again on the morning of 4/24/2018.

    During the evening of 4/23/2018, I entered 40g CHO for supper. It disappeared. Loop predicted a low, given that I had bolused for the meal already. I re-entered the carbs. The carbs showed up twice in Nightscout. They disappeared from Loop again. This happened several more times throughout the evening. Loop would predict significant highs (over 300 or over 500) and significant lows (negative values). I had to open the loop for the night, as I wasn't confident in Loop at all for managing my BG overnight. I captured numerous screenshots. The issue report was captured some time after the initial disappearance.

    During the morning of 4/24/2018, I entered 37g CHO for breakfast. It disappeared again. Loop predicted a low again. I re-entered the carbs, and it "stuck" this time. Again, Nightscout showed two entries for the same number of carbs. I captured the issue report soon after the carbs disappeared.

    FILES from 4/23/2018 Loop.Disappearing Carb Entries.20180423.pdf loop disappearing carbs 20180423 loop healthkit carbs 20180423 loop nightscout treatments 2 20180423 loop nightscout treatments 20180423 loop nightscout 20180423 loop predicted high 2 20180423 loop predicted high 20180423 loop predicted low 2 20180423 loop predicted low 20180423

    FILES from 4/24/2018 Loop.Disappearing Carb Entries.20180424.pdf loop carbs 20180424 loop healthkit 20180424 loop healthkit 20180424 carbs loop nightscout 20180424 loop predicted low 20180424

    opened by chelle0207 45
  • Fpu dev

    Fpu dev

    rsilvers FPU modifications.

    Adds in support for fat and protein.

    See Wiki:

    https://github.com/rsilvers129/Loop/wiki/Fat-Protein-Unit-Branch-(FPU-dev)-of-Loop!-With-IRC-and-Spike.

    See video:

    https://www.youtube.com/watch?v=OvpRUlD0acU

    opened by rsilvers129 37
  • Allow bolus below Target Range via user setting

    Allow bolus below Target Range via user setting

    Many (dozens, as found in history of Gitter channel) of users have expressed a desire to have the Loop bolus wizard pop up with a suggested bolus even if their current BG is below the bottom of the Target Range. Users indicate their desire to bolus in preparation for an upcoming meal, even if their BG is below that target as long as they are not "low". Different users have different values to what they consider to be "low".

    The concept is to add an an optional setting that allows the user to enter BG value to indicate their preference. Single field entry for BG (in preferred units as determined by which unit value is used in BG in Apple Health)

    • If the lower of currently or any future predicted BG is at or below entered value, then do not suggest a bolus
    • If the lower of currently or any future predicted BG is above the entered value, then attempt to recommend a bolus and display to the user if one is in fact suggested
    • If no value is given by the user, then use the bottom of the Target Range (as it works today).

    As to not add additional entries to an already long list under Settings, this could live under the Maximum bolus setting.

    If the community supports this feature design, I will code up and submit a PR.

    opened by CrushingT1D 37
  • Dosing algorithm

    Dosing algorithm

    This is inspired in part by the discussion in #388 where @ps2 and others noted that longer-tail exponential insulin absorption curves may expose some shortcomings of the dosing calculation, which is currently based on BG predicted at t=DIA in the future. Currently, the amount of bolus insulin suggested after a meal is entered is found as follows: image Such DIA-based dosing works well in many cases. However, it ignores the effect of the insulin delivered on BG between now (t=0) and DIA, which may result in too high or too low amount suggested. To address this issue, one may consider an iterative dosing algorithm that would search for an insulin dose so that BG predicted after the dose is delivered does not go below a target. Such iteration can in fact be captured by a relatively simple modification of the above dosing calculation: image The argument of the min function has the meaning of the amount of insulin required to drive BG to the target value at time t. The 1-IOB(t) term in the denominator represents the fraction of to-be-dosed insulin expended from 0 to time t. By choosing the minimum of the doses suggested over the time interval from t=0 to t=DIA we guarantee that the predicted BG, after the dose is delivered, will just touch the target value BGtarget at some point in time between now and DIA (not necessarily at DIA).

    To illustrate how the suggested dynamic dosing calculation would work, consider a simple scenario: ISF=50, CR=10, DIA=6 hours, and meal of 50g that absorbs slowly at constant rate over a period of 5 hours. Since the entire meal is absorbed within DIA, the current dosing calculation would suggest 50/10 = 5 U bolus. A simple simulation shown below indicates that this dose is too large for the given meal, with BG dropping from initial 100 mg/dL to as low as 56 mg/dL (neglecting any low temping, which is not simulated here, but which would be insufficient to prevent the low) too_large_dosing_at_dia In the same example, the dynamic dosing suggests 3.7 U, and the simulation shows that BG just touches the target (100 mg/dL) back at around 200min, which is t=140min after the dose is delivered. dynamic_dosing Since this initial dose is insufficient to cover all carbs, BG eventually drifts up to a value above the target, but this would be corrected by Loop high-temping (which is not included in this simple calculation).

    I think the suggested modification of the dosing algorithm could apply to both boluses and temps, and I think everything necessary to perform the calculation is available in DoseMath.

    A concern is that the dynamic dosing described above may be too conservative, especially in view of the Loop dynamic carb absorption algorithm, which includes a 50% extension to a user-entered carb absorption time. The dynamic dosing formula could be modified to be more aggressive in at least two ways: by replacing BGtarget with BGmin (or perhaps even BGguard just for boluses), or by taking into account the effect future zero temping could have on predicted BG, thus enabling sort of dynamic super-bolusing as a part of the algorithm. The formula below includes both of these modifications: image

    opened by dm61 34
  • Loop -456 Projection After Dec 31 Commit

    Loop -456 Projection After Dec 31 Commit

    Describe the bug Loop projected an Eventual -456 mg/dl glucose level, and the math didn't make sense for parameters, IOB, COB, etc. Loop shut off insulin delivery due to this. Please see the screenshots and files for more details. Enter the new Commit on Dec 31, 2022, yesterday morning, and it worked fine before this.

    To Reproduce Steps to reproduce the behavior:

    1. Had Custom Preset on for morning workout
    2. Changed Custom Preset off and entered carbs for morning coffee.
    3. Delivered expected insulin and then displayed the Eventual -456 mg/dl glucose level, shutting off the insulin.

    Expected behavior Normal loop behavior.

    Phone

    • Hardware: iPhone 14 Pro Max
    • OS Version: 16.2

    Loop Version

    • Version Number: v2.3.0 (57)
    • Repo: Dev

    CGM

    • Device: Dexcom G6
    • Manager app: Dexcom App

    Pump

    opened by shainey 1
  • Loop keeps crashing after build

    Loop keeps crashing after build

    Describe the bug I have a new iphone (mini 13, ios 16.2) and want to build my loop on it. I have previously used my old iphone SE. I build loop from my macbook air (Ventura 13.1) with the latest version of XCode (14.2). The build seems succesfull as xcode said running loop on iphone, and I didnt see any red bugs. When opening loop on my Iphone it did not show my old settings, the app seemed empty (I decided to first install everyting on my new Iphone before transfering my pods). After a few moments the app keeps crashing and shutting down. The first time it happend Xcode was still open and showed a popup messages saying "Terminated due to memory issue".

    Attach an Issue Report Issue report attached and screenshot added. Loop Report 2022-12-29 08:14:26+01:00.md

    To Reproduce Steps to reproduce the behavior: This happens each time I open Loop. Loop is also not open long enough to add settings

    Expected behavior I hoped Loop would just open like before, maybe I had to add some settings, but I did not expect it to crash immediatly

    A clear and concise description of what you expected to happen. I hope someone can tell me where I did something wrong so loop will work again :-)

    Screenshots Scherm­afbeelding 2022-12-29 om 08 09 34

    Phone

    • Hardware: [e.g. iPhone mini 13]
    • OS Version: [e.g. iOS 16.2]

    Loop Version

    • Version Number: [V2.2.9]
    • Repo:

    CGM

    • Device: [Dexcom G6]
    • Manager app: [Dexcom App]

    Pump

    • Manufacturer: [omnipod]
    • Model: [eros]
    • Firmware version:

    Additional context Add any other context about the problem here.

    opened by LaraSimons 2
  • Expiration Notice for TestFlight Builds

    Expiration Notice for TestFlight Builds

    Is your feature request related to a problem? Please describe. The expiration for the new github Build Action process for building Loop does not notify user when Beta test will expire:

    • The TestFlight distribution has an end date of 90 days
    • The profile expiration might be a full year in the future (for first build with this method)

    Describe the solution you'd like Add a new notification that warns user when app will expire - similar to the notification for Xcode built apps.

    Additional context Is there a way to add the TestFlight expiration date to Loop notifications?

    Testing Details The expiration profile for my TestFlight app reports as 2023-12-15 in the Loop Report under Build Details. I looked at:

    • https://developer.apple.com/account/resources/profiles/list
    • there are 6 profiles listed that start with match.AppStore.com for Loop through Loop Status Extension with that expiration date.

    The TestFlight expiration says 87 days.

    • Today is Dec 27, 2022.
    • I changed the date (this is a test phone - do NOT do this on a real phone) to March 30, 2023 (93 days in the future).
    • I can no longer open the app - message is: "Loop" Beta Has Expired
    • Changed time to March 23, 2023 and app opens again
    enhancement 
    opened by marionbarker 1
  • watchOS 9.1 simulator

    watchOS 9.1 simulator

    Hi, I tried to install the loop but in the final step I ran into a problem, I tried several times to install according to the instructions but it still doesn't work. Attach photos.

    WhatsApp Image 2022-12-23 at 02 28 46 WhatsApp Image 2022-12-23 at 02 28 46-2 WhatsApp Image 2022-12-23 at 02 28 46-3 WhatsApp Image 2022-12-23 at 02 28 46-4 WhatsApp Image 2022-12-23 at 02 28 46-6

    WhatsApp Image 2022-12-23 at 02 28 46-5

    opened by ohadlahavv 3
  • Feature Request: Assist users with carb ratio effects during overrides

    Feature Request: Assist users with carb ratio effects during overrides

    Is your feature request related to a problem? Please describe. There have been multiple posts on social media from Loop users who report difficulty understanding the effect on Loop predictions when they add carbs while running an override. The more extreme the override, the bigger the issue.

    • The override properly affects basal rates, carb ratio and insulin sensitivity (because the ratio of ISF and CR is critical for predictions)
    • However, sometimes people forget or do not understand the consequence of an override when entering or editing a carb entry.

    Describe the solution you'd like One solution is to alert users that an override is in effect when a carb entry is entered or edited.

    Describe alternatives you've considered There are a lot of posts on Facebook on this topic explaining what happened and why there is an unexpected bolus suggestion or unexpected prediction. It is covered in documentation, but even experts sometimes forget.

    opened by marionbarker 1
Releases(v2.2.9)
  • v2.2.9(Apr 5, 2022)

    This release updates Loop to handle Dexcom Share server changes for how glucose trend is parsed. Fixing that error will also prevent it from being displayed at many times where it has been misleading, hopefully reducing support burden.

    Source code(tar.gz)
    Source code(zip)
  • v2.2.8(Mar 16, 2022)

  • v2.2.7(Jan 11, 2022)

    Just a small update for those who distribute Loop via TestFlight. This fixes https://github.com/LoopKit/Loop/issues/1578

    No other changes.

    Source code(tar.gz)
    Source code(zip)
  • v2.2.6(Sep 6, 2021)

    Several users reported issues with IOB accounting in Loop 2.2.5 recently, where IOB was being underreported. This is a serious issue, so updating to this release (v2.2.6) is strongly recommended for anyone currently running 2.2.5.

    The issue appears to be the result of a failure to write to HealthKit, which may occur if the Health app on your phone is having problems, or if you have turned off Loop's ability to write Insulin data to HealthKit. The fix involves reverting a change made in v2.2.5 to reduce overlaps of Reservoir and Pump Event reconciliation, which would over estimate insulin delivery. Instead, that issue will be fixed in the next major release of Loop.

    Source code(tar.gz)
    Source code(zip)
  • v2.2.5(Aug 23, 2021)

    This is an interim release as we prepare for the major changes currently in development. If you are running the current release, 2.2.4, or the automatic bolus branch, or an older version of Loop it is recommended that you update.

    Automatic Bolus (Experimental) - Support for the Automatic Bolus dosing strategy has been included in this release as an experimental option. The default will continue to be the standard Temp Basal strategy. It is marked experimental, as support for tracking automatic vs manual boluses is not yet implemented in the code and databases, and users must approach this feature with caution, as their settings may require changes to work well.

    This version includes a fix to reduce occurrences of overlaps in accounting for insulin via reservoir and dose history, which causes temporary overestimation of IOB.

    OrangeLink Support - Connection monitoring, battery level alerting, find device, and light/vibration controls for OrangeLink and OrangeLink Pro. A new option to disable MySentry use can trade pump battery for longer RL battery.

    Miscellaneous Omnipod fixes and improvements: https://github.com/ps2/rileylink_ios/pull/676

    Provisioning Profile Expiration Alerting - When fewer than 20 days remain until profile expiration, you'll get an alert when you open the app, once every 2 days at most. When fewer than 24 hours remain, you'll get an alert when you open the app, once every hour at most. There is an option to navigate to the updating section of LoopDocs in the alert. Expiration date is also included in the issue report for reference.

    Dexcom Share URL for non-US users has been fixed.

    For community support, please use the Looped facebook group, and the Loop Zulip discussion board

    Source code(tar.gz)
    Source code(zip)
  • v2.2.4_carthage_pin2(Oct 4, 2020)

    • Revert to previous date pickers (Thanks @novalegra!)
    • Pod fault handling improvements (Thanks @itsmojo!)
    • Fix issue with pod status screen not allowing new pod pairing or continuing of interrupted pairing.
    Source code(tar.gz)
    Source code(zip)
  • v2.2.3(Sep 26, 2020)

    • Fetch pump and cgm data on manual loop retry (when Loop icon is red or yellow)
    • Re-arranged pod status screen to prioritize needed information and actions.
    • Pod pairing fixes for more edge cases.
    • Translation updates.
    • Fix share server integration, pointing to share2.
    • Report RSSI and low gain in Read Pod Status command.
    • Report failure properly when Play Test Beeps command fails.
    • Carthage build fix for Xcode 12.0.1
    Source code(tar.gz)
    Source code(zip)
  • v2.2.2(Sep 17, 2020)

  • v2.2.1(Aug 9, 2020)

    • Include pending insulin in:
      • forecast uploaded to Nightscout
      • status extension forecast
    • Updated translations, fixes for temp override translations, new Arabic translations.
    • Omnipod integration fixes:
      • Avoid suspending during deactivation if pod has a fault, is in setup, or already suspended.
      • Show the correct expected address in invalid address error
      • Reuse same address during attempts to pair with same pod
      • Fixes for https://github.com/LoopKit/Loop/issues/1321
      • Updates for omnipod packet parser
      • Suggest moving to new area on multiple pairing failures.
    • Minimed updates:
      • Detect temp basal cancellation performed on pump
    Source code(tar.gz)
    Source code(zip)
  • v2.2(Apr 18, 2020)

    • Updated carb/bolus screens. Thanks @mpangburn!
      • Carbs and boluses are now entered together, which is a more familiar model to many caregivers.
      • Forecast preview while entering bolus allows you to see potential impact of your bolus before delivering.
    • Improvements in Watch updates; sleep data being used to update complications when you are awake. Thanks @novalegra!
    • Omnipod pairing improvements. Bug fixes, and better error messaging. Thanks @itsmojo!
    • Many performance improvements, especially effecting long time Loop users. Delays in rendering graphs during app launch should be fixed.
    • New device communication logging facility- Additional logging across pod swaps, and logging of CGM communication.
    • Rendering fixes to prevent insulin graph from drawing outside of bounds.
    • Bug fix to align use of 10m insulin delay in dose computation and forecast.
    • Include current bg in suspend threshold evaluation.
    • Many other fixes.
    Source code(tar.gz)
    Source code(zip)
  • v2.0(Dec 31, 2019)

    Loop Release 2.0

    Pump Support

    bolus progress image
    • Simulated pump for testing.
    • Confirmation beeps on Omnipod integration.
    • Revert x15 bolus patch.
    • PumpManager updates for improved dose reporting and more timely uploads.
    • Pump integrations are now plugins, for more independent code.

    CGM Updates

    • Updates to work with newer Dexcom transmitters.
    • Setting for enabling BG upload from Dexcom.
    • Simulated CGM for testing.
    • Transmitter activity log.
    • Track latest Dexcom connection.

    Watch Updates

    • Watch bolus confirmation.
    watch image
    • Display carbs in watch app.

    General UI/Feature Updates

    • Temporary Overrides.
    overrides image overrides image
    • New Translations: Japanese, Danish, Swedish, Vietnamese, Finnish, Portuguese, Polish, and Romanian.
    • New ISF and correction range interfaces with guardrails.
    Source code(tar.gz)
    Source code(zip)
  • v1.9.6(Jul 18, 2019)

  • v1.9.5(Mar 28, 2019)

  • v1.9.4(Jan 26, 2019)

    • Charts on Apple Watch app (Thanks @bharat and @elnjensen!)
    • Series 4 Apple Watch complications (Thanks @mpangburn!)
    • CGM sources updated to CGMManager implementations
    • Siri Shortcut: Add Carbs
    • LoopKit
      • Fix for missing bolus https://github.com/LoopKit/Loop/issues/853
      • Fix for gap in HealthKit insulin data https://github.com/LoopKit/Loop/issues/852
      • Limit uploads to 5k events at a time
    • rileylink_ios
      • Add a pink pump color (Thanks @Kdisimone!)
      • Fix race condition during initial RileyLink configuration (Fixes https://github.com/LoopKit/Loop/issues/837)
    • CGMBLEKit
      • Harden backfill heuristics further, to fix future bg issue.
      • Allow the settings screen to update when new readings come in.
    Source code(tar.gz)
    Source code(zip)
  • v1.9.3(Oct 1, 2018)

  • v1.9.2(Sep 18, 2018)

  • v1.9.1(Sep 4, 2018)

    Updates from RileyLink 2.0.5:

    • Fixes for mysentry pairing with subg_rfspy v2.x
    • Handle pumps with few pages of history
    • Bolus error translation fix
    Source code(tar.gz)
    Source code(zip)
  • v1.9(Aug 24, 2018)

    • New pump setup interface
    • Synchronization of settings:
      • Basal scheduled (standard profile)
      • Max bolus
      • Max temp basal
    • Translations (Thanks @Kdisimone and translators!):
      • German
      • French
      • Italian
      • Spanish
      • Dutch
      • Norwegian Bokmål
      • Chinese (simplified)
      • Russian
      • Polish
    • Framework dependencies built locally. Slower initial build, but more flexibility.
    • MAIN_APP_BUNDLE_IDENTIFIER is now automatically made unique to your dev team id, so you no longer need to customize this. However, this id will be different than your previous build that you manually customized, and so the newly built app will show up as a new app, and will need to be configured again. Please remove your old app from your phone when done, as the old app could cause conflicts.
    • Improved error messaging
    • LoopKit v2
    • Bug fixes
    Source code(tar.gz)
    Source code(zip)
  • v1.5.6(Jun 15, 2018)

  • v1.5.4(May 5, 2018)

    • Glucose correction range override (pre-meal/workout) from Apple Watch
    • CGMBLEKit 2.0
      • Stability improvements, BLE Modernization
      • Glucose values can be valid during "needsCalibration14" state.
    • RileyLink 2.0
      • Stability improvements, BLE Modernization
      • Support for subg_rfspy 2.0 firmware, translations
    • Fix sensor state display (fixes #456)
    • Reminder to check pump's max basal rate when configuring Loop's max basal rate
    • Fix to prompt for face-id authentication on bolusing
    • LoopKit 1.5.4
      • Fixes crash that affects bluetooth re-launching
    • LoopKit 1.5.5
      • Fix bug where editing carbs can cause entries to disappear. Typically happens during network issues or slowdowns.
    Source code(tar.gz)
    Source code(zip)
  • v1.5.2(Jan 12, 2018)

  • v1.5.1(Dec 21, 2017)

    • Spanish and Russian translations. Thanks @Kdisimone!
    • Active Insulin added to Today widget. Thanks @elnjensen!
    • Build on Xcode 9.2/Swift 4.0.3
    • Safer tracking of pending boluses.
    • Fix intermittent crash on deleting carbs.
    • Retry pump data fetch next timer tick after failure.
    • Simplifying Rewind-Prime reconciliation
    • Upgrade SwiftCharts to 0.6.1
    • Store current pump timezone in UserDefaults on first run.
    Source code(tar.gz)
    Source code(zip)
  • v1.5.0(Sep 20, 2017)

    • Xcode 9 upgrade is mandatory
    • The iOS 11 update is optional, but this build will not install to WatchOS < 4.0
    • Carthage and Brew setup are automatic for new installs

    Features

    • Pre-meal correction targets: Set a new correction range override in settings for pre-meal times. This can be enabled from the toolbar. This override is active for 1 hour or until carbohydrates are added. Fixes LoopKit/Loop#177
    • Insulin Delivery in Health: Insulin delivery data is stored using HealthKit and can be viewed in the Health app and other HealthKit-enabled apps.
    • Safer correction calculations: Insulin corrections are now calculated ensuring the minimum glucose value does not drop below the correction target, rather than only the final glucose value. Thanks to dm61 and his work on LoopKit/Loop#533

    Settings

    • New models of insulin effects are available in settings along with an easy way to compare their curve shapes. The Walsh/Minimed DIA model is now considered deprecated. Fixes LoopKit/Loop#388
    • Retrospective correction is now enabled by default. It is designed to work closely with other Loop features and it’s recommended for all users.
    • Target Range is now known as Correction Range to avoid confusion with the ranges often used for "Time in Target"
    • Minimum BG Guard is now known as Suspend Threshold. It's now optional; if not set, the lowest value in the active Correction Range is used.

    Reliability

    • Subscription to the RileyLink connection timer is now updated dynamically based on the connection staleness of CGM and pump data. This should help resolve intermittent connection issues more quickly.
    • Loop now takes more opportunities to fetch data from Share. If you use the Dexcom G5 app for your transmitter, don't delete the transmitter ID to try and improve communication. It won't have any effect. Fixes LoopKit/Loop#550
    • Pump history reconciliation is improved to identify insulin delivery as being suspended during No Delivery alarms and Rewind states
    • More Loop failure cases are tracked and can be investigated by tapping a red Loop indicator. This includes a mis-calibrated CGM and failure to read Pump History.
    • Bolus delivery is more tightly-integrated into the flow sheet screen. While a bolus is starting, an indicator is shown at the top of the screen. After a bolus has started, the Glucose, Active Insulin, and Insulin Delivery charts will optimistically update to reflect the programmed amount. Fixes LoopKit/Loop#438 LoopKit/Loop#273

    Bug Fixes

    • Rotating the charts can get into a state where too little or too much data is shown
    • System font size changes result in overlapping text labels in many places. Fixes LoopKit/Loop#523
    • Carbs on Board values can be stale for a few minutes after deletion. Fixes LoopKit/Loop#547
    Source code(tar.gz)
    Source code(zip)
  • v1.4.0(Jul 28, 2017)

    • Dynamic carb absorption model (See #507).
    • New carb entry interface with emojis. 🍕🍭🥖
    • Managed data interval now set per cgm type (allows indefinite persistence of enlite data).
    • Bluetooth reliability updates.
    • Non-US Share server selection (Thanks @dabear!).
    • Clearer messages around pump communication errors.
    • Loggly and os.log support.
    Source code(tar.gz)
    Source code(zip)
  • v1.3.3(May 19, 2017)

  • v1.3.2(May 14, 2017)

    • Pending insulin from ongoing temp basals is not included in the forecast. This decreases the incidence of a high/low temping pattern.
    • Dosing decisions restricted to look no further than DIA. (Safety improvement, and better handling of long CA meals)
    • Check pump status for suspend and bolusing states before bolusing.
    • CRC8 check reinstated on all packets (Safety improvement).
    • Disregard primes using event history.
    • Positive momentum and RC are once again included in Bolus recommendations, reverting #372.
    • Optimization of fetching pump history pages. Fewer pages are fetched after recent page rollover. Saves pump battery.
    • Error handling improvements. Splitting bolus errors into certain and uncertain failure categories.
    • Pump timezone, bolusing and suspended states added to pump status in Nightscout upload.
    • Refactoring of Loop and DataManages to better align responsibilities.
    Source code(tar.gz)
    Source code(zip)
  • v1.3.1(Apr 7, 2017)

  • v1.3.0(Mar 13, 2017)

    • Minimum BG Guard (You must configure this in settings immediately after upgrading)

    • x22 enlite CGM support (Thanks @tmecklem!)

    • Open the app when the user taps on the widget (Thanks @bharat!)

    • Add mmol support on watch complications. Add modularLarge complication. (Thanks @walker0!)

    • Fix widget battery level for x22 pumps (Thanks @wkcwells!)

    • Positive momentum is no longer included in Bolus recommendations (Thanks @thebookins!)

    • Multiple RL support (experimental). Feedback welcomed on this feature.

    • Many improvements to lockscreen HUD

    • Carbs from pump bolus wizard no longer uploaded to NS.

    • RL 0.13 update:

      • Splitting NewTime and ChangeTime into separate events, as well as ChangeAlarmClock and DeleteAlarmClock. Thanks @beached!
      • Much improved parsing of CGM pages from pump. Thanks @tmecklem!
    • RL 0.13.1 Update:

      • Re-enable readPumpStatus command
    • LoopKit 1.2.0 update:

      • Simplify caching code in CarbKit
      • Fix issue where schedule config values are truncated to 1 decimal point
      • Add validation for Carb Entry Absorption time (less than 999). Fixes LoopKit/Loop#312 (Thanks @sharpfive!)
    • Show last loop error on clicking loop status

    • RL 1.0 Update:

      • Store pump suspend events in NS
      • Store new field in NS device status, indicating which radio adapter is being used. Also tracks RSSI of last packet from Pump.
      • Remember last valid tune frequency. When a tune fails, it reverts to that, rather than the default.
    Source code(tar.gz)
    Source code(zip)
  • v1.2.0(Dec 24, 2016)

    • Support for battery levels on x22 pumps
    • Italian translation
    • Lock screen widget
    • Algorithm change: If BG is < 55 then temp to 0, even if eventualBG is above or in range.
    Source code(tar.gz)
    Source code(zip)
  • v1.1.2(Nov 18, 2016)

    • Hotfix: Temp basal calculation was always incorporating retrospective correction. This changes the calculation to respect the user setting that enables and disables retrospective correction.
    Source code(tar.gz)
    Source code(zip)
Owner
Tools for building automated insulin delivery systems on iOS
null
Beautiful Music Player app built using SwiftUI to demonstrate Neumorphic design pattern and MVVM architecture.

Beautiful Music Player app built using SwiftUI to demonstrate Neumorphic design pattern ?? and MVVM architecture ?? . Made with love ❤️ by Sameer Nawaz

Sameer Nawaz 120 Jan 4, 2023
MusicPlayer - Beautiful Music Player app built using SwiftUI to demonstrate Neumorphic design pattern and MVVM architecture

Skailer ?? Beautiful Music Player app built using SwiftUI to demonstrate Neumorp

null 23 Dec 10, 2022
AudioKit 67 Dec 21, 2022
GuitarPractice - Guitar Practice app built with swift

Guitar Practice I am the sole developer and designer of this application. This i

Karl Stencell 1 Feb 7, 2022
An iOS and macOS audio visualization framework built upon Core Audio useful for anyone doing real-time, low-latency audio processing and visualizations.

A simple, intuitive audio framework for iOS and OSX. Deprecated EZAudio has recently been deprecated in favor of AudioKit. However, since some people

Syed Haris Ali 4.9k Jan 2, 2023
The Amazing Audio Engine is a sophisticated framework for iOS audio applications, built so you don't have to.

Important Notice: The Amazing Audio Engine has been retired. See the announcement here The Amazing Audio Engine The Amazing Audio Engine is a sophisti

null 523 Nov 12, 2022
'Minimalistic Push' is a minimalistic push-up application now built with Flutter.

Minimalistic Push Minimalistic Push is one of the simplest push-up trackers out there. You can track your push-ups in the training mode and see an ove

Jonas Poxleitner 10 Dec 29, 2022
An iOS app that visually clones Spotify's app and consumes the official Spotify's Web API to show(and play) songs, podcasts, artists and more.

SpotifyClone An iOS app that visually clones Spotify's app and consumes the official Spotify's Web API to show(and play) songs, podcasts, artists and

null 104 Jan 7, 2023
AIB indicates for your app users which audio is playing. Just like the Podcasts app.

Audio Indicator Bars for iOS and tvOS Indicates for your app users which audio is playing. Just like the Podcasts app. Index Requirements and Details

Leonardo Cardoso 285 Nov 23, 2022
AudioKit Synth One: Open-Source iOS Synthesizer App

AudioKit Synth One We've open-sourced the code for this synthesizer so that everyone is able to make changes to the code, introduce new features, fix

AudioKit 1.5k Dec 25, 2022
Classical music front-end for Apple Music: iOS app

concertino_ios Concertino is a classical music front-end for Apple Music. It's splitted in several projects. This one provides only the iOS app. (Ther

Open Opus 107 Dec 22, 2022
Voice Memos is an audio recorder App for iPhone and iPad that covers some of the new technologies and APIs introduced in iOS 8 written in Swift.

VoiceMemos Voice Memos is a voice recorder App for iPhone and iPad that covers some of the new technologies and APIs introduced in iOS 8 written in Sw

Zhouqi Mo 322 Aug 4, 2022
iOS music player app that downloads music from the internet, even YouTube

About YouTag is an iOS music player app that downloads music from the internet, even YouTube, and manages it in a local library. Music videos can also

null 263 Jan 8, 2023
MuVis is a macOS, iOS, iPadOS app for real-time music visualization.

MuVis MuVis is an open-source multiplatform app (using SwiftUI, Swift, and Xcode) for music visualization. It renders informative (and musically usefu

Keith Bromley 7 Oct 10, 2022
Fast Campus iOS App Development All-in-one Package Online Clone Coding

애플뮤직 클론 코딩 패스트캠퍼스 iOS 앱 개발 올인원 패키지 Online 클론코딩 사용요소 UICollectionReusableView , c

JungMin 1 Dec 21, 2021
Sentiments is an iOS app written in Swift that analyzes text for positive or negative sentiment

Sentiments Sentiments is an iOS app written in Swift that analyzes text for positive or negative sentiment. Positive sentiment is highlighted in green

Kyle Weiner 177 Nov 16, 2022
11t is an iOS and Android app for connecting to Mastodon, written in Flutter.

README 11t is an iOS and Android app for connecting to Mastodon, written in Flutter. I connect to Mastodon on mastodon.social, but everyone can start

Jeroen Smeets 88 Dec 23, 2022
Meow-Speech - IOS app - Text to Speech

Meow-Speech IOS app - Text to Speech All licensed code belongs to the respective

Shivam Mishra 2 Jul 30, 2022
PitchPerfect - A simple iOS app for the Udacity Nanodegree which explores AVFoundation to record a short sound

PitchPerfect App A simple iOS app for the Udacity Nanodegree which explores AVFo

Mark Han 0 Feb 12, 2022