Wolfskin: personal Android TV fork of Wholphin (damontecres/Wholphin), the Jellyfin client for the living-room TV. GPL-2.0. https://github.com/damontecres/Wholphin
Find a file
Clint Bird d2713ff2f5
Can Select Artist or Album Artist to be displayed on Music > Artists Page (#2127)
## Description
The Music / Artists view currently appears to use the artist metadata
from individual tracks. While at a track level this makes perfect sense,
it can result in a very noisy and fragmented artists view.

For example, an album by Eminem might contain tracks with artists such
as:
- Eminem
- Eminem feat. 50 Cent
- Eminem ft. Rihanna
- Eminem & Dr. Dre

Each of these seem to appear as a separate artist entry (even though
they are all tracks from the same album by Eminem)

This becomes particularly noticeable in large music libraries, where
featured artists, collaborations, remixes, and slightly different artist
metadata ends up resulting in a large number of sparsely populated or
duplicate / strange looking artist entries.

This PR adds an option / toggle to determine which metadata field is
used to populate the artists view. This option sits neatly within the
current artist view settings e.g. Music > Artists > View options >
Artist source
- Artist (current behavior)
- Album Artist (use the album artist metadata instead)

That Artist setting stays as the default choice (so nobody sees a change
unless they pick it) but now gives the option to filter down only to
Album Artists if desired - this choice is saved per library and applies
immediately.

### Related issues
Closes #1868

### Testing
I've tested it extensively on an Amazon Fire TV Cube Gen 2 (using the
firetv debug variant) the following manual tests were performed:
- The list changes when you pick Album artist and importantly the
selection survives a full app restart
- It was tested on a large library and can confirm only the Album
Artists remained (e.g. only one Eminem entry remained)

Automated checks were run (testFiretvDebugUnitTest & pre-commit) As well
as two new tests being added to the CollectionFolderViewModelTest.kt:
- For letter counting its checking via the album artist endpoint (and
not the standard one) when the source is set as ALBUM_ARTIST
- When the source is changed via the saveViewOptions its triggering a
load from the album artist endpoint

## Screenshots
Please see the screenshots below showing the UI impact / modification:
<img width="4624" height="3472" alt="1"
src="https://github.com/user-attachments/assets/6b53575e-ad15-4f66-b9c0-074657128a1d"
/>
<img width="4624" height="3472" alt="2"
src="https://github.com/user-attachments/assets/528c5766-44d8-43d3-8519-778f5aab7441"
/>
<img width="4624" height="3472" alt="3"
src="https://github.com/user-attachments/assets/5de2fb6d-173d-4ac3-ad1b-e08f27f4dafd"
/>

## AI or LLM usage
The code was written / supported with Claude - the approach (e.g. design
/ storing the choice in ViewOptions) endpoint research etc was done by
myself - I reviewed the approaches / refactoring and than deployed a
debug.apk to my local device to confirm everything was working as
expected.

I've reviewed each line and can explain it / the thinking to approaches
/ logic etc and am comfortable submitting the PR.

---------

