### ✨ New Features
* Added SFW content mode option to settings and setup wizard. ([#6262](https://github.com/stashapp/stash/pull/6262))
* Added stash-ids to Tags. ([#6255](https://github.com/stashapp/stash/pull/6255))
* Added support for manually adding stash-ids to scenes, performers, studio and tags. ([#6374](https://github.com/stashapp/stash/pull/6374))
* Added option to link a scraped tag to an existing tag in the tagger and scrape dialog. ([#6389](https://github.com/stashapp/stash/pull/6389))
* Partial dates (year only or month/year) are now supported for all date fields. ([#6359](https://github.com/stashapp/stash/pull/6359))
* Added support for specifying a trash location where deleted files will be moved instead of being permanently deleted. ([#6237](https://github.com/stashapp/stash/pull/6237))
* Logs can now be compressed after reaching a configurable size. ([#5696](https://github.com/stashapp/stash/pull/5696))
* Added ability to edit multiple studios at once. ([#6238](https://github.com/stashapp/stash/pull/6238))
* Added ability to edit multiple scene markers at once. ([#6239](https://github.com/stashapp/stash/pull/6239))
* Added support for multiple Studio URLs. ([#6223](https://github.com/stashapp/stash/pull/6223))
* Added option to add markers to front page. ([#6065](https://github.com/stashapp/stash/pull/6065))
* Added option for instant transitions in the image lightbox. ([#6354](https://github.com/stashapp/stash/pull/6354))
* Added duration filter to scene list sidebar. ([#6264](https://github.com/stashapp/stash/pull/6264))
* Added support for avif images. ([#6288](https://github.com/stashapp/stash/pull/6288), [#6337](https://github.com/stashapp/stash/pull/6337))
* Added experimental support for JPEG XL images. ([#6184](https://github.com/stashapp/stash/pull/6184))

### 🎨 Improvements
* Reverted scene toolbar to previous layout, consistent with other query pages. ([#6322](https://github.com/stashapp/stash/pull/6322))
* Restored display mode button group to list pages. ([#6317](https://github.com/stashapp/stash/pull/6317))
* Added sticky selection toolbar to all list views. ([#6320](https://github.com/stashapp/stash/pull/6320))
* Added performer age slider to scene filter sidebar. ([#6267](https://github.com/stashapp/stash/pull/6267))
* Added markers option to scene filter sidebar. ([#6270](https://github.com/stashapp/stash/pull/6270))
* Selected stash-box is now remembered in the scene tagger view. ([#6192](https://github.com/stashapp/stash/pull/6192))
* Replaced `Show male performers` tagger option with a list of genders to include. ([#6321](https://github.com/stashapp/stash/pull/6321))
* Galleries can now be created using the gallery select control. ([#6376](https://github.com/stashapp/stash/pull/6376))
* String list inputs can now be re-ordered. ([#6397](https://github.com/stashapp/stash/pull/6397))
* Added auto-start button to scene player. ([#6368](https://github.com/stashapp/stash/pull/6368))
* Bulk add tasks now accept stash ids in addition to names. ([#6310](https://github.com/stashapp/stash/pull/6310))
* Image query metadata (total file size and megapixels) is now performed as a separate query to the main query to improve performance. ([#6370](https://github.com/stashapp/stash/pull/6370))
* Removed some unused fields in the tag list query to improve performance. ([#6398](https://github.com/stashapp/stash/pull/6398))
* Added hardware encoding support for Rockchip RKMPP devices. ([#6182](https://github.com/stashapp/stash/pull/6182))
* stash now uses the Media Session API when playing scenes. ([#6298](https://github.com/stashapp/stash/pull/6298))
* Screen sleeping is now prevented when playing scenes (only in secure contexts: `localhost` or https). ([#6331](https://github.com/stashapp/stash/pull/6331))
* Whitespace is now trimmed from the start and end of text fields. ([#6226](https://github.com/stashapp/stash/pull/6226))
* Added `inputURL` and `inputHostname` fields to scraper specs. ([#6250](https://github.com/stashapp/stash/pull/6250))
* Added extra studio fields to scraper specs. ([#6249](https://github.com/stashapp/stash/pull/6249))
* Added o-count to studio cards and details page. ([#5982](https://github.com/stashapp/stash/pull/5982))
* Added o-count to group cards. ([#6122](https://github.com/stashapp/stash/pull/6122))
* Added options to filter and sort groups by o-count. ([#6122](https://github.com/stashapp/stash/pull/6122))
* Added o-count to performer details page. ([#6171](https://github.com/stashapp/stash/pull/6171))
* Added option to sort by total scene direction for performers, studios and tags. ([#6172](https://github.com/stashapp/stash/pull/6172))
* Added option to sort scenes by Performer age. ([#6009](https://github.com/stashapp/stash/pull/6009))
* Added option to sort scenes by Studio. ([#6155](https://github.com/stashapp/stash/pull/6155))
* Added option to show external links on Performer cards. ([#6153](https://github.com/stashapp/stash/pull/6153))
* Improved dimension detection for webp files. ([#6342](https://github.com/stashapp/stash/pull/6342))
* Added keyboard shortcuts to generate scene screenshot at current time (`c c`) and to regenerate default screenshot (`c d`). ([#5984](https://github.com/stashapp/stash/pull/5984))
* Added keyboard shortcut for tagger view (`v t`). ([#6261](https://github.com/stashapp/stash/pull/6261))
* Custom field values are now displayed truncated to 5 lines. ([#6361](https://github.com/stashapp/stash/pull/6361))

### 🐛 Bug fixes
* **[0.30.1]** fixed hardware encode tests preventing desktop features from working correctly. ([#6417](https://github.com/stashapp/stash/pull/6417))
* **[0.30.1]** fixed Handy integration not functioning correctly. ([#6425](https://github.com/stashapp/stash/pull/6425))
* **[0.30.1]** fixed gallery create graphql interface not setting organised flag. ([#6418](https://github.com/stashapp/stash/pull/6418))
* stash-ids are now set when creating new objects from the scrape dialog. ([#6269](https://github.com/stashapp/stash/pull/6269))
* partial dates are now correctly handled when scraping scenes. ([#6305](https://github.com/stashapp/stash/pull/6305))
* Fixed zoom keyboard shortcuts not working. ([#6317](https://github.com/stashapp/stash/pull/6317))
* Fixed inline videos showing as full-screen on iPhone devices. ([#6259](https://github.com/stashapp/stash/pull/6259))
* Fixed external player not loading on Android when a scene title has special characters. ([#6297](https://github.com/stashapp/stash/pull/6297))
* Play activity will now be recorded correctly when reaching the end of a video. ([#6334](https://github.com/stashapp/stash/pull/6334))
* Fixed markers appearing in the wrong location when player is in fullscreen mode. ([#6323](https://github.com/stashapp/stash/pull/6323))
* Fixed selected studio/performer being reset when saving a scene in the tagger view. ([#6391](https://github.com/stashapp/stash/pull/6391), [#6409](https://github.com/stashapp/stash/pull/6409))
* Fixed performer becoming unmatched when creating a new performer with the same name is created. ([#6308](https://github.com/stashapp/stash/pull/6308))
* Fixed tagger options and buttons not being visible when there are no scenes in the result list. ([#6316](https://github.com/stashapp/stash/pull/6316))
* Fixed error when scraping a studio if the alias field was empty. ([#6313](https://github.com/stashapp/stash/pull/6313))
* Fixed existing match stash ID sometimes not being displayed in the performer scrape dialog. ([#6257](https://github.com/stashapp/stash/pull/6257))
* Fixed download backup function not working when generated directory is on a different filesystem. ([#6244](https://github.com/stashapp/stash/pull/6244))
* Fixed issue where duplicate file entries would be created if a file was modified and renamed with a different case on case-insensitive filesystems. ([#6327](https://github.com/stashapp/stash/pull/6327))
* Hardware encoding tests are now performed concurrently at startup to reduce startup time. ([#6414](https://github.com/stashapp/stash/pull/6414))
* Fixed scraper and plugin locations being converted to absolute paths during setup. ([#6373](https://github.com/stashapp/stash/pull/6373))
* Fixed Macos version check pointing to incorrect location. ([#6289](https://github.com/stashapp/stash/pull/6289))
* stash will no longer try to generate marker previews where a marker start is set after the end of a scene's duration. ([#6290](https://github.com/stashapp/stash/pull/6290))
* Fixed panic when scraping a performer with no measurement value. ([#6367](https://github.com/stashapp/stash/pull/6367))

### Api Changes

* added `remove` field to `CustomFieldsInput` to allow removing specific custom fields when updating objects. ([#6362](https://github.com/stashapp/stash/pull/6362))