v3.9.0

mealie-recipes/mealiev3.9.0Dec 29, 2025by github-actions[bot]

AI Summary

This release introduces UI enhancements for the meal planner and shopping list, including date persistence and animations, along with localized number inputs for specific locales.

Key Highlights

  • Previous date selections are remembered when navigating the meal planner
  • Checking off shopping list items now includes a nice animation
  • Number inputs use comma separators for decimal places in locales like German

New Features

  • Persist selected dates in meal planner
  • Animate shopping list and increase touch target
  • Replace number inputs with new v-number-input component

Full Release Notes

# 🍴🍴🍴🍴🍴🍴

## 🎉 Highlights

- When navigating to/from the meal planner, your previous date selections are remembered
- Checking off a shopping list item now has a nice animation
- Number inputs (e.g. recipe quantity) now use comma separators for the decimal place in locales which use them (e.g. German). They also look nicer!

## ✨ New features

- feat: persist selected dates in meal planner @gitolicious (#6512)
- feat: Animate shopping list and increase touch target @miah120 (#6569)
- feat: Replace number inputs with new v-number-input compontent @michael-genson (#6767)

## 🐛 Bug fixes

- fix: PWA maskable android icons & enctype shared_target @p0lycarpio (#6731)
- fix: Consistent Shopping List Recipe State @michael-genson (#6758)
- fix: Backup selection doesn't work sometimes @michael-genson (#6759)
- fix: add loader for create backup button @p0lycarpio (#6763)
- fix: the `add_pagination_to_query` now always returns the correct count @AurelienPautet (#6505)
- fix: Imported API keys not working on a new server #6477 @onemustpersist (#6496)
- fix: Add resiliency to LDAP admin filter @michael-genson (#6766)
- fix: Can't remove organizer @michael-genson (#6771)
- fix: Improve recipe bulk deletion @michael-genson (#6772)
- fix: Only fetch recipes with a household id @michael-genson (#6773)
- fix: resize pwa maskable icons @p0lycarpio (#6777)

## 🧰 Maintenance

<details>
<summary>11 changes</summary>

- chore(l10n): New Crowdin updates @hay-kot (#6744)
- chore(l10n): New Crowdin updates @hay-kot (#6748)
- chore(l10n): Crowdin locale sync @github-actions (#6754)
- chore(auto): Update pre-commit hooks @github-actions (#6760)
- chore(l10n): New Crowdin updates @hay-kot (#6765)
- chore(l10n): New Crowdin updates @hay-kot (#6768)
- chore(l10n): New Crowdin updates @hay-kot (#6776)
- chore(l10n): New Crowdin updates @hay-kot (#6778)
- chore(l10n): Crowdin locale sync @github-actions (#6786)
- chore(l10n): New Crowdin updates @hay-kot (#6788)
- chore(l10n): New Crowdin updates @hay-kot (#6789)
</details>

## 📚 Documentation

- docs: add GitHub Actions workflow for docs deployment @hay-kot (#6752)
- docs: isolate docs dependencies to avoid python-ldap build @hay-kot (#6753)
- docs: add --no-project flags to skip mealie installation @hay-kot (#6755)

## ⬆️ Dependency updates

<details>
<summary>9 changes</summary>

- fix(deps): update dependency fastapi to v0.126.0 @renovate (#6750)
- fix(deps): update dependency uvicorn to v0.40.0 @renovate (#6757)
- fix(deps): update dependency python-multipart to v0.0.21 @renovate (#6737)
- chore(deps): update dependency mkdocs-material to v9.7.1 @renovate (#6741)
- fix(deps): update dependency openai to v2.14.0 @renovate (#6745)
- fix(deps): update dependency fastapi to v0.127.0 @renovate (#6756)
- fix(deps): Bump various frontend deps @michael-genson (#6774)
- fix(deps): update dependency fastapi to v0.127.1 @renovate (#6779)
- fix(deps): update dependency fastapi to v0.128.0 @renovate (#6783)
- chore(deps): update dependency coverage to v7.13.1 @renovate (#6787)
</details>

## 🙏 New Contributors

* @gitolicious made their first contribution in https://github.com/mealie-recipes/mealie/pull/6512
* @onemustpersist made their first contribution in https://github.com/mealie-recipes/mealie/pull/6496

# 🍴🍴🍴🍴🍴🍴