* feat(playlist): support updating playlist track order
* force track mode when editing
* use common confirmation for save
* remove en editPLaylist key
* Add API support for artist radio and track radio features
* Add translation strings and settings UI for artist radio count
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jeffvli <jeffvictorli@gmail.com>
* add getImageUrl to domain endpoints
* add new ItemImage component and hooks to generate image url
* add configuration for image resolution based on types
* show record label copyright at bottom of track listing
* add recordLabels support for Jellyfin
---------
Co-authored-by: jeffvli <jeffvictorli@gmail.com>
* initial client-side only sort for all playlists
* allow reordering jellyfin (assume it works properly) and navidrome
* on playlist page, add to queue by sort order
- Jellyfin will use `ContributingArtistsId` (compilation), `AlbumArtistIds` (compilation is false), or `ArtistIds` (unspecified; all)
- Jellyfin can filter by compilation _only_ on the artist discography page
- Navidrome album filter fix for `defaultValue` display and prevent showing `tagQuery` 0 when querying
- Subsonic can filter by one or more artists in the album page. Sort is also applied on these items
- Bump genre/tag cache/stale time to 2/1 minutes
- Fix various cases where the album filter would display as active when it wasn't
- Jellyfin: Uses `/items/filters` to get list of boolean tags. Notably, does not use this same filter for genres. Separate filter for song/album
- Navidrome: Uses `/api/tags`, which appears to be album-level as multiple independent selects. Same filter for song/album
- Parses `tags` for Navidrome (mapping string: string[])
- Parses `Tags` (and fetches for it) for Jellyfin (map a string to empty, and display as a bool)
- Clean parsing of participants for Navidrome/Subsonic
- Only show `People` for Jellyfin, not clickable