github CodeWithCJ/SparkyFitness v1.8.0

3 hours ago

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

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

Full Changelog: v1.7.3...v1.8.0

Don't miss a new SparkyFitness release

NewReleases is sending notifications on new releases.