Skip to content

OpenVitals 2.3.0

github-actions[bot] edited this page Nov 9, 2026 · 1 revision

Released 2026-07-22.

The biggest release so far. OpenVitals can now read a Garmin watch directly over Bluetooth — no Garmin account, no Connect app — and copy your health records to another phone the same way. Body Energy gets a plot on your home screen, sleep gets a night window you set yourself, and the Calories year view that used to take half a minute now opens straight away.

Added

  • Garmin watch sync. Pair a Garmin watch and copy what it recorded straight off the wrist over Bluetooth. Sleep, heart rate, HRV, VO2 max, SpO2, respiration, steps, distance and workouts go to Health Connect; the measures Health Connect has no place for — stress, Body Battery, intensity minutes, training readiness, recovery time and training load — are kept in the app and shown on a Watch data screen. Body Battery from the watch also teaches the app's own Body Energy calibration. Nothing goes through Garmin's servers, and the app still has no internet permission.
  • Your watch's alarms and settings, from your phone. Switch alarms on and off, retime, rename, add and delete them, and browse the watch's own settings menus — all read live from the watch, in the language the watch is set to. There is also a Find button to make the watch alert when you have mislaid it.
  • Sync with another phone. Copy Health Connect records to a nearby phone over Bluetooth, with no account and no internet. All 41 record types are supported, the two phones pair with a code you confirm on both, and a report tells you exactly what moved.
  • Body Energy on your home screen. The Body Energy widget now draws the day's curve beside the score, so you can see which way the day has been going without opening anything.
  • A sleep night window you set yourself. Replaces the fixed range modes: tell OpenVitals when your night usually starts and ends, and it groups sleep accordingly.

Changed

  • Watches have their own place in Settings, separate from the heart-rate and cadence sensors used while recording. A paired watch also gets a tile on the summary screen with a sync button on it.
  • The Calories year view opens immediately. It used to spend up to half a minute reading a year of totals out of Health Connect. Daily totals are now cached as they are read.
  • The dashboard, charts and recording are all faster — the dashboard reads its metrics concurrently, the charts stop repainting every frame, and a recording no longer writes every sensor event to disk as it arrives.
  • Time asleep is what the sleep screens lead with, with time in bed shown as the full span beside it. Nights split by a wake gap are treated as one night everywhere.
  • Charts are readable by a screen reader, and the remove-widget control is easier to hit.

Fixed

  • Sleep display fixes. A partly-staged night draws as a solid bar rather than a fragment, the hypnogram and schedule bar stay whole across a wake gap, and a merged night opens its detail instead of an unknown error.
  • A whole day's steps are no longer multiplied by syncing twice, and a re-sync of the same watch data does not duplicate anything.
  • Reminders survive a long absence. Two weeks of reminders are scheduled ahead, and two runs at once can no longer drop entries between them.
  • The app no longer freezes on some screens — reading the log and importing a route file moved off the main thread.
  • Activity fixes. Floors, elevation and wheelchair pushes are read for the period they belong to, the rolling-year heatmap fills the whole year, and metric tiles grow with your text size setting.
  • Home-screen widgets show fresh data after the background isolate is reused, instead of repeating what they last showed.

The Codeberg and Play builds keep the same package name and signing certificate, so this installs as a normal update.

Distribution flow:

  • Codeberg release with per-ABI signed APKs (arm64-v8a and armeabi-v7a) and signed Android App Bundle assets.
  • Direct Google Play production upload from the approved Woodpecker deployment.

Generated from docs/releases/2.3.0.md. Edit it there; changes made here are overwritten.

Home

Features

How-to

App

Reference

Engineering

Proposals

Releases

Project

Clone this wiki locally