Repository navigation
OpenVitals 2.15.0
Released 2026-10-23.
This release is about typing in what no device sends. A body analysis scale without a connection gets one form for everything it shows, from weight and body fat to body water and bone mass, saved together at one time. Blood glucose and VO2 max get forms of their own, and every kind of medical record Health Connect holds can now be entered by hand, from visits and lab results to prescriptions and vital signs. Medical records are marked as a beta from this release on. A Wear OS watch's steps also become a cadence and an estimate of walking calories.
- One form for a body analysis scale. The Weight and Body fat tiles in Add entry are now one Body composition tile, for everything such a scale shows: weight, body fat, lean mass, body water, bone mass and basal metabolic rate. Fill in what the scale shows and leave the rest blank. Every value is saved to Health Connect with the same time, and a save writes all of them or none. Body water can be typed as a percentage, taken of the weight on the same form, or in kg or lb. Each value stays its own record afterwards, so the Body screens edit or delete it alone, lean mass, body water, bone mass and BMR included. Asked for in #304.
- Blood glucose and VO2 max entry. Add entry has a tile for each. Blood glucose is typed in mmol/L or mg/dL, starting from your unit setting, and says whether it was fasting, before or after a meal, which meal, and the sample: finger prick, sensor, plasma, serum or whole blood. VO2 max says how it was measured: a lab test, the Cooper, beep or Rockport test, or the heart rate ratio. Both can be edited and deleted from their detail screens. The new tiles are in the default grid; if you rearranged your tiles, add them from the grid's edit mode.
- Every kind of medical record can be typed in. Visits, procedures and lab results join vaccines, allergies, medications and conditions, along with prescriptions, vital signs, social history, pregnancy, doctors and their roles, clinics, places, and your own personal details. Each kind offers its statuses, and only something still ahead, such as a planned visit, can be dated after today. A doctor, clinic, lab or place is a record of its own: the form offers the ones already entered as you type the name, and saves a new name as a new record. A lab result keeps a number as a measurement and words such as "Negative" as text. Asked for in #304.
- Medical records are a beta. The first time the records home opens, a notice says the area is still under development and that bugs may arise, and asks you to use it with care and review the data you import. It shows once.
- Cadence and walking calories from a Wear OS watch. Each minute of steps the watch sends is also written as a cadence, and, once your weight is known from Health Connect or the body profile, as an estimate of the calories walking cost above rest. The estimate uses a cadence equation for level walking (Moore et al., 2021), so hills and stairs are not counted. A minute inside a workout Health Connect holds gets no estimate, so a recorded walk is not counted twice. Without a weight, or without Health Connect access for cadence or calories, the sync card says what is missing and offers the access; the rest of the sync goes on. Contributed by Ludwig Ettner.
- The medical records import counts a measurement where Health Connect files it. The review step follows Health Connect's own rules for observations: pregnancy first, then social history and vital signs, then lab results. A body weight is now counted under vital signs, and an observation Health Connect would refuse is held back in the review instead of failing during the import.
- The sleep home-screen widget showed Health Connect's daily total, which can disagree with the sleep stages. It now shows the time asleep, as the dashboard card does.
- Lab result flags. A lab result flagged with a bare H, L, N or A now reads High, Low, Normal or Abnormal, imported results included.
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.
- Direct Google Play production upload from the approved production run of the release workflow.
Generated from docs/releases/2.15.0.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