ITADN
libre-tube/LibreTube

版本发布 8

v31.0
? · 2026-04-20

> [!NOTE] > - This release removes support for using public Piped instances, as there haven't been any working ones in a while - you may however still add your custom instance in the settings. > - Our versioning scheme changed to be more concise - I.e., we dropped the useless 0 in front of the version numbers, and directly jumped from 0.30.0 to this release, 31.0. > > ## Release Highlights > Most noteworthy new features: > - Big downloads player refactor: We now use the same player for downloads as for online streaming, so you can use much more features than with the old downloads player. > - Add search functionality for playlists and downloads > - Support for SponsorBlock's exclusive content and self promotion - in your feed, you can now see if a video is a fully sponsored video at first glance due to a marker on the video thumbnail > - SponsorBlock support for downloads > - And a lot more ... > > As we have a zero-tolerance AI policy, all the changes were done by real humans and took real efforts. So thank you everyone who contributed to this release, and enjoy the release everyone else! ### :sparkles: New Features - [`2d2142d`](https://github.com/libre-tube/LibreTube/commit/2d2142df6835830c36bfa66f79807215741e33c1) - add more sorting options to downloads fragment, e.g. size, channel, ... *(PR #7986 by @SE-Bilal-Ahmad)* - [`13d811b`](https://github.com/libre-tube/LibreTube/commit/13d811b48dec434ccda222c54ccc59eebc1802ca) - fast forward action now increases playback speed instead of skipping frames *(commit by @Bnyro)* - [`e783411`](https://github.com/libre-tube/LibreTube/commit/e783411a5ce69aca02fbfd3ece89bc2d7ba110ba) - also show language setting on A13+ by opening the per-app language settings *(commit by @Bnyro)* - [`141b5fb`](https://github.com/libre-tube/LibreTube/commit/141b5fb70da1793ac8ba19c4692900649cc07192) - support predictive back animations in settings *(PR #8111 by @Pittvandewitt)* - [`906fd0a`](https://github.com/libre-tube/LibreTube/commit/906fd0a62195820d69fb14c068069d84f9ab0761) - use RYD Proxy API *(commit by @FineFindus)* - [`cb4b089`](https://github.com/libre-tube/LibreTube/commit/cb4b089a4a328ca25020862baea6c2ce50e6d1eb) - enable memory tagging *(commit by @FineFindus)* - [`5944117`](https://github.com/libre-tube/LibreTube/commit/59441178fb42f33e3c8e5bd3d56d48c41d0f2797) - automatically select newly created playlist in AddToPlaylistDialog *(commit by @Bnyro)* - [`e9fd702`](https://github.com/libre-tube/LibreTube/commit/e9fd702251b4b7cc53fd39e6c2ce8d1e4702d055) - **Player**: enable fast-forward with double tap to seek *(commit by @FineFindus)* - [`5b3c520`](https://github.com/libre-tube/LibreTube/commit/5b3c52064ed8335c10b253c3b3e738879b16df1d) - automatically display player controls when 'play automatically' is disabled *(commit by @Bnyro)* - [`c94bd6d`](https://github.com/libre-tube/LibreTube/commit/c94bd6dc3bda315b08453d00d8a478242d6268d0) - allow seeking with single tap after first double click *(commit by @Bnyro)* - [`8a4b09d`](https://github.com/libre-tube/LibreTube/commit/8a4b09d5fd5244c3af2b1c2f8cb4a120d802bfdb) - Dismiss chapters sheet when hidden *(commit by @alihrhera)* - [`4312efd`](https://github.com/libre-tube/LibreTube/commit/4312efdf49e3390512aa1c873a3e9a7b6f7d724c) - store sponsorblock segments in database *(commit by @Bnyro)* - [`19b48b5`](https://github.com/libre-tube/LibreTube/commit/19b48b519d79692869c1e491032e8217df587643) - **DeArrow**: cache response *(commit by @FineFindus)* - [`35690b8`](https://github.com/libre-tube/LibreTube/commit/35690b8f609e1e2f42fafe6854aa360dfd840cbf) - **Instances**: always show hard-coded fallback instances *(commit by @FineFindus)* - [`51af8b4`](https://github.com/libre-tube/LibreTube/commit/51af8b45e51777b2d53373070d335db111dd2632) - use online player for playing offline videos *(commit by @Bnyro)* - [`04cd435`](https://github.com/libre-tube/LibreTube/commit/04cd435a9e897ff0b5871fd35e65410f4fac20c3) - **offline player**: support for captions, SponsorBlock, chapters and video frame preview *(commit by @Bnyro)* - [`bf430d6`](https://github.com/libre-tube/LibreTube/commit/bf430d6b9a41285ada2e9ec8f8ad915f986c4c3a) - **playback-options**: add additional suggested speed chips *(commit by @FineFindus)* - [`13ec1ef`](https://github.com/libre-tube/LibreTube/commit/13ec1ef9d0742c55455cc03414908e177d980ac5) - **video player**: properly increase timebar touch area *(commit by @dhanuarf)* - [`e312f92`](https://github.com/libre-tube/LibreTube/commit/e312f928169ac0d9e02c3f5b7fa41ee5d79d9aa2) - store and support navigation for subscriptions and views info for offline content *(PR #8230 by @shantanu1k)* - :arrow_lower_right: *addresses issue #8207 opened by @Bnyro* - [`9be0925`](https://github.com/libre-tube/LibreTube/commit/9be0925bb4227084672e8c1a97c442cf0455826e) - already set auto-fullscreen on shorts before rendering starts *(commit by @Bnyro)* - [`d4d6d71`](https://github.com/libre-tube/LibreTube/commit/d4d6d7170a5dab02daad1dc849d18861a6df8b84) - **playback-options**: set speed steps to 0.25 *(commit by @FineFindus)* - [`ccbc1c4`](https://github.com/libre-tube/LibreTube/commit/ccbc1c4d47ac3a45649b926ace488a886018aa50) - default to local extraction *(commit by @FineFindus)* - [`06894c8`](https://github.com/libre-tube/LibreTube/commit/06894c8736c91f47626ab024b4b16a4473fd7b3b) - remove support for public piped instances *(commit by @FineFindus)* - [`013040e`](https://github.com/libre-tube/LibreTube/commit/013040ea4f6e6c85df56df619436881802a1d622) - remove WelcomeActivity *(commit by @FineFindus)* - [`4b47746`](https://github.com/libre-tube/LibreTube/commit/4b4774638283cdfb593bffbf0120fa211cbcda33) - add 'Add Instance' button to instance dialog *(commit by @FineFindus)* - [`abcf1dc`](https://github.com/libre-tube/LibreTube/commit/abcf1dc6bd8b39a2054c8529cbc4c36bb33050d0) - **Preference**: remove Piped Proxy setting *(commit by @FineFindus)* - [`7e82bff`](https://github.com/libre-tube/LibreTube/commit/7e82bff786ec024573dbe0f55116578ced874e45) - **VideoCardsAdapter**: display icon for fully sponsored videos *(commit by @FineFindus)* - [`da6df39`](https://github.com/libre-tube/LibreTube/commit/da6df396b0ebb1883512a02050f5f5157f9dcd7d) - cache SponsorBlock video labels *(commit by @FineFindus)* - [`c7bc653`](https://github.com/libre-tube/LibreTube/commit/c7bc653484dd375b20e7fb36c91d38bd290ab396) - use background to show selected items in bottomsheet *(commit by @FineFindus)* - [`bce7bf0`](https://github.com/libre-tube/LibreTube/commit/bce7bf083d8e10f3b3bfb8eae9e26af9c3eb1b10) - use primary color for creator comments *(commit by @FineFindus)* - [`04d148d`](https://github.com/libre-tube/LibreTube/commit/04d148d9f9136cb613eda475cf9f6a91283f959b) - **channel groups**: add extra-category to show all ungrouped subscriptions *(commit by @Bnyro)* - [`761b946`](https://github.com/libre-tube/LibreTube/commit/761b94606945d7082ad3924c747355f68925e9ed) - add option to disable fast forward on long press player action *(commit by @Bnyro)* - [`78b8305`](https://github.com/libre-tube/LibreTube/commit/78b8305163fa374f5d9195af26404a83f77f37ed) - add support for opening youtube-nocookie.com URLs with LibreTube *(commit by @Bnyro)* - [`31b9c73`](https://github.com/libre-tube/LibreTube/commit/31b9c73db4a86a9faf3449d6babb2ded4a62a525) - automatically start playback in audio mode, no matter if 'play automatically' is enabled *(commit by @Bnyro)* - [`4fd873d`](https://github.com/libre-tube/LibreTube/commit/4fd873d3381108d96d36816ad6672c602b20e5dc) - **SponsorBlock**: add icons for exclusive access and self promotion *(commit by @FineFindus)* - [`a7c42cd`](https://github.com/libre-tube/LibreTube/commit/a7c42cd92227d8bf81be4d9dcaf422d333a4034a) - **search**: add search actions to downloads and playlist fragment *(commit by @Bnyro)* - [`e98dd08`](https://github.com/libre-tube/LibreTube/commit/e98dd089dd3ad038d70ad6b33fee48bacbc3abf5) - **search**: add support for searching through downloaded videos and playlists *(commit by @Bnyro)* - [`3bd7e7d`](https://github.com/libre-tube/LibreTube/commit/3bd7e7db13503728df30f9f3a6828ba19d7f5758) - add search support to playlists *(commit by @Bnyro)* - [`f5c1fa4`](https://github.com/libre-tube/LibreTube/commit/f5c1fa4b9068789b5c743f25fe110044ed090380) - add toolbar and download search functionality to offline/no internet activity *(commit by @Bnyro)* ### :bug: Bug Fixes - [`a35967b`](https://github.com/libre-tube/LibreTube/commit/a35967b450be12a44766973a2cd1c96ea56d2022) - **deps**: update dependency com.google.android.material:material to v1.14.0-alpha09 *(commit by @renovate[bot])* - [`3b2c1bf`](https://github.com/libre-tube/LibreTube/commit/3b2c1bffc52931be6871265d55cfa956253b3103) - **deps**: update dependency androidx.paging:paging-runtime-ktx to v3.4.0 *(commit by @renovate[bot])* - [`df0e562`](https://github.com/libre-tube/LibreTube/commit/df0e5626fd84304cf23b87855d10d34873210714) - playing queue doesn't work in download playlists fragment *(commit by @Bnyro)* - [`04bb5e0`](https://github.com/libre-tube/LibreTube/commit/04bb5e088f7b8f2d4cd78683601b154859aca1ef) - playing from download tab doesn't respect sort order *(commit by @Bnyro)* - [`719c751`](https://github.com/libre-tube/LibreTube/commit/719c75125028f6b13f5cde680323f5d9086f49eb) - **Local/RYD**: use correct API URL *(commit by @FineFindus)* - [`34f2f8e`](https://github.com/libre-tube/LibreTube/commit/34f2f8e511e4b7ccdd89d9f124197975e3529977) - **Player**: allow fast-forward for all playback speeds *(commit by @FineFindus)* - [`13a6af4`](https://github.com/libre-tube/LibreTube/commit/13a6af4087ce7d8fc71174dd16a008a42d2da3b3) - allow multiline titles in checkbox preferences *(commit by @Bnyro)* - [`774c85e`](https://github.com/libre-tube/LibreTube/commit/774c85e56d07a366200fd2163a48b89f30513ca3) - Fix keyboard hotkeys not being binded *(commit by @ionjsepulveda)* - [`3c778c0`](https://github.com/libre-tube/LibreTube/commit/3c778c00a55899fb6dbe3115542848bf08f0bc4c) - next download isn't always starting automatically *(commit by @bermount)* - [`a69a197`](https://github.com/libre-tube/LibreTube/commit/a69a197cce914b6cc811381f8055143c7859e748) - subscription list is displaying outdated data *(commit by @dhanuarf)* - [`e2cbc0e`](https://github.com/libre-tube/LibreTube/commit/e2cbc0e63a0728019ac8547778df68f14b862fda) - **player**: fullscreen handling and display related streams *(commit by @Bnyro)* - [`2116c64`](https://github.com/libre-tube/LibreTube/commit/2116c64723ae38a1e8296d725bf0994be8725e06) - offline audio player transition, offline PiP/fullscreen *(commit by @Bnyro)* - [`ffc4a04`](https://github.com/libre-tube/LibreTube/commit/ffc4a04b76906dcf294d3814ca75913e314a048f) - switching from online video to offline video (or vice-versa) doesn't work *(commit by @Bnyro)* - [`a8505ce`](https://github.com/libre-tube/LibreTube/commit/a8505ce1e57f341794b3276228685b1683239282) - **offline player**: hide unavailable channel information (avatar, subscriptions count) *(commit by @Bnyro)* - [`4323f78`](https://github.com/libre-tube/LibreTube/commit/4323f78795a10d83d0bdeda6670ff6c5c83f3940) - prevent playlist download from stalling on unavailable videos *(commit by @bermount)* - [`310b49f`](https://github.com/libre-tube/LibreTube/commit/310b49f0cd964bd48429ec76e8d07246a4fab2f5) - **audio player**: chapters button is always visible *(commit by @Bnyro)* - [`01ac1ac`](https://github.com/libre-tube/LibreTube/commit/01ac1acf7abbec023b816884fb48b38162280677) - auto short fullscreen doesn't work when using full local mode *(commit by @Bnyro)* - [`b77a95f`](https://github.com/libre-tube/LibreTube/commit/b77a95fc586bfe5b288a55ae7bee7cec9766cfd5) - default resolution is not applied when the player first created *(commit by @dhanuarf)* - [`d6a0673`](https://github.com/libre-tube/LibreTube/commit/d6a0673075391612b6d69570cb5ee55455021889) - **SponsorBlock**: show video label only if SponsorBlock is enable *(commit by @FineFindus)* - [`349aa59`](https://github.com/libre-tube/LibreTube/commit/349aa594601e1c26e4d8ddeb1bfbe2a42aef3054) - avoid low-contrast situation by selecting an appropriate text color *(commit by @FineFindus)* - [`cda4a81`](https://github.com/libre-tube/LibreTube/commit/cda4a81ea212ab8e53442b3db39e96da9f3d0f11) - **Import/FreeTube**: filter empty lines *(commit by @FineFindus)* - [`92abf4b`](https://github.com/libre-tube/LibreTube/commit/92abf4b4465bd125e471300dcc88f0176041e087) - local Return YouTube dislike option not usable when full local mode enabled *(commit by @Bnyro)* - [`6825551`](https://github.com/libre-tube/LibreTube/commit/6825551c114509fafc7329c4c8d4a24a4484b9df) - laggy show/hide animation in subscriptions load progress indicator *(commit by @Bnyro)* - [`5477ca2`](https://github.com/libre-tube/LibreTube/commit/5477ca28ec681e362fc0b1609ed1ad10acd1ff2b) - crash when rotating screen while video is loading *(commit by @Bnyro)* - [`49f67df`](https://github.com/libre-tube/LibreTube/commit/49f67dfee16c8cabacccc1f790400cb556142aa5) - crash when initializing video preview while loading *(commit by @Bnyro)* - [`d78182c`](https://github.com/libre-tube/LibreTube/commit/d78182c28d2fea568be1b32ccbeb4a414d3ec41d) - audio player doesn't open when switching from downloaded video to downloaded audio *(commit by @Bnyro)* ### :recycle: Refactors - [`8e30596`](https://github.com/libre-tube/LibreTube/commit/8e305961737167ae03ad3e066bd9a4fd132fb0cc) - change playback speed relatively to current speed in fast forward action *(commit by @Bnyro)* - [`cb2ed75`](https://github.com/libre-tube/LibreTube/commit/cb2ed755f286a8e0e8b400f15707abc998904018) - mark required SponsorBlock properties as non-null *(commit by @FineFindus)* - [`e463bce`](https://github.com/libre-tube/LibreTube/commit/e463bce5d6a5f4358a42a2006d7521d03bd4768d) - simplify dearrow requests by only accepting a single video id *(commit by @FineFindus)* - [`6d98c98`](https://github.com/libre-tube/LibreTube/commit/6d98c98e4050293838965c4c1ad852f43fb7e63e) - avoid unnecessary function override *(commit by @FineFindus)* - [`6295cb7`](https://github.com/libre-tube/LibreTube/commit/6295cb7633c1ad0181e7d8745e2c0e727e13cfdb) - **DeArrow**: simplify cache *(commit by @FineFindus)* - [`35f52e8`](https://github.com/libre-tube/LibreTube/commit/35f52e8d4ebf4f773af8dae1f9de2424e61aad7b) - **offline player**: make compatible with no internet activity *(commit by @Bnyro)* - [`b00fa5e`](https://github.com/libre-tube/LibreTube/commit/b00fa5ef89a55c5f268891a06530016ea37b2abb) - simplify and perf-improve PlayOfflineDialog logic *(commit by @Bnyro)* - [`48d6cf7`](https://github.com/libre-tube/LibreTube/commit/48d6cf7f02d905fa4e99a31385610143e66af124) - cleanup public method API of CustomExoPlayerView *(commit by @Bnyro)* - [`94fe6ac`](https://github.com/libre-tube/LibreTube/commit/94fe6ac1bb013f1f2a0d584a7949c8038056d650) - move from buildscript to plugins block *(commit by @Pittvandewitt)* - [`3dac5ad`](https://github.com/libre-tube/LibreTube/commit/3dac5adf6fb119e5256fd9c53957b13de51d6ba9) - migrate and simplify playlist adapter to ListAdapter *(commit by @Bnyro)* ### :wrench: Chores - [`49d14f6`](https://github.com/libre-tube/LibreTube/commit/49d14f6f1b233fb0e09bd42a7bb8a5aaa4d3e4a8) - **readme**: clarify use case of supported external APIs *(commit by @Bnyro)* - [`d68b53e`](https://github.com/libre-tube/LibreTube/commit/d68b53ed661768e0a1651bfcc8ac35088f2a7faa) - add summary to 'automatically check for updates' option *(commit by @Bnyro)* - [`5ba9eb5`](https://github.com/libre-tube/LibreTube/commit/5ba9eb570a09f21fc7393d81c2e8d43b3473954d) - fix builds *(commit by @Bnyro)* - [`2adea6a`](https://github.com/libre-tube/LibreTube/commit/2adea6a2f1d833033c3b44f762c5fde59189f11f) - update NewPipeExtractor *(commit by @FineFindus)* - [`3282b69`](https://github.com/libre-tube/LibreTube/commit/3282b694bcaff42dcdf5f2970a64a383f1ddcfef) - bump version to v31.0 *(commit by @Bnyro)*

