v3.20.0

ChatGPTNextWeb/NextChatv3.20.0Jun 24, 2026by github-actions[bot]

AI Summary

A feature release focused on security hardening, recipe parser improvements, and user experience enhancements like CSV imports and backup versioning.

Key Highlights

  • Enhanced PR Lint/Validation
  • Added version info to backup files
  • Hardened against stored XSS
  • Fixed recipe parser consistency on less-trusted networks
  • Support for CSV/TXT upload and Plan to Eat import

New Features

  • Enhanced PR Lint/Validation
  • Warning when deleting foods used in recipes
  • Added version info to 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

# 🍴🍴🍴🍴🍴🍴