Welcome to the first beta of Jellyfin for Android TV 0.19! ✨
Some of the primary changes include: an improved networking layer, a redesigned search with voice input, the introduction of a new navigation experience across the app, support for seeking music and better queue management, a new 'Are you still watching?' prompt, and many performance and stability improvements under the hood.
Additionally, the photo viewer has been redesigned to align with the new video player’s design, which will be introduced in a future update.
This version is compatible with Jellyfin server 10.10.0 and 10.11.0.
If you appreciate my work, you can show your support with a donation through GitHub sponsors or buy me a bug. Your support helps me continue improving and growing the app. Thank you!
🐛 Beta information
Beta versions are not guaranteed to work as expected. We encourage users to create detailed bug reports if any problems arise. Read our blog post for more information about our Android beta programs.
This beta program will slowly rollout on Google Play in the coming weeks.
🌟 Highlights
- Add button to report device profile to server for troubleshooting #4482, by @nielsvanvelzen
- Add Rewind & FastForward buttons to AudioNowPlayingFragment #4503, by @conihorse
- Add still watching feature #4509, by @ConnorS1110
- New search design #4698, by @nielsvanvelzen
🏗️ Enhancements
- Display media runtime in hour minute format #4253, by @dtrexler
- Run LeanbackHelper onStop() to refresh home screen #4347, by @hdweiss
- update issue forms #4369, by @BotBlake
- Fix codec keys in new playback module #4411, by @dtrexler
- Subtitles background opacity #4423, by @OwOchle
- Update reported client name #4428, by @nielsvanvelzen
- Decouple external video playback from internal playback code #4438, by @nielsvanvelzen
- Rewrite PlaybackManager with SDK #4455, by @nielsvanvelzen
- Remove legacy Java ApiClient #4457, by @nielsvanvelzen
- fix: set max resolution for common video codecs #4470, by @ferrarimarco
- Add codec features, color formats and profile levels to device profile report #4508, by @nielsvanvelzen
- Rewrite media stream resolvers to be device profile based #4512, by @nielsvanvelzen
- Replace androidx.tv with own theme implementation #4523, by @nielsvanvelzen
- Add Button composable #4530, by @nielsvanvelzen
- Rewrite NextUpFragment with Compose #4531, by @nielsvanvelzen
- Directplay VobSub and DVDSub #4550, by @nielsvanvelzen
- Add season and episode numbers for Live TV programs #4558, by @vahtos
- Use OkHttp for networking in media3 #4560, by @nielsvanvelzen
- Rewrite toolbar in compose #4562, by @nielsvanvelzen
- Add ButtonColors and colorScheme #4563, by @nielsvanvelzen
- Move activity opening out of navigation code #4591, by @nielsvanvelzen
- Add hearing impaired indicator for subtitles (SDH) #4593, by @nielsvanvelzen
- Use playback launcher for launching audio #4595, by @nielsvanvelzen
- Drop leanback implementation of search #4605, by @nielsvanvelzen
- Replace leanback animations with our own definitions in CustomPlaybackOverlayFragment #4615, by @nielsvanvelzen
- Change screensaver to cycle through random selection and avoid repeats #4619, by @claireratigan
- Add experimental ASS direct play using libass #4630, by @nielsvanvelzen
- Add intermediate model for image information #4635, by @nielsvanvelzen
- Use new intermediate model in most places #4638, by @nielsvanvelzen
- Improve status bar hiding behavior #4650, by @cani1see
- Change/Fix Resume Button Behaviour on Series #4679, by @osiris86
- Use overlay rendering for experimental SSA support #4685, by @nielsvanvelzen
- Display cover art of currently playing music via compose #4694, by @nielsvanvelzen
- Update SDK to 1.7.0-beta.3 #4710, by @nielsvanvelzen
- Keep same audio language while binge watching a series #4713, by @bin101
- Add option for bold subtitles (#4559) #4724, by @EMohlin7
- Add option to disable PGS direct play #4729, by @linkandzelda91
- Replace DefaultCardView with UserCard(View) #4738, by @nielsvanvelzen
- Rewrite ServerButtonView using compose #4751, by @nielsvanvelzen
- Start Live TV player when activating channel header #4777, by @kylep09
- Support removing items from playback queue #4780, by @nielsvanvelzen
- Refetch server information on authenticate when cached server version is unsupported #4783, by @nielsvanvelzen
- Redesign main toolbar #4792, by @nielsvanvelzen
- Differentiate client name for debug version in API authorization #4802, by @nielsvanvelzen
- Remove WebSocket subscriptions when process is inactive #4804, by @nielsvanvelzen
- Finer subtitle size control #4821, by @RubenTeixeira
- Add preference for subtitle position offset #4825, by @RubenTeixeira
- Update app build script for Gradle 9 compatibility #4832, by @nielsvanvelzen
- Use audio API for audio playback #4834, by @nielsvanvelzen
- Target Android 16 (API 36) #4835, by @nielsvanvelzen
- Remove Jellyfin logo from screensaver #4837, by @nielsvanvelzen
- Add scrubbing API to PlayerState #4843, by @nielsvanvelzen
- Add seekbar to music playback #4844, by @nielsvanvelzen
- Add display information to playback report #4861, by @nielsvanvelzen
- Add display HDR capabilities to device profile #4862, by @nielsvanvelzen
- Add new video player UI #4865, by @nielsvanvelzen
- Remove libass preference in non-development builds #4876, by @nielsvanvelzen
- Add popover composable #4878, by @nielsvanvelzen
- Trim whitespace from search query #4885, by @mkst
- Rewrite picture viewer in compose #4889, by @nielsvanvelzen
- Use transparent buttons in player controls #4891, by @nielsvanvelzen
💥 Crash fixes
- Query based on seriesId in FullDetailsFragmentHelper.getNextUpEpisode #4785, by @nielsvanvelzen
🔧 Bugfixes
- Fix watch next row ordering, Change watch next row meta data #4298, by @hdweiss
- Use media3 MimeTypes in deviceProfile #4481, by @nielsvanvelzen
- Fix logo in next up too large #4532, by @nielsvanvelzen
- Fix missing coroutines dependency in playback:jellyfin module #4545, by @nielsvanvelzen
- Fix toolbar profile picture & time formatting #4565, by @nielsvanvelzen
- Always create boxset queues with default sorting instead of using sort names of individual items #4652, by @nielsvanvelzen
- Add missing action for AndroidMediaService to manifest #4664, by @nielsvanvelzen
- Fix screensaver request loop when there are no items to showcase #4688, by @nielsvanvelzen
- Fix URL generation for user profile pictures #4697, by @nielsvanvelzen
- Use getEpisodes API for series/seasons in SdkPlaybackHelper #4727, by @nielsvanvelzen
- Don't attempt to load logo in screensaver when there is none #4737, by @nielsvanvelzen
- Create channels if they are missing in LeanbackChannelWorker #4740, by @nielsvanvelzen
- Fix LiveTV Guide Issue #2144 #4761, by @kylep09
- Fix retrieveAndPlay incorrectly using ticks instead of milliseconds as start position #4765, by @nielsvanvelzen
- Remove testStream parameter from MediaStreamResolver.getStream #4779, by @nielsvanvelzen
- Fix DreamViewModel retrieving showcase items over main thread #4784, by @nielsvanvelzen
- Fix AsyncImageView.load showing incorrect images on rapid changes #4786, by @nielsvanvelzen
- Catch API issues in StartupActivity when opening a library #4798, by @nielsvanvelzen
- Run Detekt from root module only #4814, by @nielsvanvelzen
- Fix wrong Trickplay thumbnail displayed while seeking #4819, by @tal-sarid
- Fix scaling of profile pictures in UserCardView #4869, by @nielsvanvelzen
- Fix seekbar getting stuck in seek mode #4875, by @nielsvanvelzen
- Only show music entries in now screensaver now playing #4877, by @nielsvanvelzen
- Fix focus always forced to first queue item in AudioNowPlayingFragment #4882, by @nielsvanvelzen
- Fix navigation issues in AudioNowPlayingFragment #4883, by @nielsvanvelzen
- Use JellyfinTheme in full compose fragments #4890, by @nielsvanvelzen
- Fix home navigation from rows to toolbar on older Android versions #4903, by @nielsvanvelzen
🔃 Refactoring
- Centralize requested item fields #4341, by @nielsvanvelzen
- Replace Icons.Default.Done with ic_check in ConnectHelpAlertFragment #4355, by @nielsvanvelzen
- Use color type in OptionsColorList #4480, by @nielsvanvelzen
- Fix a lot of networking on main thread issues #4548, by @nielsvanvelzen
- Fix some more API calls being made on main thread #4551, by @nielsvanvelzen
- Fix nullability issues in presenter usages #4667, by @nielsvanvelzen
- Fix compose focus deprecations #4668, by @nielsvanvelzen
- KGP: replace kotlinOptions with compilerOptions #4745, by @nielsvanvelzen
- Prefer imageVector painting for icon drawables #4797, by @nielsvanvelzen
📈 Dependency updates
- Update aboutlibraries by renovate[bot] v12.2.4 #4766, v12.2.3 #4717, v12.2.1 #4707, v12.2.0 #4693, v12.1.2 #4642, v12.1.1 #4641, v12.1.0 #4637, v12.0.1 #4620, v12 (major) #4602, v11.6.3 #4469, v11.6.2 #4419, v11.4.0 #4374
- Update com.android.tools.build:gradle by renovate[bot] v8.13.0 #4896, v8.12.2 #4888, v8.12.1 #4870, v8.12.0 #4830, v8.11.1 #4746, v8.10.1 #4689, v8.10.0 - autoclosed #4609, v8.9.1 #4542, v8.9.0 #4499, v8.8.2 - autoclosed #4485, v8.8.1 #4456, v8.8.0 #4392
- Update io.mockk:mockk by renovate[bot] v1.14.5 #4793, v1.14.4 #4742, v1.14.2 #4629, v1.14.0 #4573, v1.13.17 #4490, v1.13.16 #4395
- Update androidx.activity:activity by renovate[bot] v1.10.1 #4484, v1.10.0 #4406
- Update dependency androidx.recyclerview:recyclerview to v1.4.0 #4407, by renovate[bot]
- Update koin by renovate[bot] v4.1.1 #4900, v4.1.0 #4712, v4.0.4 #4557, v4.0.3 #4546, v4.0.2 #4414
- Update gradle by renovate[bot] v9 #4831, v8.14.3 #4769, v8.14.2 #4708, v8.14.1 #4678, v8.14 #4622, v8.13 #4478, v8.12.1 #4418
- Update androidx.compose.foundation:foundation by renovate[bot] v1.8.3 #4732, v1.8.2 #4676, v1.7.8 #4452, v1.7.7 #4429
- Update androidx.compose.ui:ui-tooling by renovate[bot] v1.8.3 #4730, v1.8.2 #4670, v1.7.8 #4453, v1.7.7 #4430
- Update androidx.fragment by renovate[bot] v1.8.8 #4700, v1.8.7 #4669, v1.8.6 #4451
- Update appleboy/ssh-action action to v1.2.1 #4468, by renovate[bot]
- Update dependency io.gitlab.arturbosch.detekt to v1.23.8 #4473, by renovate[bot]
- Update dependency com.android.tools:desugar_jdk_libs to v2.1.5 #4479, by renovate[bot]
- Update dependency androidx.constraintlayout:constraintlayout to v2.2.1 #4486, by renovate[bot]
- Update org.jellyfin.sdk:jellyfin-core by renovate[bot] v1.7.0-beta.6 #4901, v1.7.0-beta.5 #4863, v1.7.0-beta.4 #4858, v1.6.7 #4556
- Update androidx.tvprovider:tvprovider by renovate[bot] v1.1.0 #4645, v1.1.0-beta01 #4575
- Update androidx.core:core-ktx by renovate[bot] v1.17.0 #4857, v1.16.0 #4576
- Update github/codeql-action action by renovate[bot] v3.30.1 #4904, v3.30.0 #4895, v3.29.11 #4874, v3.29.10 #4868, v3.29.9 #4845, v3.29.8 #4842, v3.29.5 #4824, v3.29.4 #4813, v3.29.3 #4809, v3.29.2 #4764, v3.29.1 #4753, v3.28.19 #4699, v3.28.17 #4639, v3.28.16 #4611
- Update androidx.leanback to v1.2.0 #4613, by renovate[bot]
- Update androidx.work:work-runtime by renovate[bot] v2.10.3 #4826, v2.10.2 #4733, v2.10.1 #4616
- Update androidx.compose by renovate[bot] v1.9.0 #4854, v1.8.1 #4644, v1.8.0 #4618
- Update androidx.lifecycle by renovate[bot] v2.9.3 #4887, v2.9.2 #4795, v2.9.1 #4701, v2.9.0 #4646
- Update coil by renovate[bot] v3.3.0 #4810, v3.2.0 #4657
- Update dependency androidx.window:window to v1.4.0 #4671, by renovate[bot]
- Update dependency androidx.appcompat:appcompat to v1.7.1 #4702, by renovate[bot]
- Update Kotlin by renovate[bot] v2.2.10 #4856, v2.2.0 #4744
- Update dependency org.jetbrains.kotlinx:kotlinx-serialization-json to v1.9.0 #4754, by renovate[bot]
- Update gradle/actions action to v4.4.2 #4840, by renovate[bot]
- Update actions/checkout action to v5 #4846, by renovate[bot]
- Update dependency androidx.fragment:fragment-ktx to v1.8.9 #4853, by renovate[bot]
- Update dependency io.github.peerless2012:ass-media to v0.3.0-rc03 - autoclosed #4855, by renovate[bot]
- Update kotest by renovate[bot] v6.0.2 #4898, v6.0.1 #4879, v6 (major) #4867
- Update actions/setup-java action to v5 #4873, by renovate[bot]
- Update actions/stale action to v10 #4902, by renovate[bot]
- Update Kotlin #4250, by renovate[bot]
- Update CI dependencies #4386, by renovate[bot]
- Update CI dependencies #4413, by renovate[bot]
- Update CI dependencies #4425, by renovate[bot]
- Update CI dependencies #4431, by renovate[bot]
- Update CI dependencies #4474, by renovate[bot]
- Update CI dependencies #4506, by renovate[bot]
- Update CI dependencies #4529, by renovate[bot]
- Update CI dependencies #4541, by renovate[bot]
- Update CI dependencies #4570, by renovate[bot]
- Update CI dependencies #4661, by renovate[bot]
- Update CI dependencies #4719, by renovate[bot]
- Update androidx.media3 #4817, by renovate[bot]