I am excited to announce beta 1 for the next release. Starting with this beta, the app requires Jellyfin version 10.9.0 or higher. A blog post with more details will be available on release.
If you appreciate my work, you can show your support with a donation trough GitHub sponsors.
🐛 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.
🌟 Highlights
- Add home button when away from home view #3262, by @VizuaaLOG
- Add preferences for screensaver age rating #3513, by @nielsvanvelzen
- Implement normalization gain for music tracks #3660, by @nielsvanvelzen
- Add media logo to screensaver #3680, by @haydenzeller
🏗️ Enhancements
- Watched indicator settings string clarity improvements #2997, by @DoggoOfSpeed
- Add ability to sort by runtime #3084, by @bathompson
- Add more item types to search #3266, by @nielsvanvelzen
- Support setting audio and subtitle streams via remote control #3288, by @3l0w
- Show specials for seasons #3292, by @nielsvanvelzen
- Show specials for series #3301, by @nielsvanvelzen
- Remove "auto" max bit rate and add additional values #3372, by @nielsvanvelzen
- Rewrite BaseItemInfoRow with Compose #3379, by @nielsvanvelzen
- Remove "automatically choose" option from video player preference #3407, by @nielsvanvelzen
- Add "clear image cache" button to developer preferences #3409, by @nielsvanvelzen
- Add fallthrough to media3 MimeTypes in codec->mime type mapping #3410, by @nielsvanvelzen
- Enable Vorbis audio in video direct play #3417, by @MichaelRUSF
- Remove non-profile usages of DeviceUtils #3425, by @nielsvanvelzen
- Improve info row colors #3448, by @nielsvanvelzen
- Update to Kotlin SDK 1.5.0-beta.1 (Jellyfin 10.9) #3472, by @nielsvanvelzen
- Update SDK to 1.4.7 (10.8 with enum backports) #3478, by @nielsvanvelzen
- Add button to pick a random item to the smart screen #3487, by @nielsvanvelzen
- Split playback preferences into normal and advanced screens #3497, by @nielsvanvelzen
- Refactor QueueEntry design #3554, by @nielsvanvelzen
- Cache computed PlayableMediaStream in QueueEntry element #3555, by @nielsvanvelzen
- Initial video support in playback rewrite #3557, by @nielsvanvelzen
- Initial subtitle support in playback rewrite #3564, by @nielsvanvelzen
- Add initial video codec testing #3565, by @nielsvanvelzen
- Add media source selection #3566, by @nielsvanvelzen
- Remove unused "Offline" item location #3603, by @nielsvanvelzen
- Migrate to androidx.tv.material #3611, by @nielsvanvelzen
- Reordering the trailer button #3648, by @efreet7
- Change 'Queue all subsequent episodes' setting to queue all episodes in a series #3658, by @ConnorS1110
- Simplify video player preference #3663, by @nielsvanvelzen
- Add a blur to backdrop images #3674, by @haydenzeller
- Use ViewModel in DreamService #3692, by @nielsvanvelzen
- Remove hasPassword support #3710, by @nielsvanvelzen
💥 Crash fixes
- Fix ModelCompat crash for media type #3607, by @nielsvanvelzen
- Fix app crash in EditServerScreen #3615, by @pascalwei
- Fix JSON decode crash in PictureViewerFragment #3627, by @pascalwei
🔧 Bugfixes
- android tv hls playback direct play fix #3348, by @mnsrulz
- Specify BUILD_TOOLS_VERSION for r0adkll/sign-android-release step in publish workflow #3369, by @nielsvanvelzen
- Fix screensaver and media manager displaying video entries #3558, by @nielsvanvelzen
- Refactor BaseRowItem to use inheritance #3598, by @nielsvanvelzen
- Fix resumable episodes showing up twice in "Play next" integration #3625, by @nielsvanvelzen
- Fix unchecked warning in FullDetailsFragment #3629, by @nielsvanvelzen
- Fix login with pruned sessions #3632, by @nielsvanvelzen
- Start series from first unwatched in "play next up" #3633, by @nielsvanvelzen
- Fix now playing fragment not using string resource for current queue title #3638, by @nielsvanvelzen
- Fix start letter & favorite playlist implementations for item row #3653, by @nielsvanvelzen
- Fix QuickConnect sticky login state #3656, by @pascalwei
- Fix play after pause in MediaManager implementation #3661, by @nielsvanvelzen
- Various small bug fixes #3666, by @nielsvanvelzen
- Fix version selection #3677, by @nielsvanvelzen
- Improve "continue listening" row #3684, by @nielsvanvelzen
- Fix Live TV not playing video streams #3687, by @nielsvanvelzen
- Use Enum.name instead of Enum.toString in preference stores #3707, by @nielsvanvelzen
- Fix skip to previous/next playback actions #3708, by @nielsvanvelzen
- Fix header position in BrowseFolderFragment #3709, by @nielsvanvelzen
🔃 Refactoring
- Remove unnecessary OptIn annotations #3235, by @nielsvanvelzen
- Remove legacy media manager implementation #3321, by @nielsvanvelzen
- Simplify MediaManager interface #3322, by @nielsvanvelzen
- Remove baseline workaround #3333, by @nielsvanvelzen
- Use data object when applicable #3350, by @nielsvanvelzen
- Replace deprecated rememberKoinInject with koinInject #3408, by @nielsvanvelzen
- Remove non existent "SeriesTimers" collection type #3493, by @nielsvanvelzen
- Use UUID for "itemId" parameters #3494, by @nielsvanvelzen
- Remove PlayAccess checks #3507, by @nielsvanvelzen
- Use androidx fragment-compose #3549, by @nielsvanvelzen
- Migrate from java.util.Date to java.time #3550, by @nielsvanvelzen
- Replace PlaybackForwardingActivity with PlaybackRewriteFragment #3559, by @nielsvanvelzen
- Use dependency injection for ItemLauncher, KeyProcessor and ReportingHelper #3572, by @nielsvanvelzen
- Fully migrate ItemListFragment to use SDK #3574, by @nielsvanvelzen
- Remove FakeBaseItem hack #3581, by @nielsvanvelzen
- Refactor PlaybackHelper to use dependency injection #3584, by @nielsvanvelzen
- Rewrite PlaybackHelper to use the SDK #3586, by @nielsvanvelzen
- Remove ImageUtils #3587, by @nielsvanvelzen
- Remove unused code branch in BrowseViewFragment #3589, by @nielsvanvelzen
- Refactor FullDetailsFragment to use SDK #3591, by @nielsvanvelzen
- Migrate "next up" row to SDK #3624, by @nielsvanvelzen
- Remove some unused code related to ItemRowAdapter #3637, by @nielsvanvelzen
- Remove LibVLC #3639, by @nielsvanvelzen
- Migrate "Recently added" to SDK #3640, by @nielsvanvelzen
- Migrate various item rows to SDK #3643, by @nielsvanvelzen
- Migrate Live TV rows to SDK #3644, by @nielsvanvelzen
- Migrate (album) artists and live tv channel rows to SDK #3647, by @nielsvanvelzen
- Replace ItemQuery with GetItemsRequest #3654, by @nielsvanvelzen
- Migrate "Play first unwatched" to SDK #3655, by @nielsvanvelzen
- Send QueueEntry to playback backend #3657, by @nielsvanvelzen
- Use SDK for FilterOptions #3665, by @nielsvanvelzen
- Move media session implementation to exoplayer module #3670, by @nielsvanvelzen
- Migrate Live TV code to SDK #3691, by @nielsvanvelzen
💡 Everything else
- Remove leakcanary #3523, by @nielsvanvelzen
📈 Dependency updates
- Update dependency com.squareup.leakcanary:leakcanary-android to v2.13 #3278, by renovate[bot]
- Update kotest by renovate[bot] v5.9.1 #3649, v5.9.0 #3562
- Update androidx.fragment by renovate[bot] v1.8.1 #3701, v1.8.0 #3673, v1.7.1 #3575
- Update dependency androidx.compose.compiler:compiler to v1.5.14 #3576, by renovate[bot]
- Update androidx.lifecycle by renovate[bot] v2.8.3 #3706, v2.8.2 #3669, v2.8.1 #3617, v2.8.0 #3577
- Update dependency io.mockk:mockk to v1.13.11 #3580, by renovate[bot]
- Update com.android.tools.build:gradle by renovate[bot] v8.5.0 #3676, v8.4.2 #3659, v8.4.1 #3594
- Update github/codeql-action action by renovate[bot] v3.25.9 #3667, v3.25.8 #3646, v3.25.6 #3595
- Update Kotlin to v2 (major) #3599, by renovate[bot]
- Update aboutlibraries by renovate[bot] v11.2.2 #3703, v11.2.1 #3620, v11.2.0 #3602
- Update org.jellyfin.sdk:jellyfin-core by renovate[bot] v1.5.0-beta.3 #3636, v1.5.0-beta.2 #3613
- Update dependency androidx.appcompat:appcompat to v1.7.0 #3618, by renovate[bot]
- Update dependency androidx.window:window to v1.3.0 #3619, by renovate[bot]
- Update dependency gradle to v8.8 #3630, by renovate[bot]
- Update org.jetbrains.kotlinx:kotlinx-serialization-json by renovate[bot] v1.7.1 #3697, v1.7.0 #3650
- Update dependency androidx.compose.foundation:foundation to v1.6.8 #3671, by renovate[bot]
- Update dependency androidx.compose.ui:ui-tooling to v1.6.8 #3672, by renovate[bot]
- fix(deps): update dependency androidx.compose.compiler:compiler to v1.5.7 #3237, by renovate[bot]
- fix(deps): update koin to v3.5.3 #3238, by renovate[bot]
- chore(deps): update ci dependencies #3241, by renovate[bot]
- chore(deps): update kotlin to v1.9.22 #3244, by renovate[bot]
- chore(deps): update aboutlibraries to v10.10.0 #3270, by renovate[bot]
- chore(deps): update appleboy/ssh-action action to v1.0.2 #3274, by renovate[bot]
- fix(deps): update dependency com.android.tools.build:gradle to v8.2.1 #3280, by renovate[bot]
- chore(deps): update appleboy/ssh-action action to v1.0.3 #3297, by renovate[bot]
- fix(deps): update dependency io.mockk:mockk to v1.13.9 #3298, by renovate[bot]
- chore(deps): update ci dependencies #3299, by renovate[bot]
- fix(deps): update dependency androidx.compose.compiler:compiler to v1.5.8 #3306, by renovate[bot]
- fix(deps): update androidx.lifecycle to v2.7.0 #3307, by renovate[bot]
- chore(deps): update ci dependencies #3317, by renovate[bot]
- chore(deps): update ci dependencies #3326, by renovate[bot]
- fix(deps): update dependency com.android.tools.build:gradle to v8.2.2 #3327, by renovate[bot]
- fix(deps): update dependency androidx.compose.foundation:foundation to v1.6.0 #3328, by renovate[bot]
- fix(deps): update dependency androidx.compose.material:material to v1.6.0 #3329, by renovate[bot]
- fix(deps): update dependency androidx.compose.ui:ui-tooling to v1.6.0 #3330, by renovate[bot]
- chore(deps): update dependency io.gitlab.arturbosch.detekt to v1.23.5 #3337, by renovate[bot]
- chore(deps): update gradle/gradle-build-action action to v3 #3338, by renovate[bot]
- chore(deps): update gradle/wrapper-validation-action action to v2 #3342, by renovate[bot]
- chore(deps): update dependency gradle to v8.6 #3344, by renovate[bot]
- chore(deps): update github/codeql-action action to v3.24.0 #3345, by renovate[bot]
- chore(deps): update ci dependencies #3351, by renovate[bot]
- fix(deps): update dependency androidx.compose.compiler:compiler to v1.5.9 #3354, by renovate[bot]
- fix(deps): update dependency androidx.compose.foundation:foundation to v1.6.1 #3355, by renovate[bot]
- fix(deps): update dependency androidx.compose.material:material to v1.6.1 #3356, by renovate[bot]
- fix(deps): update dependency androidx.compose.ui:ui-tooling to v1.6.1 #3357, by renovate[bot]
- chore(deps): update gradle/wrapper-validation-action action to v2.1.1 #3361, by renovate[bot]
- chore(deps): update ci dependencies #3370, by renovate[bot]
- fix(deps): update kotlin #3374, by renovate[bot]
- fix(deps): update dependency androidx.compose.compiler:compiler to v1.5.10 #3393, by renovate[bot]
- fix(deps): update dependency androidx.compose.foundation:foundation to v1.6.2 #3394, by renovate[bot]
- fix(deps): update dependency androidx.compose.material:material to v1.6.2 #3395, by renovate[bot]
- fix(deps): update dependency androidx.compose.ui:ui-tooling to v1.6.2 #3396, by renovate[bot]
- chore(deps): update github/codeql-action action to v3.24.5 #3398, by renovate[bot]
- fix(deps): update coil to v2.6.0 #3400, by renovate[bot]
- chore(deps): update ci dependencies #3412, by renovate[bot]
- chore(deps): update aboutlibraries to v11 (major) #3413, by renovate[bot]
- fix(deps): update dependency io.mockk:mockk to v1.13.10 #3415, by renovate[bot]
- fix(deps): update dependency com.android.tools.build:gradle to v8.3.1 #3420, by renovate[bot]
- fix(deps): update dependency androidx.compose.foundation:foundation to v1.6.3 #3429, by renovate[bot]
- fix(deps): update dependency androidx.compose.material:material to v1.6.3 #3430, by renovate[bot]
- fix(deps): update dependency androidx.compose.ui:ui-tooling to v1.6.3 #3431, by renovate[bot]
- chore(deps): update kotlin to v1.9.23 #3433, by renovate[bot]
- fix(deps): update kotest to v5.8.1 #3441, by renovate[bot]
- chore(deps): update ci dependencies #3446, by renovate[bot]
- fix(deps): update dependency androidx.compose.compiler:compiler to v1.5.11 #3455, by renovate[bot]
- fix(deps): update dependency androidx.compose.foundation:foundation to v1.6.4 #3456, by renovate[bot]
- fix(deps): update dependency androidx.compose.material:material to v1.6.4 #3458, by renovate[bot]
- fix(deps): update dependency androidx.compose.ui:ui-tooling to v1.6.4 #3459, by renovate[bot]
- fix(deps): update dependency com.vanniktech:blurhash to v0.3.0 #3460, by renovate[bot]
- chore(deps): update dependency gradle to v8.7 #3462, by renovate[bot]
- chore(deps): update eps1lon/actions-label-merge-conflict action to v3 #3465, by renovate[bot]
- chore(deps): update dependency io.gitlab.arturbosch.detekt to v1.23.6 #3468, by renovate[bot]
- fix(deps): update dependency androidx.compose.foundation:foundation to v1.6.5 #3480, by renovate[bot]
- fix(deps): update dependency androidx.compose.material:material to v1.6.5 #3481, by renovate[bot]
- fix(deps): update dependency androidx.compose.ui:ui-tooling to v1.6.5 #3482, by renovate[bot]
- chore(deps): update ci dependencies #3484, by renovate[bot]
- fix(deps): update koin to v3.5.4 #3485, by renovate[bot]
- chore(deps): update gradle/actions action to v3.2.1 #3495, by renovate[bot]
- chore(deps): update aboutlibraries to v11.1.3 #3498, by renovate[bot]
- chore(deps): update gradle/wrapper-validation-action action to v2.1.3 #3500, by renovate[bot]
- fix(deps): update dependency com.android.tools.build:gradle to v8.3.2 #3501, by renovate[bot]
- fix(deps): update koin to v3.5.5 #3504, by renovate[bot]
- fix(deps): update koin to v3.5.6 #3505, by renovate[bot]
- chore(deps): update gradle/actions action to v3.3.0 #3506, by renovate[bot]
- chore(deps): update gradle/wrapper-validation-action action to v3 #3508, by renovate[bot]
- chore(deps): update ci dependencies #3511, by renovate[bot]
- fix(deps): update dependency androidx.compose.compiler:compiler to v1.5.12 #3515, by renovate[bot]
- fix(deps): update dependency androidx.compose.foundation:foundation to v1.6.6 #3516, by renovate[bot]
- fix(deps): update dependency androidx.compose.material:material to v1.6.6 #3517, by renovate[bot]
- fix(deps): update dependency androidx.compose.ui:ui-tooling to v1.6.6 #3518, by renovate[bot]
- fix(deps): update dependency androidx.activity:activity-ktx to v1.9.0 #3519, by renovate[bot]
- fix(deps): update dependency androidx.core:core-ktx to v1.13.0 #3520, by renovate[bot]
- chore(deps): update gradle/actions action to v3.3.1 #3524, by renovate[bot]
- chore(deps): update ci dependencies #3529, by renovate[bot]
- fix(deps): update dependency org.jellyfin.media3:media3-ffmpeg-decoder to v1.3.1+2 #3531, by renovate[bot]
- fix(deps): update dependency com.android.tools.build:gradle to v8.4.0 #3538, by renovate[bot]
- chore(deps): update aboutlibraries to v11.1.4 #3540, by renovate[bot]
- fix(deps): update dependency androidx.compose.compiler:compiler to v1.5.13 #3541, by renovate[bot]
- fix(deps): update dependency androidx.compose.foundation:foundation to v1.6.7 #3542, by renovate[bot]
- fix(deps): update dependency androidx.compose.material:material to v1.6.7 #3543, by renovate[bot]
- fix(deps): update dependency androidx.compose.ui:ui-tooling to v1.6.7 #3544, by renovate[bot]
- fix(deps): update dependency androidx.core:core-ktx to v1.13.1 #3545, by renovate[bot]
- fix(deps): update dependency androidx.fragment:fragment-ktx to v1.7.0 #3546, by renovate[bot]
- Update Kotlin #3556, by renovate[bot]
- Update CI dependencies #3560, by renovate[bot]
- Update CI dependencies #3621, by renovate[bot]
- Update CI dependencies #3668, by renovate[bot]
- Update CI dependencies #3681, by renovate[bot]