Features
- Bulk Food Import via paste JSON or upload CSV (Settings → Import & Export)
- Live nutrition preview on the Add to Diary sheet (macros update with portion / unit / servings)
- Mass-aware unit conversion when scaling nutrition (g ↔ oz ↔ lb, ml ↔ cup, tsp ↔ tbsp)
- Custom Units in Settings ("shot", "scoop", "stick", etc.)
- Connection status banners across every integration with one-tap Test / Sync / Disconnect
- Settings auto-save by default; no Save button to remember
- Day rollover at midnight when the app stays open overnight
- Barcode scanner now fully on-device on Android, no Google Play Services required (works on GrapheneOS / CalyxOS / e/OS)
- Svelte 5 + Vite 6 + Express 5 + bcryptjs 3 framework upgrade (main bundle ~22% smaller)
Fixes
- Disabling user management no longer triggers the setup wizard on every reload (#34)
- MyFitnessPal Reports → Export CSV imports cleanly now (aggregate-per-meal shape)
- "Most Used" / "Recently Used" food sort on Android now reflects real usage
- Food saves on Android no longer duplicate the previous food (#32)
- Wellness scores refresh if today's sleep finishes syncing after the morning snapshot
- Import Nutrition History action row no longer overlaps the duplicate-date radios (#33)
- AI Assistant Gemini models updated to 2.5 Flash + Lite (Google retired 2.0 Flash and 1.5 Flash)
- nodemailer updated to 8.0.7 (patches an SMTP command-injection advisory)
- Several smaller things, see the full changelog
Signed APK + docker image on the release page: https://github.com/TraceApps/nutritrace/releases/tag/v1.0.0-rc.30
Self-hosted, AGPL-3.0, no telemetry, no account needed. Docker compose up and go.
Nice work, exactly the kind of bridge that makes leaving MFP a lot less painful for self-hosters. Would you be OK with me linking the gist from the NutriTrace README (under Foods & Meals) and from inside the Bulk Food Import modal? Happy to credit it as your script with a link back to the gist.
Either way, thanks for putting it together.