January → July 2026 · drawn from the project's commit history · page updated 30 July 2026
A milestone map of how Glide was built: the iOS app, the AWS backend, the
science pages, family sharing, privacy hardening, meal AI, the My Lab
insights feed, the nighttime call alarm, a bedside night mode, Glide
Premium — and on July 27, the first build ever submitted to Apple for
App Store review.
Jan 24–31iOS + Lambda foundation
The first pulse
Glide started as a tight loop: fetch glucose values, keep the latest
reading fresh, cache it locally, and make the status glanceable.
- Initial commit
- Migrate to AWS Lambda backend for glucose data
- Add SwiftData persistence for offline support and incremental fetches
- Add trend data, auto-refresh, and status header to glucose display
May 22–27Ops, charts, events
Dashboard wakes up
The web surface grew from dashboard experiments into monitoring,
settings, bolus/event controls, and the first My Lab pieces.
- Add bolus buttons, CloudWatch metrics, and monitoring stats
- Add event deletion + dashboard parity with iOS app
- Add My Lab experiments
May 25–30Photos, estimates, offline sync
Carbify era
Meal photos became a real workflow: camera and library picker, AI carb
estimates, text estimates, replay, local outbox sync, and multi-device
tombstones.
- Carbify: photo-based meal carb estimation
- Carbify: server-side carb estimates via Google Gemini
- Offline-first events: local cache, write outbox, idempotent sync
- Multi-device event deletes: server tombstones
Jun 1–5Science page + multi-account path
Forecasts and families
Forecasting moved from raw prediction into a documented science
surface, while the identity model became family-ready with Cognito and
profile edges.
- Forecast v0.2: de-bias the projection against real history
- Dashboard: add Science page
- multi-user phase 0: identity module + new tables
- multi-user phase 3: invite codes backend
Jun 5–12Auth lockdown, PHI hygiene, My Lab AI
Privacy hardening sprint
The stack tightened around real-world safety: token-only APIs,
sign-out wipes, no glucose values in logs, EXIF stripping, and AI meal
grouping for My Lab.
- API auth lockdown: Cognito-only gate everywhere, kill api-key relics
- Meal-photo ingest: bake orientation + strip ALL EXIF
- My Lab: AI meal grouping
Jun 12–16Datasets, scorecards, model selection
The science lab gets serious
Evaluation became a product system: dataset pages, result matrices,
ground-truth audits, and a production switch to Gemini 3.5 after it won
the scorecard.
- Science: datasets page + dataset linter
- Science matrix: complete gemini-3.5-flash row
- Prod: switch the meal estimator to gemini-3.5-flash
- meal-estimator: clean per-serving ground truth
Jun 15–18Rename complete + deletion
Account is canonical
The identity vocabulary settled: account/profile everywhere, a
migrated Cognito pool, and in-app account deletion.
- rename: user → account across data, code, and Cognito pool
- feat: in-app account deletion
- Followers API: drop legacy user_id aliases
Jun 16–18APNs, USDA, settings
Notifications, barcode, polish
The iOS app filled in the expected edges: push alert infrastructure,
polished settings, square meal camera framing, and exact packaged-food
lookup.
- notifications: APNs setup, device registration
- notifications: per-account config + signal-lost/recovery alerts
- settings: reorganize into a drill-down hub with summaries
- Barcode → USDA packaged-food carb lookup
Jun 17–22Logo prototypes to live Metal
Water-G personality
The product picked up a visual identity: animated water-G prototypes,
generated texture bands, a faceted tube mesh, and a live iOS header
logo.
- logo: animated 3D water-G mesh prototype
- logo: water material — env reflection, depth tint, caustics
- iOS: live animated water-G logo in the header
- iOS water-G logo: faceted 7-sided tube, twist animation
Jun 22–27Proactive insights feed
My Lab learns to teach
My Lab stopped being a manual experiment tool and became a feed: it
clusters logged meals by food and time of day, isolates clean trials,
and surfaces pooled time-in-range so patterns come to you.
- My Lab: proactive insights feed — meal-anchored trials + clusters
- My Lab insights: meal-identity labels from AI meal grouping
- My Lab: isolation-based trial model + feed cleanup
- Meal grouping: fix mislabeling (cereal→corn); add eval
Jun 23–26Privacy, consent, COPPA
Launch readiness
Groundwork for a public release: privacy + terms pages, in-app
AI-estimate consent, a 13+ age gate at signup, encryption of Dexcom
passwords at rest, and on-device file protection for the health cache.
- Launch prep: privacy + terms pages, in-app AI-estimate consent
- iOS: 13+ date-of-birth age gate at account creation (COPPA)
- Encrypt Dexcom password at rest with KMS
- iOS: file protection on the health cache + pending meal photos
Jun 24–30Nighttime call alarm
The 3am safety net
A phone call — not a silenceable banner — for nighttime lows and
signal loss. Ring-only calls, in-app phone verification, and an
Emergency-Bypass helper so the ring cuts through Do Not Disturb.
- Nighttime low alarm: ring-only phone calls
- Nighttime call alarm: iOS Alerts settings + phone verification
- Server: nighttime critical wake-up alarm endpoints
- Alerts: post-save Emergency Bypass helper sheet
Jun 25–30Appearance, logo, feel
Dark mode & finishing touches
A coat of polish: light/dark/system appearance, the rib-sweep mono-G
logo across app and web, a rubber-band pull-to-refresh haptic, offline
meal-photo caching, and a more legible glucose trace.
- Dark mode: light/dark/system appearance setting (system default)
- iOS + web: rib-sweep mono-G logo (port from prototype)
- Pull-to-refresh: continuous rubber-band haptic that builds
- iOS: cache downloaded meal photos on disk (offline + instant re-open)
Jul 1–2Eval suite + hillclimb
The grouper earns its numbers
The meal grouper got the same treatment as the estimator: pairwise
clustering metrics, synthetic suites, human-reviewed ground truth, and a
hillclimb loop that picked the production model — all documented on a
new Science page.
- Grouper eval: pairwise clustering metrics + churn guards
- Grouper eval: synthetic suites (granularity/confusables/brand/scale/recovery)
- Grouper hillclimb: adopt grouper_v2 × claude-haiku-4.5
- Science: add Meal grouper page — eval design, hillclimb record, adopted config
Jul 1–2Contrastive history tips
Meal tips come home
Logging a meal now answers “what happened last time?”: a
match-mode classifier, a pure-logic tip engine, a post-save Home card
with evidence rows, and one server-persisted feed grouping so every
device shares the same meal vocabulary.
- Meal grouping: add match mode for meal-time history tips
- My Lab: meal-tip engine — what happened last time you ate this
- Meal-time tips v2: move the tip to Home, post-save
- Feed meal grouping: server-persisted per profile, automatic post-save trigger
Jul 1–3Omnipod import + hardening
Audit week
Bolus import from a photo of the pump's history screen landed, then a
full-stack audit swept the foundations: the pickled Dexcom session
became JSON, terminal errors stopped poisoning the offline queue, and
network hiccups no longer masquerade as a dead session.
- Add Omnipod bolus import from a pump-history photo
- Full-stack codebase audit
- Fetcher: replace pickled Dexcom session with JSON session state
- Event sync: stop terminal 4xx from poisoning the offline queue
Jul 13–14Trial ledger + ICR history
Dosing gets a ledger
My Lab insights simplified to meal-only clusters and gained a
trial-ledger chart style with absolute glucose guide lines, while the
Home tip grew an ICR dose-history dot strip — plus hard network
deadlines on every refresh path.
- My Lab: trial ledger as a third trial-chart style
- Home tip: ICR dose history as a dot strip
- My Lab: cluster insights by meal category only (drop the time-of-day axis)
- iOS: bound every refresh-path request with hard network deadlines
Jul 15Bedside glance view
Night mode
Tap the glucose readout at night and the app becomes a bedside
display: a clock, the big BG number, a ghost sparkline, burn-in drift,
and a keep-awake override.
- Night mode: bedside glance view (clock, stale line, big BG, ghost sparkline, burn-in drift)
- Night mode: keep-awake override while active
- Night mode: auto-exit schedule (first 7am after entry, 12h backstop)
Jul 16–17Subscriptions + paywall
Glide Premium
A per-profile subscription arrived end to end in two days: StoreKit 2
purchases, pure-Python receipt verification against a pinned Apple root,
the App Store webhook with monotonic entitlements, server-side gates on
the AI bundle, and a paywall with an annual-default trial.
- Premium: receipt verification against a pinned Apple root
- Premium: one subscription covers everyone on a profile
- Premium: App Store webhook — renewals, grace periods, refunds
- Premium iOS: paywall (annual default, restore, legal) + Settings subscription row
Jul 20–21Dexcom hardening + Insights trend
Trust the connection
Bad Dexcom credentials stopped failing silently: validated at connect
time, backed off on repeated rejections, and surfaced in-app. Insights
gained a 6-month time-in-range + lows trend card on a local-first
180-day history.
- Dexcom: validate credentials at connect time — bad creds are rejected inline, never stored
- Dexcom worker: back off failed sign-ins (5m/30m/1h) and record auth-failure state
- iOS Insights: TIR + lows trend card, 6m period option
- Onboarding paywall: present full-screen after the first chart renders
Jul 22–24Manual run: every scenario
The test gauntlet
Three days of scripted manual testing across the premium and
onboarding flows: every scenario passed, eleven bugs were found and
fixed along the way — including a live production outage in follower
onboarding caught mid-run — and My Lab lost its last manual button as
experiment grouping went automatic.
- Test plan: final results log — every scenario passed
- Subscription re-link: “Use it here” never fired — alert dismissal cleared the receipt first
- My Lab: custom experiments group automatically — no more Re-group button
- Carbify: allow logging 0-carb meals (cheese, eggs)
Jul 25–27Last-mile hardening
Submission sprint
The final polish before Apple: Dexcom session state encrypted at rest
and phone numbers redacted from logs, night mode's exit made purely the
user's choice (tap or swipe), one formatting seam for every glucose
readout, incremental local-first sync, and the privacy manifest +
VoiceOver + paywall-terms pass.
- Encrypt Dexcom session state at rest + redact phones from logs
- Night mode: remove the auto-exit entirely — exit is the user's choice
- iOS local-first optimizations: incremental sync + 180d My Lab
- App Store submission readiness: privacy manifest, paywall terms, VoiceOver
🎉 Milestone: submitted to Apple
Jul 27Build 24 → App Review
First App Store submission
Six months after the first commit, Glide went to Apple: build 24
submitted for App Store review — the app's first submission ever —
opening the door to the diabetes-camp TestFlight beta, with review notes
prepared field by field and the support page live at
glidebg.com/support.
- Build 24 submitted to Beta App Review
- Review notes: plain copy/paste blocks per App Store Connect field
- Review notes: preempt the Dexcom-credentials question
- Support page live at glidebg.com/support