## CodeWithCJ/SparkyFitness — v1.6.3…v1.6.4

_434+ commits._

### Features
- **feat(mobile): add family diary browsing and review** (4f23e77)
- **feat(mobile): add family diary data and copy flows** (94ee156)
- **feat(server): support secure family diary copies** (954b4bb)
- **Merge pull request #2262 from CodeWithCJ/feat/mcp-quick-add-food** (fe2f466)
- **feat(ai): expose Quick Add on the food chatbot/MCP tool** (eef99c6)
- **feat(mobile): add multilingual i18n foundation** (52671c1)
- **feat(actions): check for unresolved review conversations and alert contributors in PR checks** (95ccea7)
- **feat(ai): add sparky_get_barcode chatbot/MCP tool** (c943dd2)
- **feat(ai): add sparky_get_dashboard chatbot/MCP tool** (c031759)
- **feat(ai): add sparky_manage_progress_photos chatbot/MCP tool** (ed2afc8)
- **feat(ai): add sparky_manage_synced_data chatbot/MCP tool** (7f30ac7)
- **feat(ai): add sparky_get_integrations chatbot/MCP tool** (8d81132)
- **feat(ai): add sparky_get_sleep_science chatbot/MCP tool** (f4b713c)
- **feat(ai): add sparky_get_exercise_stats chatbot/MCP tool** (b88ce4b)
- **feat(ai): add sparky_manage_workout_plans chatbot/MCP tool** (edc4938)
- **feat(ai): add sparky_manage_water_containers chatbot/MCP tool** (19c8c4c)
- **feat(ai): add sparky_manage_custom_nutrients chatbot/MCP tool** (13b9809)
- **feat(ai): add sparky_manage_meal_plans chatbot/MCP tool** (92eeab2)
- **feat(ai): add sparky_manage_favorites chatbot/MCP tool** (bbb2196)
- **feat(ai): add medication create/update/delete and schedule management actions** (b91f54f)
- **feat(ai): add sparky_manage_allergens chatbot/MCP tool** (24d3ac2)

