Releases: mealie-recipes/mealie
v3.17.0
🍴🍴🍴🍴🍴🍴
🎉 Highlights
The shopping list experience has been improved, especially for mobile users, including:
- a new create menu for new items
- swipe controls to check off an item (for mobile users)
✨ New features
- feat: Improve add shopping list item form @miah120 (#7091)
- feat: Shopping list / Swipe to check off @miah120 (#7118)
🐛 Bug fixes
- fix: prevent delete-image dialog from reopening in a loop inside v-menu @zdenek-stursa (#7469)
- fix: use correct title and icon on Recipe Actions data page @zdenek-stursa (#7498)
- fix: Allow user-configurable OIDC timeout @t0xicCode (#7496)
- fix: pressing Enter in dialogs now confirms instead of silently closing @zdenek-stursa (#7503)
- fix: add missing search bar to Recipe Data management page @zdenek-stursa (#7504)
- fix: Don't hit authenticated endpoints when logged out @garlic-hub (#7563)
- fix: restore create-item button in recipe dropdowns (categories, tags, tools) @zdenek-stursa (#7564)
- fix: Adjust ingredient section spacing @michael-genson (#7580)
🧰 Maintenance
13 changes
- chore(l10n): Crowdin locale sync @mealie-actions[bot] (#7497)
- chore(l10n): New Crowdin updates @hay-kot (#7500)
- chore(l10n): New Crowdin updates @hay-kot (#7502)
- chore(l10n): New Crowdin updates @hay-kot (#7506)
- chore(l10n): New Crowdin updates @hay-kot (#7509)
- chore(l10n): New Crowdin updates @hay-kot (#7515)
- chore(l10n): New Crowdin updates @hay-kot (#7523)
- chore(l10n): New Crowdin updates @hay-kot (#7526)
- chore(l10n): New Crowdin updates @hay-kot (#7536)
- chore(l10n): Crowdin locale sync @mealie-actions[bot] (#7541)
- chore(l10n): New Crowdin updates @hay-kot (#7546)
- chore(l10n): Crowdin locale sync @mealie-actions[bot] (#7569)
- chore(l10n): New Crowdin updates @hay-kot (#7558)
📚 Documentation
- docs: Update recipe creation docs @michael-genson (#7494)
- docs: Enhance BASE_URL description in backend config @BadCo-NZ (#7449)
- docs: document necessity of forwarded-allow-ips with OIDC behind reverse-proxy https in oidc-v2.md @aristaeus (#7424)
⬆️ Dependency updates
26 changes
- chore(deps): update dependency mypy to v1.20.1 @renovate[bot] (#7490)
- fix(deps): update dependency pydantic to v2.13.0 @renovate[bot] (#7492)
- fix(deps): update dependency pydantic to v2.13.1 @renovate[bot] (#7505)
- fix(deps): update dependency openai to v2.32.0 @renovate[bot] (#7507)
- fix(deps): update dependency fastapi to v0.136.0 @renovate[bot] (#7511)
- chore(deps): update dependency ruff to v0.15.11 @renovate[bot] (#7514)
- fix(deps): update dependency lxml to v6.1.0 [security] @renovate[bot] (#7513)
- chore(deps): update node.js to 807109d @renovate[bot] (#7516)
- fix(deps): update dependency pydantic to v2.13.2 @renovate[bot] (#7517)
- chore(deps): update node.js to 91447bc @renovate[bot] (#7519)
- chore(deps): update node.js to e989123 @renovate[bot] (#7520)
- fix(deps): update dependency authlib to v1.7.0 @renovate[bot] (#7525)
- fix(deps): update dependency pydantic to v2.13.3 @renovate[bot] (#7533)
- fix(deps): update dependency psycopg2-binary to v2.9.12 @renovate[bot] (#7539)
- fix(deps): update dependency uvicorn to v0.45.0 @renovate[bot] (#7543)
- chore(deps): update dependency mypy to v1.20.2 @renovate[bot] (#7544)
- chore(deps): update dependency pre-commit to v4.6.0 @renovate[bot] (#7547)
- fix(deps): update dependency uvicorn to v0.46.0 @renovate[bot] (#7553)
- fix(deps): update dependency fastapi to v0.136.1 @renovate[bot] (#7556)
- chore(deps): update dependency ruff to v0.15.12 @renovate[bot] (#7559)
- fix(deps): update dependency tzdata to v2026.2 @renovate[bot] (#7560)
- fix(deps): update dependency apprise to v1.10.0 @renovate[bot] (#7566)
- fix(deps): update dependency python-multipart to v0.0.27 @renovate[bot] (#7567)
- fix(deps): update dependency openai to v2.33.0 @renovate[bot] (#7570)
- fix(deps): update dependency pydantic-settings to v2.14.0 @renovate[bot] (#7534)
- chore(deps): update dependency axios to v1.15.2 [security] @renovate[bot] (#7579)
🙏 New Contributors
- @BadCo-NZ made their first contribution in #7449
- @aristaeus made their first contribution in #7424
- @garlic-hub made their first contribution in #7563
🍴🍴🍴🍴🍴🍴
v3.16.0
🍴🍴🍴🍴🍴🍴
This release contains a few fixes, and migrates our PWA manifest to the backend. Among other things, this fixes a bug with the PWA where it doesn't respect your custom theme color if you have it set.
✨ New features
- feat: Migrate PWA manifest to backend @Choromanski (#7331)
🐛 Bug fixes
- fix: Blank query filter builder fields @michael-genson (#7480)
- fix: preserve ingredient section titles when parsing recipe ingredients @zdenek-stursa (#7483)
- fix: Misc frontend layout fixes @michael-genson (#7487)
🧰 Maintenance
- chore: Update yarn deps @michael-genson (#7486)
📚 Documentation
- docs: Added copy button to codeblocks @Choromanski (#7343)
🔨 Internal development
- dev: Enable lockfile maintenance and update deps @michael-genson (#7484)
⬆️ Dependency updates
- chore(deps): update node.js to 33cf7f0 @renovate[bot] (#7478)
- fix(deps): update dependency authlib to v1.6.11 [security] @renovate[bot] (#7481)
- fix(deps): update dependency lxml to v6.0.4 @renovate[bot] (#7485)
🙏 New Contributors
- @zdenek-stursa made their first contribution in #7483
🍴🍴🍴🍴🍴🍴
v3.15.2
🍴🍴🍴🍴🍴🍴
This PR patches path traversal vulnerabilities in migration image imports and media routes. We recommend updating your instance immediately to patch these vulnerabilities.
🐛 Bug fixes
⬆️ Dependency updates
- fix(deps): update dependency python-multipart to v0.0.25 @renovate[bot] (#7470)
- fix(deps): update dependency python-multipart to v0.0.26 [security] @renovate[bot] (#7473)
🍴🍴🍴🍴🍴🍴
v3.15.1
🍴🍴🍴🍴🍴🍴
Patch release to address checkboxes not working on admin pages, as well as a few more bug fixes that snuck their way in here.
🐛 Bug fixes
- fix: Admin settings checkboxes not updating @Choromanski (#7462)
- fix: eliminate white flash on page load for dark theme users @DeepReef11 (#7358)
- fix: seed labels before foods in setup wizard to prevent race condition @Xenov-X (#7429)
⬆️ Dependency updates
- fix(deps): update dependency openai to v2.31.0 @renovate[bot] (#7460)
- chore(deps): update dependency ruff to v0.15.10 @renovate[bot] (#7464)
- fix(deps): update dependency lxml to v6.0.3 @renovate[bot] (#7465)
🙏 New Contributors
🍴🍴🍴🍴🍴🍴
v3.15.0
🍴🍴🍴🍴🍴🍴
This release adds a new feature: Announcements. More on these below 👇 This release migrates also us from Nuxt 3 to Nuxt 4. Unlike our Nuxt 2 -> 3 upgrade, there should be minimal user-facing changes (mostly just small tweaks to automatic margins and text size).
🎉 Highlights
-
Announcements: these are a one-way communication from the maintainers to users to call attention to certain new features, particularly ones that may require new user actions (such as running a migration script or cleaning up migration data). These are not intended to replace release notes, and are more of a way for us to communicate with users who don't regularly read release notes. Users can choose to disable these in-app, and admins can choose to disable these at the group or household level. More info in the announcement in the app!
-
Hitting "back" on your browser to the main recipe page will remember your last position and take you back there. No more scrolling every time you want to get back to your place on the page!
✨ New features
- feat: improve BaseDialog on mobile and use it globally @p0lycarpio (#7076)
- feat: Back button sets view to where you left page @Choromanski (#7370)
- feat: Added scroll to top on all pages that have recipeCardSection @Choromanski (#7384)
- feat: Announcements @michael-genson (#7431)
🐛 Bug fixes
- fix: Updated commit hash for opencontainers revision @Choromanski (#7340)
- fix: Disable SSL verify when scraping sites for recipe data @michael-genson (#7356)
- fix: Display issues with data management pages on mobile @Choromanski (#7389)
- fix: Reverted references to categories on the recipe actions data management page @Choromanski (#7391)
- fix: Support for enter key when creating household @Choromanski (#7419)
- fix: BaseDialog padding @p0lycarpio (#7428)
- fix: Unchecking tool in recipe @Choromanski (#7439)
- fix: Update frontend refs @michael-genson (#7444)
- fix: prevent stale SPA shell after container rebuild @DeepReef11 (#7344)
- fix: Search layout fixes @michael-genson (#7459)
🧰 Maintenance
22 changes
- chore(l10n): New Crowdin updates @hay-kot (#7346)
- chore(l10n): New Crowdin updates @hay-kot (#7351)
- chore(l10n): Crowdin locale sync @mealie-actions[bot] (#7357)
- chore(l10n): New Crowdin updates @hay-kot (#7360)
- chore(l10n): New Crowdin updates @hay-kot (#7362)
- chore(l10n): New Crowdin updates @hay-kot (#7365)
- chore(l10n): New Crowdin updates @hay-kot (#7367)
- chore(l10n): New Crowdin updates @hay-kot (#7371)
- chore(l10n): New Crowdin updates @hay-kot (#7372)
- chore(l10n): New Crowdin updates @hay-kot (#7375)
- chore(l10n): New Crowdin updates @hay-kot (#7379)
- chore(l10n): New Crowdin updates @hay-kot (#7380)
- chore(l10n): New Crowdin updates @hay-kot (#7393)
- chore(l10n): Crowdin locale sync @mealie-actions[bot] (#7397)
- chore(l10n): New Crowdin updates @hay-kot (#7400)
- chore(l10n): New Crowdin updates @hay-kot (#7408)
- chore(l10n): New Crowdin updates @hay-kot (#7413)
- chore(l10n): New Crowdin updates @hay-kot (#7425)
- chore: Nuxt 4 upgrade @Kuchenpirat (#7426)
- chore: upgrade to vuetify v4 @Kuchenpirat (#7432)
- chore(auto): Update pre-commit hooks @mealie-actions[bot] (#7364)
- chore(l10n): Crowdin locale sync @mealie-actions[bot] (#7447)
📚 Documentation
- docs: Updated homepage footer @Choromanski (#7440)
🔨 Internal development
- dev: Add linting rules to vscode settings @Choromanski (#7386)
- dev: Bumped gh actions to support node 24 @Choromanski (#7392)
- dev: Fix autolabel permission to only use pull_request_target @michael-genson (#7422)
⬆️ Dependency updates
31 changes
- chore(deps): update dependency node-forge to v1.4.0 [security] @renovate[bot] (#7338)
- chore(deps): update dependency types-python-dateutil to v2.9.0.20260323 @renovate[bot] (#7345)
- fix(deps): update dependency fastapi to v0.135.2 @renovate[bot] (#7349)
- chore(deps): update dependency types-requests to v2.32.4.20260324 @renovate[bot] (#7359)
- fix(deps): update dependency openai to v2.30.0 @renovate[bot] (#7369)
- chore(deps): update dependency ruff to v0.15.8 @renovate[bot] (#7373)
- chore(deps): update dependency types-requests to v2.33.0.20260327 @renovate[bot] (#7374)
- fix(deps): update dependency tzdata to v2026 @renovate[bot] (#7388)
- fix(deps): update dependency orjson to v3.11.8 @renovate[bot] (#7398)
- fix(deps): update dependency fastapi to v0.135.3 @renovate[bot] (#7406)
- fix(deps): update dependency pillow to v12.2.0 @renovate[bot] (#7407)
- chore(deps): update dependency vite to v7.3.2 [security] @renovate[bot] (#7410)
- chore(deps): update dependency types-requests to v2.33.0.20260402 @renovate[bot] (#7412)
- chore(deps): update node.js to 2ef5213 @renovate[bot] (#7414)
- chore(deps): update node.js to df0c595 @renovate[bot] (#7415)
- chore(deps): update dependency ruff to v0.15.9 @renovate[bot] (#7418)
- chore(deps): update node.js to 80fc934 @renovate[bot] (#7421)
- chore(deps): update dependency mypy to v1.20.0 @renovate[bot] (#7399)
- chore(deps): update dependency types-python-dateutil to v2.9.0.20260402 @renovate[bot] (#7411)
- fix(deps): update dependency requests to v2.33.1 @renovate[bot] (#7394)
- fix(deps): update dependency sqlalchemy to v2.0.49 @renovate[bot] (#7427)
- fix(deps): update dependency uvicorn to v0.43.0 @renovate[bot] (#7430)
- chore(deps): update dependency axios to v1.15.0 [security] @renovate[bot] (#7436)
- fix(deps): update dependency python-multipart to v0.0.24 @renovate[bot] (#7438)
- fix(deps): update dependency uvicorn to v0.44.0 @renovate[bot] (#7443)
- chore(deps): update dependency rich to v15 @renovate[bot] (#7448)
- fix(deps): update dependency rapidfuzz to v3.14.5 @renovate[bot] (#7450)
- chore(deps): update dependency pytest to v9.0.3 @renovate[bot] (#7452)
- chore(deps): update dependency types-python-dateutil to v2.9.0.20260408 @renovate[bot] (#7453)
- chore(deps): update dependency types-requests to v2.33.0.20260408 @renovate[bot] (#7455)
- chore(deps): update dependency types-pyyaml to v6.0.12.20260408 @renovate[bot] (#7454)
🙏 New Contributors
- @DeepReef11 made their first contribution in #7344
🍴🍴🍴🍴🍴🍴
v3.14.0
🥧🥧🥧🥧🥧🥧
This release contains a ton of bug fixes, and some exciting new features, particularly for importing non-English recipes.
🎉 Highlights
-
The NLP parser now leverages your units database to more accurately parse ingredients with custom units. This is especially handy for non-English recipes, as the NLP data is trained exclusively off of English data. If you're used to using the brute force parser, give the NLP parser a go and see how it fares!
-
You can now automatically show past days in the meal planner on first load:
✨ New features
- feat: Auto-merge Renovate dependency updates @hay-kot (#7280)
- feat: Clarification of site settings @Choromanski (#7321)
- feat: Add days in the past selector on meal planner @arnassavickas (#6857)
- feat: Pass user defined units as custom units to parse_ingredient function. @strangetom (#7334)
🐛 Bug fixes
- fix: Use latest python image as base @dswd (#7276)
- fix: Release Commit @Choromanski (#7274)
- fix: Fix create token API page @michael-genson (#7325)
- fix: Removing a recipe ingredient doesn't remove its links to steps @RoSh-23 (#6896)
- fix: publish all mealplan create, update, and delete events @francisferrell (#7015)
- fix: restore recipe notes during JSON import @materialsportler (#7017)
- fix: unparsed ingredients poorly formatted when fed to NLP parser @gabrielclimb (#7086)
- fix: HTML/JSON import failing @michael-genson (#7330)
- fix: preserve stored recipe slugs during hydration @harshitlarl (#7294)
- fix: Relax URL validation @michael-genson (#7336)
🧰 Maintenance
16 changes
- chore(l10n): New Crowdin updates @hay-kot (#7277)
- chore: bump l10n auto-merge line limit from 400 to 6000 @hay-kot (#7279)
- chore(l10n): New Crowdin updates @hay-kot (#7282)
- chore(l10n): New Crowdin updates @hay-kot (#7289)
- chore(l10n): New Crowdin updates @hay-kot (#7292)
- chore(l10n): Crowdin locale sync @mealie-actions (#7293)
- chore(l10n): New Crowdin updates @hay-kot (#7297)
- chore(auto): Update pre-commit hooks @mealie-actions (#7298)
- chore: script setup components @Kuchenpirat (#7299)
- chore(l10n): New Crowdin updates @hay-kot (#7304)
- chore(l10n): New Crowdin updates @hay-kot (#7309)
- chore: migrate remaining pages to script setup @Kuchenpirat (#7310)
- chore(l10n): New Crowdin updates @hay-kot (#7315)
- chore(l10n): New Crowdin updates @hay-kot (#7323)
- chore(l10n): New Crowdin updates @hay-kot (#7332)
- chore: Resolve startup warnings @michael-genson (#7335)
📚 Documentation
- docs: Add missing
OPENAI_AUDIO_MODELenv var to docs @michael-genson (#7333)
🔨 Internal development
- dev: Update PR template @michael-genson (#7326)
⬆️ Dependency updates
7 changes
- chore(deps): update dependency ruff to v0.15.7 @renovate (#7281)
- chore(deps): update dependency mkdocs-material to v9.7.6 @renovate (#7278)
- chore(deps): update node.js to bb20cf7 @renovate (#7317)
- fix(deps): update dependency ingredient-parser-nlp to v2.6.0 @renovate (#7318)
- fix(deps): update dependency requests to v2.33.0 [security] @renovate (#7319)
- fix(deps): update dependency pint to v0.25.3 @renovate (#7314)
- fix(deps): update dependency apprise to v1.9.9 @renovate (#7327)
🙏 New Contributors
- @dswd made their first contribution in #7276
- @arnassavickas made their first contribution in #6857
- @RoSh-23 made their first contribution in #6896
- @francisferrell made their first contribution in #7015
- @materialsportler made their first contribution in #7017
- @gabrielclimb made their first contribution in #7086
- @harshitlarl made their first contribution in #7294
🥧🥧🥧🥧🥧🥧
v3.13.1
🍴🍴🍴🍴🍴🍴
Quick patch release to test out a tweak to our release flow.
🐛 Bug fixes
- fix: #6802 prevent 500 internal server error when patching recipe tags @SimeonSouttar (#6803)
- fix: Updated workflows to checkout on commit of commit-version-bump @Choromanski (#7217)
🧰 Maintenance
🙏 New Contributors
- @SimeonSouttar made their first contribution in #6803
🍴🍴🍴🍴🍴🍴
v3.13.0
🍴🍴🍴🍴🍴🍴
Welcome to the latest release of Mealie! We've got a ton of new features ready for you with this release, as well as a good chunk of bug fixes.
🎉 Highlights
-
You can now import recipes from YouTube, TikTok, Instagram, and other video sources using OpenAI. Simply drop the URL of your video into Mealie and it will download and transcribe the video, then create a recipe.
-
Units can now be standardized to enable conversions (e.g. "1 pint" can be converted to "2 cups"). All known, standard units will be standardized for you, but you can customize your own units on the data management page. This enables automatic merging of shopping list ingredients with compatible units. This is the first of many unit-standardization features coming to Mealie, so stay tuned!
-
We've upgraded our scraper to more-consistently fetch websites without the need to copy/paste the raw HTML. Some sites may still require this, but the vast majority work again. We'll continue to roll out improvements to make creating recipes from websites as easy as possible.
✨ New features
- feat: Unit standardization / conversion @michael-genson (#7121)
- feat: Add social media video import (YouTube, TikTok, Instagram) @AurelienPautet (#6764)
- feat: Recipe import progress @michael-genson (#7252)
- feat: Switch to httpx-curl-cffi for better scraping @michael-genson (#7254)
- feat: Adjust linked recipe unit and seperate when adding to shopping list @michael-genson (#7260)
🐛 Bug fixes
- fix: migrate RecipeRating component to script setup and defineModel @ProperTeaMogul (#7203)
- fix: Allow more precise standard quantities in unit data management @michael-genson (#7218)
- fix: Restore original recipe description string @michael-genson (#7221)
- fix: Don't continue parsing recipes with errored HTTP status codes @deanmalan (#7230)
- fix: Add ffmpeg to prod image @michael-genson (#7235)
- fix: Update user agents in user-agents.txt @RealMochaFox (#7250)
- fix: exclude index.html from workbox precache to prevent stale 401 app shell @api2062 (#7255)
🧰 Maintenance
18 changes
- chore(l10n): New Crowdin updates @hay-kot (#7205)
- chore(l10n): New Crowdin updates @hay-kot (#7208)
- chore(auto): Update pre-commit hooks @mealie-actions (#7209)
- chore(l10n): New Crowdin updates @hay-kot (#7220)
- chore(l10n): New Crowdin updates @hay-kot (#7223)
- chore(l10n): New Crowdin updates @hay-kot (#7225)
- chore(l10n): New Crowdin updates @hay-kot (#7228)
- chore(l10n): New Crowdin updates @hay-kot (#7231)
- chore: run Ruff with --fix in Pre-commit to auto-fix fixable errors @deanmalan (#7232)
- chore(l10n): New Crowdin updates @hay-kot (#7236)
- chore(l10n): New Crowdin updates @hay-kot (#7240)
- chore(l10n): New Crowdin updates @hay-kot (#7245)
- chore(l10n): Crowdin locale sync @mealie-actions (#7246)
- chore(l10n): New Crowdin updates @hay-kot (#7253)
- chore(l10n): New Crowdin updates @hay-kot (#7258)
- chore(auto): Update pre-commit hooks @mealie-actions (#7256)
- chore(l10n): New Crowdin updates @hay-kot (#7266)
- chore(l10n): New Crowdin updates @hay-kot (#7270)
⬆️ Dependency updates
16 changes
- fix(deps): update dependency apprise to v1.9.8 @renovate (#7207)
- chore(deps): update dependency setuptools to v82.0.1 @renovate (#7211)
- fix(deps): pin dependency pint to v0.25 @renovate (#7213)
- fix(deps): update dependency pint to v0.25.2 @renovate (#7214)
- chore(deps): update dependency mkdocs-material to v9.7.5 @renovate (#7224)
- fix(deps): update dependency pyjwt to v2.12.0 @renovate (#7234)
- chore(deps): update dependency ruff to v0.15.6 @renovate (#7237)
- fix(deps): update dependency yt-dlp to v2026.3.13 @renovate (#7239)
- fix(deps): update dependency openai to v2.28.0 @renovate (#7242)
- fix(deps): update dependency uvicorn to v0.42.0 @renovate (#7257)
- fix(deps): update dependency pyjwt to v2.12.1 @renovate (#7241)
- chore(deps): update dependency coverage to v7.13.5 @renovate (#7265)
- chore(deps): update node.js to 5a593d7 @renovate (#7262)
- chore(deps): update node.js to 5a593d7 @renovate (#7267)
- fix(deps): update dependency yt-dlp to v2026.3.17 @renovate (#7269)
- fix(deps): update dependency openai to v2.29.0 @renovate (#7268)
🙏 New Contributors
- @deanmalan made their first contribution in #7230
- @RealMochaFox made their first contribution in #7250
- @api2062 made their first contribution in #7255
🍴🍴🍴🍴🍴🍴
v3.12.0
🍴🍴🍴🍴🍴🍴
🎉 Highlights
This PR includes a major optimization for the healthcheck script (thanks @michelezoncheddu!). You should see substantially less resource usage, more in line with what you'd expect from a healthcheck.
✨ New features
- feat: Auto-adjust shopping list item autofocus @michael-genson (#7096)
- feat: Improve auto-form layout @michael-genson (#7150)
- feat: include extra ingredients + amounts in NLP parser output @michael-genson (#7191)
- feat: replace python script with curl @michelezoncheddu (#7192)
🐛 Bug fixes
- fix: Include unmade recipes when filtering by last made @michael-genson (#7130)
- fix: Ensure recipe ingredients have a valid reference_id @michael-genson (#7139)
- fix(deps): update dependency fastapi to v0.133.1 @michael-genson (#7146)
- fix: data management food edit / create @Kuchenpirat (#7148)
- fix: Updated get_ts_locales to resolve issues with Automatic Locale Sync workflow @Choromanski (#7181)
- fix: Logic to unset-rating when currentrating is selected @Choromanski (#7182)
- fix: Restore missing description for household's new recipe settings @michael-genson (#7204)
- fix: Added mealie.log rotations to excluded files for backup @Choromanski (#7138)
🧰 Maintenance
28 changes
- chore(l10n): New Crowdin updates @hay-kot (#7088)
- chore(l10n): New Crowdin updates @hay-kot (#7098)
- chore(l10n): New Crowdin updates @hay-kot (#7105)
- chore(l10n): New Crowdin updates @hay-kot (#7110)
- chore(l10n): New Crowdin updates @hay-kot (#7112)
- chore(l10n): New Crowdin updates @hay-kot (#7116)
- chore(l10n): New Crowdin updates @hay-kot (#7119)
- chore(auto): Update pre-commit hooks @mealie-actions (#7122)
- chore(l10n): New Crowdin updates @hay-kot (#7126)
- chore(l10n): New Crowdin updates @hay-kot (#7131)
- chore: refactor data management pages @Kuchenpirat (#7107)
- chore(l10n): New Crowdin updates @hay-kot (#7136)
- chore(l10n): New Crowdin updates @hay-kot (#7145)
- chore(l10n): New Crowdin updates @hay-kot (#7149)
- chore(l10n): New Crowdin updates @hay-kot (#7153)
- chore(l10n): New Crowdin updates @hay-kot (#7157)
- chore(l10n): New Crowdin updates @hay-kot (#7160)
- chore(l10n): New Crowdin updates @hay-kot (#7166)
- chore(auto): Update pre-commit hooks @mealie-actions (#7168)
- chore(l10n): New Crowdin updates @hay-kot (#7174)
- chore(l10n): New Crowdin updates @hay-kot (#7180)
- chore(l10n): Crowdin locale sync @mealie-actions (#7183)
- chore(l10n): New Crowdin updates @hay-kot (#7186)
- chore(l10n): New Crowdin updates @hay-kot (#7189)
- chore(l10n): New Crowdin updates @hay-kot (#7194)
- chore(l10n): New Crowdin updates @hay-kot (#7195)
- chore(l10n): New Crowdin updates @hay-kot (#7198)
- chore(l10n): New Crowdin updates @hay-kot (#7202)
📚 Documentation
- docs: Add missing release tags to OpenAI docs @michael-genson (#7102)
- docs: Remove redoc API generation @michael-genson (#7109)
🔨 Internal development
- dev: add AI/LLM Assistance section to PR template @Kuchenpirat (#7144)
- dev: Add backend translations to auto-approval @michael-genson (#7196)
⬆️ Dependency updates
27 changes
- chore(deps): update dependency mkdocs-material to v9.7.2 @renovate (#7093)
- fix(deps): update dependency pillow-heif to v1.2.1 @renovate (#7092)
- chore(deps): update dependency rich to v14.3.3 @renovate (#7100)
- fix(deps): update dependency pydantic-settings to v2.13.1 @renovate (#7101)
- chore(deps): update dependency ruff to v0.15.2 @renovate (#7104)
- chore(deps): update dependency pylint to v4.0.5 @renovate (#7106)
- fix(deps): update dependency fastapi to v0.129.1 @renovate (#7111)
- fix(deps): update dependency fastapi to v0.131.0 @renovate (#7113)
- fix(deps): update dependency openai to v2.22.0 @renovate (#7128)
- fix(deps): update dependency openai to v2.23.0 @renovate (#7132)
- chore(deps): update dependency mkdocs-material to v9.7.3 @renovate (#7134)
- chore(deps): update node.js to 3a09aa6 @renovate (#7140)
- fix(deps): update dependency sqlalchemy to v2.0.47 @renovate (#7135)
- fix(deps): update dependency openai to v2.24.0 @renovate (#7137)
- chore(deps): update dependency ruff to v0.15.3 @renovate (#7151)
- chore(deps): update dependency ruff to v0.15.4 @renovate (#7152)
- fix(deps): update dependency pillow-heif to v1.3.0 @renovate (#7155)
- fix(deps): update dependency fastapi to v0.134.0 @renovate (#7127)
- fix(deps): update dependency fastapi to v0.135.1 @renovate (#7165)
- chore(deps): update dependency types-python-dateutil to v2.9.0.20260302 @renovate (#7169)
- fix(deps): update dependency authlib to v1.6.9 @renovate (#7170)
- fix(deps): update dependency python-dotenv to v1.2.2 @renovate (#7164)
- fix(deps): update dependency sqlalchemy to v2.0.48 @renovate (#7173)
- chore(deps): update dependency mkdocs-material to v9.7.4 @renovate (#7178)
- chore(deps): update dependency types-python-dateutil to v2.9.0.20260305 @renovate (#7188)
- chore(deps): update dependency ruff to v0.15.5 @renovate (#7193)
- fix(deps): update dependency openai to v2.26.0 @renovate (#7190)
🙏 New Contributors
- @michelezoncheddu made their first contribution in #7192
🍴🍴🍴🍴🍴🍴
v3.11.0
🍴🍴🍴🍴🍴🍴
🎉 Highlights
- You can now use a relative date when filtering by "Last Made" in the recipe finder and meal planner! Existing rules using an absolute date will continue to work, but will be updated to a relative date when edited.
- Ingredients are pluralized more naturally depending on your language. In English, for instance, you will see "2 cups onion chopped" instead of "2 cups onions chopped". Languages where the latter is preferred will keep the old behavior, and some languages (such as Japanese) forego plurals entirely. Check out the PR for more details. Note that this is only applicable for parsed recipes with foods that have both singular and plural forms defined.
- We've improved the drop down search logic to better match what you type (no more typing "onion" and having to scroll down to the 5th or 6th item to find it). Drop down fields also check aliases now, too!
✨ New features
- feat: Dynamic Placeholders UI @michael-genson (#7034)
- feat: Add Docker metadata to published images @michael-genson (#7052)
- feat: Customize Ingredient Plural Handling @michael-genson (#7057)
- feat: Improve recipe filter search ordering @michael-genson (#7061)
- feat: Further improve recipe filter search and shopping list and recipe ingredient editor @michael-genson (#7063)
🐛 Bug fixes
- fix: handle numeric recipeCategory from LLM/site to prevent import failure @jknndy (#7026)
- fix: Search bar width @michael-genson (#7060)
- fix: remove reserved prefix @ZacharySchaffter (#7033)
- fix: Show minimum value for quantity @michael-genson (#7077)
- fix: Exclude docs/redoc from frontend route cache @michael-genson (#7082)
🧰 Maintenance
16 changes
- chore(l10n): New Crowdin updates @hay-kot (#7010)
- chore(l10n): New Crowdin updates @hay-kot (#7014)
- chore(l10n): New Crowdin updates @hay-kot (#7016)
- chore(l10n): New Crowdin updates @hay-kot (#7022)
- chore(l10n): New Crowdin updates @hay-kot (#7024)
- chore(l10n): Crowdin locale sync @mealie-actions (#7029)
- chore(l10n): New Crowdin updates @hay-kot (#7028)
- chore(l10n): New Crowdin updates @hay-kot (#7048)
- chore(l10n): New Crowdin updates @hay-kot (#7053)
- chore(l10n): New Crowdin updates @hay-kot (#7055)
- chore(l10n): New Crowdin updates @hay-kot (#7059)
- chore(l10n): New Crowdin updates @hay-kot (#7062)
- chore(l10n): New Crowdin updates @hay-kot (#7066)
- chore(l10n): New Crowdin updates @hay-kot (#7070)
- chore(l10n): New Crowdin updates @hay-kot (#7075)
- chore(auto): Update pre-commit hooks @mealie-actions (#7080)
⬆️ Dependency updates
22 changes
- fix(deps): update dependency openai to v2.17.0 @renovate (#7012)
- fix(deps): update dependency fastapi to v0.128.2 @renovate (#7013)
- fix(deps): update dependency authlib to v1.6.7 @renovate (#7019)
- fix(deps): update dependency fastapi to v0.128.3 @renovate (#7020)
- chore(deps): update dependency setuptools to v81 @renovate (#7021)
- fix(deps): update dependency fastapi to v0.128.4 @renovate (#7023)
- fix(deps): update dependency fastapi to v0.128.5 @renovate (#7030)
- chore(deps): update dependency setuptools to v82 @renovate (#7032)
- fix(deps): update dependency fastapi to v0.128.6 @renovate (#7040)
- chore(deps): update dependency coverage to v7.13.4 @renovate (#7039)
- chore(deps): update dependency axios to v1.13.5 [security] @renovate (#7041)
- fix(deps): update dependency pillow to v12.1.1 @renovate (#7047)
- fix(deps): update dependency alembic to v1.18.4 @renovate (#7044)
- fix(deps): update dependency openai to v2.20.0 @renovate (#7042)
- fix(deps): update dependency fastapi to v0.128.7 @renovate (#7043)
- fix(deps): update dependency fastapi to v0.128.8 @renovate (#7049)
- chore(deps): update node.js to 00e9195 @renovate (#7054)
- fix(deps): update dependency fastapi to v0.129.0 @renovate (#7056)
- chore(deps): update dependency ruff to v0.15.1 @renovate (#7058)
- fix(deps): update dependency openai to v2.21.0 @renovate (#7065)
- fix(deps): update dependency authlib to v1.6.8 @renovate (#7067)
- fix(deps): update dependency pydantic-settings to v2.13.0 @renovate (#7073)
🙏 New Contributors
- @ZacharySchaffter made their first contribution in #7033