Repository navigation
OpenVitals 2.4.0
github-actions[bot] edited this page Nov 9, 2026
·
1 revision
Released 2026-07-28.
Onboarding is rebuilt from the ground up, the dashboard stops nagging about permissions, and the whole app gets a quiet visual tune-up: consistently outlined icons and Material 3 text spacing.
- Onboarding is now a four-step guide. Permissions are grouped the way Health Connect itself groups them - Activity, Body measurements, Nutrition, Sleep, Vitals - so the row you tap and the system dialog it opens carry the same name. One tap per category asks to read and to save, so entries you create in OpenVitals go back to Health Connect. Only Activity and Sleep are required to start; everything else is optional and can be added later from Settings.
- Mindfulness and cycle tracking are opt-in steps. Mindfulness stays off unless you switch it on - some Health Connect versions crash their own permission screen when asked for it, so OpenVitals requests it alone, where it can't take anything else down. Cycle tracking is its own step with a plain description of what it covers, and a Not now.
- Exercise routes get a walkthrough. Reading route maps is the one permission Android hides behind Health Connect's Additional access page, out of reach of any app. If it's still missing after the Activity grant, the last step shows the three taps that finish it, with a button that lands one tap away.
- The dashboard no longer asks for permissions. The two prompt cards that used to stack on the home screen right after onboarding are gone. A metric without access simply shows no data; screens ask at the point of use instead.
- Icons are consistently outlined - the same glyph no longer appears filled on one screen and outlined on another - and text spacing now follows Material 3, restoring the letter-spacing the body and title styles had silently lost in the Flutter port.
- OpenVitals never asks for a permission your device cannot grant. Requests are filtered against what the installed Health Connect provider defines and what the app itself declares - the combination that could crash the system Health Connect app on some de-Googled ROMs, locking users out of granting anything at all. This also fixes phone-to-phone sync demanding a skin-temperature write permission that could never be granted.
The permission model is versioned: existing installs pass through the new onboarding once, then continue to the dashboard as usual. Nothing already granted is asked for again.
The Codeberg and Play builds keep the same package name and signing certificate, so this installs as a normal update.
Distribution flow:
- Codeberg release with per-ABI signed APKs (arm64-v8a and armeabi-v7a) and signed Android App Bundle assets.
- Direct Google Play production upload from the approved Woodpecker deployment.
Generated from docs/releases/2.4.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