Third release candidate. Shopping list gets aisle grouping, drag reorder, hide-checked toggle, and per-row edit. Pantry items gain AI Scan Label for one-shot nutrition capture. Cook Mode reliably keeps the screen awake on Android. Recipe editor gets a mobile kebab menu on ingredient rows. Multi-select on Pantry and Recipes matches NutriTrace. Dependency security bumps clear every actionable Dependabot alert.
Added
- Shopping List Aisle Grouping. By Aisle / By Recipe / Flat chip row, per-category Default Aisle, auto-populate from linked pantry items.
- Change Aisle Per Item. Long-press a row to pick a known aisle or type a fresh label. Custom aisles work as their own groups.
- Drag to Reorder Shopping Items. Cross-group drops in By Aisle mode reassign the moved item's aisle.
- Hide Checked Items Toggle. Settings → Cooking. Sink to Bottom (default) or Hide with a one-tap show-again toggle.
- AI Scan Label for Pantry Nutrition. Photograph a nutrition label, Trace extracts name, brand, serving size, and every nutrient. Complementary to the existing barcode scanner.
- Per-Row Edit on Shopping Rows. Long-press for Edit, Change Aisle, or Delete. Edit modal for name, quantity, and unit.
Changed
- Simplified Shopping Quick-Add. Name plus optional qty plus a labeled Add pill, matching Google Keep, Bring!, AnyList, and OurGroceries.
- Consolidated Bulk-Add into a + Menu. Header is now Share + a single + button. Tapping + opens Add from Recipe or Add from Planned Cooks.
- "Add from Meal Plan" Renamed to "Add from Planned Cooks". Matches the Diary's language.
- Recipe Editor Ingredient Rows on Mobile. Three per-row action buttons collapse behind a single kebab menu on small screens. Notes edited in a second inline row.
- Multi-Select on Pantry and Recipes. Long-press to enter, header shows N Selected, top-right icons for trash and cancel (Recipes also has add-to-cookbook). Replaces the floating action pill.
- Recipe Editor Landscape on Phone. Ingredients and Steps stay stacked in phone landscape. Two-column view only on tablet-landscape widths and up.
Fixed
- Cook Mode reliably keeps the screen awake on Android via the native `KeepAwake` plugin. PWA continues to use the Web Wake Lock API.
- Cook photos taken during a diary log render immediately on the Diary Photos tab. Older photos still render via a backstop conversion.
- Bulk-add from a recipe or planned cook populates each row's aisle from the linked pantry item's category.
- Long-pressing a Shopping row no longer lets you drag it while the action menu is open.
- Cancel out of Pantry multi-select no longer leaves an invisible layer blocking taps until reload.
- The Shopping quick-add box no longer freezes on mobile when the pantry has hundreds of items. The suggestion list is now capped.
Security
- Dependency Security Updates. Bumped `multer` 1.4.5-lts.1 → 2.2.0 (three high-severity DoS CVEs), `nodemailer` 8.0.7 → 9.0.3 (five CVEs including TLS OAuth cert-validation bypass and CRLF header injection), and `vite` 7.3.3 → 7.3.6 (dev-only `server.fs.deny` bypass). Package overrides pull `esbuild` forward to ^0.25.0 to clear a dev-server CORS advisory nested under svelte-i18n. Clears every actionable Dependabot alert. Self-hosters on Docker just need to pull the new image.