github mealie-recipes/mealie v3.31.0

29 minutes ago

🍴🍴🍴🍴🍴🍴

🎉 Highlights

  • Security fixes. This release fixes a batch of security issues, mostly around data access between groups and households, private recipe visibility on public pages, password reset links, and oversized uploads. We recommend everyone update. Security advisories with details will follow shortly after the release.
  • Export to PDF. You can now export recipes and cookbooks as PDFs, right from the recipe menu or a cookbook page. (#9060)
  • Days view in the meal planner. A new view lets you plan day by day, next to the existing week view. (#9087)
  • Cleaner AI imports. AI recipe imports now produce tidier notes and more complete instructions. (#9132, #9133)
  • Faster large lists. The recipe list, large list endpoints, and the timeline do far less work, which makes big collections noticeably quicker. (#9055, #9118, #9119)
  • Things to know when upgrading:
    • Request bodies are now capped by MAX_UPLOAD_SIZE_MB (default 1024). Larger uploads, such as big migrations or backups, return a 413 until you raise it. (#9116)
    • Password reset links now expire after PASSWORD_RESET_TOKEN_TIME hours (default 1). (#9045)
    • New APPRISE_ALLOWED_SCHEMAS setting limits which notification services notifiers can use. (#9052)
    • The recipe API no longer returns cookTime. The upgrade moves any existing values into performTime, which the UI already shows as "Cook Time", and older clients can still send cookTime. (#9011)

✨ New features

🐛 Bug fixes

  • fix: convert sodium and cholesterol written as grams to milligrams @kevin9327 (#8956)
  • fix: reject comments on recipes outside the caller's group @hay-kot (#8966)
  • fix: keep updates from moving rows to another group or household @hay-kot (#8965)
  • fix: reject shopping list writes that target another household's list @hay-kot (#8968)
  • fix: reject meal plan entries that use a recipe from another group @hay-kot (#8967)
  • fix: restrict timeline event changes to the author or an admin @hay-kot (#8969)
  • fix: enforce explore visibility outside the user query filter @hay-kot (#8974)
  • fix: keep error toasts open for 10 seconds @Xyolyp (#8982)
  • fix: pass column aliases when filtering recipe suggestions @ben-bacs (#8984)
  • fix: apply visibility rules to SPA recipe metadata @hay-kot (#8997)
  • fix: check recipe update permission in bulk actions and asset routes @hay-kot (#8998)
  • fix: validate email address on the user profile form @hay-kot (#9009)
  • fix: keep line breaks inside imported recipe steps @hay-kot (#9010)
  • fix: add a scheme to the OIDC redirect URI when BASE_URL has none @hay-kot (#9012)
  • fix: drop the recipe cook_time column and use perform_time @hay-kot (#9011)
  • fix: create new recipes without placeholder ingredient and step @hay-kot (#9041)
  • fix: keep linked ingredients and notes when merging instruction steps @hay-kot (#9043)
  • fix: keep AI provider secrets bound to their base URL @hay-kot (#9044)
  • fix: prevent shopping list title from overflowing actions on overview page @GerbenJavado (#9030)
  • fix: scope auto_init related-row lookups to the caller group @hay-kot (#8972)
  • fix: speed up the recipe list query @hay-kot (#9055)
  • fix: add APPRISE_ALLOWED_SCHEMAS and document notifier SSRF posture @hay-kot (#9052)
  • fix: filter the explore page on a recipe card tag click @hay-kot (#9059)
  • fix: expire password reset links and send reset email in background @hay-kot (#9045)
  • fix: re-disable autocapitalization on shopping list entry @michael-genson (#9073)
  • fix: Restore full "save label" button size @michael-genson (#9074)
  • fix: parse dialog background color @michael-genson (#9075)
  • fix: typos in Dockerfile and recipe page comment @Evico85 (#9070)
  • fix: focus newly added ingredient row in recipe editor @gustaf-a (#8741)
  • fix: show that nutrition values are per serving @hay-kot (#9081)
  • fix: resolve recipe organizers by slug when the name collides @Yi-111-a (#8600)
  • fix: load shared recipes without cartesian joins @fannta1990 (#9111)
  • fix: escalate to FlareSolverr when a fetched page yields no recipe @hussnainahmedd (#8631)
  • fix: keep queued shopping list changes when a write fails @LembkeM (#9018)
  • fix: show an error when a request fails before it reaches Mealie @Xyolyp (#8981)
  • fix: keep recipe description inside the info card on mobile @vulinh1704 (#8879)
  • fix: ignore case when checking for an existing alias @wrobelda (#9025)
  • fix: send transcription prompt as user message in chat fallback @cobalt-kite12 (#8843)
  • fix: preserve recipe rename navigation when clearing optional query flags @Busy-SweetPotato (#8834)
  • fix: preserve commas in quoted query filter values @ZanLexisz (#8990)
  • fix: limit upload size and archive extraction in imports @hay-kot (#9116)
  • fix: reduce queries and event loop blocks in large list endpoints @hay-kot (#9118)
  • fix: stop the timeline from fetching every recipe on scroll @hay-kot (#9119)
  • fix: block stored HTML injection and lint against raw HTML sinks @hay-kot (#9129)
  • fix: adapt label text colour to the label background @Yi-111-a (#8805)

🧰 Maintenance

26 changes

📚 Documentation

🔨 Internal development

⬆️ Dependency updates

61 changes

🙏 New Contributors

!!! Need to source this from GitHub's auto generated release notes !!!

🍴🍴🍴🍴🍴🍴

Don't miss a new mealie release

NewReleases is sending notifications on new releases.