Important
💾 Upgrade Notice: Always remember to back up your database and environment before upgrading to a new version.
👍 Community Prioritization: Want to see a specific feature or fix in the next release? Add a 👍 reaction to open Issues to help us prioritize what to build next!
🚀 Key Highlights
What's Changed
Features
- Refresh food information from data provider API by @lukyjay in #2563
- feat(umbrel): add Umbrel App Store package and release automation by @Blakeinstein in #2590
- feat(mobile): draw cardio routes over a map by @Jerrys-modz in #2632
- feat(server): let one instance run the scheduled jobs when scaled out by @SisyphusMD in #2636
- feat(helm): run scheduled jobs on one replica when server.replicas > 1 by @SisyphusMD in #2654
- Add Calories graph to Health Trends and make Sleep graph consistent with other graphs by @chaddy50 in #2627
- feat(mobile): rest chime through silent mode, wrist buzz at rest end by @Jerrys-modz in #2668
- ci(release): derive versions from Conventional Commits with release-please by @coolapso in #2662
- feat(auth): share sign-in rate limits across server instances by @SisyphusMD in #2674
- feat(watch): open the watch app on the workout page when a workout starts by @Jerrys-modz in #2682
- feat(watch): tap feedback on every watch button by @Jerrys-modz in #2683
- feat(auth): let admins turn off passkey login by @SisyphusMD in #2685
- feat(watch): sync exercises and supersets added on the phone mid-workout by @Jerrys-modz in #2689
- feat(watch): choose the watch pages, their order, and the Goals page nutrients by @Jerrys-modz in #2690
- feat(mobile): show a workout's time in each heart-rate zone by @Jerrys-modz in #2693
- feat(symptoms): add mobile dashboard card, history insights, and symptom tracking by @CodeWithCJ in #2695
- feat(watch): enter set weight and reps with the Digital Crown by @Jerrys-modz in #2694
- feat(mobile): show the watch's live heart rate during a workout by @Jerrys-modz in #2696
- feat(watch): start a saved workout from the wrist by @Jerrys-modz in #2699
- feat(medications): consolidate medication reminders scheduled for the same time by @nalvazhvu in #2706
- feat(exercises): bodyweight exercises with added or assisted weight by @Jerrys-modz in #2702
- feat(watch): add a Now Playing page beside the workout by @Jerrys-modz in #2721
- Feat/watch timed set by @Jerrys-modz in #2720
- feat(mobile): add per-day goal lines to Health Trends charts by @chaddy50 in #2732
- Feat(workouts): weight distance sets by @Jerrys-modz in #2734
- feat(watch): show a post-workout summary on the watch by @Jerrys-modz in #2748
- feat(exercises): add a training consistency view by @Jerrys-modz in #2747
- feat(watch): complete a set with the double-tap gesture by @Jerrys-modz in #2757
- feat(mobile): scan nutrition labels on-device with Apple Foundation Models (iOS 27) by @Jerrys-modz in #2753
- feat(mobile): color-code date navigator and header by date relation by @nalvazhvu in #2761
- feat(watch): bigger touch targets, a flatter look and screen-size scaling for the workout screens, with today's planned workout first by @Jerrys-modz in #2767
- feat(mobile): add Home Screen quick actions for scanning food, logging food, logging water and fasting by @Jerrys-modz in #2770
- feat(mobile): add Log water, Log weight, Start fast and End fast Siri and Shortcuts actions that work without opening the app by @Jerrys-modz in #2773
- feat(mobile): add and edit supplements in the medications screens by @Jerrys-modz in #2774
- feat(mindfulness): add mindfulness session tracking, practice tools, and dashboard insights by @nalvazhvu in #2775
- feat(auth): add read-only API keys for integrations and MCP clients by @DUC750 in #2782
Fixes
- fix(ai): support Perplexity Agent API schemas, preset tiers, and vision formats by @CodeWithCJ in #2637
- fix(ai): map Perplexity models to Agent API presets and set max_output_tokens by @CodeWithCJ in #2638
- ci(android): pass GOOGLE_MAPS_ANDROID_API_KEY secret during expo prebuild by @CodeWithCJ in #2651
- fix(mobile): make accent chips and Plan Meal button readable in dark themes by @Jerrys-modz in #2635
- fix(helm): keep the source chart on the current release by @SisyphusMD in #2639
- fix(watch): ack water taps and deletes, clear stale queued state by @TheGothian in #2640
- test(server): make the hydration range test pass outside UTC by @SisyphusMD in #2644
- fix(auth): enforce the admin email login toggle on password sign-in by @SisyphusMD in #2646
- fix(docker): qualify bare SPARKY_FITNESS_SERVER_HOST via resolv.conf search domains by @coolapso in #2649
- fix(mobile): ignore implausible basal aggregate for workout calories by @CodeWithCJ in #2653
- fix(settings): keep the saved login choices while env vars override them by @SisyphusMD in #2657
- Bug: Hydration chart has negative y-axis by @lukyjay in #2630
- test(mobile): make the health-data tests pass in any time zone by @SisyphusMD in #2658
- fix(watch): rest countdown, keypad, heart rate, progression and set sync, preset name by @Jerrys-modz in #2663
- fix(mobile): run live workout saves one at a time by @Jerrys-modz in #2667
- fix(mobile): round the progression weight suggestion to what was typed by @Jerrys-modz in #2673
- fix(mcp): set_goals keeps exercise targets and meal/macro percentages by @DUC750 in #2679
- fix(health-connect): import BodyWaterMass as body water percentage by @DUC750 in #2681
- fix(usda): send food search as POST to avoid intermittent 400s by @dobsondev in #2676
- fix(measurements): validate date params as real calendar days by @chaddy50 in #2688
- fix(integrations): stop concurrent token refreshes from undoing each other by @SisyphusMD in #2692
- fix(i18n): ensure selectedCount interpolation resolves across bulk selection surfaces by @nalvazhvu in #2700
- fix(mobile): resolve dark mode theme tokens and contrast across symptom tracking by @nalvazhvu in #2708
- fix(mobile): keep Add as the detached button on the Liquid Glass tab bar by @Jerrys-modz in #2703
- fix(mobile): read workouts from the start of the local day on every sync by @Jerrys-modz in #2705
- fix(caffeine): anchor midnight bedtimes to concluding day and align chart intervals by @nalvazhvu in #2710
- fix(coros): stop the summary import from throwing after it saves the workout by @SisyphusMD in #2712
- fix(integrations): stop Fitbit and Google Health from adding a duplicate activity detail on every sync by @SisyphusMD in #2713
- fix(chat): support tool calling with Perplexity Agent API presets by @VMmatty in #2715
- fix(watch): add up crown turns smaller than a step so reps move again by @Jerrys-modz in #2718
- Fix(mobile): Open workout statistics detail from synced diary workouts by @Jerrys-modz in #2716
- fix(integrations): match synced exercises by source_id to prevent duplicates on rename by @nalvazhvu in #2723
- fix(mobile): give the Health Trends card its own bottom margin by @chaddy50 in #2724
- fix(mobile): keep active workout bar off sticky-footer screens by @chaddy50 in #2725
- fix(withings): store every workout instead of merging same-day same-category ones by @SisyphusMD in #2741
- fix(nix): update nixpkgs so pnpm 10 is no longer the insecure 10.34.0 by @giggio in #2746
- fix(integrations): skip an hourly provider sync while the previous one is still running by @SisyphusMD in #2754
- fix(auth): resolve multi-hop proxy client IP and isolate rate limits by @nalvazhvu in #2756
- fix(googlehealth): keep the sync spinner until the sync actually finishes by @SisyphusMD in #2744
- fix(integrations): give Strava and Fitbit activities a source_id when the provider id is missing by @SisyphusMD in #2760
- fix(backups): pick up backup schedule changes on the jobs instance within 5 minutes by @SisyphusMD in #2762
- fix(integrations): run one sync at a time per provider account by @SisyphusMD in #2768
- fix(goals): keep a missing caffeine/alcohol goal as null instead of 0 by @DUC750 in #2778
- fix(mobile): count watch-started scheduled workouts toward their plan by @Jerrys-modz in #2779
Documentation
- docs(install): add a Flux example for installing the Helm chart from OCI by @SisyphusMD in #2655
- updated doc by @CodeWithCJ in #2671
- docs: add RENPHO smart tape measure and scale to community integrations by @Jerrys-modz in #2776
Other Changes
- chore(umbrel): update app package to v1.7.3 by @github-actions[bot] in #2650
- chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #2684
- chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #2687
- chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #2698
- chore(nix): update pnpm deps hashes by @github-actions[bot] in #2709
- chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #2714
- chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #2738
- chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #2742
- chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #2750
- fix(nix): use pnpm_10_latest when nixpkgs has it by @giggio in #2759
- chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #2771
- chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #2784
- chore(i18n): sync translations from Weblate by @github-actions[bot] in #2787
New Contributors
- @Blakeinstein made their first contribution in #2590
- @coolapso made their first contribution in #2649
- @dobsondev made their first contribution in #2676
- @nalvazhvu made their first contribution in #2700
- @VMmatty made their first contribution in #2715
Full Changelog: v1.7.3...v1.8.0