NutriTrace v1.2.0 Released! Wide-screen redesign, MCP for AI agents, and more!
NutriTrace is a self-hosted alternative to MyFitnessPal / Cronometer / Lose It. AGPL-3.0, single Docker container, native Android app. Part of the TraceApps family: NutriTrace (nutrition), CookTrace (recipes / pantry / shopping), LiftTrace (strength / lifting). What v1.2.0 adds Wide-screen redesign, first pass. Every routed section (Diary, Foods, Statistics, Goals, Wellness, Settings) plus the Food and Meal editors got a proper desktop layout in this cycle. The goal is a genuinely useful experience on the extra horizontal real estate instead of a stretched-out phone stack. Force Mobile Layout remains the opt-out for anyone who prefers the compact stack on wide screens. This is the starting point, not the finish line: wider breakpoint coverage (foldables, small tablets) and a per-user layout-width picker are on the roadmap. Model Context Protocol (MCP) server. NutriTrace exposes a read + write MCP endpoint so Claude, Continue, and other MCP-aware agents can search your food catalog, log entries, propose meals, and read diary history. Read tools cover foods, meals, diary (by date / range / averages), and body stats. Write tools cover diary logging, quick calories, food creation, and meal creation. Gated behind mcp:read / mcp:write API-key scopes so agent access is separate from your normal auth. In-app updates that actually tell you when a new version is out. v1.1.0 added the plumbing; this release makes it visible. PWA users get a "Reload" prompt when a fresh bundle is deployed. Android shows both an in-app banner AND a one-shot OS notification. Check frequency is configurable in Settings → Updates (Hourly / Every 4 Hours / Every 12 Hours / Once a Day / Manual Only). A small dot appears on the Settings nav icon while an update is pending. Skip-this-version clears every surface for that version in one tap. Editor drafts persist across app kills. If Android's low-memory killer terminates the app while you're editing a food or meal (Samsung's camera-mode lmkd is the usual culprit), your in-progress typing is restored on next open. A banner surfaces the restored draft with a Discard button so you can wipe it in one tap. Photos persist too via IndexedDB. Comma decimal separator supported everywhere. Every numeric field in the app (portion, quantity, nutrition per 100 g, weight, body measurements, water, Quick Calories, recipe amount, goal targets) accepts either , or . . European users can finally type "2,5" without fighting the form. Other things worth mentioning: the AI Assistant learned to give shorter plain-text answers by default (was verbose markdown that showed as literal bold since the chat doesn't render markdown); the image cropper across Food / Meal / Recipe editors is now one shared component with a resize handle and touch support (was three separate ones, with the Recipe cropper stuck top-left); screen wake lock during AI-Assistant and Scan-Label requests so the screen no longer sleeps mid-request; a new POST /api/v1/activity endpoint for external services to log activity via API; the Add Activity sheet no longer crashes on Android on first open; bulk "Clear all items" in a meal actually clears now instead of the server putting them right back; Health Connect no longer overwrites past dates with today's data. Community contributions this cycle from @librarian, @sunjam, @knew3be, @simonmoreau, @javydekoning, and Pavel Borecki. Bug reports, feature suggestions, code PRs, and the first Weblate translation contribution. Really appreciate the involvement. Weblate is now open at hosted.weblate.org/projects/nutritrace if you want to add or improve a locale. Links Repo: github.com/TraceApps/nutritrace Docs: traceapps.github.io/docs Full release notes + signed APK: github.com/TraceApps/nutritrace/releases/tag/v1.2.0 Docker image (multi-arch, amd64 + arm64, Pi 4/5 works out of the box). Published to two registries with identical tag sets: GHCR (primary): ghcr.io/traceapps/nutritrace:latest Docker Hub (mirror): traceapps/nutritrace:latest docker compose pull && docker compose up -d AI Disclosure (per Q2 2026 sub rules) AI is used as a coding assistant in development. Rough breakdown, unchanged from the v1.0.2 post: Implementation: roughly 50/50 human/AI pair. AI drafts, I review, test on real hardware, only commit what I've verified. Every commit is manually reviewed Design / architecture: I make the architectural calls; AI suggests trade-offs and edge cases Documentation (README, CHANGELOG, release notes): also ~50/50 pair Testing / QA: real-device manual (I test on my own devices before every release). AI helps draft test plans and think through edge cases Review: I'm the reviewer; AI helps with security sweeps and audit passes on complex changes CI/CD: mostly conventional, AI-suggested improvements only