Skip to content

OpenVitals 2.7.2

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

Released 2026-09-02.

This release fixes the day's heart numbers: averages now weight each reading by how long it held, so a 50-minute run no longer outvotes the other 23 hours and a day that truly averaged 79 bpm no longer prints as 115. Steps can now be imported from CSV files with an optional end-time column, the quick beverage widget logs again, and a workout plan made on this phone keeps its Edit and Delete entries.

Added

  • Steps in the CSV importer. Steps join the metrics a CSV can bring in, as the importer's first interval metric. Map an optional "End date and time" column and each row spans from its start to that end; a row without one - the column unmapped, the cell blank - counts as one minute. An end that cannot be read or is not after the start rejects only that row's steps, so the instant metrics beside it still import, and re-importing the same file replaces records rather than duplicating them.

Fixed

  • A workout no longer skews the day's heart rate. Day averages weighted each reading by how often the device wrote, not by how long the value held: Gadgetbridge records background heart rate about once a minute but workouts at about once a second, so a 50-minute run outvoted the other 23 hours and a day that averaged 79 bpm printed as 115 (field report, Xiaomi Smart Band 10 via Gadgetbridge and Health Connect). Averages are now time-weighted everywhere a day is summarized: the heart rate and HRV day cards, the overview day values, resting heart rate, respiratory rate, SpO2 statistics, the sleep score's overnight HRV, the daily vitals series and the stress score.
  • The quick beverage widget logs again. Tapping the 1x1 quick beverage widget or the 2x1's Add button silently logged nothing in 2.7.0 and 2.7.1 release builds; the tap saves the drink again.
  • Your workout plans keep Edit and Delete. A plan physically written by OpenVitals on this phone could lose its Edit and Delete menu entries when device sync relabeled where it came from; ownership is now decided by the record's actual writer, and the displayed source stays display-only.
  • The dashboard holds still while a sync runs. The syncing notice no longer pushes the cards down when a refresh starts; only the sync-paused banner occupies that space.
  • Translations. Czech, Spanish, French, Portuguese and Simplified Chinese updated; Finnish and Polish have begun on Codeberg Translate and will be offered in the language picker once they pass 70% coverage.

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

Distribution flow:

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

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

Home

Features

How-to

App

Reference

Engineering

Proposals

Releases

Project

Clone this wiki locally