Mealie logo

Mealie

Self-hosted recipe manager, meal planner, and shopping list

Alternative to: paprika, mealime, plan to eat

Mealie screenshot

About Versions (96)

v3.10.0

2026-02-02

๐Ÿด๐Ÿด๐Ÿด๐Ÿด๐Ÿด๐Ÿด

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 for more info on how to do this (#6588)

  • Weโ€™ve migrated our OpenAI implementation to use 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):

    image

๐Ÿšจ 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

40 changes
  • 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)

๐Ÿ“š 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

27 changes
  • 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)

๐Ÿ™ New Contributors

๐Ÿด๐Ÿด๐Ÿด๐Ÿด๐Ÿด๐Ÿด