fix(recipes): normalize newlines + add update_recipe (v0.6.1)

Bug fix: literal backslash-n sequences in ingredients/instructions are now
converted to real newline characters before sending to the API, so the server
correctly splits ingredient lines into ingredientsList[].

New tool: update_recipe — partial update via mprecipeput with recipe.metaId;
fetches current recipe in the same session to verify can_update and supply
name fallback. Verified: recipe.metaId triggers update (not create).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-16 15:01:40 +02:00
parent ebbbf38ab9
commit bc28b09d49
7 changed files with 260 additions and 12 deletions
+5 -4
View File
@@ -24,7 +24,7 @@ und wird in Claude Desktop eingebunden.
## Aktueller Stand
### Implementierte Tools (v0.6.0)
### Implementierte Tools (v0.6.1)
| Kategorie | Tools |
|---|---|
@@ -33,7 +33,7 @@ und wird in Claude Desktop eingebunden.
| Listen | `create_list`, `delete_list` |
| Kategorien | `create_category`, `delete_category` |
| Aktivitäten | `like_post` |
| Rezepte | `get_recipes`, `get_recipe`, `create_recipe`, `delete_recipe` |
| Rezepte | `get_recipes`, `get_recipe`, `create_recipe`, `update_recipe`, `delete_recipe` |
## Roadmap
@@ -41,8 +41,8 @@ und wird in Claude Desktop eingebunden.
- v0.5.x: Listen-Management (create_list, delete_list) ✓
- v0.5.1: emoji + color in get_lists / create_list ✓
- v0.5.2: Mengenkonvention im create_task Docstring ✓
- v0.6.0: Rezept-Box (get_recipes, get_recipe, create_recipe, delete_recipe) ✓ ← aktuell
- v0.6.1: update_recipe (Rezept bearbeiten)
- v0.6.0: Rezept-Box (get_recipes, get_recipe, create_recipe, delete_recipe) ✓
- v0.6.1: update_recipe + Bugfix Zeilenumbrüche in create_recipe ✓ ← aktuell
- v0.6.2: mpadditemtolist (Zutaten → Einkaufsliste)
- v0.5.3: update_list (Umbenennen, emoji/color ändern), Sharing-Verwaltung
- v0.7.x: Erinnerungen + Wiederholungen (Premium-Account erforderlich)
@@ -133,6 +133,7 @@ Fehler bei falschen Parametern kommen nicht immer auf Top-Level:
| `taskcreatelist` | `name`, `taskListType`, `sharedToAll`, `color`, `emoji` | `taskListType`: `"SHOPPING_LIST"`/`"TODOS"` |
| `taskdeletelist` | `id` | metaId der Liste |
| `mprecipeput` | `recipe.name`, `recipe.isRecipe="true"`, `recipe.description`, `recipe.ingredients`, `recipe.instructions`, `recipe.prepTime`, `recipe.cookTime`, `recipe.serves`, `recipe.url` | Alle mit `recipe.`-Prefix! |
| `mprecipeput` (Update) | zusätzlich `recipe.metaId` | Vorhandene ID → Update statt Create |
| `metasync` (Rezepte lesen) | `id="recipe"` | liefert `a00.r.r.updatedCreated[]` |
### Self-Like-Restriction