An OSS Android TV client for Jellyfin
Find a file
renovate[bot] 28ed1a491b
Configure Renovate (#852)
Welcome to [Renovate](https://redirect.github.com/renovatebot/renovate)!
This is an onboarding PR to help you understand and configure settings
before regular Pull Requests begin.

🚦 To activate Renovate, merge this Pull Request. To disable Renovate,
simply close this Pull Request unmerged.



---
### Detected Package Files

 * `.github/actions/native-build/action.yml` (github-actions)
 * `.github/actions/setup/action.yml` (github-actions)
 * `.github/workflows/main.yml` (github-actions)
 * `.github/workflows/pr.yml` (github-actions)
 * `.github/workflows/release.yml` (github-actions)
 * `gradle.properties` (gradle)
 * `settings.gradle.kts` (gradle)
 * `build.gradle.kts` (gradle)
 * `app/build.gradle.kts` (gradle)
 * `gradle/libs.versions.toml` (gradle)
 * `gradle/wrapper/gradle-wrapper.properties` (gradle-wrapper)

### Configuration Summary

Based on the default config's presets, Renovate will:

  - Start dependency updates only once this onboarding PR is merged
  - Hopefully safe environment variables to allow users to configure.
  - Show all Merge Confidence badges for pull requests.
  - Enable Renovate Dependency Dashboard creation.
- Use semantic commit type `fix` for dependencies and `chore` for all
others if semantic commits are in use.
- Ignore `node_modules`, `bower_components`, `vendor` and various
test/tests (except for nuget) directories.
  - Group known monorepo packages together.
  - Use curated list of recommended non-monorepo package groupings.
- Show only the Age and Confidence Merge Confidence badges for pull
requests.
  - Apply crowd-sourced package replacement rules.
  - Apply crowd-sourced workarounds for known problems with packages.
- Ensure that every dependency pinned by digest and sourced from
GitHub.com contains a link to the commit-to-commit diff
  - Correctly link to the source code for golang.org/x packages
  - Link to pkg.go.dev/... for golang.org/x packages' title

🔡 Do you want to change how Renovate upgrades your dependencies? Add
your custom config to `renovate.json` in this branch. Renovate will
update the Pull Request description the next time it runs.

---

### What to Expect

With your current configuration, Renovate will create 11 Pull Requests:

<details>
<summary>Update Androidx Media3 to v1.9.2</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/androidx-media3`
  - Merge into: `main`
- Upgrade
[androidx.media3:media3-effect](https://redirect.github.com/androidx/media)
to `1.9.2`
- Upgrade
[androidx.media3:media3-ui-compose](https://redirect.github.com/androidx/media)
to `1.9.2`
- Upgrade
[androidx.media3:media3-ui](https://redirect.github.com/androidx/media)
to `1.9.2`
- Upgrade
[androidx.media3:media3-exoplayer-dash](https://redirect.github.com/androidx/media)
to `1.9.2`
- Upgrade
[androidx.media3:media3-exoplayer-hls](https://redirect.github.com/androidx/media)
to `1.9.2`
- Upgrade
[androidx.media3:media3-session](https://redirect.github.com/androidx/media)
to `1.9.2`
- Upgrade
[androidx.media3:media3-exoplayer](https://redirect.github.com/androidx/media)
to `1.9.2`
- Upgrade
[androidx.media3:media3-datasource-okhttp](https://redirect.github.com/androidx/media)
to `1.9.2`


</details>

<details>
<summary>Update dependency com.google.devtools.ksp to v2.3.5</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/ksp-monorepo`
  - Merge into: `main`
- Upgrade
[com.google.devtools.ksp](https://redirect.github.com/google/ksp) to
`2.3.5`


</details>

<details>
<summary>Update Dependencies</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/dependencies`
  - Merge into: `main`
- Upgrade
[com.google.dagger:hilt-android-compiler](https://redirect.github.com/google/dagger)
to `2.59.1`
- Upgrade
[com.google.dagger:hilt-android](https://redirect.github.com/google/dagger)
to `2.59.1`
- Upgrade
[com.google.protobuf:protobuf-kotlin-lite](https://redirect.github.com/protocolbuffers/protobuf)
to `4.33.5`
- Upgrade
[com.mikepenz:multiplatform-markdown-renderer-m3](https://redirect.github.com/mikepenz/multiplatform-markdown-renderer)
to `0.39.2`
- Upgrade
[com.mikepenz:multiplatform-markdown-renderer](https://redirect.github.com/mikepenz/multiplatform-markdown-renderer)
to `0.39.2`
- Upgrade
[io.mockk:mockk-android](https://redirect.github.com/mockk/mockk) to
`1.14.9`
- Upgrade
[io.mockk:mockk-agent](https://redirect.github.com/mockk/mockk) to
`1.14.9`


</details>

<details>
<summary>Update dependency com.google.dagger.hilt.android to
v2.59.1</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/hilt`
  - Merge into: `main`
- Upgrade
[com.google.dagger.hilt.android](https://redirect.github.com/google/dagger)
to `2.59.1`


</details>

<details>
<summary>Update dependency python to 3.14</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/github-actions`
  - Merge into: `main`
- Upgrade [python](https://redirect.github.com/actions/python-versions)
to `3.14`


</details>

<details>
<summary>Update Gradle to v8.14.4</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/gradle-8.x`
  - Merge into: `main`
- Upgrade [gradle](https://redirect.github.com/gradle/gradle) to
`8.14.4`


</details>

<details>
<summary>Update Jellyfin SDK to v1.8.6</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/jellyfin-sdk`
  - Merge into: `main`
- Upgrade
[org.jellyfin.sdk:jellyfin-api-okhttp-jvm](https://redirect.github.com/jellyfin/jellyfin-sdk-kotlin)
to `1.8.6`
- Upgrade
[org.jellyfin.sdk:jellyfin-api](https://redirect.github.com/jellyfin/jellyfin-sdk-kotlin)
to `1.8.6`
- Upgrade
[org.jellyfin.sdk:jellyfin-core](https://redirect.github.com/jellyfin/jellyfin-sdk-kotlin)
to `1.8.6`


</details>

<details>
<summary>Update Kotlin</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/kotlin`
  - Merge into: `main`
- Upgrade
[org.jetbrains.kotlinx:kotlinx-coroutines-test](https://redirect.github.com/Kotlin/kotlinx.coroutines)
to `1.10.2`
- Upgrade
[org.jetbrains.kotlin.plugin.serialization](https://redirect.github.com/JetBrains/kotlin)
to `2.3.10`
- Upgrade
[org.jetbrains.kotlin.jvm](https://redirect.github.com/JetBrains/kotlin)
to `2.3.10`
- Upgrade
[org.jetbrains.kotlin.plugin.compose](https://redirect.github.com/JetBrains/kotlin)
to `2.3.10`
- Upgrade
[org.jetbrains.kotlin.android](https://redirect.github.com/JetBrains/kotlin)
to `2.3.10`


</details>

<details>
<summary>Update dependency com.android.application to v9</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/major-agp`
  - Merge into: `main`
- Upgrade
[com.android.application](https://android.googlesource.com/platform/tools/base)
to `9.0.0`


</details>

<details>
<summary>Update Github Actions (major)</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/major-github-actions`
  - Merge into: `main`
- Upgrade [actions/cache](https://redirect.github.com/actions/cache) to
`v5`
- Upgrade
[actions/checkout](https://redirect.github.com/actions/checkout) to `v6`
- Upgrade
[actions/setup-python](https://redirect.github.com/actions/setup-python)
to `v6`
- Upgrade
[actions/upload-artifact](https://redirect.github.com/actions/upload-artifact)
to `v6`


</details>

<details>
<summary>Update Gradle to v9</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/gradle-9.x`
  - Merge into: `main`
- Upgrade [gradle](https://redirect.github.com/gradle/gradle) to `9.3.1`


</details>



🚸 Branch creation will be limited to maximum 2 per hour, so it doesn't
swamp any CI resources or overwhelm the project. See docs for
`prhourlylimit` for details.


---

 Got questions? Check out Renovate's
[Docs](https://docs.renovatebot.com/), particularly the Getting Started
section.
If you need any further assistance then you can also [request help
here](https://redirect.github.com/renovatebot/renovate/discussions).


---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/damontecres/Wholphin).


<!--renovate-config-hash:7cb4aaf8303f9b7801754f83b08207c5265d3d176bdb616169c40f6df7c688c2-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Damontecres <damontecres@gmail.com>
2026-02-09 17:28:03 -05:00
.github Adopt jellyfin's AI/LLM policy 2026-02-02 10:34:30 -05:00
app Add settings for max days in next up (#850) 2026-02-09 15:36:20 -05:00
gradle Fix suggestions mixing content from different libraries and update recommendation logic (#644) 2026-02-04 20:50:29 -05:00
scripts Add optional AV1 software decoding via dav1d for ExoPlayer (#721) 2026-01-18 18:35:41 -05: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 Add pre-commit 2025-09-23 18:02:25 -04:00
CONTRIBUTING.md Adopt jellyfin's AI/LLM policy 2026-02-02 10:34:30 -05:00
DEVELOPMENT.md Update development.md with info on setting up the dev environment 2025-12-16 19:35:14 -05:00
gradle.properties Set update URL (#8) 2025-10-15 17:17:16 -04:00
gradlew Initial app creation 2025-09-20 16:36:38 -04:00
gradlew.bat Initial app creation 2025-09-20 16:36:38 -04:00
LICENSE Initial commit 2025-09-20 16:31:30 -04:00
README.md Update README 2026-01-30 17:28:41 -05:00
renovate.json Configure Renovate (#852) 2026-02-09 17:28:03 -05:00
settings.gradle.kts Add integration with Jellyseerr/Seerr (#558) 2026-01-12 16:35:27 -05: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

0_3_5_home

Features

User interface

  • A navigation drawer for quick access to libraries, favorites, search, and settings from almost anywhere in the app
  • Integration with Jellyseerr to discover new movies and TV shows
  • Option to combine Continue Watching & Next Up rows
  • Show Movie/TV Show titles when browsing libraries
  • Play theme music, if available
  • Customize subtitle style for plain text subtitles
  • Search & download subtitles (requires compatible server plugin such as OpenSubtitles)
  • Customize layout grids for libraries
  • Multiple app color themes
  • Protect user profile switches with PIN code

Playback

  • Different media playback engines:
    • ExoPlayer w/ optional extra audio & AV1 software decoding
    • MPV for direct playing anything plus 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
  • Auto play next episodes with pass out protection
  • Option for automatic refresh rate & resolution switching on supported displays
  • Trickplay 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!

Jellyseerr integration is tested with v2.7.3. Older versions may not work.

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

Movie library browsing

0 3 0_movies

Movie page

0_3_5_movie

Series page

0_3_5_series

Playlist

0 3 0_playlist