💙 Support SparkyFitness
If SparkyFitness has been useful to you & your family, please consider supporting the project. Your support helps cover recurring costs such as AI coding tools, development infrastructure, and Apple & Google Developer Program memberships to keep the project actively maintained.
🚀 Key Highlights
- Unified versioning: Server, Web, and Mobile are now all v1.6.0, making it easier to identify compatible releases.
- Redesigned mobile workouts by @apedley. Thanks to everyone who shared feedback that helped improve the workout experience.
- Support for FIT file import is available now
- Add your food & exercises to Favorite option for easy logging.
- Period cycle & pregnancy tracking is now available in the mobile app.
- Entry time has been added to most logs. Set your preferred meal times, and the app will automatically detect the meal type.
- Settings have been reorganized, and CSV Import has been moved to Data Management.
- OIDC & Passkey authentication is now supported in the mobile app.
- Goals now include a Target Direction to indicate whether staying above or below the target is preferred.
- Numerous bug fixes, enhancements, and performance improvements across the project.
- Added a FAQ to the documentation to answer common questions and help new users get started.
⚠️ Backup before upgrading.
If you do not see the latest updates, please refresh the page or clear your browser cache.
⚠️ SparkyFitnessMCP - This is now decommissioned as it is now part of /mcp endpoint.
⚠️ Fitbit API is being replaced.
As Google is decommissioning the Fitbit API, it is being replaced with the Google Health API.
Fitbit support will be removed once decommissioning is complete.
⚠️ Use caution with write-back functionality.
⚠️ Though you don't need to immediately upgrade, in the upcoming months the Postgres upgrade will be mandated.
Have caution. Below guide might have flaws. Research yourself before performing the upgrade. Some funcationality like auto backup within SparkyFitness will not work if you don't upgrade.
https://codewithcj.github.io/SparkyFitness/install/postgres-upgrade
What's Changed
Features
- feat(reports): customize measurement charts via dashboard-layout system by @jsandai in #1736
- Implementation of OIDC, Passkey and dynamic login form based on global admin settings by @CodeWithCJ in #1735
- fix for medication tab by @CodeWithCJ in #1755
- feat(food-import): add overwrite option and drop quick-food from CSV import by @CodeWithCJ in #1761
- feat: update outbound URL policy for local networks by @apedley in #1764
- feat(health-import): CSV import for measurements, sleep, water import by @CodeWithCJ in #1766
- support french in YAZIO integration by @TheToto in #1778
- Indicate calendar days that have progress photos (#1759) by @zeusal in #1784
- feat(ai): auto-transcode HEIC/HEIF images to JPEG in the AI dispatcher by @jsandai in #1785
- feat(diary): implement local time-of-day logging for food, exercise and preset entries by @CodeWithCJ in #1782
- feat(food-search): include recent and frequent meals in the search landing by @jsandai in #1790
- feat(ai): add Meta as an AI provider by @jsandai in #1791
- feedbacks changes on entry_time PR by @CodeWithCJ in #1799
- workouts v2 polish + keyboard fixes by @apedley in #1792
- feat: add FIT file import for gamin devices by @apedley in #1793
- Chatbot optimization by @CodeWithCJ in #1807
- Workouts v2: Active Workout Screen And Live Activity by @apedley in #1812
- ci: publish documentation on release instead of push to main by @CodeWithCJ in #1816
- feat(mobile): include recent and frequent meals in the food search landing by @jsandai in #1806
- feat: android passkey+oidc fixes and server config layout fixes by @apedley in #1821
- feat: add scheduled hourly auto-sync for Hevy provider & search enhancements by @CodeWithCJ in #1817
- feat: measurement form placeholders and use last button by @apedley in #1826
- feat(openfoodfacts): support self-hosted OFF via provider settings by @petermcneil in #1658
- feat: add calories and macros to diary on mobile by @BryceKrispiess in #1808
- Added buttons for Clear, Now and Default for time entries for food & exercise while adding to diary by @CodeWithCJ in #1839
- Diary calories and macros on mobile - new by @BryceKrispiess in #1841
- feat: add self-service "delete synced data by source" in Data Management by @CodeWithCJ in #1845
- feat: add medication log calendar and reports log table by @CodeWithCJ in #1851
- diary page UI alignment & added edit/delete fasting and check-in tab optimization by @CodeWithCJ in #1858
- doc update for ios Mobile app dev and updated configuration to use env variables for bundle id & group ids by @CodeWithCJ in #1859
- feat: favorite (starred) foods and meals by @jsandai in #1837
- Added Calculation direction(Min, Max or Target) and Added Sugar algorithm by @CodeWithCJ in #1852
- feat(mobile): add daily nutrition details and nutrient trends screens by @CodeWithCJ in #1860
- add initial support for Oura by @elemated in #1846
- added cycle & pregnancy feature to mobile app by @CodeWithCJ in #1864
- feat(mobile): add editable entry time to food and meal logging by @CodeWithCJ in #1865
- feat(mobile): fasting history with view, edit & delete by @CodeWithCJ in #1866
- feat(mobile,web): implement public sharing toggles, status badges, and fix web badge fallthrough by @CodeWithCJ in #1867
- feat(mobile): show meal calorie targets in diary and meal detail views by @CodeWithCJ in #1868
- feat(mobile): sync diary date across Dashboard, Diary, and logging screens by @CodeWithCJ in #1869
- (feat) Import Mood using CSV file and Sync dates between Diary, Dashboard & Library sections in mobile app by @CodeWithCJ in #1876
- CSV Import for Food diary & Mood & Consolidated all CSV Imports into Data management in Settings tab by @CodeWithCJ in #1880
- feat(helm): key in existingSecret and valueFrom in extraEnv by @abelfodil in #1877
- feat(helm): add extraObjects support by @abelfodil in #1886
- feat: add nasal_spray medication type by @andersmmg in #1891
- feat(system): add remote broadcast announcements and unified version management by @CodeWithCJ in #1895
- announcement fix by @CodeWithCJ in #1896
- Announcement fix & updated whatsnew in mobile app by @CodeWithCJ in #1897
Fixes
- fix: allow trailing decimals in serving size input by @apedley in #1745
- fix: mobile search fixes by @BryceKrispiess in #1741
- fix(mobile): health connect time zone and multi integration fix by @apedley in #1756
- test: fix long running test waiting for debounce by @apedley in #1757
- fix(security): update executeCommand to use argv execFile by @apedley in #1758
- Fix for run time error while clearing nutrition input by @CodeWithCJ in #1762
- fix(meals): await attachFoodsToMeals in remaining read paths by @jsandai in #1794
- yazio improvements by @thorethy1 in #1739
- fix(mobile): add request timeouts to all network calls by @apedley in #1801
- reset to page 1 on food search change by @joeledwardson in #1811
- fix: make time control interactive for android by @apedley in #1822
- fix: permissions and privilage escalation issues by @apedley in #1828
- doc updates by @CodeWithCJ in #1832
- group synced workouts into preset sessions and map missing fields by @CodeWithCJ in #1840
- fix(yazio): add country/language matching user language by @TheToto in #1827
- fix: Added system prompt to AI ChatBOT by @CodeWithCJ in #1843
- hevy integrations fixes: rep types and sync by @l0r3v in #1849
- fix: allow logging the same exercise twice per day in diary by @CodeWithCJ in #1855
- fxied barcode to retrieve correct serving unit by @CodeWithCJ in #1857
- fix(ai): log external foods in the variant's own unit, not bare servings by @GraysonCAdams in #1878
- fix for CORS issues when using Cloudflare Tunnel by @CodeWithCJ in #1887
- fix(mobile): resolve trend chart date gaps, pregnant onboarding LMP, appointment UTC offsets, and custom meal targets and auto meal type based on default time by @CodeWithCJ in #1888
- fix for google health missing health in auto scheduled refresh by @CodeWithCJ in #1899
- fix(mobile): enforce package.json as single source of truth for app version by @CodeWithCJ in #1902
Documentation
- docs: update agent docs by @apedley in #1753
- (doc) coding assistant tool documentation improvement for better results by @CodeWithCJ in #1752
- docs: add Zenith to the Cloud hosting options by @odpay in #1714
- Updated part about HTTPS in the docs by @garakangas in #1830
Other Changes
- chore(nix): update pnpm deps hashes by @github-actions[bot] in #1747
- chore(nix): update pnpm deps hashes by @github-actions[bot] in #1788
- chore(nix): update pnpm deps hashes by @github-actions[bot] in #1800
- chore(nix): update pnpm deps hashes by @github-actions[bot] in #1804
- chore(nix): update pnpm deps hashes by @github-actions[bot] in #1814
- Revert "feat: add calories and macros to diary on mobile" by @CodeWithCJ in #1833
- TDEE Updates by @CodeWithCJ in #1893
- apple bundle id updates by @CodeWithCJ in #1898
- chore(i18n): sync translations from Weblate by @github-actions[bot] in #1900
- icon fix for expo widget by @CodeWithCJ in #1901
New Contributors
- @TheToto made their first contribution in #1778
- @odpay made their first contribution in #1714
- @joeledwardson made their first contribution in #1811
- @petermcneil made their first contribution in #1658
- @elemated made their first contribution in #1846
- @abelfodil made their first contribution in #1877
- @GraysonCAdams made their first contribution in #1878
- @andersmmg made their first contribution in #1891
Full Changelog: v0.17.3...v1.6.0