Images returned by Tandoor API use the internal service URL when
api_url differs from base_url. Now rewritten to public URL so
browser can display them.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Textareas auto-resize to fit content (min 120px)
- Edit page container widened to 1100px
- Show recipe image with URL input and file upload options
- Add image upload endpoint (POST /api/recipes/<backend>/<id>/image)
- Add upload_image_bytes() to both Mealie and Tandoor clients
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Tandoor's /api/recipe/ endpoint uses Django REST Framework's
PageNumberPagination (page + page_size), not LimitOffsetPagination.
The limit/offset params were silently ignored, returning all recipes
on every page.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Tandoor recipe list API may return keyword objects without a 'name'
key, causing KeyError('name'). Use .get() with filtering across all
tag/keyword list comprehensions in both Mealie and Tandoor clients.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New /recipes page with backend switching (Mealie/Tandoor), full-text
search, tag filtering, multi-select bulk delete, per-recipe edit/delete
buttons, and a full recipe editor reusing the import preview form.
New API client methods: list_recipes, get_recipe, update_recipe,
delete_recipe for both MealieClient and TandoorClient.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Both APIs require numeric quantity/amount fields. When a range like
"2-3" is detected, uses the first number as the quantity and puts
the full range (e.g. "2- 3 ek") in the note field.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Scraper extracts tags from mindmegette.hu (<a class="tag">) and schema.org keywords
- Tag editor UI with removable chips, search/autocomplete for existing tags, custom add
- Mealie: auto-create tags via POST /api/organizers/tags, include in recipe PATCH
- Tandoor: include keywords in recipe POST (auto-created by name)
- New GET /tags endpoint returns existing tags from both services for search
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add TandoorClient (app/tandoor.py) with full recipe creation, image upload,
and duplicate detection via the Tandoor REST API. Settings page now has
separate Mealie and Tandoor sections. Import page shows both send buttons
based on which services are configured.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>