v0.29.0
? · 2025-10-26

> [!NOTE] > After half a year of work, this is perhaps one of our biggest releases ever (more than 500 commits), including > - a full app redesign using Material 3 Expressive > - Edge to Edge support > - proper predictive back support > - and a lot more: see the detailed list below > > Thanks to all contributors that made this release possible! > > For those who want to financially support the development, it's now also possible to donate via crypto currencies > - Monero (XMR): 47jAx7jMFo5iqy9VgDH98qL1bSK4kr6Pxi7HKWcRwsxbVYJdjxJtyrwXeAUa5MutvcQUmWMBfvAKnPAutDHvWEymUgLm5v8 > - Ethereum (ETH): 0x599909f54CdC18B997Be8F032341d1Fb14BF4F39 > > Enjoy the new app version! ## Major new features * feat: update ui components to material 3 expressive by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7444 * feat: add support for viewing downloaded playlists by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7810 * feat: support for trending categories (gaming, trailers, ...) by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7592 * feat: use system default animations by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/7053 * feat: display search suggestion / typo correction in results page by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7780 * feat: support edge to edge by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7507 * feat: new semitone mode in playback options sheet by @dhanuarf in https://github.com/libre-tube/LibreTube/pull/7579 * feat: filter members-only videos from channel tab by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7677 * feat: keep queue history when opening new video by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7676 ## Small new features / Quality of Life changes * feat: add 'change region' button in TrendsFragment by @dhanuarf in https://github.com/libre-tube/LibreTube/pull/7816 * feat: add delays between subscription imports to avoid rate limits by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7693 * feat: add toggle to include timestamp in playlists/subscriptions expo… by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7691 * feat: allow drag-to-seek like YouTube by @osamasayed585 in https://github.com/libre-tube/LibreTube/pull/7757 * feat: automatically pause downloads when network changes to metered by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7696 * feat: display title of downloading video by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7578 * feat: show download playlist name by @Elolcol in https://github.com/libre-tube/LibreTube/pull/7768 * feat: dynamically scale landscape player based on screen size by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7477 * feat: enable edge-to-edge in bottom sheets by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7574 * feat: extract playlist name from filename at YouTube CSV imports by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7481 * feat: disable video track when minimized while PiP is off by @dhanuarf in https://github.com/libre-tube/LibreTube/pull/7601 * feat: list all added custom instances in link share dialog by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7652 * feat: load cached and downloaded images even if data saver mode disabled by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7396 * feat: logarithmic brightness scaling by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7536 * feat: request user confirmation before clearing playback queue by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7752 * feat: separate 'clone' and 'create' when creating a new playist by @dhanuarf in https://github.com/libre-tube/LibreTube/pull/7597 * feat(subscriptions sheet): filter list by currently selected group by @dhanuarf in https://github.com/libre-tube/LibreTube/pull/7702 * feat: support for setting locale in Android settings for app (A13+) by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7512 * feat: show snackbar when unsubscribing by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7679 * feat: show toolbar when scrolling up in subscriptions feed for better accessibility by @dhanuarf in https://github.com/libre-tube/LibreTube/pull/7673 ## Layout changes * feat: improve channel row layout by @Elolcol in https://github.com/libre-tube/LibreTube/pull/7769 * feat: improve comments row, replies and sheet styles and layout by @Elolcol in https://github.com/libre-tube/LibreTube/pull/7774 * feat: improve dialogs buttons style by @Elolcol in https://github.com/libre-tube/LibreTube/pull/7726 * feat: improve filter sort sheet ux by @Elolcol in https://github.com/libre-tube/LibreTube/pull/7775 * feat: improve description style and layout by @Elolcol in https://github.com/libre-tube/LibreTube/pull/7782 * feat: library text style and layout by @Elolcol in https://github.com/libre-tube/LibreTube/pull/7784 * feat: improve playlist layout by @Elolcol in https://github.com/libre-tube/LibreTube/pull/7766 * feat: improve playlist thumnail card by @Elolcol in https://github.com/libre-tube/LibreTube/pull/7724 * feat: replace image buttons with material 3 expressive icon buttons by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7709 * feat: style of the sort button for download content by @Elolcol in https://github.com/libre-tube/LibreTube/pull/7733 * feat: subscription layout by @Elolcol in https://github.com/libre-tube/LibreTube/pull/7783 ## Bug Fixes * fix: disable 'Add to playlist' button and spinner when there is no playlist available by @dhanuarf in https://github.com/libre-tube/LibreTube/pull/7603 * fix(player): move screenshot writing task to background thread by @dhanuarf in https://github.com/libre-tube/LibreTube/pull/7735 * fix(player ui): better control overlays visibility by @dhanuarf in https://github.com/libre-tube/LibreTube/pull/7636 * fix: appbar and bottom navigation paddings not properly applied by @dhanuarf in https://github.com/libre-tube/LibreTube/pull/7623 * fix: audio player autoplay doesn't work if autoplay countdown enabled by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7480 * fix: auth api not immediately updated after selecting instance by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7566 * fix: auto-fullscreen on shorts stopped working by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7638 * fix: autoplay countdown appears when manually skipping to next video by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7674 * fix: channel page scroll position reset when entering fullscreen by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7811 * fix: collapse description when loading new video by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7553 * fix(Comments): decrease intensity of creator badge by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7809 * fix: comments sheet not dismissed when next video starts by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7437 * fix: comment time not localized by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7509 * fix: crash in trends when uploader url is unknown by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7750 * fix: crash when deleting subsequent downloads by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7567 * fix: crash when loading dearrow in search result by @dhanuarf in https://github.com/libre-tube/LibreTube/pull/7717 * fix: crash when opening app with no internet connection by @dhanuarf in https://github.com/libre-tube/LibreTube/pull/7718 * fix: crash when opening other video while in background player by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7455 * fix: crash when setting video title with dearrow by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7778 * Fix crash when streams size > 1MB by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/7530 * fix: create playlist dialog shows URL instead of name text input field by default by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7621 * fix: display `ContentItem`s with `UNKNOWN` availability by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7813 * fix: don't cancel subscriptions import if some channels can't be imported by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7692 * fix: filter only `StreamInfoItem`s for availability by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7684 * Fix: floating buttons by @Elolcol in https://github.com/libre-tube/LibreTube/pull/7725 * fix: hide channel avatar if there's none by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7751 * fix(Home): hide Trending category by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7675 * fix: home screen error not shown if homepage fails to load by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7776 * fix: icon color of subscriptions toggle button by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7777 * fix: image loading issues when scrolling too fast on a list by @dhanuarf in https://github.com/libre-tube/LibreTube/pull/7649 * Fix initial video player margin issue in PlayerFragment by @101paul in https://github.com/libre-tube/LibreTube/pull/7753 * fix: instance selection dialog not updated after modifying custom instances by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7565 * fix: keyboard showing up in player screen by @dhanuarf in https://github.com/libre-tube/LibreTube/pull/7662 * fix: last selected playlist is not remembered in AddToPlaylistDialog by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7527 * fix: library buttons overflowing in some languages by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7747 * fix: localization of comment time by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7748 * fix: location category is empty on A13+ by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7688 * fix: offline player video title not updating when playing next video by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7439 * fix: PiP button not working as intended by @dhanuarf in https://github.com/libre-tube/LibreTube/pull/7622 * fix(player): clear current stream when closing player by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7429 * fix: player not paused when switching to other apps while pauseOnQuit is on by @dhanuarf in https://github.com/libre-tube/LibreTube/pull/7615 * fix(player ui): seek and skip buttons appear at opposite side in rtl mode by @dhanuarf in https://github.com/libre-tube/LibreTube/pull/7635 * fix: playlist/subscription imports don't complete for larger data by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7440 * fix: prevent accidential navigation to the uploader instead of video by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7817 * fix: queue missing when playing playlist video in background by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7456 * fix: remove HLS message by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7564 * fix: repeat mode doesn't work in offline player by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7438 * fix: reset to previous pitch value if input is empty by @dhanuarf in https://github.com/libre-tube/LibreTube/pull/7606 * fix: screen turns off while player active after switching to video mode by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7479 * fix: seek buttons always visible if double tap to seek disabled by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7573 * fix: seek buttons still visible when player locked by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7639 * fix: select main video language in download dialog by default by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7510 * fix: Show a blank video when transitioning to a new video, just to inform the user that the new video is being loaded by @dhanuarf in https://github.com/libre-tube/LibreTube/pull/7526 * fix: 'show in seekbar' sponsorblock option causes app to crash by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7388 * fix: shuffling downloads leaves queue empty if insertRelatedStreams disabled by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7593 * fix: SponsorBlock segments skipped even if temporarily allowed by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7395 * fix(sponsorblock): segment time not properly parsed if exceeds 1 hour by @dhanuarf in https://github.com/libre-tube/LibreTube/pull/7637 * fix(SubscriptionsFragment): reset scroll position when switching Chan… by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7808 * fix(trending): 'Trailers' and 'Podcasts' content got swapped by @dhanuarf in https://github.com/libre-tube/LibreTube/pull/7758 * fix: trends fragment contains only first 10 items by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7695 * fix(UI/Comments): only show creator reply indicator for the initial comment by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7613 * fix: videos added to watch history even though history is disabled by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7760 * fix: enable legacy TTML subtitle decoding support in Media3 by @Bilal-Ahmad123 in https://github.com/libre-tube/LibreTube/pull/7492 * fix: improve landscape player UI by @bermount in https://github.com/libre-tube/LibreTube/pull/7475 * fix: fetch dearrow via background thread in VideoCardsAdapter by @dhanuarf in https://github.com/libre-tube/LibreTube/pull/7795 ## Refactor * refactor: provide service type via startForeground compat method by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/7739 * refactor: refactor comments logic by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/7076 * refactor: improve sizes in home layout by @Elolcol in https://github.com/libre-tube/LibreTube/pull/7767 * refactor: load deArrow when video gets visible for better loading times by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7694 * refactor: make feed notifications more robust against subscription changes by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7376 * refactor: merge general and advanced settings categories by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7687 * refactor: move player related sub-views to its own binding by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7550 * refactor(Preferences): use `MIGRATION` length as version by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7442 * refactor: re-use cached home page trends in trends fragment for faster load times by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7600 * refactor: slightly simplify usages of onScrollStateChanged by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7812 * refactor: some small padding changes by @Elolcol in https://github.com/libre-tube/LibreTube/pull/7785 * refactor: unify error handling to be more robust by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7618 * refactor: use enum for top-level destinations by @osamasayed585 in https://github.com/libre-tube/LibreTube/pull/7762 * refactor: use `videoId` for storing downloaded files by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7576 * revert: downgrade media3 by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7595 * refactor(Preferences/SponsorBlock): drop `VISIBLE` option by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7434 * refactor: remove download title by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7575 * refactor: remove legacy subscription view by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7406 ## Chores * build: keep NewPipeExtractor auto-generated proto classes by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7571 * build: update NewPipeExtractor by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7458 * chore: fix images in readme by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7738 * chore: remove accidentially commited file by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7518 * Chore: Remove context parameter from InstanceRepository by @SEKI-YUTA in https://github.com/libre-tube/LibreTube/pull/7466 * chore: remove hls over dash preference by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7508 * Chore: Remove unused imports whole application by @SEKI-YUTA in https://github.com/libre-tube/LibreTube/pull/7468 * chore: revert Improve landscape UI by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7476 * chore: update media3 to v1.7.1 by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7617 * chore: update newpipeextractor to latest version by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7779 * chore: update npe fork by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7568 * chore: use ListAdapter#currentList instead of manual items impl by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7452 * chore: use sentence case in settings and remove ampersand by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7435 * ci: replace deprecated wrapper-validation action by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7511 ## New Contributors * @SEKI-YUTA made their first contribution in https://github.com/libre-tube/LibreTube/pull/7466 * @Bilal-Ahmad123 made their first contribution in https://github.com/libre-tube/LibreTube/pull/7492 * @dhanuarf made their first contribution in https://github.com/libre-tube/LibreTube/pull/7526 * @Elolcol made their first contribution in https://github.com/libre-tube/LibreTube/pull/7726 * @osamasayed585 made their first contribution in https://github.com/libre-tube/LibreTube/pull/7762 * @101paul made their first contribution in https://github.com/libre-tube/LibreTube/pull/7753 **Full Changelog**: https://github.com/libre-tube/LibreTube/compare/v0.28.1...v29.0

