Skip to content

Migrate charts to Swift Charts#703

Closed
bjorkert wants to merge 9 commits into
devfrom
swift-charts-migration-v2
Closed

Migrate charts to Swift Charts#703
bjorkert wants to merge 9 commits into
devfrom
swift-charts-migration-v2

Conversation

@bjorkert

@bjorkert bjorkert commented Jul 12, 2026

Copy link
Copy Markdown
Member

Replaces the danielgindi Charts and SwiftAlgorithms CocoaPods with native Swift Charts.

  • Rebuilds the BG graph, treatments, and prediction cone on Swift Charts with a custom pan/zoom/inspect interaction layer.
  • Ports the stats views (AGP, TIR, GRI) off the old Charts dependency.
  • Drops the Charts and SwiftAlgorithms pods and their generated support files.

Chart appearance and behaviour are kept at parity with the previous implementation.

bjorkert added 7 commits July 10, 2026 12:10
Replace the danielgindi Charts CocoaPod with Apple Swift Charts across the
app (minimum deployment target 16.6 -> 17.0):

- New LoopFollow/Charts/: BGChartModel (chart data, rebuilt once per refresh
  cycle), BGChartView (main + small overview chart), BGChartStubs (shims for
  the legacy update*Graph() call sites)
- Main chart interaction: content is laid out once per data/zoom change onto
  a wide canvas; panning is a pure offset transform with momentum, pinch
  zooms with a live preview committed on a geometric grid, double-tap cycles
  zoom presets, tap selects marks, hold-and-drag scrubs a selection
- Follow-latest keeps "now" at 70% of the window, pauses while navigating
  history and returns after 5 idle minutes; jump-to-now button when paused
- BG line renders one series per color run; marks are sliced to a render
  window around the viewport
- Stats charts (AGP/TIR/GRI + stats pie) migrated to Swift Charts
- Preserves cone of uncertainty (#605), yesterday BG line (#665),
  backend-specific override/temp target colors (#668), BG display clamp (#600)
Resolves the chart-library migration against upstream graph work:
- Port #653 (cap prediction cone to shortest predBG array) into
  BGChartStubs.updateOpenAPSPredictionDisplay
- Drop the Charts-pod privacy manifest from #666 (the pod is removed here)
- Keep the deletion of the legacy Graphs.swift
- Selection pills word-wrap at a max width instead of running off screen,
  capped at 10 lines; placement uses the measured pill size so the pill
  always sits fully on screen, flipping above the anchor when needed
- Every pill ends with the reading/treatment time again (12/24-hour and
  graph time zone aware), as the legacy chart did
- Notes containing legacy remote-command JSON payloads render the message
  plus a compact action summary instead of raw JSON
- Prediction cone fill restored to system blue at 0.4 opacity, matching
  the legacy ConeOfUncertaintyRenderer
…s from settings

- Spread crowded boluses/carbs/SMBs via drawnDate instead of shifting
  every mark by a constant; isolated treatments draw at their true time
- End the x domain at now + Hours of Prediction (15 min floor) instead
  of a fixed 3 h, so the chart no longer shows empty future space and
  no longer clips predictions beyond 3 h
- Color BG dots and place the low/high lines from effectiveThresholds()
  so TIR/TITR range modes match the stats and header
- Drop the now-unused findNextCarbTime/findNextBolusTime helpers
@bjorkert

Copy link
Copy Markdown
Member Author

Superseded by #704 (same change, single commit).

@bjorkert bjorkert closed this Jul 12, 2026
@bjorkert bjorkert deleted the swift-charts-migration-v2 branch July 12, 2026 14:45
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.

1 participant