github CodeWithCJ/SparkyFitness v1.9.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

  • Adaptive calorie budgets: Dynamic Goal and Percentage Earn-Back no longer add activity calories or optional BMR credit to an Adaptive target a second time. Remaining calories may be lower after upgrading because these duplicate credits are removed. Recorded activity remains visible, and Manual targets retain their existing earn-back behavior.

What's Changed

Features

  • feat(mobile): supplement barcode scanning by @Jerrys-modz in #2796
  • feat(mobile): add Lock Screen widgets and controls for calories, water, fasting and food- #133 by @Jerrys-modz in #2814
  • feat(exercises): add a warm-up set generator to the active workout by @Jerrys-modz in #2795
  • feat(mobile): log a mood check-in and show it on the dashboard by @Jerrys-modz in #2820
  • feat(mobile): add an iOS water widget with a log-a-drink button by @Jerrys-modz in #2822
  • feat(mobile): fill in a supplement from a photo of its label by @Jerrys-modz in #2816
  • Feat(mobile): Celebrate personal records on the watch by @Jerrys-modz in #2824
  • Feat(watch): log effort (RPE) after a set by @Jerrys-modz in #2827
  • feat(mobile): show the exercise, set, and target on the workout Live Activity by @Jerrys-modz in #2828
  • Feat (Mobile): add fasting settings and fasting report by @Jerrys-modz in #2830
  • feat(mobile): create and edit workout plans by @Jerrys-modz in #2842
  • feat(mobile): GLP-1 injection tracking by @Jerrys-modz in #2844
  • feat(watch): add Fasting and Steps pages, fasting from the wrist, and macro, fasting and steps complications by @Jerrys-modz in #2845
  • Feat(mobile): Add water tracking settings to the mobile water containers screen by @Jerrys-modz in #2847
  • Feat(watch): medications page by @Jerrys-modz in #2850
  • feat(mobile): record GPS activities (walk, run, ride) by @Jerrys-modz in #2855
  • feat(watch): edit the running workout from the watch: add and delete sets and exercises, set type by @Jerrys-modz in #2858
  • feat: weight trend, weekly rate and projected goal date on the web Reports chart and the mobile dashboard by @Jerrys-modz in #2865
  • feat(mobile): auto-pause, voice cues, laps, start countdown and pace chart for GPS recording by @Jerrys-modz in #2864
  • Feat(mobile): goals screen by @Jerrys-modz in #2871
  • Feat(mobile): reports hub by @Jerrys-modz in #2872
  • feat(mobile): record indoor sessions and estimate their distance from steps by @Jerrys-modz in #2874
  • feat(watch): record a walk or run, indoors or out, from the watch alone by @Jerrys-modz in #2876
  • feat(mobile): timed interval plans (run/walk, speed repeats) for GPS recordings by @Jerrys-modz in #2875
  • feat(mobile): show the water from food on the watch Water page by @Jerrys-modz in #2878
  • feat: optional run programs (Beginner 5K to marathon) that Sparky can adjust, and open recorded runs from the diary by @Jerrys-modz in #2884
  • feat(watch): walks and runs on the Apple Watch with plans, live view, phone start, toggles, pace and heart-rate alerts, Live Activity, GPX export, treadmill calibration and personal records by @Jerrys-modz in #2890
  • feat(chat): add editable voice dictation on web and mobile by @romanchenkop in #2755
  • feat: add daily steps goal by @Jerrys-modz in #2899
  • feat: training load, and a run program that adapts (ease back after a break or a spike, effort rating in the Diary by @Jerrys-modz in #2910
  • feat: coaching audio for runs on the phone and the watch (program-aware, countdown, milestones, suggested ranges) by @Jerrys-modz in #2905
  • feat(mobile): allergen settings, food badges, and scan warnings by @Jerrys-modz in #2906
  • feat(nutrition): add Swedish Food Agency (Livsmedelsverket) integration by @nalvazhvu in #2911
  • feat: interval steps by distance (6 × 400 m, 5 × 1 km, custom, metres or miles) by @Jerrys-modz in #2909
  • feat(mobile): scan nutrition labels while editing foods by @Bl4nk24 in #2916
  • feat(mobile): program calendar, your own plans and race plans by @Jerrys-modz in #2926
  • feat: add running shoe inventory with mileage tracking by @Jerrys-modz in #2925
  • feat: running trends (weekly mileage, long run, efficiency, race time estimates) on mobile and web, and a pace chart in the web cardio list by @Jerrys-modz in #2931
  • feat(mobile): symptom severity chart, calendar and episode detail by @Jerrys-modz in #2943
  • feat: nine more training programs, 3 or 4 run choice, race-based pace ranges and new workout types by @Jerrys-modz in #2946
  • feat(mobile): manage custom nutrients, nutrient display and custom nutrient goals by @Jerrys-modz in #2944
  • feat(frontend): compare and time-lapse progress photos on the web by @zeusal in #2965
  • feat(mobile): register Turkish (tr) as a shipped locale by @tugkanboz in #2959
  • feat: add GPT-6 reasoning settings and cited food research by @MetalHepple in #2807
  • feat: add recoverable food tasks and lasting preferences by @MetalHepple in #2808
  • feat(mobile): add app icon quick actions and Quick Settings tiles on Android by @zeusal in #2989
  • feat(mobile): add configurable "Remind in" medication snooze by @vcdx71 in #3005
  • feat(mobile): optional energy and focus ratings and a journal box on the mood check-in by @Bubbles840 in #3012
  • feat(server): several mood check-ins per day behind a version header by @Bubbles840 in #3013
  • feat(google-health): attach overnight HRV and resting heart rate to sleep entries by @Bubbles840 in #3003
  • feat(frontend): show the day's mood check-ins with add, edit and delete by @Bubbles840 in #3016
  • feat(mobile): rework the exercise History tab and use logged effort (RPE) by @Jerrys-modz in #3008
  • feat(mobile): add Top Sources card to nutrient trends by @Jerrys-modz in #3009
  • feat(mobile): record cadence and stride length on phone-recorded runs, and share a workout as an image overlay by @Jerrys-modz in #3014
  • feat(mobile): add the Android water widget by @zeusal in #3020
  • feat(health-connect): attach overnight HRV and resting heart rate to sleep by @Bubbles840 in #3019
  • feat(mobile): log several mood check-ins a day with a day view by @Bubbles840 in #3018
  • feat(routes): saved routes library by @Jerrys-modz in #3022

Fixes

  • fix(mobile): align placeholders and plural forms in German locale by @nalvazhvu in #2788
  • ci(android): increase Gradle heap memory to prevent OOM during release packaging by @nalvazhvu in #2799
  • fix(ci): ensure newline when appending gradle caching property by @nalvazhvu in #2803
  • fix(integrations): make sleep, custom category and check-in writes safe when they overlap by @SisyphusMD in #2777
  • fix(workout-plans): keep workouts logged from a plan when it is edited or toggled by @DUC750 in #2781
  • fix(mobile): only ask to update a preset when its structure changed, and ask on the watch when Finish is tapped by @Jerrys-modz in #2794
  • fix(goals): edit goal weight from the Goals page by @Jerrys-modz in #2817
  • fix(frontend): constrain calendar month and year dropdowns by @D1822787566 in #2818
  • fix(frontend): stop browser page translation from crashing the web app by @DUC750 in #2832
  • fix(ai): support Claude Haiku/Sonnet/Opus 5.5 on Anthropic by @yuisheaven in #2837
  • fix(workouts): give each exercise its own time and duration in live sessions by @DUC750 in #2843
  • fix(garmin): persist total_calories from daily summary sync by @cpruijsen in #2813
  • fix(health-data): copy resting heart rate and VO2 max into the daily wearable summary by @DUC750 in #2846
  • fix(ai): use JSON mode for DeepSeek OpenAI-compatible endpoints by @liavah in #2852
  • fix(mcp): don't count servings twice when the diary reference is in servings by @DUC750 in #2854
  • fix(workouts): keep the stored duration of resumed exercises by @DUC750 in #2848
  • fix: classify stair workouts and show floors climbed and elevation gain by @Jerrys-modz in #2861
  • fix(workouts): keep preset session exercises in their planned order by @Jerrys-modz in #2877
  • fix(server): keep the heart rate series a watch sends with a run by @Jerrys-modz in #2879
  • fix(watch): un-log a set from the watch, and follow an un-log made on the phone by @Jerrys-modz in #2880
  • fix(ai): downscale oversized food photos and handle patch limit errors by @nalvazhvu in #2882
  • fix(mobile): keep the mindfulness modals clear of the Android system bars by @zeusal in #2892
  • fix(mobile): build production iOS on the Xcode 27 image by @Jerrys-modz in #2889
  • fix(mobile): handle Android Back in the Add sheet by @zeusal in #2895
  • Localize onboarding using selected language by @Yukixu0106666 in #2891
  • fix(server): convert the chatbot's mood score to the scale it is stored on by @zeusal in #2508
  • fix(i18n): make hardcoded web strings and symptom chips translatable by @Jerrys-modz in #2893
  • fix(settings): keep a hydration factor of 0 when saving a drink preset by @developerjillur in #2907
  • fix(mobile): use a CJK-capable font for iOS chart axis labels by @Jerrys-modz in #2914
  • Fix Sparky voice input failing on bare 'en' locale by @Jerrys-modz in #2922
  • fix(check-in): align measurement inputs across columns by @romanchenkop in #2923
  • fix(mobile): recover from unregistered activity result launcher on photo picker by @nalvazhvu in #2932
  • fix(mobile): prevent Apple Health meal import double-counting by @nalvazhvu in #2933
  • fix(server): keep sports without a distance standard out of the perso… by @Jerrys-modz in #2930
  • fix(mobile): keep the set keyboard bar above Android's navigation bar by @zeusal in #2942
  • fix(usda): map Vitamin A using RAE nutrient id 1106 by @nalvazhvu in #2947
  • Fix FIT import dating activities 20 years ahead by @Elvan-DUVAL in #2962
  • fix(food): define named portions on web and mobile by @Bl4nk24 in #2919
  • fix(calories): avoid duplicate activity and resting-only workout credit by @Bl4nk24 in #2940
  • fix: save diary meals with unlinked or zero-quantity ingredients by @MetalHepple in #2901
  • fix(mobile): allow label library without camera permission by @Bl4nk24 in #2980
  • fix(fatsecret): keep the OAuth error code on token rejections so premier entitlement failures start the cooldown by @SisyphusMD in #2977
  • fix(googlehealth): store activity minutes from Google's daily rollups, read core temperature from temperatureCelsius by @benjamin-m-holden in #2969
  • fix(frontend): honor the 24-hour time format preference in time fields by @0xN1C04ND3 in #2974
  • fix(mobile): re-request Apple Health access so existing installs grant caffeine by @SisyphusMD in #2971
  • fix(exercise): estimate calories when the log dialog field is left blank by @Jerrys-modz in #2983
  • Feature: Keep adaptive goal mode when saving macro-only goal changes by @Jerrys-modz in #2984
  • fix(frontend): start date picker weeks on the Start Day of the Week preference by @0xN1C04ND3 in #2987
  • fix(exercises): relax strictness on exercise entry and progress response schemas by @nalvazhvu in #2992
  • fix: verify food portions and provider identity before logging by @MetalHepple in #2806
  • fix(mobile): handle Android medication notification actions in backgr… by @vcdx71 in #2985
  • fix(garmin): answer the pending MFA challenge instead of signing in again by @SisyphusMD in #2995
  • fix(api-docs): quote the run-program swagger description by @SisyphusMD in #2997
  • fix(tdee): cache adaptive TDEE for 5 minutes instead of an hour by @SisyphusMD in #2999
  • fix(backup): delete the uploaded archive after a restore by @SisyphusMD in #3000
  • fix(mobile): apply progression to workouts started from the watch by @Jerrys-modz in #3010
  • fix(nix): fix obsolete system reference by @giggio in #3015
  • fix(mobile): keep the calorie and macro widgets' midnight refresh going after a failed redraw by @zeusal in #3021
  • fix(frontend): hide the token expiry for providers that refresh it automatically by @SisyphusMD in #3023

Other Changes

  • chore(umbrel): update app package to v1.8.0 by @github-actions[bot] in #2791
  • chore(helm): update chart version to v1.8.0 by @github-actions[bot] in #2790
  • chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #2805
  • chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #2809
  • chore(nix): update pnpm deps hashes by @github-actions[bot] in #2887
  • chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #2888
  • chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #2902
  • chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #2903
  • chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #2904
  • chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #2924
  • chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #2928
  • chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #2945
  • chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #2981
  • chore(nix): update pnpm deps hashes by @github-actions[bot] in #2990
  • chore(i18n): sync translations from Weblate by @github-actions[bot] in #2991
  • chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #2993
  • chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #3017
  • chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #3024
  • chore(i18n): sync translations from Weblate by @github-actions[bot] in #3025

New Contributors

Full Changelog: v1.8.0...v1.9.0

Don't miss a new SparkyFitness release

NewReleases is sending notifications on new releases.