> 💡 PHP 8.3 is from now on (additionally to PHP 8.2) supported.
>
> ⚠️ PHP 8.1 is no longer supported.

### Stock

- Fixed that the location dropdown on the consume page contained the same location multiple times if there are currently stock entries at multiple locations of the corresponding product
- Fixed that the status filter "_n_ products are overdue" on the stock overview page also counted/included stock entries due today or tomorrow
- Fixed that the stock report "Spendings" did not take products without an assigned product group into account (thanks @Torqu3Wr3nch for the initial work on this)
- Fixed that the success message after opening a stock entry on the stock entries page displayed always an amount of `1` instead of the actual amount opened
- Fixed that the "Consume this stock entry as spoiled" context menu action on the stock entries page consumed always an amount of `1` instead of the whole stock entry

### Recipes

- Fixed that copying recipes with special characters in the name was not possible

### Meal plan

- Fixed that the meal plan page was broken after deleting all meal plan items of a week

### Calendar

- The different event types (due products, chores, tasks and so on) can now have different colors
  - => New button "Configure colors" on the calendar page to configure these colors (top right corner)

### Tasks

- Added a new table filter for categories (thanks @geoffwright240 for the initial work on this)

### Userfields

- Fixed that when having a userfield of type "Select list (multiple items can be selected)" and selecting no item, editing of the corresponding form was broken

### General

- Night mode is now also used on the login page if that's the system preferred color scheme (generally if night mode is on or not is based on user settings and before logging in no user context is available)
- Optimized sidebar icon spacing (thanks @chris-thorn)
- Fixed that file uploads (product pictures and so on) didn't work for files where the file name contains multiple spaces
- Fixed that some dialogs were not properly (too small) displayed (mostly affecting Firefox >= 121)

### API

- Optimized that the endpoints `GET /objects/{entity}` and `GET /objects/{entity}/{objectId}` now also return Userfields for the entity `stock`
