Skip to content

OpenVitals 2.0.3

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

Released 2026-07-12.

A fix release for things the Flutter rewrite quietly lost. Most of it is one bug wearing different clothes: Health Connect hands back a record, not the samples inside it, and asking for a window that a long record merely overlaps returns nothing at all — successfully, so nothing anywhere looked broken.

Fixed

  • An activity could show no heart rate at all, and its splits fell back to estimates. Health Connect stores heart rate, speed and cadence as series records: one record holding many timestamped samples. It filters those by the boundary of the record, never by the times of the samples inside it. A device is free to group a whole day of beats into one record — one on the reporter's phone ran 17.5 hours — and a 36-minute workout sitting inside it was therefore invisible: the read succeeded and returned nothing. The activity said "Not available" for a heart rate it had recorded the entire time. The same read backs the speed samples, so the 1 km splits silently dropped to being estimated from the average on exactly the same activities. Reading a series now finds the samples wherever the writer chose to put them.
  • The sleep graphs were blank. The night's hypnogram and the "share of time in bed" bars drew their coloured bands with zero height — correct durations and percentages beside them, and nothing at all in the chart. Both were the same layout mistake, and both are painted again.
  • The weekly activities view lost the strip showing which days you trained. It is back: a marker per day, filled on the days with an activity.
  • Beverages logged from a home-screen widget were silently dropped. The release build strips code it cannot see being used, and the widget buttons are found by reflection at the moment you tap them — so the tap did nothing and the drink was never recorded. The rules that keep them have been restored, along with the ones protecting Health Connect's own reflective lookups.
  • A strength session was cut into distance splits. A phone left on a bench picks up a couple of hundred metres of GPS drift, which Health Connect faithfully records; the activity page then sliced a lifting session into "1.0 km" and "181 m" laps at a 30:29 min/km pace. Whether an activity has splits is now a question about the kind of activity, not about whether a distance happens to exist for it.

Changed

  • Focus mode now fills the screen. It was rendering under the app bar, whose Back arrow did exactly what focus mode's own exit button already does — and what the system back gesture already does. The bar is gone while focus mode is on, and the height it was taking goes to the metrics, which is the point of the mode.

The app keeps the same package name and signing certificate, so this installs as a normal update.

Distribution flow:

  • Codeberg release with signed APK and signed Android App Bundle assets.
  • Direct Google Play production upload from the approved Woodpecker deployment.

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

Home

Features

How-to

App

Reference

Engineering

Proposals

Releases

Project

Clone this wiki locally