Skip to content

OpenVitals v2.14.1

Choose a tag to compare

@github-actions github-actions released this 14 Oct 18:58
· 1512 commits to main since this release

Released 2026-10-14.

This release brings a cycle history kept in drip into OpenVitals: the CSV importer recognises drip's export and needs no column mapping. To hold everything drip records, the cycle journal gains the cervix as felt and a desire scale, both in the day log. A very large CSV, such as a heart rate export of a million rows, no longer stops when Health Connect runs out of quota: the import waits and carries on. Wear OS watches can sync on a schedule, and the cardio load on the Activities screens now matches the dashboard's.

Added

  • Cycle history from drip. Pick a CSV exported by the drip cycle tracker in Settings > Import & export > CSV Importer and OpenVitals recognises it: instead of a column mapping, five switches choose what to bring over. Bleeding becomes period flow and spotting in Health Connect, with bleeding you excluded in drip as spotting; morning temperatures land at their recorded time, with those excluded in drip left out; cervical mucus comes over as texture and feeling; sex as protected, unprotected or unknown, from the contraceptive drip lists. Pain and mood become symptoms, mood and energy levels, the cervix, desire and every note go into the cycle journal on the phone, laid over whatever the day already holds. Days are read in the phone's time zone. Importing the same export again replaces rather than duplicates.
  • The cervix and desire in the cycle journal. The day log's cervical mucus section gains the cervix as felt: opening (closed, medium, open), firmness (firm, soft) and position (low, medium, high). Desire joins pain, mood and energy as a fourth 1 to 5 scale. Both travel with the journal backup and the phone-to-phone sync.
  • Automatic sync for Wear OS watches. The Automatic sync card, so far Garmin-only, shows for a Wear OS watch too. A scheduled run does what a tap on Sync does: it copies the heart rate into Health Connect and writes the night's estimated sleep. Schedules survive a restart of the phone.

Changed

  • CSV import waits out Health Connect's quota. A batch Health Connect refused for quota used to end the import, which a million-row heart rate export hit every time. The import now pauses, 15 seconds the first time and up to 5 minutes later on, shows a countdown, and writes the same batch again; an accepted write resets the pauses. Only half an hour of pausing without a single accepted write stops the run, and Cancel is answered within a second even during a pause. The result and the report count the pauses and the time they took.

Fixed

  • Cardio load on the Activities screens. The Activities screen and the activity overview computed cardio load without the body profile, so a day could show one load on the dashboard and another there. They now read the age, the maximum heart rate set in the profile and the sex that picks the weighting for women, as the dashboard does.

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

Distribution flow:

  • GitHub release with signed APK, signed debug APK, and signed Android App Bundle assets.
  • Google Play update to follow, once 2.13.0 has cleared Play review.