Skip to content

Merge dev into next-dev - #228

Merged
ps2 merged 10 commits into
next-devfrom
merge-dev-into-next-dev
Oct 22, 2026
Merged

ps2 merged 10 commits into
next-devfrom
merge-dev-into-next-dev

Conversation

@ps2

@ps2 ps2 commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Merges dev into next-dev so that LoopKit/LoopWorkspace#454 (next-dev → dev) no longer conflicts and drops nothing from dev.

Brings in dev's Lokalise translation updates. The other conflicts were next-dev's sensor-issue tracking and LoopAlgorithm import against dev's older code; next-dev's side is kept. Translation files are merged per string and per language: every translation change from each side is kept, and no string changed differently on both sides.

Built as part of the whole workspace (LoopWorkspace scheme, iOS Simulator) with every submodule at its merge commit.

Please merge with "Create a merge commit" (not squash or rebase); otherwise the merge history is lost and dev will conflict with next-dev again.

marionbarker and others added 10 commits May 12, 2026 16:13
Updated translations from lokalise on Tue May 12 15:47:31 PDT 2026
… to LoopKit (#215)

* Surface G5/G6 sensor lifecycle; detect Anubis-modded G6

- Implement cgmStatusHighlight and cgmLifecycleProgress on G5/G6 so
  consumers can render sensor warmup, calibration state, sensor and
  session failure, and remaining-time UI. Status is driven by
  Glucose.state (CalibrationState); lifecycle is driven by
  sessionStartDate / sessionExpDate from the transmitter.

- Parse transmitterExpiryInDays from the version-rx frame (bytes 13-14)
  and expose isAnubis on G6CGMManager. Stock G6 reports a 90-day
  lifetime; Anubis-modded G6 reports 180 (heuristic borrowed from
  xDrip4iOS).

- Active-mode connect reads the version frame after glucose; passive
  mode catches it via the control-response listener. The field is
  persisted on TransmitterManagerState so isAnubis survives an app
  restart.

- The lifecycle ring fills against the actual warmup window: 2 h for
  stock G5/G6, 50 min for Anubis-modded G6.

* Sync CGMBLEKitUI xcstrings for Anubis-mod sensor lifecycle strings

* Add Anubis detection tests covering version-rx parsing + manager state round-trip

* Add sensor life configuration for Anubis transmitters  (#8)

* Add sensor life configuration for Anubis transmitters

Implements user-configurable sensor session length (10–60 days) for Anubis-modded transmitters, while maintaining stock 10-day sessions for standard G5/G6 transmitters.

Key changes:
- Transmitter version frame detection identifies Anubis modification (180-day expiry)
- sessionExpDate now updated dynamically based on configured sensor life
- Warmup period adjusted for Anubis (50 min) vs stock (2 h)
- Settings UI provides wheel picker for sensor life selection (10–60 days)
- State persistence for selected sensor life across app sessions

* Hide session ring until final 48 hours

Add a guard statement to keep the session progress ring hidden until the transmitter session enters its final 48 hours. This improves the user experience by reducing visual clutter during the early stages of a session.

* Correct ring to lifecycle

---------

Co-authored-by: Marion Barker <19607791+marionbarker@users.noreply.github.com>
Co-authored-by: Mike Plante <82073483+MikePlante1@users.noreply.github.com>
# Conflicts:
#	CGMBLEKit.xcodeproj/project.pbxproj
#	CGMBLEKit/TransmitterManagerState.swift
#	CGMBLEKitUI/Localizable.xcstrings
#	CGMBLEKitUI/TransmitterSettingsViewController.swift
@ps2
ps2 merged commit 4eee512 into next-dev Oct 22, 2026
@ps2
ps2 deleted the merge-dev-into-next-dev branch October 22, 2026 23:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants