0.38.0 (2026-10-07)
Features
- i18n: add Italian translation (61a3a18)
- i18n: add Italian translation (2493e79)
- i18n: add Japanese translation (8a14482)
- i18n: translate the step picture strings into Japanese (abdfbad)
- packaging: build .deb packages for Debian and Ubuntu (#577) (7932282)
- pantry: don't count missing optional ingredients (e5b6272)
- pantry: don't count missing optional ingredients (584e3e2)
- recognise optional ingredients and cookware (cooklang 0.19) (993766e)
- recognise optional ingredients and cookware (cooklang 0.19) (22ab899)
- server: --recipes-only shows guests only the recipes (#621) (d682b15)
- server: opt-in sign-in before anything can be changed (#534) (0e8dacf)
- server: pages to manage aisles (#631) (637cc4d)
- server: read --cors-origin from COOK_CORS_ORIGIN (dc23f37)
- server: reader / shopper / editor / admin roles for signed-in users (#563) (2c82f28)
- server: rename a recipe or menu from the editor (#623) (2c6e839)
- server: upload step pictures from the web editor (#584) (745b349), closes #562
- shopping-list: leave optional ingredients out unless --include-optional (e389b43)
- shopping-list: leave optional ingredients out unless --include-optional (fa72db6)
- ui: change a meal plan from its calendar (#610) (0734d32)
- ui: Cooklang toolbar above the recipe editor (#540) (b6f77c9)
- ui: create and edit menus with a recipe picker (#558) (8acfd64)
- ui: meal plans laid out as a calendar (#596) (27006e1)
- ui: open a menu's recipes at the scale the menu asks for (#561) (4c46135)
- ui: random recipe button scoped to the current folder (#554) (73b095b), closes #544
- ui: scale a recipe by servings when it declares them (#565) (1e2978f)
- web: shrink title pictures in the browser, always re-encode on the server (5d70e2e)
Bug Fixes
- build: leave the output dir out of the listing pages (#634) (d324d5c), closes #632
- ci: stop CI and releases from failing silently (#569) (d7ddece)
- deps: bump rustls to 0.23.45 (GHSA-2mjx-qc3c-rqvc) (#641) (1bbbc73), closes #640
- i18n: drop the error page strings defined twice (#579) (9e0fd06)
- i18n: translate the messages that only existed in English (#567) (347e0e2)
- pantry: don't wrap "optional" in a second pair of parentheses (#627) (6b9cff2), closes #626
- report non-numeric timer values in doctor (#614) (270c7e6)
- server: keep search and menu on one line on mobile (7cc2c4a)
- server: limit the recipe file endpoints to .cook and .menu files (#550) (6ff6f9c), closes #545
- server: name shopping list entries by their recipe title (#625) (5db3066)
- server: never delete a folder when refusing a new recipe path (#582) (2b2b075), closes #549
- server: refuse cross-site WebSocket connections to the language server (#524) (c3c1b9e)
- server: same-origin by default, and refuse unknown Host names (#583) (0ef9105), closes #546
- server: trust only localhost and IP addresses as the server's own origin (d9eb064)
- stop listing macOS ._ files as recipes (#557) (87c4f7b), closes #555
- trim spaces around names typed for new files, pantry items and checks (#616) (d51584d)
- ui: make Done the main action once a title picture is set (#588) (efea22d), closes #587
- web: stop step picture paths escaping cooking mode's img src (f4cf875)
- web: stop step picture paths escaping cooking mode's img src (73ac842), closes #548