Changelog (iOS) — 0.8.4

New user onboarding
Completely redesigned onboarding flow with new visuals and animations:
Refactored for smoother transitions.
Updated welcome pages with larger fonts, bigger buttons, iOS 26 glass-style main buttons, and native toolbar for skipping.
Added images and a fourth welcome page.
Adjusted gradients for dark/green/blue variations and ensured proper dark mode handling (titles, backgrounds, contrast).
Added haptic feedback to onboarding toggles and buttons
Reworked units setup for phone setup with native toggle components.
Reordered onboarding: units setup now comes before HealthKit setup.
Added full HealthKit onboarding flow:
Fetches biometrics, best runs, and average run data for running style.
Added Milo Run Score determination step:
Automatically selects best matched runs and validates them.
Allows manual updates and editing even without matched runs.
Showing custom training paces based on Milo Run Score.
Pre-selects the best of four runs.
New training data tab
Introduced a new training data tab combining performance data:
Best Runs, Running Style, Milo Run Score, and Milo Training Paces views.
Allows editing biometrics, Milo Run Score race, and refreshing data from HealthKit.
Added card descriptions, improved dark mode support, and matched main tab UI.
Biometrics improvements
Updated BiometricsSettingsView:
Fetches biometrics during onboarding and allows manual editing.
Detects max heart rate from the last 24 months of workouts.
Added “Refresh biometrics from HealthKit” button.
Updated editing UI to match iOS input forms.
Added ability to add manual heart rate zones.
Bug fixes & general improvements
Fixed an important bug where average pace during runs could differ from the post-run summary due to fused distance calculations.
Fixed our custom progress alert truncating messages and added cancel handling for stuck uploads (e.g., Strava).
Fixed Strava connection card UI and added connect button to Route Import.
Fixed empty state for workouts tab.
Fixed laps for indoor cycling, now calculated from time and BPM.
Cycling speed now responds faster to real-world changes and full stops (traffic lights, etc.).
Added disk cache for route snapshots (faster loading of activity and route items).
Added reset user settings button (Debug → App Infos → Reset Settings).
Cleaned up settings and minor UI inconsistencies.
Fixed issue where the app didn’t correctly launch into dark mode.
Fixed HealthKit data mismatches and missing running style components on some devices.
Improved data refresh reliability when syncing from HealthKit.
Added empty state to Milo Run Score view with manual entry option.
Added comparison view in running style tab to contrast daily vs race-day stats (based on best Milo Run Score run).
Prevented overwriting existing user settings if onboarding is repeated.