diff --git a/api/index.php b/api/index.php index 7326559..254c1bb 100644 --- a/api/index.php +++ b/api/index.php @@ -5152,7 +5152,8 @@ REGOLE: 5. "name": usa ESATTAMENTE il nome dalla lista (il sistema lo usa per scalare l'inventario). 6. Includi nella lista ingredienti TUTTI quelli citati nei passi (tranne acqua/sale/pepe/olio). 7. Language rule: {$recipeLangName} only for all textual fields (`title`, `tags`, `expiry_note`, `ingredients.qty`, `steps`, `nutrition_note`, `tools_needed`). Keep `meal` unchanged. -8. `tools_needed`: array of kitchen tools/appliances actually required by this recipe (e.g. ["Forno","Frullatore"]). Use the same language as all other text fields. Empty array [] if only stovetop/knife/pan needed. +8. `tools_needed`: array of kitchen tools/appliances actually required by this recipe (e.g. ["Forno","Frullateur"]). Use the same language as all other text fields. Empty array [] if only stovetop/knife/pan needed. +9. `steps`: array of PLAIN TEXT STRINGS only — no objects, no JSON, no sub-fields. Each step is a single readable string. If appliances are used, include the appliance/mode information directly in the step text (e.g. "Nel Cookeo, modalità Rosolare: aggiungere la cipolla…"). NEVER output steps as objects like {"instruction":…, "appliance_function":…}. DISPENSA: $ingredientsText @@ -6099,6 +6100,7 @@ REGOLE: 7. Language rule: {$recipeLangName} only for all textual fields (`title`, `tags`, `expiry_note`, `ingredients.qty`, `steps`, `nutrition_note`, `tools_needed`). Keep `meal` unchanged. 8. `tools_needed`: array of kitchen tools/appliances actually required by this recipe (e.g. ["Forno","Frullatore"]). Use the same language as all other text fields. Empty array [] if only stovetop/knife/pan needed. 9. `zero_waste_tips`: array of zero-waste tips for steps that generate reusable scraps (peels, leftover cooking water, egg whites, cheese rinds, bread crusts, vegetable tops, etc.). Each entry: {"step": 0-based_step_index, "scrap": "scrap name", "tip": "short practical reuse tip (max 20 words)"}. Use the same language as other text fields. Empty array [] if no reusable scraps are generated. +10. `steps`: array of PLAIN TEXT STRINGS only — no objects, no JSON, no sub-fields. Each step is a single readable string. If appliances are used, include the appliance/mode information directly in the step text (e.g. "Nel Cookeo, modalità Rosolare: aggiungere la cipolla…"). NEVER output steps as objects like {"instruction":…, "appliance_function":…}. DISPENSA: $ingredientsText diff --git a/assets/css/style.css b/assets/css/style.css index 3d2880d..d953de5 100644 --- a/assets/css/style.css +++ b/assets/css/style.css @@ -4276,6 +4276,19 @@ body.server-offline .bottom-nav { color: #3730a3; white-space: nowrap; } +/* Appliance/mode badge shown inline next to a step text */ +.recipe-step-appliance { + display: inline-block; + margin-left: 6px; + background: #f0fdf4; + border: 1px solid #bbf7d0; + border-radius: 12px; + padding: 1px 8px; + font-size: 0.72rem; + color: #15803d; + vertical-align: middle; + white-space: nowrap; +} /* Recipe ingredient use buttons */ .recipe-ingredients { @@ -7653,6 +7666,7 @@ body.cooking-mode-active .app-header { [data-theme="dark"] .recipe-expiry-note { background: #2a1e00; color: #fde68a; } [data-theme="dark"] .recipe-tools-banner { background: #1a1040; border-color: #3730a3; color: #c4b5fd; } [data-theme="dark"] .recipe-tool-chip { background: #2e1a4a; color: #c4b5fd; } +[data-theme="dark"] .recipe-step-appliance { background: #052e16; border-color: #166534; color: #4ade80; } [data-theme="dark"] .recipe-subtype-chip { background: #1c1300; border-color: #78350f; color: var(--text); } [data-theme="dark"] .recipe-subtype-chip:has(input:checked) { background: #2a1e00; border-color: #d97706; } diff --git a/assets/js/app.js b/assets/js/app.js index 2f3fd57..160de47 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -13273,7 +13273,8 @@ function renderRecipe(r) { // Steps html += `