## nightscout/AndroidAPS — 3.4.2.6…4.0.0-beta1

_3167+ commits._

### Features
- **E2E: find the CAKE carbs type by its new spoken description** (dcefd67)
- **New Crowdin updates (#5167)** (bfe3df7)
- **Add Dana-i2 support** (03ba88a)
- **Keep the cached IOB when a new BG arrives** (2e4d7be)
- **Add delta to Samsung now bar primary info** (cdc1032)
- **Cancel the running status refresh before starting a new one** (9c2065d)
- **Add metadata for Samsung now bar and add extras to notificationf or Samsung now bar** (9c1303c)
- **New Crowdin updates (#5166)** (cdc1c67)

### Fixes
- **Graphs: fix crash when the graph sheet closes with the height field focused (#5223)** (e39cb7e)
- **Merge pull request #5202 from olorinmaia/phone/fix/samsung_live_notification_content** (b96faa1)
- **Merge pull request #5203 from olorinmaia/phone/fix/minutes_duration_hint** (917abed)
- **Equil: treat as patch pump (200 U reservoir)** (acc5668)
- **Merge pull request #5175 from olorinmaia/pump/fix/dash_bonding_setting** (47f7748)
- **Fix three Dana RS/i log lines that showed wrong values** (c09668f)
- **Fix calling releaseBusyBeforeCompletion by only calling busy.set(false) once. Fix DI bindings. Add comments for hook contracts. Restore connection state and connection wait logs, remove noisy connect log. Restore controller ID todo** (c2e3582)

### Backend
- **4.0.0-beta1** (28a341e)
- **Offer 4.0.0-beta1 in the browser build** (391c6e6)
- **Merge pull request #5186 from andyrozman/site_loc_picker_compact** (c25cfc5)
- **Accessibility: objectives, pod history, follower status, SMB, import summary, BG source, NS pause, calibration and preview controls say their state** (1250cfe)
- **Accessibility: switches and radio buttons in QuickWizard, Dana options, client control and pump dialogs are one named control** (7922536)
- **Accessibility: carbs type names, running mode buttons say their section, date and time fields use the shared section** (790e8ac)
- **Accessibility: notification and temp target state, named row buttons, move actions for reorder lists, dialog headings** (45d7f87)
- **Accessibility: pump wizards announce steps, ready buttons and waits; pump status reads once with its level** (030d2d5)
- **Accessibility: one slider node with its name and value, not a name beside a bare SeekBar** (8f6ebfb)
- **Accessibility: glucose, sliders, dialog switches, profile editor, insulin picker and exam read correctly** (3655ac0)
- **Accessibility: newest glucose values, plugin card state, insulin card and list control names** (77fbe90)
- **Merge pull request #5221 from nl-ruud/test/dash-ble-manager** (1efba48)
- **Tests use the concrete DASH BLE manager to protect the behavior DASH relies on** (14e508e)
- **Merge pull request #5200 from olorinmaia/phone/impl/scene_summary_in_quicklaunch** (4e0e1be)
- **Merge pull request #5220 from nightscout/dependabot/gradle/dev/net.danlew-android.joda-2.15.0** (f64a3ed)
- **Merge pull request #5198 from nightscout/l10n_dev** (ff99541)
- **Bump net.danlew:android.joda from 2.14.3.1 to 2.15.0** (564c272)
- **Merge remote-tracking branch 'origin/dev' into phone/impl/scene_summary_in_quicklaunch** (03e98f5)
- **Reword the pairing secret error, it is not only a phone** (77f1af5)
- **Optimize imports** (10eac00)
- **Combo: log a history gap at WARN level** (3c6c1f3)
- **Show bolus progress on every platform, not only Android** (37270cb)
- **Mark the setup wizard processed when it is closed** (e86edc6)
- **Give iOS simulator builds entitlements, so the Keychain works** (bc1db7e)
- **Refuse a pairing whose secret cannot be stored** (34f82ad)
- **- removed empty else** (052f4d2)
- **- added button that got lost with merge** (e608109)
- **SmsCommunicator: run the remaining commands through WizardBolusExecutor** (4ed4346)
- **SmsCommunicator: apply the PROFILE switch through WizardBolusExecutor** (3984707)
- **Desktop: keep the generated .icns out of the resources root** (e58df7f)
- **BolusWizard: drop the QuickWizard eCarbs path the executor replaced** (643df52)
- **QuickWizard: re-check the stored eCarbs amount against the carbs limit** (7425a73)
- **Wizard: do not apply the stored percentage on the first read** (e39a90b)
- **Carbs dialog: the bolus reminder setting takes effect at once** (bbef55f)
- **Wizard: dismissing the settings sheet no longer resets the percentage** (628989e)
- **SourceSensor: one entry per sensor, and parse what senders really send** (211d098)
- **Database: share the migrations between platforms** (1fdf0b6)
- **Gradle: do not pin the daemon JVM to a JetBrains build** (a343e32)
- **Automation: do not write back a list that did not load cleanly (#5214)** (a734ad9)
- **Cleanup: limit how far the cutoff moves per pass (#5210)** (322b37d)
- **IOB cache: read under the lock (#5211)** (24cf116)
- **Dana: set enacted on a delivered bolus** (a548987)
- **Insight: bounded wait in writeAndWait (#5209)** (619019e)
- **Bounded driver waits and stuck command alarm (#5209)** (c6fd4de)
- **Command queue: completion instead of Callback, coroutine status refresh in PumpPluginAbstract** (d598e2d)
- **Scenes: keep the banner follow-up in step with the catalog** (4805bfb)
- **Merge pull request #5164 from premnirmal/omnipod-abstract-common-logic** (5d15deb)
- **Merge pull request #5189 from nightscout/dana-i2** (b7043f2)
- **Overview: show the default running mode on the master again** (3560732)
- **Merge branch 'dev' into omnipod-abstract-common-logic** (7470a56)
- **Open the setup wizard on first run on iOS, as Android does** (6406a10)
- **Show an unknown running mode as unknown, not as a disabled loop** (02877a5)
- **Keep screen on works on iOS too** (2dd91cf)
- **Version 4.0.0-dev-d** (24507bb)
- **Correct the iOS notes on scene expiry and the Nightscout socket** (83cc66d)
- **Build the iOS Keychain queries as real CFDictionaries, so anything is ever stored** (74aae7d)
- **Show hours again under minutes fields** (e86d80d)
- **Keep the basal and the profile in the notification on Samsung** (c60279f)
- **Concentration: report bolusDelivered in IU, not in pump units** (9d852f9)
- **StatusViewModelTest: wait until the last refresh is back on Main** (b36d3fe)
- **Loop: refuse an open loop accept while paused or when too old** (3f61875)
- **Command queue: a dropped bolus does not save its carbs** (e4a833f)
- **Automation: unknown trigger never fires** (37fdc86)
- **Client control: save a preference slider only when the finger is lifted** (4c5ac13)
- **Scenes: show the same summary in QuickLaunch and name the follow-up** (d175480)
- **Merge pull request #5176 from nl-ruud/dash-pdm-error-codes** (fcb4b5b)
- **Merge pull request #5180 from nl-ruud/omnipod-drift-compensation-always-on** (df4167e)
- **Merge pull request #5122 from premnirmal/live-updates** (6cf90ef)
- **Remove plugin short names, rename Omnipod plugins** (f69a919)
- **Merge pull request #5195 from nightscout/dependabot/gradle/dev/org.apache.commons-commons-lang3-3.21.0** (c3b7a5c)
- **Merge pull request #5196 from nightscout/dependabot/gradle/dev/com.google.guava-guava-33.7.2-jre** (0539879)
- **Merge pull request #5197 from nightscout/dependabot/gradle/dev/joda-time-joda-time-2.15.0** (965a07b)
- **Bump joda-time:joda-time from 2.14.4 to 2.15.0** (beb29a9)
- **Bump com.google.guava:guava from 33.7.1-jre to 33.7.2-jre** (b2a021a)
- **Merged dev, resolved conflicts** (2b50e46)
- **Bump org.apache.commons:commons-lang3 from 3.20.0 to 3.21.0** (b57ff71)
- **Remove the basal data cache of getBasalData** (d718bf7)
- **Use AAPS instead of AndroidAPS in plugin error messages** (6c441a6)
- **Set the profile in the pump again when the pump has another basal** (25265df)
- **Recalculate IOB from scratch after a time zone change** (0c1a56e)
- **Load every entry running at the start of a range lookup** (09ea965)
- **Do not lose a watch update event right after the start** (3b9b378)
- **Use the timestamp index for range queries also without statistics** (4624734)
- **Update the persistent notification once per burst of events** (3067b35)
- **Copy the Tidepool request body only when it is logged** (66475b6)
- **Send the watch one full update per burst of events** (8592b7f)
- **Read temporary basals once per TDD interval** (87eac6c)
- **Calculate the time of day without zone rules on most days** (d18d632)
- **Stop SQLite from reading whole tables for current entries** (71980c5)
- **Remove getTemporaryBasalsActiveBetweenTimeAndTime** (0d2de17)
- **Read temporary basals and targets once per graph range** (539c0ac)
- **Merge branch 'dev' into live-updates** (b50cc4e)
- **Omnipod Dash: show PDM-style fault notification instead of raw alarm descriptions** (94b9a9e)
- **Use AAPS instead of AndroidAPS in code comments** (41828df)
- **Keep the notification channel IDs, rename only what is shown** (65b0505)
- **Update strings** (36b48b9)
- **Update strings** (1b583b8)
- **Log the wait for a running calculation under WORKER** (38bdb02)
- **Let a running calculation finish before a history change restarts it** (b1951f5)
- **Drop the pump service reference when a pump plugin stops** (5796e64)
- **Drop the Dana RS/i service reference when the plugin stops** (6a0f64b)
- **Use the stored daily totals for the cannula insulin usage** (766eb4a)
- **Read the extended boluses once per TDD interval** (29e923a)
- **Dash: name the bond switch for what it does** (282e50a)
- **- SiteLocationPicker exctended with compact view, by default normal view (so nothing changes for existing implementations), with two additional parameters compactView (with value true you enable it) and then is second parameter which defines lower view (how many site items you see). It set to 80 now which is about 3 lines. Can be overriden as it is modifier object...** (06dd347)
- **Finish the Dana pair wizard off the main thread** (9742475)
- **Removed semaphore file for Omnipod Drift compensation** (d776a42)
- **Skip Dana RS/i dates that are not valid instead of crashing** (50cbb42)
- **Run the Dana pair wizard finish only once** (6336b9d)
- **Log the Dana profile change total basal with the right unit** (72d2608)
- **Show readable fault descriptions and a PDM-style Ref code for Dash pod faults** (f632f0e)
- **Read the Dana-i review history time as UTC** (21a624e)
- **Round the Dana RS/i step bolus amount instead of cutting it off** (b692182)
- **Show the right text for Dana RS/i low battery and shutdown alarms** (b1c1ba4)
- **Wait for the Bluetooth bond before the Dana pump check** (7188f48)
- **Keep the bolus info of a stopped Dana RS/i bolus** (b2791ca)
- **Dash: move the bond switch to Advanced and say when to use it** (ecfdc2b)
- **Remove merge manifest changes** (c1219fe)
- **Merge pull request #5156 from t1dude/feat/glucose-widget** (6deea75)
- **Merge remote-tracking branch 'origin/dev' into copilot/merge-dev-into-branch** (c1fa0d2)
- **Merge branch 'dev' into omnipod-abstract-common-logic** (32a41cb)
- **Read the window carbs once per pass instead of once per bucket** (550605e)
- **Keep the bucketing mode flag across clone** (ca27227)
- **Read bgReadings once per pass instead of once per element** (57d91ee)
- **Make the published autosens store volatile** (ca35760)
- **Pin how far the newest bucket can lag the newest reading** (3e62fa9)
- **Snap to the grid in the right direction for times before the anchor** (ef87883)
- **Seed the anchor on the fallback path too** (5a27509)
- **Merge branch 'dev' of https://github.com/nightscout/AndroidAPS into dev** (16d8519)
- **Merge pull request #5159 from nightscout/dependabot/gradle/dev/metro-1.4.5** (c6de64e)
- **Tests: use real English text in the sensitivity and wear scene tests** (64c37eb)
- **Bump metro from 1.4.4 to 1.4.5** (2f3a76d)
- **Carelevo: remove dead alarm screen strings with CDATA** (a77b461)
- **Merge pull request #5154 from nightscout/dependabot/gradle/dev/composeMultiplatform-1.12.1** (9881a56)
- **Merge pull request #5157 from nightscout/dependabot/gradle/dev/wearCompose-1.7.0** (67cc8e6)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/nightscout/AndroidAPS?utm_source=github-action)._