Releases: CodeWithCJ/SparkyFitness
v0.17.2
If you do not see the latest updates, please refresh the page or clear your browser cache.
ChatBot will automatically connect to MCP if the AI service is configured.
MCP is now served directly from the /mcp endpoint, for example: domain.com/mcp.
Use this endpoint for external tools such as n8n, OpenClaw, and similar integrations.
The dedicated SparkyFitnessMCP container is still available from the previous release, but it will be removed in the upcoming release.
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.
Write-back support for Apple Health and Google Health is part of an initial release.
This feature may require multiple iterations before it becomes fully stable.
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
💙 Support SparkyFitness
Support development if you find SparkyFitness useful — There is approximately $99 in remaining project expenses from mac mini, apple & google fees.
What's Changed
Fixes
Full Changelog: v0.17.1...v0.17.2
v0.17.1
BREAKING CHANGE - MUST READ BELOW
If you do not see the latest updates, please refresh the page or clear your browser cache.
ChatBot will automatically connect to MCP if the AI service is configured.
MCP is now served directly from the /mcp endpoint, for example: domain.com/mcp.
Use this endpoint for external tools such as n8n, OpenClaw, and similar integrations.
The dedicated SparkyFitnessMCP container is still available from the previous release, but it will be removed in the upcoming release.
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.
Write-back support for Apple Health and Google Health is part of an initial release.
This feature may require multiple iterations before it becomes fully stable.
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
💙 Support SparkyFitness
Support development if you find SparkyFitness useful — There is approximately $99 in remaining project expenses from mac mini, apple & google fees.
What's Changed
Features
Full Changelog: v0.17.0...v0.17.1
v0.17.0
BREAKING CHANGE - MUST READ BELOW
If you do not see the latest updates, please refresh the page or clear your browser cache.
ChatBot will automatically connect to MCP if the AI service is configured.
MCP is now served directly from the /mcp endpoint, for example: domain.com/mcp.
Use this endpoint for external tools such as n8n, OpenClaw, and similar integrations.
The dedicated SparkyFitnessMCP container is still available from the previous release, but it will be removed in the upcoming release.
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.
Write-back support for Apple Health and Google Health is part of an initial release.
This feature may require multiple iterations before it becomes fully stable.
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
💙 Support SparkyFitness
Support development if you find SparkyFitness useful — There is approximately $99 in remaining project expenses from mac mini, apple & google fees.
What's Changed
Features
- feat: add Google Health API integration by @ZeSlammy in #1474
- feat(mobile): edit ingredients of a logged meal by @jsandai in #1482
- feat(mobile): YAZIO provider integration - mobile food search, barcode scan and serving display by @thorethy1 in #1480
- Extend MCP tools for structured food, exercise, goals, and report data by @lev-ok in #1485
- Mobile Bug fixes + additions by @BryceKrispiess in #1444
- feat: Add Duplicate action to the food Actions menu by @jsandai in #1511
- Sync nutrition diary from Garmin Connect + by @gPinato in #1506
- feat: add outbound proxy support for HTTPS requests by @apedley in #1520
- feat: Add off-today date cues by @geracobo in #1500
- feat(health-connect): ingest Android Health Connect nutrition as food entries by @izadiegizabal in #1503
- Adaptive & Manual Goal mode implementation by @CodeWithCJ in #1519
- added supported for USDA to import multiple unit type variants by @CodeWithCJ in #1538
- feat(ai): add exponential backoff for Gemini quota errors (429) by @zeusal in #1549
- Added ability to copy from/copy to foods & meals from family member. by @CodeWithCJ in #1556
- Removal of super user extensions in postgres by @CodeWithCJ in #1558
- feat(web): add barcode manual entry and camera scanning to custom food form by @CodeWithCJ in #1562
- Import BMR from mobile by @BryceKrispiess in #1521
- feat: add check-in progress photos (front, back, side) by @zeusal in #1533
- feat(health-connect): write nutrition & hydration back to Health Connect (Android) by @izadiegizabal in #1529
- swissfood implementation for mobile app by @CodeWithCJ in #1568
- Formatted Whats New dialog and also added BREAKING CHANGE warning by @CodeWithCJ in #1573
- github issue template update and pr transaltion automation from Spark… by @CodeWithCJ in #1578
- feat: mobile date context improvements by @geracobo in #1526
- feat(mobile): copy a logged meal to another day by @jsandai in #1574
- feat: apple health nutrition sync and writeback by @apedley in #1585
- fix(mobile): send Origin header during login to satisfy better-auth CSRF checks by @CodeWithCJ in #1589
- feature: Added Global Food & Exercise data provider. by @CodeWithCJ in #1590
- Mobile Fast Tracking by @apedley in #1598
- Added ability to view, modify custom nutrients in the food form and food detail screens. by @CodeWithCJ in #1593
- feat(writeback): remove SparkyFitness data from the OS health store (rollback) by @izadiegizabal in #1599
- added ability to hide/resize widgets on the diary page by @CodeWithCJ in #1604
- feat: add exercise water loss to daily goal and activity report stats by @gPinato in #1605
- Add NixOS module by @dlip in #1602
- Add NixOS module by @CodeWithCJ in #1609
Fixes
- fix(mobile): show active calories by @apedley in #1499
- Keep nutrition fields editable when Auto-Scale is on by @jsandai in #1513
- fix: DATE column timezone shift by @apedley in #1518
- fix(measurements): repair DELETE /measurements/check-in/{id} (500 on every delete) by @bamonroe in #1530
- fix(foods): close Edit Food dialog correctly when cancelling past enrties sync by @CodeWithCJ in #1534
- fix: support user weight units in active workout playback and preset stats by @CodeWithCJ in #1535
- Backup setting fixes for web by @BryceKrispiess in #1537
- Next/prev month buttons on android not showing in dark/Amoled by @BryceKrispiess in #1528
- Fix zero body measurements from Garmin overwriting valid historical data by @gPinato in #1542
- Check in error/bug fixes by @BryceKrispiess in #1546
- split child RLS policies and enforce ownership check on variant deletion by @CodeWithCJ in #1552
- fix(server): resolve adaptive TDEE overestimation, tighten safety cap to ±500 kcal, and downgrade confidence for young trackers or logging gaps by @CodeWithCJ in #1555
- Fix garmin nutrition sync data loss by @gPinato in #1544
- Use adjusted calorie goal for summary and per meal targets by @gPinato in #1543
- fix(tandoor): handle literal "null" string and malformed source_url in recipe mapping by @CodeWithCJ in #1559
- fix(mobile): only show updated measurements on diary by @apedley in #1567
- fix for AI ChatBot using old 50 messages isntead of recent 50 messages. by @CodeWithCJ in #1570
- fix for missing nutritional value while creating meal via ChatBot by @CodeWithCJ in #1577
- fix(server): simplify meal retrieval by leveraging RLS for family library sharing by @CodeWithCJ in #1582
- fix(auth): resolve OIDC group sync, provider endpoint mapping, and client token auth issues by @CodeWithCJ in #1583
- fix: do not count both active calories and workouts by @apedley in #1588
- fix(garmin): resolving authentication usage by @dhruvinsh in #1603
Documentation
- external database doc update. by @CodeWithCJ in #1565
Other Changes
- Subtract dietary fiber caloric contribution from calorie target before calculating macro targets by @CodeWithCJ in #1531
- added pretieer for translation PR workflow by @CodeWithCJ in #1580
- chore(i18n): sync translations from Weblate by @github-actions[bot] in #1581
New Contributors
v0.16.9
BREAKING CHANGE
💙 Support SparkyFitness
Support development if you find SparkyFitness useful — There is approximately $158.58 in remaining project expenses.
🚀 New providers added: Yazio, Norish & Swish Food Database.
Add these under MCP container section.
SPARKY_FITNESS_SERVER_HOST: ${SPARKY_FITNESS_SERVER_HOST:-sparkyfitness-server}
SPARKY_FITNESS_SERVER_PORT: ${SPARKY_FITNESS_SERVER_PORT:-3010}
SPARKY_FITNESS_FRONTEND_URL: ${SPARKY_FITNESS_FRONTEND_URL:-http://0.0.0.0:3004}
You only needs these to be again added to MCP section if you had used these for Server container. Otherwise, you can skip these.
ALLOW_PRIVATE_NETWORK_CORS: ${ALLOW_PRIVATE_NETWORK_CORS:-false}
SPARKY_FITNESS_EXTRA_TRUSTED_ORIGINS: ${SPARKY_FITNESS_EXTRA_TRUSTED_ORIGINS:-}
Refer the updated docker compose as reference if above instruction is not clear.
What's Changed
Features
- Add update_exercise_entry action to MCP exercise tool by @Sapd in #1428
- Expose RPE, per-set notes, and cardio fields over the MCP exercise tool by @Sapd in #1430
- updated api doc to include public accessable and fixed API key auth issue in swagger UI by @CodeWithCJ in #1451
- Feature/yazio provider 1442 by @thorethy1 in #1458
- [Feature] Integration with Norish by @CodeWithCJ in #1464
- norish food provider integration - removal of any declaration by @CodeWithCJ in #1465
- [Feature]: Allow multiple images per AI food photo estimate by @jsandai in #1409
- Integration with Swiss Food Database provider by @CodeWithCJ in #1471
Fixes
- Fix empty MCP input schema on discriminated-union tools (manage_goals, etc.) by @Sapd in #1411
- fix(#1417): round set duration to the nearest minute by @fvtronics in #1418
- fix for sleep report error when sleep stage is not avialable from helth connect by @CodeWithCJ in #1422
- Garmin MFA & wider date range sync issue fix by @CodeWithCJ in #1423
- Fix average sleep time when bedtimes cross midnight by @Burton-David in #1416
- Withing sync to accept date range and sleep event in API permission by @CodeWithCJ in #1437
- Add unique (user_id, entry_date) indexes for check-in and mood tables (fixes #1424) by @Sapd in #1439
- docker health endpoint fix for MCP server by @CodeWithCJ in #1443
- User management fixes in ADMIN tab by @CodeWithCJ in #1445
- fix: add missing $27 placeholder for traces column in bulk food import by @o-Oby in #1427
- Corrected goal logic in diary page to handle adaptive TDEE and show accurate error message by @CodeWithCJ in #1446
- update swagger-jsdoc apis globs to scan TypeScript sources and nested… by @AlexBevan in #1447
- Swagger doc fixes by @CodeWithCJ in #1449
- removed swagger from public url by @CodeWithCJ in #1450
- fix(docker): update backend entrypoint to index.js to support secret files by @CodeWithCJ in #1452
- docker backend fix by @CodeWithCJ in #1453
- Tandoor nutrition fix for other languages by @CodeWithCJ in #1454
- test script fix for tandoor by @CodeWithCJ in #1455
- added ability save 6 months goals by grams or percetnage. by @CodeWithCJ in #1456
- fix: add cache: 'no-store' to all fetch to prevent empty 304 by @apedley in #1457
- perf: optimize sleep session db storage calls by @apedley in #1466
- fix: mobile banner and healthconnect source fixes by @apedley in #1470
- MCP direct API fix by @CodeWithCJ in #1472
New Contributors
- @Sapd made their first contribution in #1411
- @fvtronics made their first contribution in #1418
- @Burton-David made their first contribution in #1416
- @GasimGasimzada made their first contribution in #1431
- @AlexBevan made their first contribution in #1447
- @thorethy1 made their first contribution in #1458
Full Changelog: v0.16.8...v0.16.9
v0.16.8
💙 Support SparkyFitness
Support development if you find SparkyFitness useful — There is $168.58 in remaining project expenses.
Have caution. Below guide might have flaws. Research yourself before performing the upgrade.
https://codewithcj.github.io/SparkyFitness/install/postgres-upgrade
Add these under MCP container section.
SPARKY_FITNESS_SERVER_HOST: ${SPARKY_FITNESS_SERVER_HOST:-sparkyfitness-server}
SPARKY_FITNESS_SERVER_PORT: ${SPARKY_FITNESS_SERVER_PORT:-3010}
SPARKY_FITNESS_FRONTEND_URL: ${SPARKY_FITNESS_FRONTEND_URL:-http://0.0.0.0:3004}
You only needs these to be again added to MCP section if you had used these for Server container. Otherwise, you can skip these.
ALLOW_PRIVATE_NETWORK_CORS: ${ALLOW_PRIVATE_NETWORK_CORS:-false}
SPARKY_FITNESS_EXTRA_TRUSTED_ORIGINS: ${SPARKY_FITNESS_EXTRA_TRUSTED_ORIGINS:-}
Refer the updated docker compose as reference if above instruction is not clear.
What's Changed
Fixes
- Fix for missing user id column in food variant by @CodeWithCJ in #1407
Full Changelog: v0.16.7...v0.16.8
v0.16.7
⚠️ Important:
Have caution. Below guide might have flaws. Research yourself before performing the upgrade.
https://codewithcj.github.io/SparkyFitness/install/postgres-upgrade
Add these under MCP container section.
SPARKY_FITNESS_SERVER_HOST: ${SPARKY_FITNESS_SERVER_HOST:-sparkyfitness-server}
SPARKY_FITNESS_SERVER_PORT: ${SPARKY_FITNESS_SERVER_PORT:-3010}
SPARKY_FITNESS_FRONTEND_URL: ${SPARKY_FITNESS_FRONTEND_URL:-http://0.0.0.0:3004}
You only needs these to be again added to MCP section if you had used these for Server container. Otherwise, you can skip these.
ALLOW_PRIVATE_NETWORK_CORS: ${ALLOW_PRIVATE_NETWORK_CORS:-false}
SPARKY_FITNESS_EXTRA_TRUSTED_ORIGINS: ${SPARKY_FITNESS_EXTRA_TRUSTED_ORIGINS:-}
Refer the updated docker compose as reference if above instruction is not clear.
What's Changed
Features
- feat(mobile): equivalent serving sizes by @apedley in #1319
- chore: update expo to v55 by @apedley in #1331
- Feat/mobile net carbs by @jsandai in #1339
- feat(mobile): fix food search for smaller screens by @apedley in #1351
- feat: add error handling for fatsecret by @apedley in #1374
- Updated chatbot to use MCP server by @CodeWithCJ in #1377
- feat(mobile): add Camera shutter toggle in App Settings by @jsandai in #1381
- feat(mobile): add gallery picker to food photo estimate by @jsandai in #1376
- feat: AI assisted conversions by @BryceKrispiess in #1324
- Added support for multiple images in AI Chatbot. by @CodeWithCJ in #1401
- feat(#1014): allergen tracking from OpenFoodFacts with user preferences and warning badges by @bulkinglb in #1370
Fixes
- fix(ci): attach files to releases with correct pnpm version by @apedley in #1330
- fix(#1290): use custom identity endpoint for email change by @bulkinglb in #1333
- fix(mcp): publish proper inputSchema for sparky_manage_* tools by @ATECHPCS in #1343
- fix: add patches and shared to docker by @apedley in #1352
- Adjusted slider behavior at personalplan.tsx by @Tronus1409 in #1357
- fix(mobile): don't send etag to prevent cache issues by @apedley in #1360
- fix(mobile): update healthkit record sync to capture distance by @apedley in #1368
- fix for MCP Server double-scales logged food nutrients in the diary by @CodeWithCJ in #1369
- PolarFlow API replacement by @CodeWithCJ in #1383
- polar api endpoint fixes by @CodeWithCJ in #1392
- fix: preserve model name on AI Service by @BryceKrispiess in #1386
- Gemini feedback on bcryptjs changes by @CodeWithCJ in #1394
- support for x64 and arm64 images due to docker optimization by @CodeWithCJ in #1396
- Updated chatservice to Forward proxy headers so Better Auth accepts secure cookies over internal HTTP by @CodeWithCJ in #1397
- better-auth proxy forward issue between server and mcp server to handle non-https route by @CodeWithCJ in #1399
- Fix Health Connect body fat sync mapping by @geracobo in #1403
Documentation
- docs(#1346): add build from source instructions to README by @bulkinglb in #1349
Other Changes
- Updated bcrypt to bcryptjs and optimized Dockerfile.backend for better speed. by @CodeWithCJ in #1393
- Delete SparkyFitnessServer/db/migrations/20260527120000_add_allergens… by @CodeWithCJ in #1402
New Contributors
- @bulkinglb made their first contribution in #1333
- @Tronus1409 made their first contribution in #1357
- @geracobo made their first contribution in #1403
Full Changelog: v0.16.6.3...v0.16.7
v0.16.6.3
Have caution. Below guide might have flaws. Research yourself before performing the upgrade.
https://codewithcj.github.io/SparkyFitness/install/postgres-upgrade
💙 Support SparkyFitness
Support development if you find SparkyFitness useful — There is $199.58 in remaining project expenses.
What's Changed
Features
- feat: food photo estimation by @apedley in #1297
- feat(mobile): fix exercise session calorie source selection by @apedley in #1299
- feat: add "Show Net Carbs" preference toggle by @jsandai in #1298
- feat(mobile): prefill last workout stats and show personal best by @apedley in #1307
- feat(mobile): add barcode to existing foods by @apedley in #1309
- feat(mobile): what's new screen by @apedley in #1311
- feat(onboarding): external food providers and theme updates by @apedley in #1313
- updated lanague utils for SparkyFitness by @CodeWithCJ in #1315
Fixes
- fix: auto scale nutrition option for barcode and label scans by @apedley in #1291
- chore: add minimum release age for pnpm by @apedley in #1300
- fix: short-circuit API-key rate-limit lockout (#1302) by @jsandai in #1306
- fix(toast): surface backend error detail in mutation toast by @ATECHPCS in #1304
- fix: enable russian language by @m0nstrum in #1310
Other Changes
- privacy policy update by @CodeWithCJ in #1316
Credit for this goes to @apedley
New Contributors
- @jsandai made their first contribution in #1298
- @ATECHPCS made their first contribution in #1303
- @m0nstrum made their first contribution in #1310
Full Changelog: v0.16.6.2...v0.16.6.3
v0.16.6.2
Have caution. Below guide might have flaws. Research yourself before performing the upgrade.
https://codewithcj.github.io/SparkyFitness/install/postgres-upgrade

💙 Support SparkyFitness
Support development if you find SparkyFitness useful
What's Changed
Features
- feat(1216): add auto scale nutrition feature to food form by @apedley in #1240
- feat: add long press dialogs and android nav bar consideration by @apedley in #1242
- feat(diary): add CSV export of food diary entries by @o-Oby in #1229
- feat: app settings redesign by @apedley in #1244
- feat(helm): Release chart 0.3.0 — hardening, robustness, CI by @haferbeck in #1251
- feat(mobile): add measurement icons by @apedley in #1252
- feat: workout playback for frontend by @Sim-sat in #1268
- feat(mobile): allow swapping water container from the dashboard by @G5K-org in #1248
- Feat/water intake detailed log by @o-Oby in #1254
- Implementation of MCP server and related docker file updates by @CodeWithCJ in #1275
- MCP Server improvements. by @CodeWithCJ in #1284
- Adding auto converting units to App by @BryceKrispiess in #1261
- Improve meal logic on mobile/web by @BryceKrispiess in #1289
- Translation file updates - community contribution by @CodeWithCJ in #1286
Fixes
- fix(garmin): missing steps, uppercase names, missing categories, duplicate sets by @Sim-sat in #1239
- make wger import paths relative by @Thovi98 in #1225
- fix(helm) Working helm chart with many enhancements by @ikogan in #1184
- fix(mobile): show Start Workout button for workout plan sessions by @G5K-org in #1247
- fix(server): delete exercise_preset_entries on plan deactivation to prevent duplicates by @G5K-org in #1246
- fix: Auto-scale and unit conversions by @BryceKrispiess in #1265
- fix(mobile): add finish button to workout complete banner by @G5K-org in #1245
- fix(web): adaptive tdee daily energy goal use server calculation by @apedley in #1269
- Fix(strava): round float average_heartrate before insert by @CodeWithCJ in #1273
- fix(1264): improve sleep consistency chart's readability by @Sim-sat in #1271
- fix: revert individual measurement reports removal by @Sim-sat in #1274
- fix(mobile): app meal managment correct routes by @apedley in #1276
- docker backend file update fix for postgres version. by @CodeWithCJ in #1277
- fix(mobile): unlink serving and serving size when creating custom food by @apedley in #1281
- fix(diary): resolve image persistence, V2 API mapping, and ESM/Windows path resolution issues by @CodeWithCJ in #1282
- fix(mobile): dark mode tweaks and correct library wording by @apedley in #1288
- docker postgres version fix by @CodeWithCJ in #1278
- fix for water intake when no default container exists by @CodeWithCJ in #1285
New Contributors
Full Changelog: v0.16.6.1...v0.16.6.2
v0.16.6.1
Have caution. Below guide might have flaws. Research yourself before performing the upgrade.
https://codewithcj.github.io/SparkyFitness/install/postgres-upgrade
💙 Support SparkyFitness
Support development if you find SparkyFitness useful
What's Changed
Fixes
- fix: crypto.randomUUID is not a function by @Sim-sat in #1227
- fix: calendar dropdown missing by @Sim-sat in #1228
- fix(1214): prevent re-presenting AddSheet after dismiss by @apedley in #1231
- fix: assume decimal for period and comma in number inputs by @apedley in #1232
Full Changelog: v0.16.6.0...v0.16.6.1
v0.16.6.0
Have caution. Below guide might have flaws. Research yourself before performing the upgrade.
https://codewithcj.github.io/SparkyFitness/install/postgres-upgrade
💙 Support SparkyFitness
Support development if you find SparkyFitness useful
Full Changelog: v0.16.5.9...v0.16.6.0
version fix #1215