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.)
  • Scan Label: snap a photo of a nutrition label and the AI Assistant fills in the values
  • Smart Share / View on OFF: existing Open Food Facts products link straight to their wiki page for editing; new ones get a Share button to contribute back
  • 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)
  • Custom nutriment order from Settings is reflected everywhere (food editor, meal editor, diary nutrition bar)
  • Vitamin D, Calcium, Iron, and Potassium visible by default on new installs (FDA Nutrition Facts label mandatory fields)
  • 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)
  • Data APIs in single-user mode no longer return 503 “Setup required” on every call (#34 part 2)
  • Single-user mode: only the first food item added each day was visible in the UI. SQLite quirk on null user_id. Includes a one-time migration that recovers items already in the database (#37)
  • Food saves on Android no longer duplicate the previous food (#32)
  • “Most Used” / “Recently Used” food sort on Android now reflects real usage
  • MyFitnessPal Reports → Export CSV imports cleanly now (aggregate-per-meal shape)
  • 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)
  • Barcode scanner no longer gets stuck re-opening the camera after a scan
  • Barcodes that don’t match anything in OFF now drop you in the food editor with the code prefilled instead of a dead-end toast, so you can contribute the product back
  • Open Food Facts contribution now sends correct per-serving values and uploads your product image (both were silently broken)
  • AI Assistant respects AI_ENABLED=true and the full AI_* env-var set; toggle, settings card, and chat all honour the proxy (#36)
  • kcal / kJ values are consistent everywhere now: food editor, diary footer, meal totals, statistics, goals, weekly summary email, push notifications (#38)
  • 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.

Self-hosted, AGPL-3.0, no telemetry, no account needed. docker compose up and go.

  • Nomad64@lemmy.world
    link
    fedilink
    English
    arrow-up
    9
    ·
    17 hours ago

    I have been using this alongside MyFitnessPal and it is great! I look forward to getting rid of MFP so my data is mine.

    The dev is responsive and quick to fix bugs and implement features, too. Thanks @TraceApps@lemmy.world!

    • TraceApps@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      5
      ·
      12 hours ago

      That is correct, and it is called out in the README under Apps → iOS and in the Support section at the bottom. iOS needs a Mac, an iPhone, and a paid Apple Developer account, none of which I currently have. The Support section is where I mention that donations go toward exactly that. Apple Health sync specifically needs a native iOS wrapper since the data isn’t exposed to PWAs, so it has to wait on the same blocker. I hope to someday get this out to the community.

  • warmaster@lemmy.world
    link
    fedilink
    English
    arrow-up
    2
    ·
    16 hours ago

    My wife recently bought a Thermomix. I wonder if Cookidoo has an API or some other way to integrate with NutriTrace to help make data input as frictionless as possible.

    • TraceApps@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      12 hours ago

      Cookidoo has no public API and their ToS prohibits scraping, so a direct integration would be both legally fragile and maintenance-heavy (the scraper breaks on every UI change Vorwerk pushes). The indirect path that works today: Mealie is a self-hosted recipe manager that imports Cookidoo URLs as one of its many recipe sources, and NutriTrace has Mealie integration built in (Settings → Mealie). Your wife adds recipes from Cookidoo into Mealie once, and they show up as searchable foods in NutriTrace with full nutrition.

      Also worth mentioning: I’ve got a sister app called CookTrace (may not be final name) in development as a purpose-built self-hosted recipe manager that pairs natively with NutriTrace (same UI patterns, same AI assistant, federation already wired between them). It has a schema.org Recipe scraper for URL imports, though Cookidoo itself is gated content so it’d still need either a Mealie middle layer or manual entry. Currently private; aiming for a public release in the next month or so.