Skip to content

OpenVitals 2.9.0

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

Released 2026-09-18.

This release lets you choose the guideline that names your blood pressure readings - ACC/AHA, ESH, ESC or ISH - and send a point from the phone to a Garmin watch's saved locations. Elevation correction now covers activities recorded on the phone, Garmin watches show ringing calls, older ones such as the original Instinct receive notifications, Russian joins the language picker with every language back at 100%, and a round of fixes removes the freezes behind "app isn't responding".

Added

  • Choose the blood pressure guideline. The categories were fixed to ACC/AHA 2017, where high starts at 130/80 mmHg; Europe and the ISH start at 140/90. Settings gains a Vitals section with the choice: ACC/AHA 2017, ESH 2023, ESC 2024 or ISH 2020. ACC/AHA stays the default, and every guideline still flags a reading above 180 or above 120. The blood pressure screen gains "How it is classified", which explains how a reading gets its category, lists the thresholds and links the guideline's sources.
  • Send a point to a Garmin watch. A watch that can store locations gets a "Send a point" row. Type a name and coordinates - decimal degrees, degrees and decimal minutes, or degrees, minutes and seconds - or share a place from a maps app: OpenVitals appears as "Send to watch" for geo: links and shared text, and reads Google Maps, OpenStreetMap and OsmAnd links. A shared place only fills the form; nothing is sent until you tap Send. The watch keeps the point in its saved locations, where it can be picked as a navigation target, and each way the send can fail has its own message. Asked for as Gadgetbridge's "Send Point". Not yet confirmed on a watch.
  • Ringing calls on a Garmin watch. Calls never reached any watch. A ringing call now shows on the wrist with the caller's name and leaves once it is answered. With a dialer that uses Android's call-style notification, the watch's accept and reject buttons work. No phone permission is needed and nothing reads the call log.
  • Russian. Russian joins the language picker, contributed by Xapitonov on Codeberg Translate.

Changed

  • Elevation correction covers phone recordings. 2.8.0 corrected imported routes only. A GPS activity recorded on the phone now goes through the same correction when it finishes, under the same rule: a route not fully covered by your tiles keeps its own altitudes. The figure shown while recording is still the sensor's; the corrected route and gain land on the review form. The switch is now called "Correct altitude from tiles".
  • Every language at 100%. Czech, German, Spanish, Estonian, French, Galician, Italian, Japanese, Portuguese and Simplified Chinese are complete again. Italian updates contributed by NeriSal.

Fixed

  • Notifications on older Garmin watches. Older watches such as the original Instinct showed nothing. The phone now waits until the watch has declared its capabilities before it sends the start-up sequence, so these watches subscribe for notifications and list their files. A watch that asks what an app is called gets an answer instead of waiting forever. A dismissed notification is always withdrawn from the watch, so phantom entries no longer pile up until nothing new appears.
  • No more "app isn't responding" freezes. Work that made the main thread wait now runs in the background: home widget refreshes, the quick beverage widget tap (it saves first and updates the tile after), beverage logging, heart rate charts over long periods, and the source labels on lists of readings, which made the Blood pressure screen sluggish. When Android does record a freeze, its trace - thread names and stack frames, no health values - goes into the report email and the debug log export.
  • A night claims an early bedtime. A night was filed by its start time alone, so a session that began before the "Night starts at" hour showed as a nap on the evening before and the wake-up date had no sleep. A night now also claims a session that starts before its window and spends more than half its span inside it.
  • Long Apple Health import errors. A long error shows its start and points to Copy error or Download full report for the rest.

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.9.0.md. Edit it there; changes made here are overwritten.

Home

Features

How-to

App

Reference

Engineering

Proposals

Releases

Project

Clone this wiki locally