Treat Mealie's "no image" sentinel as a missing cover #1

Open
fredamn76 wants to merge 1 commits from fix/cover-image-no-image-sentinel into main
Owner

Problem

verify_recipe kunde inte upptäcka att ett recept saknar omslagsbild.

Mealie lagrar strängen "no image" i receptets image-fält när det inte finns
något omslag. mealie_mcp/verify.py testade fältet med bool(recipe.get("image")),
och eftersom bool("no image") är sant rapporterade kontrollen ett omslag som inte
fanns — cover_image blev warn i stället för fail, alltså exakt det fall
kontrollen finns till för att fånga.

Observerat på ett recept skapat via Mealies egen bildimport mot en live-instans
(Mealie 3.22.0), som returnerade image: "no image".

Fix

Ny hjälpfunktion has_cover_image() som förutom tomt värde också avvisar
sentinelvärdet, trimmat och skiftlägesokänsligt. Anropsstället i verify_recipe
bytt till den. Ingen annan logik rörd.

Verifiering

  • Hela sviten: 112 passed2846289.
  • Regressionskontroll: fixen backades ut temporärt och de nya testerna kördes igen
    3 failed, 1 passed. Testerna fångar alltså felet och passerar inte av bara farten.
  • Nya testet är parametriserat över "no image", "No Image", " no image " och "".

Risk

Låg. Ändringen är avgränsad till en kontroll i verify.py och gör den strängare —
recept som tidigare fick warn för saknat omslag får nu fail, vilket är avsikten.
Inga API-anrop, inget skrivande mot Mealie, ingen ändrad publik verktygssignatur.

## Problem `verify_recipe` kunde inte upptäcka att ett recept saknar omslagsbild. Mealie lagrar strängen `"no image"` i receptets `image`-fält när det inte finns något omslag. `mealie_mcp/verify.py` testade fältet med `bool(recipe.get("image"))`, och eftersom `bool("no image")` är sant rapporterade kontrollen ett omslag som inte fanns — `cover_image` blev `warn` i stället för `fail`, alltså exakt det fall kontrollen finns till för att fånga. Observerat på ett recept skapat via Mealies egen bildimport mot en live-instans (Mealie 3.22.0), som returnerade `image: "no image"`. ## Fix Ny hjälpfunktion `has_cover_image()` som förutom tomt värde också avvisar sentinelvärdet, trimmat och skiftlägesokänsligt. Anropsstället i `verify_recipe` bytt till den. Ingen annan logik rörd. ## Verifiering - Hela sviten: `112 passed` på `2846289`. - Regressionskontroll: fixen backades ut temporärt och de nya testerna kördes igen → `3 failed, 1 passed`. Testerna fångar alltså felet och passerar inte av bara farten. - Nya testet är parametriserat över `"no image"`, `"No Image"`, `" no image "` och `""`. ## Risk Låg. Ändringen är avgränsad till en kontroll i `verify.py` och gör den strängare — recept som tidigare fick `warn` för saknat omslag får nu `fail`, vilket är avsikten. Inga API-anrop, inget skrivande mot Mealie, ingen ändrad publik verktygssignatur.
fredamn76 added 1 commit 2026-08-18 14:17:09 +02:00
Mealie stores the literal string "no image" in the recipe's image field when
there is no cover, so bool(recipe["image"]) reported a cover that is not
there: the check meant to catch a missing image downgraded to a warning
instead of failing. Observed on a recipe created through Mealie's own image
import, which returned image: "no image".

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin fix/cover-image-no-image-sentinel:fix/cover-image-no-image-sentinel
git checkout fix/cover-image-no-image-sentinel
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: homelab/mealie-mcp#1