from TraceApps@lemmy.world to selfhosted@lemmy.world on 05 Jul 16:08
https://lemmy.world/post/49067172
NutriTrace is a self-hosted nutrition tracker (Docker + Android, AGPL-3.0). rc.53 is a catch-up roll-up, bundling everything from rc.48 through rc.53 — the last update posted here was rc.47.
What’s new
-
Reorder + hide Statistics categories. Settings → Statistics → Categories now has a drag list of every metric the chart page renders (nutrients, body stats, water, wellness). Drag rows to pick your own order, toggle any of them off. New wellness sources you connect later automatically append to the end. (#85)
-
Bulk delete on Foods, Meals, Recipes. Long-press an item in your catalog, pick “Select Multiple” from the action sheet, tap other items to add them to the selection, delete them all with one confirmation. Matches the multi-select UX the Diary already has. Diary entries that reference deleted items keep their nutrition snapshot but lose the link.
-
Open Food Facts serving sizes + density. Foods scanned or searched from OFF now auto-import their serving units (1 slice, 1 cookie, 1 bottle, etc.), so you can log them in those units directly instead of converting to grams. Foods can also carry an optional density (g/ml) for accurate cross-system conversion on liquids like oil or honey. Unit metadata is opt-in via Settings → Diary → Show Unit Metadata for anyone who wants the leaner default. (#69, #70)
-
Trace AI now logs real foods. Asking “add an apple to snacks” or “log Greek yogurt for breakfast” creates a real food entry with full nutrition (protein, carbs, fat, fiber, vitamins) instead of a Quick Calories row with just kcal. Searches your local catalog first, then Open Food Facts. Honors renamed / reordered meals so “snacks” routes to the right slot. (#79)
-
French language. Full UI translation contributed by @antoinech2 (PR #72). Switchable in Settings → Language. A handful of less-common settings screens are still English and will be translated incrementally.
-
Background Health Connect sync on Android. Wearable data syncs to the server about once an hour in the background even when NutriTrace is closed, so today’s steps are already there when you open the browser build on a desktop. Settings → Wellness → Health Connect has a Background Sync row showing when the last sync ran plus battery-optimization guidance. (#68)
-
Tap a date in the Statistics history list to jump into that day. Nutrient / water / body-stat rows open the Diary on that date, wellness rows open the Wellness page. Pairs with the rc.47 Nutrition Summary drill-down for an end-to-end “chart shows a spike, day page shows the cause” flow. (#64)
-
Body-stat charts auto-fit their Y-axis to your actual data range (weight, HRV, RHR, body measurements, etc.) instead of pinning the floor to zero. If a goal is set, the range extends to keep the goal in view. Nutrient / counted charts still anchor to zero. (#67)
-
Animated banner styles. The illustrated SVG page banners are retired in favor of four animated gradient styles: Shimmer, Drift, Pulse, Aurora. Pick in Settings → Appearance → Banner Style. All four honor the OS’s Reduce Motion preference.
Fixes
- Editing a diary or body-stat entry from mobile and PWA in the same day could silently wipe an earlier entry when the two devices’ sync windows overlapped. Every save path now refetches server state before writing so a stale cache can’t overwrite fresh data from another device (#81)
- Browser password suggestions (“Suggest strong password” in Safari, 1Password, Bitwarden, etc.) now include a special character and pass validation on the first try (#82)
- Statistics charts were blank for users whose only wellness source was Health Connect or Google Health. Every wellness-source check across the app now routes through a single shared gate (#65)
- Adding a food with a phone-camera photo to the diary no longer fails with a silent 413 on busy days. Photos now save as proper uploaded files instead of inline base64 in the food record (#74)
- Removing a food or meal photo by tapping the X actually removes it now (kilkalabs follow-up on #74)
- Statistics chart tooltip no longer throws when hovering over days with missing data (#66)
- Wellness sync icons on Fitbit / Garmin / Withings / Google Health buttons rotate in the direction their arrows point (#86)
- Readiness on severe HRV crash days reads closer to Fitbit’s own value (raised the interaction penalty cap to fully reflect the combined HRV+RHR crash signal)
- Inline barcode scan icons are accent-coloured and meet the 44x44 tap-target minimum (#71)
- OFF nutrients flagged as estimated no longer pull rough numbers into your totals
Security
- rc.53 clears every actionable Dependabot alert.
multer1.4.5-lts.1 → 2.2.0 (three high-severity DoS CVEs on the LTS line),nodemailer8.0.7 → 9.0.3 (five CVEs including a TLS OAuth certificate-validation bypass and CRLF header injection),vite6.4.1 → 6.4.3 (dev-only,server.fs.denybypass on Windows). No user-facing changes; self-hosters just need to pull the new image.
Install / upgrade
- Docker: pull the new image and restart your stack (see the README for compose snippets). The image is multi-arch (amd64 + arm64), so Raspberry Pi 4 / Pi 5 works without a source build (#76). The README’s compose snippet now includes
env_filetoo, soINSECURE_COOKIESand other.envvars actually forward into the container. - 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.
#selfhosted
threaded - newest
We don’t want your slop.