Releases: TeamNewPipe/NewPipe
v0.25.1
➡️ ➡️ ➡️ Read the blog post ⬅️ ⬅️ ⬅️
⚠️ Known issues/regressions which are not fixed with this update ⚠️
DO NOT OPEN NEW ISSUES FOR THEM BUT FOLLOW THE LINKED ONES INSTEAD!
- Player notification actions set from app player notification settings are not used on Android 13 and above: this is related to targeting Android 13/API 33 or higher: apps cannot completely personalize media notifications: see #9764 for more details.
- Crash when playing content in fullscreen on some devices: our usage of the ExoPlayer library does not correctly handle rendering to a different surface than the starting one and crashes when trying to switch to fullscreen. See #9023 for more details and workarounds.
- [YouTube] Trends are not shown sometimes and
No videos
are shown in this case: YouTube is A/B testing a new trends UI which completely reworks what data is sent and how it is displayed. This new structure is currently not supported by the extractor. See TeamNewPipe/NewPipeExtractor#1046 for more details.
Changelog
This version also includes the changes from NewPipe Extractor version v0.22.6.
New
- Handle duplicate streams in the "Add to playlist" dialog #9538
- Larger channel cards in search results #9728
- Add an option to ignore hardware media button events #9746
- Add option to remove partially watched videos from the 'Whats new' feed #9747
- Add button to remove duplicates from playlist #9707
Improved
- Reduce the size of thumbnails on big screens to fit more grid columns #9858
- Make UI behavior for playback information display more consistent #8180
Fixed
- Orientation is locked if there is no sensor for it #9693
- Fix crash when clicking on an empty comment #9777
- [Android 11+] Correctly open URLs in browser and fix opening downloads and external players #9850
- Fix playlist streams progress bar size in card mode #9769
- Fix erroneous updates of playlist thumbnails #9755
- Revert "Use
WindowCompat
" #9812
Localization
Development
v0.25.0
➡️ ➡️ ➡️ Read the blog post ⬅️ ⬅️ ⬅️
New
- Show toast when no updates are available #8668
- Show subscriber count on video details page #9173
- Download items from the long press menu of queue items #9502
- Allow permanently setting a playlist thumbnail #9523
- Add long press action on hashtags and web links in descriptions #7725
- New card view mode with full width thumbnails #9310
Improved
- Remove the redundant/overlapping toast "Copied to clipboard" for Android 13+ #8961
- Make mini-player close button area larger #8743
- Use smoother bitmap downscaling for thumbnails #8686 #9479
- Rename "Help" to "Fast mode" #9500
- Add hint to improve discoverability of subscription import #9501
- Disable night theme selection if auto theme is not used #9488
- Set
compileSdk
andtargetSdk
to 33 (Android 13) #9306 #9671 #9696 #9726 #9758 - Seeking no longer pauses the played stream #9496
- Add icon for "Play All" #9568
- Add language suffix to downloaded subtitle filenames #9499
- Check availability of Samsung DeX only on Samsung devices #9619
- Add "What's New" to the default main page tabs #9664
- Change "What's New" icon #9678
- Make channel images in grid lists bigger #9555
- Change "Chapters" icon #9691
- [YouTube] Add support for live links #9725
Fixed
- Fix persistent hover overlay when in desktop/DeX mode or using a mouse/non-touch input #8316
- Only show "Enqueue next" when in the middle of the queue #8883
- [PeerTube] Remove dead Privacy Tools instance #9504
- Fix crash when click "Add to playlist" while the current list is still loading #9521
- Allow using background player when there are no separate audio streams #9562
- Improve screen rotation handling in Open action menu #9135
- Ask for permission when enqueuing in a popup #9653
- Fix removing watched videos from playlist includes currently playing #9445
- Fix displaying multiple empty playlists #9642
- Fix background player stops working when enqueueing playlist at different index #9706
- Fix link clicking and ellipsizing of comments #9631
Localization
Development
- Make
PendingIntent
s immutable on Android 6.0 and later #9333 - Use
Locale.forLanguageTag()
#8870 - Forbid wrong
@Nullable
and@NotNull
annotation imports #9474 - Set image-minimizer to specify image width #9471
- Update Sonarqube to 3.5 #9480
- Use
Math.floorDiv()
#8810 - Use
SparseArrayCompat
#8895 - Update LeakCanary to 2.9.1 #9306
- Update Desugaring to 1.1.8, ACRA to 5.9.7 and Android Gradle Plugin to 7.3.1 #9481
- Refactor
VideoDetailFragment
#8847 - Refactor
VideoPlayerUi
#9159 - Update RxJava to 3.1.5 and RxAndroid to 3.0.2 #9520
- Use
ListAdapter
inNotificationModeConfigAdapter
#8841 - Use new NPE UTF8 Utils methods #8769
- Clean up
Optional
-related code #9285 #9663 - Remove Runnable variables for Handlers #8886
- Use
WindowCompat
#8894- If you encounter any issue with system UI not behaving properly, this PR will be reverted
- Update
desugar_jdk_libs
to 2.0.2 and Android Gradle Plugin to 7.4.0 (which requires Android Studio Electric Eel) #9686 #9743 - Fix reproducible builds #9709
v0.24.1
➡️ ➡️ ➡️ Read the blog post ⬅️ ⬅️ ⬅️
New
- Add monochrome icon #8987
- Add link to FAQ in the app #9164
- Add an "Open in browser" button on error panel #9180
- Add option to display channel groups as list instead of grid #9207 #9298
- Long-click on stream segment to share timestamped URLs (for YouTube only) #9203
- [YouTube] Support handles #9291 TeamNewPipe/NewPipeExtractor#964
Improved
- Add play queue button to video details fragment #8946 #9109
- Show "Hold to enqueue" tip in local playlists #9196
- [YouTube] Add support for attributed text description TeamNewPipe/NewPipeExtractor#953
- [YouTube] Support all channel usernames TeamNewPipe/NewPipeExtractor#964
Fixed
-
Fix potential cast exception in comments text #9065
-
Fix
DownloadDialog
crash on screen rotation #9079 -
Fix crash when clicking download and quitting the history fragment #9143
-
Fix job for removing watched streams from playlist not executing only once #8706
-
Fix duplicate videos in feed group "All" #9230
-
[YouTube] Fix extraction of videos in channels and in feeds when not using dedicated mode (RSS feeds) TeamNewPipe/NewPipeExtractor#944
⚠️ Due to the separation of shorts and livestreams (including VODs) of most channels into separate tabs, these contents will be not available until channel tabs support is added.However, you can use workarounds until this support is added:
- For feeds, use the dedicated method to fetch channels (a.k.a. RSS feeds);
- For channels: you can use the uploads playlist of a channel to get all its public videos: take a channel ID (not a username or a handle), replace
UC
byUU
at the beginning of the ID and use the resulting ID as a playlist ID (append this ID to a playlist URL likehttps://www.youtube.com/playlist?list=
and then open this URL in NewPipe). These playlists may be not available on some YouTube "system" channels.
-
[YouTube] Fix 403 HTTP errors when playing sometimes videos in some countries by using a workaround TeamNewPipe/NewPipeExtractor#960
⚠️ The workaround can break at any time. If you see this error again, and you have the ability to block network requests to specific domains for apps on your device, you can block theyoutubei.googleapis.com
domain to work around this issue.However, this has a few downsides:
- the 720p video stream with audio (used for external players) will be not available on musical contents;
- the 48kbps M4A audio stream and the 144p 3GPP video stream will be not available;
- the rewind duration of livestreams will be limited to 30 seconds at most, instead of 1 hour.
-
[YouTube] Fix extraction of author and video count of playlists with their new metadata format TeamNewPipe/NewPipeExtractor#958
⚠️ With the new metadata format, no author thumbnail is returned anymore. -
[SoundCloud] Fix tracks in incorrect order on playlists TeamNewPipe/NewPipeExtractor#939
-
[SoundCloud] Fix getting more comments TeamNewPipe/NewPipeExtractor#943
Localization
- Add new localizations (Icelandic, Latvian, Malayalam) to language selector #9179
- Update translations #9092, #9179, #9256
- Remove empty localizations #9256
Development
- Use
LinkifyCompat
#8934 - Utilize
useSimpleSummaryProvider
attribute #9011 - Improve
FeedGroupDialogViewModel
factory #8734 - Update Android Gradle Plugin to 7.3.0 #8986
- Use range-limiting methods in more places #8747
- Use Okio's
ByteString
for download checksums #8767 - Calculate search score using streams #8739
- Use
TextViewCompat.setCompoundDrawableTintList()
#8655 - Update AppCompat to 1.5.1 and compileSdk to 32 #8768
- Update PrettyTime from 5.0.3 to 5.0.6 to include new localizations made by NewPipe contributors #9272
- Update NewPipe Extractor #9291
v0.24.0
➡️ ➡️ ➡️ Read the blog post ⬅️ ⬅️ ⬅️
New
⚠️ BumpminSdk
to 21 (Android 5 Lollipop) and drop support for Android 4.4 KitKat #7613- Add Download entry to long-press menu #8397
- Add option to hide future videos in feed #8545 #8966
- Add Share menu item to local playlists #8542
Improved
- Crop the notification thumbnail in 1:1 mode instead of stretching it #8533
- Make thumbnails'
scaleType
fitCenter
#8573 - Improve image placeholders #8530
- Removed the "(beta)"-tag from services #8637
- Refactor player and extract UI components #8170 #8661 #8678 #8731
- Sort tags case-insensitively #8709
Fixed
- Fix wrong image used as a placeholder for channels avatars #8676
- Fix various issues with player notification #8678 #8899
Localization
Development
- Run CI on all release branches #8565
- Clean up proguard file #8468
- Update ExoPlayer to 2.18.1 #8536 #8687
- Specify used ExoPlayer libraries #8469
- Use minimum required permissions for GitHub workflows #8569
- Checkstyle assign on same line #8601
- Use
ViewCompat.setBackgroundTintList()
#8633 - Update some misc libraries #8475
- Use stream sorting #8635
- Use Java 9 collection factories:
List.of()
,Set.of()
,Map.of()
#8631 #8679 - Use range-limiting method
MathUtils.clamp()
#8651 #8737 - Use Kotlin IO extensions #8648
- Remove some unnecessary methods #8663 #8740
- Remove deprecated method calls in
FocusAwareCoordinator
#8670 - Deduplicate SQL queries to get feed streams #8621
- Update OkHttp to 4.10.0 #8624
- Update Lifecycle to 2.5.1 #8683
- Update AndroidX Fragment to 1.4.1 #8691
- Update Google Material to 1.6.1 #8692
- Use
Throwable.stackTraceToString()
#8701 - Update AppCompat to 1.4.2 #8667
- Use
WindowMetrics
API #8656 - Update AndroidX Room to 2.4.3 #8716
- Remove uses of
setBottomSheetCallback()
#8669 - Refactor
LicenseFragmentHelper
#8682 - Make
OnClickGesture
an interface #8721 - Reduce
View.kt
size #8708 - Use
toArray()
with zero-length arrays #8724 - Use
Comparator
factory methods #8728 - Use
Collectors.joining()
#8738 - Update FilePicker to our custom fork and disable Jetifier #8666
- Add FAQ entry to the template checklists #8822
- Use
ListAdapter
for search predictions #8719 #8972 - Update Gradle to 7.5.1 #8751
- Remove extra whitespace from issue and PR templates #8755
- Clarify that span shouldn't be in translated READMEs #8754
- Keep strong references to Picasso notification icon loading targets #8677
- Create media session UI and fix player notification #8678
v0.23.3
Fixed
- [YouTube] Fix infinite loading when trying to play any video TeamNewPipe/NewPipeExtractor#912
- [YouTube] Fix throttling on some videos TeamNewPipe/NewPipeExtractor#882
Development
- Upgrade the jsoup library to 1.15.3, which includes a security fix #8880 TeamNewPipe/NewPipeExtractor#911
v0.23.2
Fixed
- [YouTube] Fix "Could not get any stream" error when trying to play any video, thanks to @Theta-Dev! TeamNewPipe/NewPipeExtractor#891
- [YouTube] Fix replacement of video and audio streams by a video saying
The following content is not available on this app
TeamNewPipe/NewPipeExtractor#890
v0.23.1
➡️ ➡️ ➡️ Read the blog post ⬅️ ⬅️ ⬅️
New
-
Support delivery methods other than progressive HTTP #8153 (thanks to @AudricV!)
- [YouTube] Use DASH for playback, improving loading times in playback and seeking
- [YouTube] Full playback of recently ended livestreams
- [YouTube] Improve availability of some resolutions and formats
- [PeerTube] Fix seeking on videos with only HLS streams
- [PeerTube] Fix crash on videos with an audio-only stream
- [SoundCloud] Fix playback of HLS-only tracks
-
Add button to add a remote playlist to a local one #7355
-
Image preview in Android share sheet (Android 10+ only) #8143
Improved
- Improve playback parameters dialog's UI #7989 #8349
- Moved subscription import/export options to (overflow) menu #7458
Fixed
- Fix keyboard doesn't open with disabled animations #8227
- Fix crash when opening NewPipe from the notification bar #8244
- Fix hiding player controls when playing from media button #8315
- Fix history view count #8336 #8564
- Fix
RouterActivity
theming (the menu that shows up when you share something to NewPipe) #8332 - Fix removing only fully watched videos from playlist #8259
- Fix crash when rotating device on unsupported channels #8192
- Make volume progress bar match system volume when we start sliding #8377
- Fix
Add to playlist
not working and cleanupRouterActivity
choice handling (the menu that shows up when you share something to NewPipe) #8340
Localization
- Add Hindi translation of the README #8355
Development
- Update ACRA library #8206
- Update user agent used by the downloader #8269
- Remove unused
strings.xml
resources #8329 - Update Groupie and ACRA libraries #8407
- Update Android Gradle Plugin and Kotlin #8406
- Use JvmOverloads instead of manually overloading method #8391
- Remove unnecessary compat method calls #8382
- Use
AppCompatResources
#8404 - Made some much needed changes to the ReadMe #8372
v0.23.0
➡️ ➡️ ➡️ Read the blog post ⬅️ ⬅️ ⬅️
New
- Notifications for new streams #2335
- Seamless transition between background and video players when putting the app in background #7349 #8139
- Change pitch by semitones #7565
- Implement appending queue to playlist in main player #8008
- Load YouTube mixes in related items TeamNewPipe/NewPipeExtractor#788 -- note that this has already been broken by YouTube in the EU
Improved
- Remember adjustment step size for playback controls (speed and pitch) #7728
- Mitigating long buffering on initial video playback #7919 #8302
- Replace
R.string.yes
withR.string.ok
#7976 - Improve player UI and navigability for Android TV #7963
- Add a confirmation button when deleting all files in downloader #5878
- Remove icon duplicates and fix some theming issues #7518 #8081
- ExoPlayer 2.17.1 update and MediaSource management rework #8020 #8150 #8249
Fixed
- Fix player controls not hiding if resumed from media button #7341
- Migrate app update checker to AndroidX Work #7975
- Fix error notification on KitKat #7977
- Fix playback being reset to beginning when player type was changed #8020
- Fix download dialog selector layout #7516
- Fix crash when rotating device with playlist dialog open #8146
- Adapt opacity of popup close button to allow touches in other apps on Android >=12 #8279
Development
- Replace
CircleImageView
withShapeableImageView
#7925 - Solve Java warning
Raw use of parameterized class
#7904 - Fix Room warning about unused columns during build #7905
- Fix build on Apple Silicon Macs #7782
- Refactor generating
InfoItemDialog
's #7570 - Better equals check #7910
- Update Android Gradle Plugin and Gradle #7947
- Remove duplicate large-land player layout #7894
- Update ConstraintLayout and Room libraries #7954
- Update Kotlin to 1.6.10 #7952
- Update some AndroidX libraries #7978
- Deduplicate code for fetching stream info when sparse #7981 #8127
- Extract some view click listeners from player #8011
- Delete some unused code #8067
- Clean up the about package a bit #8065
- Create stub implementation for
OnSeekBarChangeListener
#8066 - Some lint cleaning #8068
- Update Checkstyle to 10.0 and fix various related issues #8073
- Update license to latest version #8076 #8077
- Update CONTRIBUTING.md with current
checkstyle.xml
path #8175 - Update GitHub action dependencies in workflows #8198
- Update AGP, Gradle, and Kotlin #8204
- Use simpler
DrawerLayout
method #8200 - Replace checklist drawable #8199
v0.22.2
v0.22.1
➡️ ➡️ ➡️ Read the blog post ⬅️ ⬅️ ⬅️
Fixed
- Load enough initial items and fix crash in lists #7659
- Have fast seek overlay arc go under system ui #7898
- Revert "Respect cutouts when playing in MultiWindow" #7924