### Fixes
- **ci test fix** (004f06c)
- **fix(ci): emit the support and upgrade preamble in generated release notes** (688f37e)
- **Merge pull request #2259 from Dragonk/fix/android12-language-startup-crash** (fe86ad1)
- **fix(mobile): restore dateUtils test to the translator signature** (88de457)
- **fix(server): discard clients after rollback failures** (b243da9)
- **fix: align family diary access and navigation** (0e761c9)
- **fix: address family diary review findings** (6321f5e)
- **fix(server): preserve unlinked family diary rows** (3f8ec59)
- **fix: keep reviewed family diary copies consistent** (415cb2c)
- **fix(ai): explain Quick Add on log_food instead of dropping it** (41dae51)
- **fix(ai): keep Quick Add on the external-food and fallback paths** (b9e6dcf)
- **fix(mobile): address Android API isolation review feedback** (acd5724)
- **fix(ai): give Ollama dispatch room for local model cold starts** (e42034e)
- **fix(mobile): preserve generated native locale registry** (a2cd149)
- **fix(mobile): isolate all API 33 calls in @RequiresApi/@DoNotInline helpers** (43fe1e7)
- **fix(mobile): isolate Android API 33 LocaleManager in dedicated helper classes** (f20c750)
- **fix(mobile): show goal progress in the Android macro widget bars** (e26be6f)
- **fix(mobile): preserve Health Connect activity names for generic exercise types** (a5c88c2)
- **fix(ai): address maintainer review items on MCP tools** (3ebbd00)
- **Merge pull request #2256 from CodeWithCJ/fix/sleep-show-all-count** (29afdad)
- **fix(reports): interpolate hypnogram count in sleep "Show All" label** (8bb28b7)
- **Merge pull request #2237 from Bl4nk24/fix/openfoodfacts-search-relevance** (bbc0bd4)
- **fix: stop OpenFoodFacts retries at the deadline** (2c739f0)
- **fix: make OpenFoodFacts search fallback reliable** (e2314cd)
- **fix: validate hydration entries and bound the cookie retry budget** (8888164)
- **fix: apply the fallback deadline to in-flight hydration requests** (61e0ea8)
- **fix: encode hydration barcodes and bound the fallback time budget** (f49f816)
- **fix: bound OpenFoodFacts upstream calls and keep sibling barcodes** (18d24d2)
- **Merge pull request #2234 from Bl4nk24/fix/health-connect-calories** (13857ba)
- **fix(mobile): cover calorie fallback edge cases** (b62c82f)
- **fix(mobile): narrow Health Connect calorie fallbacks** (dcbd95d)
- **fix(mobile): address final localization review findings** (f87c4b4)
- **fix(mobile): replace useRef with useState+useEffect in DatePicker mock** (d339b6d)
- **fix(mobile): move mock variable mutations outside React component** (76dda7d)
- **fix(mobile): use uppercase component name in DatePicker mock for hooks rule** (aa91187)
- **fix(ai): resolve CodeRabbit review-3 feedback (pagination edge case, fallback categories, medication null-clear)** (1f6f7c5)
- **fix(mobile): address final multilingual review findings** (59c4adb)
- **fix(mobile): use T[] instead of Array<T> in test to satisfy CI lint** (822d714)
- **fix(mobile): close remaining localization regressions** (f1e2ced)
- **fix(mobile): derive default source locale path from rootDir** (4ef73af)
- **fix(mobile): address multilingual i18n review findings** (0092ce4)
- **fix(mobile): finalize Weblate source contract** (9cf8386)
- **fix(mobile): harden multilingual i18n contracts** (aa4855b)
- **fix(mobile): complete multilingual i18n foundation** (ba3f838)
- **Merge pull request #2238 from CodeWithCJ/fix/email-smtp-tls-port-587** (9e6c6e5)
- **fix(server): resolve SMTP STARTTLS configuration on port 587** (f74790c)
- **fix: hydrate OpenFoodFacts search results** (404b62a)
- **fix: improve OpenFoodFacts search relevance** (56a0e74)
- **fix(mobile): merge duplicate @testing-library import in FoodPhotoImprove test** (6e1c08b)
- **fix(mobile): pluralize servings/ingredients/sets, restore EN copy, CalendarSheet month/year nav** (a7287e1)
- **fix(ai): address CodeRabbit review feedback on MCP tools** (3f4beff)
- **fix(shared): calibrate step calorie fallback** (1fbe8a9)
- **fix(mobile): preserve Health Connect calorie sources** (c76d88b)
- **Merge pull request #2218 from CodeWithCJ/fix/mobile-foreground-telemetry-budget** (da63d72)
- **fix(mobile): default an unclassified telemetry read failure to retryable** (9a70cb0)
- **fix(mobile): keep the telemetry cache off the sync hot path** (dea4c30)
- **fix(mobile): never cache telemetry the server did not receive** (b731600)
- **Merge pull request #2232 from CodeWithCJ/fix/integrity-license-label** (71e9168)
- **fix(actions): paginate reviewThreads GraphQL query in PR validation** (2b397cf)
- **fix(actions): infer valid English translation edits from diff rather than failing on missing checkbox** (277453d)
- **fix(actions): add word boundaries to issue regexes and improve label update handling** (424ac82)
- **fix(actions): harden auto-merge guards, refine issue regexes, and sync label metadata** (ba35efa)
- **fix(mobile): localize remaining UI literals** (f8bd339)
- **fix(mobile): localize exercise taxonomy values** (f02d25b)
- **fix(mobile): commit the telemetry cache only on a fully accepted upload** (288dcbf)
- **fix(mobile): localize personal record counts** (bd8a334)
- **fix(mobile): scope telemetry cache staging to the sync run** (7abc4a3)
- **fix(mobile): localize workout set presentation** (b8f013b)
- **fix(mobile): address review findings on telemetry bounding** (1d94407)
- **fix(mobile): localize individual workout set counts** (fcf7c17)
- **fix(mobile): cap workout telemetry collection on foreground sync** (523ade4)
- **fix(mobile): make calendar date sync lint-safe** (1067c4b)
- **fix(mobile): sync calendar month with selected date** (77efc8c)
- **fix(mobile): correct preset draft localization and plurals** (67080ff)
- **fix(mobile): complete localization review follow-ups** (afecf62)
- **initialize locale in notification regression test** (4bf4a62)
- **preserve Polish cycle sentence regression** (70a142b)
- **fix notification locale test import** (e36dd37)

