Skip to content

Plugin picker sheet with manufacturer groups and subtitles - #2572

Merged
ps2 merged 3 commits into
next-devfrom
plugin-picker-subtitle
Oct 13, 2026
Merged

ps2 merged 3 commits into
next-devfrom
plugin-picker-subtitle

Conversation

@ps2

@ps2 ps2 commented Oct 13, 2026

Copy link
Copy Markdown
Collaborator

Builds on #2490 by @Camji55 and includes its commit, merged onto the current next-dev. It replaces that PR. It depends on LoopKit/LoopKit#644.

Changes

  • From Plugin Picker Sheet #2490: the plugin action sheets are replaced by a full-screen PluginPickerView. It shows an icon for each plugin, groups devices by manufacturer and services by category, and lists Remote and Simulator groups after the hardware.
  • New here:
    • PluginManager reads com.loopkit.Loop.PluginSubtitle into the descriptors. The pump, CGM and service simulators get their own subtitles.
    • Picker rows follow Trio's device picker:
      • A headline title with the subtitle in secondary text below it, and a little more vertical padding.
      • Each row reads as one element in VoiceOver.
      • Template icons are tinted with the accent colour, so they don't render as black blocks.

The pump-as-CGM entry (a MiniMed with an integrated CGM) has no subtitle, because the pump's model list would be wrong there.

Plugin subtitles

Plugin Subtitle
Omnipod Classic (with RileyLink), DASH, 5
MiniMed x15, x22, x23, x54 · requires RileyLink
Medtrum Nano 200U, 300U
FreeStyle Libre 1 / 2 / 2+ Libre 1 via MiaoMiao or Bubble, EU Libre 2 direct
FreeStyle Libre 3 / 3+ Connects directly to the sensor
Dexcom Share Readings from Dexcom Share servers
Nightscout Remote CGM Readings from your Nightscout site
Nightscout Upload data and receive remote commands
Tidepool Upload data to your Tidepool account
Loggly Send diagnostic logs to Loggly
Amplitude, Mixpanel Send app usage analytics

Dexcom G5/G6/G7 and Eversense have no subtitle, because their titles already name the models. The FreeStyle Libre Demo moves from Abbott to the Simulator group.

Testing

The full LoopWorkspace scheme builds for the Simulator. I reviewed the pump, CGM and service pickers on an iPhone 12 mini Simulator (iOS 26.5) in light and dark mode. I haven't run the unit tests locally; the LoopWorkspace PR's CI runs them.

Camji55 and others added 3 commits August 11, 2026 17:38
PluginManager reads com.loopkit.Loop.PluginSubtitle into the pump, CGM and service descriptors, and the simulators get subtitles of their own.

Picker rows put the subtitle in secondary text under a headline title, combine each row for VoiceOver, and tint template icons with the accent color.
@ps2
ps2 merged commit e8d833c into next-dev Oct 13, 2026
@ps2 ps2 mentioned this pull request Oct 14, 2026
marionbarker pushed a commit to loopandlearn/customization that referenced this pull request Oct 14, 2026
Loop next-dev PR LoopKit/Loop#2572 (plugin picker sheet with manufacturer
groups and subtitles) reworked SettingsView, so nextdev_basal_lock.patch
stopped applying. Rebase the SettingsView hunks onto the plugin picker and
move the old patch to basal_lock/archive/nextdev_basal_lock_20d597f.patch,
named for the last Loop commit it applied to.

The rebased patch applies on top of nextdev_profiles.patch and vice versa,
so no next-dev combination patches are needed.
marionbarker pushed a commit to loopandlearn/customization that referenced this pull request Oct 14, 2026
* basal_lock: update nextdev patch for Loop plugin picker

Loop next-dev PR LoopKit/Loop#2572 (plugin picker sheet with manufacturer
groups and subtitles) reworked SettingsView, so nextdev_basal_lock.patch
stopped applying. Rebase the SettingsView hunks onto the plugin picker and
move the old patch to basal_lock/archive/nextdev_basal_lock_20d597f.patch,
named for the last Loop commit it applied to.

The rebased patch applies on top of nextdev_profiles.patch and vice versa,
so no next-dev combination patches are needed.

* xdrip_cgm: update nextdev patch for current next-dev

Next-dev replaced the LibreCRKit submodule with RoundWhiteDiscKit, so the
nextdev patch no longer applied and the main/dev patch was used instead,
which fails to build on next-dev. The patch makes the same change with
updated context. The old patch is moved to the archive, named for the last
LoopWorkspace commit it applied to.
marionbarker pushed a commit to loopandlearn/customization that referenced this pull request Oct 14, 2026
* basal_lock: update nextdev patch for Loop plugin picker

Loop next-dev PR LoopKit/Loop#2572 (plugin picker sheet with manufacturer
groups and subtitles) reworked SettingsView, so nextdev_basal_lock.patch
stopped applying. Rebase the SettingsView hunks onto the plugin picker and
move the old patch to basal_lock/archive/nextdev_basal_lock_20d597f.patch,
named for the last Loop commit it applied to.

The rebased patch applies on top of nextdev_profiles.patch and vice versa,
so no next-dev combination patches are needed.

* Add .loopcustomization marker to every active patch

LoopKit/Loop#2577 records each <identifier>.loopcustomization file found
at the workspace root or a submodule root in BuildDetails.plist, the
diagnostic report and the analytics instantiation event.

Every active patch now creates an empty <folder>.loopcustomization at the
LoopWorkspace root, named after its customization folder. Combination
patches carry only the marker of their own folder. Each patch is applied
and reverted as a unit, so the marker follows the customization, and the
distinct file names keep patches from conflicting with each other.

The unmarked versions are kept as archive/<name>_nomarker.patch so that
workspaces with an unmarked patch applied show "Update available".

* xdrip_cgm: update nextdev patch for current next-dev

Next-dev replaced the LibreCRKit submodule with RoundWhiteDiscKit, so the
nextdev patch no longer applied and the main/dev patch was used instead,
which fails to build on next-dev. The patch makes the same change with
updated context. The old patch is moved to the archive, named for the last
LoopWorkspace commit it applied to.
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.

2 participants