Repository navigation
OpenVitals 2.14.2
Released 2026-10-14.
This release lets a blood pressure reading carry the pulse the monitor shows: an optional field on the blood pressure form, saved as a heart rate record at the reading's time and shown beside the reading. The Wear OS watch app starts counting steps, one minute at a time, and a sync from the phone writes them into Health Connect. And the age-predicted maximum heart rate for women now follows Gulati's formula instead of Tanaka's, which lowers it and with it the cardio load, intensity minutes, heart rate recovery and Body Energy computed for women.
- The pulse on the blood pressure form. A home monitor shows the pulse with every reading, so the blood pressure entry takes it as an optional third value, under systolic and diastolic. It is saved as a heart rate record at the time of the reading, so it appears under Heart rate, and it shows beside the reading in the blood pressure list and when the reading is opened for editing. Editing the reading moves or replaces the pulse, clearing the field removes it, and deleting the reading deletes it too. Saving a pulse needs Health Connect write access for heart rate on top of blood pressure; the app asks for it only once a pulse is typed, so a reading without one never asks. A pulse outside 20 to 300 bpm is refused.
- Step counting on the Wear OS watch. The watch app counts steps with the watch's own step counter, one row per minute. The counter runs in the sensor hub and is read in the same batch as the heart rate, so it adds no wake-ups; a restart of the watch app neither loses nor double-counts steps. The app asks for the Physical activity permission on start. A sync from the phone writes one steps record per minute into Health Connect and reaches five minutes back, because a minute can still grow when late steps arrive; minutes without watch steps are not written, so the phone's own count can fill them. The watch's status card shows how many minutes of steps it holds, or that counting is off or the watch has no step counter. The phone only asks for steps from a watch app that offers them, so an older watch app keeps syncing as before. The watch app remains for testers and is installed by hand.
- Maximum heart rate for women. The age-predicted maximum heart rate used Tanaka's formula for everyone. For women it now uses Gulati's, 206 - 0.88 x age, from a study of 5,437 women whose maximum Tanaka's formula overestimated; men and an unknown sex keep Tanaka's, 208 - 0.7 x age. At 40 that is 171 instead of 180 bpm. The maximum feeds cardio load, intensity minutes, heart rate recovery and Body Energy, and all four read the sex from the body profile. Body Energy is rebuilt once after this update and again whenever the sex changes.
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.
Generated from docs/releases/2.14.2.md. Edit it there; changes made here are overwritten.
This wiki mirrors the Markdown in Hale-MTU/OpenVitals on every push to main.
Features
- Features
- Achievements
- Activity And Training Plans
- Activity Metrics
- Apple Health Import
- Beverage Logging And Caffeine
- Bluetooth LE Sensors
- Body Energy
- Body Metrics
- CoMaps Navigation Context
- CSV Import
- Cycle Tracking
- Daily Readiness
- Elevation Correction
- Feature Map
- FIT Files Import
- Food Logging
- GPX/KML/KMZ/TCX Route Import
- Health Connect Metrics Dashboard
- Health Report Export
- Heart And Vitals
- Heart Rate Recovery
- Home Screen Widgets
- Hydration
- Manual Entry Of Metrics
- Medical Records
- Metric Detail Customization
- Mindfulness
- Non Health Connect Metrics Dashboard
- Nutrition
- Offline Maps Support
- Onboarding And Permissions
- Preloaded Beverage Nutrition Reference
- Privacy, Support, And Diagnostics
- Recording Of Activity
- Reminders
- Settings And Preferences
- Sleep Score And Recovery
- Sleep Tracking
- Statistics
- Sync With Another Phone
How-to
App
- App Guide
- FAQ
- Getting Started
- Health Connect
- Install
- Local And Connected Editions
- Permissions
- Privacy
- Screenshots
- Support
Reference
- Design Reference
- Reference
- Design Guidelines for Offline & Sync
- OpenVitals UI Notes
- Reference: Data Capture
- Reference: Data Display
- Reference: Health Connect Matchmaking
- Reference: Health Connect Onboarding
- Reference: Health Connect Permissions
- Reference: Health Connect UX
- Reference: Promoting Health Connect
Engineering
- Code Analysis
- Engineering
- Flutter ↔ Kotlin test-parity matrix
- apple-health-import
- Architecture
- body-cycle-recovery
- Design system conformance
- Development
- Feature Playbook
- Flutter -> Kotlin test parity: domain/data/core/contract/state/navigation/di/bootstrap/l10n/widget_test
- Flutter → Kotlin test-parity matrix: features section
- Flutter → Kotlin test-parity matrix: ui / goldens / integration / fixtures
- Flutter-to-Kotlin test-parity matrix — dashboard + devicesync
- manual-entry
- Translations
Proposals
- Proposals
- Activity Start Flow Analysis
- Activity Start Flow Simplification Proposals
- Caffeine Detail And Future Sleep Insights
- Cycle Tracking: Design and Status
- Medical Records Through Health Connect
- Medical Records: What Is Left
Releases
- OpenVitals 2.16.0
- OpenVitals 2.15.2
- OpenVitals 2.15.1
- OpenVitals 2.15.0
- OpenVitals 2.14.5
- OpenVitals 2.14.4
- OpenVitals 2.14.3
- OpenVitals 2.14.2
- OpenVitals 2.14.1
- OpenVitals 2.14.0
- OpenVitals 2.13.0
- OpenVitals 2.12.0
- OpenVitals 2.11.2
- OpenVitals 2.11.1
- OpenVitals 2.11.0
- OpenVitals 2.10.1
- OpenVitals 2.10.0
- OpenVitals 2.9.1
- OpenVitals 2.9.0
- OpenVitals 2.8.0
- OpenVitals 2.7.3
- OpenVitals 2.7.2
- OpenVitals 2.7.1
- OpenVitals 2.7.0
- OpenVitals 2.6.6
- OpenVitals 2.6.5
- OpenVitals 2.6.4
- OpenVitals 2.6.3
- OpenVitals 2.6.2
- OpenVitals 2.6.1
- OpenVitals 2.6.0
- OpenVitals 2.5.0
- OpenVitals 2.4.1
- OpenVitals 2.4.0
- OpenVitals 2.3.2
- OpenVitals 2.3.1
- OpenVitals 2.3.0
- OpenVitals 2.2.8
- OpenVitals 2.2.7
- OpenVitals 2.2.6
- OpenVitals 2.2.5
- OpenVitals 2.2.4
- OpenVitals 2.2.3
- OpenVitals 2.2.2
- OpenVitals 2.2.1
- OpenVitals 2.2.0
- OpenVitals 2.1.0
- OpenVitals 2.0.4
- OpenVitals 2.0.3
- OpenVitals 2.0.2
- OpenVitals 2.0.1
- OpenVitals 1.9.0
- OpenVitals 1.8.0
- OpenVitals 1.7.7
- OpenVitals 1.7.6
- OpenVitals 1.7.5
- OpenVitals 1.7.4
- OpenVitals 1.7.3
- OpenVitals 1.7.2
- OpenVitals 1.7.1
- OpenVitals 1.7.0
- OpenVitals 1.6.3
- OpenVitals 1.6.2
- OpenVitals 1.6.1
- OpenVitals 1.6.0
- OpenVitals 1.5.1
- OpenVitals 1.5.0
Project