Repository navigation
OpenVitals 2.6.5
Released 2026-08-19.
This release is about the app doing its job without being watched. The watch can now sync itself on a schedule, so sleep and activity arrive without opening the app. Sync with another phone stops choking on years of dense data and stops calling a partial transfer complete; when it fails, it now hands you the evidence instead of a shrug. A night slept in two goes no longer books the time out of bed as time awake. And the app speaks Czech.
- Automatic watch sync. A new Automatic sync setting on the watch's device screen syncs a Garmin watch on its own every 30 minutes, hour, or two hours - off by default and chosen per watch. Scheduled runs are quiet by design: a watch out of range at 3am is not a fault to report, and the last sync time is what says the schedule is working. Android chooses the exact moment, so a run can be a little late; the battery-optimization exemption offered during pairing keeps overnight runs close to schedule. The schedule survives reboots and updates.
- Czech. A full translation, offered by the in-app language picker.
- Notes on mindfulness sessions. The timer save and the manual entry form take a note, stored in Health Connect with the session, so it stays yours and moves with your data. The list keeps notes behind a deliberate tap, and editing a session can change or clear its note.
- Beers in the beverage catalogue. Beer, lager, pilsner, stout, and alcohol-free beer, with nutrition filled in and honest hydration credit - an alcoholic beer counts less than its volume.
- Sync with another phone handles years of data and slow links. A data-dense library - a bike computer's worth of heart rate samples - used to be read into memory whole, which pinned small phones at their heap limit until the session timed out. The transfer now streams, so memory use no longer grows with the size of the library. Batches are also capped by size on the wire, so a batch of sample-heavy records crosses a slow Bluetooth link before the other side gives up waiting, and a pause caused by Health Connect rate limiting no longer kills the session. Older versions of the app still sync with this one.
- A failed sync explains itself. The failure screen now shows why the session aborted and how far it got, with the same Copy and Share report buttons a successful sync gets. The last report is also offered when you reopen the wizard, so it can still be sent the day after.
- Time out of bed is no longer counted as time awake. A night slept in two goes bridged the gap so the chart stays continuous, but the bridge was typed as awake: a 90-minute get-up read as 1h38m awake and dragged down sleep efficiency and the sleep score. The gap now appears in both the day and week charts as its own out-of-bed segment, in a colour no sleep stage uses, and stays out of the awake numbers. Sleep duration never counted it and is unchanged.
- A partial transfer no longer reports itself completed. When sync with another phone could not read a page of records even after retrying, it used to end the stream quietly and let the session say it finished. It now aborts with the reason, on both phones' reports.
- The mindfulness year heatmap shows the last twelve months. The rolling year window only drew the days that fell in the window's first calendar year, so the months since January - including today - were missing. The grid now covers the whole window, laid out in week columns with month labels.
- Mindfulness entries no longer say "null". Sessions recorded by the old Flutter-era app stamped the word "null" where there was no note; those now read as having no note, and re-saving one scrubs it from the record for good.
The app keeps the same package name and signing certificate, so this installs as a normal update.
Distribution flow:
- Codeberg release with signed APK, signed debug APK, and signed Android App Bundle assets.
- Direct Google Play production upload from the approved Woodpecker deployment.
Generated from docs/releases/2.6.5.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
- Share With Other Apps
- 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.17.0
- 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