Repository navigation
OpenVitals 2.0.2
github-actions[bot] edited this page Nov 9, 2026
·
1 revision
Released 2026-07-12.
A fix release for the first Flutter version: the numbers a watch records but writes beside the activity rather than inside it, the charts a ride records, and three crashes-or-near-misses reported against 2.0.1.
- A walk or run recorded by a watch showed no steps, distance, calories or elevation. A watch writes an activity as a session record carrying little more than a duration, and puts its steps, distance, calories and elevation in separate Health Connect records covering the same window. Reading the session alone therefore reported "Not available" for numbers the watch had in fact recorded - directly above a chart of that same activity's step cadence, and splits that added up to a distance the page refused to show. Those records are now read back over the activity's own window. A device that records speed but no distance at all (a treadmill, some watches) gets a distance derived from its speed, by the same arithmetic the splits already used, so the two can no longer disagree.
- The speed and cadence a ride or run recorded were never shown, and the metrics list advertised figures the activity was never going to have - "Wheelchair pushes" and "Floors climbed" on a bike ride, permanently "Not available". Speed, cadence and heart rate now get their charts, and the list shows a metric when it has a value, or when its absence is worth reporting for that kind of activity. A value that was actually recorded is never hidden: a device that somehow counts steps on a bike ride still gets a Steps row.
- The recording screen left a large empty gap above and below the live dashboard - about a fifth of the screen - which in outdoor mode's black background read as a broken screen rather than a loose one.
- Importing an offline map pack crashed the app. The file picker read the entire file into memory before the import began, so a 205 MB pack against a 256 MB heap ran out of memory before any of our code ran. The same picker feeds the Apple Health import, where an export is routinely gigabytes and never stood a chance either.
- Adding a home-screen widget went wrong three ways: adding a metric widget opened the beverage picker (and vice versa), the picker could crash after a selection, and when it did complete the widget was sometimes never created. All three were one cause - every widget pointed its configuration screen at the app's main activity, so Android handed the request to the already-running app instead of starting the picker.
The app keeps the same package name and signing certificate, so this installs as a normal update.
Distribution flow:
- Codeberg release with signed APK and signed Android App Bundle assets.
- Direct Google Play production upload from the approved Woodpecker deployment.
Generated from docs/releases/2.0.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