## Description
Another collection of small individual fixes that don't warrant a full
PR:
- Better error handling for series and collection detail pages
- Better error handling on Discover search tab
- Fix issues when changing view options on card grid without reloading
the page
- Better error handling when changing the refresh rate or resolution
- Fix some nav drawer items disappearing briefly when restarting the app
- Fix that the discover search row would not clear when the query is
cleared
And some UI tweaks:
- Use consistent padding for the different customize home page sections
- Convert the "Continue watching click behavior" setting from a toggle
to choice dialog (the options & behaviors have not changed)
### Related issues
I think the error handling when changing the refresh rate might help
with #1737
### Testing
Emulator mostly
## Screenshots
N/A, UI changes are minor
## AI or LLM usage
None
## Description
Updates `libass-android` to `v0.5.0`. There aren't any changes from
`v0.5.0-beta01`, so this is just a formal release.
### Related issues
Fixes#1554Fixes#1561Fixes#1678
Pr for the beta release: #1752
### Testing
N/A, I tested the beta
## Screenshots
N/A
## AI or LLM usage
None
## Description
Selecting a song from search now resolves to its album's detail page,
scrolled to and focusing that song, instead of sending you to an
"unsupported item type" page. Implemented in the shared
BaseItem.destination() rather than in search specifically, so any caller
that navigates to a song gets the same behavior.
A song with no albumId plays directly while remaining in the search
results page: NavigationManager.navigateTo() intercepts a bare AUDIO
destination and hands it to a new MusicService.playSong(). Handling this
in the single navigation funnel means every caller gets it for free with
no loading-screen flash.
Adds BaseItemDestinationTest covering the new destination() logic.
### Related issues
https://github.com/damontecres/Wholphin/issues/1656
### Testing
Device: Sony Bravia 4K VH21
#### Tests on a search results page, song with albumId:
1. Select a song sends you to album page with cursor on song. Another
press plays it
2. Back button brings you back to search results.
Tested with both songs at the start of an album and songs deep into a
100+ songs album.
#### Tests on a search results page, song with no albumId:
1. Select a songs plays the song while staying in the search results
page. No loading screen.
## AI or LLM usage
I used Cursor and Claude Code for planning, implementation and code
review.
---------
Co-authored-by: Damontecres <damontecres@gmail.com>
## Description
Fixes an incorrect query for an artist's albums (thanks @StefanBS for
reporting & fixing in #1761!)
Additionally, another album row for "Appears on" is added. This is
definitely necessary because Wholphin only has a tab for all artists
which includes artists featured on albums attributed to a different
artist. So those albums will now show in the "Appears on" similar to the
web UI instead of an empty artist page.
Finally, the long-click context menu is added for music videos on an
artist's page.
### Related issues
Fixes#1760
Replaced #1761
### Testing
Emulator, particularly with artists who are not album artists
Also, verified the query fix against the web UI dev console
## Screenshots
N/A
## AI or LLM usage
None, but the fix included from #1761 did use some AI
---------
Co-authored-by: Stefan Bullones <stefan.bullones@gmail.com>
## Description
The TV library page offers the option to sort by date played, however
when selected it reverts to the default (alphabetical). This appears to
be due to the use of `ItemSortBy.DATE_PLAYED` rather than the correct
`ItemSortBy.SERIES_DATE_PLAYED`. See
[BrowseGridFragment](https://github.com/jellyfin/jellyfin-androidtv/blob/master/app/src/main/java/org/jellyfin/androidtv/ui/browsing/BrowseGridFragment.java#L169)
for the usage in the official Android TV client.
### Related issues
N/A
### Testing
Emulator against personal Jellyfin server.
## Screenshots
N/A
## AI or LLM usage
None
## Description
The bug report was caused by a race condition where the image URL was
built before the grid was fully laid out causing a `fillWidth=0` and the
`remember` would not reset after the `fillWidth` was updated to the
actual value. So this PR fixes the `remember`.
Furthermore, some extra guards are added to only pass the `fillWidth` &
`fillHeight` params if greater than 0.
Finally, the `EpisodeCard` code is deleted because it's height & width
logic was overly complicated and `BannerCardWithTitle` provides better
functionality anyway.
### Related issues
Should fix#1751
Maybe #1156 is also fixed by this
### Testing
Emulator, but I haven't been able to reproduce the race condition, but
the fix makes sense given the bug report
## Screenshots
N/A
## AI or LLM usage
None