Files
recipe-importer/CHANGELOG.md
T
admin a39faeff51 Update CHANGELOG and README for v0.9.1–v0.9.10
Document recipe edit page improvements: image management, auto-expanding
textareas, wider layout, search UX, keyboard navigation, pagination fix,
Tandoor image URL rewrite, favicon update.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 10:42:06 +01:00

169 lines
7.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Changelog
## v0.9.11 (2026-02-26)
### Added
- **Recipe edit page — image management**: display current recipe image, replace via URL or file upload
- New API endpoint: `POST /api/recipes/<backend>/<id>/image` for direct file upload
- New `upload_image_bytes()` method on both Mealie and Tandoor clients
- **Auto-expanding instruction textareas**: step fields grow to fit content (120px minimum)
- **Edit page widened** to 1100px (was 900px)
- New favicon (`logo_favicon_2.svg`)
### Fixed
- **Tandoor image URLs**: rewrite internal k8s service URLs to public base URL so images display in browser
- **Tandoor pagination**: use `page`/`page_size` params (not `limit`/`offset`) — fixes duplicate recipes across pages
- **KeyError on recipe list**: safe `.get("name", "")` access for Tandoor keywords and Mealie tags that lack a `name` field
- **Delete button color**: moved `btn-danger` CSS to base template so it works on all pages
### Improved
- **Search UX**: search field on top with "Keresés" button, tag filter below, results as dropdown while typing
- **Keyboard navigation**: arrow up/down in search dropdown, Enter goes to edit page
- **Search dropdown actions**: edit (pencil) and delete (trash) buttons inline on each result
- **Delete from edit page**: redirects back to recipe list after deletion
- **Instruction textarea height**: doubled default minimum from 60px to 120px on both edit and import pages
## v0.9.0 (2026-02-26)
### Added
- **Recipe management page** (`/recipes`): browse, search, filter, edit, and delete recipes from Mealie and Tandoor
- Backend switching tabs (Mealie / Tandoor) with only configured backends shown
- Full-text search with 300ms debounce
- Tag/keyword filtering with searchable dropdown
- Multi-select with bulk delete (confirmation dialog)
- Per-recipe edit and delete buttons
- Recipe edit page with the same form as the import preview (ingredients, instructions, tags)
- Pagination for large recipe collections
- New API client methods: `list_recipes()`, `get_recipe()`, `update_recipe()`, `delete_recipe()` for both Mealie and Tandoor
- New API endpoints: `GET /api/recipes/<backend>`, `GET/PUT /api/recipes/<backend>/<id>`, `POST /api/recipes/<backend>/delete`, `GET /api/tags/<backend>`
## v0.8.4 (2026-02-26)
### Added
- Environment variable overrides for connection settings: `MEALIE_URL`, `MEALIE_API_KEY`, `TANDOOR_URL`, `TANDOOR_API_KEY` — when set, these take priority over values in config.json (useful for Kubernetes deployments)
## v0.8.3 (2026-02-24)
### Fixed
- Mindmegette.hu: prefer `<h1>` element for title (clean meal name) over og:title (which often has "receptje" suffix)
- Global: strip trailing "recept"/"receptje" etc. from recipe titles across all parsers
## v0.8.2 (2026-02-24)
### Fixed
- Mindmegette.hu: use meal name (`<h2>` above Hozzávalók) as title for alt-format pages instead of long article title
## v0.8.1 (2026-02-24)
### Fixed
- Mindmegette.hu: support alternative page format (e.g. `/alapetelek/` pages) where ingredients are in `<ul>` and instructions in `<ol>` inside the wysiwyg box, instead of structured `div.ingredients` containers
- Mindmegette.hu: title suffix stripping now handles both `|` and `-` separators
## v0.8.0 (2026-02-24)
### Added
- GastroHobbi.hu parser: ingredients (with groups), instructions (with embedded lists), tags from JSON-LD articleSection
- Prep time extraction appended to description
### Fixed
- Ingredient line parser: fractions like "1/2" no longer split incorrectly due to regex backtracking
- En-dash ranges in ingredients (e.g. "10 15 dkg") now normalized to "10-15 dkg"
- Unicode fractions (½, ¼, ¾) now recognized as quantity start across all parsers
- Embedded lists in instructions (nested ul>li) no longer produce duplicate entries
## v0.7.0 (2026-02-24)
### Added
- Kiskegyed.hu parser: ingredients (with groups, dual measurements), instructions, tags
- Cross-site recipe linking: kiskegyed→sobors and sobors→kiskegyed links are followed automatically
- Dual measurement support: parenthesized alternate measurements (e.g. "3 ek (70 g)") extracted to comment field
### Changed
- Supported sites list now shows clickable URLs instead of plain text
## v0.6.1 (2026-02-24)
### Added
- Sobors.hu linked recipe support: when instructions link to another site (e.g. kiskegyed.hu), the scraper follows the link and imports the real recipe content
- Article-style ingredient fallback for sobors.hu pages without structured ingredient containers
- Redirect detection: warning shown when instructions just link to another site without real steps
- "Importálás mindkettőbe" button on single import page (when both Mealie and Tandoor configured)
### Fixed
- Ingredient comments in parentheses (e.g. "darált sertéshús (lapocka vagy comb)") now correctly extracted to the comment/extra field across all parsers
### Changed
- Favicon updated to white logo variant (logo_notext_white.svg)
## v0.6.0 (2026-02-24)
### Added
- Sobors.hu parser: ingredients (with groups), instructions (with section headers), tags
- Incomplete recipe validation: warnings when ingredients or instructions are missing
- Optional HTTP Basic Auth: configurable username/password on the settings page
- Favicon (browser tab icon) using felhom.eu logo
### Changed
- Brand text: "Recept" in white, "Importáló" in blue (felhom.eu style)
- Logo enlarged in navigation bar (28px → 36px)
## v0.5.1 (2026-02-24)
### Changed
- Design overhaul: new blue/cyan color scheme matching felhom.eu / controller templates
- Added Plus Jakarta Sans font for consistent branding
- Added felhom.eu logo in navigation bar
- Added "Powered by felhom.eu" footer with tagline
- Settings page: added documentation about external vs. internal URLs (Docker networking)
- Settings page: URL labels now clarify they are external (browser-facing) URLs
### Fixed
- Version display showed double "v" prefix (e.g. "vv0.5.0")
## v0.5.0 (2026-02-24)
### Added
- Bulk import: paste multiple URLs, choose review-each or auto-import mode
- Tag option for auto mode: import all scraped tags or none
- Progress table with per-recipe status tracking (pending, scraping, done, error, skipped, duplicate)
- Import targets: Mealie, Tandoor, or both simultaneously
- "Auto-import remaining" button to switch from review to auto mid-way
- Supported sites displayed in the UI
## v0.4.0 (2026-02-24)
### Added
- Nosalty.hu parser: ingredients (with groups), instructions (with section headers), tags, story as description
## v0.3.2 (2026-02-24)
### Fixed
- Quantity ranges (e.g. "2-3") now handled correctly in both Mealie and Tandoor clients
## v0.3.1 (2026-02-24)
### Fixed
- StreetKitchen: parenthesised notes in food names now extracted to the extra field
## v0.3.0 (2026-02-24)
### Added
- StreetKitchen.hu parser with three instruction formats (ol/ul/paragraph)
- Ingredient quantity+unit splitting for merged strings (e.g. "200g")
- Ingredient group support via h5 headers
## v0.1.0 (2026-02-23)
### Added
- Initial release
- Web UI with dark theme for recipe importing
- Mindmegette.hu scraper (ingredients, instructions, image, description)
- Generic fallback scraper using schema.org JSON-LD and OpenGraph tags
- Mealie API integration (create recipe, upload image)
- Editable preview: modify title, description, ingredients, and instructions before importing
- Settings page with Mealie connection configuration and test button
- Persistent configuration via JSON file in `/data` volume
- Docker image based on `python:3.12-slim` with Gunicorn
- Health check endpoint at `/health`