v0.22.0 - Performance 🚀, User Experience ⬆️
This release contains lots of performance improvements as well as many other quality of life changes and often-requested new featured.
Please consider making a small donation via
to support LibreTube's development. Thank you!
New major features
- feat: support for downloading whole playlist at once by @Bnyro in #5525
- feat(player): support for keyboard navigation by @Bnyro in #5641
- feat: support for exporting and importing channel groups by @Bnyro in #5482
- feat: support for filtering by group in subscription channels by @Bnyro in #5658
- feat: Support multiple filter selection by @RafaelsRamos in #5478
- feat(ui): option for automatic update checks by @IndusAryan in #5668
- feat: option to shuffle downloads in background by @Bnyro in #5505
- feat: add 'hide watched videos' to feed filter options by @Bnyro in #5494
Small new features
- feat(ui): save scroll position in trends by @IndusAryan in #5515
- feat: Display tooltips on Android versions below 8.0 by @Isira-Seneviratne in #5719
- feat: watch positions support for downloaded media by @Bnyro in #5669
- feat: stop loading after long unsuccessful buffering by @manish99verma in #5587
- feat: support for albums channel tab, drop discontinued channels tab by @Bnyro in #5735
- feat: button to delete all downloads by @thevedantchourey in #5531
- feat: display currently selected instance as grayed out if not available by @Bnyro in #5624
- feat: don't seek after scrubbing when stopping gesture above timebar by @Bnyro in #5700
- feat: make LibreTube app backups import-compatible with Piped by @Bnyro in #5667
- feat: Improve new user experience + adjust home load by @RafaelsRamos in #5491
- feat: show duration in downloads and improve downloads UI by @Bnyro in #5464
- feat: show repeat button in audio player when playback finished by @Bnyro in #5463
- feat: add option to also clear watch positions when clearing history in the watch history screen by @arkibax in #5565
- feat: (re)add player actions for external player and pip by @Bnyro in #5619
Bug fixes
- fix: android back button doesn't work due to dependency upgrade by @Bnyro in #5653
- fix: bad performance when scrolling in subscriptions feed by @Bnyro in #5655
- fix: clearing watch positions doesn't works sometimes by @manish99verma in #5557
- fix: clear views on VideoAdapter's onBindViewHolder by @RafaelsRamos in #5497
- fix: correctly display colors in system panel by @nik-conder in #5575
- fix: crash after resuming from locked screen with comments/chapters opened by @Bnyro in #5730
- fix: crash when importing a playlist whose id already exists by @Bnyro in #5585
- fix: crash when subscription avatar is null on export by @Bnyro in #5733
- fix: don't show history when closing video on channel page by @abGit9 in #5486
- fix: don't toggle system bars in player fragment when locking player by @Bnyro in #5559
- fix: Erratic navbar and miniplayer behaviour. by @RafaelsRamos in #5460
- fix: false message about no comments and scroll to top button by @Bnyro in #5751
- fix: going back from a video shows search history instead of playlist by @Bnyro in #5724
- fix: homepage not loading when trends disabled by @Bnyro in #5602
- fix: improve solo queue repetition performance and make independent of autoplay by @Bnyro in #5461
- fix: items cut off in watch history by @Bnyro in #5749
- fix: miniplayer minimized when opening video via link by @Bnyro in #5698
- fix: mini player overlaps navigation bar by @KhubaibKhan4 in #5694
- fix: paused video autoplays when unlock screen after few minutes locked by @Bnyro in #5697
- fix: placeholders not properly shown at fast scrolling by @Bnyro in #5654
- fix: playback pauses after orientation change by @Bnyro in #5750
- fix: player seekbar can be hard to grab by @Bnyro in #5561
- fix: playing queue actions still visible after miniplayer closed by swipe by @Bnyro in #5560
- fix: poor subscriptions filter options menu performance by @Bnyro in #5725
- fix: properly vertically center align channel search results by @Bnyro in #5481
- fix: reduce concurrency of playlist import api calls by @Bnyro in #5620
- fix: Remove inappropriate runBlocking call by @Isira-Seneviratne in #5591
- fix: replay video from notification player by @manish99verma in #5542
- fix: ResettableLazyManager not being reset on changing instances. by @RafaelsRamos in #5480
- fix: resolve stuttering when scrolling to the bottom of channel/playlist videos list by @abGit9 in #5607
- fix: set music playback speed only once by @FineFindus in #5634
- fix: settings activity quickly switches to landscape mode before returning to portrait mode by @Bnyro in #5729
- fix: some livestreams are not filtered out in videos filter by @Bnyro in #5623
- fix: SponsorBlock UserID field only accepts numeric inputs by @Bnyro in #5613
- fix: stuttering when scrolling in watch history by @Bnyro in #5657
- fix: switch back to home bookmarks layout on home screen by @Bnyro in #5534
Refactor
- refactor: Add parcelableArrayList extension by @Isira-Seneviratne in #5543
- refactor: Avoid boxing for segment pair by @Isira-Seneviratne in #5569
- refactor: don't recreate player on orientation change by @Bnyro in #5635
- refactor: Improve HDR check by @Isira-Seneviratne in #5483
- refactor: remember video feed, don't auto reload by @Bnyro in #5521
- refactor: Rewrite comments fragments using Paging library by @Isira-Seneviratne in #5589
- refactor: Rewrite search functionality using Paging by @Isira-Seneviratne in #5528
- refactor: settings reorganization to improve UX by @Bnyro in #5603
- refactor: Simplify ContentFilter toggling by @Isira-Seneviratne in #5544
- refactor: Simplify dearrow process by @Isira-Seneviratne in #5529
- refactor: Simplify getVideoIdFromUrl by @Isira-Seneviratne in #5578
- refactor: simplify initalization of MutableLiveData in PlayerViewModel.kt by @Bnyro in #5512
- refactor: Simplify NetworkHelper by @Isira-Seneviratne in #5484
- refactor: simplify NowPlayingNotification.kt by @Bnyro in #5637
- refactor: simplify scrolling logic by @Bnyro in #5656
- refactor: simplify watch position timer tasks by @Bnyro in #5672
- refactor: store notification ids in an enum by @Bnyro in #5533
- refactor: seperate trends fragment into a viewmodel to improve ux by @IndusAryan in #5498
Chore
- chore: add baseline profile generation by @Isira-Seneviratne in #5414
- chore: bump ksp to match kotlin 1.9.23 by @imwints in #5728
- chore: bump target sdk to 34 and fix pip issues by @Bnyro in #5663
- chore(deps): use version catalog for ksp by @imwints in #5731
- chore: reformat code using ktlint by @Bnyro in #5673
- chore: remove unused resources by @Bnyro in #5670
- chore: reorganize player settings to be more intuitive by @Bnyro in #5492
- chore: update list of fallback instances via script by @Bnyro in #5625
- chore: update list of public instances by @Bnyro in #5752
New Contributors
- @abGit9 made their first contribution in #5486
- @thevedantchourey made their first contribution in #5531
- @manish99verma made their first contribution in #5542
- @arkibax made their first contribution in #5565
- @nik-conder made their first contribution in #5575
- @KhubaibKhan4 made their first contribution in #5694
- @imwints made their first contribution in #5728
Full Changelog: v0.21.1...v0.22.0