Release V4.0.0
OPEN CLEAN Oref0 AND NEW EASILY ACCESSIBLE, READABLE, COMPACT, NON COMPRESSED DYNAMIC ISF CODE
- First dynamic ISF release which uses the public clean unmodified Open APS repo. All dynamic ISF is aded as a separate layer, easily reviewed by anyone. This layer allows for a super simple overview and for super simple changing of any formula and makes the open public iAPS repo even more open (more accessible for non-devs) to everyone.
- Uses the OpenAPS Oref0 repo modules unmodified. The algorithm in JS is back to the Oref0 modules, as originally implemented in FreeAPS.
- The source code for dynISF is added as a layer and run before the OpenAPS algorithm, similar to the middleware, visible and uncompressed in the iAPS repo.
- The TDD code needed for dynISF now written in Swift, made to work for all pumps using the pump history storage, as before.
One exception where the JS code currently differs from OpenAPS is in one file, a file just with the default list of preferences etc, the index.js file. This is taken compressed from the original FreeAPS code (https://github.com/ivalkou/freeaps/blob/master/FreeAPS/Resources/javascript/bundle/profile.js), as this code has never been presented unminimized and I therefore don’t know exactly what format is used for this file, but you can see all these variables contained here uncompressed in the preferences.json and in other places in the Swift code, where this list of preferences and profiles is generated.
BOLUS CALCULATORS
- Calculators are now using safer formulas and a more user friendly UI/UX with several important old bugs fixed.
- Both the “original” and the alternative are now written entirely in Swift. Several bugs found and fixed in the newer alternative calculator.
- The calculators now about 0.2 s faster, when not using the slower LoopKit function for rounding.
- Added safety guardrails to both alternatives, using the OpenAPS prediction minPredBG (can be disabled, but on by default). The error alerts have been removed and replaced with illustrations.
- Settings for bolus calculators have been revamped. More clean and simple.
- The bolus View is now more compact, using an added compactSpacing method (only used on devices with iOS 17 and newer).
NEW CHARTS
- New charts and illustrations for the bolus calculators. You can now see the insulin needed illustrated in the bolus prediction chart as a AreaMark in the prediction chart in bolus view.
- Target glucose added as dotted green line.
- For the alternative calculator I added new graphics to better illustrate the data used, a new chart with the insulin needed for each variable and a Grid data table with the specific formulas and summation of the variables.
- Main Chart. Alignment of the default bolus and carbs dots and strings adjusted for easier reading of all entries.
- To reduce eventual bolus string clutter a setting has been added in UX/U settings, where you can opt in to hide the insulin amount string when under a selected value, default is 0.3, a bit similar to xDrip.
- I’ve added an option in UI/UX-settings to replace the bolus dot with an InsulinBar instead (off by default). The height of the bars is dynamic, based on your pump history, meaning a user with history of boluses of 0.2-2 U will generate the same size of the insulin bars as a user with history of boluses of 2-20. Max Height is added as a new Config in code and will impact all bars.
- Glucose dots now connected by a thin line for better overview of the chart data.
NEW OPTIONAL ANONYMOUS SHARING AND SAVING OF YOUR STATISTICS
- The data you now choose to share is not using Nightscout anymore. This data is unidentified (no emails or URLS are needed or tied to your data) and uploaded anonymously.
- A new section of settings has been created for this with a new link to a new site with the statistics.
- Very soon you will also be able to see in your settings header when there is a newer main release to build/download.
To prevent duplicate uploads of data a unique random string is created as identifier, saved on your iPhone.
Thank you @scrappy for the work with the new site for statistics!
LIVE IAPS COMPLICATIONS AND WIDGETS
- Uses a Contact Image to display iAPS updates/data on Watch App (Apple Contacts complication) and as iPhone widget (Apple Contact widget).
- Ensuring reliable live updates.
- Many options and settings with live preview in iAPS settings.
Thank you @yurique for this contribution!
MISCELLANEOUS
- Back port various Omnipod related fixes from Loop #619, by @itsmojo
- Cleanup around diagnostic commands (commits from OmniBLE 118 & OmniKit 32) #620, by @itsmojo
- Many important bug fixes. Most of fixes are for really old bugs (pre v3).
- Middleware and the adjusted profiles can now be read outside of the middleware layer and outside of oref0.
- It’s now clear when autosense has been used and when the dynamic ratio has been used instead.
- TDD will always be displayed in the history data table. When dynamic ratio used also in the iAPS loop pill (pop-up). You can see hours of data available in the data table.
- The dynISF and the other OpenApS variables are now separated in two groups in the pop-up.
- Any active override is now added to the iAPS pill pop-up and to the Nightscout OpenAPS pill. Middleware can be read in pop-up and NS pill as before.
- The profile button was slightly disproportionate (too large) before.
- Changed colour of glucose in main chart to darkGreen, for better readability and to be coherent with the TIR and Loop chart green colour.
- MAX IOB added as a variable to the Overrides, by request.
- When SMBs either by your own settings or by other temporary conditions in the Oref0 code are disabled, you will now see this both in the iAPS pill in iAPS and in Nightscout.
- To prevent GitHub build errors due to the naming of your iAPS-repo, you now can use any repo name. A fix in the workflow file.
- An edit of the Webpack config file, for correct file names of the new compressed files, by @thomasvargiu
- Siri Bolus Shortcut: you're now able to disable the confirmation when making the shortcut/automation.
TRANSLATIONS
- Thank you all community translators: Hung Nguyen Phuteleco, Nicole Van Elst - van den Hoek, David de Tommasi, Mirko Trierenberg, Andras Feher, Mykola Yroslavadudko, Dani S Nahek, Jani Lavonen, Aleksandr Van-Zaam @vanzaam, Alessandro Fogliani, Typ1er and Matteo Neri for your contribution!
CAVE!
in version 4 there are some changes made to the middleware function.
- The arguments preferences, basalProfile and pumphistory are removed as these are no longer needed (no TDD calc made in oref0 anymore and the preferences is anyways already part of the profiles and the current basal you still can see and change as before)).
-The argument oref2_variables has been renamed to dynamicVariables. You have to update your current middleware function (provided you have some) to avoid any errors.