github CodeWithCJ/SparkyFitness v1.12.0

one hour ago

πŸ’™ Support SparkyFitness

Planning to buy an Android phone for app development and testing πŸ“± Your sponsorship helps cover the cost. Thank you for your support! πŸ™

If SparkyFitness has been useful to you & your family, please consider sponsoring on GitHub or supporting via Ko-fi. Your support helps cover recurring costs such as AI coding tools, development infrastructure, and Apple & Google Developer memberships to keep the project actively maintained.


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

  • Lab test result management
  • NFC tags for Food & Water logging.

What's Changed

Features

  • feat: add tag.sparkyfitness.com site for NFC tag links by @CodeWithCJ in #3310
  • feat: list the dev app in the tag site's iPhone link file by @CodeWithCJ in #3313
  • feat: add a setting to read iPhone active calories from the Move ring by @SisyphusMD in #3309
  • feat(mobile): build the Wear OS app in the EAS production workflow by @CodeWithCJ in #3305
  • feat: log water by tapping an NFC tag by @CodeWithCJ in #3316
  • feat(mobile): add keyless MapLibre OpenStreetMap map rendering on Android by @Irohoho in #3256
  • feat(helm): safe defaults above one server replica by @SisyphusMD in #3302
  • feat(server): add a readiness endpoint and use it for the Docker health check by @SisyphusMD in #3300
  • feat(google-health): attach tracker heart rate to workouts logged in SparkyFitness by @MegaIndian in #3320
  • feat(goals): optionally adjust percentage macros with exercise calories by @Bl4nk24 in #3134
  • feat(mobile): lab results screens by @Jerrys-modz in #3330
  • feat(hevy): add evening sync and import muscle groups by @Bl4nk24 in #3236
  • feat: add OpenCode GO AI provider by @ikogan in #3283
  • feat(watch): send typed weight and reps to the phone before the set i… by @Jerrys-modz in #3351
  • feat: import lab results from a report by @Jerrys-modz in #3355
  • feat(server): run each scheduled job tick on one instance by @SisyphusMD in #3358
  • feat(mobile): show the effect on the day over an episode in the symptom chart by @DUC750 in #3336
  • feat(mobile): show the day's logged drinks from the hydration card by @zelphir in #3352
  • feat(auth): add an admin switch for magic link login and remove the broken email OTP plugin by @SisyphusMD in #3384
  • feat(server): add a write route for passive health metric samples by @DUC750 in #3304
  • Feat(web): lab results by @Jerrys-modz in #3374
  • feat(mobile): optional one-exercise focus view for the active workout by @zelphir in #3348
  • feat(backup): restore a backup with every instance running by @SisyphusMD in #3398
  • feat(backup): restore a backup with every instance running by @SisyphusMD in #3406
  • feat(mobile): upload all-day heart rate readings during sync by @Jerrys-modz in #3407
  • feat(mobile): add trend, day timeline and range timeline to the mobile heart rate report by @Jerrys-modz in #3408
  • feat: log a food or a saved meal by tapping an NFC tag by @CodeWithCJ in #3411
  • feat(mobile): show overnight HRV and skin temperature on the mobile sleep detail screen by @Jerrys-modz in #3409
  • feat(helm): run every server replica in one Deployment by @SisyphusMD in #3410
  • feat(mobile): add in-place barcode scan recovery by @Bl4nk24 in #3394
  • feat(symptoms): show the effect on the day in the symptom report and CSV export by @DUC750 in #3414
  • feat(food): let the food search dialog use 90% of the window height on desktop by @zeusal in #3428
  • feat(garmin): show real last sync, sync failures and service reachabi… by @stoamandl in #3429
  • feat: add glucose timelines and saved display units +glucos CGM by @p1ranha in #3427
  • feat(settings): support kilojoules (kJ) energy unit preference across web, mobile, watch and widgets by @CodeWithCJ in #3452
  • feat(server): send emails in the recipient's language by @DUC750 in #3453
  • feat(i18n): connect server email templates to translation sync workflow by @CodeWithCJ in #3455
  • feat(reports): enable dashboard widget customization for nutrients report by @CodeWithCJ in #3454
  • feat: calorie cycling for training and rest days by @CodeWithCJ in #3466
  • feat(oral-care): oral care tracking, brushing timer, reports, and sync by @CodeWithCJ in #3474
  • feat(mobile): add lab results and NFC tags to What's New by @CodeWithCJ in #3482