0.28.0v0.28.0
? · 2025-04-23

> [!NOTE] > This release adds a new option called "Full Local Mode", which allows you to use LibreTube completely independent of Piped and do all API requests directly to YouTube's servers, similar to NewPipe. This wouldn't be possible without the help of the NewPipe Extractor library, credits to its maintainers. > > Thereby I also want to welcome @FineFindus to the LibreTube organization and thank him for contributing and helping with the development a lot recently, without his help many bugs would probably not have been spotted early enough before the release :) > ## New features * feat: add "full local mode" to use the app without Piped by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7151 and https://github.com/libre-tube/LibreTube/pull/7225 * feat: add progress indicator for local feed extraction by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7145 * feat: implement local extraction support for SponsorBlock and DeArrow by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7195 * feat: locally store channel info when local streams extraction enabled by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7190 * feat: rebuild custom instances dialogs for better UX by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7166 * feat(StreamsExtractor): generate PoToken by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7069 ## Smaller new features * feat: make player default settings behavior more intuitive by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7277 * feat: smoothen background player -> new video player and video player -> new background player transitions by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7323 * feat: smoother, frictionless transition between audio and video mode by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7261 * feat: Implement splash screen for older Android versions by @Isira-Seneviratne in https://github.com/libre-tube/LibreTube/pull/7154 * feat: increase corner-radius of watch-progressbar by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7165 * feat(LocalFeedRepository): filter members only videos by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7113 * feat: fallback to markdown instances list instead of hardcoded list by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7290 * feat(feed): update local feed data when watching video by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7141 ## Bug fixes * fix: automatically resume next paused download item after finishing previous one by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7259 * fix: background shuffle mode doesn't builder a proper queue by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7270 * fix: bound time remaining to mark a video as watched by @clarfonthey in https://github.com/libre-tube/LibreTube/pull/7173 * fix: can't load music playlists using local extraction by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7210 * fix: comment count doesn't reset to 0 if comments disabled by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7254 * fix: current playlist doesn't close after deletion by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7226 * fix: display unstarted downloads in videos tab instead of hiding them by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7256 * fix: download fragment buttons overlap miniplayer by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7269 * fix: download tab scrolls to bottom when entered by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7255 * fix(Feed): extract shorts uploadDate from feedInfo by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7142 * fix(Feed): only update `LastFeedWatchedTime` when update time is newer by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7320 * fix: infinitely looping channel tab items when using full local npe by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7158 * fix: label of sleep timer input field overlapping by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7212 * fix(Local): encode nextpage data as base64 by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7244 * fix(Local): set channelOwner for Comments by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7246 * fix: manual sponsorblock skip button not showing up by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7177 * fix: max amount of concurrent download is ignored for playlists by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7222 * fix: missing item metadata when playing download containing video AND audio by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7288 * fix: missing playlist name in search results using local extraction by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7211 * fix: only enable full local mode by default on new installations by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7326 * fix(Player): hide sponsorblock skip button on video end by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7185 * fix: playlist download service crashes for video titles with invalid filename characters by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7180 * fix: properly open current video from media notification by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7266 * fix: regressions from recent splash screen addition for Android < 11 by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7224 * fix: remove unnecessary whitespaces at instances list fallback by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7291 * fix: scroll state not reset to latest video after refreshing feed/subscriptions by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7310 * fix: selected caption option not properly showing current selection by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7176 * fix: skip already downloaded videos when downloading playlists by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7287 * fix: sort channels alphabetically on client side by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7191 * fix: subscription button state not updated after starting next video by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7307 * fix: subscriptions feed scroll state reset after rotating phone by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7268 * fix: subscriptions feed scroll state reset after switching tabs by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7267 * fix: thumbnails of videos containing '#' can't be downloaded by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7260 * fix(ui): standardize logo design across all app instances by @handokota in https://github.com/libre-tube/LibreTube/pull/7280 * fix: update checker doesn't detect new releases properly by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7143 * fix: urls with timestamps don't work properly by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7237 * fix: various bugs when deleting single or all downloads by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7181 * fix: video sort order not preserved when starting video from sorted playlist by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7286 * fix(WatchHistory): always show filter bar by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7258 * fix: watch position saved on video end even if disabled by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7242 * fix: wrong initial state of hide watched videos from feed filter by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7175 * fix(Welcome): center mode group by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7292 ## Refactor * refactor: enable full local mode by default by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7325 * refactor: merge OfflinePlayerService with VideoOfflinePlayerService by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7262 * refactor: move watch history logic to view model by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7169 * refactor: remove channel info api calls when subscribing to channels locally by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7215 * refactor: re-use app icon header in about, welcome and help activity by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7289 * refactor: split video and trending layout into different adapters by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7308 * refactor: use paging adapter for channel content items by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7157 * perf(LocalFeedRepository): speed up local feed extraction by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7214 ## Chore * chore: remove alternative videos layout option by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7276 * chore: remove app/release folder from git by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7138 * chore: remove unnecessary authApi uses for playlist nextpages by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7149 * chore: small code cleanups related to playing queue by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7278 * chore: update language name in settings for korean by @bermount in https://github.com/libre-tube/LibreTube/pull/7236 * chore: update privacy policy due to recent addition of full local data extraction by @Figim in https://github.com/libre-tube/LibreTube/pull/7206 * chore: update readme to reflect recent addition of full local extraction by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7213 * chore: update roadmap due to implemented local NewPipe extractor feature by @Figim in https://github.com/libre-tube/LibreTube/pull/7161 * build: use NewPipeExtractor fork by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7293 ## New Contributors * @Figim made their first contribution in https://github.com/libre-tube/LibreTube/pull/7161 * @clarfonthey made their first contribution in https://github.com/libre-tube/LibreTube/pull/7173 * @handokota made their first contribution in https://github.com/libre-tube/LibreTube/pull/7280 **Full Changelog**: https://github.com/libre-tube/LibreTube/compare/v0.27.1...v0.28.0

