• Meal type and time sit under the food name: on add and edit, meal and time come right after the name, then serving. Edit also keeps date there. They used to sit below nutrition
• Mealie import matches other sheets: Cancel is in the title bar, the API token is masked, long recipe names ellipsize, and an http:// host with Allow insecure HTTP off uses the same localized error as other AI calls
• Nutrition details uses Cancel: the meal or day nutrition sheet no longer has a Done button. Cancel and swipe dismiss it like other read-only sheets
• Notifications show the app mark in the status bar: the small icon used the full launcher icon, which Android flattens into a blank tile when it tints. It now uses the plain mark
• A damaged data file no longer risks erasing your history: if a stored month file or preference ever fails to read, the app keeps showing what it can and copies the unreadable bytes aside before saving anything over them, instead of silently replacing them with the next entry. A damaged settings file no longer crash-loops the app on launch
• Meals no longer go missing from Health Connect after a hiccup: if the Health Connect service was briefly unreachable (mid-update, cold start), the mirror write was skipped with no retry, so the diary and Health Connect drifted apart and a reinstall rebuilt an incomplete food log. Unconfirmed writes are now queued and retried on the next sync, retries cannot duplicate a record that did land, and deleting an entry can no longer be undone by a late write
• On-device AI works in release builds: analysis with an on-device model crashed the app in builds from F-Droid or Codeberg, on every model, while the same code built from Android Studio worked. The release optimizer renamed internals that the on-device engine reads by name; those names are now preserved
• Your settings edits are not undone by a background refresh: saving a value such as the water cup size right as the app re-read its settings from storage could snap the row back to an older number. Edits made while the app refreshes now win
• A late time change on the review sheet still logs: changing Time and tapping Log in one motion could save the earlier time. The picked time now survives further edits and a late change through Log
• Analysis no longer fails when the AI provider cuts its reply short: under heavy load, the default Gemini model sometimes stopped its answer midway, which showed as "Could not understand the AI response". The app now detects a cut answer and asks the model again in one request, and a reply the provider cut short now says so instead of the generic error
• Re-run works on finished and failed queue entries: the Play button on an entry in the analysis-queue history did nothing. It now runs that entry again, whether it failed earlier or succeeded
• Long ingredient lists no longer fail with local AI models: models that reason before answering wrapped their thinking into the reply, which showed as "Could not understand the AI response". Thinking is now stripped from the reply before it is read, and replies that list each ingredient get a higher response-length floor so a long list is not cut short at the default cap
• On-device AI runs with less free memory: the safety margin kept in reserve before loading the on-device model was still sized for smaller phones and refused everyday use on 8 GB devices. The margin now scales down with the phone's memory
• The calorie ring still shows today's burn after you eat past the base budget: the live and typical burn shades stay on top of the eaten fill, so they do not disappear once intake covers that part of the arc
• Trailing arrows flip in right-to-left languages: More Nutrition, What-if, View more, and similar carets point with the reading direction
• Trackers and Customize Progress are clearer with TalkBack: the Add Food Trackers row announces Expanded or Collapsed. Customize Progress on the Progress tab is a 48 dp button and is read once
