After a prolonged beta testing period, we're excited to announce that version 2.3.0 of the Jellyfin Android app is now available!
Read our blog post at jellyfin.org to see what's new or read the full changelog below.
⚠️ Note: The Jellyfin server must use version 10.7.6 or newer starting from this release, so make sure your Jellyfin installation is up-to-date!
Changelog
✨ Features and improvements
- Add support for AV1 #275, by @Maxr1998
- Improve fullscreen, orientation and PiP handling #286, by @ThreeFive-O
- Drop support for 10.6 #258, by @Maxr1998
- Add download location option in client settings #276, by @CarlosOlivo
- Native player improvements #297, by @Maxr1998
- Migrate ExoPlayer to SDK and decouple from webapp #351, by @Maxr1998
- Make ExoPlayer the default video player implementation #363, by @Maxr1998
- Extended webview checks #389, by @nielsvanvelzen
- Add playback speed menu to ExoPlayer #392, by @CarlosOlivo
- Rework connection layout and show loading indicator while connecting to server #396, by @fedesenmartin
- Library browser (Android Auto) tweaks #405, by @Maxr1998
- Player refactor #432, by @Maxr1998
- Improve JS injection method #439, by @CarlosOlivo
- Enable subtitle burn settings for web player #440, by @CarlosOlivo
- Remember brightness changes on ExoPlayer #442, by @CarlosOlivo
- Follow state changes for brightness & gesture preference #444, by @CarlosOlivo
- Restructure Webapp UI #445, by @Maxr1998
- Use media item name as title when available #461, by @CarlosOlivo
- Update SDK to 1.0.0 release #462, by @nielsvanvelzen
🔥 Crash fixes
- Fix crash caused by fragment transaction on background thread #296, by @Maxr1998
- Various crash fixes and improvements #298, by @Maxr1998
- Fix Chromecast integration crashing the app without Play Services #305, by @Maxr1998
- Check WebView support and version #326, by @Maxr1998
- Fix app crashing when webview is missing #365, by @Maxr1998
- Add desugaring to support java.time #377, by @nielsvanvelzen
- Fix various playback crashes #382, by @Maxr1998
- Workaround for coroutines crash #399, by @Maxr1998
- Fix PiP crash on aspect ratios unsupported by Android #431, by @Maxr1998
- Fix a rare crash when starting the app #477, by @Maxr1998
🐛 Bug fixes
- Fix background color in web player #272, by @Maxr1998
- Don't unnecessarily set statusBarColor in native player #273, by @Maxr1998
- Fix support for playlists in external player #267, by @CarlosOlivo
- Miscellaneous casting fixes #287, by @nielsvanvelzen
- Fix library browser recents #352, by @Maxr1998
- Client settings layout and wording tweaks #358, by @Maxr1998
- Treat recommended server without system info as unable to connect #367, by @nielsvanvelzen
- Update SDK and rework server connection #381, by @Maxr1998
- Update Jellyfin SDK to 1.0.0 beta 7 #404, by @Maxr1998
- Revert "Make ExoPlayer the default video player implementation" #419, by @nielsvanvelzen
- Fix or suppress detekt warnings and code style issues #412, by @Maxr1998
- Fix module script injection #460, by @CarlosOlivo
- Use AuthorizationHeaderBuilder to encode device name send to web client #466, by @nielsvanvelzen
- Update jellyfin-sdk-kotlin to 1.0.1 #467, by @nielsvanvelzen
- Remove unescapeJson parser #469, by @CarlosOlivo
🔨 Refactoring
- Refactor and split up extensions #270, by @Maxr1998
- Refactor brightness handling, reset brightness when leaving player #271, by @Maxr1998
- Chromecast JS: Improve error logging. #322, by @Codex-
- WebView: Use timber for logging #323, by @Codex-
- Use Activity Result APIs for External player #327, by @Maxr1998
- Migrate to Jellyfin Kotlin SDK (1.0.0-beta.3) #333, by @nielsvanvelzen
⚙️ Build changes
- Update dependencies #293, by @nielsvanvelzen
- Tweak .editorconfig #306, by @Maxr1998
- Dependency updates #307, by @Maxr1998
- Add distributionSha256Sum to prevent MITM attacks. #308, by @diederikdehaas
- Add merge conflict labeler and gradle update and validate tasks #309, by @nielsvanvelzen
- Dependency maintanance #325, by @Maxr1998
- Add workflow config for GitHub CI #262, by @Maxr1998
- ci(update-action): update actions/setup-java to v2 #335, by @h1dden-da3m0n
- ci: bump actions/cache from v2 to v2.1.4 #336, by @dependabot
- Dependency updates #337, by @Maxr1998
- Update Gradle Wrapper from 6.8.3 to 7.0 #339, by @github-actions
- Update dependencies, drop JCenter #349, by @Maxr1998
- Dependency updates + Detekt #361, by @Maxr1998
- Update Jellyfin SDK to beta 4 #362, by @Maxr1998
- Update Kotlin to 1.5.0 #364, by @Maxr1998
- ci(publish): add initial publish app GH workflow #330, by @h1dden-da3m0n
- Add snapshot repository for Jellyfin SDK #374, by @Maxr1998
- Replace GH_TOKEN with JF_BOT_TOKEN #384, by @ferferga
- Update Gradle Wrapper from 7.0.1 to 7.0.2 #390, by @jellyfin-bot
- Update SDK to beta 6 #394, by @nielsvanvelzen
- Fix CI failing and some small tweaks #395, by @nielsvanvelzen
- fix incorrect rsync options #398, by @h1dden-da3m0n
- Update Kotlin to 1.5.10 and revert obsolete workaround #400, by @Maxr1998
- Update dependencies and fix deprecations #401, by @Maxr1998
- Add gradle cache to app-build workflow #403, by @nielsvanvelzen
- Add option to switch between versions of the SDK #428, by @nielsvanvelzen
- Update to SDK beta 8 #427, by @nielsvanvelzen
- Update weblate links #426, by @nielsvanvelzen
- Update ExoPlayer to 2.14 #420, by @Maxr1998
- ci: bump actions/cache from 2.1.5 to 2.1.6 #413, by @dependabot
- Update and migrate Koin to 3.0.2 #411, by @Maxr1998
- Update SDK snapshot version to master-SNAPSHOT #410, by @nielsvanvelzen
- change directory structure of workflow artifacts #406, by @h1dden-da3m0n
- Sign APKs with apksigner instead of via Gradle #446, by @h1dden-da3m0n
- fix odd release naming due to signing #448, by @h1dden-da3m0n
- Append -release to release APKs #449, by @h1dden-da3m0n
- Dependency updates #476, by @Maxr1998
ℹ️ Other changes
- Add store links to readme #313, by @nielsvanvelzen
- Optimize all fastlane bitmaps #334, by @nielsvanvelzen
- Update bug report template #359, by @Maxr1998