2
I Use This!
High Activity

News

Analyzed about 2 hours ago. based on code collected about 10 hours ago.
Posted about 2 years ago
Why is there a new release only six days after the previous one? Well, don’t expect anything big… just a few adjustments to the previous version and some long-awaited bugfixes for lists! That’s what you would expect from a point release, according to ... [More] semantic versioning, but we have never been that good at choosing release numbers, sorry about that. Before starting with the changelog, let us dedicate a brief moment to the suffering of Ukrainian people. We sincerely hope this cruel war will come to an end soon and your freedom will be respected. Fixed Lists on big screen might finally work as expected! Now if the initially loaded items do not fill the whole screen, NewPipe will load another chunk of them, instead of showing a loading indicator forever. This long-awaited fix was brought to you by none other than our hero from last release, @litetex. In the same pull request they also fixed some recurring crashes when scrolling through lists, caused by a misuse of the nasty Android RecyclerView. For those of you wondering, a RecyclerView is a special view component that allows showing many items of the same type in a list without overloading the system with too many views at the same time. It does so by binding only the items visible on the screen to the corresponding view component (for example a stream info item view), and when one such view is moved out on one side of the screen, it is recycled to be used again, once needed on the opposite side. The random crash that was fixed here was caused by a piece of code that every now and then tried to bind the same view component to multiple items at the same time, which is obviously not possible, hence the crash. Sorry for this out-of-section nerd talk, we just want to show you how hard it was to track this issue down. @Stypox (I, as the blog author, declare freedom from any conflict of interest) solved the graphical problem with the newly-introduced fast-forward/rewind arc not underlaying the system ui when playing in the fullscreen player. This was particularly visible when controls were hidden, since a non-animated border was shown around the animated arc. The blog post author would like to point out here what a great contributor @Stypox is. Talking about system borders… users that have a phone with cutouts (you know, those little notches that phone manufactures really grew to love lately) might have noticed a misplaced player in the previous version. It was caused by an attempt to improve watching videos in multi-window mode that evidently went wrong. This change, originally made by @Cheechaii, was reverted by @litetex. Thanks to both! Nerd Talk The error catching library, ACRA, was updated by the master of libraries, @TacoTheDank. Thank you! @litetex improved the image minimizer GitHub action they introduced a couple of weeks ago to reduce the image size of (phone) screenshots included in issue bodies and comments. @Stypox beat @TobiGr on time and got a grip on incrementing Android’s compileSdk from 30 (Android 11) to 31 (Android 12). This will allow updating more libraries to their newest versions in the future. @Stypox refactored a couple of lines in the big (we are talking BIG. Really, way too BIG) Player class. They would also like to point out that the whole team is committed to improving the messed-up player, which likes to spit out nasty bugs every once in a while due to its complexity. In a very distant future, expressions such as “the player is a hot pile of garbage” and “the code is a spaghetti monster of doom” might finally disappear! This is another step towards that future. Where to get this brand-new version NewPipe notifies you about new versions. You can download them when you press the notification, which will take you to the GitHub Releases page. If you use the F-Droid app, it, too, notifies you about updates for NewPipe. Please keep in mind that it can take F-Droid a while to update their repository. If you have problems installing the update, you may need to uninstall NewPipe and then install it afresh. (Make sure to backup data by exporting your database from the Settings > Content menu.) If you already installed NewPipe from F-Droid’s repository, to get this version of NewPipe you can do one of the following: Wait for them to update Switch to NewPipe’s custom repository by following the directions in the announcement post Note: If you installed NewPipe from GitHub Releases you will not have to uninstall NewPipe to switch to our custom repo. Just let it update your current version. Make sure you back up your data as mentioned in the warning at the top of the FAQ page! Now that you’ve (hopefully) updated, please let us know what your experience of the latest release is, especially bugs in need of fixing. As usual, you can reach out to us via IRC (#newpipe on Libera.Chat), open issues on GitHub or, ideally, use our built-in crash reporter to send us machine-readable issue reports. You can even send in fixes yourself. If you have any other questions, feel free to post them in the comments here and someone will reply to you. Also, thanks for reading it till the end! We put quite some time into these blog posts. [Less]
Posted about 2 years ago
Why is there a new release only six days after the previous one? Well, don’t expect anything big… just a few adjustments to the previous version and some long-awaited bugfixes for lists! That’s what you would expect from a point release, according to ... [More] semantic versioning, but we have never been that good at choosing release numbers. Sorry about that. Before starting with the changelog, let us dedicate a brief moment to the suffering of Ukrainian people. We sincerely hope this cruel war will come to an end soon and your freedom will be respected. Fixed Lists on big screens might finally work as expected! Now if the initially loaded items do not fill the whole screen, NewPipe will load another chunk of them, instead of showing a loading indicator forever. This long-awaited fix was brought to you by none other than our hero from the last release, @litetex. In the same pull request they also fixed some recurring crashes when scrolling through lists, caused by a misuse of the nasty Android RecyclerView. For those of you wondering, a RecyclerView is a special view component that allows showing many items of the same type in a list without overloading the system with too many views at the same time. It does so by binding only the items visible on the screen to the corresponding view component (for example a stream info item view). When one such view is moved out on one side of the screen, it is recycled to be used again, once needed on the opposite side. The random crash that was fixed here was caused by a piece of code that every now and then tried to bind the same view component to multiple items at the same time, which is obviously not possible. Hence the crash. Sorry for this out-of-section nerd talk, we just want to show you how hard it was to track this issue down. @Stypox (I, as the blog author, declare freedom from any conflict of interest) solved the graphical problem with the newly-introduced fast-forward/rewind arc not underlaying the system UI when playing in the fullscreen player. This was particularly visible when controls were hidden, since a non-animated border was shown around the animated arc. The blog post author would like to point out here what a great contributor @Stypox is. Talking about system borders… users that have a phone with cutouts (you know, those little notches that phone manufacturers have really grown to love lately) might have noticed a misplaced player in the previous version. It was caused by an attempt to improve watching videos in multi-window mode, that evidently went wrong. This change, originally made by @Cheechaii, was reverted by @litetex. Thanks to both! Nerd Talk The error catching library, ACRA, was updated by the master of libraries, @TacoTheDank. Thank you! @litetex improved the image minimizer GitHub action they introduced a couple of weeks ago to reduce the image size of (phone) screenshots included in issue bodies and comments. @Stypox beat @TobiGr on time in incrementing Android’s compileSdk from 30 (Android 11) to 31 (Android 12). This will allow updating more libraries to their newest versions in the future. @Stypox refactored a couple of lines in the big (we are talking BIG. Really, way too BIG) Player class. They would also like to point out that the whole team is quite committed to improving the messed-up player, which likes to spit out nasty bugs every once in a while due to its complexity. In a very distant future, expressions such as “the player is a hot pile of garbage” and “the code is a spaghetti monster of doom” might finally disappear! This is another step towards that future. Where to get this brand-new version NewPipe notifies you about new versions. You can download them when you press the notification, which will take you to the GitHub Releases page. If you use the F-Droid app, it, too, notifies you about updates for NewPipe. Please keep in mind that it can take F-Droid a while to update their repository. If you have problems installing the update, you may need to uninstall NewPipe and then install it afresh. (Make sure to backup data by exporting your database from the Settings > Content menu.) If you already installed NewPipe from F-Droid’s repository, to get this version of NewPipe you can do one of the following: Wait for them to update Switch to NewPipe’s custom repository by following the directions in the announcement post Note: If you installed NewPipe from GitHub Releases you will not have to uninstall NewPipe to switch to our custom repo. Just let it update your current version. Make sure you back up your data as mentioned in the warning at the top of the FAQ page! Now that you’ve (hopefully) updated, please let us know what your experience of the latest release is, especially bugs in need of fixing. As usual, you can reach out to us via IRC (#newpipe on Libera.Chat), open issues on GitHub or, ideally, use our built-in crash reporter to send us machine-readable issue reports. You can even send in fixes yourself. If you have any other questions, feel free to post them in the comments here and someone will reply to you. Also, thanks for reading it till the end! We put quite some time into these blog posts. [Less]
Posted about 2 years ago
Oh wow, would you look at the time! Happy new year from the NewPipe team! We are “starting 2022 off” with some great additions: YouTube-like rewind/fast-forward, pinned comments, and searchable preferences! Apart from these, we have a bucket-load of ... [More] fixes and improvements that will hopefully make your NewPipe experience better than ever. This blog post is dedicated to the master meister @litetex. Read on and it will be quite evident why. New We added support for opening another PeerTube instance from outside the app: FSFE-Tube. Enjoy the videos there, and thank @mhmdanas for implementing this. Thanks to the work of @dkramer95, you can now enjoy a nice pin icon next to a pinned comment below a video. Thank you for this very nice first contribution to our app, we look forward to more! Look at the pin. LOOK AT IT! The big change for this release will be very obvious to you the moment you double tap to seek on a video. We now have YouTube-like rewind and fast-forward behaviour! Apart from the cool visuals, what this means is that you don’t have to keep double-tapping furiously to execute every single jump in time. Instead, you initiate the action with a double tap, and then every single tap after that executes another jump in time. This ‘single tap window’ lasts until the animation finishes, after which you have to double tap to initiate another one. This huge quality-of-life improvement to seeking was brought to you by @vkay94. The PR was kept up to date by @Stypox, and then finally pushed across the finish line by @litetex. Thanks to everyone involved in this major effort! Seeking in action! Yet another major change, thanks to @litetex, is that the app settings are now searchable! And it’s not just any old search, it’s fuzzy search! That means it’s really cute and cuddly. No really. It’s an ISO standard and everything. Oh, and it also means you don’t need to type in the exact letters for a particular option. Close enough words also show you the correct results. Also, the Clear reCAPTCHA cookies option was moved from Content to History and cache, and changed to being greyed out by default instead of being hidden by default, so that it can be shown in the search results. Improved Are you tired of the toast notifications telling you that some sort of player error occurred, but having no idea what happened, or how to report that error? Well, in addition to the error report page and the error snackbar at the bottom, now NewPipe has a third way to show errors: it generates a silent system notification. You just need to tap on it to report the error to us, all thanks to @Stypox, who also took the opportunity to restructure and improve the rest of the error-reporting-related code. @litetex implemented another improvement to error handling: If the app tried to open a file manager, but no SAF-compatible file manager was found, NewPipe just crashed. Now it tells you what went wrong and how to fix it. Based on feedback from an accessibility-enabled user, @litetex stopped screen readers from telling you over and over and over again that there is a “Video preview thumbnail” when scrolling through lists. We’ve got another improvement for people with slow Internet or those facing a period of poor connection. The player used to “close with an error” (read: crash) if it took too long to buffer during a livestream. This happened because it just fell too far behind the edge of the livestream. To fix and improve this, @TiA4f8R implemented a two-fold change. The first was to increase the time period before the player is considered to have ‘fallen too far behind’, and if that still happens, the second was to simply drop the current play time and jump ahead to the edge of the livestream, skipping the un-buffered section entirely. No more player crashes! Never! Right guys? Right. Fixed As the first entry in our big series of fixes this release, a nasty bug a lot of our users faced was that switching from one player type to another caused the playback to restart from the beginning. This has been fixed by @litetex. @Stypox fixed the order of local search results from your search history, so now they are back to being ordered by creation date instead of alphabetical order (which made it seem like new entries weren’t being added to the search result history database, unless you searched for a video titled “AAAA” or something). When a video link was opened with a timestamp URL parameter that had more than 3 digits, NewPipe ignored the 4th and higher digits. This meant that the app took you to the wrong timestamp. For example, 1001 seconds (16 minutes and 41 seconds) would be parsed as 1 second instead. @mhmdanas has fixed this. @Stypox fixed many different crashes where the code expected the player’s queue to be not null, but where it was, you guessed it, null. @Cheechaii introduced #respect into the app. Now the player respects display cutouts (like notches) when playing in multi-window mode, whereas previously, black bars were shown. Speaking of hashtags, @Jaspann made their first contribution to a public open source project (Congratulations!): They fixed hashtags that use non-English characters. Thank you! @Jaspann, in their second contribution, fixed showing the PeerTube-specific sub-channel icon on non-PeerTube services, where it makes no sense. Sometimes, the keyboard would stop working when using the search field after the video page was closed, no matter how hard you smashed the keys. @litetex has fixed this to prevent you from damaging your screen. Not really their first or second contribution to the project, but a welcome one nonetheless. When items were added to the queue using the long-press menu in lists, it was clear that there was some info missing when the queue was opened. This is because the full stream info was loaded only when its page was opened. Thanks to @Douile, now the complete stream info is loaded when it is added to the queue from a list. If you tried to share a playlist while it was still loading (you maniac) it would cause the app to crash, which has been fixed by @TiA4f8R. @Stypox added the app icon to the fastlane metadata folder, so that the F-Droid app and website start showing the icon again. Ooh. This is a tricky one. If a stream other than the first one in the queue was playing, and its resolution was changed, or the player type was changed (e.g. popup -> main player), the app would suddenly abandon that stream and start playing the first stream in the queue instead. This weird bug, caused by an ExoPlayer update, has been fixed by @TiA4f8R. If you tried to view the channel page of an item in the queue whose channel page you hadn’t already viewed before, you would get a network error, which has been fixed by @ktprograms. Localisation A Polish translation of the README was added by @Radplay. Thank you! You want more languages? Well, we also have one in Traditional Chinese (used in Taiwan) now, added by @akamayu-ouo. Thank you too! @litetex fixed the broken link of the “Get it on F-Droid” button in the English README on GitHub, and reduced its size to a sane value in all the translated READMEs. Talking about broken links, @TobiGr fixed a link in the English README linking to the Portuguese README. @albertomosconi moved the translated README files into the doc folder to reduce visual clutter in the repo, and updated the links accordingly. Nerd Talk Dependabot updated spotbugs-annotations from 4.5.0 to 4.5.3. What happened, dependabot? Just one update? You’re getting lazy these days. Tut tut tut! (Pro tip: you can make fun of robots all day, because it’s not like they can ever retaliate, right? Probably. At least, we think so… Okay, maybe this wasn’t such a good idea… ACK! Why does that toaster suddenly have four legs!? Stay away! STAY AWAY!) @litetex disabled an unreliable test for the SoundCloud stream extractor. Who even needs tests? (Just kidding, they’re a cornerstone of good programming. Eat your broccoli Write your unit tests, kids.) @XiangRongLin ensured that search history entries in tests are in the correct order, fixing the sometimes-failing-sometimes-passing CI pipeline. Keep in mind what we said about tests above, they are important! YouTube removed the public dislike data in December, so we used a temporary workaround by calculating the dislikes using the average rating. But now that that is gone too, @litetex removed the code used to extract YouTube dislikes, and made several other improvements: Fixed the exception caused when a video had zero likes. De-duplicated a large amount of code in the service-specific stream extractors by using methods common to all of them. Also changed the YouTube extractor tests to reflect the removal of the dislike count (we really like tests! No, we’re not related to Hermione Granger in any way, but thanks for asking). @litetex, while modifying the dislike tests, migrated the unit tests from JUnit 4 to JUnit 5, and changed related code accordingly. @TacoTheDank came in with the usual whirlwind of library updates and associated changes. The biggest change here is that we now compile with Java 11 (because we compile on SDK 30). This is a good thing… we think. (We hope.) Other than that: Sonarqube: 3.1.1 -> 3.3 ktlint: 0.40.0 -> 0.43.2 Checkstyle: 8.38 -> 9.2 Prepare for trouble, and make it double! The nice fellow above updated yet another bunch of libraries and also removed the unused Espresso testing library: Gradle 7.1.1 -> 7.3.1 google-auto-service 1.0 -> 1.0.1 Mockito 3.6.0 -> 4.0.0 ConstraintLayout 2.0.4 -> 2.1.2 Google Material 1.2.1 -> 1.4.0 Jsoup 1.13.1 -> 1.14.3 RxJava3 3.0.7 -> 3.0.13 PrettyTime 5.0.1.Final -> 5.0.2.Final AndroidX Test JUnit 1.1.2 -> 1.1.3 @XiangRongLin added the SonarList CI job back to the test run setup, which had been disabled earlier due to some issues. @TobiGr made some small improvements to code quality and readability here and there. @litetex configured the CI to upload test reports when an error occurs in CI runs, because the truncated stacktrace shown by default doesn’t provide enough info sometimes. @XiangRongLin switched the JUnit asserts to AssertJ ones in HistoryRecordManagerTest to obtain more detailed error messages, and converted the SearchHistoryEntry Java class to a Kotlin data class for the same reason. @mhmdanas fixed a false Android Studio warning. @TacoTheDank collected all the untranslatable strings from here and there into a single donottranslate.xml file for easy access and readability, and also removed the redundant translatable XML attribute from settings key strings. @TacoTheDank, the friendly neighbourhood LibraryMan, updated Gradle (7.3.1 -> 7.3.3) and Checkstyle (9.2 -> 9.2.1), and, more interestingly, fixed some hidden Gradle deprecations. We have no clue why they were hidden instead of being shown and explained up front in the changelog or release notes. @Poussinou added a link to the donation section of the NewPipe website to the Sponsors section on the GitHub repo. @mhmdanas made a minor edit to the License section of the README to make it more readable. Because that’s what the README is for. Reading. In case that wasn’t clear. @mhmdanas made another minor edit, this time to the trigger file of the CI workflow, so it doesn’t run unnecessarily. (NO, CI, the app won’t suddenly break if someone makes a spelling error in a README. Stop running pointless tests!) Where to get this brand-new version NewPipe notifies you about new versions. You can download them when you press the notification, which will take you to the GitHub Releases page. If you use the F-Droid app, it, too, notifies you about updates for NewPipe. Please keep in mind that it can take F-Droid a while to update their repository. If you have problems installing the update, you may need to uninstall NewPipe and then install it afresh. (Make sure to backup data by exporting your database from the Settings > Content menu.) If you already installed NewPipe from F-Droid’s repository, to get this version of NewPipe you can do one of the following: Wait for them to update Switch to NewPipe’s custom repository by following the directions in the announcement post Note: If you installed NewPipe from GitHub Releases you will not have to uninstall NewPipe to switch to our custom repo. Just let it update your current version. Make sure you back up your data as mentioned in the warning at the top of the FAQ page! Now that you’ve (hopefully) updated, please let us know what your experience of the latest release is, especially bugs in need of fixing. As usual, you can reach out to us via IRC (#newpipe on Libera.Chat), open issues on GitHub or, ideally, use our built-in crash reporter to send us machine-readable issue reports. You can even send in fixes yourself. If you have any other questions, feel free to post them in the comments here and someone will reply to you. Also, thanks for reading it till the end! We put quite some time into these blog posts. [Less]
Posted about 2 years ago
Oh wow would you look at the time. Happy new year from the NewPipe team! We are “starting 2022 off” with some great additions: YouTube-like rewind/fast-forward, pinned comments, and searchable preferences! Apart from these, we have a bucket-load of ... [More] fixes and improvements that will hopefully make your NewPipe experience better than ever. This blog post is dedicated to the master meister @litetex. Read on and it will be quite evident why. New We added support for opening another PeerTube instance from outside the app: FSFE-Tube. Enjoy the videos there, and thank @mhmdanas for implementing this. Thanks to the work of @dkramer95, you can now enjoy a nice pin icon next to a pinned comment below a video. Thank you for this very nice first contribution to our app, we look forward to more! Look at the pin. LOOK AT IT! The big change for this release will be very obvious to you the moment you double tap to seek on a video. We now have YouTube-like rewind and fast-forward behaviour! Apart from the cool looking visuals, what this means is that you don’t have to keep furiously double tapping to execute every single jump in time. Instead, you initiate the action with a double tap, and then every single tap after that executes another jump in time. This ‘single tap window’ lasts until the animation finishes, after which you have to double tap to initiate another one. This huge quality-of-life improvement to seeking was brought to you by @vkay94. The PR was kept up to date by @Stypox, and then finally pushed across the finish line by @litetex. Thanks to everyone involved in this major effort! Seeking in action! Yet another major change, thanks to @litetex, is that the app settings are now searchable! And it’s not just any old search, it’s fuzzy search! That means it’s really cute and cuddly. No really. It’s an ISO standard and everything. Oh, and it also means you don’t need to type in the exact letters for a particular option. Close enough words also show you the correct results. Also, the Clear reCAPTCHA cookies option was moved from Content to History and cache, and changed to being greyed out by default instead of being hidden by default, so that it can be shown in the search results. Improved Are you tired of the toast notifications telling you that an error occurred, but having no idea what happened, or how to report that error? Well, in addition to the error report page and the error snackbar at the bottom, now NewPipe has a third way to show errors: it generates a silent system notification. You just need to tap on it to report the error to us, all thanks to @Stypox, who also took the opportunity to restructure and improve the rest of the error reporting related code. @litetex implemented another improvement to error handling: If the app tried to open a file manager, but no SAF-compatible file manager was found, NewPipe just crashed. Now it tells you what went wrong and how to fix it. Based on feedback from an accessibility-enabled user, @litetex stopped screen readers from telling you over and over and over again that there is a “Video preview thumbnail” when scrolling through lists. We got another improvement for people with slow Internet or those facing a period of poor connection. The player used to “close with an error” (speak: crash) if the player took too long to buffer during a livestream. This happened because it just fell too far behind the edge of the livestream. To fix and improve this, @TiA4f8R implemented a two-fold change. The first was to increase the time period before the player is considered to have fallen too far behind, and the second was to simply drop the current play time and jump ahead to the edge of the livestream, skipping the un-buffered section entirely. No more player crashes! Never! Right guys? Fixed As the first entry in our big series of fixes this release, a nasty bug a lot of our users faced was that switching from one player type to another caused the playback to restart from the beginning. This has been fixed by @litetex. @Stypox fixed the order of local search results from your search history, so now they are back to being ordered by creation date instead of alphabetical order (which made it seem like new entries weren’t being added to the search result history database, unless you searched for a video titled “AAAA” or something). When a video link was opened with a timestamp URL parameter that had more than 3 digits, NewPipe ignored the 4th and higher digits. This meant that the app took you to the wrong timestamp. For example, 1001 seconds (16 minutes and 41 seconds) would be parsed as 1 second instead. @mhmdanas has fixed this. @Stypox fixed many different crashes where the code expected the player’s queue to be not null but it was, indeed, null. @Cheechaii introduced #respect into the app. Now the player respects display cutouts (like notches) when playing in multi-window mode, whereas previously, black bars were shown. Speaking of hashtags, @Jaspann made their first contribution to a public open source project (Congratulations!): They fixed hashtags that use non-English characters. Thank you! @Jaspann, in their second contribution, fixed showing the PeerTube-specific sub-channel icon on non-PeerTube services, where it makes no sense. Sometimes, the keyboard would stop working when using the search field after the video page was closed, no matter how hard you smashed the keys. @litetex has fixed this to prevent you from damaging your screen. Not really their first/second contribution to the project, but a welcome one nonetheless. When items were added to the queue using the long-press menu in lists, it was clear that there was some info missing when the queue was opened. This is because the full stream info was loaded only when its page was opened. Thanks to @Douile, now the complete stream info is loaded when it is added to the queue from a list. If you tried to share a playlist while it was still loading (you maniac) it would cause the app to crash, which has been fixed by @TiA4f8R. @Stypox added the app icon to the fastlane metadata folder, so that the F-Droid app and website start showing the icon again. Ooh. This is a tricky one. If a stream other than the first one in the queue was playing, and its resolution was changed, or the player type was changed (e.g. popup -> main player), the app would suddenly abandon that stream and start playing the first stream in the queue instead. This weird bug, caused by an ExoPlayer update, has been fixed by @TiA4f8R. If you tried to view the channel page of an item in the queue whose channel page you hadn’t already viewed before, you would get a network error, which has been fixed by @ktprograms. Localisation A Polish translation of the README was added by @Radplay. Thank you! You want more languages? Well, we also have one in Traditional Chinese (used in Taiwan) now, added by @akamayu-ouo. Thank you too! @litetex fixed the broken link of the “Get it on F-Droid” button in the English README on GitHub, and reduced its size to a sane value in all the translated READMEs. Talking about broken links, @TobiGr fixed a link in the English README linking to the Portuguese README. @albertomosconi moved the translated README files into the doc folder, and updated the links accordingly. Nerd Talk Dependabot updated spotbugs-annotations from 4.5.0 to 4.5.3. @litetex disabled an unreliable test for the SoundCloud stream extractor. Who even needs tests? (Just kidding, they’re a cornerstone of good programming. Eat your broccoli Write your unit tests, kids.) @XiangRongLin ensured that search history entries in tests are in the correct order, fixing the sometimes-failing-sometimes-passing CI pipeline. Remember what we said about tests above, they are important! YouTube removed the public dislike data in December, so we used a temporary workaround by calculating the dislikes using the average rating. But now that that is gone too, @litetex removed the code used to extract YouTube dislikes, and made several other improvements: Fixed the exception caused when a video had zero likes. De-duplicated a large amount of code in the service-specific stream extractors by using methods common to all of them. Also changed the YouTube extractor tests to reflect the removal of the dislike count (we really like tests!). @litetex, while touching the dislike tests, migrated the unit tests from JUnit 4 to JUnit 5, and changed related code accordingly. @TacoTheDank came in with the usual whirlwind of library updates and associated changes. The biggest change here is that we now compile with Java 11 (because we compile on SDK 30). This is a good thing… we think. (We hope.) Other than that: Sonarqube: 3.1.1 -> 3.3 ktlint: 0.40.0 -> 0.43.2 Checkstyle: 8.38 -> 9.2 Prepare for trouble, and make it double! The nice fellow above updated yet another bunch of libraries and also removed the unused Espresso testing library: Gradle 7.1.1 -> 7.3.1 google-auto-service 1.0 -> 1.0.1 Mockito 3.6.0 -> 4.0.0 ConstraintLayout 2.0.4 -> 2.1.2 Google Material 1.2.1 -> 1.4.0 Jsoup 1.13.1 -> 1.14.3 RxJava3 3.0.7 -> 3.0.13 PrettyTime 5.0.1.Final -> 5.0.2.Final AndroidX Test JUnit 1.1.2 -> 1.1.3 @XiangRongLin added the SonarList CI job back to the test run setup, which had been disabled earlier due to some issues. @TobiGr made some small improvements to code quality and readability here and there. @litetex configured the CI to upload test reports when an error occurs, because the truncated stacktrace shown by default doesn’t provide enough info sometimes. @XiangRongLin switched the JUnit asserts with AssertJ ones in HistoryRecordManagerTest to obtain more detailed error messages, and converted the SearchHistoryEntry Java class to a Kotlin data class for the same reason. @mhmdanas fixed a false Android Studio warning. @TacoTheDank collected all the untranslatable strings from here and there into a single donottranslate.xml file for easy access and readability, and also removed the redundant translatable XML attribute from settings key strings. @TacoTheDank, the friendly neighbourhood LibraryMan, updated Gradle (7.3.1 -> 7.3.3) and Checkstyle (9.2 -> 9.2.1), and, more interestingly, fixed some hidden Gradle deprecations. We have no clue why they were hidden instead of being shown and explained up front in the changelog or release notes. @Poussinou added a link to the donation section of the NewPipe website to the Sponsors section on the GitHub repo. @mhmdanas made a minor edit to the License section of the README to make it more readable. Because that’s what the README is for. Reading. In case that wasn’t clear yet. @mhmdanas made another minor edit, this time to the trigger file of the CI workflow, so it doesn’t run unnecessarily. Where to get this brand-new version NewPipe notifies you about new versions. You can download them when you press the notification, which will take you to the GitHub Releases page. If you use the F-Droid app, it, too, notifies you about updates for NewPipe. Please keep in mind that it can take F-Droid a while to update their repository. If you have problems installing the update, you may need to uninstall NewPipe and then install it afresh. (Make sure to backup data by exporting your database from the Settings > Content menu.) If you already installed NewPipe from F-Droid’s repository, to get this version of NewPipe you can do one of the following: Wait for them to update Switch to NewPipe’s custom repository by following the directions in the announcement post Note: If you installed NewPipe from GitHub Releases you will not have to uninstall NewPipe to switch to our custom repo. Just let it update your current version. Make sure you back up your data as mentioned in the warning at the top of the FAQ page! Now that you’ve (hopefully) updated, please let us know what your experience of the latest release is, especially bugs in need of fixing. As usual, you can reach out to us via IRC (#newpipe on Libera.Chat), open issues on GitHub or, ideally, use our built-in crash reporter to send us machine-readable issue reports. You can even send in fixes yourself. If you have any other questions, feel free to post them in the comments here and someone will reply to you. Also, thanks for reading it till the end! We put quite some time into these blog posts. [Less]
Posted about 2 years ago
Hello, did you order a hot fix update? Because we have one here, it is steaming and ready. YouTube broke. We are very sorry about this, but YouTube changed a parameter in their video player decryption and the code we created to decrypt the input ... [More] from YouTube broke. @AbduAmeen created a fix together with @SebastianSong, and @TobiGr worked with them to get it merged in the Extractor. Thanks to all three of them for doing this so quickly. Quick note for the next time this happens We, as every development team, feel great knowing our app is used by many people. We mostly notice this when it breaks in a major way, of course. This time it was a bit too much though. We received 74 comments in 10 hours (!) under the one thread for this issue, 18 duplicate threads (!!) of this same issue and quite some comments on various (!!!) blog posts regarding NewPipe being broken. The problem with having that many comments is that the development team needs specific information to figure out the cause of the issue. If so many messages are sent to us, we are potentially missing the one important hint to find the cause. This means it slows down the development of the fix, since every single message might need to be checked and new ones keep coming in when they aren’t needed. It would be great if you can check the GitHub issues the next time NewPipe breaks (the comment section is not the way to report issues) and see if one already exists for the broken thing before creating a new one. And a big thanks to everyone who didn’t contribute to this madness, you are the real heroes in this storm <3. Closing note This is the only change in this release, we have loads of new changes coming up, stay tuned for them. Until then, have a lovely time! Where to get this brand-new version NewPipe notifies you about new versions. You can download them when you press the notification, which will take you to the GitHub Releases page. If you use the F-Droid app, it, too, notifies you about updates for NewPipe. Please keep in mind that it can take F-Droid a while to update their repository. If you have problems installing the update, you may need to uninstall NewPipe and then install it afresh. (Make sure to backup data by exporting your database from the Settings > Content menu.) If you already installed NewPipe from F-Droid’s repository, to get this version of NewPipe you can do one of the following: Wait for them to update Switch to NewPipe’s custom repository by following the directions in the announcement post Note: If you installed NewPipe from GitHub Releases you will not have to uninstall NewPipe to switch to our custom repo. Just let it update your current version. Make sure you back up your data as mentioned in the warning at the top of the FAQ page! Now that you’ve (hopefully) updated, please let us know what your experience of the latest release is, especially bugs in need of fixing. As usual, you can reach out to us via IRC (#newpipe on Libera.Chat), open issues on GitHub or, ideally, use our built-in crash reporter to send us machine-readable issue reports. You can even send in fixes yourself. If you have any other questions, feel free to post them in the comments here and someone will reply to you. Also, thanks for reading it till the end! We put quite some time into these blog posts. [Less]
Posted over 2 years ago
This release has been baking for quite a while, hasn’t it? We’ve all been busy with real life, and the world moved on in the meantime. So this release brings you both several new features and some much needed bug fi - “SORRY, SOMETHING WENT WRONG” - ... [More] xes, excuse us, such as for YouTube’s removal of dislikes, which caused a snackbar error on every YouTube video, and for PeerTube’s new short URLs, which are the new default since v3.3.0. We also have some quality-of-life fixes, like adding more options in menus at various places, some UI changes for the feed and the player, and using ExoPlayer’s default buffer values for videos. Let us know if this last change helps or hurts your viewing experience. New @FireMasterK added support in the Extractor for description snippets (which you can see in search results on YouTube) in lists of trending videos and search results. @mhmdanas added support for opening y2u.be links to the Extractor. It’s a YouTube link shortener found in some video descriptions. But we don’t stand for shortened links, do we? No! We want the actual damn URL, thank you very much. Snatches video ID from shortened URL and discards the rest. @KalleStruik added an “Add to playlist” option in the NewPipe Open menu shown when a video link is tapped in another app. Can you spot the new option? @vhouriet added a “Check for updates” option in Update settings for NewPipe versions downloaded from GitHub, tapping which forces the app to search for new updates. @nschulzke added the long-press option to “Mark as watched” videos in playlists. Earlier this option was only available in feeds. Improved When tapping on a timestamp in the description, the popup player opens and a toast saying “Playing in popup mode” is shown. This toast was shown even if the popup player was already open. @vhouriet fixed this redundant toast. No unnecessary toasts for you anymore, even if you like toast. A very similar fix was also added by @vhouriet for the background player toast. Now it only shows up if the background player isn’t already open, and not every time the button is tapped. @ktprograms added the “Show channel details” option to the long-press menu for queue items, for both ways of accessing the queue: using the Queue button in the main player, and when tapping the notification to open the Queue activity. @iambaji ensured that the status of the “Show watched items” toggle is saved, so that it doesn’t get reset every time the app is opened. @TiA4f8R replaced the native Share Sheet on EMUI when selecting text in the app with the Android Share Sheet, which provides more functionality, such as the ability to copy to clipboard. @litetex improved the layout of the playback speed controls dialog in landscape mode so that there is no need to scroll anymore, except on devices with very small screens. Disclaimer: It is not recommended to run NewPipe on your smart watch, though we dare you to try. @litetex also brought a major improvement to the feed refreshing experience! Now when you refresh, new items show with a prominent border around them to distinguish them from existing items. Moreover, if you are positioned partly down the list, you get a big bold button - “New Feed Items” - to instantly take you to the top. Fixed And now, for the all-important YouTube dislike count fix. Thanks to @B0pol who has fixed the extraction of the dislike count (it’s based on a calculation using other values for now, until even that avenue is closed by YouTube), you won’t be bothered anymore by an error snackbar on every video you open. You’re most welcome. @B0pol fixed PeerTube extraction for instances that have been updated to version 3.3.0 and above. These instances use short links (e.g. /w/ instead of /watch/) as their default URL path for everything (videos, channels, playlists, etc.), which NewPipe now supports. @0x416c6578 fixed a bug where the Shuffle button was shown as active even though shuffle mode was off. If a video finished while the app was in the background, resuming the app would cause it to replay. This was fixed by @litetex. Nerd Talk dependabot updates: Bump spotbugs-annotations from 4.4.1 to 4.5.0 Bump gson from 2.8.8 to 2.8.9 The hardcoded SoundCloud client ID was updated yet again by TobiG– wait! It was someone else this time! Who is this mystery person, you ask? Find out, on the next episode of… Dragon Ball Z. … just kidding, it was @opusforlife2. And then @litetex had to update it again because this release took too long. :’( @TobiGr improved the readability of some code in the CommentsInfo class. @litetex fixed several broken tests in the Extractor. @TacoTheDank updated some libraries and related code: AndroidX Media library: 1.3.1 -> 1.4.2 -> 1.4.3 Android Gradle Plugin: 7.0.2 -> 7.0.3 Kotlin: 1.5.30 -> 1.5.31 RecyclerView: 1.1.0 -> 1.2.1 Groupie: 2.9.0 -> 2.10.0 @litetex deduplicated the drawer code in MainActivity. @litetex also corrected the TAG string used in the NavigationHelper class. @TacoTheDank cleaned up the two .gitignore files by deleting one of them and adding relevant APK build directories to the other. @TacoTheDank also removed the deprecated setUserVisibleHint function and changed the related code accordingly. @TacoTheDank also also (they evidently did too much work this release) updated the fragment pager workaround code to include changes from a new version of AndroidX’s Fragment library. @TiA4f8R replaced the EditText and TextView classes with their AppCompat variants for better compatibility with older Android versions. @litetex replaced the deprecated with function with using in Gradle settings. @Redirion updated ExoPlayer from v2.12.3 to v2.14.2 along with fixing most of the deprecations that came with this update, and made use of the new MediaParser feature that has been added in ExoPlayer 2.14.0 for Android 11 and above. The ExoPlayer update also allowed @TobiGr to remove the JCenter repository completely from the repo. @Redirion re-added the SHA-256 checksum for Gradle Wrapper, which was removed some years ago due to an Android Studio bug. @Redirion removed the custom LoadController used by the app in favour of the DefaultLoadcontrol used by ExoPlayer. This means that the start/resume buffer is now 2.5s instead of 0.5s. A speed-based playback condition was also removed in favour of ExoPlayer’s default behaviour. @litetex added better player error handling to debug builds of the app. Now those annoying and unhelpful “Unrecoverable player error occurred” toast messages can be replaced by a proper crash log with a toggle in Debug settings. Another added toggle lets you add a button to the video details screen to manually crash the player for testing purposes. And finally, @litetex cleaned up miscellaneous code in multiple places in different files. Where to get this brand-new version NewPipe notifies you about new versions. You can download them when you press the notification, which will take you to the GitHub Releases page. If you use the F-Droid app, it, too, notifies you about updates for NewPipe. Please keep in mind that it can take F-Droid a while to update their repository. If you have problems installing the update, you may need to uninstall NewPipe and then install it afresh. (Make sure to backup data by exporting your database from the Settings > Content menu.) If you already installed NewPipe from F-Droid’s repository, to get this version of NewPipe you can do one of the following: Wait for them to update Switch to NewPipe’s custom repository by following the directions in the announcement post Note: If you installed NewPipe from GitHub Releases you will not have to uninstall NewPipe to switch to our custom repo. Just let it update your current version. Make sure you back up your data as mentioned in the warning at the top of the FAQ page! Now that you’ve (hopefully) updated, please let us know what your experience of the latest release is, especially bugs in need of fixing. As usual, you can reach out to us via IRC (#newpipe on Libera.Chat), open issues on GitHub or, ideally, use our built-in crash reporter to send us machine-readable issue reports. You can even send in fixes yourself. If you have any other questions, feel free to post them in the comments here and someone will reply to you. Also, thanks for reading it till the end! We put quite some time into these blog posts. [Less]
Posted over 2 years ago
This release has been baking for quite a while, hasn’t it? We’ve all been busy with real life, and the world moved on in the meantime. So this release brings you both several new features and some much needed bug fi - “SORRY, SOMETHING WENT WRONG” - ... [More] xes, excuse us, such as for YouTube’s removal of dislikes, which caused a snackbar error on every YouTube video, and for PeerTube’s new short URLs, which are the new default since v3.3.0. We also have some quality-of-life fixes, like adding more options in menus at various places, some UI changes for the feed and the player, and using ExoPlayer’s default buffer values for videos. Let us know if this last change helps or hurts your viewing experience. New @FireMasterK added support in the Extractor for description snippets (which you can see in search results on YouTube) in lists of trending videos and search results. @mhmdanas added support for opening y2u.be links to the Extractor. It’s a YouTube link shortener found in some video descriptions. But we don’t stand for shortened links, do we? No! We want the actual damn URL, thank you very much. Snatches video ID from shortened URL and discards the rest. @KalleStruik added an “Add to playlist” option in the NewPipe Open menu shown when a video link is tapped in another app. Can you spot the new option? @vhouriet added a “Check for updates” option in Update settings for NewPipe versions downloaded from GitHub, tapping which forces the app to search for new updates. @nschulzke added the long-press option to “Mark as watched” videos in playlists. Earlier this option was only available in feeds. Improved When tapping on a timestamp in the description, the popup player opens and a toast saying “Playing in popup mode” is shown. This toast was shown even if the popup player was already open. @vhouriet fixed this redundant toast. No unnecessary toasts for you anymore, even if you like toast. A very similar fix was also added by @vhouriet for the background player toast. Now it only shows up if the background player isn’t already open, and not every time the button is tapped. @ktprograms added the “Show channel details” option to the long-press menu for queue items, for both ways of accessing the queue: using the Queue button in the main player, and when tapping the notification to open the Queue activity. @iambaji ensured that the status of the “Show watched items” toggle is saved, so that it doesn’t get reset every time the app is opened. @TiA4f8R replaced the native Share Sheet on EMUI when selecting text in the app with the Android Share Sheet, which provides more functionality, such as the ability to copy to clipboard. @litetex improved the layout of the playback speed controls dialog in landscape mode so that there is no need to scroll anymore, except on devices with very small screens. Disclaimer: It is not recommended to run NewPipe on your smart watch, though we dare you to try. @litetex also brought a major improvement to the feed refreshing experience! Now when you refresh, new items show with a prominent border around them to distinguish them from existing items. Moreover, if you are positioned partly down the list, you get a big bold button - “New Feed Items” - to instantly take you to the top. Fixed And now, for the all-important YouTube dislike count fix. Thanks to @B0pol who has fixed the extraction of the dislike count (it’s based on a calculation using other values for now, until even that avenue is closed by YouTube), you won’t be bothered anymore by an error snackbar on every video you open. You’re most welcome. @B0pol fixed PeerTube extraction for instances that have been updated to version 3.3.0 and above. These instances use short links (e.g. /w/ instead of /watch/) as their default URL path for everything (videos, channels, playlists, etc.), which NewPipe now supports. @0x416c6578 fixed a bug where the Shuffle button was shown as active even though shuffle mode was off. If a video finished while the app was in the background, resuming the app would cause it to replay. This was fixed by @litetex. Nerd Talk dependabot updates: Bump spotbugs-annotations from 4.4.1 to 4.5.0 Bump gson from 2.8.8 to 2.8.9 The hardcoded SoundCloud client ID was updated yet again by TobiG– wait! It was someone else this time! Who is this mystery person, you ask? Find out, on the next episode of… Dragon Ball Z. … just kidding, it was @opusforlife2. And then @litetex had to update it again because this release took too long. :’( @TobiGr improved the readability of some code in the CommentsInfo class. @litetex fixed several broken tests in the Extractor. @TacoTheDank updated some libraries and related code: AndroidX Media library: 1.3.1 -> 1.4.2 -> 1.4.3 Android Gradle Plugin: 7.0.2 -> 7.0.3 Kotlin: 1.5.30 -> 1.5.31 RecyclerView: 1.1.0 -> 1.2.1 Groupie: 2.9.0 -> 2.10.0 @litetex deduplicated the drawer code in MainActivity. @litetex also corrected the TAG string used in the NavigationHelper class. @TacoTheDank cleaned up the two .gitignore files by deleting one of them and adding relevant APK build directories to the other. @TacoTheDank also removed the deprecated setUserVisibleHint function and changed the related code accordingly. @TacoTheDank also also (they evidently did too much work this release) updated the fragment pager workaround code to include changes from a new version of AndroidX’s Fragment library. @TiA4f8R replaced the EditText and TextView classes with their AppCompat variants for better compatibility with older Android versions. @litetex replaced the deprecated with function with using in Gradle settings. @Redirion updated ExoPlayer from v2.12.3 to v2.14.2 along with fixing most of the deprecations that came with this update, and made use of the new MediaParser feature that has been added in ExoPlayer 2.14.0 for Android 11 and above. The ExoPlayer update also allowed @TobiGr to remove the JCenter repository completely from the repo. @Redirion re-added the SHA-256 checksum for Gradle Wrapper, which was removed some years ago due to an Android Studio bug. @Redirion removed the custom LoadController used by the app in favour of the DefaultLoadcontrol used by ExoPlayer. This means that the start/resume buffer is now 2.5s instead of 0.5s. A speed-based playback condition was also removed in favour of ExoPlayer’s default behaviour. @litetex added better player error handling to debug builds of the app. Now those annoying and unhelpful “Unrecoverable player error occurred” toast messages can be replaced by a proper crash log with a toggle in Debug settings. Another added toggle lets you add a button to the video details screen to manually crash the player for testing purposes. And finally, @litetex cleaned up miscellaneous code in multiple places in different files. Where to get this brand-new version NewPipe notifies you about new versions. You can download them when you press the notification, which will take you to the GitHub Releases page. If you use the F-Droid app, it, too, notifies you about updates for NewPipe. Please keep in mind that it can take F-Droid a while to update their repository. If you have problems installing the update, you may need to uninstall NewPipe and then install it afresh. (Make sure to backup data by exporting your database from the Settings > Content menu.) If you already installed NewPipe from F-Droid’s repository, to get this version of NewPipe you can do one of the following: Wait for them to update Switch to NewPipe’s custom repository by following the directions in the announcement post Note: If you installed NewPipe from GitHub Releases you will not have to uninstall NewPipe to switch to our custom repo. Just let it update your current version. Make sure you back up your data as mentioned in the warning at the top of the FAQ page! Now that you’ve (hopefully) updated, please let us know what your experience of the latest release is, especially bugs in need of fixing. As usual, you can reach out to us via IRC (#newpipe on Libera.Chat), open issues on GitHub or, ideally, use our built-in crash reporter to send us machine-readable issue reports. You can even send in fixes yourself. If you have any other questions, feel free to post them in the comments here and someone will reply to you. Also, thanks for reading it till the end! We put quite some time into these blog posts. [Less]
Posted over 2 years ago
Uhm yeah… we’d like to check something, but Android did not allow us to do so, but now it does! Time for a quick fix! Edit: Make that 2 quick fixes. Long time, no see. Well, not today. A nasty little bug slipped through our testing process. Two ... [More] misplaced lines of code barred some users from using NewPipe. Their purpose is to start the check for new NewPipe versions. We changed how the check was executed in the last version. Turned out that we missed a thing there. The check is started during the startup of the app. However, we were a little too ambitious. In some cases the check is executed when the app is still started and not displayed, i.e. in background. That was okay for how the check was done previously, but combined with the new structure this is considered illegal by Android. We ensured to start the check later, once the app is not in background anymore. No rule breaking by NewPipe at app start anymore. No guarantee for other parts of the app. Terms and conditions apply ;) Once we released that version, we thought everything was great, but at last, it was not. The same logic applies, we just had to change how we pull this off in our code. This is why we had to release another hot fix. We also squeezed in a fix for the “Resume playback” setting. Since 0.21.11, the video just started from the beginning, though you already watched it for some part. Now the video starts again where you left off, as long as you enabled this in the settings. [Less]
Posted over 2 years ago
Uhm yeah… we’d like to check something, but Android did not allow us to do so, but now it does! Time for a quick fix! Long time, no see. Well, not today. A nasty little bug slipped through our testing process. Two misplaced lines of code barred ... [More] some users from using NewPipe. Their purpose is to start the check for new NewPipe versions. We changed how the check was executed in the last version. Turned out that we missed a thing there. The check is started during the startup of the app. However, we were a little too ambitious. In some cases the check is executed when the app is still started and not displayed, i.e. in background. That was okay for how the check was done previously, but combined with the new structure this is considered illegal by Android. We ensured to start the check later, once the app is not in background anymore. No rule breaking by NewPipe at app start anymore. No guarantee for other parts of the app. Terms and conditions apply ;) [Less]
Posted over 2 years ago
This release is a hot fix one. You can import settings again, the long press menu got a new button with which you can now queue media directly after the current one and many changes to buttons. So many buttons. Like loads of buttons. New ... [More] Did you ever carefully build an hour-long playlist by queuing songs after songs, just to realize that you actually want a specific song next? Previously that meant having to reorder the whole list manually, but @Stypox made this way quicker by adding a new button to the long press menu: You can enqueue something directly as the next media on the list! Thank you Stypox. NewPipe can now open the links from YouTube shorts directly. The code for this was already in the app, @mhmdanas “just” gave you the ability to set NewPipe as the default app for these links as well. NewPipe Extractor (the code which works in the background of the app to serve you the content you want to see) got support for comment replies from YouTube by @FireMasterK. This is not yet visible in the app itself, but it could be soonish. Improved Let’s get to the buttons: @Stypox made all buttons in the main player to have a better press animation/background. They also applied this change to a couple text buttons elsewhere in the app. Tired of not being able to hit the buttons in the minimized player because their hit range was so small? Well @tsiflimagas extended the clickable area of them, so even you can hit it now, big finger Joe. The buttons in the play queue view were moved below the seekbar. For once, it looks better this way, and it helps not accidentally hitting the seekbar when using gesture control. Thank @phigjm. If you enable the check for update options in the settings, NewPipe now searches immediately for updates. Faster updates for you thanks to @evermind-zz Fixed Importing settings from older NewPipe versions kinda broke, and @laksh-21 fixed that. @litetex fixed the seekbar for YouTube shorts. They also fixed some smaller behind-the-scenes issues, related to the thumbnail and other meta data of media. You will probably not notice these changes but they make the app just a smidge faster. @Redirion fixed a buffering issue on RealtekATV. They fixed also a crash which could happen when sharing a livestream while the stream’s title wasn’t set correctly. Nerd Talk @litetex updated Android Gradle Plugin to version 7.0.2, which now requires Java 11 to build. @XiangRongLin made a change which allows passing a package name suffix through CLI. @Jhooomn extracted a repeated variable to a constant. @TacoTheDank removed the deprecated preferenceTheme style attribute. They also regenerated some drawables to their latest design. And they updated Groupie library to 2.9.0. @ygz213 fixed several typos in READMEs. @TobiGr updated the SoundCloud client id, again. @XiangRongLin added a Gradle parameter to prevent KtLint, the Kotlin linter+formatter, from being run twice in the GitHub Actions CI. dependabot updates (NewPipe Extractor): Bump jsoup from 1.14.2 to 1.14.3 Where to get this brand-new version NewPipe notifies you about new versions. You can download them when you press the notification, which will take you to the GitHub Releases page. If you use the F-Droid app, it, too, notifies you about updates for NewPipe. Please keep in mind that it can take F-Droid a while to update their repository. If you have problems installing the update, you may need to uninstall NewPipe and then install it afresh. (Make sure to backup data by exporting your database from the Settings > Content menu.) If you already installed NewPipe from F-Droid’s repository, to get this version of NewPipe you can do one of the following: Wait for them to update Switch to NewPipe’s custom repository by following the directions in the announcement post Note: If you installed NewPipe from GitHub Releases you will not have to uninstall NewPipe to switch to our custom repo. Just let it update your current version. Make sure you back up your data as mentioned in the warning at the top of the FAQ page! Now that you’ve (hopefully) updated, please let us know what your experience of the latest release is, especially bugs in need of fixing. As usual, you can reach out to us via IRC (#newpipe on Libera.Chat), open issues on GitHub or, ideally, use our built-in crash reporter to send us machine-readable issue reports. You can even send in fixes yourself. If you have any other questions, feel free to post them in the comments here and someone will reply to you. Also, thanks for reading it till the end! We put quite some time into these blog posts. [Less]