Fixes

  • fix: add App Store and TestFlight links to the tag landing page by @CodeWithCJ in #3312
  • fix(mobile): pair saved exercises with the server reply by id by @Jerrys-modz in #3307
  • fix(symptoms): show an episode on every day it covers in the calendar by @zeusal in #3327
  • chore(mobile): bump react-native-reanimated to 4.5.5 by @Jerrys-modz in #3308
  • fix(mobile): route map layer order, preview padding, and screen header safe insets by @Irohoho in #3329
  • fix(exercise): lock the workout row when an edit rereads it by @SisyphusMD in #3317
  • fix: keep whole stones and feet when converting back from kg and cm by @jayhemnani9910 in #3331
  • fix(server): honor daily sync frequency and keep last_sync_at after failed syncs by @stoamandl in #3296
  • fix(backup): restore beside the live database and swap it in by @SisyphusMD in #3342
  • fix(frontend): store a real image path for preset exercises by @zeusal in #3356
  • fix(server): keep env OIDC issuer URL as configured by @Shrub24 in #3353
  • fix(mobile): bump react-native-reanimated to 4.7.1 and worklets to 0.… by @Jerrys-modz in #3354
  • fix(foods): keep bulk food import progress in the database by @SisyphusMD in #3359
  • fix(sleep): keep a stored sleep measurement the sync omits by @SisyphusMD in #3360
  • fix(health): keep logged workouts when a health import has no source by @CodeWithCJ in #3375
  • fix(mobile): split a timed-out history import window instead of retrying it by @CodeWithCJ in #3377
  • fix(food-search): rank brand searches and relevant foods first by @CodeWithCJ in #3383
  • fix(family): honor stored grants in the on-behalf-of header and let symptoms-only members switch accounts by @SisyphusMD in #3381
  • fix(mobile): say the server can't be reached instead of "No server configured" by @CodeWithCJ in #3386
  • fix(frontend): save drink and dose times correctly on clock-change days by @CodeWithCJ in #3392
  • fix(ai): give check-in tools local times and keep their results small by @CodeWithCJ in #3393
  • fix(health-connect): surface workout calorie read failures by @Bl4nk24 in #3369
  • fix(ai): salvage cross-action key bleed in exercise tools instead of rejecting the call by @cheetahspot3 in #3341
  • fix(ai): accept longer ask-user options by @dajiaohuang in #3380
  • fix(compare): keep noun capitals in German metric names by @DUC750 in #3416
  • fix(symptoms): store timeline times the way PostgreSQL reads them by @DUC750 in #3418
  • ci(i18n): sync translations nightly and merge them before the release PR by @zeusal in #3395
  • fix(mobile): keep an NFC food tag's unit a saved serving by @CodeWithCJ in #3420
  • ci: merge automation PRs with a GitHub App and move release secrets to environments by @CodeWithCJ in #3422
  • fix: allow custom run program ids when completing or rating workouts by @Jerrys-modz in #3436
  • fix(food-providers): badge standard for swiss and swedish sources by nutrient code, import Swiss water and alcohol by @darealdemayo in #3389
  • fix(stats): fall back to global recent sessions when a new preset has no history by @cheetahspot3 in #3440
  • fix(labs): make lab result saves safe to retry by @Jerrys-modz in #3441
  • fix: custom nutrients not saving when nothing else is changed by @tonydarcy in #3405
  • fix(foods): translate the nutrient name in the Standard badge by @darealdemayo in #3442
  • fix(mobile): open the photo picker after the add-image sheet closes by @MegaIndian in #3446
  • fix(server): round fractional values for integer workout telemetry columns by @veszig in #3447
  • fix(mobile): populate and allow editing time when adding a new food by @CodeWithCJ in #3461
  • fix(food): show the weight of an Open Food Facts portion when adding a food by @zeusal in #3433
  • fix(mobile): keep custom screen headers below the Android status bar by @zeusal in #3464
  • fix(server): keep times faster than the sport allows out of personal records by @zeusal in #3473
  • fix(fasting): resolve auto-fast completion, UUID parsing, and clock skew race conditions by @CodeWithCJ in #3476
  • fix(mobile): capture and crop nutrition labels in the app by @Bl4nk24 in #3491

Documentation

  • chore: require the maintainer for changes to the tag site by @CodeWithCJ in #3314
  • docs(agents): move long feature notes out of the package guides by @SisyphusMD in #3303
  • docs: add cloud hosting install page by @CodeWithCJ in #3337
  • docs: add a code of conduct and a security policy by @zeusal in #3366

Other Changes

  • chore(helm): update chart version to v1.11.0 by @github-actions[bot] in #3299
  • chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #3315
  • chore(umbrel): update app package to v1.11.0 by @github-actions[bot] in #3301
  • chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #3328
  • chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #3338
  • chore(nix): update pnpm deps hashes by @github-actions[bot] in #3370
  • chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #3371
  • chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #3372
  • chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #3391
  • Revert "feat(backup): restore a backup with every instance running" by @CodeWithCJ in #3403
  • chore: sync db_schema_backup.sql with migrations by @github-actions[bot] in #3419
  • chore(nix): update pnpm deps hashes by @github-actions[bot] in #3432
  • chore(i18n): sync translations from Weblate by @sparkyfitness-sync[bot] in #3435
  • chore: sync db_schema_backup.sql with migrations by @sparkyfitness-sync[bot] in #3444
  • chore: sync db_schema_backup.sql with migrations by @sparkyfitness-sync[bot] in #3451
  • chore(i18n): sync translations from Weblate by @sparkyfitness-sync[bot] in #3462
  • chore: sync db_schema_backup.sql with migrations by @sparkyfitness-sync[bot] in #3472
  • chore(i18n): sync translations from Weblate by @sparkyfitness-sync[bot] in #3477
  • chore: sync db_schema_backup.sql with migrations by @sparkyfitness-sync[bot] in #3479

New Contributors

Full Changelog: v1.11.0...v1.12.0

Don't miss a new SparkyFitness release

NewReleases is sending notifications on new releases.