v0.16.0
nielsvanvelzen
released this
10 Dec 13:00
·
97 commits
to release-0.16.z
since this release
It has been a busy year with a lot of work on the Android TV app. After an extended beta period today is finally the day to leave it and publish a stable release. Read the blog post to learn about the changes in this release, or read the changelog below.
π Highlights
- Show resumable episodes in smart screen for shows #2361, by @Clubfan22
- Show currently playing music on screensaver #2512, by @nielsvanvelzen
- Add in-app screensaver #2539, by @nielsvanvelzen
- Add separate buttons for artists and album artists in music smart screen #2667, by @nielsvanvelzen
- Use series poster in latest row when "prefer series thumbnails" is enabled #3060, by @nielsvanvelzen
ποΈ Enhancements
- Add AV1 direct play support. #2392, by @MWisBest
- Add playback rewrite backend and plugin systems #2401, by @nielsvanvelzen
- Add media management preference #2415, by @nielsvanvelzen
- Add ExoPlayer backend to playback rewrite #2427, by @nielsvanvelzen
- Add PlaySessionService to playback rewrite #2428, by @nielsvanvelzen
- Update playback module with SDK 1.4.1 changes #2441, by @nielsvanvelzen
- Add option to enable playback rewrite for audio #2455, by @nielsvanvelzen
- Add MediaSessionPlugin to playback rewrite #2457, by @nielsvanvelzen
- adds "shuffle with" button if "always ask" is selected as preferred player. #2459, by @tim-vk
- Add PlaybackManagerOptions for defaultRewindAmount and defaultFastForwardAmount #2473, by @nielsvanvelzen
- Update item delete confirm message string #2477, by @nielsvanvelzen
- Rewrite LibraryDreamService with Compose #2498, by @nielsvanvelzen
- Improve Android TV home screen recommendations #2515, by @OctoNezd
- Remove playlist creation from NowPlaying screen #2523, by @nielsvanvelzen
- Update "Latest" media labels to be "Recently Added" #2549, by @thornbill
- Always use getQuantityString() for time units #2553, by @nielsvanvelzen
- Fix all string capitalization #2563, by @nielsvanvelzen
- Use plurals for amount of tracks in album / episodes in season #2571, by @nielsvanvelzen
- Explicitly use JDK 17 through gradle toolchains #2572, by @DavidFair
- Add blurHashPainter composable #2585, by @nielsvanvelzen
- Remove watched indicator from empty series #2589, by @nielsvanvelzen
- Add media manager implementation using new playback module #2593, by @nielsvanvelzen
- Add androidx.media2 MediaSessionService implementation #2594, by @nielsvanvelzen
- Update and specify full action versions #2600, by @1337joe
- Add (experimental) reactive homepage #2644, by @nielsvanvelzen
- Fix BaseItemInfoRow not showing for persons #2659, by @nielsvanvelzen
- Rewrite GridButton with Compose #2670, by @nielsvanvelzen
- Remove BaseProfile #2691, by @nielsvanvelzen
- Migrate search to SDK to fix cancellation issues #2727, by @polson
- Fix screensaver support in video player #2749, by @nielsvanvelzen
- Migrate ExoPlayer to StyledPlayerView #2754, by @nielsvanvelzen
- Add playback order support to playback rewrite #2783, by @nielsvanvelzen
- Enable playback rewrite by default for music #2802, by @nielsvanvelzen
- Rewrite media session code with androidx.media3 #2803, by @nielsvanvelzen
- Add repeat mode to playback rewrite #2810, by @nielsvanvelzen
- Update unsupported server messages #2815, by @nielsvanvelzen
- Add volume state to playback rewrite #2817, by @nielsvanvelzen
- Use fast forward & rewind durations from preferences #2825, by @nielsvanvelzen
- Replace Glide with Coil #2889, by @nielsvanvelzen
- Remove AccountManager support #2890, by @nielsvanvelzen
- Add preference to disable device type detection notification #2892, by @nielsvanvelzen
- Improve codec info #2893, by @mohd-akram
- Add music progress to screensaver #2922, by @nielsvanvelzen
- Add animation labels for Compose #2927, by @nielsvanvelzen
- Simplify defaultRewindAmount and defaultFastForwardAmount options #2928, by @nielsvanvelzen
- Use rounded corner for item details image #2929, by @nielsvanvelzen
- Add (PlaySession-)identifier to MediaStream #2935, by @nielsvanvelzen
- Use Android 14 SDK (API 34) #2957, by @nielsvanvelzen
- Add margin to media grid #2964, by @DoggoOfSpeed
- Folder improvements #2979, by @DoggoOfSpeed
- Alignment changes to audio player #2995, by @DoggoOfSpeed
- Add transcoding and remuxing #3001, by @nielsvanvelzen
- Make aspect ratio setting use radio buttons #3012, by @DoggoOfSpeed
- Grab background images no larger than the screen #3020, by @DoggoOfSpeed
- Remove old user preference migrations (before 0.15) #3041, by @nielsvanvelzen
- Migrate ExternalPlayerActivity (mostly) to SDK #3055, by @nielsvanvelzen
- Use vignette effect in screensaver to darken background image #3061, by @nielsvanvelzen
- Add initial playback capability testing #3062, by @nielsvanvelzen
- Use layer-list for app_banner drawable #3085, by @nielsvanvelzen
- Enable support for Opus and FLAC in ExoPlayer #3108, by @reacocard
- Support remux/transcode fallback in new music player #3113, by @nielsvanvelzen
- Implement queue management in RewriteMediaManager #3137, by @nielsvanvelzen
π₯ Crash fixes
- Revert "Update dependency com.android.tools:desugar_jdk_libs to v2.0.1" #2468, by @nielsvanvelzen
- Fix screensaver crash when loading an invalid backdrop image #2567, by @nielsvanvelzen
- Fix crash when player controls are auto-hiding while closing the player #2848, by @nielsvanvelzen
- Fix application crash on startup #2884, by @nielsvanvelzen
- Fix crash when switching users while playing music #2923, by @nielsvanvelzen
- Always use child fragment manager instead of activity fragment manager #2939, by @nielsvanvelzen
- Fix crash when reusing actions in MyDetailsOverviewRowPresenter #2940, by @nielsvanvelzen
- Improve BaseRowItem refreshing (fix crash after item deletion) #2949, by @nielsvanvelzen
- Fix crash when same item appears in queue multiple times #2960, by @nielsvanvelzen
- Fix crash during media stream resolving for corrupt files #3056, by @nielsvanvelzen
π§ Bugfixes
- Ignore missing notification permission from Glide #2422, by @teobaranga
- Fix crash when scaleType is null in AsyncImage #2554, by @nielsvanvelzen
- Fix missing background in DreamContentLogo #2560, by @nielsvanvelzen
- Fix playback rewrite audio queue in UI #2649, by @nielsvanvelzen
- Disable MPEG transport stream container in ExoPlayer #2695, by @nielsvanvelzen
- Fix ExoPlayer extensions not used for music playback #2711, by @nielsvanvelzen
- Remove old screen locks #2746, by @nielsvanvelzen
- Fix HomeFragmentLatestRow using wrong import for runBlocking function #2747, by @nielsvanvelzen
- Add fallback image to LeanbackChannelWorker #2753, by @nielsvanvelzen
- Fix app closing when media finishes playing #2756, by @nielsvanvelzen
- Use navigation.goBack instead of activity finish in FullDetailsFragment #2757, by @nielsvanvelzen
- Fix view binding leak in fragments #2763, by @nielsvanvelzen
- Fix BackgroundService flickering #2773, by @nielsvanvelzen
- Disable custom key handling when using playback rewrite #2804, by @nielsvanvelzen
- Fix navigation reset called during back stack pop call #2869, by @nielsvanvelzen
- Add missing view action to StartupActivity #2879, by @nielsvanvelzen
- Fix video player background not black #2895, by @nielsvanvelzen
- Fix wrong lifecycle state in NextUpFragment #2938, by @nielsvanvelzen
- Fix UI corruption when resuming the FullDetailsFragment #2943, by @nielsvanvelzen
- Fix ExoPlayerBackend not triggering onMediaStreamEnd correctly #2961, by @nielsvanvelzen
- Remove recordings from search results #2973, by @nielsvanvelzen
- Synochronise music timers #2996, by @DoggoOfSpeed
- Fix grid getting focus when empty #3003, by @DoggoOfSpeed
- Fix user image being too cropped in #3005, by @DoggoOfSpeed
- Fix sync issue in ItemRowAdapterHelper #3024, by @nielsvanvelzen
- Fix blurry banners and thumbnails with fillWidth #3036, by @DoggoOfSpeed
- Fix ExternalPlayerActivity not using PreferenceStore.reset #3040, by @nielsvanvelzen
- Restore session on MainActivity stop #3054, by @nielsvanvelzen
- Fix progress bar positioning in view_row_details #3058, by @nielsvanvelzen
- Fix embedded subtitles not loading when subtitle filter on library #3090, by @horizon1250
- Fix playback stop reported twice #3105, by @nielsvanvelzen
- Fix display mode not changing back when closing player #3115, by @nielsvanvelzen
- Fix GridButtonPresenter focus on old Android platforms #3133, by @nielsvanvelzen
π Refactoring
- Remove gradlew-update.yaml workflow #2445, by @nielsvanvelzen
- Split MediaManager into interface and implementation #2453, by @nielsvanvelzen
- Split MediaManager into MediaManager and VideoQueueManager #2458, by @nielsvanvelzen
- Remove selected photo item from MediaManager and do some more cleaning #2461, by @nielsvanvelzen
- Replace sharedViewModel with activityViewModel #2518, by @nielsvanvelzen
- Replace deprecated Bundle.get with Bundle.getParcelable #2519, by @nielsvanvelzen
- Replace deprecated ExistingPeriodicWorkPolicy.REPLACE with ExistingPeriodicWorkPolicy.UPDATE #2524, by @nielsvanvelzen
- Refactor CustomPlaybackTransportControlGlue to extract logic into actions #2569, by @DavidFair
- Remove some unused drawables/strings/layouts #2570, by @nielsvanvelzen
- Use ItemRowAdapterHelperKt.setItems for NextUpQuery in ItemRowAdapter #2641, by @nielsvanvelzen
- Rewrite background service UI with compose #2652, by @nielsvanvelzen
- Enable nonTransitiveRClass #2664, by @nielsvanvelzen
- Enable nonFinalResIds #2665, by @nielsvanvelzen
- Migrate video player & next up screen to fragments #2745, by @nielsvanvelzen
- Inline validateAuthentication extension into MainActivity #2758, by @nielsvanvelzen
- Use context in ItemLauncher #2760, by @nielsvanvelzen
- Migrate some activity usages to context #2761, by @nielsvanvelzen
- Use view binding in MainActivity & StartupActivity #2762, by @nielsvanvelzen
- Remove left over search hint code #2772, by @nielsvanvelzen
- Replace XML menus with Kotlin #2779, by @nielsvanvelzen
- Convert queue service to core functionality #2801, by @nielsvanvelzen
- Remove unused ProcessLifecycleInitializer #2880, by @nielsvanvelzen
- Use data object in sealed interfaces #2920, by @nielsvanvelzen
- Replace flow.collect usages with onEach & launchIn #2925, by @nielsvanvelzen
- Remove Thread.sleep usages #3000, by @nielsvanvelzen
- Fix compose deprecations #3035, by @nielsvanvelzen
- Fully migrate ItemLauncher to SDK #3045, by @nielsvanvelzen
- Migrate ItemListView to SDK #3046, by @nielsvanvelzen
- Migrate SuggestedMoviesFragment to SDK #3049, by @nielsvanvelzen
π‘ Everything else
- Add androidx.compose.compiler to libraries section in version catalog #2491, by @nielsvanvelzen
- Revert "Update aboutlibraries to v10.6.0" #2520, by @nielsvanvelzen
- Enable Renovate dependency dashboard #2774, by @nielsvanvelzen
π Dependency updates
- Update io.gitlab.arturbosch.detekt by renovate[bot] v1.23.1 #2921, v1.23.0 #2790, v1.22.0 #2278
- Update aboutlibraries by renovate[bot] v10.9.1 #3078, v10.9.0 #3066, v10.8.3 #2898, v10.8.2 #2885, v10.8.1 #2882, v10.8.0 #2851, v10.7.0 #2781, v10.6.3 #2738, v10.6.2 #2654, v10.6.1 #2525, v10.6.0 #2509, v10.5.2 #2288
- Update github/codeql-action by renovate[bot] 16964e9 #2583, 32dc499 #2537, 17573ee #2490, 8775e86 #2485, 39d8d7e #2478, 3ebbd71 #2451, 436dbd9 #2448, a34ca99 #2429, 515828d #2411, 959cbb7 #2290
- Update Gradle Wrapper from 7.5.1 to 7.6 #2294, by @jellyfin-bot
- Update io.mockk:mockk by renovate[bot] v1.13.7 #2968, v1.13.5 #2656, v1.13.4 #2454, v1.13.3 #2300
- Update actions/setup-java by renovate[bot] 3f07048 #2482, 1df8dbe #2303
- Update appleboy/ssh-action action by renovate[bot] v1 #2907, v0.1.9 #2636, v0.1.8 #2552, v0.1.7 #2391, v0.1.6 #2328
- Update actions/checkout digest to ac59398 #2339, by renovate[bot]
- Update actions/stale action by renovate[bot] v8 #2606, v7 #2356
- Update actions/upload-artifact digest to 0b7f8ab #2388, by renovate[bot]
- Update androidx.compose.ui:ui-tooling by renovate[bot] v1.5.4 #3128, v1.5.3 #3100, v1.5.2 #3083, v1.5.1 #2956, v1.4.3 #2736, v1.4.2 #2681, v1.4.1 #2642, v1.4.0 #2616, v1.3.3 #2407
- Update androidx.appcompat:appcompat by renovate[bot] v1.6.1 #2483, v1.6.0 #2408
- Update com.android.tools.build:gradle by renovate[bot] v8.1.1 #2986, v8.1.0 #2910, v8.0.2 #2794, v8.0.1 #2729, v8 #2663, v7.4.2 #2548, v7.4.1 #2463, v7.4.0 #2412
- Update com.android.tools:desugar_jdk_libs by renovate[bot] v2.0.3 #2628, v2.0.2 #2471, v2.0.1 #2466, v2 #2424
- Update com.google.devtools.ksp by renovate[bot] v1.8.20-1.0.11 #2673, v1.8.0-1.0.9 #2446
- Update kotest by renovate[bot] v5.7.2 #3026, v5.7.1 #3019, v5.6.2 #2750, v5.6.1 #2671, v5.5.5 #2476
- Update koin by renovate[bot] v3.5.0 #3043, v3.4.2 #2822, v3.3.3 #2484
- Update androidx.work:work-runtime-ktx by renovate[bot] v2.8.1 #2610, v2.8.0 #2486
- Update io.insert-koin:koin-androidx-compose by renovate[bot] v3.4.4 #2674, v3.4.2 #2488
- Update gradle by renovate[bot] v8.4 #3103, v8.3 #2978, v8.2.1 #2887, v8.2 #2866, v8.1.1 #2688, v8.1 #2660, v8 #2495, v7.6.1 #2535
- Update androidx.compose.compiler:compiler by renovate[bot] v1.5.3 #3011, v1.5.2 #2992, v1.5.1 #2912, v1.5.0 #2900, v1.4.8 #2857, v1.4.7 #2733, v1.4.6 #2675, v1.4.5 #2658, v1.4.4 #2608, v1.4.3 #2533
- Update dependency org.jetbrains.kotlinx:kotlinx-serialization-json to v1.5.0 #2536, by renovate[bot]
- Update glide by renovate[bot] v4.15.1 #2590, v4.15.0 #2538
- Update gradle/gradle-build-action digest to 6095a76 #2544, by renovate[bot]
- Update androidx-lifecycle by renovate[bot] v2.6.1 #2607, v2.6.0 #2576
- Update androidx.recyclerview:recyclerview by renovate[bot] v1.3.2 #3129, v1.3.1 #2914, v1.3.0 #2577
- Update com.google.android.exoplayer:exoplayer by renovate[bot] v2.19.0 #2924, v2.18.5 #2605
- Update androidx.fragment:fragment-ktx by renovate[bot] v1.6.1 #2913, v1.6.0 #2832, v1.5.7 #2676, v1.5.6 #2609
- Update github/codeql-action action by renovate[bot] v2.22.4 #3132, v2.22.3 #3116, v2.21.8 #3053, v2.21.7 #3048, v2.21.6 #3044, v2.21.3 #2951, v2.21.2 #2919, v2.21.1 #2915, v2.20.4 #2894, v2.20.3 #2877, v2.20.2 #2868, v2.20.1 #2849, v2.20.0 #2839, v2.3.6 #2814, v2.3.5 #2797, v2.3.4 #2795, v2.3.3 #2739, v2.3.2 #2718, v2.3.1 #2705, v2.3.0 #2689, v2.2.11 #2647, v2.2.10 #2638, v2.2.8 #2611
- Update androidx.activity:activity-ktx by renovate[bot] v1.8.0 #3101, v1.7.2 #2793, v1.7.1 #2678, v1.7.0 #2612
- Update androidx.compose.foundation:foundation by renovate[bot] v1.5.4 #3126, v1.5.3 #3098, v1.5.2 #3081, v1.5.1 #2954, v1.4.3 #2734, v1.4.2 #2679, v1.4.1 #2639, v1.4.0 #2613
- Update androidx.compose.material:material by renovate[bot] v1.5.4 #3127, v1.5.3 #3099, v1.5.2 #3082, v1.5.1 #2955, v1.4.3 #2735, v1.4.2 #2680, v1.4.1 #2640, v1.4.0 #2615
- Update actions/checkout action by renovate[bot] v4.1.1 #3124, v4.1.0 #3067, v4 #3023, v3.6.0 #2994, v3.5.3 #2837, v3.5.0 #2618
- Update androidx.core:core-ktx by renovate[bot] v1.12.0 #3030, v1.10.1 #2748, v1.10.0 #2643
- Update gradle/gradle-build-action action by renovate[bot] v2.6.1 #2899, v2.6.0 #2888, v2.5.1 #2860, v2.5.0 #2858, v2.4.2 #2669
- Update Kotlin by renovate[bot] v1.7.3 #2909, v1.9.0 #2876, v1.7.2 #2859, v1.7.1 #2755
- Update com.squareup.leakcanary:leakcanary-android by renovate[bot] v2.12 #2861, v2.11 #2777
- Update dependency androidx.window:window to v1.1.0 #2833, by renovate[bot]
- Update acra by renovate[bot] v5.11.3 #3136, v5.11.2 #3018, v5.11.1 #2959, v5.11.0 #2902, v5.10.1 #2845, v5.10.0 #2844
- Update androidx.media3:media3-session by renovate[bot] v1.1.1 #2976, v1.1.0 #2873
- Update dependency androidx.preference:preference-ktx to v1.2.1 #2953, by renovate[bot]
- Update dependency org.jellyfin.exoplayer:exoplayer-ffmpeg-extension to v2.19.0+1 #2970, by renovate[bot]
- Update org.jellyfin.sdk:jellyfin-core by renovate[bot] v1.4.6 #3199, v1.4.5 #3165, v1.4.4 #3069, v1.4.3 #3004
- Update actions/upload-artifact action to v3.1.3 #3028, by renovate[bot]
- Update androidx.lifecycle to v2.6.2 #3029, by renovate[bot]
- Update actions/setup-java action to v3.13.0 #3059, by renovate[bot]
- Update Kotlin #2247, by renovate[bot]
- Update koin #2348, by renovate[bot]
- Update Kotlin #2467, by renovate[bot]
- Update koin #2619, by renovate[bot]
- Update CI dependencies #2624, by renovate[bot]
- Update Kotlin #2627, by renovate[bot]
- Update CI dependencies #2657, by renovate[bot]
- Update CI dependencies #2662, by renovate[bot]
- Update Kotlin #2701, by renovate[bot]
- Update Kotlin #2751, by renovate[bot]
- Update koin #2808, by renovate[bot]
- Update Kotlin - autoclosed #2834, by renovate[bot]
- Update CI dependencies #2901, by renovate[bot]
- Update koin #2918, by renovate[bot]
- Update CI dependencies #2969, by renovate[bot]
- Update Kotlin #2990, by renovate[bot]
- Update CI dependencies #3006, by renovate[bot]
- Update CI dependencies #3076, by renovate[bot]
- Update CI dependencies #3088, by renovate[bot]