NutriTrace is a self-hosted nutrition / fitness tracker (Docker + Android, AGPL-3.0). rc.47 is the next public roll-up, bundling everything since the rc.42 broad release plus the small fix-only patches in between.

What’s new

  • Quick-view Foods sheet. Tap a food on the Foods tab and a slide-up sheet shows the full Nutrition Facts label, brand, and barcode, with Add to Diary + Edit buttons right there. The full Food Editor is still one tap away when you need it. Replaces the heavier “jump straight to the editor” behavior for what’s usually a glance-at-info action.
  • Scheduled automatic backups. Settings → Backup → Schedule lets you pick a time + frequency (daily / weekly / monthly). Server installs get an admin UI with optional ENV lock for managed deployments; the Android app does the same for offline-only users, writing scheduled backups to device storage.
  • Copy diary items to another day. Unified copy sheet for a single item or a whole meal. Pick the target date + meal in one flow. Handy for meal-prep weeks where the same lunch repeats.
  • Nutrient drill-down in the Diary Nutrition Summary. Tap any row (Sodium, Protein, Fiber, etc.) to expand it in place and see the top contributing foods sorted descending. Answers the “where did today’s sodium come from?” question without leaving the Diary.
  • Recipe / saved meal ingredient picker now searches every food source. Source filter chips (Local, OFF, USDA, Mealie, From Others) and a barcode scan button appear inside the picker, gated by what you have enabled in Settings. Picking from a non-local source auto-saves it to your local catalog first.

Fixes

  • Sidebar was missing the Wellness link for Health Connect / Google Health users (#62)
  • Imported foods showed the wrong photo after a sync round because the local image cache collided on OFF’s structurally-identical filenames; cache keys are now derived from the full URL (#61)
  • Sharing a log file or crash report from Diagnostics only saved the filename, not the contents — files now route through the cache directory so Android can grant read access (#60)
  • Wellness goal progress bars stayed at 0 for Health Connect / Google Health users (#57)
  • AI Assistant works with Gemini again — a schema field rejected only by Gemini’s parser (#56)
  • Manual Google Health sync no longer throws an unhandled rejection on Android (#55)
  • AI proposal cards no longer stick around after a photo entry is committed
  • Local Open Food Facts mirror nutrition data now loads correctly across every parquet shape encountered in the wild — rc.43 through rc.45 added parser support for Python-repr lists, Uint8Array buffers, and SQL NULL literals (#53)

Install / upgrade

  • Docker: pull the new image and restart your stack (see the README for compose snippets)
  • 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.