## Description
Fixes a crash when backgrounding/restoring the app on certain grid pages
### Related issues
Fixes https://github.com/damontecres/Wholphin/issues/1598
Replaces #1599
### Testing
Emulator
It's easy to reproduce by going to a library's recommended tab,
scrolling to any row's view more, then pressing home to background the
app
## Screenshots
N/A
## AI or LLM usage
None, but includes a commit from #1599 which did, see the note there
---------
Co-authored-by: Christian Tismer <tismer@stackless.com>
## Description
This PR contains only tests, there are no user facing changes.
Adds tests for playback covering:
- Playing next, previous, or within the queue
- Media segments (intro/credit)
- Playing intros before media
Adds basic unit tests for track selection. This uses a new "test track"
builder which can model various files and build them as represented
(differently) by the server, ExoPlayer, and MPV. In future, this will
allow for testing of more complex files.
Also add unit tests for services covering things like:
- Fetching extras
- Deleting media
- Server/user management & auth
### Related issues
Will help with testing/verifying some issues like #1475, #1548
### Testing
Ran the unit tests!
## Screenshots
N/A
## AI or LLM usage
None
## Description
Switches all usages of `kotlinx.coroutines.Dispatchers` to
`WholphinDispatchers`.
`WholphinDispatchers` provides an easier and more reliable mechanism to
use a test dispatcher in unit tests. For regular app usage,
`WholphinDispatchers` just delegates to `Dispatchers`.
There are no user facing changes
### Related issues
None
### Testing
Basic emulator testing & unit tests
## Screenshots
N/A
## AI or LLM usage
None
## Description
Ensures that all string & plural resource keys are unique. This should
help make sure all of the strings are shown in weblate's translation.
### Related issues
Related to #1551
### Testing
Emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
Adds options to the context menu to play or shuffle items in a series,
season, collection, or playlist. So you can long click a TV show and
play it directly.
Playing a TV show will play the next up episode (same as the play button
on the series detail page).
Playing a season, collection, or playlist will start from the beginning.
Also, removes the green play arrows and uses the same neutral color as
other icons.
### Related issues
Closes#1451Closes#1507
### Testing
Emulator from library pages & series detail pages
## Screenshots
N/A
## AI or LLM usage
None
## Description
- Ensures all parent ratings are shown in the filter drop down
- Fixes focus loss after filtering library and there are no results
### Related issues
Fixes#1535 (along w/ #1529)
Fixes#1534
### Testing
Emulator w/ a UK movie library
## Screenshots
N/A
## AI or LLM usage
None
## Description
Fixes row bounce using `SeasonCard` when are two exactly two items. This
was done by calculating the y-offset in the `layout` modifier instead of
`offset`. This has the side effect of probably being very slightly more
efficient since only 1 animation state is needed now.
Fixes row bounce on the second row of the home page if the first row is
empty and not shown.
### Related issues
Fixes#1528Fixes#1271
### Testing
Emulator in different situations. Also checked the layout inspector to
make sure the optimizations from #1184 weren't affected
## Screenshots
N/A
## AI or LLM usage
None
## Description
Makes some improvements to the debug page. Also adds some audio device
listing for debugging.
### Related issues
N/A
### Testing
Emulator & shield
## Screenshots
N/A
## AI or LLM usage
None
## Description
Moves storing the remembered tabs from app preferences to the app
database. This means deleting the user will remove the remembered tabs
and the app preferences file is smaller and faster to load.
The remembered tabs are migrated automatically when the app is updated.
There are no significant user facing changes in this PR.
### Related issues
N/A
### Testing
Emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
Updates the parental rating filter so it only shows the relevant options
instead of all of them. This is now the same behavior as the web UI.
Additionally, the filter options are cached for a short time so the UI
doesn't need to load them every time the menu is opened.
Dev note: Refactors `FilterUtils` into a service which allows for the
caching
### Related issues
Closes#410
### Testing
Emulator with movie & tv show libraries
## Screenshots
N/A
## AI or LLM usage
None
## Description
Based on feedback from users, many felt it was difficult to 1) tell if
multiple version of an item existed and 2) choose the version they want
So this PR adds a new expandable button next to Play/Resume/Restart to
choose the version. It is a shortcut to the More->Choose Version dialog,
but also serves as a more prominent indicator that there are multiple
versions. The button is only shown if there are 2+ versions to choose
from.
Also adds displaying the bitrate in the choose version dialog just in
case there are identically named versions with the same resolution.
Dev note: I also added some docs for classes & functions related to
choosing a version
### Related issues
Related to #652
### Testing
Emulator
## Screenshots
<img width="1280" height="720" alt="choose_version_button_unfocused
Large"
src="https://github.com/user-attachments/assets/4f6051ef-b6ae-4fad-9d54-3840523350ed"
/>
<img width="1280" height="720" alt="choose_version_button Large"
src="https://github.com/user-attachments/assets/0e8412bc-2d18-4c6c-987a-2f067363ad2c"
/>
## AI or LLM usage
None
## Description
Fixes bugs:
- Follow up to #1487 since the 404 exception can be ignored in some
cases
- Fixes a only-on-main-thread exception when clearing the secure flag in
some cases
### Related issues
Related to #1469
### Testing
Emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
Minor tweak to prevent the keyboard from losing focus when typing search
queries when "combine search results" is enabled
### Related issues
Fixes#1523
### Testing
Emulator only
## Screenshots
N/A
## AI or LLM usage
None
---------
Co-authored-by: Damontecres <damontecres@gmail.com>
## Description
Collecting some minor fixes together:
- Adds error handling when submitting a discover/seerr request,
previously there was no visual feedback if the request failed
- Fix MpvPlayer reporting that it was buffering forever
- Fix discover results row on regular search page not being clickable
- Fix focus loss when returning to movie details after playback advanced
enough to switch the button from Play to Resume
- Fix some focus issues when returning to the TV guide page
### Related issues
Related to #1503 for MPV
Fixes#1500Fixes#1508Fixes#1501
### Testing
Emulator & nvidia shield
## Screenshots
N/A
## AI or LLM usage
None
## Description
Fixes an issue where the wrong nav drawer item would be highlighted in
the "More" section
Previously, displaying the discover nav item was partially handled in
the view model state and partially within the UI code which caused this
bug. This PR moves it all into the view model state.
### Related issues
N/A
### Testing
Emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
Fixes a crash that could occur during the beginning of playback
Also adds better handling for clicking next extremely fast
### Technical details
The playlist objects would be created on the IO thread and it had a
`mutableIntStateOf` to track the current index. This meant that there is
a race conditions for the IO thread to commit the snapshot for the main
thread to see them. If the main thread is faster, it will crash.
To fix that, this PR moves the mutable state in `Playlist` into the
`PlaybackState` flow in the view model. This enures both the background
threads and re-compositions have the right state.
### Related issues
Fixes#1509
### Testing
Emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
Fixes the inconsistent live tv programs shown on the home page by using
a different API endpoint & filtering.
Also some UI fixes:
- Use the "Watch live" string consistently for the row instead of it
sometimes switching to "Live TV"
- Adjust the "Ends at" in the home page header to show the actual end
time
- Show the channel name in "quick details"
- Show season & episode number, if applicable, in "quick details"
### Related issues
Fixes#1080
### Testing
Nvidia shield w/ fake EPG data
## Screenshots
N/A, just UI fixes, nothing new
## AI or LLM usage
None
## Description
Only show the view more card at the end of row if there are actually
more items (or at the limit).
Also reduces the size of the arrow a bit
### Related issues
Related to #1392
### Testing
Emulator with different max items setting
## Screenshots
N/A
## AI or LLM usage
None
## Description
On a library recommended tab, if you clicked View More, clicking a card
on the grid would directly play the item instead of the regular
behavior.
This PR fixes that and simplifies the code required to support simple
context menus.
### Related issues
Fixes#1480
### Testing
Emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
If a home page row returns 404 Not Found, treat it as empty and don't
show it.
It will still show as an error on home row settings, since this page
doesn't hide empty rows.
Also fixes a bug where you can't scroll up if there are 3+ empty rows
before the current row.
### Related issues
Closes#1469
### Testing
Emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
Adds more sorting options, notably premier date & ratings, to different
media types.
### Related issues
Closes#1417Closes#1429
Replaces #1420
### Testing
Emulator on movie genre's items and music video libraries
## Screenshots
N/A
## AI or LLM usage
None