## Description
Don't recursively query collections for the home page rows. This
prevents episodes within tv shows from being shown.
### Related issues
Fixes https://github.com/damontecres/Wholphin/issues/1148Fixes#1147
### Testing
Emulator & API
## Screenshots
N/A
## AI or LLM usage
None
## Description
A brain dump documenting many classes and functions throughout the app.
Definitely does not document everything, but covers most of the major
components. This should be useful for new contributors.
There is a small amount of code clean up too.
There are no user facing changes.
### Related issues
N/A
### Testing
N/A
## Screenshots
N/A
## AI or LLM usage
None
## Description
Ensure the new pause indicator from #1144 is the right color for all
devices.
### Related issues
Related to #1144
### Testing
Emulator & shield
## Screenshots
N/A
## AI or LLM usage
None
## Description
Instead of displaying the full playback overlay when pausing via a
button press, just show a short pause image in the center of the screen.
Any button press that will pause triggers this including a remote Pause,
Pause/Play, or one-click pause Enter.
I decided to make this the standard behavior instead of a toggle because
I think if the user intends to do something with the overlay (change
subtitles, audio, etc), it's still straightforward to open the overlay,
click the pause button (which is focused first), and then move to the
desired option versus assuming click-to-pause will open the overlay so
the user can move to the desired option.
### Related issues
Closes#990
### Testing
Emulator
## Screenshots
[pause_osd.webm](https://github.com/user-attachments/assets/8f908164-2a50-43f9-9e13-a463d2914e42)
## AI or LLM usage
None
## Description
Use localized date & time formatting such as using 24 hour clock or
Day-Month-Year date formatting. The localization is based on the
device's locale/language setting. Some pages require reloading if you
switch the locale while Wholphin is running.
Format bitrates using SI 1000 magnitudes instead of 1024. File size
still uses 1024 but formats with "MiB"/"GiB" suffixes now. This aligns
with the server web UI and is more in line with standard practices for
display as well.
Fixes the playback overlay layout being messed up by extremely long
episode names.
Finally, adds jumping by letter using keyboard letter keys on grids if
letter jumping is enabled. I doubt many users have a full keyboard
attached to their TV, but this saves me time using the emulator when I
need to repeatedly open the same item for testing.
### Related issues
Fixes#1132
### Testing
Emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
Updates the playback overlay so that individual component animate in
more deliberately.
For example, the logo & clock slide in from the top instead of the
middle of the screen. And the trick play preview now expands and shrinks
vertically.
### Related issues
I thought there was an issue about this, but I can't find it
### Testing
Emulator, nvidia shield
## Screenshots
N/A
## AI or LLM usage
None
## Description
Adds better error handling when loading home page rows. For example,
this fixes loading errors if a playlist row is configured, but the
playlist is deleted.
Also fixes an issue from #1116 where changing users doesn't go the home
page.
### Related issues
Related to #1124
### Testing
Emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
Simply fetches the tv show's seasons when returning the details page.
This ensures the unwatched counts are updated.
### Related issues
Mentioned as a bug in
https://github.com/damontecres/Wholphin/issues/767#issuecomment-4071852502
### Testing
Emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
This fixes some issues restoring the app state after it is killed by the
system, such as to free up memory while the screensaver is showing.
### Dev notes
Reproduce:
1. Start playing media from beginning
2. Pause at 10 minute mark
3. Wait for screensaver to start
4. Press a button
5. Media starts from beginning
Note: It may take a few iterations of 2-4 before the OS destroys the
app.
If the app is killed during playback, ideally Wholphin restores state to
_previous_ page, not playback since restoring playback is complex.
Before this PR, the back stack was maintained by Compose's
`rememberSerializable` and would be restored _after_ the
`PlaybackLifecycleObserver` cleans up the playback destination.
This meant that the app would be restored, from scratch, to the playback
page. The `PlaybackViewModel` would be initialized from scratch as it
was originally called, ie play from beginning.
The fix is to save and restore the back stack outside of Compose.
### Related issues
Fixes#767
### Testing
Emulator & nvidia shield
## Screenshots
N/A
## AI or LLM usage
None
## Description
A few improvements to the ffmpeg decoder & mpv build scripts. Mainly
changes the dependency fetching so the scripts are more idempotent,
though some rebuilds still always occur.
### Related issues
Related to
https://github.com/damontecres/Wholphin/pull/1106#issuecomment-4077678690
### Testing
Local builds
## Screenshots
N/A
## AI or LLM usage
None
## Description
Several small tweaks:
- Always put screensaver logo on left instead of random
- Disable playback speed option if audio is being passed through
- When opening playback settings such as speed or scale, focus on the
current value instead of top of the list; doesn't apply to subtitles so
it's easy to toggle them off
- If the user has a preferred subtitle language, show tracks in that
language first/top
- Add toast message after creating or adding to a playlist
### Related issues
Playback speed audio pass through: #164
### Testing
Emulator & shield
## Screenshots
N/A
## AI or LLM usage
None