NutriTrace v1.0.0-rc.54 released: Health Connect sync fix, local LLM proxy support, backup fidelity pass
NutriTrace is a self-hosted nutrition tracker (Docker + Android, AGPL-3.0). Small point release focused on stability and fixes.
Fixes
-
Health Connect users’ Android sync unstuck (#89). Pending Health Connect rows on the phone were tripping a SQL bug on push, which stopped every subsequent pull. Symptom: items added on the browser weren’t reaching the phone. Every user with Health Connect enabled on the Android app was silently affected. Two independent reporters (duplaja + traebertthomas-cpu) traced this to the same root cause within days of each other. Update the app on Android; the sync error banner clears on the next sync cycle.
-
More accurate Time to Sound Sleep in Sleep Quality. Server-side ttss derivation now includes the initial 5-10 min settling-in awake segment, matching what the Fitbit app measures. Closes the consistent -5 to -7 min under-count on nights with a short initial wake segment. Applies to Health Connect and Google Health syncs.
What’s new
-
Server-side proxy for OpenAI-compatible AI providers (#90). Env-locked AI now supports
AI_PROVIDER=oai-compatalongside claude / openai / gemini. PointAI_BASE_URLat a private-network Ollama, LM Studio, LocalAI, vLLM, or similar and the server calls it directly, so the browser never has to see the endpoint. Solves the mixed-content + Docker-internal-DNS gap for self-hosters running a local LLM sidecar. Same capability added to LiftTrace and CookTrace at the same time. -
Backup + restore fidelity pass. Eight silent data-loss scenarios closed across the full backup, JSON export/import, and Android local backup flows. Highlights: OFF unit metadata (
nutrition_basis,alt_units,density_g_ml) from rc.50 now survives a restore, federation API tokens survive backups, JSON settings import correctly pushes to the server on PWA, and native restore no longer double-inserts on a second pass. -
“Copy to another date” defaults to today. Copying a meal or item from a past date now pre-fills today in the picker instead of the source date. One less tap for the “same lunch again today” case.
Install / upgrade
- Docker: pull the new image and restart your stack (see the README for compose snippets). Image is multi-arch (amd64 + arm64).
- Android: signed APK on the release page.
- Full CHANGELOG: main repo.
What is NutriTrace?
Self-hosted nutrition tracker. Diary + Foods catalog (with Open Food Facts / USDA / Mealie search + barcode scan), wellness integrations (Fitbit, Garmin, Withings, Google Health, Health Connect), workouts, goals, statistics, recipes, multi-user, OIDC SSO, federation with LiftTrace and CookTrace, AI assistant (Claude / OpenAI / Gemini / Ollama). Docker on the server, Capacitor app on Android. AGPL-3.0 licensed.
AI Disclosure
Per Rule 7 / [AIP] disclosure requirements AI was used during development as a coding assistant. Level per category:
- Design (architecture, system design): Hint — I make the architectural calls; AI suggests trade-offs and edge cases I might have missed.
- Implementation (production code): Pair — roughly 50/50. AI drafts, I review, adjust, test on real hardware, and only commit what I’ve verified. Every commit is manually reviewed before it goes to my dev repo.
- Testing (writing tests, test plans, QA): Assisted — real-device testing is manual (I test on my own PC and mobile devices before every release). AI helps draft test plans and think through edge cases.
- Documentation (docs, comments, README, CHANGELOG): Pair — release notes and changelog entries are drafted with AI then edited for tone; comments and code docs are mostly Pair as well.
- Review (code review, PR feedback): Assisted — I’m the reviewer; AI helps with security sweeps, audit passes on complex changes, and consistency checks.
- Deployment (CI/CD config): Hint — Docker/GitHub Actions/release pipeline is largely conventional; AI-suggested improvements only.
Solo maintainer; no team.



Updated, thank you.