From c1681f982aaa3a05499b3b3f4ebfdd8b4e590560 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Sat, 25 Oct 2025 08:11:57 +0400 Subject: [PATCH 01/18] chore: Dump api --- patches/api/patches.api | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/patches/api/patches.api b/patches/api/patches.api index 1341b5ff8..14907b9d1 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -60,6 +60,10 @@ public final class app/revanced/patches/all/misc/connectivity/wifi/spoof/SpoofWi public static final fun getSpoofWifiPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } +public final class app/revanced/patches/all/misc/customcertificates/CustomCertificatesPatchKt { + public static final fun getCustomNetworkSecurityPatch ()Lapp/revanced/patcher/patch/ResourcePatch; +} + public final class app/revanced/patches/all/misc/debugging/EnableAndroidDebuggingPatchKt { public static final fun getEnableAndroidDebuggingPatch ()Lapp/revanced/patcher/patch/ResourcePatch; } From c73a03c9e18a12262939c974cdf16221221d1487 Mon Sep 17 00:00:00 2001 From: rospino74 <34315725+rospino74@users.noreply.github.com> Date: Sun, 26 Oct 2025 11:01:06 +0100 Subject: [PATCH 02/18] fix(Instagram): Update failing fingerprints on newer versions (#6181) --- .../revanced/patches/instagram/hide/navigation/Fingerprints.kt | 3 ++- .../patches/instagram/misc/devmenu/EnableDeveloperMenuPatch.kt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/patches/src/main/kotlin/app/revanced/patches/instagram/hide/navigation/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/instagram/hide/navigation/Fingerprints.kt index efbdaf597..cc762c123 100644 --- a/patches/src/main/kotlin/app/revanced/patches/instagram/hide/navigation/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/instagram/hide/navigation/Fingerprints.kt @@ -3,9 +3,10 @@ package app.revanced.patches.instagram.hide.navigation import app.revanced.patcher.fingerprint import app.revanced.patcher.patch.BytecodePatchContext +import com.android.tools.smali.dexlib2.AccessFlags internal val initializeNavigationButtonsListFingerprint = fingerprint { - strings("Nav3") + accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) parameters("Lcom/instagram/common/session/UserSession;", "Z") returns("Ljava/util/List;") } diff --git a/patches/src/main/kotlin/app/revanced/patches/instagram/misc/devmenu/EnableDeveloperMenuPatch.kt b/patches/src/main/kotlin/app/revanced/patches/instagram/misc/devmenu/EnableDeveloperMenuPatch.kt index 4f594478d..e9577477a 100644 --- a/patches/src/main/kotlin/app/revanced/patches/instagram/misc/devmenu/EnableDeveloperMenuPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/instagram/misc/devmenu/EnableDeveloperMenuPatch.kt @@ -24,7 +24,7 @@ val enableDeveloperMenuPatch = bytecodePatch( with(clearNotificationReceiverFingerprint.method) { indexOfFirstInstructionReversedOrThrow(clearNotificationReceiverFingerprint.stringMatches!!.first().index) { val reference = getReference() - Opcode.INVOKE_STATIC == opcode && + opcode in listOf(Opcode.INVOKE_STATIC, Opcode.INVOKE_STATIC_RANGE) && reference?.parameterTypes?.size == 1 && reference.parameterTypes.first() == "Lcom/instagram/common/session/UserSession;" && reference.returnType == "Z" From ef44eaa119b9d6c5faec051e22d20f883d0da4f1 Mon Sep 17 00:00:00 2001 From: hxreborn <32096750+hxreborn@users.noreply.github.com> Date: Sun, 26 Oct 2025 11:01:32 +0100 Subject: [PATCH 03/18] feat(TikTok): Add `Sanitize sharing links` patch (#6176) --- .../shared/privacy/LinkSanitizer.java | 13 ++- .../ExtensionPreferenceCategory.java | 6 ++ .../tiktok/share/ShareUrlSanitizer.java | 29 +++++++ patches/api/patches.api | 4 + .../patches/tiktok/misc/share/Fingerprints.kt | 25 ++++++ .../misc/share/SanitizeShareUrlsPatch.kt | 85 +++++++++++++++++++ 6 files changed, 155 insertions(+), 7 deletions(-) create mode 100644 extensions/tiktok/src/main/java/app/revanced/extension/tiktok/share/ShareUrlSanitizer.java create mode 100644 patches/src/main/kotlin/app/revanced/patches/tiktok/misc/share/Fingerprints.kt create mode 100644 patches/src/main/kotlin/app/revanced/patches/tiktok/misc/share/SanitizeShareUrlsPatch.kt diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/privacy/LinkSanitizer.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/privacy/LinkSanitizer.java index 9cfa05c1b..853ced003 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/privacy/LinkSanitizer.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/privacy/LinkSanitizer.java @@ -17,9 +17,6 @@ public class LinkSanitizer { public LinkSanitizer(String ... parametersToRemove) { final int parameterCount = parametersToRemove.length; - if (parameterCount == 0) { - throw new IllegalArgumentException("No parameters specified"); - } // List is faster if only checking a few parameters. this.parametersToRemove = parameterCount > 4 @@ -40,10 +37,12 @@ public class LinkSanitizer { try { Uri.Builder builder = uri.buildUpon().clearQuery(); - for (String paramName : uri.getQueryParameterNames()) { - if (!parametersToRemove.contains(paramName)) { - for (String value : uri.getQueryParameters(paramName)) { - builder.appendQueryParameter(paramName, value); + if (!parametersToRemove.isEmpty()) { + for (String paramName : uri.getQueryParameterNames()) { + if (!parametersToRemove.contains(paramName)) { + for (String value : uri.getQueryParameters(paramName)) { + builder.appendQueryParameter(paramName, value); + } } } } diff --git a/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/settings/preference/categories/ExtensionPreferenceCategory.java b/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/settings/preference/categories/ExtensionPreferenceCategory.java index 60d7983ea..7383a5582 100644 --- a/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/settings/preference/categories/ExtensionPreferenceCategory.java +++ b/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/settings/preference/categories/ExtensionPreferenceCategory.java @@ -23,6 +23,12 @@ public class ExtensionPreferenceCategory extends ConditionalPreferenceCategory { public void addPreferences(Context context) { addPreference(new ReVancedTikTokAboutPreference(context)); + addPreference(new TogglePreference(context, + "Sanitize sharing links", + "Remove tracking parameters from shared links.", + BaseSettings.SANITIZE_SHARED_LINKS + )); + addPreference(new TogglePreference(context, "Enable debug log", "Show extension debug log.", diff --git a/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/share/ShareUrlSanitizer.java b/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/share/ShareUrlSanitizer.java new file mode 100644 index 000000000..5d09c10c0 --- /dev/null +++ b/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/share/ShareUrlSanitizer.java @@ -0,0 +1,29 @@ +package app.revanced.extension.tiktok.share; + +import app.revanced.extension.shared.Logger; +import app.revanced.extension.shared.privacy.LinkSanitizer; +import app.revanced.extension.shared.settings.BaseSettings; + +@SuppressWarnings("unused") +public final class ShareUrlSanitizer { + + private static final LinkSanitizer sanitizer = new LinkSanitizer(); + + /** + * Injection point for setting check. + */ + public static boolean shouldSanitize() { + return BaseSettings.SANITIZE_SHARED_LINKS.get(); + } + + /** + * Injection point for URL sanitization. + */ + public static String sanitizeShareUrl(final String url) { + if (url == null || url.isEmpty()) { + return url; + } + + return sanitizer.sanitizeUrlString(url); + } +} diff --git a/patches/api/patches.api b/patches/api/patches.api index 14907b9d1..9c3b806d3 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -1188,6 +1188,10 @@ public final class app/revanced/patches/tiktok/misc/settings/SettingsPatchKt { public static final fun getSettingsPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } +public final class app/revanced/patches/tiktok/misc/share/SanitizeShareUrlsPatchKt { + public static final fun getSanitizeShareUrlsPatch ()Lapp/revanced/patcher/patch/BytecodePatch; +} + public final class app/revanced/patches/tiktok/misc/spoof/sim/SpoofSimPatchKt { public static final fun getSpoofSimPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } diff --git a/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/share/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/share/Fingerprints.kt new file mode 100644 index 000000000..836be8900 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/share/Fingerprints.kt @@ -0,0 +1,25 @@ +package app.revanced.patches.tiktok.misc.share + +import app.revanced.patcher.fingerprint +import com.android.tools.smali.dexlib2.AccessFlags +import com.android.tools.smali.dexlib2.Opcode + +internal val urlShorteningFingerprint = fingerprint { + accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC, AccessFlags.FINAL) + returns("LX/") + parameters( + "I", + "Ljava/lang/String;", + "Ljava/lang/String;", + "Ljava/lang/String;" + ) + opcodes(Opcode.RETURN_OBJECT) + + // Same Kotlin intrinsics literal on both variants. + strings("getShortShareUrlObservab\u2026ongUrl, subBizSceneValue)") + + custom { method, _ -> + // LIZLLL is obfuscated by ProGuard/R8, but stable across both TikTok and Musically. + method.name == "LIZLLL" + } +} diff --git a/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/share/SanitizeShareUrlsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/share/SanitizeShareUrlsPatch.kt new file mode 100644 index 000000000..fd616141c --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/share/SanitizeShareUrlsPatch.kt @@ -0,0 +1,85 @@ +package app.revanced.patches.tiktok.misc.share + +import app.revanced.patcher.extensions.InstructionExtensions.addInstructions +import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels +import app.revanced.patcher.extensions.InstructionExtensions.getInstruction +import app.revanced.patcher.patch.bytecodePatch +import app.revanced.patches.shared.PATCH_DESCRIPTION_SANITIZE_SHARING_LINKS +import app.revanced.patches.shared.PATCH_NAME_SANITIZE_SHARING_LINKS +import app.revanced.patches.tiktok.misc.extension.sharedExtensionPatch +import app.revanced.util.findFreeRegister +import app.revanced.util.getReference +import app.revanced.util.indexOfFirstInstructionOrThrow +import com.android.tools.smali.dexlib2.Opcode +import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction +import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction +import com.android.tools.smali.dexlib2.iface.reference.MethodReference + +private const val EXTENSION_CLASS_DESCRIPTOR = + "Lapp/revanced/extension/tiktok/share/ShareUrlSanitizer;" + +@Suppress("unused") +val sanitizeShareUrlsPatch = bytecodePatch( + name = PATCH_NAME_SANITIZE_SHARING_LINKS, + description = PATCH_DESCRIPTION_SANITIZE_SHARING_LINKS, +) { + dependsOn(sharedExtensionPatch) + + compatibleWith( + "com.ss.android.ugc.trill"("36.5.4"), + "com.zhiliaoapp.musically"("36.5.4"), + ) + + execute { + urlShorteningFingerprint.method.apply { + val invokeIndex = indexOfFirstInstructionOrThrow { + val ref = getReference() + ref?.name == "LIZ" && ref.definingClass.startsWith("LX/") + } + + val moveResultIndex = indexOfFirstInstructionOrThrow(invokeIndex, Opcode.MOVE_RESULT_OBJECT) + val urlRegister = getInstruction(moveResultIndex).registerA + + // Resolve Observable wrapper classes at runtime + val observableWrapperIndex = indexOfFirstInstructionOrThrow(Opcode.NEW_INSTANCE) + val observableWrapperClass = getInstruction(observableWrapperIndex) + .reference.toString() + + val observableFactoryIndex = indexOfFirstInstructionOrThrow { + val ref = getReference() + ref?.name == "LJ" && ref.definingClass.startsWith("LX/") + } + val observableFactoryRef = getInstruction(observableFactoryIndex) + .reference as MethodReference + + val observableFactoryClass = observableFactoryRef.definingClass + val observableInterfaceType = observableFactoryRef.parameterTypes.first() + val observableReturnType = observableFactoryRef.returnType + + val wrapperRegister = findFreeRegister(moveResultIndex + 1, urlRegister) + + // Check setting and conditionally sanitize share URL. + addInstructionsWithLabels( + moveResultIndex + 1, + """ + invoke-static {}, $EXTENSION_CLASS_DESCRIPTOR->shouldSanitize()Z + move-result v$wrapperRegister + if-eqz v$wrapperRegister, :skip_sanitization + + invoke-static { p1 }, $EXTENSION_CLASS_DESCRIPTOR->sanitizeShareUrl(Ljava/lang/String;)Ljava/lang/String; + move-result-object v$urlRegister + + # Wrap sanitized URL and return early to bypass ShareExtService + new-instance v$wrapperRegister, $observableWrapperClass + invoke-direct { v$wrapperRegister, v$urlRegister }, $observableWrapperClass->(Ljava/lang/String;)V + invoke-static { v$wrapperRegister }, $observableFactoryClass->LJ($observableInterfaceType)$observableReturnType + move-result-object v$urlRegister + return-object v$urlRegister + + :skip_sanitization + nop + """ + ) + } + } +} From a32ed30b4c5b0b1c9239b1cb1a7aeb06c1a2eb3c Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 26 Oct 2025 10:05:58 +0000 Subject: [PATCH 04/18] chore: Release v5.45.0-dev.1 [skip ci] # [5.45.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.44.0...v5.45.0-dev.1) (2025-10-26) ### Bug Fixes * **Instagram:** Update failing fingerprints on newer versions ([#6181](https://github.com/ReVanced/revanced-patches/issues/6181)) ([c73a03c](https://github.com/ReVanced/revanced-patches/commit/c73a03c9e18a12262939c974cdf16221221d1487)) ### Features * **TikTok:** Add `Sanitize sharing links` patch ([#6176](https://github.com/ReVanced/revanced-patches/issues/6176)) ([ef44eaa](https://github.com/ReVanced/revanced-patches/commit/ef44eaa119b9d6c5faec051e22d20f883d0da4f1)) --- CHANGELOG.md | 12 ++++++++++++ gradle.properties | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 069d20a74..7d8224d13 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +# [5.45.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.44.0...v5.45.0-dev.1) (2025-10-26) + + +### Bug Fixes + +* **Instagram:** Update failing fingerprints on newer versions ([#6181](https://github.com/ReVanced/revanced-patches/issues/6181)) ([c73a03c](https://github.com/ReVanced/revanced-patches/commit/c73a03c9e18a12262939c974cdf16221221d1487)) + + +### Features + +* **TikTok:** Add `Sanitize sharing links` patch ([#6176](https://github.com/ReVanced/revanced-patches/issues/6176)) ([ef44eaa](https://github.com/ReVanced/revanced-patches/commit/ef44eaa119b9d6c5faec051e22d20f883d0da4f1)) + # [5.44.0](https://github.com/ReVanced/revanced-patches/compare/v5.43.1...v5.44.0) (2025-10-24) diff --git a/gradle.properties b/gradle.properties index 0ec315418..71023d3f0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M org.gradle.parallel = true android.useAndroidX = true kotlin.code.style = official -version = 5.44.0 +version = 5.45.0-dev.1 From 6d01863ec70617d9abc864ce6686ed9764dd151d Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Sun, 26 Oct 2025 19:23:04 +0400 Subject: [PATCH 05/18] fix(YouTube - Force original audio): Fall back to visionOS and not Android Studio if Android VR is not available --- .../extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java index ef8069e85..30ef6c0b8 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java @@ -38,9 +38,9 @@ public class SpoofVideoStreamsPatch { } List availableClients = List.of( + VISIONOS, ANDROID_CREATOR, ANDROID_VR_1_43_32, - VISIONOS, IPADOS); app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch.setClientsToUse( From 13cf1724bf2f946c7129cab0db96721c90f9fe89 Mon Sep 17 00:00:00 2001 From: MarcaD <152095496+MarcaDian@users.noreply.github.com> Date: Sun, 26 Oct 2025 17:23:40 +0200 Subject: [PATCH 06/18] fix(YouTube Music - Hide category bar): Correctly hide the category bar in newer app targets (#6175) --- .../music/patches/HideCastButtonPatch.java | 2 +- .../music/patches/HideCategoryBarPatch.java | 7 +++-- .../layout/compactheader/Fingerprints.kt | 16 ++++------ .../layout/compactheader/HideCategoryBar.kt | 31 +++++++++---------- 4 files changed, 26 insertions(+), 30 deletions(-) diff --git a/extensions/music/src/main/java/app/revanced/extension/music/patches/HideCastButtonPatch.java b/extensions/music/src/main/java/app/revanced/extension/music/patches/HideCastButtonPatch.java index d694891ab..ab03ba8e4 100644 --- a/extensions/music/src/main/java/app/revanced/extension/music/patches/HideCastButtonPatch.java +++ b/extensions/music/src/main/java/app/revanced/extension/music/patches/HideCastButtonPatch.java @@ -19,6 +19,6 @@ public class HideCastButtonPatch { * Injection point */ public static void hideCastButton(View view) { - hideViewBy0dpUnderCondition(Settings.HIDE_CAST_BUTTON.get(), view); + hideViewBy0dpUnderCondition(Settings.HIDE_CAST_BUTTON, view); } } diff --git a/extensions/music/src/main/java/app/revanced/extension/music/patches/HideCategoryBarPatch.java b/extensions/music/src/main/java/app/revanced/extension/music/patches/HideCategoryBarPatch.java index f0433ccb1..79d772096 100644 --- a/extensions/music/src/main/java/app/revanced/extension/music/patches/HideCategoryBarPatch.java +++ b/extensions/music/src/main/java/app/revanced/extension/music/patches/HideCategoryBarPatch.java @@ -1,5 +1,8 @@ package app.revanced.extension.music.patches; +import static app.revanced.extension.shared.Utils.hideViewBy0dpUnderCondition; + +import android.view.View; import app.revanced.extension.music.settings.Settings; @SuppressWarnings("unused") @@ -8,7 +11,7 @@ public class HideCategoryBarPatch { /** * Injection point */ - public static boolean hideCategoryBar() { - return Settings.HIDE_CATEGORY_BAR.get(); + public static void hideCategoryBar(View view) { + hideViewBy0dpUnderCondition(Settings.HIDE_CATEGORY_BAR, view); } } diff --git a/patches/src/main/kotlin/app/revanced/patches/music/layout/compactheader/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/music/layout/compactheader/Fingerprints.kt index 234078c2a..76e03d2c9 100644 --- a/patches/src/main/kotlin/app/revanced/patches/music/layout/compactheader/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/music/layout/compactheader/Fingerprints.kt @@ -1,20 +1,16 @@ package app.revanced.patches.music.layout.compactheader import com.android.tools.smali.dexlib2.Opcode -import com.android.tools.smali.dexlib2.AccessFlags import app.revanced.patcher.fingerprint +import app.revanced.util.literal -internal val constructCategoryBarFingerprint = fingerprint { - accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR) +internal val chipCloudFingerprint = fingerprint { returns("V") - parameters("Landroid/content/Context;", "L", "L", "L") opcodes( - Opcode.IPUT_OBJECT, Opcode.CONST, - Opcode.INVOKE_VIRTUAL, - Opcode.MOVE_RESULT_OBJECT, - Opcode.IPUT_OBJECT, - Opcode.CONST, - Opcode.INVOKE_VIRTUAL + Opcode.CONST_4, + Opcode.INVOKE_STATIC, + Opcode.MOVE_RESULT_OBJECT ) + literal { chipCloud } } diff --git a/patches/src/main/kotlin/app/revanced/patches/music/layout/compactheader/HideCategoryBar.kt b/patches/src/main/kotlin/app/revanced/patches/music/layout/compactheader/HideCategoryBar.kt index 7668c9dc7..5a6270551 100644 --- a/patches/src/main/kotlin/app/revanced/patches/music/layout/compactheader/HideCategoryBar.kt +++ b/patches/src/main/kotlin/app/revanced/patches/music/layout/compactheader/HideCategoryBar.kt @@ -1,6 +1,6 @@ package app.revanced.patches.music.layout.compactheader -import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels +import app.revanced.patcher.extensions.InstructionExtensions.addInstruction import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patcher.patch.bytecodePatch import app.revanced.patches.all.misc.resources.addResources @@ -8,10 +8,14 @@ import app.revanced.patches.all.misc.resources.addResourcesPatch import app.revanced.patches.music.misc.extension.sharedExtensionPatch import app.revanced.patches.music.misc.settings.PreferenceScreen import app.revanced.patches.music.misc.settings.settingsPatch +import app.revanced.patches.shared.misc.mapping.get +import app.revanced.patches.shared.misc.mapping.resourceMappings import app.revanced.patches.shared.misc.settings.preference.SwitchPreference -import app.revanced.util.findFreeRegister import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction +internal var chipCloud = -1L + private set + private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/HideCategoryBarPatch;" @Suppress("unused") @@ -33,28 +37,21 @@ val hideCategoryBar = bytecodePatch( ) execute { + chipCloud = resourceMappings["layout", "chip_cloud"] + addResources("music", "layout.compactheader.hideCategoryBar") PreferenceScreen.GENERAL.addPreferences( SwitchPreference("revanced_music_hide_category_bar"), ) - constructCategoryBarFingerprint.method.apply { - val insertIndex = constructCategoryBarFingerprint.patternMatch!!.startIndex - val register = getInstruction(insertIndex - 1).registerA - val freeRegister = findFreeRegister(insertIndex, register) + chipCloudFingerprint.method.apply { + val targetIndex = chipCloudFingerprint.patternMatch!!.endIndex + val targetRegister = getInstruction(targetIndex).registerA - addInstructionsWithLabels( - insertIndex, - """ - invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->hideCategoryBar()Z - move-result v$freeRegister - if-eqz v$freeRegister, :show - const/16 v$freeRegister, 0x8 - invoke-virtual { v$register, v$freeRegister }, Landroid/view/View;->setVisibility(I)V - :show - nop - """ + addInstruction( + targetIndex + 1, + "invoke-static { v$targetRegister }, $EXTENSION_CLASS_DESCRIPTOR->hideCategoryBar(Landroid/view/View;)V" ) } } From 1b38b1a3c85bc5230008a2819d907a241ac84fcc Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 26 Oct 2025 15:27:23 +0000 Subject: [PATCH 07/18] chore: Release v5.45.0-dev.2 [skip ci] # [5.45.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.45.0-dev.1...v5.45.0-dev.2) (2025-10-26) ### Bug Fixes * **YouTube - Force original audio:** Fall back to visionOS and not Android Studio if Android VR is not available ([6d01863](https://github.com/ReVanced/revanced-patches/commit/6d01863ec70617d9abc864ce6686ed9764dd151d)) * **YouTube Music - Hide category bar:** Correctly hide the category bar in newer app targets ([#6175](https://github.com/ReVanced/revanced-patches/issues/6175)) ([13cf172](https://github.com/ReVanced/revanced-patches/commit/13cf1724bf2f946c7129cab0db96721c90f9fe89)) --- CHANGELOG.md | 8 ++++++++ gradle.properties | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d8224d13..c8788c5aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +# [5.45.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.45.0-dev.1...v5.45.0-dev.2) (2025-10-26) + + +### Bug Fixes + +* **YouTube - Force original audio:** Fall back to visionOS and not Android Studio if Android VR is not available ([6d01863](https://github.com/ReVanced/revanced-patches/commit/6d01863ec70617d9abc864ce6686ed9764dd151d)) +* **YouTube Music - Hide category bar:** Correctly hide the category bar in newer app targets ([#6175](https://github.com/ReVanced/revanced-patches/issues/6175)) ([13cf172](https://github.com/ReVanced/revanced-patches/commit/13cf1724bf2f946c7129cab0db96721c90f9fe89)) + # [5.45.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.44.0...v5.45.0-dev.1) (2025-10-26) diff --git a/gradle.properties b/gradle.properties index 71023d3f0..16f71b818 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M org.gradle.parallel = true android.useAndroidX = true kotlin.code.style = official -version = 5.45.0-dev.1 +version = 5.45.0-dev.2 From e9f45ce92695d5857473ff71c14b190bded28a73 Mon Sep 17 00:00:00 2001 From: MarcaD <152095496+MarcaDian@users.noreply.github.com> Date: Mon, 27 Oct 2025 19:10:49 +0200 Subject: [PATCH 08/18] feat(YouTube - Change Header): Use SVG for header logo (#6178) Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> --- .../shared/patches/CustomBrandingPatch.java | 4 +- .../youtube/patches/ChangeHeaderPatch.java | 33 ++- .../extension/youtube/settings/Settings.java | 40 +--- .../branding/BaseCustomBrandingPatch.kt | 39 ++-- .../branding/header/ChangeHeaderPatch.kt | 207 +++++++++--------- .../resources/addresources/values/arrays.xml | 8 +- .../revanced_header_custom_dark.png | Bin 0 -> 3561 bytes .../revanced_header_custom_light.png | Bin 0 -> 3554 bytes .../revanced_header_logo_dark.png | Bin 3479 -> 0 bytes .../revanced_header_logo_light.png | Bin 3465 -> 0 bytes .../revanced_header_logo_minimal_dark.png | Bin 3489 -> 0 bytes .../revanced_header_logo_minimal_light.png | Bin 3121 -> 0 bytes .../revanced_header_logo_dark.png | Bin 2176 -> 0 bytes .../revanced_header_logo_light.png | Bin 2165 -> 0 bytes .../revanced_header_logo_minimal_dark.png | Bin 2261 -> 0 bytes .../revanced_header_logo_minimal_light.png | Bin 2059 -> 0 bytes .../revanced_header_custom_dark.png | Bin 0 -> 4654 bytes .../revanced_header_custom_light.png | Bin 0 -> 4669 bytes .../revanced_header_logo_dark.png | Bin 4765 -> 0 bytes .../revanced_header_logo_light.png | Bin 4737 -> 0 bytes .../revanced_header_logo_minimal_dark.png | Bin 4641 -> 0 bytes .../revanced_header_logo_minimal_light.png | Bin 4183 -> 0 bytes .../revanced_header_custom_dark.png | Bin 0 -> 7163 bytes .../revanced_header_custom_light.png | Bin 0 -> 7217 bytes .../revanced_header_logo_dark.png | Bin 7298 -> 0 bytes .../revanced_header_logo_light.png | Bin 7180 -> 0 bytes .../revanced_header_logo_minimal_dark.png | Bin 7519 -> 0 bytes .../revanced_header_logo_minimal_light.png | Bin 6675 -> 0 bytes .../revanced_header_custom_dark.png | Bin 0 -> 9673 bytes .../revanced_header_custom_light.png | Bin 0 -> 9684 bytes .../revanced_header_logo_dark.png | Bin 9641 -> 0 bytes .../revanced_header_logo_light.png | Bin 9502 -> 0 bytes .../revanced_header_logo_minimal_dark.png | Bin 7592 -> 0 bytes .../revanced_header_logo_minimal_light.png | Bin 6870 -> 0 bytes .../drawable/revanced_header_minimal_dark.xml | 39 ++++ .../revanced_header_minimal_light.xml | 39 ++++ .../drawable/revanced_header_rounded_dark.xml | 60 +++++ .../revanced_header_rounded_light.xml | 60 +++++ 38 files changed, 364 insertions(+), 165 deletions(-) create mode 100644 patches/src/main/resources/change-header/drawable-hdpi/revanced_header_custom_dark.png create mode 100644 patches/src/main/resources/change-header/drawable-hdpi/revanced_header_custom_light.png delete mode 100644 patches/src/main/resources/change-header/drawable-hdpi/revanced_header_logo_dark.png delete mode 100644 patches/src/main/resources/change-header/drawable-hdpi/revanced_header_logo_light.png delete mode 100644 patches/src/main/resources/change-header/drawable-hdpi/revanced_header_logo_minimal_dark.png delete mode 100644 patches/src/main/resources/change-header/drawable-hdpi/revanced_header_logo_minimal_light.png delete mode 100644 patches/src/main/resources/change-header/drawable-mdpi/revanced_header_logo_dark.png delete mode 100644 patches/src/main/resources/change-header/drawable-mdpi/revanced_header_logo_light.png delete mode 100644 patches/src/main/resources/change-header/drawable-mdpi/revanced_header_logo_minimal_dark.png delete mode 100644 patches/src/main/resources/change-header/drawable-mdpi/revanced_header_logo_minimal_light.png create mode 100644 patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_custom_dark.png create mode 100644 patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_custom_light.png delete mode 100644 patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_logo_dark.png delete mode 100644 patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_logo_light.png delete mode 100644 patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_logo_minimal_dark.png delete mode 100644 patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_logo_minimal_light.png create mode 100644 patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_custom_dark.png create mode 100644 patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_custom_light.png delete mode 100644 patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_logo_dark.png delete mode 100644 patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_logo_light.png delete mode 100644 patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_logo_minimal_dark.png delete mode 100644 patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_logo_minimal_light.png create mode 100644 patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_custom_dark.png create mode 100644 patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_custom_light.png delete mode 100644 patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_logo_dark.png delete mode 100644 patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_logo_light.png delete mode 100644 patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_logo_minimal_dark.png delete mode 100644 patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_logo_minimal_light.png create mode 100644 patches/src/main/resources/change-header/drawable/revanced_header_minimal_dark.xml create mode 100644 patches/src/main/resources/change-header/drawable/revanced_header_minimal_light.xml create mode 100644 patches/src/main/resources/change-header/drawable/revanced_header_rounded_dark.xml create mode 100644 patches/src/main/resources/change-header/drawable/revanced_header_rounded_light.xml diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/patches/CustomBrandingPatch.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/patches/CustomBrandingPatch.java index c6cf761ca..ca4a8ff61 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/patches/CustomBrandingPatch.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/patches/CustomBrandingPatch.java @@ -150,14 +150,14 @@ public class CustomBrandingPatch { } for (ComponentName disable : componentsToDisable) { - // Use info logging because if the alias status become corrupt the app cannot launch. - Logger.printInfo(() -> "Disabling: " + disable.getClassName()); pm.setComponentEnabledSetting(disable, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); } + // Use info logging because if the alias status become corrupt the app cannot launch. ComponentName componentToEnableFinal = componentToEnable; Logger.printInfo(() -> "Enabling: " + componentToEnableFinal.getClassName()); + pm.setComponentEnabledSetting(componentToEnable, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0); } catch (Exception ex) { diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ChangeHeaderPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ChangeHeaderPatch.java index ed5bcec07..8d7462119 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ChangeHeaderPatch.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ChangeHeaderPatch.java @@ -17,15 +17,25 @@ public class ChangeHeaderPatch { DEFAULT(null, null), REGULAR("ytWordmarkHeader", "yt_ringo2_wordmark_header"), PREMIUM("ytPremiumWordmarkHeader", "yt_ringo2_premium_wordmark_header"), - REVANCED("revanced_header_logo", "revanced_header_logo"), - REVANCED_MINIMAL("revanced_header_logo_minimal", "revanced_header_logo_minimal"), - CUSTOM("custom_header", "custom_header"); + ROUNDED("revanced_header_rounded"), + MINIMAL("revanced_header_minimal"), + CUSTOM("revanced_header_custom"), + + // Old enum names for data migration. TODO: Eventually delete these. + @Deprecated + REVANCED(ROUNDED.attributeName), + @Deprecated + REVANCED_MINIMAL(MINIMAL.attributeName); @Nullable private final String attributeName; @Nullable private final String drawableName; + HeaderLogo(String attributeName) { + this(Objects.requireNonNull(attributeName), Objects.requireNonNull(attributeName)); + } + HeaderLogo(@Nullable String attributeName, @Nullable String drawableName) { this.attributeName = attributeName; this.drawableName = drawableName; @@ -42,9 +52,8 @@ public class ChangeHeaderPatch { final int identifier = Utils.getResourceIdentifier(attributeName, "attr"); if (identifier == 0) { - // Identifier is zero if custom header setting was included in imported settings - // and a custom image was not included during patching. - Logger.printDebug(() -> "Could not find attribute: " + drawableName); + // Should never happen. + Logger.printException(() -> "Could not find attribute: " + drawableName); Settings.HEADER_LOGO.resetToDefault(); return null; } @@ -63,12 +72,14 @@ public class ChangeHeaderPatch { : "_light"); final int identifier = Utils.getResourceIdentifier(drawableFullName, "drawable"); - if (identifier == 0) { - Logger.printDebug(() -> "Could not find drawable: " + drawableFullName); - Settings.HEADER_LOGO.resetToDefault(); - return null; + if (identifier != 0) { + return Utils.getContext().getDrawable(identifier); } - return Utils.getContext().getDrawable(identifier); + + // Should never happen. + Logger.printException(() -> "Could not find drawable: " + drawableFullName); + Settings.HEADER_LOGO.resetToDefault(); + return null; } } diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java index 747a4f048..0dd82d240 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java @@ -2,7 +2,6 @@ package app.revanced.extension.youtube.settings; import static java.lang.Boolean.FALSE; import static java.lang.Boolean.TRUE; -import static app.revanced.extension.shared.settings.Setting.migrateOldSettingToNew; import static app.revanced.extension.shared.settings.Setting.parent; import static app.revanced.extension.shared.settings.Setting.parentsAll; import static app.revanced.extension.shared.settings.Setting.parentsAny; @@ -17,7 +16,6 @@ import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerH import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerHideSubtextsAvailability; import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerHorizontalDragAvailability; import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerType; -import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerType.MINIMAL; import static app.revanced.extension.youtube.patches.OpenShortsInRegularPlayerPatch.ShortsPlayerType; import static app.revanced.extension.youtube.patches.SeekbarThumbnailsPatch.SeekbarThumbnailsHighQualityAvailability; import static app.revanced.extension.youtube.patches.components.PlayerFlyoutMenuItemsFilter.HideAudioFlyoutMenuAvailability; @@ -41,7 +39,6 @@ import app.revanced.extension.shared.settings.IntegerSetting; import app.revanced.extension.shared.settings.LongSetting; import app.revanced.extension.shared.settings.Setting; import app.revanced.extension.shared.settings.StringSetting; -import app.revanced.extension.shared.settings.preference.SharedPrefCategory; import app.revanced.extension.shared.spoof.ClientType; import app.revanced.extension.youtube.patches.AlternativeThumbnailsPatch.DeArrowAvailability; import app.revanced.extension.youtube.patches.AlternativeThumbnailsPatch.StillImagesAvailability; @@ -452,14 +449,7 @@ public class Settings extends BaseSettings { public static final StringSetting SB_CATEGORY_UNSUBMITTED_COLOR = new StringSetting("sb_unsubmitted_color", "#FFFFFFFF", false, false); // Deprecated migrations - private static final BooleanSetting DEPRECATED_AUTO_REPEAT = new BooleanSetting("revanced_auto_repeat", FALSE); - private static final BooleanSetting DEPRECATED_HIDE_PLAYER_BUTTONS = new BooleanSetting("revanced_hide_player_buttons", FALSE, true); - private static final BooleanSetting DEPRECATED_HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER = new BooleanSetting("revanced_hide_video_quality_menu_footer", FALSE); - private static final IntegerSetting DEPRECATED_SWIPE_OVERLAY_BACKGROUND_ALPHA = new IntegerSetting("revanced_swipe_overlay_background_alpha", 127); private static final StringSetting DEPRECATED_SEEKBAR_CUSTOM_COLOR_PRIMARY = new StringSetting("revanced_seekbar_custom_color_value", "#FF0033"); - private static final BooleanSetting DEPRECATED_DISABLE_SUGGESTED_VIDEO_END_SCREEN = new BooleanSetting("revanced_disable_suggested_video_end_screen", FALSE); - private static final BooleanSetting DEPRECATED_RESTORE_OLD_VIDEO_QUALITY_MENU = new BooleanSetting("revanced_restore_old_video_quality_menu", TRUE); - private static final BooleanSetting DEPRECATED_AUTO_CAPTIONS = new BooleanSetting("revanced_auto_captions", FALSE); private static final FloatSetting DEPRECATED_SB_CATEGORY_SPONSOR_OPACITY = new FloatSetting("sb_sponsor_opacity", 0.8f, false, false); private static final FloatSetting DEPRECATED_SB_CATEGORY_SELF_PROMO_OPACITY = new FloatSetting("sb_selfpromo_opacity", 0.8f, false, false); @@ -475,17 +465,12 @@ public class Settings extends BaseSettings { static { // region Migration - migrateOldSettingToNew(DEPRECATED_AUTO_REPEAT, LOOP_VIDEO); - migrateOldSettingToNew(DEPRECATED_HIDE_PLAYER_BUTTONS, HIDE_PLAYER_PREVIOUS_NEXT_BUTTONS); - migrateOldSettingToNew(DEPRECATED_HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER, HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER); - migrateOldSettingToNew(DEPRECATED_DISABLE_SUGGESTED_VIDEO_END_SCREEN, HIDE_END_SCREEN_SUGGESTED_VIDEO); - migrateOldSettingToNew(DEPRECATED_RESTORE_OLD_VIDEO_QUALITY_MENU, ADVANCED_VIDEO_QUALITY_MENU); - migrateOldSettingToNew(DEPRECATED_AUTO_CAPTIONS, DISABLE_AUTO_CAPTIONS); - - // Migrate renamed enum. - //noinspection deprecation - if (MINIPLAYER_TYPE.get() == MiniplayerType.PHONE) { - MINIPLAYER_TYPE.save(MINIMAL); + // Migrate renamed change header enums. + if (HEADER_LOGO.get() == HeaderLogo.REVANCED) { + HEADER_LOGO.save(HeaderLogo.ROUNDED); + } + if (HEADER_LOGO.get() == HeaderLogo.REVANCED_MINIMAL) { + HEADER_LOGO.save(HeaderLogo.MINIMAL); } // Migrate old single color seekbar with a slightly brighter accent color based on the primary. @@ -512,11 +497,6 @@ public class Settings extends BaseSettings { DEPRECATED_SEEKBAR_CUSTOM_COLOR_PRIMARY.resetToDefault(); } - if (!DEPRECATED_SWIPE_OVERLAY_BACKGROUND_ALPHA.isSetToDefault()) { - SWIPE_OVERLAY_OPACITY.save(DEPRECATED_SWIPE_OVERLAY_BACKGROUND_ALPHA.get() / 255); - DEPRECATED_SWIPE_OVERLAY_BACKGROUND_ALPHA.resetToDefault(); - } - // Old spoof versions that no longer work, // or is spoofing to a version the same or newer than this app. if (!SPOOF_APP_VERSION_TARGET.isSetToDefault() && @@ -534,13 +514,7 @@ public class Settings extends BaseSettings { // RYD requires manually migrating old settings since the lack of // a "revanced_" on the old setting causes duplicate key exceptions during export. - SharedPrefCategory revancedPrefs = Setting.preferences; - Setting.migrateFromOldPreferences(revancedPrefs, RYD_USER_ID, "ryd_user_id"); - Setting.migrateFromOldPreferences(revancedPrefs, RYD_ENABLED, "ryd_enabled"); - Setting.migrateFromOldPreferences(revancedPrefs, RYD_DISLIKE_PERCENTAGE, "ryd_dislike_percentage"); - Setting.migrateFromOldPreferences(revancedPrefs, RYD_COMPACT_LAYOUT, "ryd_compact_layout"); - Setting.migrateFromOldPreferences(revancedPrefs, RYD_ESTIMATED_LIKE, "ryd_estimated_like"); - Setting.migrateFromOldPreferences(revancedPrefs, RYD_TOAST_ON_CONNECTION_ERROR, "ryd_toast_on_connection_error"); + Setting.migrateFromOldPreferences(Setting.preferences, RYD_USER_ID, "ryd_user_id"); // Migrate old saved data. Must be done here before the settings can be used by any other code. applyOldSbOpacityToColor(SB_CATEGORY_SPONSOR_COLOR, DEPRECATED_SB_CATEGORY_SPONSOR_OPACITY); diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/layout/branding/BaseCustomBrandingPatch.kt b/patches/src/main/kotlin/app/revanced/patches/shared/layout/branding/BaseCustomBrandingPatch.kt index 5381131f2..d3e718085 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/layout/branding/BaseCustomBrandingPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/layout/branding/BaseCustomBrandingPatch.kt @@ -36,13 +36,13 @@ import org.w3c.dom.NodeList import java.io.File import java.util.logging.Logger -private val mipmapDirectories = arrayOf( +private val mipmapDirectories = mapOf( // Target app does not have ldpi icons. - "mipmap-mdpi", - "mipmap-hdpi", - "mipmap-xhdpi", - "mipmap-xxhdpi", - "mipmap-xxxhdpi" + "mipmap-mdpi" to "108x108 px", + "mipmap-hdpi" to "162x162 px", + "mipmap-xhdpi" to "216x216 px", + "mipmap-xxhdpi" to "324x324 px", + "mipmap-xxxhdpi" to "432x432 px" ) private val iconStyleNames = arrayOf( @@ -104,10 +104,13 @@ internal fun baseCustomBrandingPatch( Folder with images to use as a custom icon. The folder must contain one or more of the following folders, depending on the DPI of the device: - ${mipmapDirectories.joinToString("\n") { "- $it" }} + ${mipmapDirectories.keys.joinToString("\n") { "- $it" }} Each of the folders must contain all of the following files: ${USER_CUSTOM_ADAPTIVE_FILE_NAMES.joinToString("\n")} + + The image dimensions must be as follows: + ${mipmapDirectories.map { (dpi, dim) -> "- $dpi: $dim" }.joinToString("\n")} Optionally, the path contains a 'drawable' folder with any of the monochrome icon files: $USER_CUSTOM_MONOCHROME_FILE_NAME @@ -249,7 +252,7 @@ internal fun baseCustomBrandingPatch( ) // Copy template icon files. - mipmapDirectories.forEach { dpi -> + mipmapDirectories.keys.forEach { dpi -> copyResources( "custom-branding", ResourceGroup( @@ -405,23 +408,24 @@ internal fun baseCustomBrandingPatch( ) } - val sourceFolders = iconPathFile.listFiles { file -> file.isDirectory } - ?: throw PatchException("The custom icon path contains no subfolders: " + - iconPathFile.absolutePath) - val resourceDirectory = get("res") var copiedFiles = false // For each source folder, copy the files to the target resource directories. - sourceFolders.forEach { dpiSourceFolder -> + iconPathFile.listFiles { + file -> file.isDirectory && file.name in mipmapDirectories + }!!.forEach { dpiSourceFolder -> val targetDpiFolder = resourceDirectory.resolve(dpiSourceFolder.name) - if (!targetDpiFolder.exists()) return@forEach + if (!targetDpiFolder.exists()) { + // Should never happen. + throw IllegalStateException("Resource not found: $dpiSourceFolder") + } val customFiles = dpiSourceFolder.listFiles { file -> file.isFile && file.name in USER_CUSTOM_ADAPTIVE_FILE_NAMES }!! - if (customFiles.size > 0 && customFiles.size != USER_CUSTOM_ADAPTIVE_FILE_NAMES.size) { + if (customFiles.isNotEmpty() && customFiles.size != USER_CUSTOM_ADAPTIVE_FILE_NAMES.size) { throw PatchException("Must include all required icon files " + "but only found " + customFiles.map { it.name }) } @@ -451,8 +455,9 @@ internal fun baseCustomBrandingPatch( } if (!copiedFiles) { - throw PatchException("Could not find any replacement images in " + - "patch option path: " + iconPathFile.absolutePath) + throw PatchException("Expected to find directories and files: " + + USER_CUSTOM_ADAPTIVE_FILE_NAMES.contentToString() + + "\nBut none were found in the provided option file path: " + iconPathFile.absolutePath) } } diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/branding/header/ChangeHeaderPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/branding/header/ChangeHeaderPatch.kt index 26a10aacf..1a5e131ba 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/branding/header/ChangeHeaderPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/branding/header/ChangeHeaderPatch.kt @@ -24,15 +24,40 @@ import java.io.File private val variants = arrayOf("light", "dark") -private const val EXTENSION_CLASS_DESCRIPTOR = - "Lapp/revanced/extension/youtube/patches/ChangeHeaderPatch;" +private val targetResourceDirectoryNames = mapOf( + "drawable-hdpi" to "194x72 px", + "drawable-xhdpi" to "258x96 px", + "drawable-xxhdpi" to "387x144 px", + "drawable-xxxhdpi" to "512x192 px" +) + +/** + * Header logos built into this patch. + */ +private val logoResourceNames = arrayOf( + "revanced_header_minimal", + "revanced_header_rounded", +) + +/** + * Custom header resource/file name. + */ +private const val CUSTOM_HEADER_RESOURCE_NAME = "revanced_header_custom" + +/** + * Custom header resource/file names. + */ +private val customHeaderResourceFileNames = variants.map { variant -> + "${CUSTOM_HEADER_RESOURCE_NAME}_$variant.png" +}.toTypedArray() + +private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/patches/ChangeHeaderPatch;" private val changeHeaderBytecodePatch = bytecodePatch { dependsOn(resourceMappingPatch) execute { - // Resources are not used during patching, but extension code uses these - // images so verify they exist. + // Verify images exist. Resources are not used during patching but extension code does. arrayOf( "yt_ringo2_wordmark_header", "yt_ringo2_premium_wordmark_header" @@ -62,28 +87,6 @@ private val changeHeaderBytecodePatch = bytecodePatch { } } -private val targetResourceDirectoryNames = mapOf( - "xxxhdpi" to "512px x 192px", - "xxhdpi" to "387px x 144px", - "xhdpi" to "258px x 96px", - "hdpi" to "194px x 72px", - "mdpi" to "129px x 48px" -).mapKeys { (dpi, _) -> "drawable-$dpi" } - - -/** - * Header logos built into this patch. - */ -private val logoResourceNames = arrayOf( - "revanced_header_logo_minimal", - "revanced_header_logo", -) - -/** - * Custom header resource/file name. - */ -private const val CUSTOM_HEADER_RESOURCE_NAME = "custom_header" - @Suppress("unused") val changeHeaderPatch = resourcePatch( name = "Change header", @@ -110,7 +113,7 @@ val changeHeaderPatch = resourcePatch( ${targetResourceDirectoryNames.keys.joinToString("\n") { "- $it" }} Each of the folders must contain all of the following files: - ${variants.joinToString("\n") { variant -> "- ${CUSTOM_HEADER_RESOURCE_NAME}_$variant.png" }} + ${customHeaderResourceFileNames.joinToString("\n")} The image dimensions must be as follows: ${targetResourceDirectoryNames.map { (dpi, dim) -> "- $dpi: $dim" }.joinToString("\n")} @@ -120,67 +123,41 @@ val changeHeaderPatch = resourcePatch( execute { addResources("youtube", "layout.branding.changeHeaderPatch") - fun getLightDarkFileNames(vararg resourceNames: String): Array = - variants.flatMap { variant -> - resourceNames.map { resource -> "${resource}_$variant.png" } - }.toTypedArray() - - val logoResourceFileNames = getLightDarkFileNames(*logoResourceNames) - copyResources( - "change-header", - ResourceGroup("drawable-hdpi", *logoResourceFileNames), - ResourceGroup("drawable-mdpi", *logoResourceFileNames), - ResourceGroup("drawable-xhdpi", *logoResourceFileNames), - ResourceGroup("drawable-xxhdpi", *logoResourceFileNames), - ResourceGroup("drawable-xxxhdpi", *logoResourceFileNames), - ) - - if (custom != null) { - val customFile = File(custom!!) - if (!customFile.exists()) { - throw PatchException("The custom icon path cannot be found: " + - customFile.absolutePath + PreferenceScreen.GENERAL_LAYOUT.addPreferences( + if (custom == null) { + ListPreference("revanced_header_logo") + } else { + ListPreference( + key = "revanced_header_logo", + entriesKey = "revanced_header_logo_custom_entries", + entryValuesKey = "revanced_header_logo_custom_entry_values" ) } + ) - if (!customFile.isDirectory) { - throw PatchException("The custom icon path must be a folder: " - + customFile.absolutePath) + logoResourceNames.forEach { logo -> + variants.forEach { variant -> + copyResources( + "change-header", + ResourceGroup( + "drawable", + logo + "_" + variant + ".xml" + ) + ) } + } - val sourceFolders = customFile.listFiles { file -> file.isDirectory } - ?: throw PatchException("The custom icon path contains no subfolders: " + - customFile.absolutePath) - - val customResourceFileNames = getLightDarkFileNames(CUSTOM_HEADER_RESOURCE_NAME) - - var copiedFiles = false - - // For each source folder, copy the files to the target resource directories. - sourceFolders.forEach { dpiSourceFolder -> - val targetDpiFolder = get("res").resolve(dpiSourceFolder.name) - if (!targetDpiFolder.exists()) return@forEach - - val customFiles = dpiSourceFolder.listFiles { file -> - file.isFile && file.name in customResourceFileNames - }!! - - if (customFiles.size > 0 && customFiles.size != variants.size) { - throw PatchException("Both light/dark mode images " + - "must be specified but only found: " + customFiles.map { it.name }) - } - - customFiles.forEach { imgSourceFile -> - val imgTargetFile = targetDpiFolder.resolve(imgSourceFile.name) - imgSourceFile.copyTo(imgTargetFile) - - copiedFiles = true - } - } - - if (!copiedFiles) { - throw PatchException("No custom header images found in " + - "the provided path: " + customFile.absolutePath) + // Copy custom template. Images are only used if settings + // are imported and a custom header is enabled. + targetResourceDirectoryNames.keys.forEach { dpi -> + variants.forEach { variant -> + copyResources( + "change-header", + ResourceGroup( + dpi, + *customHeaderResourceFileNames + ) + ) } } @@ -199,9 +176,7 @@ val changeHeaderPatch = resourcePatch( addAttributeReference(logoName) } - if (custom != null) { - addAttributeReference(CUSTOM_HEADER_RESOURCE_NAME) - } + addAttributeReference(CUSTOM_HEADER_RESOURCE_NAME) } // Add custom drawables to all styles that use the regular and premium logo. @@ -227,22 +202,58 @@ val changeHeaderPatch = resourcePatch( addDrawableElement(document, logoName, mode) } - if (custom != null) { - addDrawableElement(document, CUSTOM_HEADER_RESOURCE_NAME, mode) - } + addDrawableElement(document, CUSTOM_HEADER_RESOURCE_NAME, mode) } } - PreferenceScreen.GENERAL_LAYOUT.addPreferences( - if (custom == null) { - ListPreference("revanced_header_logo") - } else { - ListPreference( - key = "revanced_header_logo", - entriesKey = "revanced_header_logo_custom_entries", - entryValuesKey = "revanced_header_logo_custom_entry_values" + // Copy user provided images last, so if an exception is thrown due to bad input. + if (custom != null) { + val customFile = File(custom!!.trim()) + if (!customFile.exists()) { + throw PatchException("The custom header path cannot be found: " + + customFile.absolutePath ) } - ) + + if (!customFile.isDirectory) { + throw PatchException("The custom header path must be a folder: " + + customFile.absolutePath) + } + + var copiedFiles = false + + // For each source folder, copy the files to the target resource directories. + customFile.listFiles { + file -> file.isDirectory && file.name in targetResourceDirectoryNames + }!!.forEach { dpiSourceFolder -> + val targetDpiFolder = get("res").resolve(dpiSourceFolder.name) + if (!targetDpiFolder.exists()) { + // Should never happen. + throw IllegalStateException("Resource not found: $dpiSourceFolder") + } + + val customFiles = dpiSourceFolder.listFiles { file -> + file.isFile && file.name in customHeaderResourceFileNames + }!! + + if (customFiles.isNotEmpty() && customFiles.size != variants.size) { + throw PatchException("Both light/dark mode images " + + "must be specified but only found: " + customFiles.map { it.name }) + } + + customFiles.forEach { imgSourceFile -> + val imgTargetFile = targetDpiFolder.resolve(imgSourceFile.name) + imgSourceFile.copyTo(target = imgTargetFile, overwrite = true) + + copiedFiles = true + } + } + + if (!copiedFiles) { + throw PatchException("Expected to find directories and files: " + + customHeaderResourceFileNames.contentToString() + + "\nBut none were found in the provided option file path: " + customFile.absolutePath) + } + } } } diff --git a/patches/src/main/resources/addresources/values/arrays.xml b/patches/src/main/resources/addresources/values/arrays.xml index 980f0c20c..439261474 100644 --- a/patches/src/main/resources/addresources/values/arrays.xml +++ b/patches/src/main/resources/addresources/values/arrays.xml @@ -397,8 +397,8 @@ DEFAULT REGULAR PREMIUM - REVANCED - REVANCED_MINIMAL + ROUNDED + MINIMAL @string/revanced_header_logo_entry_1 @@ -412,8 +412,8 @@ DEFAULT REGULAR PREMIUM - REVANCED - REVANCED_MINIMAL + ROUNDED + MINIMAL CUSTOM diff --git a/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_custom_dark.png b/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_custom_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..8a9dc3177f10955fefb758caac2119c9c035f1a8 GIT binary patch literal 3561 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 BgIfRq literal 0 HcmV?d00001 diff --git a/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_custom_light.png b/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_custom_light.png new file mode 100644 index 0000000000000000000000000000000000000000..64ca9cf9a25333fefcb7bdb902ef881aa6daec4f GIT binary patch literal 3554 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 literal 0 HcmV?d00001 diff --git a/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_logo_dark.png b/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_logo_dark.png deleted file mode 100644 index 558fd728de6bb0bad86f55993826514f0002596d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3479 zcmV;I4QTR-P)u9e01VejL_t(|0qntn00000fS~=U7pVdO0000000000 z0001H-!6cn+8#KL-`Cw$v;~Ttlpt#rU84A0#cr_^?C$Pv?CvV;?!fM@LiYRr?+i0% z&Tw~O*IM7)&&*Nb+!F)mx3`WqEIyz9$Du`In@sU;IB%hEi-Rjmw7IaVMB7XMFBca2 zwmdY&yTRgNMQXHcn?K?=MWgvINyruP`4G=Ky;kTtUOgW$l50WZGAx$@N3+Vm)6J1y z^@sK?UG*D9qxn$9EAbx>_NqT}TeIRie`>~d(H%p$JlOHg~2JqeHu@zU9jM1ibnGx>F812cTt(1_m788 zVNcK)Iu@%=KIfdqMW5;7?v#U8MPf(_9Eq`?*mvJ!uGJ4tPYw$#aue;1E5k$ zy7{m?a11-bXVKTM^-@Knu|=JHhmv`?Z;` zXf(DY&Zm)nS!5!!LMD+fOWwB-0#V$YU6~v>h82npddZptXM&}Zr$+7nvad8I z85pycDDSxJ76joMa8@onNA?VGR9+L{hb+L%vEInS72Bo-Ax77!PoIA`6W~!hgT*R> z@aWMa+}(1qviu;9gicFWwg!wMr%Mj5T)D!YJ$o|MudZMvjPs~oy6bccf)Jo`%vZnw zWbG9*fRBK`fWLu{OdRtGa2sKang04BJO{p0B+^`+f!~3T6-$VD{|&eSKUvuJGr$3` z2R^Z|?Jt16HJ5w9Pok|21)*leVMn@D+fL4Gg)+5Z!@|M7LZFz+@lz45n_9fU zNrV-09lruYfosU_19Jd(mHr9?d(z7EwBQT@9w8WjZGfkuMufRKup3B4c$n6&tC_ah zfRVsGgcKkN2nRmOAUHjM8wf9frNB;`2ttF%c~6^FUTM)a{ec4qxOnj*4h{}xg zkQGrG*9}=cQO94v3Cw#5l#%;Hhj1ASF2dl81jtYKKy^~QonE*(KZK>&2`-rb^p z!^-t1uErk9`L(ip13}n@utBb)0qI=51)d{xRT;Of+#Wko$9gj7Ch(0M z1dE&j`Em!COXfTUab^ID0x8ID0~df)WUW*#{Z5kJW8js|1VN{3o4rBoekzvfZP9{t za&qFvjTI3NjOkN7?gz)gfjKyKjEv@vHO3(6n}lYm^n z-#~TXF*0A#o(jm$13|!FfCsPz*+g;Xz(Uh*!Br_XTFpa1EPT;z&hXt>9sTygqkXS+94Yv z>bQrn$;6yofgj}W5sz#l&`YH}Mi?wU6eJT&j9c@)2f26P0o+FzoA$kLkd06>2^fpzrlhqkfUKE`G5l@fX1Q{`gH(u| zZq>r|_xCq``ZI9gK;zeR=+FUx=;&yx`YRngf~pNq;Njo?pG*c}Kd?p=X(8MKzEtVs z9F}V&_dx=}OW;S~Ti_YOP?fX51=QUF)&qu22BEm30=S|QgddTOu^@|8ueW@hQ*_ zSv{3LHY3~veg=LrS5&U&3m}UE!jP4g+t3AB5>O3rNUQ%E!P+2PmV%H5c!IFbf*|xk zRwNTYt8c{FPcqcR7*%Z|2<0kGJ5r_DX|lN%vug3`^?Cr3lam2x*|Mco{WvRKXdx3-$;2G)7GclJkm{!H)?p0w1&=lw=LiE;x@ClGadJlk9WG{g{qAg*7 z0hz(Xo90u%*Yeg1t|Pk->;*2_$O|>0RLs-^mD(ngyJ*CF*@m4Xj}GJbW%P3|D1zld zF#SnXRb?;I6f(9I_`%G7)_GuJYsN1s$2$UdG3^ns@y!N70Gxnhn3rne(QF)$f_aw! zR}(kG4^U@YLGTLbRxGmJSt{0Fi=CarI}bvc*!e`ZPsTI2XIKV7$O_y=l(Hs{`vbU+ zIBvVzrZ6BH*hzY4fhNFb8O&!ga2L5OGjn`?U_UYgumNxbx+D5&BHB?Lc??ez{U1df zGgzhmN1&gHKyCqi&CJ~sSOUC4b{FU+hhGM`1B(FzvVA~2V$NHX_pPLUYEoqUMGBW~ z@lHdK&o>t1xMgb2IjOuSz+ZqT;14(hpS6j1X*)>5Zd7+!EFzxdIfgPp=dO= zz&oN})$q>e32t`?7q=pBH3ZJt@(|E+C*fT#;uSTZrJ~W;60hjNJ;S*(69yWtr-YEVG! z(O)YX&3}nkjo#mRR3FmNtKO73zReaK@N2y?xkQ`QmrAr+dEU4AqJ!S`r!FX_9~S2k z5&!f5+Jj>P0001lLH18=jUB)M000000000000000=sTJ5l(1rPNxA?4002ovPDHLk FV1kBRZ_@w( diff --git a/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_logo_light.png b/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_logo_light.png deleted file mode 100644 index 50c5583d139f8ae1c956b1c21fe4cf8abdcc5c42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3465 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 diff --git a/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_logo_minimal_dark.png b/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_logo_minimal_dark.png deleted file mode 100644 index 2428aee24f44af83aaf6f9df0f8286bbfd999c72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3489 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 P00000NkvXXu0mjfn#E?o diff --git a/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_logo_minimal_light.png b/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_logo_minimal_light.png deleted file mode 100644 index c444e6e0dac59599efe412018ced47c7d98cac36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3121 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 diff --git a/patches/src/main/resources/change-header/drawable-mdpi/revanced_header_logo_minimal_dark.png b/patches/src/main/resources/change-header/drawable-mdpi/revanced_header_logo_minimal_dark.png deleted file mode 100644 index 1bf077fb8927236b561bb7f3b7399c6fc06288c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2261 zcmV;`2rBo9P)u9e00faP8S20w?ZcXQl|; z_drxsRH&N+u9q@`1REs*QVOgl1Y4V6GZWxWF0=|vfb$GTI)w;W4JMgAi-fJuCrzoWiWjl)@Anr#D$0HsQmqH48jQ0ch5)HQz%YL~aN1t?o& zRcj(IU0Uf{J0E;y@-gxFh__@Tq5YeW9H2?u?~=Y6@C-V^?O&&J(L_W+c>fpt9nGA1 z3FHY!T{4RV{Qdo@b?er2`R;Y{%rHI zdWJSDVa|rMrmLHf8<*r&SXaCV7;uGys#ipNv*A*Xe%!U)l;>xy(E)C&jPu> zu#;Q$2eRqoDRjJus1WiJK)4OPaG=EN*RKny_psskK8aJB86(2>L+pV==LW$8dV(dsddFmvEgoLR5-)iUx6t_kK#k2kzmTgDot7Iw{Gk=JZ zy?y((n%GLRvtFXHvLH2LdyRpOz*NACW$nZO=VRHgLN*v#0P_4G!v&TdXT31s8OxUO zY8EcOlbR)X>N?gl(OJm|aczN6i{caUFT zIQa#H)6SjS>4zVFP;IPdb0wH)LIPuEzh|etQDrgczp!qU7?AlucP#JyRSswDV)+WO z)ZS!SUzYU%h?n0W?LEo>y@B72)q-_POA;VIq4gVX*fdCG5EpxVKB4Cav;dNLyPC}_ z$_@4YKtJ9>zT*BL`0&?Ij7@&+*~gtu0_^1j?2#ZeG?WSyC_qo1JVCTjf=ZMqhVoM? zSg@dKbL0kbpcx5xKt9Mw!C1D96F$nt$WDUJL1B9u%a(I}3D*}3ot%c#Win>jn>TOD zXe3ytZCTA({)8iszHH(V5MbjlxWj>ONdmeHdx4sbRjIKO)N|xF0#8p*TCiXNO`STG z{`>DgTC`}9k~wsZ4Ai%=9kk=Epa2MQi)BB^6FG6>16oy}E>Hug0F*{kA)()r$#suU z^S8NgHzQm`+ZM6ceg@P8ssQiINPv}Rz4rc1x&LFH;qAHp3W(LC1yNqdddHAeLS9FK z%VilJKo@ZUjnnMyaykh>fEWLR#tcU}udvq{_?8Kg9(g`N{E3F13Ma+nY2xh5qIJA%+a==8T7O z49l1BO7uDF>m>M%-(`ap54(qK}QpGO)dQ zhFq0_-+%`!OBE6{bA$wNsJaud0A)viQEYB@V<{GT)oaDhbZ&mdZJ1?)5dC!m2$-_(R1fUzriB=9^eh3$<@LpR* z9W7k zM;(600YGkS33>V1&i|<%Q9==%58lc{VoJd_-m2TkbnfJGKPPv#{f{EY|6v4Dbxr3^ zuKV9YIPybE{#;@Z2sZkpb0?Q4LNz$^Bs*6m{Bam00000NkvXXu0mjf?LH(A diff --git a/patches/src/main/resources/change-header/drawable-mdpi/revanced_header_logo_minimal_light.png b/patches/src/main/resources/change-header/drawable-mdpi/revanced_header_logo_minimal_light.png deleted file mode 100644 index a94f9918f68fddae2cec54817c8ea05abccf0521..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2059 zcmV+m2=w=fP)u9e00&D+L_t(|0qntn00000fS~=U7pVdO0001h*|i5) zN7^=whoGe!JQ7)`{nKIfP{kw_ek0+&)ew~#Su1V)3)ozTfZjz>0n zV||i|93&%Da*zif;x*~k-x<5)=jT^YxHaBu0A4FEFHe~nnaVB7S89Hi(h9Nzm=7!q ztjo<+uzi`Xp&2%Dg6AVF#!@W9ax*^x_aX=XPcFw2e2wn#W_v8gT$CeT^EMXaTEs3C z>*ipm0UAKf&CMFM{kCc;t=3Vs+v?!z5dq8xmif11+R`Gn4Rw8RixWJ*Kw*3jAEM1j z$f$ug4?*||-4L(&2Etvjd3{Q89{m?&01cLA*e;TY=st7B2<#l9}UPxsPse~8jyyMAl!!7q@bW+kX<+% z*9pqX%F@51|JC^yU!aQ{&esu@>)Q zGuSyDQy^mjt_{+JyWwxhn2q@{ZvqN^Shzcaq@*OBdB&L?*%Ok;rcma36f!2_cgVQKZYWPPjfQ|2Hvxq@ zKU@=V(HM9)&zUnv`yaHIwrjmi+qYez{SMeubLY+t6q#)zJvX=@OcUIWGE`tQoMjbg zZxH8V2y;;lH_t(M)4D@g0^v}ztQ-FD{Nrlz8oscG?5(i~!f|HVfspYu@==I)Aaq&# ze+^**`Xe2uK*nCkMMse4-vyoMur6AEw2oJW?ihpx8)785#1tx|K7IP=jyvwq4?ldX z)Qmi(rswIq@4nGpcik0O$2O5hg3H1*K_}Ls-ArZtj=r9M$X_@TC*uS>31Oaf%k(CM z7tQNxbV2aLP8|-yt#}73A)MoBf_BgOy%926kcoB($HUHEsD%$FKpAqY06R690a<>>hn{B_heB9`EV!wJ zjGf@-8ni=}x!4_U((y9n@hAGj&Yh6Q5(xKfh))oIinb9DZ3Fyl&gsE20De@!n^yQy z2Ro_Q3m4%u3`DSWLmNiGk8*fZfa7o(4ulT{@S_wC$%h|p=m|GI422(Auv3K-a0w1U zK7yqgr{N;(hCT?EMx2H7Fa(wGV>84y+$9X)`k)=Akn7JJqrHHqkxn9U_i^$O(SM^T z{5Onfs-v7l;`h6S6tZi5zFguq5XU&tiTflPVHCw2ZHgN8yPxS8Mu2UdjU$QhMUfPW zdM?JAA_v7fVI0kH0e20l&c>HSs;a7bQ{dr@4i_pBbh>VekL|002ovPDHLkV1f!%tNZ`} diff --git a/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_custom_dark.png b/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_custom_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..c2ab1e4554c36515a652b6cf1c9b87194b04aff4 GIT binary patch literal 4654 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 MmI1m(!#?JJ03>CExBvhE literal 0 HcmV?d00001 diff --git a/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_custom_light.png b/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_custom_light.png new file mode 100644 index 0000000000000000000000000000000000000000..f2eef9a25c21b07761ceed1d1ee484d8f3f7089f GIT binary patch literal 4669 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 X8gWlvY-j7gZp#BL1I=1>``G^nXa|Ob literal 0 HcmV?d00001 diff --git a/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_logo_dark.png b/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_logo_dark.png deleted file mode 100644 index 09380c6e59b2b8d45ba475d09cf4050af3821d4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4765 zcmZu#XEYpK*PX%WHTsA;LUfNBgCRPJi7q-(#^~MXM)Y12JxJ7u5-p+)5xo;c9VH}s zFVQ~FyVm#XefN)h&${dEz4lq>*S;}Ya8)v5FfjlCAX8UU(g6T~IQO+BA^!b&h8Ngy ze`$Luzw}acb#}IO@dChIz1W+Mp*ZD`O_u?!_y?@2s{5+5dd$0Qk z0HCX!O+;8kjP3uqe?KH00{~Qu>Pk=bP{5r|^uJA^1vlmN<^Ov9Z)E1x#XDGE{dKEq z$)ma`Qd^Iv7Db^=$E9Bs9)^*%S0GtdemZ_20y`v3sTY_6n;S7*S+c!yNUDmO@jL4?`B6V#XzP;KIPC2#9aQ0{qT}+q zo5BkW2H!D}PLTzA6g^Yf{E^QZ;xiG@JuKQ;Cq*yPTb4(jubl6@m+&LM4G#Bmo>VbB z8yg#A*vMX~!MwlPdvVjde8ug>^7l+1!+C}xvsH|9nik*h?VAQ`J_)AN z;6R=jZg6fB?FnuPQqh`v5j=L%^^--`m)s%sprY!eu(0r-p0+j2d$jJ}4MRJFl|}fF zRrE7Q(}&x!t7r83;6`>?d{)(HVTb6XWjH0Qa!tX zzT$ZoCB!)|^}2!_UIZ~2c1W-8qHH=_j}m&|ejyS_lqM69r{VnOZ!26;aqV!tSN78? zxT6;IPFYZOmSf*a?2QVbQN*wmzw(4Rf+p=33?gVFp%G+JT3D!kbmF=D($@?#W#X6e z@d;gRYW@ggdL17(^yBbw=SaR&Q{uxU)0pUvfsobH_C06bZ80%1jl_Hw=D|;dx&Fsm zQ{Xe@D$WXc^6!F2F7BsYvvp^=;;c6m+CYfAZd&+kxxQe#3K>YJ}kwIMAV< zChw@$NNpG3qxwmCU3Ad3E20dnJ-T(T>@-MNU3fWfE%8~vAD4YX4eM@V)8^Lr-AR63 z{L8OUMJO2=+5GtA@fthRE6Lh_d_zQ^s3=yOD8uk)GDSv*O0VxO!3?=WfYVQ72hDeXV>iT zluso$)S|pjML*YwrinHMQEl+L@%IqmWwc)|Py(12`qoPV-%W9ZP&DX737%QiJq}QT z^tO8?;V($*<EK z_)`{)TswCj!v`hPBz#_&bAAw1_uyPa%7rB3Lu}`SgFdew!uXn8sXebPvQmhhopON( z_)likLvHHoAd)Yt?$4RTk@gB>l}2@?s!G)@a*vR5MESDATj>oBKVEf)fll_9Eo8Xb zN+j#d<{2Bh!2(JFkz`Cg*O$lT#tjul?vp0#Y)8!C<|7{>VluB>5&<_hPdccE=&Qg8T;!YtQ%66n4U z$C}3UwInRhLf#OgiDo`P5bt6R%>kxpr2+v;f+>Q036Dj(SWi~eVED@!o)LB2-FJWr zK%u;&`UOttmceg8HIDg2z#ebg{#PhT@=+yFN$oZj=!zvHxoKnn^@jJ71eagX>@CdK zm#4Z>CqHB01LaAqaY%sLfO}YuPg9v}Fy$9}p4ok=)EFXE83k!#RK_jn=ya@1@bTd;c z#ZuQy*QX{NkHKz$$xDhdtJN}FoCA`Q@!`IJa?-%pNE#eSD7RjqEGYi%TvithOGe%3 zH);tjwjfk6Cf~};@QJOgPfPc8tN)^FXJ^N8adW=RV_5a@G#C7jWH7-owGV{RlLc0_ zHU%IcAh^BSm&0R*deuBBvHorxy$}JC93^Thq~w1(GDy4&#fix5?a(+zVe!860P@AH z=MO0&*v|xqHW65mGJ8!ffxLCb`6?i{CouBkb3VFPFx60m-qA-AQ$-a<`Y_9VZIYJK z5S5k-v!wcB!$Jkn$UC_tHgR!%8C8wJ+xQo-Xq#@oVE+74&&?4+_&b<@(n`vzj|MEP zPp(hex0Nh{?cM5vp8cej?W~_BICTUhf%7({&ZyHuZoOXQJteZpJVzQmdlOF+oz1sm}SdUoUK0M?LqePxi;X^!iyPz z0%b<#I@=L;N)#BUNPp%#pcPpsDUff~AYjF96>9J!`dukoH z%LlnF+`01g848rS(Ak2>BfO_iMUUp{Z)0o5B9az(wr8qG7h8O(PyqpPn+IOI@-y+H z?yjj^EYx&#k=TvloT*Bq;}mNZfjqr%1aIXO^yRBO@ZZt2JrDMl+T~584OJJ{Oy}SoblO zq#~jl9dh_>`(4fkc zhs7F!cwxOcJ*!TT+2}kUX*ph`Y!E|F)1H1e8nQ9|fcNp&qK<5GQYAP&q&ZNR0m~p}P<_sVQG$isiF|32=Ql zN>fstF;_GQgOr(N5HW2DuMpEgmX=*OM##p;+@r;nh}6OhcOtbKXorA-M|cn>G-8Rb9cwid-1CxWvzfaI02px~_L; z*0lXJ8o1)`k#a7goMnp6iqBFl^Q1N(dac_Ye zHMh4;zD)I?W!eD&gy+k|ST1~V|DOL&%9AVfvHWM_%II$9=YgF$e?#6ao4*YImX?&lx%H z-Tzg3*#x9EFRJ~EN1tD;B55CY}$xkPshE?c{5Gou%Fc6Tq2N9Cwaevd24aFah`zc}n=t*xu8 z)5s;xaDaHwZ>&g*EyTt}Fr|nN#9y{siVF`u4>0cZCH0tND3jkQ`s{WpKCl2v#Gwx5 zEP&OF;wxxu+ItWl9OsI)#+K~=qSTP-B(Sl>N{uD;#+@>ob`mg zerw?^hupP27G8a85&SecBg3|Vp@B&ywpIQ2Us*vI?k58y!YO@*2{VEvZDa?&l!w*l zR+qa(okd^`trRUyAc|vCWK0tY1_mB6gcsm@z(iM%jc}`P5^^cL>2Rj%+2l4wyrb@hT zu{~PvH#lXTvt#9Ot^Vz&>cobpnXFsjL2#p04EtzL`@|58DgDZX~Z&P z`wFsY`z<71=d%JEU<1O|W`M*60Q;JOsIp3)hm(9<#^uWf#j{({8bm(c1qIKE z(1^a@EQeVg97E;VaX+9HIXO%eEHd(Jjbuy`PWIx<`i>1s1B||RR_={Yg33Jn`BjT| zIn$*8Cjgyd@=JjMFUjPnwl2M5N~wgQCmMOhGaH(Is{HQkW#kLGKVz8%gCg5VALedV z_>N%1HI&zg3n0l{L<7im8k`Yg-5!FzOJcQDb6?!QfKA{)I;E2Gr(oXJ?fwAwwvcbK zZe{xWbE{&j_v`px$ocWFGaU?=;%eXft;ri_p75z>M)r}R9$jSnHxYOrJ@N2T(e(_5 zs5MCsI$Nz11>;~HPj98{i<-1MWIo6}GW*FS)2qB?qI+JQ@=>`9#rc9ALD+}6;KtnVph zK>WQjaFRP-cUkmcW-k=Wi0eolaEpj2P`-E>)i<9(ctn~a+G(aS`L@f%yLk$nzq8aWIe!nI@lc%_3H1Py4RV|69Z4dygN(NQqZ_m z2m6r|qa5P>2x%ywz*k%J@N3oI86ceN`T`$tg`SiLy1^^(hCsX~2XD>Vl$>Y-mXzdf zF<`7JGUL{jje;TUBtKO0B#=+QUuCPIU*y5LW<+idWAlbA8}+P!W)Lwa)h$jY5i0wV z5sFJ4s+-EXvM<*k@&d~&dh-LH3wVin)W1B65nFas4SdNv?%n_P{l8 z-kFLZQX_+KHiIuIq*ONgI_xWJ3p0(_f%1Pc$zgP!n6SgavJ%-P!P_zRVhzHD_q}ng z(GO3!_r}+tf1IKsBUJ{c`Cv)lGa+royF!;ZiDCu3tpIP8bSP1_@$WZ?QB6-2;&rpk^;`g}Y((8Bo7 zk=V+&yAt?ud@l!%w@Cy2A(h{SElcwf=aX|;v;O z@*yk~NM4hF`Tjz_n{Fe=d)8g-N%F^EH~VOF>CIXYlrrb zP=5i`@0{e?JGRT7kg?6CJZdhl@eJ5KXJPHCb!8lR*NsaGDGV2`GxY*nX2B}v+<}VooydIaRm?<2mH^fM26LE0{)8{D zEH98{`4a^lv)+)HOQ|ALn$tGg8pk;t>CJDFsDw8p)90?puD0NliE)zC)6+NuY+x`h z0qjpMthfzv?p+!f8R!o|%_%FCSV%Z@>Iz}Sf3JIwRyiJ&0*8{<`=4*gdoJ>^o=9?9R@+PYv{LQ&X@}0001LZM23F06;{1o!gKDug62u zu!if&&|lNsU){^Y!_m_ppy%Zeb9b?K^z?IdfCYFuIQqhF8{83x89O?{9{Kxw`zc9C zIJ@{i3a}Hm_wtZ1a=d5jY47MD;p-UqUm|AbYwPLY;_2-5lP~>R9O`27Pu%;luZ!~| z|LX++ptk}hEh#Mv``^8%B`JFV09}u^2FfIuXuSvf4~oEDRNSceSL^?coPsuht4QdX zLSaAf`ga@u3a=1-{%<}_^Yx=e0%8pt=mZa?5$W?Fh8fir)%1SVtB8-dNFnAG zkmC; z9#7U4LkFemdnzO{FI68y?VkylJ5{fJ6JB>?O&P+6QOoMDwtmDo%qz~a@+v$tK8Ny$ zKYxl%^Cp?hX+g=XI%lDWyqyeoJDS?4MV39XQibrMJHh9ou**H|Ku!qsC|_IP+-a0< z)@5R}S?=p7Tyz{@^R?z)en<|VLE)DFiBIy$my-E=KS0IRuhcS4EfLU~g2#7~V#K3% zA!oxkd;Ev2C(>0&Mx>4VoMeYv)G|5zl8tBM6vc|eGk1d9cWa_t(nsx@3~P=~hs&m) z>R0+ItB9ekfr{MV(c7m78vK+@A`c2>Nn1T{g z0`3PxC0-Cs8|{-uTZ$=DqIZ2`D!GW#YB z1n9%3v3ro4YxIT;wozeN4AkcAb3L!6F`OZPs=*doc#`aNGqM6O;XMC%Y!&yKw+i28 zmAxT7J+QFzw(4@FRyJ5sjM5tA!@t9%3}9Kw%H0hRqqfjn`Lp684NWP#uoE>3&znw0IbLU1(Q>OGm92vzb7XAh4H+u81cEiEngB1ybxgJ%XcyL?H7ahcKIF9l0pL-O7w;8KqaiW)DG zt8?p)kkJew<8r+MC09=Pw?+o=+Qy37R?-^~(E>D#y7dEld>Xitk-9$~1mzoec{IPw~96XEI#E?dCGS;O7D@}RrLE}VYC z_x*Ale~w5~5r@*fp(T?kB9BiaYhCpVe$U}WSw3d;XYJWMWKJjr5-I?T=P*>CnQo97R8Vu-JpfJFgc0*bNmCHWji_ z%5q$!ItgTU?m*L1syjD1e%~a`>y5*eXMWn5>46AytdZ>noS`a@aPq-@v$SNM29OU^ zlXHNbRNze;(!71>1V}AD4(%Pig?!#g0*a3f-o{$sTwY=oHEtn}QJ;ks$={M>wXe`M z#396_Wm{3Pv9akRbD3PWN}0bm@1uw@2Kcr`-k7e=FEj z{+rtfA{tlx<5n11?Apy3Tr@YYDM5B)=XV5)Elv;u)4FYQMmskDHl6a7`n+?ht2jcO zkNHWY_BI>3U(p+6ddlcK$Cet;ZBFTg( z+Etdf%IeE_>GK*IP|qFMV0L#F=>XETnQuqo3D@4^lkHkIePwGV#Q|$bNh#%a?gVVa zfUcgjc0X4wq4E^)GnCC5HUs9unrm%yEUU?pBRJ3WKgO%v@whday&}}H`V~JO1%jXj zm6R+lI|bXm$nyIB?7CHTnbxJo#}^a5`KyJ8Dn^}j#6m0qkyd(@sc9Yusj{iqFXdn6o5|4oOgz5_{L zD8y1fz}?4(>d~qlkff8>sj5>UV5pq28i>dO0_86L7i>F_y;iE_z>s36!1&MKqc{kc z-mSL4jr1<7R~8)i*5t|yukhZ{SGTpxgSKWIRh=A0eCfY!ElE2RB?GZC zwDuB&4S<~}v*PD-=0<>2p85(KKq?mR6EKy9xg+7*$J%QNI;PMfk-CSMBEP3TZFKam z)SCkxLy0S*hi_xIMaVHkLiCU>X6f*(A!Onv_t9Z2_arwo;l)8in)yS}afaeyiSTtt z5rdmaXJ-m0!TKV5NpD@oOZN{q9?<*x`)70we~?WZv*5b9cTZ}!2@@8EUjB+Vo4}!> zq`73e!->FaL4NEls6Lc|x`vo!9CTYJCN!ZGnJ7b{w{%d1UWdL|iJVwbWeAlxF!?>v zNK+q2BFWl+YOr|gH<$_3L-$l|uZI38J$9I+3n1a$R5rb}yle6i3y68tU?T>exuFj29EZDA+t}gk)Ll0KJ^2%aP z{i`{K`+}G+u1<$Ggv+Qk^)=s=29ep7L>AM?ybP!M9!o66_VictQz`b01E?R_FPe1Q zl6Nr#5n-B0?^IU~TArjIOz&xi%C=+DF${GutwmrXP5kJs_u~;;Im28Kz6+`WZis0o zX+>}4Cz$t69s&OLvyksmK~W}qX+i=en2C`wH7(6>CFMPw!*(wMN z?|MG8OuZyaZin?~>1R69r64%7k#U=KdPJ}k;QT$XEGS__M=tTld1xwqkO>EA2+Wk1 z_7x~&f;hgGLv}-zc7ejuD1uW%8OLi6lWX!a!%IhXzxUgZeb+y}$kdK@t0DW|6|M%R zh9a8x&s=^r`|w6nqb-!P9v)jJfmM>cX_b1>b|>rC4NF7+_)wV7?O2y`QAX`l5nq2(I@ZHtCgP%Vzju+{3YfDXx(no_T8u-oiu>eZrL!=zEUFGCz2{ew)XeM zM=?o~uaZd7L=~$7D?9;GPe6Cwa6PAq_z5@au!Y7>@W*zfQ!-~mAW!v!Ch?Booycf$ z%Vy-Q6fQM>5)zVX&b|-T65zGNXZQ1Kq9)m@fOh+&wPRQoe8w;P1CpR)j*JGBL*18Q z?$Fb{iQ{TbJ=nLV?N(x7Puw` zAy|-7BP&%+U1=47cZVrIccP)ABG;vmooulRPRG;n)Sq5-EXY46c*b?VZw)@M6@h7W z_Ny#!(YK8o@g8>SlhSv)nM3GcrWCaHdHqhTwMrsW+@EDx%ZY*55k{C6Gz{WSl4<$N zkHoH>RQIVHMO*G?jXe$3p!)v6#bMqzPZ!N9P&P|)Fd5mu^kAyByhj_cu1-!`nwpx? zi~8*HUNe?%vu%3n%EI^STHI=AIXh0hpBI;H<;0Ra{Z5ffOIN%&s-wSHq*Kc_ z{CtR5%D2dWwhrD;!9sd~Gx%NcU6q#l2Zgml=HUAC?*g^2e8hQCR8-N*^vb{_O{g?8 zkyNreDGQdhJ_>}qZUiZ*=y5mPBit7K^P|J&j4}Rbsuxe^{5g-WT~Hf8J2@332wpqT zn=<@1YfvJ{{#0e@p|&N95_Jg{vmSGcy0EzY^&C@hIQmz&c#qC^uvdhzJFR5dIGY0X zOZ2pen~iL|9DO;}K5o~EOUcF9`%GlXBaA;AdX0aG!0mi)#N@JAmFUdyJ{$e7H> z)lj-)l~W-{wvhc;3!L5-O1?gGTc|u;L^RrOo6)n|df9Mwc%O5x!#Lve%aa$D1`|iz zZjC_A3t~kAkta$O5%EfrrV3e*Xe-DO0ZN55*^)T)=;QQ~Y!nuI?BB&vO0xgryZqc4 z`@u^0rK(!+gRw=eZbTamveI7c>gvpch^|@yg4cZX9t3sWuRBh0 zXiXVfxPNwdH7*ylCDQdI=v~t=wX6Gh>#f*`G)(0Aaj%l4Z(!%6r5|TEu05$p*Bz1& z_Lj!kqbaX$tKE(8{KSjUg~$SHMJtvGfx3~RX#0cNM$I9Hq{_$6dQD^u3K1?4@ z1dXWBe|LVv7X@@u;v|mMl3&cI%hX9;$!VDHtk7?I>3D5Ee@lZ|c60CU{+?Ei+DaQv zJzG>+W@e3}f?=XUEI0vQUFEpPxR1V12a5OLvS2TTe&GZywYt|_f(GQrO-0FEUxtr(S)!+Oflex{_C!k&?{X{X0XgX zB`vD+TmSj}B$AK|+cZRIf#1vLUL9I0{8?)e35z2xH-7x7;>lnC>X6@7$f2~w--ON9 zUf;6{;glet^J=T;x|q8cOnX`bF|!JR4w0sVze)5|Xgc;eF5=q<5r!Z9Ce(eG8?Rza zr;0mDrFiTeuBw9(PfBg*mAS`cpNz5WW!%S$j{Ws&`e4~U$?b6|znAetwMe zfU1AOCYw6!d?>Zwue+hvID_|mDYbrg0&1&k{aiv1&i?SK>}`~Eb*zNZDlMJccqb|d zmkInY@}55*lsD@uwf}sXRY29(y4WnQfV%x9Xype`{%&q7h3KN z8hgLS8>!PRg@!`npiiB0+YX|V!# zGGAvKk3Q%|t_ImL?q3_}e1e0+;o9~$V&!Aw#~id2o?B9PE_UJQg>}_rb`c0fOcaie zYv(?u!fH&hAOi;% zKFwFup!6lYEn6fKiP|ZQf>uu2)+MQVV6$2l7M6=BkXZ}|kNz)+=UbNeO%`lv5{XEh zV`Q0&1dKxT2bHeH{MIHDiTU4*z~0pF1gq2w`crTWrK+mR+n$k;5y>wY`G7Arr;y(? z^p~Q7!llpk#M@VWK+0|~@5Y#<%cn;hUsXPp{x--Ywf?LGKY>X$a#bif=;kWAYT2!n|gzU#=%RU>Yh+a zlUf18O>&{P2)yR)dWV}CqLbS9@AFGYN!`8okmplI@jy?ZH5ALI$_P0;zhU-3E*I&# ziG>s|sBn=L0KMqgb?Z`VVzEk2vC!@d*z(kS&Cq0EmX0!uj?gY$_0g7HX)#O$oUqC; zP+}QpcJm}KeEEHG$rSN)px#jP%g5os@WS5r+lUSOi(w+!Uic~;cw4+YqJz()QZ|dP z4K64mt(T9Qe~w%<%St>JQJMYBM#+dAC~KRbD=Q-t&)?=%P!#d=g=z0ZUx<~J)#9M7 zvqXmsy3vsJr%!+5Dp*>6;mTOhjLb!-+tl%DVu_BSU-(juZPM1^O2y~Wbk=R8{ z-~cW06c!a(1qZ8sty$chZXI}UYun>>J%eYV@pg3HzT!z(%N=(qv;&vU~;;n0M~ zA!Al`bXJjFsfovIJ;Gm_}_umYbLTD)IB?EpSfQF?-P(g?H_jg`6^|0&11(K z?0#4d=X+_#e*mY(mfA-Oksc$US}1`1V10RpKcoAPHY}GNfeScUn;yVKruTS%&Ghon zGtvWpHwX+Pz#do#2$EJ(de(fnEaN(k+nBJvQlPG>v3&0^Y}{!3_ic1vwv>$PiIi`I z`@ovDrdaHH{fe1uB<;JJY+U+xcqjijk58W2TQ` ziZP6bD{8v>t1wex#yw?g8uJd(%wECZ9DbJ$hd&XMW{cbL4gPzaB_MbZZEZsRD~(2c=zXotF7pv(~i<7V`shw z^&FX$M&H^n(i3ujWoPq9F8kJ2gjkyZstQCc zXmpmbZDU&f*^#9y;5*f3rYf&YctI2@pBZ*Wkl@+;M|k>q=Z_xZ>291Lt)L6tgL@ihT%eN^pAphh9@< z`mSV?#t!(U((3&Wb~SVlFeHXHyDIk!({9DGZ>tli4T{R3D@47q){txqIc7o>bQ9w! z(dd`T^TcW9XUAuT2BjKBJ>oH7?Ul438er!uk_WMzr>wSLgOgV1s{J)btp7NQq9c;3 zo?uSWf*OX>*fE8C_&*j!8^*8nGXb_|f5`Gu9e4)jl80-u-u)$-6B?&(U!WZ^VdQ=D z_sH4Q%=m)VFxou(Y>!OE+?VN`X~#Jhz!rOv#^a1uB7b^VX=wnCv?* zVp~+c1&7hlpoX$|wxg*bcZnOI2(*#-Wm=@rk3I3394q}+nz7ciEn++2SMjK-_G6vnNz~+s7&lA6e$j2D-ER4d?dP)hcxtlx^fZ?EIG5wBWAkb8*-&H|@ z!yPGNU0q$b@D5GQ)d>K_`Zwm#o5u=Qu>k?nDp&Z7$C4hJcD=Lb{7MXWOJ@0}-{TF= zFxf~r?9mEl0#hh}rgAL-5~x=z#YZMOPzZAjK8}5a?x7cYPVG_5OyC{H>}WfSKZav* zYJ+L7QfE!LQgNS@dv*DWJSuacwZRa4-leWrbH89F*!tZNi17ivOj_ADxX$GL%4WTr znzk|odO;6h(oG2jE?&5_?Z0Pa+SW5v%&K8-T(R!aP;8LUTnfX#GcBmI5G<3dCnCU+aCs+PdvS+Tv#f8C9#W#iewj@e|@rE0!afeq`|^ZgmJ}% zA!0jpd9!yPt`&T1tM&UrD3d(1cB=KY=e{wh7l{`Q$(5`F)~?Z*0Irk(UE8+-5KcEm z;(F<-ofBKLG#r1oi3Jz|H+%NV?ggporPv6)xq63tx-;L(Hn3o!H=?dP><}c)Gz3(R*AvveA4bclC9|`gLPtRRkZM~#VYP|ITOm!}y)#V*y5DnI$ zixpgB$1f=9qN?vIb-j?MZ5Wh6_DVXDq>vgJcN0%36jL#sAFUGGJWHp2dgPOd6gWLL zNzMZSmcM6lkT7MZfHR);3utGl0X`oe=kiIdK&8Wo>e+trn}(w4&rb@UnO*E?#vPS7 z)S*Cbt%cPTkS&$Z`7!TAi*G|X9T5Q|B61aIUJ>Vl* zCFe2NiG@Fb1RG!UKbh+5*|_5WaWud+eqeWF_5{dEGIjYP#d&9}Q`o#@t@ZTdYzs`= zO9mvY0_(c1^KB~XCuBJjl(b00dv`S5-BiD`pdip8k!+ZQW7vx{~l^C_K@H5}_uLMrIVT=L@1e;M{A2~eckJtmGG zWCX-`D}`H9duu20aX-+vScDh(Ch*qHQ~jin#c85hyZ3TKXgotu}gJwPH94KQU<4+qm)^I&@iS> z+%JPkKI%i{9EybH7_nGek*!8+^1P7y^RR&R^C#bqj=NYIgWF-_zm4ZwX&g>>$?A*7 zk;1jBMdlNP5Gj-0d=5;0rBRx2qkO5Mc8#WHZi4p2J`|EpCgZHcT#8>H+{691r-nop zu+R}DV7z|Tb6pNHdaO2&Z4|Qcqt8N%MN4J%g^rDq<8!pKwP@kE3oOnzwFTYCWB^d+p+tVBt!C|j#5|HhG|9< z4z0DrkFa4HR`hK1k0ewEkGbh)e!w&LxBABxe*YdfJA|*}B0MV%lVhBt|>SP_8`h%C6Lbz&Od|x~N8dlgS4m=yZ>#|t^ z2d_)UxMY89c8yH^&AD3pxLa+~dFEg;0HpIu_Zwfl)f{?+74#E~X#2~G?-z~79oh?g_ zb=B}N%Z~@bJ`|^FSD{>#Ao|RQ=*On>v}#k^vGBj0><@_aoQs#gjT2tJ?Qn!PGOgTI zX@7S3dzL759ja|=HVXMc?+lQNy&%Tsykq6pJYZJimt@ZOJ@lHD>5WO^lR^%pQ!7?I z%f_bRlWcY`U*pS)SS=`BBk1UqkcGIJ=H`)IEwWP%=*`yZx!i~oL7wLbHp3Y9ebrDc zEzHlpKabA|Y+!z!bN}+Sv|<&Rjdiu4WM3H&V%JxZJ?}|4+8+h3=W}G3|3E8c4yFcC zaQs5@(ILTD4LIHN8<;9?FmaFX^2bC;hEjgLvliM{)%I4~)It5SLQGBe2EDn@z2ST- z_?(UHo?8Et=$tbx>%YR-qt#n?+I4p-{gY#S+KYj|a<_*k2c`^Qs)Ih^^)aLZ##H;x zHEWU`iuBl`Syw?a8DLj<3LGVhwkUKUI6^PI?9djv0X0NCK_U>a8mf!x0?kPLVSZ`@ z>j7P--MRd=e3LW4#&k~cl0)J%3?==sZ%Ah6H31!ycVf=qb@@9R+TB_ZHw@>`49+X` z^l>>R2J1`)I0o5t%|}#Wz|eKkeMv*cFMox!fB%C;;5!`4xb=Tsc8WOZ<|Z~WaaRiA zet7?{_eDTDgT!ly7AXF8=L0asVbYB7l&W}#C{-^hukJk3x17h0O{Po>7Fw-yB HMd1Gj)l{d3 diff --git a/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_logo_minimal_light.png b/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_logo_minimal_light.png deleted file mode 100644 index 9d4968d0b60b2928baa6224ca270d2d209c638c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4183 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 diff --git a/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_custom_dark.png b/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_custom_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..1fd39d2fe595b98cd5568b14390d8715fcf62f8d GIT binary patch literal 7163 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 XYjaaYe&4C*AD*g`mSWX&>xlmWzVl#- literal 0 HcmV?d00001 diff --git a/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_custom_light.png b/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_custom_light.png new file mode 100644 index 0000000000000000000000000000000000000000..9399534b741569e0cee2a74a420eb4ea94eadd66 GIT binary patch literal 7217 zcmbuE_ct5fAOC}j6~x{|?JcO4QmbaI+HEPZYZJ6ai9Jj0Q7ct7TDxk`q;`xJtzBww zp+b$X_vf7NAMicj`@_AjbI%=*yPx;G;*AWnD9KsL0RRA{j<&{Q0DvI!)=nh_-p1R; zBmLfy;5!_gA~Fz`Y^++FP*J^dUVApV{Xj=m5rqetQp6Gumg3j*Qorzj!e z?22&lhl|^Lc}P5VG`I7#cXW{Obqx5QAqMxg^K@|aboQF#OS^5H)7A99#=T$px;ncc zZZiOY-U^76q?8Qg|JJ=IO~C;GY(6>~s-`aqc6*Tj6$&rDs$i-h{LlP<3$}mv2nGs7 zNr~|9LLEPO%r#ieDS!5uYx2Ok-$q$J1E;5YW{<Md+1n2Cx%rIp1$uqwJ0OTza7r1K|8UkYQ#*6lfQ3eF;Kpg3@ngOhyT5_RJVGL9 z+x4LAfif9u+BKsr#mCjvZq=>t%A;LgEey&E+Zk^k2o1Jz`oOhFxpkG;{{eCkL%U%{ zlZUGo-06oVKj#%N*z@qx>sYe>5zZ#26;f`EqzvD3@mSL_j?V1@>PUg>EAbElgDI^Z zx|tyJaZ}Qwm2OK(k7JF~LM&C66-F7b& zv$-LS2;lWUc%9&Q`3ik(Y(vf(9nfz|DuW=PH1jt|?_XJ%%;vJu@{$r{Ci zlS~Y*Q%V^*(%sBJ{QT@)==d<=S)!d$re2g6NzMz_IzmQXI(_vVoU4*3 zP7hx)K4vi=DX&IKLwFRG`9t|MWJG*GiK&6;gTYpDS>-ofi}4?3Qzg9$CU32)#~S{U zp{?C-Q4&)3Le{X~q5mLf4kzOC?i_sy=B8<%?*5M7X8KhLgXab?P49i5aM{9H` zcCN~t!4Moc%e6fBfry1MxiqzdwBWj3!&Ebq;oW^WcNADPRwQtE>?I_Ci}OvJ`nsy< zm~8{Vyb{Iuf^)#hc*H+!mouYvO@L<~4v7Ny07aH55VC#Q*RLV_2DbbClS$b(F4|0y{sh* zLp@An6uY4QqdS&|fvp@6w{YGd8}L=!b~l;E&$}V)iXvF$#Ab?ku-Y9a!Qn4PUJ6cH zt=ZmOl8MGoZ9jSR4w(qCxaD>~K9L>Rz|2j8I#oz~n8>-KNX3oP!wyKE##4tsOLe>> zqW^*M1qWp;c7AyVN40`w;gCnx8# z?5FFv`!%|03k6DszMay}ScM&fYLj+@`^VoBvs-g)i)pa^dPPBfv&sdHCWShSnf6ac z+QUM)$G=wRa7sTo3zaaOIAIA>Bm@?J zBv`&ylw`_|Lx>&jMl;LD(B?5o*g$KGY?8I^g$lpQ7Ts-?>n~p4+JFt}4W%+l`!3z2 z>%cx}rPJsaD|}#z1Y2dLkoS%bL@*EhARIoGr+^-|uZ!BW!!wOkAHGK$cd?2r0MoMv$!AlX&sYj0owf- z*muO|EZ{NxT4rs@cd@wqpY@LILCXf`uX@MCk$gFcGdG>z`VJ5K?CK}W7_|S?UEtn@ zVR2)lZp{Jh>Q9segJ2`N^LY!^b_Z$W@9+-^3(q!OkG}U(u^iD)iD1w zOmQ-C9@Beej5xjfv}Ll+ywX$$TL2RXQbcT~;!YnTwwIco?hf?Es7G%Myb@Pxk1_pZ zIgx4a*&V>v=`r#C{Kvl%1-laFPkpQprr`&~5-Zl1pt@z9Kd~8TpEx8D!N^@jBIqG$ z`^%#QWO`Cu*mkT{g#?*{;#27iUmxVJLZx7hvA=tBex2qukNpQ-zM9^=gAYs1Nn`?< zJYO9AtW!TZWUc0qNZfJIT;ZRXvvGBT8ah=|_yR8=6s@Jj(_|`MO)c z63N}%vz{?a1{B7(^s>b;9f@IW4mkqsA=T=|LP)G-oFT4#BOT8=C&^$2cIlO*sab}- zi(Z!7?QhWjHs#IpTf6@$p6r)=GLL2aU%_1lA_|uA-z`fY5n(0}rPU(xp^VYvwc+8h z+xIzW^80tc{td3xd%qyqAFD?cQTl7XoYEe%G84F+nl9aFa)t=sk&anW`VQ-hz?b`S zF0#Z8%s;|&Hi057wA3r5$-i`QK4PEBl+hp9I_J27i>B|$sJm0Z`3CmNx+ z=jttaN@F~cJ%aV|SZ7z&hcW_=LD=9uMLFRj%e->71oaSduHtG75IxI;|5*!} z(ju+4`}+yi{JsZ)`_CqDr!&v>a-|ds+GO6iaF6jH$V~A{ZTGSSyDEg>Yd3SHoejp{ z$Wv-5kcwG?-YX<;z7vW3peMZz}9+F!o?MIRZbd$V=8^m3JQqT!agm~+SDw?5{p2R!e?N3{lS zON=cc8ePTc*~^J+UKZ>v(Pc)X3Crt=;kK~L4-9BWC{-fzlxpN0-YRm$hvo|_CQPD5 z+Jl+c8@*{w?s%y`TW5&GXPu35&hCUxWQthum2ybp8gac(nIoyR`_l1j@NXi(3F&Om z?rDh%@Fb+jpqAc~On9jwxSIa@`*~J{AkR-hueU0nftv+WiPs+eBb z>>AOya$Is@3m}gp2ufO_lwg;Xm!P*959IjgfmiJA2-mzbKJh_V@f1FgzYQi@%Ae;I z3m1R@uQ_a?^6+|z?<0VK;AA62V@)yp@jAJvF@3f7AN@SkCL*Q_y<9#xy}R~X;vs#s z2n7-7b=a`50jM1gW|Q{vSX$(wD0M!QQ?F-vR-_yX>c85V(Mh*^7p=ZMrPHzbx^L_I z$A{EsRBFDTI)d88g8rc!3)@)pIJm`u&sUss)~w=?{h}kbiuO`O4>R)_V9DaK#vKow zIs5f7FS;8h2p-_Q<0Wf6|30|&?8+3P<0=vDUbT5UP0t(6!}ZriYm99RR0rNj$9Ke^ z{EfdIg`5mb%?Kow`r?SXgaF-bW2wUwhb%MVqlBZBj?40co>cA#C2~DV$odX9;;1YY z+#dr!Rfl(3y1(Cnk{t;$b$=Wgjm{hiXKtQe&m2&()Pb^}-X7b=gwU5BPr5)z#NMgF zfa0(AsyM3>cYK5Wx1^)CAO-r?)7OT#013HYS@S4+ZnZ`oi-{3QfD{#c**G=aiI_50 zn9qA;eRPNtOoUt3tk#rqTDHdg{3jHPSr!$K6*dMFdG$R9R@Lx78{-$j?N?`*%OwX$G%PKt`qt|}XWq4YWn`+tU@^8x4JHv&sUHU!wTtV&_73Q7w1@-&*47pGrdLRx_G zFeC3W6}`JQhqg`h)QdeATAB9l=jG(!m-=LMbeKY&RIe^h)%`;nAKp9i$X}nJ9*uH} zO!o&y(?n8p^S{=j-*q77jSJ|}U4ih^mI$!GZ6EBGauy=&I&Yv4p`<4-cjN_uhUH!Z zt$BtJRT+xTippjoF9GRWX(^D5+TY4lbm`ixd?-V?)&FRJ_KV)h?n2vHS7(>klJZ1@ z-v&07^Qol+#ckK$KJObuJE=nwu?hBHqm}&9*uAcHJG1ThqL1j%-9ejHBv45P^T#X_ zD$kCy``%oJS`KnhCG;eK1HG5jA~t>SWm#}&VL{S=+u(;6^aEljbxgxz75gJKpt%4R z$f)$|*RRQDpVj$;doJV4C_|l{9~CCrDW9DdID^`3AN0$fGrGv$X(c=t4so(uZ7zEw z`^s;rtu{}Kp-+;}n7vy%XP^-%OARyL{Y*ClZ zteW}^9oDTUp-L2a*5dA3H1Vrox(BF7;e8spKiP`;YV%sbbQRjB?ky!l$#{&~+-Ec( zid&99AAhx8%iK9 z4BQ8Z+v`Fo$l#qk_uIE`X*oH?`%}1>lz23gNKbtx7^^hAvYRUM!=jzC^@8ar>*O^| zB*Pnyd`KP1m-R6E$M?WQk;OyS2_oSd^fAVr(z%tnO9?#=n1h(9j2=e<>_9wnt_8I5 zEKk4jmk1CTzumZu@#NV&NtHRV7cy&o<_&v-QH&VPm)jWcJBunJ+k$3_Tic|?zP=mO zrr{s*f=ecUUKmJROM;RFIc*U^Yr!R05aud%m4B%XtCoM|Qs1HGUw#ZjrxYFALE}v3 zSDQiR#|+rJbZ$@%YcNu6T>AM{@Me${1bES{Oa7arhMBq4^)j-r_08pD1Wn*3TX!^e z_g4c(Fht@{Kb_V4Xf zb}IKxN2!~w2@l*DL7SiWtj|+bnp*7MGo4?tF`jc5wRMjjGJkzW|4(2qz>Yuv_So@_ z2)>nBG1*eQP*-0&vGod2syn=c26&-xp9&?bl z?Z*{>xB471`)6n;AZHEuZb;g7S?PXaJn(5%DX{tdjw2o|0!%=cdf=5`ji@3Kte06C zt%o$}C5RlHJuHl8l2_;ufYBv=oA_y@|%;HpsST-BC%6Pf_& z`JP5B%82iA9fk9qq{rsar|U13#efSCepyu1;EQF^e6IJcobY8jjM3s(Sq}CnUy)3973B4bJ>2N`kEed3$P$WO81M_nm_(yq+|r z+gP9&McUFw<{ycm(PR8!adN*6FR z*USE+$6qj+-a$q5maQ*Qm#JQFx!PvopgucEHMTA!8jKYDlI#H zk*Yu|B!`1TsYzZ&U|s?^B(1U_#q7wd@mp~58w@|(JC+sweK*|l2kkVfbL*Nd%Z_%x zKNy@S{HFn4{86DEBEJ1;R`%&{i}sil@5f&#+u(UFI_!taTcQK;x}n$aOUYu1)8wy< zO{r==2Bu~w4bf2gF19UFiJ25$f%8oEnTXc-TE*E$A32%2M>a#)bVzxHz!aSiRW0?U zwNo`V`ryUR!f3uk(Rr7#@aARa7wVZnc_N=pt8|nMkqztDjxN^~JW-m=k@lN1YtF7e z392|Wam&F2WRuH}zl)mV?Bq_+=E2^G%CScQgQEMrf9b85lT=LRSA>6C)#k@?Q?VP< zS16n}GH>RFyK4gqwd~3tvlgil9?CuGdojDs(W(#giM9ZV^0v;*M#iV7kd_XkiQWm# zbUBc#W)5hkbq7x`g(1eiJXfJmsZBr@q5%@Y6g(UP5LpgQnfW09&8O*LEGr zJyo#g^|A@5mnoSp~}$7<0|ar|6># z#602076!v*X9|nVwzp9c-g&4TCn?8^JB2vuVZrakp;{^_*;z^!j=ZH|Vy!UN)60IQ z$Zh?LxPxHNU-lTSaq)Yl>?=?Jog^@Hf_&z8n9|I9N+6st2z5_)rKqrqCfYO!?Q){Y z?irCU6z+YizaMpLpQ!Ob`%i(7kO7RvBu z7fI$dOO8KPYn}Qy>*p_t3$}*as-{<_*ogr07BVbD0-axmUk7p(Fm8twW{Ev_ZB~US zMz`3MZdr%YKADvV0=>rA=R7zbdI_0`3uCA@bbCq4SbPqK+~h_AZNlk>9Ja1QfSH z@3NBjqKrCamYig>v7=;$*$KQ$+4-(4FtO!)^?hZFi&8)K9sr;pYvO*-YPxr6!2JHE zli2S2JsX`?t~;=HlX+|Gi7-CXRLftu9{{+oiX-Sq%V!hATserbAR6eeg@F;(B*;zg zGU|geUYRLh5TM%xK{F}v1xMqy1uo$44BsbfQ470KW8GZ&_0J`UX{oXBqr$ol0B}K; z?|(Cwb!?YsP@lcE(v_s4IcTiffWsMh`HXxA01yn*u#OF=-#OSySQAUyy6yO+!{@6x z3Bg!XY(&j#e@!PSX^2#C(P|DO0I(@un>TIlC43;@H#NXw9KAG-?RJ0C>Yf__Bp9og z9?+S1xHLK-TrVOd_J#fXt>?x%CX3eX@!kE4lem_kj53PWb%rNh-}_f1ZTDoO32TCo zP8*3MH!J1uEDQReVg!J3kHdvGD{BNZ?Z^2QPDy2npE>C1rOD4B&xz1G8RdvV(E@ze|;WJke4+`(5m|?1( z|H1M}6MU+R3m{_g-RYM`Y?_%Cj7 zP?H_pX5wDtpRheW1f(-5;10~SuM_;F#dAmPIsP2i)biX(D=wXiKZ9=R`EK3e^`-kw z)pPuBTey|{?b4rgr+z3!zwj!mD!kxDZEw&)_0vx*9!{SaTmJg$x$?W~v^Dbq7n5^B zg8~pxED$5Uap2OTG3Y6A+IDn`9BA#KgN~YILgtC=R>LHw21q;?IuSmXco1lk%N8$j0Lrp;V(p;52!L83L zT=jZdJx4_ggaiRn2>?<66(C>$0AK+?hyV_N@c-XTP5?o+pjb&CpR&q-4mO>K1{&3B Hwh{ja8qAEL literal 0 HcmV?d00001 diff --git a/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_logo_dark.png b/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_logo_dark.png deleted file mode 100644 index 20e764314b28452b355a249a1599aa76634761c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7298 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 diff --git a/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_logo_minimal_dark.png b/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_logo_minimal_dark.png deleted file mode 100644 index 331911070a08c075fd5bbf529381a1bdcbf1caa8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7519 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 W9)%``n7_FHSgXP`l`0f1-~A8j`!I6= diff --git a/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_logo_minimal_light.png b/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_logo_minimal_light.png deleted file mode 100644 index def9f286156c4624a9e19c50a49d533a15de8415..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6675 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 F{{fUXCBFaw diff --git a/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_custom_dark.png b/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_custom_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..b9eb10e28d973d7d539de63e3dc0d1aac929d0c2 GIT binary patch literal 9673 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 literal 0 HcmV?d00001 diff --git a/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_custom_light.png b/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_custom_light.png new file mode 100644 index 0000000000000000000000000000000000000000..6c30db7ff5fad50b39cceada162bbffa30c1f7da GIT binary patch literal 9684 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 literal 0 HcmV?d00001 diff --git a/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_logo_dark.png b/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_logo_dark.png deleted file mode 100644 index e8f2deb436d183d7dcfe117ef1ac850d9b6bff2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9641 zcmcI~Wmg=}6D|;fyKZoj;K5xt{P5rsoP~wp?(XivU4py2I|;BzaCdhLi{Isc?)?b2 zU+nbR>3Zs!nyNlkQys3PAccuWf(8c%hbbd1t^x;#fC!uSpdi71J$F3GVHag52~8(4 zTWf1$8z(pgTPG?jb0cFLN8=w<&Ne@c9jK&~Vn{(yt)E2ZLK zt&avw~NjJ+4<66$4cjU4^uD+g`buDJW$>2;dfH)N)dT~!rZD&K|8hv z4>LZRjlsh1P^)d1)w+bvsc5-CJiu6m6Btm&C#p8^uaH2VIARJ%C93VGN~7+}b*+U0 zTjRy2L%e(|kA*hyX!pKEyFxn0m|Nq|?d_ox3YgZCjo>0Zb8ToZI@W4K+F4^&zRRj6 z+V}cTMjwd&WVU{Ng$@IolKQmFIZ}3&8bW@0+~6OGW(>(cV@?P<#SMJkhv3;5P}O_G zpnjI0+HzTD-uZG6D1unMV4GM(0ZKRj`40#$E!DVQ0I8QE4&Tf_3FvucTV@3 zwK`yo{HA?w+x<6h>-r11FZ-L#nWDo7fo4;RX`Yk6QYh@nG#hafyy{fh_%3$4r{vM9 z7>T$nL0xlB#s>Mp|U3oYqSu<6- z%vqi+b;)l%cyhpa(aB>0%b-NV@NKGGb$QzTPVxMo8ebzlDXW;xc*eDE$9VZ~Af~8& zs{f<(QJ=NxoM?(|m6k&9Z*-sN)n6Qn$ldO>EUbJ@k%pyvTRcpaCaSV9nAh>0skCeo z@^jYY{@&vZKQJ9k?e_T-Ubn2++lj23*}&TN6KrSPXbB?6*XF~Fk8F*N@QpwNVg<%+kH|FE! znaLBSBNaOmZ@?v^JR==1c&4b#Hrhg>4_6+e$sg-fYV)*;&9z0U)dF`|{s$X3@~tRx|1QU45dZr1$2p7N3SX05>?pW` zR3B+Md=bpS$!Q898wQ*F-%-=QgTsHo=HB_}d1q~X4^drh)Fz3ph~C$~C6uwq5(#;k znf4wZ8`r5$k-_;A8iH!pI;Mi4j{ST1h$hS^$&YXD_ZOOif?Uyu*YDx{9tUaH)tPQ7 zB___x?0N^+GZfy~$yvjJNECMpw4#%;4qtkP-7t#5crTgvf&SOKdyZcc?8xp$A)IN2 zL5T!UdH_96hRemK;p|Wl&!vrW7S98k{Iv}@vrK;4Ig|H{c1jl{aLJfEE$Sur1`FU6ylSXnD|*5Q*=c6)A-}&mdssP*}7!^-}hZ#qYv5iTtu+R zyhet7sl;%0iJq8LCwfPqS~ggUY#}mzn!tp36)P37pB&};6z%$KhalxsUTC5dIChr2 zwl-f%4-Zm$O}A#`F;5=y437!#6^@nWfn^hyk%Is9V!68)DEI9fUO@=e?#AZ+IMDUV zJMXB@CI=>7+M5xRkTu_llyh@NIfK)qc#v5-Y=92tlHX|87`StAbfBdvT!2X$OHK$E zXK~-d!xW!n=6wk}WD&)evTnfhZ-)Hs?r4_Vg9Yw2g;{&g?AN+)!*LO&Nk666&x;2 z)pA=e&G^B;v*_}imgklC$`)HzjLTZLex!6?r(D44$x8FU$WF}o{DLtNpK)H}1tXdI zMpACVT0_w0iF~$L!CktNjOzg{`emAaO2Xmc=CG{1yma?wT2cRIX=9GuTjYsMKZdWF z{=o^VCBUuYI|ZEwc``SusjHLld|3=kkSD1=OucLl--Av@So%!-;J|$834ufUam277 zWkX~T{c*kiMboD0cR>L`#tcq@+_86$J)OL}rdqzBZ347zlnT}nKS|D$;xr)OX&rIubahAv*m z-HJ83B?alsJ29O1VpSFg|K&*7qfW~fBpUs8kmpH+?B!?B;EFb+_mmH-zs3U9NQX$T=G}O|p4-Rx(PjG&E@Ja4 zdw5K_8rEwpeZp>KJWazEMuNyXV0^CMi2$x)wM-S#38ThK;c!8F9+Nz03zTmIdw~ib zS2gB}VP*1>(Xt-Q=V_+dxVxpr+1fYS^+WQjTu(x=F|Acpdi*besB-u!Dp&EJ_)Rbx&s=tcbe=LOrVz&!qS3#fZeVhS}1veXC!;fu}&lxg#;7n4YA zzBfF(E-kO)_Ws{b4xEBsLYVdfM2uMHU|oO5<)N)KeD`y=G5pwSHV#$s8lo!kB&bk; za|B>nvPIU*r#DW<>012#8h&gu9tR?WnBeJE&U2B-nctxz^WPSq(3BONr@OJQkVStK z?s)`D{p!{ix4#<+D*`Wb9ZqKJViMi^aZ(hx#^ag%vIR<0d;Q~hko)X}v+}dW>)hR= zQfdHAR5vl(Kcv*kmM;Un_f~O+QEYS3al_rYDmGZCuY|{9f9xodS(~VPuK08=ONO%3 zKKhkHLH1gH&r?(;?bn?b?ORtob4-S|KUF^~lEJp_ym|QLGr{c-%Fe4!UOjoqP{M)q zW#re+;F^Qm7;Axclc&?FEIX;6RV2RU(H~<)JZ_H)+u8&+%D`77lg@&R?v#IxVr_0` za2jOIGCaTdq>!bAo@pC!Khg3&4*cGB0ykg+%1OHdgRYz9a4~z2TR1|QRHqjgPs#^>T1VLXDvUp-#449s)kaHgwtiyKV<7Y zknQ{pcSSZgY0eS{dhRA^L|onP=jb>>xKn=XE?e`7yR1pw3jgSaxgigpWc>v@L_BGS zpGk<;brh1oe&v?1;uV1ekId4oPVz6p7Uf%?t=ae74=rEKTWBZr%4aWvcJ8T1gOCD& zo9};;1YDUuO-|>m8eQ+tjGS?1PqkcX%U0~Y1`~tmN9Of?E4AuPB0;vZPUOYW-QQjE zbFH%Y{&_&s8#HfPZ|C*btGizqN0g<=8wd6l%La$I?_KN5)i5?S#VcyTRulQ`drZv0;1kdWup~JHg8qAx z4U93uK7RIXg8y~^=j)vu)j=p@p|R+1egZNocSFMUJ}j7#JO+sH&!FDL5Pc=4?U0=I z0l{}`p68u;9rt?~-1G1Ah2j5^I%XLai#z}uA4_B{h*p;F=7oq-d2O@lQ}kRG@pATW z*ykhnd`3((Al1bo8<&Q+r^E7BMp!X@nm6K77=veS(tNzgLw9*AD{5b{CQ>peYgJ;H zcg}Z)W8LsHwpCW5TCcWEE0ht$F1SI1I#3W;mt@UnN$|>4w1B726m7eWthRB;w(tG} zFIWddjP9m~FEd6lc$%rh?I#SRx`jN{Q0gS;(*;!-%mope(jVMz|8eT8Fan) zebQdXfER$N{@C;s+{{LAFt!F2w<)Xj>2X6Ig-qNNyy9Z}9x1pQ>lx(8@)BoM zRlbEtuWqWCNuBwPtdUPOyr|_9HzI2NY!tB-r{lkmx2KJYSCL>pkmo74@>%KlzR?}e3lHtUUm zYb*G9e?FIYNySo3-D$QvO9?9anoMy*vx&nLUAy)_(|N3qMp?TFcJm@xMtpL5pJN+N$5Je2+K0~;tJ{yO z+QriZU8{zoNmB;NJa5;4>7E%AUNQ`r@IyPL%yx3{^I;U2VfO^!6Kw+p^i!IeYia*$o1jyB;2KMT_UD-74AMv|6j}nD{e-?2=3zcp)a`f#!Y5Hc1CMO?xZG)cpKhIJV2*XlzxK0o9Nu!4f4e{Bk{+k`*ezw^es<0~< zZB5rz=lZCAfuWf0)dNV?REx~?fu(@UiRN?*{Rk|O^?0t2m%Mow?_ayydH#?F#B;Jx z?YZvmX%J*mt}yZr6JDkpKl;@!p%~rC$<^q>zc&`xaB6LB4hu1`@gFh{V*^3JWWGrm zj9e20a8-oCiuR~QTkDbcD|X<_Bsa%Ofh}>dFNqlz4dJ-^mJ&RO44n@!rc24y5oLOz zAB^h_Y+5!$d>&7Em9c^(jXj*1&|N3cRc6BoO>apW`NOT^j&{Qic$7Y#6*K98EOu*baupgFqvI2bjh0f-&` z?Mk^4MPB0q-Or?r%1#4pl>g`YmrV`8IuLc4IDe=@?%{Ezjx08p(IUse%@S{j>BVfBFT`Ylzj7;_NDJM(248y1$@PPZH_UPJZiJ7 z3sxy-J@i5TzJmk?cIbboVfB%L=t1mMCM?>t1}G{;R<{wQ%Nr>$jlUYnCZY!RH@q6{0xcK2ISk8fOeLlC!yD{MoQvKm>pj&T*x6aU4CapB5I zO)7g6j%11)yaBmx*t!IRuh>PboWFqv_^B{vV*O)OavEMhQW7!oJnp`ApBX+UrR8Us zdfG9ME{~BW+ma+uU<^xpFf8{@tNS3}WEORo5{eWfpwD$jIDPio_(F<6x%-HLpTfkN z9&EcALf#a4nX^x<+2luZB?$Jn8~KA%k;;H$#Sqm!cX^N8FK=|%vz|!I3)9wbkD--4 z*g-_Jh*O{@=eu#ou-y4e9Z5r11u4?_O#g{@-ODlS-1p(I*ztruF;r5%OONaB6W!XA zyf7~!avm7|a!o}Mv$x8jp2~qU?~7v6#I9au{qJMbvJZfO6w+ zDCtbBRTZDcrGlo|OhiZu1QAi$a<`sLY0oc;w9^`%ElGH7w2>lBHY)uubWn{8_n3K0 z|G26>OJ=)>r4iA#i2|x~Md2?&MID;LbKVDjj6N;mHa@*&o3#rHUW}I z)BxORoE6%r*Dt%V7~|ES#s$CGBfazewt*q~?Ho*}$K^iUEIw;-%3|CqYxi=$Kd+~e z8`Jh)ip*YIYuxx*UUFpIvzmJNOedx=ataaVcx8TWiuglKX2~6W@|ZD+8Mb*k1)4k; zRd?3zB8*VA7q4KZns)-P)zfziMhqN?#38QFOyrvIv;Kq}88lUG*RHi}ZNuI{@vxvd zWZ(I1O?!TmT*7n6)u>A}o|%Mvw`i)&NlTaIq~c;Mc3jyE(i$&xJYW5>-?`rt*q$6o z9d?QROv5EzV*BtbjpJQb&{VzO-|~7qHy146wv$tD9d(f@OsyxHQ8O%BSNI&6-Y;kX zYJHvzoDf2&3T3;6Uxn?5dF7VwPbH3ow+iaCh2DAKKTWJ56YG1~FOC~s1Tp3D^SWg0 zm%r)|8@6)rATrk|0mSgi%9(C*o{iO^>h(qdBq+?g8sZNC*ApLn|;hh^G3D%E+Guj1QW-Ay%A-e*!zhGF5INTiH})&yzJalwjY8^NGQKux&%iZ-ML7C6!7zgrakQV0Ddf zwrI8K%kq0?Sne4Y8IDhvZ2hE%biyjQu7^ay)nbJyinv0yc0x-gM>sx!&~#gU*L@FX z3g%OfR+cz3ZCylvL^ta6Y6Il8{dDMr-xjGQAPLY5QjP{++Rg+u1BPUOghV`ntv;DYjNw5zm}lBP@2@&gqbF zTc{OX@^V;|hvv7c*FM*yb1IK4<5&e88RmQ*ihybYl2Y;b&KO&C0o~wvL`w#tnEjo- zXM~r8iujDiE3!K^O*BkVv8T^bIa5Hkrqv)v19Brdym54>tAQ0cyCQ&clak*>)Q5Pe z-7FIoaagPm_Ic`}ffSh0GOYWmcy6)QX1$mmfUm$Os&`U5OkqrVw?z7{`j4&JJ6b)S zc3n)-s2B%3{p{^Cdf=I)eudKTrvR-~rp(~rrVm4Mt)*yOs&vE`&pF7<9Ge;|DEyjIb|} zs0Zv@P$Rk%ehsy(hjYCq^kXDaE2{QAIIqXkX6*(u7Vz%OdZOc^w)GKlq9eS1(#7Qb;NLyscni;Mru9=Q0%C&}fE&IDsN!Q?y z-49wEGDZei<|g#6NcVmusB;~E7KwZ)@f=~fBraRnlZ4AmDZ0(&RNIAJa<*#TrS5v! z^r`i3PE~ADgU|Y!%#)-nDJJ-U6nOp*H)qu7MCs`xZ7DU%!h=FGb02n{hl;s74`qGC z?uDBL$`Qk=6uGeTlgN3b#c!hK$ZkN9#Y{}ba^R5voD3$Lh z)u4eiysG*)3MX;Ib-n|sv{+a!l$FJV=(S9?bJ7q*(Y@kf<)`$#vedbNPdBzWx7nWj zVID<2$7a|mB_ZUn#e4rq=;De~ z@PLtsiTIGN2W*eQ=qr!tS6$#z{aho1>xvG-D5+K|vA_Q=1QONoN+1cqo9x^Q3LGZC z_*Ei#_E14<**NCNE;rk-8^W`E?ELC00-SUoh$Bo3`l>ND@yj-1VP#)y413Z%4UkLy zuix@&-sL#n*2BMF#+Z9h$TB)5qSp8geYvQLAnzP5B*xsa(Z+7| z4fkB|C?u1fN(Pt#F~)c&J?=DJtOm_nENZ!;wA3}U<3p}j+cZ|;yB}96_gN(e1#*%& z%#N44DO@+C@{TyJ!i0zi)H><(sRU!+nSdVEX=#Yef-CK5DSD5gh}V}CpdRi8@~lY% z2FP^Xfq%Xo@mk-0YAp5zqs;*BK_nq3L+{3VYD~ff6=-lcHTLcj@2r;{5Z#@^)O5olfcq8V3IP3 zlYy2g)3j}r?*90mPT!dn){!z$&@4Ps`_tq)yv?1(#r^A$mqio9e%v3O-r@co*R>12 zmD|0P;>4~L8w_$Uq?%r*SgAQqWtp3q0$je&5EfP~&UySVexDbQX=)VK#DsGsjJMx* z{H8}NAN}97WQ@>#lwnv467$F4ra+T5kpG|CdGW_@H5Qq=jkCssmS#+HZKWJt-eD2l#Uo=rM%3xZ_t84>>%uXL;W>oo#+r<^DUi zEYE7tvr6-&J^s+w&*QROzt#4f73_UjFHgOi*l z`N8^~7yoVjY5dH3l*a9wRvY-Fa*XlDv=K$RoO2}VltAMzFViokvw}#L#`+eMjjhov zdau(!$8jwSEACpES*`yq1}BvBhG9Zz-OYiJD5`VsI{Vm~%ziX2{%|h+NnJ<6((cp? zSo77Of)K`o^%uQz!Sj}@`yw19s-hs}Nu~U-Pu2?JTIm;!{+^}PzV2dzU8?HxKIuD2 zAixqC)(uTCXb4|O+<^2{cC7vD0pQL|<~Nn^zzvERjgF7$aYYha?JJ1~tD zCUc?6s6Jc*e2`b?m%gT9eB^e(`m>SThn+9E@zEg?B*y;!d>X-MpCmZPD`9kJtPdta z#Zh^~_gcs+^pWL|N^5qq1NT6L&c_2&ZO2q*2JKYYGShTmIBBCgSKC-6~OJrv!v%nGLiFl&c7)+>)nevlOFp zl7gR@*e)JSvo>REZwCcH+Ox@FCn-_|-2DxLxCA^Z8)eIX3^8 z|HROJbe&R1)AnQy|EBF~iJ{Ah({#EB;%OAhTJ(jX_~ocKei1sp7cqz6$XJHn(Fbfv zqAkB*+_QGaEsS|w$unf>j@;qcuBKV<6w;?Yk@zaVdtcF#)>p6p8EigE@k%Lk3m0tT zUNI`ThBHCN2ZP+mP^ZP#_I>rNm59cVZ^IQJ!!vsF60$qZs&=Cz3VjPMy9+zPgWAaB zYq2KbMaGH~9+@MlLjy^rH50VOtKS-3X|u;I{j~o(u+l)5bo9yn@O!Dh<+;~KuH$=A zuraX=iR7K7_^dEN_T32E9ndR2GG$=n?OcFge@1cL!Do=R#K-oN^fEtZS0H7_cIg}n zq#Zbv=q1cja>NyW6e{DjyU-AJ6dLvja+*rn7WDo1xM8ix^}eG0+T7)SmPVx1SVdjS z9^=i<$-&>t6mG}9)Nj+I==O5sv`D;|VPpM(-GM{8*IC~#f1CY(8VhJU@9a9x{>A-$ PQy?RuAYS#KLBRh3skmy6 diff --git a/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_logo_light.png b/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_logo_light.png deleted file mode 100644 index 6157ca5cee0538286c3ff398fb6a7364be3db554..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9502 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 A2><{9 diff --git a/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_logo_minimal_dark.png b/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_logo_minimal_dark.png deleted file mode 100644 index 81509cfa02b5fea81faa5049d147db134f641ccd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7592 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 diff --git a/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_logo_minimal_light.png b/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_logo_minimal_light.png deleted file mode 100644 index d0c59666d1b7a8b00ea4ac033b1f60cf81fb7303..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6870 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 + + + + + + + + + + + + + + + diff --git a/patches/src/main/resources/change-header/drawable/revanced_header_minimal_light.xml b/patches/src/main/resources/change-header/drawable/revanced_header_minimal_light.xml new file mode 100644 index 000000000..a40169f45 --- /dev/null +++ b/patches/src/main/resources/change-header/drawable/revanced_header_minimal_light.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + diff --git a/patches/src/main/resources/change-header/drawable/revanced_header_rounded_dark.xml b/patches/src/main/resources/change-header/drawable/revanced_header_rounded_dark.xml new file mode 100644 index 000000000..73de0de42 --- /dev/null +++ b/patches/src/main/resources/change-header/drawable/revanced_header_rounded_dark.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/patches/src/main/resources/change-header/drawable/revanced_header_rounded_light.xml b/patches/src/main/resources/change-header/drawable/revanced_header_rounded_light.xml new file mode 100644 index 000000000..a6e1cbe5e --- /dev/null +++ b/patches/src/main/resources/change-header/drawable/revanced_header_rounded_light.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + From dfdbbfa0478b22da83f9c57f40b23612d1ff4fca Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Mon, 27 Oct 2025 17:14:52 +0000 Subject: [PATCH 09/18] chore: Release v5.45.0-dev.3 [skip ci] # [5.45.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.45.0-dev.2...v5.45.0-dev.3) (2025-10-27) ### Features * **YouTube - Change Header:** Use SVG for header logo ([#6178](https://github.com/ReVanced/revanced-patches/issues/6178)) ([e9f45ce](https://github.com/ReVanced/revanced-patches/commit/e9f45ce92695d5857473ff71c14b190bded28a73)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c8788c5aa..c638ea10a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [5.45.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.45.0-dev.2...v5.45.0-dev.3) (2025-10-27) + + +### Features + +* **YouTube - Change Header:** Use SVG for header logo ([#6178](https://github.com/ReVanced/revanced-patches/issues/6178)) ([e9f45ce](https://github.com/ReVanced/revanced-patches/commit/e9f45ce92695d5857473ff71c14b190bded28a73)) + # [5.45.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.45.0-dev.1...v5.45.0-dev.2) (2025-10-26) diff --git a/gradle.properties b/gradle.properties index 16f71b818..55e310f9b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M org.gradle.parallel = true android.useAndroidX = true kotlin.code.style = official -version = 5.45.0-dev.2 +version = 5.45.0-dev.3 From 38d9299dfe53aacd0338a507ade2f360f0d2a3f1 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Thu, 30 Oct 2025 09:26:18 +0100 Subject: [PATCH 10/18] chore: Add branding license text file (#6179) --- .../layout/branding/AddBrandLicensePatch.kt | 25 +++++++++++++++++++ .../branding/BaseCustomBrandingPatch.kt | 1 + .../shared/misc/settings/SettingsPatch.kt | 7 +++++- .../tiktok/misc/settings/SettingsPatch.kt | 3 ++- .../branding/header/ChangeHeaderPatch.kt | 6 ++++- .../branding-license/LICENSE_REVANCED.TXT | 5 ++++ 6 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 patches/src/main/kotlin/app/revanced/patches/shared/layout/branding/AddBrandLicensePatch.kt create mode 100644 patches/src/main/resources/branding-license/LICENSE_REVANCED.TXT diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/layout/branding/AddBrandLicensePatch.kt b/patches/src/main/kotlin/app/revanced/patches/shared/layout/branding/AddBrandLicensePatch.kt new file mode 100644 index 000000000..629a53e2e --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/shared/layout/branding/AddBrandLicensePatch.kt @@ -0,0 +1,25 @@ +package app.revanced.patches.shared.layout.branding + +import app.revanced.patcher.patch.rawResourcePatch +import app.revanced.util.inputStreamFromBundledResource +import java.nio.file.Files + +/** + * Copies a branding license text file to the target apk. + * + * This patch must be a dependency for all patches that add ReVanced branding to the target app. + */ +internal val addBrandLicensePatch = rawResourcePatch { + execute { + val brandingLicenseFileName = "LICENSE_REVANCED.TXT" + + val inputFileStream = inputStreamFromBundledResource( + "branding-license", + brandingLicenseFileName + )!! + + val targetFile = get(brandingLicenseFileName, false).toPath() + + Files.copy(inputFileStream, targetFile) + } +} diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/layout/branding/BaseCustomBrandingPatch.kt b/patches/src/main/kotlin/app/revanced/patches/shared/layout/branding/BaseCustomBrandingPatch.kt index d3e718085..a2b88d7f1 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/layout/branding/BaseCustomBrandingPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/layout/branding/BaseCustomBrandingPatch.kt @@ -123,6 +123,7 @@ internal fun baseCustomBrandingPatch( dependsOn( addResourcesPatch, resourceMappingPatch, + addBrandLicensePatch, bytecodePatch { execute { mainActivityOnCreateFingerprint.method.addInstruction( diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/settings/SettingsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/settings/SettingsPatch.kt index 9d13d1e55..c721044cc 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/settings/SettingsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/settings/SettingsPatch.kt @@ -6,6 +6,7 @@ import app.revanced.patcher.patch.resourcePatch import app.revanced.patches.all.misc.resources.addResource import app.revanced.patches.all.misc.resources.addResources import app.revanced.patches.all.misc.resources.addResourcesPatch +import app.revanced.patches.shared.layout.branding.addBrandLicensePatch import app.revanced.patches.shared.misc.settings.preference.BasePreference import app.revanced.patches.shared.misc.settings.preference.IntentPreference import app.revanced.patches.shared.misc.settings.preference.PreferenceCategory @@ -61,7 +62,11 @@ fun settingsPatch ( rootPreferences: List>? = null, preferences: Set, ) = resourcePatch { - dependsOn(addResourcesPatch, settingsColorPatch) + dependsOn( + addResourcesPatch, + settingsColorPatch, + addBrandLicensePatch + ) execute { copyResources( diff --git a/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/settings/SettingsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/settings/SettingsPatch.kt index 3b4840a83..bc6cc2bff 100644 --- a/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/settings/SettingsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/settings/SettingsPatch.kt @@ -5,6 +5,7 @@ import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWith import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patcher.patch.bytecodePatch import app.revanced.patcher.util.smali.ExternalLabel +import app.revanced.patches.shared.layout.branding.addBrandLicensePatch import app.revanced.patches.tiktok.misc.extension.sharedExtensionPatch import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.iface.instruction.formats.Instruction22c @@ -18,7 +19,7 @@ val settingsPatch = bytecodePatch( name = "Settings", description = "Adds ReVanced settings to TikTok.", ) { - dependsOn(sharedExtensionPatch) + dependsOn(sharedExtensionPatch, addBrandLicensePatch) compatibleWith( "com.ss.android.ugc.trill"("36.5.4"), diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/branding/header/ChangeHeaderPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/branding/header/ChangeHeaderPatch.kt index 1a5e131ba..a7b33cd48 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/branding/header/ChangeHeaderPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/branding/header/ChangeHeaderPatch.kt @@ -9,6 +9,7 @@ import app.revanced.patcher.patch.stringOption import app.revanced.patcher.util.Document import app.revanced.patches.all.misc.resources.addResources import app.revanced.patches.all.misc.resources.addResourcesPatch +import app.revanced.patches.shared.layout.branding.addBrandLicensePatch import app.revanced.patches.shared.misc.mapping.get import app.revanced.patches.shared.misc.mapping.resourceMappingPatch import app.revanced.patches.shared.misc.mapping.resourceMappings @@ -54,7 +55,10 @@ private val customHeaderResourceFileNames = variants.map { variant -> private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/patches/ChangeHeaderPatch;" private val changeHeaderBytecodePatch = bytecodePatch { - dependsOn(resourceMappingPatch) + dependsOn( + resourceMappingPatch, + addBrandLicensePatch + ) execute { // Verify images exist. Resources are not used during patching but extension code does. diff --git a/patches/src/main/resources/branding-license/LICENSE_REVANCED.TXT b/patches/src/main/resources/branding-license/LICENSE_REVANCED.TXT new file mode 100644 index 000000000..c32047dba --- /dev/null +++ b/patches/src/main/resources/branding-license/LICENSE_REVANCED.TXT @@ -0,0 +1,5 @@ +The ReVanced branding found in this software is copyrighted and not covered under the GPL. + +To use or distribute ReVanced branding, you must obtain permission by contacting branding@revanced.app + +For more information see https://github.com/ReVanced/revanced-branding From a0c56049510ce040e1ccd49257864672c343344d Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Thu, 30 Oct 2025 09:27:27 +0100 Subject: [PATCH 11/18] fix(YouTube - Change header): Do not mirror header graphic with RTL languages --- .../drawable/revanced_header_minimal_dark.xml | 1 + .../revanced_header_minimal_light.xml | 1 + .../drawable/revanced_header_rounded_dark.xml | 69 ++++++++++--------- .../revanced_header_rounded_light.xml | 69 ++++++++++--------- 4 files changed, 72 insertions(+), 68 deletions(-) diff --git a/patches/src/main/resources/change-header/drawable/revanced_header_minimal_dark.xml b/patches/src/main/resources/change-header/drawable/revanced_header_minimal_dark.xml index 9f337b7c1..5af74bac1 100644 --- a/patches/src/main/resources/change-header/drawable/revanced_header_minimal_dark.xml +++ b/patches/src/main/resources/change-header/drawable/revanced_header_minimal_dark.xml @@ -3,6 +3,7 @@ xmlns:aapt="http://schemas.android.com/aapt" android:width="129dp" android:height="48dp" + android:autoMirrored="false" android:viewportWidth="129" android:viewportHeight="48"> diff --git a/patches/src/main/resources/change-header/drawable/revanced_header_minimal_light.xml b/patches/src/main/resources/change-header/drawable/revanced_header_minimal_light.xml index a40169f45..d36de64b2 100644 --- a/patches/src/main/resources/change-header/drawable/revanced_header_minimal_light.xml +++ b/patches/src/main/resources/change-header/drawable/revanced_header_minimal_light.xml @@ -3,6 +3,7 @@ xmlns:aapt="http://schemas.android.com/aapt" android:width="129dp" android:height="48dp" + android:autoMirrored="false" android:viewportWidth="129" android:viewportHeight="48"> diff --git a/patches/src/main/resources/change-header/drawable/revanced_header_rounded_dark.xml b/patches/src/main/resources/change-header/drawable/revanced_header_rounded_dark.xml index 73de0de42..90c589e63 100644 --- a/patches/src/main/resources/change-header/drawable/revanced_header_rounded_dark.xml +++ b/patches/src/main/resources/change-header/drawable/revanced_header_rounded_dark.xml @@ -3,54 +3,55 @@ xmlns:aapt="http://schemas.android.com/aapt" android:width="129dp" android:height="48dp" + android:autoMirrored="false" android:viewportWidth="129" android:viewportHeight="48"> - - - - - - - - - - + + + + + + + + + + + + - + + android:color="#F04E98" + android:offset="0" /> + android:color="#5F65D4" + android:offset="0.5" /> + android:color="#4E98F0" + android:offset="1" /> diff --git a/patches/src/main/resources/change-header/drawable/revanced_header_rounded_light.xml b/patches/src/main/resources/change-header/drawable/revanced_header_rounded_light.xml index a6e1cbe5e..2523e2f6a 100644 --- a/patches/src/main/resources/change-header/drawable/revanced_header_rounded_light.xml +++ b/patches/src/main/resources/change-header/drawable/revanced_header_rounded_light.xml @@ -3,54 +3,55 @@ xmlns:aapt="http://schemas.android.com/aapt" android:width="129dp" android:height="48dp" + android:autoMirrored="false" android:viewportWidth="129" android:viewportHeight="48"> - - - - - - - - - - + + + + + + + + + + + + - + + android:color="#F04E98" + android:offset="0" /> + android:color="#5F65D4" + android:offset="0.5" /> + android:color="#4E98F0" + android:offset="1" /> From 12e7c0943a047d8f59bbc0e637ddf30cdfffda73 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 30 Oct 2025 08:32:28 +0000 Subject: [PATCH 12/18] chore: Release v5.45.0-dev.4 [skip ci] # [5.45.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.45.0-dev.3...v5.45.0-dev.4) (2025-10-30) ### Bug Fixes * **YouTube - Change header:** Do not mirror header graphic with RTL languages ([a0c5604](https://github.com/ReVanced/revanced-patches/commit/a0c56049510ce040e1ccd49257864672c343344d)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c638ea10a..4bcf9302f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [5.45.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.45.0-dev.3...v5.45.0-dev.4) (2025-10-30) + + +### Bug Fixes + +* **YouTube - Change header:** Do not mirror header graphic with RTL languages ([a0c5604](https://github.com/ReVanced/revanced-patches/commit/a0c56049510ce040e1ccd49257864672c343344d)) + # [5.45.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.45.0-dev.2...v5.45.0-dev.3) (2025-10-27) diff --git a/gradle.properties b/gradle.properties index 55e310f9b..0d294bd02 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M org.gradle.parallel = true android.useAndroidX = true kotlin.code.style = official -version = 5.45.0-dev.3 +version = 5.45.0-dev.4 From 292fae440c6d5694c5e84407becec2d91f1fd156 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Sat, 1 Nov 2025 08:31:17 +0100 Subject: [PATCH 13/18] fix(YouTube - Spoof video streams): Remove spoof stream audio selector that no longer works --- .../shared/settings/BaseSettings.java | 2 - .../shared/spoof/SpoofVideoStreamsPatch.java | 11 +--- .../shared/spoof/requests/PlayerRoutes.java | 5 +- .../SpoofAudioSelectorListPreference.java | 63 ------------------- .../misc/spoof/SpoofVideoStreamsPatch.kt | 7 --- .../resources/addresources/values/strings.xml | 6 +- 6 files changed, 3 insertions(+), 91 deletions(-) delete mode 100644 extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/SpoofAudioSelectorListPreference.java diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/BaseSettings.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/BaseSettings.java index 3bc16e313..c1bc849c1 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/BaseSettings.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/BaseSettings.java @@ -4,7 +4,6 @@ import static java.lang.Boolean.FALSE; import static java.lang.Boolean.TRUE; import static app.revanced.extension.shared.patches.CustomBrandingPatch.BrandingTheme; import static app.revanced.extension.shared.settings.Setting.parent; -import static app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch.AudioStreamLanguageOverrideAvailability; /** * Settings shared across multiple apps. @@ -34,7 +33,6 @@ public class BaseSettings { // public static final BooleanSetting SPOOF_VIDEO_STREAMS = new BooleanSetting("revanced_spoof_video_streams", TRUE, true, "revanced_spoof_video_streams_user_dialog_message"); - public static final EnumSetting SPOOF_VIDEO_STREAMS_LANGUAGE = new EnumSetting<>("revanced_spoof_video_streams_language", AppLanguage.DEFAULT, new AudioStreamLanguageOverrideAvailability()); public static final BooleanSetting SPOOF_STREAMING_DATA_STATS_FOR_NERDS = new BooleanSetting("revanced_spoof_streaming_data_stats_for_nerds", TRUE, parent(SPOOF_VIDEO_STREAMS)); public static final BooleanSetting SANITIZE_SHARED_LINKS = new BooleanSetting("revanced_sanitize_sharing_links", TRUE); diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/SpoofVideoStreamsPatch.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/SpoofVideoStreamsPatch.java index 53664881b..77ef1a663 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/SpoofVideoStreamsPatch.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/SpoofVideoStreamsPatch.java @@ -14,19 +14,11 @@ import app.revanced.extension.shared.Logger; import app.revanced.extension.shared.Utils; import app.revanced.extension.shared.settings.AppLanguage; import app.revanced.extension.shared.settings.BaseSettings; -import app.revanced.extension.shared.settings.Setting; import app.revanced.extension.shared.spoof.requests.StreamingDataRequest; @SuppressWarnings("unused") public class SpoofVideoStreamsPatch { - public static final class AudioStreamLanguageOverrideAvailability implements Setting.Availability { - @Override - public boolean isAvailable() { - return BaseSettings.SPOOF_VIDEO_STREAMS.get() && !preferredClient.useAuth; - } - } - /** * Domain used for internet connectivity verification. * It has an empty response body and is only used to check for a 204 response code. @@ -62,8 +54,7 @@ public class SpoofVideoStreamsPatch { } /** - * @param language Language override for non-authenticated requests. If this is null then - * {@link BaseSettings#SPOOF_VIDEO_STREAMS_LANGUAGE} is used. + * @param language Language override for non-authenticated requests. */ public static void setLanguageOverride(@Nullable AppLanguage language) { languageOverride = language; diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/requests/PlayerRoutes.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/requests/PlayerRoutes.java index cfc811d75..31e3f0303 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/requests/PlayerRoutes.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/requests/PlayerRoutes.java @@ -1,7 +1,5 @@ package app.revanced.extension.shared.spoof.requests; -import static app.revanced.extension.shared.spoof.ClientType.ANDROID_VR_1_43_32; - import org.json.JSONException; import org.json.JSONObject; @@ -13,7 +11,6 @@ import app.revanced.extension.shared.Logger; import app.revanced.extension.shared.requests.Requester; import app.revanced.extension.shared.requests.Route; import app.revanced.extension.shared.settings.AppLanguage; -import app.revanced.extension.shared.settings.BaseSettings; import app.revanced.extension.shared.spoof.ClientType; import app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch; @@ -44,7 +41,7 @@ final class PlayerRoutes { AppLanguage language = SpoofVideoStreamsPatch.getLanguageOverride(); if (language == null) { // Force original audio has not overrode the language. - language = BaseSettings.SPOOF_VIDEO_STREAMS_LANGUAGE.get(); + language = AppLanguage.DEFAULT; } //noinspection ExtractMethodRecommender Locale streamLocale = language.getLocale(); diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/SpoofAudioSelectorListPreference.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/SpoofAudioSelectorListPreference.java deleted file mode 100644 index 00c3f2007..000000000 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/SpoofAudioSelectorListPreference.java +++ /dev/null @@ -1,63 +0,0 @@ -package app.revanced.extension.youtube.settings.preference; - -import static app.revanced.extension.shared.StringRef.str; - -import android.content.Context; -import android.util.AttributeSet; - -import app.revanced.extension.shared.settings.preference.SortedListPreference; -import app.revanced.extension.shared.spoof.ClientType; -import app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch; -import app.revanced.extension.youtube.settings.Settings; - -@SuppressWarnings({"deprecation", "unused"}) -public class SpoofAudioSelectorListPreference extends SortedListPreference { - - private final boolean available; - - { - final boolean isAndroidStudio = Settings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get() == ClientType.ANDROID_CREATOR; - - if (isAndroidStudio || SpoofVideoStreamsPatch.getLanguageOverride() != null) { - available = false; - super.setEnabled(false); - super.setSummary(str(isAndroidStudio - ? "revanced_spoof_video_streams_language_android_studio" - : "revanced_spoof_video_streams_language_not_available")); - } else { - available = true; - } - } - - public SpoofAudioSelectorListPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { - super(context, attrs, defStyleAttr, defStyleRes); - } - public SpoofAudioSelectorListPreference(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - } - public SpoofAudioSelectorListPreference(Context context, AttributeSet attrs) { - super(context, attrs); - } - public SpoofAudioSelectorListPreference(Context context) { - super(context); - } - - @Override - public void setEnabled(boolean enabled) { - if (!available) { - return; - } - - super.setEnabled(enabled); - } - - @Override - public void setSummary(CharSequence summary) { - if (!available) { - return; - } - - super.setSummary(summary); - } -} - diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/spoof/SpoofVideoStreamsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/spoof/SpoofVideoStreamsPatch.kt index 2192f8016..28cf55bd4 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/spoof/SpoofVideoStreamsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/spoof/SpoofVideoStreamsPatch.kt @@ -63,13 +63,6 @@ val spoofVideoStreamsPatch = spoofVideoStreamsPatch( tag = "app.revanced.extension.youtube.settings.preference.SpoofStreamingDataSideEffectsPreference" ), SwitchPreference("revanced_spoof_video_streams_av1"), - ListPreference( - key = "revanced_spoof_video_streams_language", - // Language strings are declared in Setting patch. - entriesKey = "revanced_language_entries", - entryValuesKey = "revanced_language_entry_values", - tag = "app.revanced.extension.youtube.settings.preference.SpoofAudioSelectorListPreference" - ), SwitchPreference("revanced_spoof_streaming_data_stats_for_nerds"), ) ) diff --git a/patches/src/main/resources/addresources/values/strings.xml b/patches/src/main/resources/addresources/values/strings.xml index 4b7a00125..d644d34a2 100644 --- a/patches/src/main/resources/addresources/values/strings.xml +++ b/patches/src/main/resources/addresources/values/strings.xml @@ -1,4 +1,4 @@ - + - To select a specific audio language, turn off \'Force original audio language\' - Stream language selection is not available with Android Studio From 3e4990afff4c86b93970b153db713ad0f813124d Mon Sep 17 00:00:00 2001 From: hxreborn <32096750+hxreborn@users.noreply.github.com> Date: Sat, 1 Nov 2025 08:32:26 +0100 Subject: [PATCH 14/18] fix(TikTok - Downloads): Fix download path setting (#6191) --- .../interaction/downloads/DownloadsPatch.kt | 83 +++++++++---------- 1 file changed, 37 insertions(+), 46 deletions(-) diff --git a/patches/src/main/kotlin/app/revanced/patches/tiktok/interaction/downloads/DownloadsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/tiktok/interaction/downloads/DownloadsPatch.kt index b80ceaed0..e6894b521 100644 --- a/patches/src/main/kotlin/app/revanced/patches/tiktok/interaction/downloads/DownloadsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/tiktok/interaction/downloads/DownloadsPatch.kt @@ -3,14 +3,20 @@ package app.revanced.patches.tiktok.interaction.downloads import app.revanced.patcher.extensions.InstructionExtensions.addInstruction import app.revanced.patcher.extensions.InstructionExtensions.addInstructions import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels -import app.revanced.patcher.extensions.InstructionExtensions.replaceInstructions +import app.revanced.patcher.extensions.InstructionExtensions.getInstruction +import app.revanced.patcher.extensions.InstructionExtensions.removeInstructions import app.revanced.patcher.patch.bytecodePatch import app.revanced.patches.tiktok.misc.extension.sharedExtensionPatch import app.revanced.patches.tiktok.misc.settings.settingsPatch import app.revanced.patches.tiktok.misc.settings.settingsStatusLoadFingerprint +import app.revanced.util.findInstructionIndicesReversedOrThrow import app.revanced.util.getReference -import app.revanced.util.indexOfFirstInstructionOrThrow -import com.android.tools.smali.dexlib2.iface.reference.MethodReference +import app.revanced.util.returnEarly +import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction +import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction +import com.android.tools.smali.dexlib2.iface.reference.FieldReference + +private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/tiktok/download/DownloadsPatch;" @Suppress("unused") val downloadsPatch = bytecodePatch( @@ -28,60 +34,45 @@ val downloadsPatch = bytecodePatch( ) execute { - aclCommonShareFingerprint.method.replaceInstructions( - 0, - """ - const/4 v0, 0x0 - return v0 - """, - ) - - aclCommonShare2Fingerprint.method.replaceInstructions( - 0, - """ - const/4 v0, 0x2 - return v0 - """, - ) + aclCommonShareFingerprint.method.returnEarly(0) + aclCommonShare2Fingerprint.method.returnEarly(2) // Download videos without watermark. aclCommonShare3Fingerprint.method.addInstructionsWithLabels( 0, """ - invoke-static {}, Lapp/revanced/extension/tiktok/download/DownloadsPatch;->shouldRemoveWatermark()Z - move-result v0 - if-eqz v0, :noremovewatermark - const/4 v0, 0x1 - return v0 - :noremovewatermark - nop - """, + invoke-static {}, $EXTENSION_CLASS_DESCRIPTOR->shouldRemoveWatermark()Z + move-result v0 + if-eqz v0, :noremovewatermark + const/4 v0, 0x1 + return v0 + :noremovewatermark + nop + """, ) // Change the download path patch. downloadUriFingerprint.method.apply { - val firstIndex = indexOfFirstInstructionOrThrow { - getReference()?.name == "" - } - val secondIndex = indexOfFirstInstructionOrThrow { - getReference()?.returnType?.contains("Uri") == true - } + findInstructionIndicesReversedOrThrow { + getReference().let { + it?.definingClass == "Landroid/os/Environment;" && it.name.startsWith("DIRECTORY_") + } + }.forEach { fieldIndex -> + val pathRegister = getInstruction(fieldIndex).registerA + val builderRegister = getInstruction(fieldIndex + 1).registerC - addInstructions( - secondIndex, - """ - invoke-static {}, Lapp/revanced/extension/tiktok/download/DownloadsPatch;->getDownloadPath()Ljava/lang/String; - move-result-object v0 - """, - ) + // Remove 'field load → append → "/Camera/" → append' block. + removeInstructions(fieldIndex, 4) - addInstructions( - firstIndex, - """ - invoke-static {}, Lapp/revanced/extension/tiktok/download/DownloadsPatch;->getDownloadPath()Ljava/lang/String; - move-result-object v0 - """, - ) + addInstructions( + fieldIndex, + """ + invoke-static {}, $EXTENSION_CLASS_DESCRIPTOR->getDownloadPath()Ljava/lang/String; + move-result-object v$pathRegister + invoke-virtual { v$builderRegister, v$pathRegister }, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + """, + ) + } } settingsStatusLoadFingerprint.method.addInstruction( From c17cf98c7eb9708d210af466cb4f6f630a4edd21 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 1 Nov 2025 07:36:49 +0000 Subject: [PATCH 15/18] chore: Release v5.45.0-dev.5 [skip ci] # [5.45.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.45.0-dev.4...v5.45.0-dev.5) (2025-11-01) ### Bug Fixes * **TikTok - Downloads:** Fix download path setting ([#6191](https://github.com/ReVanced/revanced-patches/issues/6191)) ([3e4990a](https://github.com/ReVanced/revanced-patches/commit/3e4990afff4c86b93970b153db713ad0f813124d)) * **YouTube - Spoof video streams:** Remove spoof stream audio selector that no longer works ([292fae4](https://github.com/ReVanced/revanced-patches/commit/292fae440c6d5694c5e84407becec2d91f1fd156)) --- CHANGELOG.md | 8 ++++++++ gradle.properties | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4bcf9302f..552afbcb4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +# [5.45.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.45.0-dev.4...v5.45.0-dev.5) (2025-11-01) + + +### Bug Fixes + +* **TikTok - Downloads:** Fix download path setting ([#6191](https://github.com/ReVanced/revanced-patches/issues/6191)) ([3e4990a](https://github.com/ReVanced/revanced-patches/commit/3e4990afff4c86b93970b153db713ad0f813124d)) +* **YouTube - Spoof video streams:** Remove spoof stream audio selector that no longer works ([292fae4](https://github.com/ReVanced/revanced-patches/commit/292fae440c6d5694c5e84407becec2d91f1fd156)) + # [5.45.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.45.0-dev.3...v5.45.0-dev.4) (2025-10-30) diff --git a/gradle.properties b/gradle.properties index 0d294bd02..4706cb5b5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M org.gradle.parallel = true android.useAndroidX = true kotlin.code.style = official -version = 5.45.0-dev.4 +version = 5.45.0-dev.5 From 2cf8f0e636d93d56c16127829521c942fb9b3578 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 1 Nov 2025 09:17:01 +0100 Subject: [PATCH 16/18] chore: Sync translations (#6197) --- .../addresources/values-af-rZA/strings.xml | 3 +- .../addresources/values-am-rET/strings.xml | 3 +- .../addresources/values-ar-rSA/strings.xml | 6 +-- .../addresources/values-as-rIN/strings.xml | 3 +- .../addresources/values-az-rAZ/strings.xml | 6 +-- .../addresources/values-be-rBY/strings.xml | 6 +-- .../addresources/values-bg-rBG/strings.xml | 6 +-- .../addresources/values-bn-rBD/strings.xml | 6 +-- .../addresources/values-bs-rBA/strings.xml | 3 +- .../addresources/values-ca-rES/strings.xml | 3 +- .../addresources/values-cs-rCZ/strings.xml | 6 +-- .../addresources/values-da-rDK/strings.xml | 6 +-- .../addresources/values-de-rDE/strings.xml | 6 +-- .../addresources/values-el-rGR/strings.xml | 6 +-- .../addresources/values-es-rES/strings.xml | 6 +-- .../addresources/values-et-rEE/strings.xml | 6 +-- .../addresources/values-eu-rES/strings.xml | 3 +- .../addresources/values-fa-rIR/strings.xml | 3 +- .../addresources/values-fi-rFI/strings.xml | 6 +-- .../addresources/values-fil-rPH/strings.xml | 6 +-- .../addresources/values-fr-rFR/strings.xml | 6 +-- .../addresources/values-ga-rIE/strings.xml | 6 +-- .../addresources/values-gl-rES/strings.xml | 3 +- .../addresources/values-gu-rIN/strings.xml | 3 +- .../addresources/values-hi-rIN/strings.xml | 3 +- .../addresources/values-hr-rHR/strings.xml | 3 +- .../addresources/values-hu-rHU/strings.xml | 6 +-- .../addresources/values-hy-rAM/strings.xml | 6 +-- .../addresources/values-in-rID/strings.xml | 6 +-- .../addresources/values-is-rIS/strings.xml | 3 +- .../addresources/values-it-rIT/strings.xml | 6 +-- .../addresources/values-iw-rIL/strings.xml | 6 +-- .../addresources/values-ja-rJP/strings.xml | 46 ++++++++-------- .../addresources/values-ka-rGE/strings.xml | 3 +- .../addresources/values-kk-rKZ/strings.xml | 3 +- .../addresources/values-km-rKH/strings.xml | 3 +- .../addresources/values-kn-rIN/strings.xml | 3 +- .../addresources/values-ko-rKR/strings.xml | 10 ++-- .../addresources/values-ky-rKG/strings.xml | 3 +- .../addresources/values-lo-rLA/strings.xml | 3 +- .../addresources/values-lt-rLT/strings.xml | 6 +-- .../addresources/values-lv-rLV/strings.xml | 6 +-- .../addresources/values-mk-rMK/strings.xml | 3 +- .../addresources/values-ml-rIN/strings.xml | 3 +- .../addresources/values-mn-rMN/strings.xml | 3 +- .../addresources/values-mr-rIN/strings.xml | 3 +- .../addresources/values-ms-rMY/strings.xml | 3 +- .../addresources/values-my-rMM/strings.xml | 3 +- .../addresources/values-nb-rNO/strings.xml | 3 +- .../addresources/values-ne-rIN/strings.xml | 3 +- .../addresources/values-nl-rNL/strings.xml | 6 +-- .../addresources/values-or-rIN/strings.xml | 3 +- .../addresources/values-pa-rIN/strings.xml | 3 +- .../addresources/values-pl-rPL/strings.xml | 6 +-- .../addresources/values-pt-rBR/strings.xml | 6 +-- .../addresources/values-pt-rPT/strings.xml | 6 +-- .../addresources/values-ro-rRO/strings.xml | 6 +-- .../addresources/values-ru-rRU/strings.xml | 54 +++++++++---------- .../addresources/values-si-rLK/strings.xml | 3 +- .../addresources/values-sk-rSK/strings.xml | 6 +-- .../addresources/values-sl-rSI/strings.xml | 6 +-- .../addresources/values-sq-rAL/strings.xml | 6 +-- .../addresources/values-sr-rCS/strings.xml | 6 +-- .../addresources/values-sr-rSP/strings.xml | 6 +-- .../addresources/values-sv-rSE/strings.xml | 12 ++--- .../addresources/values-sw-rKE/strings.xml | 3 +- .../addresources/values-ta-rIN/strings.xml | 3 +- .../addresources/values-te-rIN/strings.xml | 3 +- .../addresources/values-th-rTH/strings.xml | 6 +-- .../addresources/values-tr-rTR/strings.xml | 6 +-- .../addresources/values-uk-rUA/strings.xml | 6 +-- .../addresources/values-ur-rIN/strings.xml | 3 +- .../addresources/values-uz-rUZ/strings.xml | 3 +- .../addresources/values-vi-rVN/strings.xml | 6 +-- .../addresources/values-zh-rCN/strings.xml | 6 +-- .../addresources/values-zh-rTW/strings.xml | 6 +-- .../addresources/values-zu-rZA/strings.xml | 3 +- 77 files changed, 126 insertions(+), 329 deletions(-) diff --git a/patches/src/main/resources/addresources/values-af-rZA/strings.xml b/patches/src/main/resources/addresources/values-af-rZA/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-af-rZA/strings.xml +++ b/patches/src/main/resources/addresources/values-af-rZA/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-am-rET/strings.xml b/patches/src/main/resources/addresources/values-am-rET/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-am-rET/strings.xml +++ b/patches/src/main/resources/addresources/values-am-rET/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-ar-rSA/strings.xml b/patches/src/main/resources/addresources/values-ar-rSA/strings.xml index 0c50680e1..a56d4fcfa 100644 --- a/patches/src/main/resources/addresources/values-ar-rSA/strings.xml +++ b/patches/src/main/resources/addresources/values-ar-rSA/strings.xml @@ -1,5 +1,5 @@ - + - لتحديد لغة صوتية معينة، قم بإيقاف تشغيل \'فرض لغة الصوت الأصلية\' - اختيار لغة البث غير متاح مع Android Studio diff --git a/patches/src/main/resources/addresources/values-as-rIN/strings.xml b/patches/src/main/resources/addresources/values-as-rIN/strings.xml index 4f1e6a7a1..efed7ec2d 100644 --- a/patches/src/main/resources/addresources/values-as-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-as-rIN/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-az-rAZ/strings.xml b/patches/src/main/resources/addresources/values-az-rAZ/strings.xml index adf2063f5..5b8058b40 100644 --- a/patches/src/main/resources/addresources/values-az-rAZ/strings.xml +++ b/patches/src/main/resources/addresources/values-az-rAZ/strings.xml @@ -1,5 +1,5 @@ - + - Xüsusi səs dilini seçmək üçün \"Orijinal səs dilini zorlanı\" qapat - Yayım dili seçimi Android Studio ilə əlçatmazdır diff --git a/patches/src/main/resources/addresources/values-be-rBY/strings.xml b/patches/src/main/resources/addresources/values-be-rBY/strings.xml index 39e9966c7..ccbe93cb6 100644 --- a/patches/src/main/resources/addresources/values-be-rBY/strings.xml +++ b/patches/src/main/resources/addresources/values-be-rBY/strings.xml @@ -1,5 +1,5 @@ - + - Каб выбраць пэўную мову аўдыё, адключыце \'Прымусовая арыгінальная мова аўдыё\' - Выбар мовы трансляцыі недаступны ў Android Studio diff --git a/patches/src/main/resources/addresources/values-bg-rBG/strings.xml b/patches/src/main/resources/addresources/values-bg-rBG/strings.xml index 49826e283..6b5f61c3b 100644 --- a/patches/src/main/resources/addresources/values-bg-rBG/strings.xml +++ b/patches/src/main/resources/addresources/values-bg-rBG/strings.xml @@ -1,5 +1,5 @@ - + - За да изберете конкретен аудио език, изключете \'Принудително оригинален аудио език\' - Изборът на език на потока не е наличен с Android Studio diff --git a/patches/src/main/resources/addresources/values-bn-rBD/strings.xml b/patches/src/main/resources/addresources/values-bn-rBD/strings.xml index 6a4d757a6..0f017c3ce 100644 --- a/patches/src/main/resources/addresources/values-bn-rBD/strings.xml +++ b/patches/src/main/resources/addresources/values-bn-rBD/strings.xml @@ -1,5 +1,5 @@ - + - একটি নির্দিষ্ট অডিও ভাষা নির্বাচন করতে, \'মূল অডিও ভাষা জোর করে চালু রাখুন\' বন্ধ করুন - অ্যান্ড্রয়েড স্টুডিও সহ স্ট্রিম ভাষার নির্বাচন উপলব্ধ নেই diff --git a/patches/src/main/resources/addresources/values-bs-rBA/strings.xml b/patches/src/main/resources/addresources/values-bs-rBA/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-bs-rBA/strings.xml +++ b/patches/src/main/resources/addresources/values-bs-rBA/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-ca-rES/strings.xml b/patches/src/main/resources/addresources/values-ca-rES/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-ca-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-ca-rES/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml b/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml index dfd9497ea..c4fc334a8 100644 --- a/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml +++ b/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml @@ -1,5 +1,5 @@ - + - Chcete-li vybrat konkrétní zvukový jazyk, vypněte „Vynutit původní zvukový jazyk“ - Volba jazyka streamu není k dispozici s Android Studiem diff --git a/patches/src/main/resources/addresources/values-da-rDK/strings.xml b/patches/src/main/resources/addresources/values-da-rDK/strings.xml index 2b2d63169..a6fa45cb8 100644 --- a/patches/src/main/resources/addresources/values-da-rDK/strings.xml +++ b/patches/src/main/resources/addresources/values-da-rDK/strings.xml @@ -1,5 +1,5 @@ - + - For at vælge et specifikt lydsprog, slå \'Gennemtving originalt lydsprog\' fra - Valg af streaming-sprog er ikke tilgængeligt med Android Studio diff --git a/patches/src/main/resources/addresources/values-de-rDE/strings.xml b/patches/src/main/resources/addresources/values-de-rDE/strings.xml index 280ea35c3..9c0fe3cc3 100644 --- a/patches/src/main/resources/addresources/values-de-rDE/strings.xml +++ b/patches/src/main/resources/addresources/values-de-rDE/strings.xml @@ -1,5 +1,5 @@ - + - Um eine bestimmte Audiosprache auszuwählen, deaktivieren Sie „Original-Audiosprache erzwingen“ - Die Auswahl der Stream-Sprache ist mit Android Studio nicht verfügbar. diff --git a/patches/src/main/resources/addresources/values-el-rGR/strings.xml b/patches/src/main/resources/addresources/values-el-rGR/strings.xml index 952f94146..37ddafdf3 100644 --- a/patches/src/main/resources/addresources/values-el-rGR/strings.xml +++ b/patches/src/main/resources/addresources/values-el-rGR/strings.xml @@ -1,5 +1,5 @@ - + - Για να επιλέξετε μια συγκεκριμένη γλώσσα ήχου, απενεργοποιήστε το «Εξαναγκασμός αρχικής γλώσσας ήχου» - Η επιλογή γλώσσας ροής δεν είναι διαθέσιμη με το Android Studio diff --git a/patches/src/main/resources/addresources/values-es-rES/strings.xml b/patches/src/main/resources/addresources/values-es-rES/strings.xml index 535ae0622..4d47100b4 100644 --- a/patches/src/main/resources/addresources/values-es-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-es-rES/strings.xml @@ -1,5 +1,5 @@ - + - Para seleccionar un idioma de audio específico, desactiva \"Forzar idioma de audio original\" - La selección de idioma de transmisión no está disponible con Android Studio diff --git a/patches/src/main/resources/addresources/values-et-rEE/strings.xml b/patches/src/main/resources/addresources/values-et-rEE/strings.xml index 22185a399..e386c7fb7 100644 --- a/patches/src/main/resources/addresources/values-et-rEE/strings.xml +++ b/patches/src/main/resources/addresources/values-et-rEE/strings.xml @@ -1,5 +1,5 @@ - + - Konkreetse helikeele valimiseks lülita välja \"Sunni algne helikeel\" - Voogedastuse keelevalik ei ole Android Studioga saadaval diff --git a/patches/src/main/resources/addresources/values-eu-rES/strings.xml b/patches/src/main/resources/addresources/values-eu-rES/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-eu-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-eu-rES/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-fa-rIR/strings.xml b/patches/src/main/resources/addresources/values-fa-rIR/strings.xml index 0801f705b..8a9c424a7 100644 --- a/patches/src/main/resources/addresources/values-fa-rIR/strings.xml +++ b/patches/src/main/resources/addresources/values-fa-rIR/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-fi-rFI/strings.xml b/patches/src/main/resources/addresources/values-fi-rFI/strings.xml index 4662ae628..b0ac3fdbb 100644 --- a/patches/src/main/resources/addresources/values-fi-rFI/strings.xml +++ b/patches/src/main/resources/addresources/values-fi-rFI/strings.xml @@ -1,5 +1,5 @@ - + - Valitaksesi tietyn äänen kielen, poista \"Pakota alkuperäinen äänen kieli\" käytöstä - Striimin kielivalinta ei ole käytettävissä Android Studion kanssa diff --git a/patches/src/main/resources/addresources/values-fil-rPH/strings.xml b/patches/src/main/resources/addresources/values-fil-rPH/strings.xml index 4c4bef93e..9f8b3dd81 100644 --- a/patches/src/main/resources/addresources/values-fil-rPH/strings.xml +++ b/patches/src/main/resources/addresources/values-fil-rPH/strings.xml @@ -1,5 +1,5 @@ - + - Upang pumili ng isang partikular na wika ng audio, i-off ang \'Puwersahin ang orihinal na wika ng audio\' - Hindi available ang pagpili ng wika ng stream sa Android Studio diff --git a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml index 5469dd10c..2cb49e62f 100644 --- a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml +++ b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml @@ -1,5 +1,5 @@ - + - Pour sélectionner une langue audio spécifique, désactivez \"Forcer la langue audio d\'origine\" - La sélection de la langue du flux n\'est pas disponible avec Android Studio diff --git a/patches/src/main/resources/addresources/values-ga-rIE/strings.xml b/patches/src/main/resources/addresources/values-ga-rIE/strings.xml index ff9a063ad..1ce439b48 100644 --- a/patches/src/main/resources/addresources/values-ga-rIE/strings.xml +++ b/patches/src/main/resources/addresources/values-ga-rIE/strings.xml @@ -1,5 +1,5 @@ - + - Chun teanga fuaime ar leith a roghnú, múch \'Fórsaigh teanga fuaime bhunaidh\' - Níl roghnú theanga an tsrutha ar fáil le Android Studio diff --git a/patches/src/main/resources/addresources/values-gl-rES/strings.xml b/patches/src/main/resources/addresources/values-gl-rES/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-gl-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-gl-rES/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-gu-rIN/strings.xml b/patches/src/main/resources/addresources/values-gu-rIN/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-gu-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-gu-rIN/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-hi-rIN/strings.xml b/patches/src/main/resources/addresources/values-hi-rIN/strings.xml index 7e56c695e..3b5672382 100644 --- a/patches/src/main/resources/addresources/values-hi-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-hi-rIN/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-hr-rHR/strings.xml b/patches/src/main/resources/addresources/values-hr-rHR/strings.xml index 5b8e7e12a..09bfdb4ae 100644 --- a/patches/src/main/resources/addresources/values-hr-rHR/strings.xml +++ b/patches/src/main/resources/addresources/values-hr-rHR/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-hu-rHU/strings.xml b/patches/src/main/resources/addresources/values-hu-rHU/strings.xml index 8be320b4c..0c7c86f34 100644 --- a/patches/src/main/resources/addresources/values-hu-rHU/strings.xml +++ b/patches/src/main/resources/addresources/values-hu-rHU/strings.xml @@ -1,5 +1,5 @@ - + - Egy adott hangsáv nyelv kiválasztásához kapcsold ki az \"Eredeti hangsáv nyelv kikényszerítése\" opciót - Az Android Studio-val nem érhető el a stream nyelvének kiválasztása diff --git a/patches/src/main/resources/addresources/values-hy-rAM/strings.xml b/patches/src/main/resources/addresources/values-hy-rAM/strings.xml index 5848a7adc..48e7e22e7 100644 --- a/patches/src/main/resources/addresources/values-hy-rAM/strings.xml +++ b/patches/src/main/resources/addresources/values-hy-rAM/strings.xml @@ -1,5 +1,5 @@ - + - Որոշակի ձայնային լեզու ընտրելու համար անջատեք \'Պարտադրել բնօրինակ ձայնային լեզուն\' - Հոսքի լեզվի ընտրությունը հասանելի չէ Android Studio-ի հետ diff --git a/patches/src/main/resources/addresources/values-in-rID/strings.xml b/patches/src/main/resources/addresources/values-in-rID/strings.xml index 4e0ee5ec0..1bc00ca0b 100644 --- a/patches/src/main/resources/addresources/values-in-rID/strings.xml +++ b/patches/src/main/resources/addresources/values-in-rID/strings.xml @@ -1,5 +1,5 @@ - + - Untuk memilih bahasa audio tertentu, matikan \'Paksa bahasa audio asli\' - Pilihan bahasa streaming tidak tersedia dengan Android Studio diff --git a/patches/src/main/resources/addresources/values-is-rIS/strings.xml b/patches/src/main/resources/addresources/values-is-rIS/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-is-rIS/strings.xml +++ b/patches/src/main/resources/addresources/values-is-rIS/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-it-rIT/strings.xml b/patches/src/main/resources/addresources/values-it-rIT/strings.xml index d94d160be..ee8bf8d7d 100644 --- a/patches/src/main/resources/addresources/values-it-rIT/strings.xml +++ b/patches/src/main/resources/addresources/values-it-rIT/strings.xml @@ -1,5 +1,5 @@ - + - Per selezionare una lingua audio specifica, disattiva \'Forza lingua audio originale\' - La selezione della lingua dello stream non è disponibile con Android Studio diff --git a/patches/src/main/resources/addresources/values-iw-rIL/strings.xml b/patches/src/main/resources/addresources/values-iw-rIL/strings.xml index c438e9573..3e91971a8 100644 --- a/patches/src/main/resources/addresources/values-iw-rIL/strings.xml +++ b/patches/src/main/resources/addresources/values-iw-rIL/strings.xml @@ -1,5 +1,5 @@ - + - כדי לבחור שפת שמע ספציפית, כבה את \'אכוף שפת שמע מקורית\' - בחירת שפת הזרם אינה זמינה עם אנדרואיד סטודיו diff --git a/patches/src/main/resources/addresources/values-ja-rJP/strings.xml b/patches/src/main/resources/addresources/values-ja-rJP/strings.xml index a354c8430..e4181b89e 100644 --- a/patches/src/main/resources/addresources/values-ja-rJP/strings.xml +++ b/patches/src/main/resources/addresources/values-ja-rJP/strings.xml @@ -1,5 +1,5 @@ - + %1$s ~ %2$s - セグメントのカテゴリーを選択してください - カテゴリーが設定で無効になっています。送信するには、このカテゴリーを有効にしてください。 - 新しいセグメント + セグメントのカテゴリを選択してください + カテゴリが「無効」に設定されています。送信するには、設定を変更してください。 + 新しいセグメント %s を新しいセグメント (SponsorBlock) の開始位置 / 終了位置に設定しますか? 開始位置 終了位置 @@ -1641,10 +1641,6 @@ AV1 での動画再生は、カクつくまたはコマ落ちが発生する場 統計情報にクライアントを表示 統計情報には現在のクライアントが表示されます 統計情報には現在のクライアントは表示されません - 音声ストリームの言語 - - 特定の音声言語を選択するには、「オリジナルの音声を強制的に使用」を無効にしてください - Android Studio では、ストリームの言語を選択できません diff --git a/patches/src/main/resources/addresources/values-ka-rGE/strings.xml b/patches/src/main/resources/addresources/values-ka-rGE/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-ka-rGE/strings.xml +++ b/patches/src/main/resources/addresources/values-ka-rGE/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-kk-rKZ/strings.xml b/patches/src/main/resources/addresources/values-kk-rKZ/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-kk-rKZ/strings.xml +++ b/patches/src/main/resources/addresources/values-kk-rKZ/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-km-rKH/strings.xml b/patches/src/main/resources/addresources/values-km-rKH/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-km-rKH/strings.xml +++ b/patches/src/main/resources/addresources/values-km-rKH/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-kn-rIN/strings.xml b/patches/src/main/resources/addresources/values-kn-rIN/strings.xml index a521cc779..5ab077fb1 100644 --- a/patches/src/main/resources/addresources/values-kn-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-kn-rIN/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-ko-rKR/strings.xml b/patches/src/main/resources/addresources/values-ko-rKR/strings.xml index 5817517b5..dbff33c9b 100644 --- a/patches/src/main/resources/addresources/values-ko-rKR/strings.xml +++ b/patches/src/main/resources/addresources/values-ko-rKR/strings.xml @@ -1,5 +1,5 @@ - + @@ -1646,10 +1646,6 @@ AV1이 사용된 동영상 재생이 끊기거나 프레임이 손실될 수 있 전문 통계에서 표시하기 동영상 스트림을 가져오는 데 사용되는 클라이언트가 전문 통계에서 표시됩니다 동영상 스트림을 가져오는 데 사용되는 클라이언트가 전문 통계에서 표시되지 않습니다 - 오디오 스트림 언어 - - 특정 오디오 언어를 선택하려면, \'원본 오디오 언어 강제로 활성화하기\'를 끄세요 - Android Studio에서는 스트림 언어를 선택할 수 없습니다 diff --git a/patches/src/main/resources/addresources/values-ky-rKG/strings.xml b/patches/src/main/resources/addresources/values-ky-rKG/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-ky-rKG/strings.xml +++ b/patches/src/main/resources/addresources/values-ky-rKG/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-lo-rLA/strings.xml b/patches/src/main/resources/addresources/values-lo-rLA/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-lo-rLA/strings.xml +++ b/patches/src/main/resources/addresources/values-lo-rLA/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-lt-rLT/strings.xml b/patches/src/main/resources/addresources/values-lt-rLT/strings.xml index 28c776da1..5ffd71a7e 100644 --- a/patches/src/main/resources/addresources/values-lt-rLT/strings.xml +++ b/patches/src/main/resources/addresources/values-lt-rLT/strings.xml @@ -1,5 +1,5 @@ - + - Norėdami pasirinkti konkrečią garso kalbą, išjunkite „Priverstinė originali garso kalba“. - Transliacijos kalbos pasirinkimas nepasiekiamas naudojant „Android Studio“ diff --git a/patches/src/main/resources/addresources/values-lv-rLV/strings.xml b/patches/src/main/resources/addresources/values-lv-rLV/strings.xml index 7ad9984aa..4a7659730 100644 --- a/patches/src/main/resources/addresources/values-lv-rLV/strings.xml +++ b/patches/src/main/resources/addresources/values-lv-rLV/strings.xml @@ -1,5 +1,5 @@ - + - Lai atlasītu konkrētu audio valodu, izslēdziet “Piespiest oriģinālo audio valodu” - Straumju valodas izvēle nav pieejama ar Android Studio diff --git a/patches/src/main/resources/addresources/values-mk-rMK/strings.xml b/patches/src/main/resources/addresources/values-mk-rMK/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-mk-rMK/strings.xml +++ b/patches/src/main/resources/addresources/values-mk-rMK/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-ml-rIN/strings.xml b/patches/src/main/resources/addresources/values-ml-rIN/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-ml-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-ml-rIN/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-mn-rMN/strings.xml b/patches/src/main/resources/addresources/values-mn-rMN/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-mn-rMN/strings.xml +++ b/patches/src/main/resources/addresources/values-mn-rMN/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-mr-rIN/strings.xml b/patches/src/main/resources/addresources/values-mr-rIN/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-mr-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-mr-rIN/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-ms-rMY/strings.xml b/patches/src/main/resources/addresources/values-ms-rMY/strings.xml index 622dd054e..33f272c20 100644 --- a/patches/src/main/resources/addresources/values-ms-rMY/strings.xml +++ b/patches/src/main/resources/addresources/values-ms-rMY/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-my-rMM/strings.xml b/patches/src/main/resources/addresources/values-my-rMM/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-my-rMM/strings.xml +++ b/patches/src/main/resources/addresources/values-my-rMM/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-nb-rNO/strings.xml b/patches/src/main/resources/addresources/values-nb-rNO/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-nb-rNO/strings.xml +++ b/patches/src/main/resources/addresources/values-nb-rNO/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-ne-rIN/strings.xml b/patches/src/main/resources/addresources/values-ne-rIN/strings.xml index d1b6ab9cd..88ee8597b 100644 --- a/patches/src/main/resources/addresources/values-ne-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-ne-rIN/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-nl-rNL/strings.xml b/patches/src/main/resources/addresources/values-nl-rNL/strings.xml index b4d451dc2..2a670f151 100644 --- a/patches/src/main/resources/addresources/values-nl-rNL/strings.xml +++ b/patches/src/main/resources/addresources/values-nl-rNL/strings.xml @@ -1,5 +1,5 @@ - + - Om een specifieke audiotaal te selecteren, schakel \"Oorspronkelijke audiotaal forceren\" uit - Streamtaalselectie is niet beschikbaar met Android Studio diff --git a/patches/src/main/resources/addresources/values-or-rIN/strings.xml b/patches/src/main/resources/addresources/values-or-rIN/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-or-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-or-rIN/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-pa-rIN/strings.xml b/patches/src/main/resources/addresources/values-pa-rIN/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-pa-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-pa-rIN/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-pl-rPL/strings.xml b/patches/src/main/resources/addresources/values-pl-rPL/strings.xml index 345a5f981..e40203383 100644 --- a/patches/src/main/resources/addresources/values-pl-rPL/strings.xml +++ b/patches/src/main/resources/addresources/values-pl-rPL/strings.xml @@ -1,5 +1,5 @@ - + - Aby wybrać konkretny język audio, wyłącz \"Wymuś oryginalny język audio\" - Wybór języka strumienia nie jest dostępny w przypadku Android Studio diff --git a/patches/src/main/resources/addresources/values-pt-rBR/strings.xml b/patches/src/main/resources/addresources/values-pt-rBR/strings.xml index 8c8ed0479..9863849e8 100644 --- a/patches/src/main/resources/addresources/values-pt-rBR/strings.xml +++ b/patches/src/main/resources/addresources/values-pt-rBR/strings.xml @@ -1,5 +1,5 @@ - + - Para selecionar um idioma de áudio específico, desative \"Forçar idioma de áudio original\" - A seleção de idioma do stream não está disponível com o Android Studio diff --git a/patches/src/main/resources/addresources/values-pt-rPT/strings.xml b/patches/src/main/resources/addresources/values-pt-rPT/strings.xml index faa9de5b0..fcec5b2d9 100644 --- a/patches/src/main/resources/addresources/values-pt-rPT/strings.xml +++ b/patches/src/main/resources/addresources/values-pt-rPT/strings.xml @@ -1,5 +1,5 @@ - + - Para selecionar um idioma de áudio específico, desative \'Forçar idioma de áudio original\' - A seleção do idioma do stream não está disponível com o Android Studio diff --git a/patches/src/main/resources/addresources/values-ro-rRO/strings.xml b/patches/src/main/resources/addresources/values-ro-rRO/strings.xml index 60c5f3436..e82a90a0f 100644 --- a/patches/src/main/resources/addresources/values-ro-rRO/strings.xml +++ b/patches/src/main/resources/addresources/values-ro-rRO/strings.xml @@ -1,5 +1,5 @@ - + - Pentru a selecta o limbă audio specifică, dezactivați „Forțează limba audio originală” - Selecția limbii fluxului nu este disponibilă cu Android Studio diff --git a/patches/src/main/resources/addresources/values-ru-rRU/strings.xml b/patches/src/main/resources/addresources/values-ru-rRU/strings.xml index 95bf138cc..7d3e8c966 100644 --- a/patches/src/main/resources/addresources/values-ru-rRU/strings.xml +++ b/patches/src/main/resources/addresources/values-ru-rRU/strings.xml @@ -1,5 +1,5 @@ - + - Скрыть кнопку \"Стать спонсором\" + Скрыть кнопку \"Подписаться\" Кнопка \"Подписаться\" скрыта Кнопка \"Подписаться\" показана Скрыть медицинские панели @@ -360,22 +360,22 @@ Second \"item\" text" Скрыть или показать компоненты страницы канала Скрыть секцию \"Для вас\" - Секция \"Для вас\" скрыта - Секция \"Для вас\" показана + Секция \"Для вас\" на странице канала скрыта + Секция \"Для вас\" на странице канала показана Скрыть предпросмотр ссылок - Предпросмотр ссылок скрыт - Предпросмотр ссылок показан + Предпросмотр ссылок на странице канала скрыт + Предпросмотр ссылок на странице канала показан Скрыть секцию участников - Секция участников скрыта - Секция участников показана + Секция участников на странице канала скрыта + Секция участников на странице канала показана Скрыть кнопку \"Посетить сообщество\" - Кнопка \"Посетить сообщество\" скрыта - Кнопка \"Перейти в сообщество\" показана + Кнопка \"Посетить сообщество\" на странице канала скрыта + Кнопка \"Посетить сообщество\" на странице канала показана - Скрыть кнопку \"Посетить магазин\" - Кнопка \"Перейти в магазин\" скрыта - Кнопка \"Перейти в магазин\" показана + Скрыть кнопку \"Перейти в магазин\" + Кнопка \"Перейти в магазин\" на странице канала скрыта + Кнопка \"Перейти в магазин\" на странице канала показана Комментарии Скрыть или показать компоненты раздела комментариев Скрыть секцию ИИ сводки чата @@ -469,11 +469,11 @@ Second \"item\" text" Скрыть секцию магазина автора - Секция магазина автора под видеоплеером скрыта - Секция магазина автора под видеоплеером показана + Секция магазина автора под плеером скрыта + Секция магазина автора под плеером показана Скрыть баннер магазина - Баннер магазина на конечном экране скрыт - Баннер магазина на конечном экране показан + Баннер магазина в конце просмотра скрыт + Баннер магазина в конце просмотра показан Скрыть полноэкранную рекламу "Полноэкранная реклама при запуске приложения скрыта @@ -793,8 +793,8 @@ Second \"item\" text" Пункт \"Смотреть в VR-режиме\" в выдвижном меню плеера скрыт Пункт \"Смотреть в VR-режиме\" в выдвижном меню плеера показан Скрыть меню качества видео - Меню качества видео скрыто - Меню качества видео показано + Меню качества видео в выдвижном меню плеера скрыто + Меню качества видео в выдвижном меню плеера показано Скрыть колонтитул меню качества видео Нижний колонтитул старого меню качества видео в выдвижном меню плеера скрыт Нижний колонтитул старого меню качества видео в выдвижном меню плеера показан @@ -838,7 +838,7 @@ Second \"item\" text" Анимированные счетчики просмотров, лайков и дизлайков включены - Скрыть полосу прогресса видеоплеера + Скрыть полосу прогресса плеера Полоса прогресса в плеере скрыта Полоса прогресса в плеере показана @@ -1086,13 +1086,13 @@ Second \"item\" text" Автоскрытие кнопки пропуска Кнопка пропуска автоматически скрывается через несколько секунд Кнопка пропуска показывается для всего сегмента - Длительность кнопки пропуска + Длительность показа кнопки пропуска Длительность показа кнопок пропуска и перехода к основному моменту до автоматического скрытия Показывать уведомление отмены пропуска Всплывающее уведомление показано при автоматическом пропуске сегмента. Нажмите на всплывающее уведомление для отмены пропуска Всплывающее уведомление скрыто Длительность всплывающего уведомления при пропуске - Как долго показывать всплывающее сообщение об отмене пропуска + Длительность показа всплывающего сообщения об отмене пропуска 1 секунда 2 секунды 3 секунды @@ -1538,7 +1538,7 @@ Second \"item\" text" Перенаправления URL-адресов (youtube.com/redirect) не обходятся и исходные URL-адреса не открываются напрямую - Открыть ссылки в браузере + Открывать ссылки в браузере Ссылки открываются во внешнем браузере Ссылки открываются во встроенном браузере @@ -1646,10 +1646,6 @@ Second \"item\" text" Показать в \"Статистике для сисадминов\" Тип клиента в \"Статистике для сисадминов\" показан Тип клиента в \"Статистике для сисадминов\" скрыт - Язык аудиопотока - - Для выбора определенного языка аудио отключите \"Принудительный язык оригинального аудио\" - Выбор языка трансляции недоступен с Android Studio diff --git a/patches/src/main/resources/addresources/values-si-rLK/strings.xml b/patches/src/main/resources/addresources/values-si-rLK/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-si-rLK/strings.xml +++ b/patches/src/main/resources/addresources/values-si-rLK/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-sk-rSK/strings.xml b/patches/src/main/resources/addresources/values-sk-rSK/strings.xml index e70a0a320..75fac144d 100644 --- a/patches/src/main/resources/addresources/values-sk-rSK/strings.xml +++ b/patches/src/main/resources/addresources/values-sk-rSK/strings.xml @@ -1,5 +1,5 @@ - + - Ak chcete vybrať konkrétny jazyk zvuku, vypnite „Vynútiť pôvodný jazyk zvuku“ - Výber jazyka streamu nie je k dispozícii v aplikácii Android Studio diff --git a/patches/src/main/resources/addresources/values-sl-rSI/strings.xml b/patches/src/main/resources/addresources/values-sl-rSI/strings.xml index b25d91f0a..15ab10f19 100644 --- a/patches/src/main/resources/addresources/values-sl-rSI/strings.xml +++ b/patches/src/main/resources/addresources/values-sl-rSI/strings.xml @@ -1,5 +1,5 @@ - + - Za izbiro določenega zvočnega jezika izklopite \'Vsili izvirni zvočni jezik\' - Izbira jezika pretakanja ni na voljo z Android Studio diff --git a/patches/src/main/resources/addresources/values-sq-rAL/strings.xml b/patches/src/main/resources/addresources/values-sq-rAL/strings.xml index c4cd34604..8405fa310 100644 --- a/patches/src/main/resources/addresources/values-sq-rAL/strings.xml +++ b/patches/src/main/resources/addresources/values-sq-rAL/strings.xml @@ -1,5 +1,5 @@ - + - Për të zgjedhur një gjuhë specifike audio, çaktivizoni \"Detyro gjuhën origjinale audio\" - Zgjedhja e gjuhës së transmetimit nuk është e disponueshme me Android Studio diff --git a/patches/src/main/resources/addresources/values-sr-rCS/strings.xml b/patches/src/main/resources/addresources/values-sr-rCS/strings.xml index 8cd9b4256..0e11eda6d 100644 --- a/patches/src/main/resources/addresources/values-sr-rCS/strings.xml +++ b/patches/src/main/resources/addresources/values-sr-rCS/strings.xml @@ -1,5 +1,5 @@ - + - Da biste izabrali određeni jezik zvuka, isključite opciju „Prisili originalni jezik zvuka” - Izbor jezika strima nije dostupan sa Android Studio diff --git a/patches/src/main/resources/addresources/values-sr-rSP/strings.xml b/patches/src/main/resources/addresources/values-sr-rSP/strings.xml index 8a9e2315f..270ac39d4 100644 --- a/patches/src/main/resources/addresources/values-sr-rSP/strings.xml +++ b/patches/src/main/resources/addresources/values-sr-rSP/strings.xml @@ -1,5 +1,5 @@ - + - Да бисте изабрали одређени језик звука, искључите опцију „Присили оригинални језик звука” - Избор језика стрима није доступан са Android Studio diff --git a/patches/src/main/resources/addresources/values-sv-rSE/strings.xml b/patches/src/main/resources/addresources/values-sv-rSE/strings.xml index a5b569f03..bfc9a6a73 100644 --- a/patches/src/main/resources/addresources/values-sv-rSE/strings.xml +++ b/patches/src/main/resources/addresources/values-sv-rSE/strings.xml @@ -1,5 +1,5 @@ - + - Om du vill välja ett specifikt ljudspråk inaktiverar du \"Tvinga ursprungligt ljudspråk\" - Val av strömspråk är inte tillgängligt med Android Studio diff --git a/patches/src/main/resources/addresources/values-sw-rKE/strings.xml b/patches/src/main/resources/addresources/values-sw-rKE/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-sw-rKE/strings.xml +++ b/patches/src/main/resources/addresources/values-sw-rKE/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-ta-rIN/strings.xml b/patches/src/main/resources/addresources/values-ta-rIN/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-ta-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-ta-rIN/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-te-rIN/strings.xml b/patches/src/main/resources/addresources/values-te-rIN/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-te-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-te-rIN/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-th-rTH/strings.xml b/patches/src/main/resources/addresources/values-th-rTH/strings.xml index f3e4ffa53..ae5398aeb 100644 --- a/patches/src/main/resources/addresources/values-th-rTH/strings.xml +++ b/patches/src/main/resources/addresources/values-th-rTH/strings.xml @@ -1,5 +1,5 @@ - + - หากต้องการเลือกภาษาเสียงที่ต้องการ ให้ปิด \'บังคับใช้ภาษาเสียงต้นฉบับ\' - การเลือกภาษาของสตรีมไม่พร้อมใช้งานกับ Android Studio diff --git a/patches/src/main/resources/addresources/values-tr-rTR/strings.xml b/patches/src/main/resources/addresources/values-tr-rTR/strings.xml index 43a2fc154..c1f0959cf 100644 --- a/patches/src/main/resources/addresources/values-tr-rTR/strings.xml +++ b/patches/src/main/resources/addresources/values-tr-rTR/strings.xml @@ -1,5 +1,5 @@ - + - Belirli bir ses dilini seçmek için \'Orijinal ses dilini zorla\' seçeneğini kapatın - Akış dili seçimi Android Studio ile kullanılamıyor diff --git a/patches/src/main/resources/addresources/values-uk-rUA/strings.xml b/patches/src/main/resources/addresources/values-uk-rUA/strings.xml index ee1b3c400..e6467b9dd 100644 --- a/patches/src/main/resources/addresources/values-uk-rUA/strings.xml +++ b/patches/src/main/resources/addresources/values-uk-rUA/strings.xml @@ -1,5 +1,5 @@ - + - Щоб вибрати певну звукову доріжку, вимкніть \"Примусово оригінальна мова звукової доріжки\" - Вибір мови звукової доріжки недоступний з клієнтом Android Studio diff --git a/patches/src/main/resources/addresources/values-ur-rIN/strings.xml b/patches/src/main/resources/addresources/values-ur-rIN/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-ur-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-ur-rIN/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-uz-rUZ/strings.xml b/patches/src/main/resources/addresources/values-uz-rUZ/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-uz-rUZ/strings.xml +++ b/patches/src/main/resources/addresources/values-uz-rUZ/strings.xml @@ -1,5 +1,5 @@ - + - diff --git a/patches/src/main/resources/addresources/values-vi-rVN/strings.xml b/patches/src/main/resources/addresources/values-vi-rVN/strings.xml index 35f29f3a5..7664e581b 100644 --- a/patches/src/main/resources/addresources/values-vi-rVN/strings.xml +++ b/patches/src/main/resources/addresources/values-vi-rVN/strings.xml @@ -1,5 +1,5 @@ - + - Để chọn ngôn ngữ âm thanh cụ thể, hãy tắt \'Buộc ngôn ngữ âm thanh gốc\' - Chọn ngôn ngữ luồng không khả dụng với Android Studio diff --git a/patches/src/main/resources/addresources/values-zh-rCN/strings.xml b/patches/src/main/resources/addresources/values-zh-rCN/strings.xml index 6d09a78da..a261aa031 100644 --- a/patches/src/main/resources/addresources/values-zh-rCN/strings.xml +++ b/patches/src/main/resources/addresources/values-zh-rCN/strings.xml @@ -1,5 +1,5 @@ - + - 要选择特定的音频语言,请关闭“强制原始音频语言” - Android Studio 不支持选择流语言 diff --git a/patches/src/main/resources/addresources/values-zh-rTW/strings.xml b/patches/src/main/resources/addresources/values-zh-rTW/strings.xml index 0f5329d36..956129a17 100644 --- a/patches/src/main/resources/addresources/values-zh-rTW/strings.xml +++ b/patches/src/main/resources/addresources/values-zh-rTW/strings.xml @@ -1,5 +1,5 @@ - + - 若要選擇特定的音訊語言,請關閉「強制使用原始音訊語言」 - 無法使用 Android Studio 選擇串流語言 diff --git a/patches/src/main/resources/addresources/values-zu-rZA/strings.xml b/patches/src/main/resources/addresources/values-zu-rZA/strings.xml index 6b81af5f3..5ba0a5e1f 100644 --- a/patches/src/main/resources/addresources/values-zu-rZA/strings.xml +++ b/patches/src/main/resources/addresources/values-zu-rZA/strings.xml @@ -1,5 +1,5 @@ - + - From 5f23bfe833c6e01617a7dbc5325b4a3fb931e53e Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Sat, 1 Nov 2025 09:19:49 +0100 Subject: [PATCH 17/18] feat(Spoof video streams): Add experimental "Android No SDK" client type --- .../patches/spoof/SpoofVideoStreamsPatch.java | 6 +++-- .../extension/shared/spoof/ClientType.java | 27 +++++++++++++++++++ .../patches/spoof/SpoofVideoStreamsPatch.java | 2 ++ ...oofStreamingDataSideEffectsPreference.java | 21 +++++++++------ .../resources/addresources/values/arrays.xml | 4 +++ 5 files changed, 50 insertions(+), 10 deletions(-) diff --git a/extensions/music/src/main/java/app/revanced/extension/music/patches/spoof/SpoofVideoStreamsPatch.java b/extensions/music/src/main/java/app/revanced/extension/music/patches/spoof/SpoofVideoStreamsPatch.java index 15e90f565..ade26a30f 100644 --- a/extensions/music/src/main/java/app/revanced/extension/music/patches/spoof/SpoofVideoStreamsPatch.java +++ b/extensions/music/src/main/java/app/revanced/extension/music/patches/spoof/SpoofVideoStreamsPatch.java @@ -1,6 +1,7 @@ package app.revanced.extension.music.patches.spoof; import static app.revanced.extension.music.settings.Settings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE; +import static app.revanced.extension.shared.spoof.ClientType.ANDROID_NO_SDK; import static app.revanced.extension.shared.spoof.ClientType.ANDROID_VR_1_43_32; import static app.revanced.extension.shared.spoof.ClientType.ANDROID_VR_1_61_48; import static app.revanced.extension.shared.spoof.ClientType.VISIONOS; @@ -18,8 +19,9 @@ public class SpoofVideoStreamsPatch { public static void setClientOrderToUse() { List availableClients = List.of( ANDROID_VR_1_43_32, - ANDROID_VR_1_61_48, - VISIONOS + ANDROID_NO_SDK, + VISIONOS, + ANDROID_VR_1_61_48 ); app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch.setClientsToUse( diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/ClientType.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/ClientType.java index cfd79b972..39076b562 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/ClientType.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/ClientType.java @@ -54,6 +54,33 @@ public enum ClientType { ANDROID_VR_1_61_48.supportsMultiAudioTracks, "Android VR 1.43" ), + /** + * Video not playable: Paid / Movie / Private / Age-restricted. + * Note: The 'Authorization' key must be excluded from the header. + * + * According to TeamNewPipe in 2022, if the 'androidSdkVersion' field is missing, + * the GVS did not return a valid response: + * [NewPipe#8713 (comment)](https://github.com/TeamNewPipe/NewPipe/issues/8713#issuecomment-1207443550). + * + * According to the latest commit in yt-dlp, the GVS returns a valid response + * even if the 'androidSdkVersion' field is missing: + * [yt-dlp#14693](https://github.com/yt-dlp/yt-dlp/pull/14693). + * + * For some reason, PoToken is not required. + */ + ANDROID_NO_SDK( + 3, + "ANDROID", + "", + "", + "", + Build.VERSION.RELEASE, + "20.05.46", + "com.google.android.youtube/20.05.46 (Linux; U; Android " + Build.VERSION.RELEASE + ") gzip", + false, + true, + "Android No SDK" + ), /** * Cannot play livestreams and lacks HDR, but can play videos with music and labeled "for children". * Google Pixel 9 Pro Fold diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java index 30ef6c0b8..75374c09e 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/spoof/SpoofVideoStreamsPatch.java @@ -1,6 +1,7 @@ package app.revanced.extension.youtube.patches.spoof; import static app.revanced.extension.shared.spoof.ClientType.ANDROID_CREATOR; +import static app.revanced.extension.shared.spoof.ClientType.ANDROID_NO_SDK; import static app.revanced.extension.shared.spoof.ClientType.ANDROID_VR_1_43_32; import static app.revanced.extension.shared.spoof.ClientType.ANDROID_VR_1_61_48; import static app.revanced.extension.shared.spoof.ClientType.IPADOS; @@ -41,6 +42,7 @@ public class SpoofVideoStreamsPatch { VISIONOS, ANDROID_CREATOR, ANDROID_VR_1_43_32, + ANDROID_NO_SDK, IPADOS); app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch.setClientsToUse( diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/SpoofStreamingDataSideEffectsPreference.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/SpoofStreamingDataSideEffectsPreference.java index bf66edbd4..86802ee20 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/SpoofStreamingDataSideEffectsPreference.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/SpoofStreamingDataSideEffectsPreference.java @@ -80,29 +80,34 @@ public class SpoofStreamingDataSideEffectsPreference extends Preference { Logger.printDebug(() -> "Updating spoof stream side effects preference"); setEnabled(BaseSettings.SPOOF_VIDEO_STREAMS.get()); - String summary = str("revanced_spoof_video_streams_about_no_audio_tracks"); + String summary = ""; switch (clientType) { case ANDROID_CREATOR -> - summary += '\n' + str("revanced_spoof_video_streams_about_no_stable_volume") - + '\n' + str("revanced_spoof_video_streams_about_no_av1") - + '\n' + str("revanced_spoof_video_streams_about_no_force_original_audio"); + summary = str("revanced_spoof_video_streams_about_no_audio_tracks") + + '\n' + str("revanced_spoof_video_streams_about_no_stable_volume") + + '\n' + str("revanced_spoof_video_streams_about_no_av1") + + '\n' + str("revanced_spoof_video_streams_about_no_force_original_audio"); // VR 1.61 is not exposed in the UI and should never be reached here. case ANDROID_VR_1_43_32, ANDROID_VR_1_61_48 -> - summary += '\n' + str("revanced_spoof_video_streams_about_no_stable_volume"); + summary = str("revanced_spoof_video_streams_about_no_audio_tracks") + + '\n' + str("revanced_spoof_video_streams_about_no_stable_volume"); + case ANDROID_NO_SDK -> + summary = str("revanced_spoof_video_streams_about_playback_failure"); case IPADOS -> summary = str("revanced_spoof_video_streams_about_playback_failure") + '\n' + str("revanced_spoof_video_streams_about_no_av1"); case VISIONOS -> summary = str("revanced_spoof_video_streams_about_experimental") - + '\n' + summary + + '\n' + str("revanced_spoof_video_streams_about_no_audio_tracks") + '\n' + str("revanced_spoof_video_streams_about_no_av1"); + default -> Logger.printException(() -> "Unknown client: " + clientType); } // Only iPadOS can play children videos in incognito, but it commonly fails at 1 minute - // or doesn't even start playback at all. List the side effect for other clients + // or doesn't start playback at all. List the side effect for other clients // since they will fall over to iPadOS. - if (clientType != ClientType.IPADOS) { + if (clientType != ClientType.IPADOS && clientType != ClientType.ANDROID_NO_SDK) { summary += '\n' + str("revanced_spoof_video_streams_about_kids_videos"); } diff --git a/patches/src/main/resources/addresources/values/arrays.xml b/patches/src/main/resources/addresources/values/arrays.xml index 439261474..9b6ce74e7 100644 --- a/patches/src/main/resources/addresources/values/arrays.xml +++ b/patches/src/main/resources/addresources/values/arrays.xml @@ -185,10 +185,12 @@ Android VR visionOS + Android No SDK ANDROID_VR_1_43_32 VISIONOS + ANDROID_NO_SDK @@ -227,12 +229,14 @@ Android VR Android Studio + Android No SDK visionOS iPadOS ANDROID_VR_1_43_32 ANDROID_CREATOR + ANDROID_NO_SDK VISIONOS IPADOS From 0c03599f0794707b6d6978e8030c6129c609a3c0 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 1 Nov 2025 08:25:19 +0000 Subject: [PATCH 18/18] chore: Release v5.45.0-dev.6 [skip ci] # [5.45.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.45.0-dev.5...v5.45.0-dev.6) (2025-11-01) ### Features * **Spoof video streams:** Add experimental "Android No SDK" client type ([5f23bfe](https://github.com/ReVanced/revanced-patches/commit/5f23bfe833c6e01617a7dbc5325b4a3fb931e53e)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 552afbcb4..059a74369 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [5.45.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.45.0-dev.5...v5.45.0-dev.6) (2025-11-01) + + +### Features + +* **Spoof video streams:** Add experimental "Android No SDK" client type ([5f23bfe](https://github.com/ReVanced/revanced-patches/commit/5f23bfe833c6e01617a7dbc5325b4a3fb931e53e)) + # [5.45.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.45.0-dev.4...v5.45.0-dev.5) (2025-11-01) diff --git a/gradle.properties b/gradle.properties index 4706cb5b5..009b6c055 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M org.gradle.parallel = true android.useAndroidX = true kotlin.code.style = official -version = 5.45.0-dev.5 +version = 5.45.0-dev.6