v3.20.0
ocrmypdf/OCRmyPDFv3.20.0Jun 24, 2026by github-actions[bot]
AI Summary
A feature release focusing on recipe parser consistency, security hardening against XSS, and new validation features for the application.
Key Highlights
- Enhanced PR Lint and Validation features
- Warning added when deleting foods used in recipes
- Version info added to backup files
- Fixed recipe parser consistency on less-trusted networks
- Hardened against stored XSS attacks
New Features
- Enhanced PR Lint/Validation
- Warning when deleting foods used in recipes
- Version info in backup files
Full Release Notes
# 🍴🍴🍴🍴🍴🍴 This release contains several fixes and security updates, including a fix for the recipe parser which should hopefully make it more consistent on some less-trusted networks. ## ✨ New features - feat: Enhanced PR Lint/Validation @Choromanski (#7329) - feat: warn when deleting foods used in recipes @ZacharySchaffter (#7117) - feat: Added version info to backup file @Choromanski (#7416) ## 🐛 Bug fixes - fix: add missing dependencies in package.json @p0lycarpio (#7709) - fix: support CSV/TXT upload and add validation for Plan to Eat import (#6360) @hay-kot (#7622) - fix: harden recipe content against stored XSS (chips, instructions, asset media) @hay-kot (#7719) - fix: default ingredient_references on RecipeInstruction init @alexander-wenzel-dev (#7732) - fix: Upgrade pytest-asyncio @michael-genson (#7746) - fix: refactor cookie settings for Home Assistant i-frame login @cheebreezee (#7741) - fix: Various lint issues @michael-genson (#7766) - fix: send default_headers with curl_cffi impersonation (fixes 403 on WAF sites) @xenoputtss (#7792) ## 🧰 Maintenance <details> <summary>11 changes</summary> - chore(l10n): Crowdin locale sync @[mealie-actions[bot]](https://github.com/apps/mealie-actions) (#7713) - chore: add 5-day dependency cooling period for supply-chain hardening @hay-kot (#7718) - chore: drop unused python dependencies aniso8601 and appdirs @hay-kot (#7717) - chore(l10n): Crowdin locale sync @[mealie-actions[bot]](https://github.com/apps/mealie-actions) (#7734) - chore(l10n): New Crowdin updates @hay-kot (#7747) - chore(l10n): New Crowdin updates @hay-kot (#7749) - chore(l10n): Crowdin locale sync @[mealie-actions[bot]](https://github.com/apps/mealie-actions) (#7757) - chore(l10n): New Crowdin updates @hay-kot (#7756) - chore(l10n): Crowdin locale sync @[mealie-actions[bot]](https://github.com/apps/mealie-actions) (#7784) - chore(l10n): New Crowdin updates @hay-kot (#7765) - chore(l10n): New Crowdin updates @hay-kot (#7791) </details> ## 📚 Documentation - docs: fix broken link to backend configuration in AI providers page @BuildmodeOne (#7793) ## 🔨 Internal development - dev: Improve support for front end unit tests @miah120 (#7163) ## ⬆️ Dependency updates <details> <summary>30 changes</summary> - chore(deps): update dependency pytest-asyncio to v1.4.0 @[renovate[bot]](https://github.com/apps/renovate) (#7694) - chore(deps): update dependency vitest to v4 [security] @[renovate[bot]](https://github.com/apps/renovate) (#7723) - chore(deps): lock file maintenance @[renovate[bot]](https://github.com/apps/renovate) (#7742) - fix(deps): update dependency python-multipart to v0.0.32 @[renovate[bot]](https://github.com/apps/renovate) (#7729) - fix(deps): update dependency apprise to v1.11.0 @[renovate[bot]](https://github.com/apps/renovate) (#7728) - fix(deps): update dependency uvicorn to v0.49.0 @[renovate[bot]](https://github.com/apps/renovate) (#7744) - chore(deps): update dependency ruff to v0.15.16 @[renovate[bot]](https://github.com/apps/renovate) (#7726) - fix(deps): update dependency openai to v2.41.0 @[renovate[bot]](https://github.com/apps/renovate) (#7733) - chore(deps): update node.js to 9c1d881 @[renovate[bot]](https://github.com/apps/renovate) (#7748) - chore(deps): update node.js to 40ad9f3 @[renovate[bot]](https://github.com/apps/renovate) (#7752) - fix(deps): update dependency beautifulsoup4 to v4.15.0 @[renovate[bot]](https://github.com/apps/renovate) (#7753) - chore(deps): lock file maintenance @[renovate[bot]](https://github.com/apps/renovate) (#7759) - fix(deps): update dependency yt-dlp to v2026.6.9 @[renovate[bot]](https://github.com/apps/renovate) (#7758) - fix(deps): update dependency openai to v2.41.1 @[renovate[bot]](https://github.com/apps/renovate) (#7761) - fix(deps): update dependency pillow-heif to v1.4.0 @[renovate[bot]](https://github.com/apps/renovate) (#7762) - chore(deps): update dependency ruff to v0.15.17 @[renovate[bot]](https://github.com/apps/renovate) (#7763) - chore(deps): update dependency dompurify to v3.4.11 [security] @[renovate[bot]](https://github.com/apps/renovate) (#7772) - chore(deps): update node.js to 032e78d @[renovate[bot]](https://github.com/apps/renovate) (#7773) - chore(deps): update dependency pytest to v9.1.0 @[renovate[bot]](https://github.com/apps/renovate) (#7776) - chore(deps): update dependency pylint to v4.0.6 @[renovate[bot]](https://github.com/apps/renovate) (#7777) - fix(deps): update dependency fastapi to v0.137.1 @[renovate[bot]](https://github.com/apps/renovate) (#7778) - fix(deps): update dependency sqlalchemy to v2.0.51 @[renovate[bot]](https://github.com/apps/renovate) (#7783) - chore(deps): lock file maintenance @[renovate[bot]](https://github.com/apps/renovate) (#7788) - fix(deps): update dependency openai to v2.42.0 @[renovate[bot]](https://github.com/apps/renovate) (#7787) - fix(deps): update dependency openai to v2.43.0 @[renovate[bot]](https://github.com/apps/renovate) (#7794) - fix(deps): update dependency fastapi to v0.137.2 @[renovate[bot]](https://github.com/apps/renovate) (#7796) - chore(deps): update dependency ruff to v0.15.18 @[renovate[bot]](https://github.com/apps/renovate) (#7797) - chore(deps): update node.js to 012c19a @[renovate[bot]](https://github.com/apps/renovate) (#7799) - chore(deps): update node.js to 733e1c0 @[renovate[bot]](https://github.com/apps/renovate) (#7800) - chore(deps): update dependency pytest to v9.1.1 @[renovate[bot]](https://github.com/apps/renovate) (#7801) </details> ## 🙏 New Contributors * @alexander-wenzel-dev made their first contribution in https://github.com/mealie-recipes/mealie/pull/7732 * @cheebreezee made their first contribution in https://github.com/mealie-recipes/mealie/pull/7741 * @xenoputtss made their first contribution in https://github.com/mealie-recipes/mealie/pull/7792 * @BuildmodeOne made their first contribution in https://github.com/mealie-recipes/mealie/pull/7793 # 🍴🍴🍴🍴🍴🍴