Skip to content

OpenVitals 2.7.1

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

Released 2026-08-30.

This release is about training with a plan. Build a routine once - blocks of exercises with reps or seconds, rests, and rounds - and start it as a guided run: the phone counts push-ups and squats with its proximity sensor where it can, timed steps and rests count down on a ring and move on by themselves, and every step is spoken and shown in the notification. Plans live in Health Connect, so one made in another app can be started too. Any workout can now be exported without its route as TCX, FIT or CSV, every language the picker offers is complete, and a nap from a Garmin watch finally counts as sleep.

Added

  • Workout plans. A new Workout plans screen builds a routine: blocks of exercises picked from a searchable catalogue, each with a reps or seconds goal, rests between them, and a round count per block. Plans are stored in Health Connect as planned exercise sessions, grouped as today, upcoming and past. From the activity screen, Start walks a plan as a guided run - Step 2 of 6, Round 1 of 3, reps counted against the goal, timed steps and rests counting down on a ring that empties clockwise so a phone on the floor a metre away still tells you where you are, a spoken cue at every step and rest, and the same progress in the notification. Done, Skip, Skip rest and Back a step are the controls; Finish session saves the workout with the plan linked, and the linked plan shows on the workout's detail screen. A plan made in another app can be started or copied to today but not edited here; a logged workout can be saved as a plan; a recent plan can be repeated.
  • Reps counted by the phone in a plan. A plan step finds the same recognizer the single-exercise recording uses: push-ups and squats on the proximity sensor, pull-ups, rope skipping and trampoline jumping on the accelerometer. Squats are new to the proximity sensor, in plans and on their own. The step's label is matched loosely - "Pushups", "push ups" and the exercise's name in the phone's language all count - so a hand-named step is not left to manual counting.
  • Workouts export without their route. Every workout detail screen carries an Export workout card: save or share the session's type, times, duration, distance, calories and heart rate as TCX, FIT or CSV, with the GPS route deliberately left out. The card is there for sessions that never had a route too - a treadmill run has data worth getting out.
  • Every language is complete. Czech, Spanish, French, German, Italian, Estonian, Portuguese and Simplified Chinese are fully translated, including the workout plan, guided run and exercise names.

Changed

  • Naps count as sleep. A nap synced from a Garmin watch arrived with no stages - the watch's nap record only bounds it - so the session read as "nothing recorded" on the timeline and contributed nothing to the stage shares. It is now recorded as one light-sleep stage, as Gadgetbridge does.
  • Out of bed, on the timeline and in the shares. The stretch between two goes at a night takes a dusty rose in the Awake family instead of a brown that read as a different kind of thing, and Share of time in bed gets an Out of bed row after Awake, so the shares account for the whole span the timeline draws.
  • The rest countdown beeps for five seconds, not three. Three left barely enough time to get back into position before the bell.

Fixed

  • A night stored as overlapping records no longer doubles its duration. Mi Fitness writes a night as a whole plus a partial record of the same hours. The day view, which recomputes from the stages, showed 8h23m; the detail screen summed the parts and showed 13h15m. The merged session's duration now comes from its resolved stages.
  • Plan controls no longer wrap their labels. Once Back appears the row holds four controls, and Done and Finish session wrapped mid-word on a phone; the icon buttons give up their side padding and the labels shrink rather than wrap.

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

Home

Features

How-to

App

Reference

Engineering

Proposals

Releases

Project

Clone this wiki locally