v0.27.1
? · 2025-02-27

> [!NOTE] > This release fixes the "iOS player response not valid" error yet another time. > > If you don't self-host a Piped instance and therefore use "Local streams extraction", please disable "Use HLS" in the instance settings. > > Please note that Android versions below 7.1.1 are no longer supported by LibreTube, see https://github.com/libre-tube/LibreTube/issues/7039! ## BREAKING CHANGE * BREAKING CHANGE: bump minSdk to 26 by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/7047 ## New features * feat: option to hide upcoming videos from feed by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7075 * feat: remember previous playlist download options by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7134 * feat: remember repeat mode across app restarts by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7042 ## Bug fixes * fix: add offline played videos to watch history too by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7041 * fix: app language doesn't change on main activity by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7078 * fix: can't change app icon (debug versions only) by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7086 * fix: configuration issues causing missing margin in download player by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7110 * fix: crash when opening edit channel group sheet by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/7084 * fix: crash when seeking backwards to negative time by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7045 * fix: don't hardcode package name for setting different app icons by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7077 * fix: downloads adapter empty by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7043 * fix: limit bottom sheet titles to two lines by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7093 * fix(MarkableTimeBar): align segments to timebar by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7055 * fix: multiple recyclerview adapter regressions in SubscriptionsFragment by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/7085 * fix: navigation without home tab enabled by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/7046 * fix: negative count of videos in a playlist by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7067 * fix: no shorts in locally generated subscriptions feed by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7111 * fix(player): save watch position on playback end by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7061 * fix: prevent app restart on configuration change by @bermount in https://github.com/libre-tube/LibreTube/pull/7091 * fix(StreamItem): correctly determine upcoming videos by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7031 * fix(SubscriptionsFragment): skip upcoming videos when adding caught-up by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7117 * fix(SubscriptionsFragment): update lastFeedWatchedTime to latest video upload in feed by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7009 * fix: watch position not set for downloaded videos by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7044 * fix: wrong date for downloaded items in watch history by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7104 ## Refactor * refactor: encode player metadata as JSON string instead of parcelable by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7068 * refactor: move hls/dash preference to instance settings for convenience by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7130 * refactor: refactor WelcomeActivity and associated logic by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/6996 * refactor: simplify add to playlist dialog by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/7074 * refactor: simplify download options storing and restoring logic by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7135 * refactor: upgrade to Coil3 by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/7052 * refactor: use DiffUtilCallback across all ListAdapters by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/7063 * refactor: optimize extraction performance & simplify code by @Briiqn in https://github.com/libre-tube/LibreTube/pull/7112 * refactor: rework RecyclerViews to set adapter once by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/6971 ## Chore * chore: add an icon for the development IDEA by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/7018 * chore: default to DASH when local streams extraction enabled by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7132 * chore: don't include encrypted dependency info block blob in builds by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7021 * chore: remove remaining cronet leftovers by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7034 * chore: update newpipeextractor to v0.24.5 by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7129 * chore: use square kotlinx serialization converter by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/7051 ## New Contributors * @bermount made their first contribution in https://github.com/libre-tube/LibreTube/pull/7091 * @Briiqn made their first contribution in https://github.com/libre-tube/LibreTube/pull/7112 **Full Changelog**: https://github.com/libre-tube/LibreTube/compare/v0.27.0...v0.27.1

