Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
125 commits
Select commit Hold shift + click to select a range
6ddd4a7
VideoDetailFragment: hide relatedItemsLayout in tablet mode after ful…
Jan 11, 2026
54f9bcb
Upgrade AGP to 9.0.0
theimpulson Jan 17, 2026
4f70235
Enable proguard android optimizations
theimpulson Jan 17, 2026
d045b27
Migrate to built-in Kotlin
theimpulson Jan 17, 2026
a3301dc
Enable resValues as build feature
theimpulson Jan 17, 2026
7758a27
Migrate from deprecated android block to ApplicationExtension
theimpulson Jan 17, 2026
19e94bd
Migrate from deprecated srcDir to directories method
theimpulson Jan 17, 2026
fd192b4
Drop default properties
theimpulson Jan 17, 2026
a7aad63
Upgrade Kotlin and KSP
theimpulson Jan 29, 2026
8a2c47b
Remove dead code from info_list/InfoItemBuilder
Jan 29, 2026
51e62f0
Upgrade GitHub Actions for Node 24 compatibility
salmanmkc Jan 30, 2026
d051e8e
Upgrade GitHub Actions to latest versions
salmanmkc Jan 30, 2026
cc33b68
Merge pull request #13140 from salmanmkc/upgrade-github-actions-node24
TobiGr Jan 30, 2026
739b6ae
Merge pull request #13141 from salmanmkc/upgrade-github-actions-node2…
TobiGr Jan 30, 2026
ae60f7d
FeedLoadManager: Shuffle the order outdated subscriptions are updated in
jpds Jan 31, 2026
15b5cef
Merge pull request #13136 from TeamNewPipe/agp9
theimpulson Feb 1, 2026
07fe1e7
Refactor settings/tabs/TabsJsonHelper.java to use java streams
Jan 27, 2026
8d6e68d
Partially revert upgrade to AGP 9.0.0
theimpulson Feb 4, 2026
85d43fe
proguard: Keep fields of generated proguard files
theimpulson Feb 4, 2026
83f9646
Merge pull request #13190 from TeamNewPipe/agp9fixes
Stypox Feb 4, 2026
5525d20
Small refactor getPlayQueueFromCache
absurdlylongusername Feb 5, 2026
725cb70
Update useVideoAndSubtitles rename in comment
absurdlylongusername Feb 5, 2026
118def0
Add conditional guard to prevent useVideoAndSubtitles overwriting rec…
absurdlylongusername Feb 5, 2026
1554f77
Fix additional setRecovery from rebase errors
absurdlylongusername Feb 5, 2026
e749075
Merge pull request #13195 from absurdlylongusername/fix-13139-resume-…
TobiGr Feb 5, 2026
955844b
Translated using Weblate (Basque)
weblate Feb 5, 2026
85abc58
Merge branch 'master' into dev
TobiGr Feb 5, 2026
56a0436
Merge pull request #13161 from jpds/outdated-subscription-shuffle
TobiGr Feb 6, 2026
5e1a198
VideoDetailFragment: Forcefully catch click events uncaught by children
Feb 6, 2026
d6be966
Replace Illegal{State,Argument} exceptions with more idiomatic kotlin…
Jan 9, 2026
5d79342
Merge pull request #13028 from dustdfg/idiomatic_kotlin_exceptions
theimpulson Feb 8, 2026
020dbdc
Merge pull request #13131 from dustdfg/tabs_json_helper_refactor
theimpulson Feb 8, 2026
dab8e05
Merge pull request #13137 from dustdfg/info_item_builder_dead
theimpulson Feb 8, 2026
37cef82
Correct inverted check
Feb 9, 2026
6214ae3
Merge pull request #13219 from dustdfg/kotlin_check_is_not_if
Stypox Feb 9, 2026
21f446a
Refactor settings/preferencesearch/PreferenceSearchItem#allRelevantSe…
Feb 9, 2026
289d22e
Utilize kotlins ifEmpty
Feb 9, 2026
451409f
SharedPreferences.edit applies changes automatically
Feb 9, 2026
edfdbe8
Uitilize kotlin elvis operator
Feb 9, 2026
13186c0
Merge pull request #13224 from dustdfg/kotlin_idiomatic
theimpulson Feb 10, 2026
780e6a4
Convert newpipe/util/PlayButtonHelper to kotlin
Jan 9, 2026
4846766
Convert newpipe/util/PeertubeHelper to kotlin
Jan 9, 2026
6cf932b
Convert newpipe/ExitActivity to kotlin
Jan 9, 2026
d665a4f
Convert newpipe/util/NewPipeTextViewHelper to kotlin
Jan 9, 2026
09a746d
Convert newpipe/util/ServiceHelper to kotlin
Jan 9, 2026
2c7654a
Covert newpipe/util/DependentPreferenceHelper to kotlin
Jan 9, 2026
1eedfd7
Convert /newpipe/util/StreamTypeUtil to kotlin
Jan 9, 2026
c6fc94e
Convert newpipe/settings/export/PreferencesObjectInputStream to kotlin
Jan 9, 2026
224a5d0
Minor improvements
theimpulson Feb 10, 2026
e6e0be7
Merge pull request #13026 from dustdfg/kotlin_merged2
theimpulson Feb 10, 2026
59e5018
player/helper/PlayerHelper#getTimeString replace ints with longs
Jan 28, 2026
3a0a3a4
Misc loop/stream based player refactors
Jan 28, 2026
869a3ce
ErrorActivity small refactor
Feb 9, 2026
4a7eaed
ErrorActivity convert to kotlin
Feb 10, 2026
d7a4435
ErrorActivity: Use better variable names and encapsulation
theimpulson Feb 11, 2026
8968aab
ErrorActivity: Catch exceptions not throwables
theimpulson Feb 11, 2026
c3dbed5
ErrorActivity: Kotlin-fy buildMarkdown method
theimpulson Feb 11, 2026
8d45b6b
Merge pull request #13225 from dustdfg/error_activity_kotlin
theimpulson Feb 11, 2026
54090ca
ErrorActivity use normal `\n` instead of `\\n` in resource strings
Feb 11, 2026
840664a
Merge pull request #13236 from dustdfg/error_activity_newlines
Stypox Feb 12, 2026
6c69a54
Translated using Weblate (Slovak)
weblate Feb 11, 2026
3815f5f
Translated using Weblate (Bengali (India))
theimpulson Feb 12, 2026
70cdaf5
Partially revert: ErrorActivity: Kotlin-fy buildMarkdown method
Feb 13, 2026
95367dd
Fix subtitle post-processing error losing original exception
pierreeurope Feb 16, 2026
7e7ad1e
fix layout of comment replies header to work when avatar image is gon…
aivelon Feb 13, 2026
239f6c9
Merge pull request #13241 from aivelon/comment-replies-without-images
TobiGr Feb 18, 2026
9f8055f
remove existing comment replies screens before adding new one
aivelon Feb 8, 2026
51c9ed7
Merge pull request #13213 from aivelon/handle-comment-replies-screens
TobiGr Feb 19, 2026
4cfd36c
Merge pull request #13203 from dustdfg/video_detail_fragment_click_th…
TobiGr Feb 19, 2026
01e77e2
Merge pull request #13256 from pierreeurope/fix/ttml-postprocessing-e…
TobiGr Feb 19, 2026
834f136
Merge pull request #13247 from dustdfg/crashlog_fix
TobiGr Feb 19, 2026
feb4424
Translated using Weblate (Dutch)
weblate Feb 19, 2026
5b00945
Address non-final resource IDs warnings
theimpulson Feb 4, 2026
8c016c9
Enable resources shrinking
theimpulson Feb 4, 2026
89cb87b
Introduce lint configuration and enable checks
theimpulson Feb 4, 2026
582f852
Add missing permission checks for notifications
theimpulson Feb 5, 2026
2f3a993
ReCaptchaActivity: Supress lint error for missing super call
theimpulson Feb 5, 2026
deb6b42
FinishedMIssionStore: Throw exception if column is missing
theimpulson Feb 5, 2026
b3f4cb8
Use requireContext() instead of asserting non-null context
theimpulson Feb 5, 2026
2182ff1
Use correct constant for hiding keyboard
theimpulson Feb 5, 2026
f64e40e
DownloadRunnableFallback: Fix error with log tag being too long
theimpulson Feb 5, 2026
3d43e52
activity_player_queue_control: Switch to app:tint instead of android:…
theimpulson Feb 5, 2026
10b943f
DownloadDialog: Avoid using restricted API for menuitem
theimpulson Feb 5, 2026
15829c8
lint: Supress more translation related errors
theimpulson Feb 5, 2026
5eb5f75
ic_smart_display: Fix invalid vector path on older devices
theimpulson Feb 5, 2026
653b33b
FocusOverlayView: Avoid accessing restricted API
theimpulson Feb 5, 2026
35b70c5
Merge pull request #13194 from TeamNewPipe/r8fixes
TobiGr Feb 20, 2026
273b09a
App: Migrate from Java to Kotlin
theimpulson Feb 20, 2026
4481dd7
Merge pull request #13135 from dustdfg/player_loop_refactor
absurdlylongusername Feb 21, 2026
5736410
Migrate from Picasso to Coil
theimpulson Feb 21, 2026
402a0aa
Delete unused preference title and summary
theimpulson Feb 21, 2026
08b7da4
Accomodate extractor changes (EnumSet for service media capabilities)
Jan 30, 2026
63e1989
Update extractor to the latest version
TobiGr Feb 21, 2026
4bad882
Merge pull request #13037 from dustdfg/tablet_related_items
TobiGr Feb 21, 2026
52a9b60
Merge pull request #13148 from dustdfg/extractor_enum_set
TobiGr Feb 21, 2026
caebf84
Hide controls when resuming playback via double tap
iampopovich Jan 9, 2026
423f95a
Refactor double tap logic to use isPlaying() method for better readab…
iampopovich Jan 9, 2026
232d023
Merge pull request #13030 from iampopovich/fix/6815-double-tap-to-resume
TobiGr Feb 21, 2026
9f193a3
Merge pull request #13272 from theimpulson/coilport
theimpulson Feb 22, 2026
8902ce8
Update dependencies and Gradle to latest stable releases
theimpulson Feb 22, 2026
d1ad1e8
Merge pull request #13276 from TeamNewPipe/depupdate
TobiGr Feb 22, 2026
9a292e3
Translated using Weblate (Albanian)
weblate Feb 22, 2026
06e4548
Add warning banner about ongoing google certification for android apps
Feb 22, 2026
195a76b
Correctly retrieve menu item inside download dialog
Feb 25, 2026
dd65db5
Merge pull request #13290 from dustdfg/correct_download_fragment
TobiGr Feb 25, 2026
66237ab
KeepAndroidOpen: Choose website language from list of supported langu…
TobiGr Feb 26, 2026
9f1e2c6
Merge pull request #13282 from dustdfg/keep_android_open
TobiGr Feb 26, 2026
042f946
Don't show Keep Android Open popup on debug builds
Feb 26, 2026
56fb31d
Merge pull request #13292 from dustdfg/kao_release_only
Stypox Feb 26, 2026
e22b046
Fix inconsistency in getQuantity and add docs
Stypox Feb 26, 2026
bf16332
Merge pull request #13293 from TeamNewPipe/getQuantity-inconsistency
TobiGr Feb 26, 2026
6dddcf3
Translated using Weblate (French)
weblate Feb 28, 2026
8b500c7
Add changelog for NewPipe 0.28.4 (1009)
TobiGr Feb 22, 2026
98a883d
Update NewPipe Extractor to 0.26.0
TobiGr Feb 22, 2026
1fbf9fc
Bump version to 0.28.4 (1009)
TobiGr Feb 22, 2026
8fa6f96
Apply suggestion
Mar 2, 2026
e6e5fc7
Merge pull request #13299 from TeamNewPipe/backport-13298-to-release-…
Stypox Mar 2, 2026
d497f1d
Translated using Weblate (Latvian)
weblate Mar 6, 2026
816f5f9
Translated using Weblate (Vietnamese)
weblate Mar 8, 2026
dc2e4aa
Add Sign in confirm not a bot issue URL to the exception error message
absurdlylongusername Mar 6, 2026
d9fd1bf
Maybe this fix ktlint errors?
absurdlylongusername Mar 6, 2026
93f9a52
Change URL to FAQ
absurdlylongusername Mar 7, 2026
7c88f06
Change to FAQ entry instead
absurdlylongusername Mar 7, 2026
54021a9
Complete sentence.
TobiGr Mar 8, 2026
675d156
Merge pull request #13324 from TeamNewPipe/backport-13310-to-release-…
TobiGr Mar 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/workflows/backport-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
github.event.comment.author_association == 'MEMBER'
)
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- name: Get backport metadata
# the target branch is the first argument after `/backport`
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:

steps:
- uses: actions/checkout@v6
- uses: gradle/actions/wrapper-validation@v4
- uses: gradle/actions/wrapper-validation@v5

- name: create and checkout branch
# push events already checked out the branch
Expand Down
29 changes: 16 additions & 13 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
* SPDX-License-Identifier: GPL-3.0-or-later
*/

import com.android.build.api.dsl.ApplicationExtension

plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.jetbrains.kotlin.android)
Expand Down Expand Up @@ -32,7 +34,7 @@ kotlin {
}
}

android {
configure<ApplicationExtension> {
compileSdk = 36
namespace = "org.schabi.newpipe"

Expand All @@ -42,9 +44,9 @@ android {
minSdk = 21
targetSdk = 35

versionCode = System.getProperty("versionCodeOverride")?.toInt() ?: 1008
versionCode = System.getProperty("versionCodeOverride")?.toInt() ?: 1009

versionName = "0.28.3"
versionName = "0.28.4"
System.getProperty("versionNameSuffix")?.let { versionNameSuffix = it }

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
Expand Down Expand Up @@ -77,19 +79,18 @@ android {
resValue("string", "app_name", "NewPipe $suffix")
}
isMinifyEnabled = true
isShrinkResources = false // disabled to fix F-Droid"s reproducible build
proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}

lint {
checkReleaseBuilds = false
// Or, if you prefer, you can continue to check for errors in release builds,
// but continue the build even when errors are found:
lintConfig = file("lint.xml")
// Continue the debug build even when errors are found
abortOnError = false
// suppress false warning ("Resource IDs will be non-final in Android Gradle Plugin version
// 5.0, avoid using them in switch case statements"), which affects only library projects
disable += "NonConstantResourceId"
}

compileOptions {
Expand All @@ -100,7 +101,7 @@ android {

sourceSets {
getByName("androidTest") {
assets.srcDir("$projectDir/schemas")
assets.directories += "$projectDir/schemas"
}
}

Expand All @@ -111,6 +112,7 @@ android {
buildFeatures {
viewBinding = true
buildConfig = true
resValues = true
}

packaging {
Expand Down Expand Up @@ -270,7 +272,8 @@ dependencies {
implementation(libs.lisawray.groupie.viewbinding)

// Image loading
implementation(libs.squareup.picasso)
implementation(libs.coil.compose)
implementation(libs.coil.network.okhttp)

// Markdown library for Android
implementation(libs.noties.markwon.core)
Expand Down
10 changes: 10 additions & 0 deletions app/lint.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ SPDX-FileCopyrightText: 2026 NewPipe e.V. <https://newpipe-ev.de>
~ SPDX-License-Identifier: GPL-3.0-or-later
-->
<lint>
<issue id="MissingTranslation" severity="ignore" />
<issue id="MissingQuantity" severity="ignore" />
<issue id="ImpliedQuantity" severity="ignore" />
</lint>
5 changes: 5 additions & 0 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,8 @@

## For some reason NotificationModeConfigFragment wasn't kept (only referenced in a preference xml)
-keep class org.schabi.newpipe.settings.notifications.** { *; }

# Prevent R8 from stripping or renaming Protobuf internal fields
-keepclassmembers class * extends com.google.protobuf.GeneratedMessageLite {
<fields>;
}
Loading