0.21.0 (2026-01-21)
Features
- api: add GET /api/recipes/raw/{path} endpoint (423c0c6)
- api: add PUT /api/recipes/{path} endpoint (59da892)
- editor: add autosave, remove preview, rename Cancel to Back (0fef824)
- editor: add CodeMirror editor entry point (a22bf4a)
- editor: add Cooklang syntax mode for CodeMirror 6 (42bcebb)
- editor: add delete recipe, improve editor UX (f64365b)
- editor: add LSP connection status indicator (72d007a)
- editor: add LSP document synchronization (14baf81)
- editor: add LSP-powered autocomplete (28b95aa)
- editor: add new recipe creation page (20fd5f4)
- editor: add preview toggle (1f40bb6)
- editor: display LSP diagnostics in editor (30e34b9)
- editor: integrate CodeMirror with syntax highlighting (3d8849e)
- editor: Phase 4 - LSP client & full features (8e5f98f)
- i18n: add editor translation keys (abb341c)
- i18n: add LSP status translation keys (39ce0fa)
- improve PWA #239 (aacebac)
- lsp: add WebSocket to LSP subprocess bridge (7e0d6d7)
- lsp: register WebSocket LSP endpoint at /api/ws/lsp (a02251d)
- ui: add /edit/{path} route for recipe editor (d7a30b9)
- ui: add Edit button to menu page (fd669e4)
- ui: add Edit button to recipe detail page (c84896f)
- ui: add editor template with textarea (405cae3)
- ui: add New Recipe button to recipes list (926e069)
Bug Fixes
- add 1MB request body size limit (8ffd54a)
- address TOCTOU race condition in create_recipe (ad14fa8)
- clippy (252905c)
- display errors to user via toast notifications (ae6d1da)
- editor: address code review feedback for recipe creation (7343753)
- editor: pass base_path to LSP for aisle.conf loading (35dfc04)
- editor: prevent HTML escaping of JSON in template (af31eb9)
- editor: reset line-scoped states and fix Makefile clean target (20a3063)
- editor: use HighlightStyle for proper syntax highlighting (cce9148)
- fmt (0f0e48e)
- fmt (f919af2)
- improve LSP bridge task cleanup and document buffer size (88dadc0)
- lsp version (c9447dc)
- use published language srver (197e528)
- use spawn_blocking for synchronous canonicalize calls (8505956)
- use tokio::fs for async file deletion in recipe_delete (5e2b90c)
- use tokio::fs for async file operations in recipe_save (8be79a0)
- use tokio::fs for async file reading in edit_page (37a31f9)
- use tokio::fs for async file reading in pantry_page (521575f)
- use tokio::fs for async file reading in recipe_raw (d2ce797)
- validate filename before sanitization in create_recipe (e0f4bae)