Co-authored-by: Damontecres <damontecres@gmail.com>
2026-10-31 14:21:41 -04:00
.github Update Github Actions (#2083) 2026-10-22 18:46:53 -04:00
app Can Select Artist or Album Artist to be displayed on Music > Artists Page (#2127) 2026-10-31 14:21:41 -04:00
gradle Convert Dolby Vision profile 7 to 8.1 on devices without a profile 7 decoder (#2017) 2026-10-28 15:16:42 -04:00
wholphin-mpv-stub Update API level to Android 17 (#1908) 2026-08-29 21:35:58 -04:00
.editorconfig Basics for user prefs, logging in, etc 2025-09-21 19:56:40 -04:00
.gitignore Bump dependency versions, notably media3 (#496) 2025-12-17 17:00:15 -05:00
.pre-commit-config.yaml Prefetch trickplay images (#445) 2025-12-12 22:04:52 -05:00
build.gradle.kts Update wholphin-extensions with newer MpvPlayer (#1365) 2026-06-26 12:50:45 -04:00
CONTRIBUTING.md Adopt jellyfin's AI/LLM policy 2026-02-02 10:34:30 -05:00
DEVELOPMENT.md Add experimental settings & video tunneling (#1624) 2026-06-27 14:29:37 -04:00
gradle.properties Enable minify optimizations for release builds (#1437) 2026-05-23 14:08:38 -04:00
gradlew Bump & clean up some dependencies (#1660) 2026-07-03 11:36:54 -04:00
gradlew.bat Update Gradle to v9.8.2 (#2103) 2026-10-22 18:53:26 -04:00
Intents.md Update intent parsing to allow for user switching to home page (#1962) 2026-09-15 13:07:08 -04:00
LICENSE Initial commit 2025-09-20 16:31:30 -04:00
lint.xml Fix translations again (#1776) 2026-08-02 10:31:56 -04:00
README.md Updates & fixes to discover pages (#1836) 2026-08-16 10:29:03 -04:00
renovate.json Update renovate settings (#1588) 2026-06-18 12:00:39 -04:00
settings.gradle.kts Update wholphin-extensions with newer MpvPlayer (#1365) 2026-06-26 12:50:45 -04:00

Wholphin - an OSS Android TV client for Jellyfin

"Never half-phin two jellies. Always wholphin one jelly."

Wholphin is an open-source Android TV client for Jellyfin. It aims to provide a different app UI that's inspired by Plex for users interested in migrating to Jellyfin.

This is not a fork of the official client. Wholphin's user interface and controls have been written completely from scratch. Wholphin supports playing media using either ExoPlayer or MPV.

Current Release Translation status
Get Wholphin on Google Play Get Wholphin on Amazon AppStore

v0_5_1_home

Features

User interface

  • Customize the home page to see the content you are interested in
    • Use poster or thumb images, show/hide titles, add/remove/re-order different types of rows!
    • Option to combine the Continue Watching & Next Up into a single row
    • Pin collections, playlists, favorites, genres, and studios
    • Remove series from next up
  • A navigation drawer for quick access to libraries, favorites, search, and settings from almost anywhere in the app
  • Integration with Seerr to discover new movies and TV shows
  • Customize library display
    • Option to show Movie/TV Show titles
    • Choose image types & size
    • Choose from grid or list layouts
  • Play theme music, if available
  • Customize subtitle style for plain text subtitles with separate HDR settings
  • Search & download subtitles (requires compatible server plugin such as OpenSubtitles)
  • Multiple app color themes
  • Protect user profile switches with PIN code or require server login
  • Change the user interface language per user
  • In-app & Android OS screensaver support

Playback

  • Different media playback engines:
    • ExoPlayer w/ optional extra audio, SSA/ASS, & AV1 software decoding
    • MPV for direct playing anything with great SSA/ASS subtitle support
  • Plex inspired playback controls:
    • Using D-Pad left/right for seeking during playback
    • Quickly access video chapters & queue during playback
    • Optionally skip back a few seconds when resuming playback
  • Live TV & DVR support
  • Music & music video support
  • Cinema mode/pre-roll intro support (requires compatible server plugin such as Intros)
  • Auto play next episodes with pass out protection
  • Option for automatic refresh rate & resolution switching on supported displays
  • Trickplay (video preview) support
  • Subtly show playback position along the bottom of the screen while seeking w/ D-Pad

Roadmap

See here for the roadmap

Installation

Using Google Play or Amazon appstore are the fastest way to install. But you can follow these instructions to install without needing an app store

Downloader Code: 8668671

  1. Enable side-loading "unknown" apps
  2. Install the APK on your Android TV device with one of these options:
    • Install a browser program such as Downloader, use it to get the latest apk with short code 8668671 or URL: http://aftv.news/8668671
    • Download the latest APK release from the releases page or http://aftv.news/8668671
      • Put the APK on an SD Card/USB stick/network share and use a file manager app from the Google Play Store / Amazon AppStore (e.g. FX File Explorer). Android's preinstalled file manager probably will not work!
      • Use Send files to TV from the Google Play Store on your phone & TV
      • (Expert) Use ADB to install the APK from your computer (guide)

Upgrading the app

After the initial install above, the app will automatically check for updates. The updates can be installed in settings.

The first time you attempt an update, the OS should guide you through enabling the required additional permissions for the app to install updates.

Note: if installed via an app store, the app store will handle updates.

Compatibility

Requires Android 6+ (or Fire TV OS 6+) and Jellyfin server 10.10.x or 10.11.x (tested on primarily 10.11).

The app is tested on a variety of Android TV/Fire TV OS devices, but if you encounter issues, please file an issue!

Seerr integration is generally tested with the latest stable version. Older versions may not work as expected. The Seerr server should configured with integration to your Jellyfin server for full compatibility.

Contributions

Issues and pull requests are always welcome! Please check before submitting that your issue or pull request is not a duplicate.

If you plan to contribute, please read the contributing guide!

You can help translate Wholphin!

Acknowledgements

  • Thanks to the Jellyfin team for creating and maintaining such a great open-source media server
  • Thanks to the official Jellyfin Android TV client developers, some code for creating the device direct play profile is adapted from there
  • Thanks to the Jellyfin Kotlin SDK developers for making it easier to interact with the Jellyfin server API
  • Thanks to numerous other libraries that make app development even possible

Additional screenshots

Customized home page

customize_home_example

Movie library browsing

v0_5_1_library

Movie page

v0_5_1_movie

Series page

v0_5_1_series

Genres in library

v0_5_1_genres

Playlist

v0_5_1_playlist