0.27.0v0.27.0
? · 2025-01-24

> [!NOTE] > This release adds support for **local feed extraction** in order to circumvent the current subscription feed issues at Piped, where the feed not properly updated. To enable it, navigate to `Settings` -> `Instance` and set the preference accordingly. Please note that this might take a lot of time if you have a lot of subscriptions, and apart from that directly connects you to YouTube for fetching information about new videos. > > Additionally this PR updates the NewPipeExtractor to v0.24.4 in order to fix the `iOS Player response not valid` errors when attempting to play a video. > > For everyone who didn't notice yet: If you don't have access to a private Piped instance that's not IP-banned by YouTube, you should likely enable `Local streams extraction` in the settings if facing `Sign in to confirm you're not a bot` errors. As the `Local feed extraction` option, please keep in mind that when enabled, LibreTube directly fetches playback information from YouTube. > ## Major new features * feat: support for predictive back gestures by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6863 * feat: support for local feed extraction by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6938 * feat: support for exporting single playlists by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6855 * feat: support for importing playlist as list of video ids / urls by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6845 * feat: display full video sponsorblock categories by @FineFindus in https://github.com/libre-tube/LibreTube/pull/6725 ## Smaller new features * feat: add badge for downloaded videos by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6935 * feat: add update info dialog to inform users about current Piped situation by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6987 * feat: disable autoplay countdown while screen off by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6800 * feat: dismiss chapters sheet when minimizing video by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6844 * feat(LocalFeedExtraction): check if there are any new streams before refreshing channel by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6945 * feat(LocalFeedRepository): don't fetch ChannelInfo if latest channel video is already known by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6951 * feat(LocalFeedRepository): fetch only enabled channel tabs by @FineFindus in https://github.com/libre-tube/LibreTube/pull/6941 * feat(LocalFeedRepository): throttle feed extraction by @FineFindus in https://github.com/libre-tube/LibreTube/pull/6949 * feat: option to only delete watched videos by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6742 * feat(Playlist): display views and upload date by @FineFindus in https://github.com/libre-tube/LibreTube/pull/6920 * feat: reuse existing player when selecting other video while playing by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6821 * feat: show button to view crash log in settings for debug builds by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6798 * feat: show full upload date if description expanded by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6885 * feat: show toast message after version text copied by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6966 * feat: support for media button events (next, previous, rewind, forward, stop) by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6817 * feat: support for predictive back gesture in (audio) player fragment by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6864 * feat: watch progress support for downloads by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6741 ## Bug fixes * fix: auto-delete feed videos when unsubscribing from channel when using local feed extraction by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6944 * fix: auto fullscreen for shorts by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6768 * fix: autoplay countdown continues although other video selected by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6841 * fix: back navigation from comment replies by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/6954 * fix: backstack when opening search fragment by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/7010 * fix: backup file names contain (for some file systems) invalid char ':' by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6952 * fix: check if streams is initialized by @FineFindus in https://github.com/libre-tube/LibreTube/pull/6802 * fix: crash if player view is not attached to lifecycle by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6797 * fix: crash when all caught up view appearing in subscriptions by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6940 * fix: crash when closing player before video started by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6785 * fix: crash when instances refreshed during instance selection (out of bounds) by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6929 * fix: crash when opening video in landscape with autofullscreen enabled by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6818 * fix: crash when rotating phone while player session not yet started by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6981 * fix: crash when starting audio player by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6756 * fix: crash when starting next video before current started by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6843 * fix: crash when starting other video by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6784 * fix: crash when switching to audio player by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6968 * fix: crash when trying to play downloaded video offline by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6842 * fix: crash when trying to start audio before playback started by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6853 * fix: crash when two media sessions coexist by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6753 * fix: crash when videoId is unitialized by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6763 * fix: don't recreate player on orientation change by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6819 * fix: don't show audio player when tapping video player notification by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6740 * fix: error toasts when switching between audio/video playback by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6790 * fix: exported playlists in urlsorids format use invalid url format by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6861 * fix: ignore youtube import entries with missing title url by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6744 * fix: mark as (un)watched button by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7002 * fix: maximise player when playing new video by @FineFindus in https://github.com/libre-tube/LibreTube/pull/6829 * fix: MediaCodecRendererException when rotating screen by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7003 * fix: missing horizontal padding in play offline dialog by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6928 * fix: missing indicator for current selected resolution by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6755 * fix: missing predictive back support in search fragments by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7000 * fix: missing title and chapters in downloads video player by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6820 * fix: navigating back home by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/6976 * fix: offline audio player hidden behind content fragment by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6980 * fix: only display playlist video count if ge zero by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6900 * fix: only show/hide scroll to top button at end of scrolling by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6965 * fix: overflowing downloads layout on some devices by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6754 * fix: play local video version dialog hidden if autofullscreen enabled by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6936 * fix: play/pause icon at start of video by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6772 * fix: preference to only store watch positions for video doesn't work by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6997 * fix: pressing video notification when playing offline by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6762 * fix: properly kill playback service and notification on player close by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6773 * fix: queue buttons dont work by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6769 * fix: recent player UI regressions by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6781 * fix: search action view not properly collapsed when pressing navbar item by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7014 * fix: shorts are not properly categorized using local feed extraction by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6939 * fix: sleep timer doesn't work if playing downloads offline by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6764 * fix: starting video from queue when autoplay countdown enabled by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6783 * fix(SubscriptionsFragment): skip all-caught-up check for upcoming videos by @FineFindus in https://github.com/libre-tube/LibreTube/pull/7008 * fix: unable to create new channel groups by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6999 * fix: update miniplayer play pause button on screen rotation by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7005 * fix: update play pause button on screen rotation by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7004 * fix: video aspect ratio ignored when playing videos offline by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6757 * fix: watch history imports from other languages by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6881 * fix: wrong back order when new fragment opened from audio/video player by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6931 * fix: wrong predictive back order in offline downloads by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6930 * fix: preserve platform navigation implementation by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/6956 ## Refactor * refactor: directly add loaded videos to playlist to improve UX by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6865 * refactor: don't use Cronet directly for downloading by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6887 * refactor: improve proxy url rewriting, store only unproxied URLs in database by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6947 * refactor: improve SponsorBlock segments handling logic by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6771 * refactor: improve watch position handling by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6998 * refactor: merge VideoOnlinePlayerService with OnlinePlayerService by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6761 * refactor: Migrate to MediaLibraryService by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6732 * refactor: move local playlists logic to LocalPlaylistsRepository by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6932 * refactor: reimplement stats for nerds by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6739 * refactor: re-use StreamInfoItem#toStreamItem from StreamsExtractor by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6946 * refactor: simplify ImportHelper#importPlaylists by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6846 * refactor: simplify playing queue listener handling by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6789 * refactor: use MediaController instead of ServiceBinder in AudioPlayer… by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6743 * refactor: use skip/previous buttons from DefaultMediaNotificationProvider by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6857 * refactor: Migrate to FragmentContainerView by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/6957 * refactor: clean up all binding references by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/6962 * refactor: observe comment count outside of lifecycle aware block by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/6961 * refactor: observe livedata once in HomeFragment by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/6955 * refactor: rework view binding by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/6975 ## Chore * chore: bump NewPipeExtractor to stable v0.24.3 by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6834 * chore: change freetube file extension to db by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6879 * chore: fix some deprecation warning messages by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7016 * chore: remove unused case in onCustomCommand by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6858 * chore: use TextUtils#isDigitsOnly by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6933 * chore: drop cronet by @Bnyro in https://github.com/libre-tube/LibreTube/pull/7015 ## Credits Special thanks to @FineFindus and @Pittvandewitt for their contributions to this release! **Full Changelog**: https://github.com/libre-tube/LibreTube/compare/v0.26.0...v0.27.0

0.26.0v0.26.0
? · 2024-11-17

## New features * feat: audio player support for no internet activity by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6641 * feat: downloads fragment rework, playing queue and audio player support by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6596 * feat: ask user to play downloaded version if video already downloaded by @angolo and @Bnyro in https://github.com/libre-tube/LibreTube/pull/6599 * feat: support for importing watch history from YouTube by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6543 * feat: support for shuffling downloaded audio content by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6623 * feat: RYD support for local stream extraction by @janisslsm in https://github.com/libre-tube/LibreTube/pull/6483 ## Quality of Life changes * feat: hide crash dialogs when developing by @FineFindus in https://github.com/libre-tube/LibreTube/pull/6719 * feat(VideosAdapter): clearly indicate future videos as upcoming by @FineFindus in https://github.com/libre-tube/LibreTube/pull/6716 * feat: delete indicator when dismissing videos/items by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6673 * feat: highlight current selection in player options sheets by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6482 * feat: support for selecting audio codec by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6578 * feat: allow dash without piped proxy by @janisslsm in https://github.com/libre-tube/LibreTube/pull/6485 * feat: allow user to set custom preloading amount by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6504 ## Bug fixes * fix: autoplay countdown showing even if autoplay disabled by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6481 * fix: back gesture handling in no internet activity by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6646 * fix: background service stops when using add to queue/playlist/downlo… by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6577 * fix: can't open audio player via notification in downloads by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6626 * fix: can't paste channel/playlist urls to search bar by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6575 * fix: click on video playlist won't load if autoplay is off by @Relwi in https://github.com/libre-tube/LibreTube/pull/6588 * fix: click on video playlist won't load if autoplay is off on background mode by @Relwi in https://github.com/libre-tube/LibreTube/pull/6589 * fix: crash in add to playlist dialog upon api error by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6663 * fix: crash viewing live video in playlist by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6689 * fix: crash when adding/removing channel to group by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6529 * fix: crash when importing private videos in watch history by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6571 * fix: display comments count (again) by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6501 * fix: don't allow empty input in EditNumberPreference by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6669 * fix: double click gesture inaccurate in landscape player by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6480 * fix: hide download buttons when current video is live by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6694 * fix: hide go to video action when in no internet mode by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6611 * fix: import and export of FreeTube newline format by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6674 * fix: import of new FreeTube playlist format by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6639 * fix: incorrect FreeTube playlist export by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6664 * fix: live videos shown as uploaded in 1970 in watch history by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6695 * fix: missing separator in video info text by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6621 * fix: missing top bar padding in portrait for downloaded video playback by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6534 * fix: no chapters button shown if video highlight is the only chapter by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6530 * fix: no horizontal padding in fullscreen player by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6572 * fix: pip controls don't work if auto-PiP is disabled by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6542 * fix: pip-to-audio action does not close pip window by @janisslsm in https://github.com/libre-tube/LibreTube/pull/6476 * fix: queue refill jobs don't finish when video session ended by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6533 * fix: scroll position not remembered when closing comments sheet by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6687 * fix: shuffle button crash when playlist is empty by @Relwi in https://github.com/libre-tube/LibreTube/pull/6561 * fix: uncaught local streams extractor exceptions by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6532 * fix: unexpected behavior in offline audio player fragment by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6645 * fix: video fails to play when shared to app with zero navbar tabs by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6573 * fix: work around that some livestreams are not declared as such by NPE by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6711 * fix: wrong chapter name shown if following video has only SB highlight by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6531 ## Refactor * refactor: also respect codec preference in audio mode by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6579 * refactor: cleanup DashHelper.kt by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6489 * refactor: click on video playlist won't load if autoplay is off by @Relwi in https://github.com/libre-tube/LibreTube/pull/6593 * refactor: error handling for stream extractor responses by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6541 * refactor: improve performance when starting background shuffle mode by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6627 * refactor: simplify swipe/drag listeners for recycler views by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6672 * refactor: unify views string formatting logic to avoid bugs by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6609 ## Chore * chore: cleanup and update dependencies by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6576 * chore: correct typos detected by typos-cli by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6602 * chore: fix failing download for NewPipe Extractor dependency by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6471 * chore: fix missing string resource by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6671 * chore: fix unescaped escape sequence in username_email string by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6472 ## New Contributors * @angolo made their first contribution in https://github.com/libre-tube/LibreTube/pull/6599 **Full Changelog**: https://github.com/libre-tube/LibreTube/compare/v0.25.2...v0.26.0

0.25.2v0.25.2
? · 2024-09-05

## New features * feat: download support for local streams extractor by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6416 * feat: support download of private playlists via external downloader by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6414 ## Bug fixes * fix: related streams published 54 years ago with local extractor by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6415 * fix: retain exoplayer on orientation change by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/6428 * fix: videos in watch history uploaded in 1970 by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6439 * fix: duplicated slash in custom instance's share url by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6438 * fix: issues with channel name caused by textIsSelectable by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6449 * fix: laggy behavior when using back gesture to minimize player by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6448 **Full Changelog**: https://github.com/libre-tube/LibreTube/compare/v0.25.1...v0.25.2

0.25.1v0.25.1
? · 2024-08-23

### Most importantly, this release contains a workaround for the recent AntiBot protection changes by YouTube. ## FAQ about the current situation - Help! I can't play videos? If you rely on public Piped instances, go to `Settings` -> `Instance` and enable `Disable Piped proxy` as well as `Local streams extraction`. Disclaimer: The bot-blocked API call will now be done directly from your IP address, which is obviously less privacy-friendly. Using a VPN is recommended, but might not always work since YouTube blocks IPs of VPN providers as well. - Help! I can't add videos to a playlist? If you're using the app with a Piped account, it's sometimes not possible to add videos to a playlist due to Piped. If you don't use a Piped account, playlists should work as expected after this release. - If you're self-hosting a private Piped instance, everything is most likely still working normally anyways. - Why did it take two weeks to publish a fix? Because open source developers also have a private life and do all that work in their free time without any monetary compensation. - If you consider this project useful, please consider making a small donation to show your appreciation via https://liberapay.com/Bnyro or https://github.com/sponsors/Bnyro. Thank you! - Can we expect more such breaking changes in the future? Only YouTube knows. ## New features * feat: local streams extraction by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6381 * feat: quick share action to add video to playlist by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6219 * feat: share dialog redesign (including copy link feature) by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6236 * feat: show total playlist duration by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6240 * feat: button to screenshot/capture current frame by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6304 * feat: improve about activity and device info dialog by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6269 * feat: button to play recent videos from a channel by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6218 * feat: button to swap sponsorblock segment start and end time by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6237 * feat: make video, playlist, channel title/description selectable by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6272 * feat: support for directly playing urls inserted in search bar by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6300 * feat: use watch position as timestamp when sharing by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6382 * feat: watch history pagination by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6339 * feat: added sorting method in downloads by @amandeepsinghjamwal in https://github.com/libre-tube/LibreTube/pull/6194 * feat: allow timestamp inputs in dearrow submit dialog by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6238 ## Bug fixes * fix: bugs in time parsing logic causing false (milli) second count by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6239 * fix: crash when search view destroyed before suggestions fetched by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6335 * fix: download fails due to filename length by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6337 * fix: improve exoplayer scoping by @Pittvandewitt in https://github.com/libre-tube/LibreTube/pull/6307 * fix: same videos in channel fragment repeating 3/4 times by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6273 * fix: scroll state of trends not preserved by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6271 * fix: visibility of UI elements in Downloads by @nik-conder in https://github.com/libre-tube/LibreTube/pull/6314 * fix: welcome activity text in light mode by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6268 ## Refactor * refactor: Simplify serializable extensions by @Isira-Seneviratne in https://github.com/libre-tube/LibreTube/pull/6343 * refactor: add donation button to action menu by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6386 * refactor: improve bookmarks performance and reliability by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6385 * refactor: reduce amount of api calls for adding video to playlist by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6384 * refactor: simplify ProxyHelper.kt by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6383 ## Chore * chore: optimize imports by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6274 * chore: remove no longer needed safe dot calls by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6220 * chore: shorten Picture in Picture string in player menu by @Bnyro in https://github.com/libre-tube/LibreTube/pull/6301 ## New Contributors * @amandeepsinghjamwal made their first contribution in https://github.com/libre-tube/LibreTube/pull/6194 **Full Changelog**: https://github.com/libre-tube/LibreTube/compare/v0.24.0...v0.25.1