Changelog

New features, improvements, and fixes.

Shipping activity

3,218 contributions in the last year

NEW

Share Your Charts and Workout Stories 🎉

  • •📤 Share beautiful chart images from glucose, Apple Health, Withings, WHOOP, Oura, and workout views.
  • •🏋️ Workout sessions can now be shared as full public pages with the important charts, maps, zones, metrics, and session details preserved.
  • •📱 Story-style workout images are built for phone sharing, so they fit naturally on Instagram, Facebook, and group chats.
  • •🔒 Shared workout page links are private until you create them, can be turned off from the share modal, and show a friendly VitalTrends CTA when disabled.
IMPROVED

Control Center Recovery Colors

  • •Fixed the Control Center recovery/readiness color bands so WHOOP recovery scores of 67% and higher are classified and rendered as green.
  • •Aligned the recovery ruler visual stops with the displayed 34/67 score thresholds.
NEW

Withings Sleep Analyzer and Withings Dashboard

  • •Added a dedicated Withings page for body composition, vitals, and Sleep Analyzer trends.
  • •Withings Sleep Analyzer summaries now sync for compatible devices, including sleep score, stages, sleeping heart rate, respiratory rate, snoring, breathing disturbances, and apnea-hypopnea index.
  • •Withings insights now appear in Control Center when matching data is available.
  • •The REST API now includes paginated Withings Sleep Analyzer rows and expanded Withings measurement fields for compatible devices.
NEW

Glucose API for CGM Data

  • •CGM glucose data is now available through the VitalTrends REST API when blood glucose samples are synced from Apple Health.
  • •Added a glucose analytics endpoint with average glucose, time in range, variability, AGP, daily aggregates, short-range raw points, and day-explorer context.
  • •Added a paginated raw glucose readings endpoint so scripts, notebooks, and AI tools can inspect individual CGM samples.
  • •Updated public API, Apple Health, and glucose documentation with the new routes and data-source notes.
IMPROVED

Platform, Docs, and Operations Updates

  • •Strava connection entry points have been removed from the connection UI while the related background jobs and webhook paths continue to be hardened.
  • •Login and routing now enforce the canonical host more consistently, reducing duplicate-host session and redirect edge cases.
  • •Added per-user production database sync tooling, including make db-sync-users and remote sync scripts for targeted support work.
  • •Expanded public and internal documentation for workouts, MCP, WHOOP, the API, architecture, and deployment.
  • •Added database optimization research, baseline captures, benchmark results, and production migration notes to guide future performance work.
IMPROVED

Developer Workflow and Maintenance

  • •Added a CI-parity make ci gate, GitHub Actions workflow, refreshed Mago baselines, and a tracked pre-push hook so merge readiness is checked consistently.
  • •Consolidated DTO classes under the DataTransferObjects namespace to keep backend structure consistent.
  • •Updated dependencies and fixed container git safe-directory handling for smoother local and Docker-based development.
  • •Added pitch deck context, architecture notes, and scheduled task metadata so planning and operational context live with the repo.
  • •Expanded test coverage across admin, auth, billing, Apple Health, Control Center, glucose, Oura, Strava, sport icons, and unified workouts.
NEW

Control Center Beta

  • •Control Center is now the home page for logged-in members, bringing your connected devices into one daily view while it remains in beta.
  • •It is designed to answer the practical daily questions: how ready you look today, what your data supports doing next, which sources agree or disagree, and which connections need attention.
  • •Every cross-device claim is cached, method-versioned, and labeled with its source data so you can see what was used instead of treating the summary as a black box.
  • •The original WHOOP, Oura, Apple Health, Withings, Hevy, and workout pages remain available from the navigation as deeper drill-down views while the new experience is calibrated.
IMPROVED

Accuracy and reliability improvements

  • •Apple Health workouts now update correctly when re-synced, so route maps, elevation and other metrics always reflect the latest data from your iPhone.
  • •Fixed workout route maps not appearing for some Apple Watch workouts.
  • •Fixed Apple Health sleep totals being overcounted on nights when a device recorded both a summary and detailed sleep stages.
  • •Improved WHOOP and Withings sync reliability, so connections recover on their own instead of stalling.
  • •Readiness and insights date ranges are now accurate for members in timezones outside UTC.
  • •Hevy volume trends now group workouts by your local date, so a late-evening session lands on the right day, week or month.
  • •Apple Health pairing codes now expire 15 minutes after they're generated, with a live countdown and one-tap regeneration.
IMPROVED

Oura Dashboard Redesign

  • •Sleep, Readiness and Temperature charts now show shaded zones and a line at your own baseline, so you can read where you stand at a glance without checking the numbers.
  • •Days with no Oura reading now appear as a gap instead of a misleading drop to zero, and score charts use a fixed, honest scale so normal night-to-night variation stays readable.
  • •Hovering the Sleep Score or Readiness chart now highlights the same day on the other, making the link between last night and today easy to follow.
  • •Sleep Sessions are now grouped by day, with your main sleep leading each row and naps folded in beside it, replacing the long per-session list.
  • •Added a plain-language daily summary of what your data leans toward, plus an info tooltip on every chart explaining what it measures and how to read a good or poor value.
  • •Fixed the Distance and Targets chart so distance lines are no longer crushed by unrelated metrics, and Activity Time now reads in hours and minutes.
IMPROVED

WHOOP daily API now includes today

  • •The WHOOP daily API now returns the current local-day row when WHOOP has live in-progress cycle data.
  • •A new additive is_partial field marks rows that are still open or not fully scored, so existing API clients keep working while newer clients can handle in-progress data explicitly.
  • •Closed historical rows keep the existing response shape and legacy date behavior, including cycle_start_date and cycle_end_date for explicit local boundaries.