v3.10.0
mealie-recipes/mealiev3.10.0Feb 2, 2026by github-actions[bot]
AI Summary
Major release with significant new features including recipe category import, custom OpenAI prompts, OpenAI structured outputs migration, and date range shopping list from meal planner.
Key Highlights
- Import original URL categories during recipe import
- Custom OpenAI prompts support
- Migrated OpenAI implementation to use structured outputs
- Add full range of dates from meal planner to shopping list
- Toggle button for switching any/all mode for search filters
Breaking Changes
- GET requests to /api/households/invitations now locked to admins only
New Features
- Toggle button for switching any/all mode for search filters
- Discard confirmation dialog for recipe editor
- Added 'sprig' as a unit
- Option to Import Recipe Category During Recipe Import
- Customizable OpenAI prompts
- Improve recipe assets preview
- Migrate OpenAI implementation to use structured outputs
- Add range of dates to shopping list from meal planner
- Query relative dates
Full Release Notes
# 🍴🍴🍴🍴🍴🍴 This version of Mealie contains a whole bunch of new features and bug fixes, including first-time contributions from 9 users (and a new bot)! Check out the highlights below 👇 ## 🎉 Highlights - When importing a recipe, you can now import the original URL's categories (similar to how you can import tags) (#6523) - You can now use custom OpenAI prompts to overwrite the ones included with Mealie. [Check out the docs](https://docs.mealie.io/documentation/getting-started/installation/backend-config/#openai) for more info on how to do this (#6588) - We've migrated our OpenAI implementation to use [structured outputs](https://platform.openai.com/docs/guides/structured-outputs). This means much better support for modern models, which previously didn't support the legacy JSON mode (#6964) - You can now add a full range of dates from the meal planner to your shopping list, instead of adding one day at a time (#6981): <img width="905" height="118" alt="image" src="https://github.com/user-attachments/assets/fe27fcd9-75c7-41ff-a082-bee048b6a397" /> ## 🚨 Breaking changes There is a minor breaking change in #6781: `GET` requests to `/api/households/invitations` are now locked to admins only. This doesn't change the invitation flow for users, as requests using a particular invitation are unaffected. Check out the PR for more details. - fix: disable invitations when password login is disabled @p0lycarpio (#6781) ## ✨ New features - feat: Use toggle button for switching any/all mode for search filters @lehnerpat (#6833) - feat: add discard confirmation dialog for recipe editor @hay-kot (#6941) - feat: Add "sprig" as a unit. @Fjodor42 (#6934) - feat: Added Option to Import Recipe Category During Recipe Import @Gtt1229 (#6523) - feat: Customizable OpenAI prompts (#5146) @ImanuelBertrand (#6588) - feat: Improve recipe assets preview @p0lycarpio (#6602) - feat: Migrate OpenAI implementation to use structured outputs @michael-genson (#6964) - feat: Add range of dates to shopping list from meal planner @michael-genson (#6981) - feat: Query relative dates @michael-genson (#6984) ## 🐛 Bug fixes - fix: Tags can't be renamed @lehnerpat (#6835) - fix: Coerce null servings into 0 servings @michael-genson (#6839) - fix: prevent XSS via javascript: URIs in recipe actions @hay-kot (#6885) - fix: Make 'auto-search' toggle change color to indicate state @lehnerpat (#6809) - fix: correct global scroll strategy to prevent menu fixation @jeromer-dev (#6577) - fix: use GITHUB_TOKEN for auto-merge to respect CI checks @hay-kot (#6953) - fix: Keep ingredient headers in cook mode @codefaux (#6946) - fix: dispose AlchemyExporter engine after restore completes @hay-kot (#6942) - fix: Seed data - en-US only - correct [some] plural names and add [some] accented characters @stvhwrd (#6405) - fix: sub-recipes in multi group setup (#6652) @ImanuelBertrand (#6663) - fix: disable invitations when password login is disabled @p0lycarpio (#6781) - fix: recipe context menu @p0lycarpio (#6782) - fix: Disable context hover @michael-genson (#6962) - fix: Remove deprecated warning from shopping list editor @michael-genson (#6963) - fix: service-worker precache manifest entries not generated correctly @morgan-dgk (#6815) - fix: Re-enable some style tags @michael-genson (#6982) - fix: Flaky $NOW tests @michael-genson (#6990) ## 🧰 Maintenance <details> <summary>40 changes</summary> - chore(l10n): Crowdin locale sync @github-actions (#6825) - chore(l10n): New Crowdin updates @hay-kot (#6806) - chore(l10n): New Crowdin updates @hay-kot (#6827) - chore(l10n): New Crowdin updates @hay-kot (#6832) - chore(l10n): New Crowdin updates @hay-kot (#6840) - chore(l10n): New Crowdin updates @hay-kot (#6843) - chore(l10n): New Crowdin updates @hay-kot (#6861) - chore(l10n): New Crowdin updates @hay-kot (#6863) - chore(l10n): New Crowdin updates @hay-kot (#6864) - chore(l10n): Crowdin locale sync @github-actions (#6862) - chore(auto): Update pre-commit hooks @github-actions (#6866) - chore(l10n): New Crowdin updates @hay-kot (#6867) - chore(l10n): New Crowdin updates @hay-kot (#6870) - chore(l10n): New Crowdin updates @hay-kot (#6886) - chore(auto): Update pre-commit hooks @github-actions (#6895) - chore(l10n): New Crowdin updates @hay-kot (#6888) - chore(l10n): Crowdin locale sync @github-actions (#6891) - chore(l10n): New Crowdin updates @hay-kot (#6905) - chore(l10n): New Crowdin updates @hay-kot (#6908) - chore(l10n): New Crowdin updates @hay-kot (#6911) - chore(l10n): New Crowdin updates @hay-kot (#6912) - chore(l10n): New Crowdin updates @hay-kot (#6922) - chore(l10n): New Crowdin updates @hay-kot (#6925) - chore(l10n): Crowdin locale sync @github-actions (#6924) - chore(l10n): New Crowdin updates @hay-kot (#6929) - chore(l10n): New Crowdin updates @hay-kot (#6933) - chore(auto): Update pre-commit hooks @github-actions (#6932) - chore(l10n): New Crowdin updates @hay-kot (#6935) - chore(l10n): New Crowdin updates @hay-kot (#6936) - chore(l10n): New Crowdin updates @hay-kot (#6938) - chore(l10n): New Crowdin updates @hay-kot (#6944) - chore: add workflow to auto-merge l10n PRs @hay-kot (#6948) - chore(l10n): New Crowdin updates @hay-kot (#6949) - chore(l10n): New Crowdin updates @hay-kot (#6954) - chore(l10n): New Crowdin updates @hay-kot (#6959) - chore(l10n): New Crowdin updates @hay-kot (#6960) - chore(l10n): New Crowdin updates @hay-kot (#6967) - chore(l10n): Crowdin locale sync @mealie-actions (#6977) - chore(l10n): New Crowdin updates @hay-kot (#6979) - chore(l10n): New Crowdin updates @hay-kot (#6983) - chore(l10n): New Crowdin updates @hay-kot (#6987) </details> ## 📚 Documentation - docs: Fix typo and remove unused tip @michael-genson (#6849) - docs: fix authentik oidc link @Darwiner (#6851) - docs: Add an info callout about client-side cookies. @alexandreeberhardt (#6830) - docs: Misc. cleanup @michael-genson (#6988) ## 🔨 Internal development - dev: Enable CI on merge queues @michael-genson (#6955) - dev: Bunch of GH workflow fixes @michael-genson (#6956) - dev: Skip Trivy on merge queue @michael-genson (#6957) - dev: Add tasks for e2e tests @lehnerpat (#6797) - dev: Improve caching in taskfile @lehnerpat (#6798) - dev: Switch to bot token for locale sync @michael-genson (#6969) - dev: Fix token vars @michael-genson (#6970) - dev: Increase locale merge limit to 300 and allow PRs from Mealie bot @michael-genson (#6972) - dev: Allow locale sync path in auto merge @michael-genson (#6974) - dev: Switch approver for automated i18n merges @michael-genson (#6976) - dev: Switch to Mealie bot for auto-merging @michael-genson (#6978) ## ⬆️ Dependency updates <details> <summary>27 changes</summary> - fix(deps): update dependency pillow to v12.1.0 @renovate (#6816) - chore(deps): update dependency types-requests to v2.32.4.20260107 @renovate (#6846) - chore(deps): update dependency ruff to v0.14.11 @renovate (#6852) - fix(deps): update dependency alembic to v1.18.0 @renovate (#6858) - fix(deps): update dependency openai to v2.15.0 @renovate (#6859) - chore(deps): update node.js to 0ab63ca @renovate (#6872) - chore(deps): update dependency ruff to v0.14.13 @renovate (#6881) - fix(deps): update dependency alembic to v1.18.1 @renovate (#6878) - fix(deps): update dependency apprise to v1.9.7 @renovate (#6898) - chore(deps): update node.js to b2b2184 @renovate (#6879) - chore(deps): update dependency setuptools to v80.10.1 @renovate (#6901) - fix(deps): update dependency sqlalchemy to v2.0.46 @renovate (#6903) - chore(deps): update dependency ruff to v0.14.14 @renovate (#6909) - fix(deps): update dependency pillow-heif to v1.2.0 @renovate (#6910) - chore(deps): update dependency types-python-dateutil to v2.9.0.20260124 @renovate (#6913) - chore(deps): update dependency rich to v14.3.0 @renovate (#6919) - chore(deps): update dependency rich to v14.3.1 @renovate (#6923) - fix(deps): update dependency python-multipart to v0.0.22 @renovate (#6926) - fix(deps): update dependency openai to v2.16.0 @renovate (#6937) - chore(deps): update dependency coverage to v7.13.2 @renovate (#6927) - fix(deps): update dependency orjson to v3.11.6 @renovate (#6952) - chore(deps): update dependency setuptools to v80.10.2 @renovate (#6930) - fix(deps): update dependency alembic to v1.18.3 @renovate (#6945) - fix(deps): update dependency pyjwt to v2.11.0 @renovate (#6958) - fix(deps): update dependency ingredient-parser-nlp to v2.5.0 @renovate (#6961) - chore(deps): update dependency rich to v14.3.2 @renovate (#6980) - fix(deps): update dependency orjson to v3.11.7 @renovate (#6989) - chore(deps): pin dependency freezegun to ==1.5.5 (#6991) </details> ## 🙏 New Contributors * @Darwiner made their first contribution in https://github.com/mealie-recipes/mealie/pull/6851 * @alexandreeberhardt made their first contribution in https://github.com/mealie-recipes/mealie/pull/6830 * @jeromer-dev made their first contribution in https://github.com/mealie-recipes/mealie/pull/6577 * @codefaux made their first contribution in https://github.com/mealie-recipes/mealie/pull/6946 * @Fjodor42 made their first contribution in https://github.com/mealie-recipes/mealie/pull/6934 * @stvhwrd made their first contribution in https://github.com/mealie-recipes/mealie/pull/6405 * @Gtt1229 made their first contribution in https://github.com/mealie-recipes/mealie/pull/6523 * @ImanuelBertrand made their first contribution in https://github.com/mealie-recipes/mealie/pull/6588 * @morgan-dgk made their first contribution in https://github.com/mealie-recipes/mealie/pull/6815 * @mealie-actions[bot] made their first contribution in https://github.com/mealie-recipes/mealie/pull/6977 # 🍴🍴🍴🍴🍴🍴