More information about the release plan can be found in the Jellyfin for Android v2.7 release plan discussion.
If you appreciate my work, you can show your support with a donation through Buy Me a Coffee or GitHub sponsors. 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.
🏗️ Enhancements
- Add long press event for speeding up playing #1020, by @Ank1996
- Load media session artwork from content provider #1558, by @Maxr1998
- Implement DownloadManagement app feature in nativeshell #1627, by @nielsvanvelzen
- Update workflows & issue template config #1630, by @nielsvanvelzen
- Add chapter skipping support to exoplayer client #1646, by @CeruleanRed
- Migrate to media3 #1655, by @nielsvanvelzen
- Update coil dependency from 2.7.0 to 3.2.0 #1669, by @cameocoder
- Use kotlin time over manual math for tick conversions #1680, by @CeruleanRed
- Add button for ask-to-skip media segments #1685, by @CeruleanRed
- Update app build script for Gradle 9 compatibility #1738, by @nielsvanvelzen
- Remove direct dependencies on OkHttp/Okio #1740, by @nielsvanvelzen
- Target SDK 36 (Android 16) #1756, by @nielsvanvelzen
- Update SDK to 1.7.0-beta.4 #1757, by @nielsvanvelzen
- Enable per-app language preferences #1821, by @TheMrMilchmann
- Port video title format from web client #1824, by @rodis120
- Add CodecProfile conditions to DeviceProfileBuilder so video codec profiles are correctly restricted from direct playing (ExoPlayer only) #1889, by @comp500
- Add horizontal seek gesture support with overlay feedback #1895, by @SJJ-dot
- Migrate downloads UI to Compose #1948, by @Maxr1998
- Update app title in fastlane metadata #1955, by @nielsvanvelzen
- Dynamically query device H264 max level for WebView device profile #1956, by @stumpylog
- Add android auto support #1972, by @nielsvanvelzen
- Replace loadUrl("javascript:...") with evaluateJavascript in WebViewFragment #1980, by @jim-daf
- Add audiobook support to Android Auto #1984, by @nielsvanvelzen
- Improve letter navigation in Android Auto #1985, by @nielsvanvelzen
- Add fallback icons to Android Auto items #1986, by @nielsvanvelzen
- Update naming in some places #1991, by @nielsvanvelzen
- Make playlists a top-level item in Android Auto #1993, by @nielsvanvelzen
- Add item expansion to Android Auto to play entire album/playlist/etc #1994, by @nielsvanvelzen
- Rewrite download support #2015, by @nielsvanvelzen
- Use Android TV linter configuration #2016, by @nielsvanvelzen
- Improve audiobook support to Android Auto #2017, by @jordanmichaelrushing
- Download primary image for offline files and store files in database #2019, by @nielsvanvelzen
- Move Android versions to catalog #2023, by @nielsvanvelzen
- Use .tools-versions file for Java version in GitHub workflows #2024, by @nielsvanvelzen
- Sign APK/AAB via Gradle build #2025, by @nielsvanvelzen
- Request download folder if unset #2029, by @nielsvanvelzen
- Show message when there are no downloads #2030, by @nielsvanvelzen
- Reduce API calls when starting playback on Android Auto #2032, by @nielsvanvelzen
- Play downloaded audio in external app #2034, by @nielsvanvelzen
🔧 Bugfixes
- Fix episode autoplay preference having no effect #1479, by @lfranke42
- Fix syntax error in native shell JavaScript #1643, by @nielsvanvelzen
- Fix integrated player control under camera cutout #1648, by @miikaforma
- Revert NativePlayer.seek to use ticks and rename to seekTicks #1694, by @CeruleanRed
- Remove repeated string in AVAILABLE_VIDEO_CODECS #1731, by @gert7
- Fix some languages using wrong code #1778, by @nielsvanvelzen
- Remove duplicate hebrew translations #1779, by @nielsvanvelzen
- Fix logo drawn behind status bar #1818, by @nielsvanvelzen
- fix: + button in edit images in android app #1878, by @jagadam97
- Fix NetworkOnMainThreadExceptions due to usage of Jellyfin SDK on main thread #1888, by @comp500
- Fix Live TV stream end calls not releasing tuner on HDHR devices when used with Jellyfin Server 10.11.x #1892, by @VTRunner
- Remove return from apphost #1900, by @nielsvanvelzen
- Fix title overflow in Player and Item Details screens in Portrait Mode on Mobile Phones #1920, by @DevGitPit
- Fix bluetooth media keys for local video playback #1973, by @mherceg
- Fix Android Auto navigation for artists and audiobooks #1992, by @nielsvanvelzen
- Use artists API for querying artists in Android Auto #1996, by @nielsvanvelzen
- Fix missing translations in SearchLibraryPage #2018, by @nielsvanvelzen
- Fix database migration for existing installs #2027, by @nielsvanvelzen
- Handle null locale when web settings language is not configured #2028, by @BotBlake
- Fix default download method not showing in settings #2033, by @nielsvanvelzen
🔃 Refactoring
- Fix various linter and compiler warnings #1657, by @nielsvanvelzen
- Remove dead code #1981, by @nielsvanvelzen
- Change UserEntity.userId to UUID #1983, by @nielsvanvelzen
💡 Everything else
- Add in app download functionality #1404, by @7ritn
- Add opus to MP4 direct play profile #1463, by @thedreaddpirate
- Prevent destruction of session, so that an app restart can reconnect (chromecast). #1469, by @Tukajo
- Switch to binary-only Gradle distribution #1472, by @3flex
- Fix deprecations in build scripts #1473, by @3flex
- Update to Kotlin 2.0.20 #1474, by @3flex
- Configure Room with Gradle plugin #1475, by @3flex
- Add .kotlin directory to gitignore #1476, by @3flex
- Implement media segment support #1507, by @jakobkukla
- feat(external-player): add mpvkt #1531, by @s12f
- Compile against SDK 35 (Android 15) #1556, by @Maxr1998
- Add individual progress in download notification #1623, by @7ritn
- Add auto migration for Room #1628, by @7ritn
- rework issue forms #1634, by @BotBlake
- Revert "Update dependency com.google.devtools.ksp to v2.2.0-2.0.2" #1699, by @nielsvanvelzen
- Revert "Update Kotlin to v2.2.0" #1700, by @nielsvanvelzen
- Better handle exiting on zero seconds for external players #1773, by @RonDen-DidIt
- Add configurable playback buffer size for integrated player #1946, by @GeiserX
- Remove LeakCanary #1975, by @nielsvanvelzen
- Update pull request template #1976, by @nielsvanvelzen
- Update merge conflict workflow #2020, by @nielsvanvelzen
📈 Dependency updates
- Update detekt by renovate[bot] v1.23.8 #1579, v1.23.7 #1094
- Update gradle by renovate[bot] v9 #1741, v8.14.3 #1713, v8.14.2 #1670, v8.14.1 #1652, v8.14 #1621, v8.13 #1592, v8.12.1 #1548, v8.11.1 #1436
- Update android.plugin by renovate[bot] v9 #1970, v8.13.2 #1871, v8.13.1 #1848, v8.13.0 #1769, v8.12.1 #1762, v8.12.0 #1739, v8.11.1 #1692, v8.10.1 #1659, v8.10.0 #1605, v8.9.0 #1575, v8.8.0 #1438
- Update io.mockk:mockk-android by renovate[bot] v1.14.9 #1918, v1.14.7 #1872, v1.14.6 #1802, v1.14.5 - autoclosed #1722, v1.14.4 #1686, v1.14.3 #1684, v1.14.2 #1596, v1.13.16 #1446
- Update dependency io.coil-kt:coil-base to v2.7.0 #1449, by renovate[bot]
- Update androidx.lifecycle by renovate[bot] v2.9.4 #1792, v2.9.3 #1768, v2.9.2 #1721, v2.9.1 #1664, v2.9.0 #1626, v2.8.7 #1455
- Update androidx.activity:activity by renovate[bot] v1.11.0 #1788, v1.10.1 #1591, v1.10.0 #1456
- Update androidx.fragment:fragment-ktx by renovate[bot] v1.8.9 #1748, v1.8.8 - autoclosed #1666, v1.8.7 #1650, v1.8.6 #1576, v1.8.5 #1460
- Update dependency ubuntu to v24 #1524, by renovate[bot]
- Update gradle/actions action by renovate[bot] v6 #1971, v5 #1803, v4 #1525
- Update androidx.test:runner by renovate[bot] v1.7.0 #1736, v1.6.2 #1526
- Update compose to v1.7.6 #1545, by renovate[bot]
- Update com.google.devtools.ksp by renovate[bot] v2.3.9 #1997, v2.3.7 #1961, v2.3.6 - autoclosed #1916, v2.3.4 #1835, v2.3.0 #1827, v2.2.20-2.0.4 #1808, v2.2.20-2.0.3 #1786, v2.2.10-2.0.2 #1753, v2.2.0-2.0.2 - autoclosed #1701, v2.2.0-2.0.2 #1695, v2.1.21-2.0.2 #1674, v2.1.21-2.0.1 #1640, v2.1.20-2.0.1 #1572, v2.1.0-1.0.29 #1546
- Update de.mannodermaus.android-junit5 by renovate[bot] v2.0.1 #1917, v2 #1884, v1.14.0.0 #1816, v1.13.4.0 #1780, v1.13.1.0 #1703, v1.13.0.0 #1676, v1.12.2.0 #1644, v1.12.0.0 #1620, v1.11.3.0 #1547
- Update compose.material to v1.7.6 #1549, by renovate[bot]
- Update com.android.tools:desugar_jdk_libs by renovate[bot] v2.1.5 #1595, v2.1.4 #1550
- Update androidx.compose.foundation:foundation by renovate[bot] v1.8.3 #1683, v1.8.2 #1651, v1.7.6 #1551
- Update androidx.constraintlayout:constraintlayout by renovate[bot] v2.2.1 #1594, v2.2.0 #1552
- Update junit5 monorepo by renovate[bot] v5.13.1 #1672, v5.13.0 #1661, v5.12.2 #1580, v5.11.4 #1553
- Update androidx.core:core by renovate[bot] v1.17.0 #1752, v1.16.0 #1619, v1.15.0 #1554
- Update androidx.webkit:webkit by renovate[bot] v1.14.0 #1668, v1.13.0 #1597, v1.12.1 #1555
- Update koin by renovate[bot] v4.1.1 #1774, v4.1.0 #1673, v4.0.4 #1617, v4 (major) #1559
- Update playservices by renovate[bot] v22.1.0 #1635, v22 (major) #1561
- Update Kotlin by renovate[bot] v2.4.0 #2014, v2.2.21 #1826, v2.2.20 #1782, v2.2.10 #1750, v2.2.0 - autoclosed #1702, v2.2.0 #1688, v2.1.21 #1638, v2.1.10 #1562
- Update androidx.room by renovate[bot] v2.7.2 #1682, v2.7.1 #1618
- Update com.squareup.okio:okio by renovate[bot] v3.15.0 #1710, v3.14.0 #1698, v3.13.0 #1678, v3.12.0 #1658, v3.11.0 #1624
- Update androidx.compose by renovate[bot] v1.9.4 #1825, v1.9.3 #1814, v1.9.2 #1795, v1.9.1 #1785, v1.9.0 #1751, v1.8.3 #1681, v1.8.2 #1649
- Update github/codeql-action action by renovate[bot] v4 #1807, v3.30.5 #1796, v3.29.10 #1761, v3.29.5 #1733, v3.29.4 #1727, v3.29.2 #1708, v3.29.1 #1696, v3.28.19 #1663
- Update dependency androidx.appcompat:appcompat to v1.7.1 #1665, by renovate[bot]
- Update androidx.mediarouter:mediarouter by renovate[bot] v1.8.1 #1711, v1.8.0 #1667
- Update junit to v5.13.2 #1691, by renovate[bot]
- Update dependency org.jetbrains.kotlinx:kotlinx-serialization-json to v1.9.0 #1697, by renovate[bot]
- Update junit-framework monorepo by renovate[bot] v6.1.0 #2001, v6.0.3 #1919, v6.0.2 #1885, v6.0.1 #1800, v6 (major) #1801, v5.13.4 #1724, v5.13.3 #1714
- Update coil by renovate[bot] v3.4.0 #1962, v3.3.0 #1728
- Update dependency androidx.test.espresso:espresso-core to v3.7.0 #1737, by renovate[bot]
- Update actions/checkout action by renovate[bot] v6 #1876, v5 #1747
- Update dependency androidx.media:media to v1.7.1 - autoclosed #1749, by renovate[bot]
- Update org.jellyfin.sdk:jellyfin-core by renovate[bot] v1.7.1 #1806, v1.7.0 #1797, v1.7.0-beta.6 #1775, v1.7.0-beta.5 #1758
- Update kotest by renovate[bot] v6.1.11 #1967, v6.0.7 #1856, v6.0.4 #1815, v6 (major) #1760
- Update actions/setup-java action to v5 #1765, by renovate[bot]
- Update dependency com.google.android.material:material to v1.13.0 #1776, by renovate[bot]
- Update actions/stale action by renovate[bot] v10.1.0 #1798, v10 #1777
- Update Gradle by renovate[bot] v9.5.1 #1998, v9.5.0 #1965, v9.2.1 - autoclosed #1831, v9.1.0 #1793
- Update actions/upload-artifact action by renovate[bot] v7 #1969, v6 #1880, v5 #1829
- Update dependency androidx.core:core-splashscreen to v1.2.0 #1838, by renovate[bot]
- Update burnett01/rsync-deployments action to v8 #1881, by renovate[bot]
- Update mockk to v1.14.11 #2013, by renovate[bot]
- Update CI dependencies #1440, by renovate[bot]
- Update Kotlin #1527, by renovate[bot]
- Update CI dependencies #1544, by renovate[bot]
- Update CI dependencies #1564, by renovate[bot]
- Update CI dependencies #1603, by renovate[bot]
- Update Kotlin #1604, by renovate[bot]
- Update androidx.compose #1616, by renovate[bot]
- Update CI dependencies #1642, by renovate[bot]
- Update CI dependencies #1677, by renovate[bot]
- Update androidx.media3 #1718, by renovate[bot]
- Update CI dependencies #1743, by renovate[bot]
- Update CI dependencies #1767, by renovate[bot]
- Update CI dependencies #1832, by renovate[bot]
- Update Kotlin #1883, by renovate[bot]
- Update CI dependencies #1890, by renovate[bot]
- Update CI dependencies #1960, by renovate[bot]
- Update Kotlin #1968, by renovate[bot]
- Update CI dependencies #1999, by renovate[bot]
- Update CI dependencies #2012, by renovate[bot]
Contributors
- @nielsvanvelzen
- @3flex
- @CeruleanRed
- @7ritn
- @Maxr1998
- @BotBlake
- @comp500
- @Ank1996
- @thedreaddpirate
- @Tukajo
- @lfranke42
- @jakobkukla
- @s12f
- @miikaforma
- @cameocoder
- @gert7
- @RonDen-DidIt
- @TheMrMilchmann
- @rodis120
- @jagadam97
- @VTRunner
- @SJJ-dot
- @DevGitPit
- @GeiserX
- @stumpylog
- @mherceg
- @jim-daf
- @jordanmichaelrushing