New
Improved
- Fix clearing queue and keep current player when clicking on timestamps #12252 #12254 #12898
- Try to recover pending download missions when possible #12550
- Add option to delete a download without also deleting file #12544
- Add enqueue option to router dialog #12821
- Add more specific error messages and deduplicate their handling #12578 #12603
- Overlay Permission: display explanatory dialog for Android > R #12253
- Notifications are no longer requested again after rotating the phone #12716
- Allow dragging boorkmarked playlist in both directions #13008
Fixed
Player
- [Player] Use original audio language by default #12931
- Remember and restore orientation on fullscreen exit #12840 #12781
- Fix ghost notifications and fix random player crashes ("
startForegroundService()did not then callstartForeground()") #12606 - Fix audio language button pushing player controls off-screen in portrait and popup #12699 #12714 #12729
- Fix scaleX being NaN on minimize to background app switch #12952
Downloader
- Fix insufficient permissions on opening downloaded streams #12934
- Fix download resume corruption when server returns HTTP 200 #13014
- Fix missing subtitle text in manually downloaded *.SRT files #12575
- Fix initial numbering of frames in TTML to SRT converter #12671
Other
- Fix short count formatting for Android versions below 7.0 #12460
- Fix and simplify opening URLs in browser #12605
- Fix long-pressing Play All-button does nothing #12692
- Enforce using SAF on FireOS TVs with Android 10+ #12642
- Commit all the playlist changes to db immediately to prevent incorrect UI states #13005
- Fix incorrect UI states of PlayQueue items #12922
- Fix crash on screen rotation while entering SoundCloud import URL #12995
Translation / Localization
Development
- Target SDK 35 #12388
- Correctly ignore new version check for Picasso #12483
- Update Android Gradle Plugin to 8.13.0 #12616
- Remove
isUsingDSP#12676 - Switch to version catalogs, migrate Gradle files from Groovy DSL to Kotlin DSL #12706 #12765
- Migrate from KAPT to KSP #12746 #12816 #12820 #12489 #12849 #12864 #12954 #12975
- Dependency updates #12684 #12776
- Revert Google Material Components to 1.11.0 #13018
- Deprecation fixes #12885 #12897
- Use context.getString() shorthand instead of context.getResources().getString() #12949
- Convert newpipe/util/KioskTranslator.java to kotlin #12947
- Add AI policy to contribution guidelines and PR template #12909
- Code quality improvements #12973 #12963 #12981
- workflows: Update actions versions #12986
- Kotlin migration #12978