### Backend
- **Merge pull request #2271 from CodeWithCJ/dev** (f604b7f)
- **Merge pull request #2270 from CodeWithCJ/i18n/sync-weblate-translations** (97c09da)
- **changed version to v1.6.4** (a79183b)
- **Merge pull request #2235 from Bl4nk24/feat/mobile-family-diary** (13c378e)
- **Merge pull request #2230 from Rahulsharma0810/feat/mcp-allergen-preferences-tool** (6658320)
- **Merge pull request #2260 from CodeWithCJ/dev** (3012660)
- **Merge pull request #2258 from CodeWithCJ/dev** (cc9386c)
- **Merge pull request #2257 from CodeWithCJ/dev** (5e72e9b)
- **Merge pull request #2255 from CodeWithCJ/dev3** (03144db)
- **reset local branches** (23f36e6)
- **Merge pull request #2254 from garakangas/secret-files** (0f993a8)
- **Fixed secret file mounting in compose files** (f526c51)
- **Merge pull request #2224 from Dragonk/feat/mobile-multilingual-i18n-foundation** (6a4781b)
- **Merge pull request #2189 from Dragonk/feat/mobile-complete-localization** (de2fbc7)
- **Merge remote-tracking branch 'upstream/main' into feat/mobile-complete-localization** (3180f09)
- **Merge pull request #2231 from CodeWithCJ/dev2** (8b05630)
- **security(actions): enforce bot and owner author check on auto-merge workflow** (f8ff96e)
- **update upstream Polish workout settings expectation** (fce2a57)
- **align translator dependencies after upstream merge** (a21d500)
- **restore complete EN and PL catalog keys** (c7161ca)
- **finish localization audit fixes** (2397616)
- **complete upstream preset localization contract** (bdcab63)
- **exercise runtime language switch in notification test** (ac39ce7)
- **reset notification test language between cases** (55ec792)
- **apply localization fixes after upstream integration** (f5c085d)
- **merge current upstream workout preset changes** (24aa065)

### Tests
- **test(mobile): scope Android API guard contracts per method body** (db79fc8)
- **test(mobile): generalize native localization contracts** (96e423b)
- **test(mobile): remove stale locale fixture metadata** (9fdfddc)
- **test(mobile): tighten multilingual i18n coverage** (b1f33c0)
- **test(mobile): cover remaining localized UI fallbacks** (e97926f)
- **test(mobile): cover localized settings and detail actions** (a6947c5)
- **test(mobile): tighten i18n audit traversal** (7c3defd)
- **test(mobile): harden i18n literal audit** (17fa1dd)
- **test(mobile): satisfy workout localization lint** (0f70769)
- **test(mobile): cover localized workout set counts** (1dd2f65)
- **test(mobile): align calorie assertions with kcal contract** (9eee282)

### Docs
- **docs(ai): scope the Quick Add promise to newly created foods** (dcfa225)
- **docs(mcp): use the real tool names in the MCP tool reference** (7bc0d47)
- **docs(mobile): record the duplicate-press guard and refresh the shared map** (3092bdb)

### Chore
- **chore(ci): drop persisted checkout credentials in draft-release** (7a27036)
- **chore(i18n): sync non-English translations from Weblate** (0dd971b)
- **refactor(ai): make synced-data tool read-only** (f24a7a9)
- **chore(mobile): remove unused family date labels** (bf804d7)
- **refactor(ai): simplify water volume formatting per CodeRabbit** (4e1817f)
- **refactor(ai): fold single-tool chat categories into core domains** (0c8445f)
- **refactor(mobile): declare the Android widget snapshot payloads explicitly** (0ab386c)
- **refactor(mobile): harden registry-driven locale resources** (03d2631)
- **chore(nix): update pnpm deps hashes (#2240)** (fda0c16)
- **chore(actions): update PR label name to integrity-license-pending** (f4c90df)
- **ci(actions): soften PR license enforcement, extend grace period, and add repository automations** (ea673e6)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/CodeWithCJ/SparkyFitness?utm_source=github-action)._