## Description
Fixes a crash if there is a network error when starting the screensaver.
Instead, a black screen with an error message shows. The error message
fades in/out to different parts of the screen. This applies to both
in-app and OS screensavers.
### Related issues
Fixes#1247
### Testing
Emulator w/ simulated errors
## Screenshots
N/A
## AI or LLM usage
None
## Description
Ports two changes in the official jellyfin android TV app here:
- https://github.com/jellyfin/jellyfin-androidtv/pull/5240
- https://github.com/jellyfin/jellyfin-androidtv/pull/5186
The code changes are copied under GPL-2.0 from the above pull requests.
### Related issues
Closes#1260
### Testing
Emulator mostly
## Screenshots
N/A
## AI or LLM usage
None
---------
Co-authored-by: Niels van Velzen <git@ndat.nl>
Co-authored-by: clams4shoes <prestidgeandrew@gmail.com>
## Description
Adds a new playback "backend" to play media in another app such as VLC.
By default, Wholphin will use the system default app. Typically if you
haven't chosen one, a dialog will show to pick which app. You can also
set a specific external app to use in Wholphin independent of the system
default.
Currently, this only support single item playback, ie playing next up
episodes is not supported yet.
Also since there is no standardized way to send resume position,
external subtitle info, etc, Wholphin makes a best effort. VLC,
mpv-android, & MX-Player are specifically tested/supported.
### Related issues
Closes#85
### Testing
Emulator & nvidia shield w/ VLC, mpv-android, & MX-player
## Screenshots
<img width="543" height="407" alt="image"
src="https://github.com/user-attachments/assets/ab37d41e-2909-40ed-b537-191ebb54d979"
/>
## AI or LLM usage
None
## Description
Issue 943 where trickplay images were misaligned with seek preview
mages. I made a post in issues but figured i'd go ahead and make the
pull request.
per gemini:
In SeekPreviewImage.kt, the code calculates which tile in the grid to
display based on the current timestamp:
val x = (tileIndex % trickPlayInfo.tileWidth) // x position within tile
grid
val y = (tileIndex / trickPlayInfo.tileHeight) // y position <-- BUG IS
HERE
To find the correct row (y) in a grid, you are supposed to divide the
current index by the width of the row (the number of columns), not the
height.
Why this breaks: Let's assume a standard trickplay grid that is 10
images wide (tileWidth = 10) and 5 images tall (tileHeight = 5).
If you are looking at the 12th image (tileIndex = 11), it should be on
Row 1 (the second row).
The code calculates y = 11 / 5 = 2. It skips to Row 2!
Because it divides by the smaller height value, the y coordinate
increases much faster than it should. This causes the preview to
visually "jump" down to future rows prematurely, and then snap back as
the x coordinate resets, causing the exact "flashing back and forth" you
saw with the credits and intros.
### Related issue
Fixes#943
### Testing
Tested in Android TV (Android 9) and it does indeed display proper seek
previews using trickplay images.
## AI or LLM usage
Gemini Pro was used to find and fix this bug.
## Description
Adds an option to never show next up. This means when an episode
completes, the app always returns to the previous page instead of
suggesting the next episode.
### Related issues
Closes#1100
### Testing
Emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
Adds a line to the overview/media info dialog with the date when the
item was last played.
### Related issues
N/A
### Testing
Emulator
## Screenshots
<img width="1280" height="720" alt="last_played Large"
src="https://github.com/user-attachments/assets/1c38141d-1000-43d0-bf28-a0845edfacc2"
/>
## AI or LLM usage
None
## Description
Add better ASS/SSA support to ExoPlayer by using
[`libass-android`](https://github.com/peerless2012/libass-android).
This is enabled with the "Use libass for ASS subtitles" advanced
settings for ExoPlayer. It is enabled by default.
### Related issues
Related to #22
Replaces reverted #569Fixes#1107
## Description
Adds a small glow to the border of the segment skip buttons, ie "Skip
Intro", etc. Since this button appears as focused immediately, there's
no contrast and it can be missed sometimes. So this glowing border draws
the eye a bit better.
Also a small change to reduce the minimum skip forward amount to 5
seconds .
### Related issues
Skip forward: #1203
### Testing
Emulator. But this needs some "real world" testing on a TV, too, so this
may need tweaking
## Screenshots
https://github.com/user-attachments/assets/5488d468-aee4-4448-a823-6326ccb003da
## AI or LLM usage
None
## Description
Adds a variant of Wholphin targeted for the Amazon Fire TV App store.
### Related issues
See #1192 for more details
### Testing
Emulator
## Screenshots
N/A
## AI or LLM usage
None
## Description
- Add indicator to mark the chosen version on the choose version dialog
- Add an option for album's context menu to add it to the now playing
queue
- Fix how season cards refresh on the series detail page so the images
don't glitch
### Related issues
Related to #1220
### Testing
Emulator mostly
## Screenshots
The indicator shows which version will play, whether explicitly chosen
by the user or implicitly picked by Wholphin.

## AI or LLM usage
None
## Description
Adds context menu options for "Remove from continue watching" and
"Remove series from next up"
### Remove from continue watching
This marks the item as unplayed so it will not be shown on the Continue
Watching row anymore. It may still show on a Next Up or combined row
though.
### Remove series from next up
This first does the same as "Remove from continue watching" above. But
it also stores the series' ID in your display preferences as removed.
Wholphin will filter out this series from appearing in the Next Up row
until you watch _any_ episode in the series in the future.
This only works for Wholphin clients!
There's a dialog to view which series have been removed and to re-add
them manually. Settings->Customize Home->Settings->View removed next up
### Related issues
Closes#906
### Testing
Mostly emulator testing
## Screenshots
## AI or LLM usage
None
## Description
Adds a tab for Studios (TV networks) to TV libraries. This displays a
grid of all of the studios. Clicking one displays the series produced by
the studio.
Additionally, adds a filter to the library tab to filter by studio. You
can select multiple studios, but its not the best UX since there will
likely be many studios (I have almost 200).
Finally, you can add a home row for studios in a library.
### Related issues
Closes#1002
### Testing
Mostly manual testing via emulator
## Screenshots
### Studios tab for a library

### Filter drop down for studios

### Updates series details
Shows the studio above the genres

## AI or LLM usage
None