From cb02ba71f5af061a17183540537966e9ccef9332 Mon Sep 17 00:00:00 2001 From: CaM/7oCe6e <_rufusin_@mail.ru> Date: Thu, 21 Mar 2024 15:36:02 +0300 Subject: [PATCH] fix(YouTube): Adjusting patches to apply correctly to earlier versions. (#94) * fix(YouTube): Adjusting patches to apply correctly to earlier versions. * Update revanced_prefs.xml --------- Co-authored-by: Aaron Veil <70171475+anddea@users.noreply.github.com> --- .../flyoutpanel/player/ChangeTogglePatch.kt | 5 +- .../keep/KeepLandScapeModePatch.kt | 1 + .../DisableRollingNumberAnimationPatch.kt | 47 ++- .../general/songsearch/SongSearchPatch.kt | 1 + .../DoubleTapOverlayBackgroundPatch.kt | 3 +- .../PowerSaveModeOneFingerprint.kt | 4 +- .../PowerSaveModeTwoFingerprint.kt | 4 +- .../NavigationButtonsPatch.kt | 2 +- .../PivotBarShortsButtonViewFingerprint.kt | 3 +- ...aylistOfflineDownloadOnClickFingerprint.kt | 2 +- .../musicbutton/HideMusicButtonPatch.kt | 46 ++- .../MusicAppDeeplinkButtonFingerprint.kt | 5 +- ...MusicAppDeeplinkButtonParentFingerprint.kt | 12 - .../player/speedoverlay/SpeedOverlayPatch.kt | 9 - .../swipe/controls/SwipeControlsPatch.kt | 7 +- .../youtube/utils/settings/SettingsPatch.kt | 4 - .../youtube/settings/xml/revanced_prefs.xml | 386 +++++++++--------- 17 files changed, 272 insertions(+), 269 deletions(-) delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/player/musicbutton/fingerprints/MusicAppDeeplinkButtonParentFingerprint.kt diff --git a/src/main/kotlin/app/revanced/patches/youtube/flyoutpanel/player/ChangeTogglePatch.kt b/src/main/kotlin/app/revanced/patches/youtube/flyoutpanel/player/ChangeTogglePatch.kt index bb00503d2..14b009ac6 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/flyoutpanel/player/ChangeTogglePatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/flyoutpanel/player/ChangeTogglePatch.kt @@ -70,7 +70,6 @@ object ChangeTogglePatch : BytecodePatch( ) ) { override fun execute(context: BytecodeContext) { - if (SettingsPatch.upward1905) throw PatchException("This version is not supported. Please use YouTube 19.05.36 or earlier.") val additionalSettingsConfigResult = AdditionalSettingsConfigFingerprint.result ?: throw AdditionalSettingsConfigFingerprint.exception @@ -108,6 +107,7 @@ object ChangeTogglePatch : BytecodePatch( } private fun MethodFingerprint.injectCall(descriptor: String) { + result?.let { it.mutableMethod.apply { val insertIndex = implementation!!.instructions.indexOfFirst { instruction -> @@ -124,6 +124,7 @@ object ChangeTogglePatch : BytecodePatch( """ ) } - } ?: throw exception + } ?: throw PatchException("This version is not supported. Please use YouTube 19.05.36 or earlier.") + } } diff --git a/src/main/kotlin/app/revanced/patches/youtube/fullscreen/landscapemode/keep/KeepLandScapeModePatch.kt b/src/main/kotlin/app/revanced/patches/youtube/fullscreen/landscapemode/keep/KeepLandScapeModePatch.kt index 56b0270c3..2e3b8de36 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/fullscreen/landscapemode/keep/KeepLandScapeModePatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/fullscreen/landscapemode/keep/KeepLandScapeModePatch.kt @@ -54,6 +54,7 @@ object KeepLandScapeModePatch : BytecodePatch( ) ) { override fun execute(context: BytecodeContext) { + LandScapeModeConfigFingerprint.result?.let { it.mutableMethod.apply { val insertIndex = implementation!!.instructions.size - 1 diff --git a/src/main/kotlin/app/revanced/patches/youtube/general/rollingnumber/DisableRollingNumberAnimationPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/general/rollingnumber/DisableRollingNumberAnimationPatch.kt index 8eec4e3de..26c304c0e 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/general/rollingnumber/DisableRollingNumberAnimationPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/general/rollingnumber/DisableRollingNumberAnimationPatch.kt @@ -12,6 +12,7 @@ import app.revanced.patcher.util.smali.ExternalLabel import app.revanced.patches.youtube.utils.fingerprints.RollingNumberTextViewAnimationUpdateFingerprint import app.revanced.patches.youtube.utils.integrations.Constants.GENERAL import app.revanced.patches.youtube.utils.settings.SettingsPatch +import app.revanced.util.exception import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction @Patch( @@ -52,29 +53,33 @@ object DisableRollingNumberAnimationPatch : BytecodePatch( // Animations are disabled by preventing an Image from being applied to the text span, // which prevents the animations from appearing. - RollingNumberTextViewAnimationUpdateFingerprint.result?.apply { - val patternScanResult = scanResult.patternScanResult!! - val blockStartIndex = patternScanResult.startIndex - val blockEndIndex = patternScanResult.endIndex + 1 - mutableMethod.apply { - val freeRegister = getInstruction(blockStartIndex).registerA + if (SettingsPatch.upward1843) { + RollingNumberTextViewAnimationUpdateFingerprint.result?.apply { + val patternScanResult = scanResult.patternScanResult!! + val blockStartIndex = patternScanResult.startIndex + val blockEndIndex = patternScanResult.endIndex + 1 + mutableMethod.apply { + val freeRegister = getInstruction(blockStartIndex).registerA - // ReturnYouTubeDislike also makes changes to this same method, - // and must add control flow label to a noop instruction to - // ensure RYD patch adds it's changes after the control flow label. - addInstructions(blockEndIndex, "nop") + // ReturnYouTubeDislike also makes changes to this same method, + // and must add control flow label to a noop instruction to + // ensure RYD patch adds it's changes after the control flow label. + addInstructions(blockEndIndex, "nop") - addInstructionsWithLabels( - blockStartIndex, - """ - invoke-static {}, $GENERAL->disableRollingNumberAnimations()Z - move-result v$freeRegister - if-nez v$freeRegister, :disable_animations - """, - ExternalLabel("disable_animations", getInstruction(blockEndIndex)) - ) - } - } ?: throw PatchException("This version is not supported. Please use YouTube 18.30.37 or later.") + addInstructionsWithLabels( + blockStartIndex, + """ + invoke-static {}, $GENERAL->disableRollingNumberAnimations()Z + move-result v$freeRegister + if-nez v$freeRegister, :disable_animations + """, + ExternalLabel("disable_animations", getInstruction(blockEndIndex)) + ) + } + } ?: RollingNumberTextViewAnimationUpdateFingerprint.exception + } else { + throw PatchException("This version is not supported. Please use YouTube 18.43.45 or later.") + } /** * Add settings diff --git a/src/main/kotlin/app/revanced/patches/youtube/general/songsearch/SongSearchPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/general/songsearch/SongSearchPatch.kt index 855b9371f..4caf0d8b3 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/general/songsearch/SongSearchPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/general/songsearch/SongSearchPatch.kt @@ -79,5 +79,6 @@ object SongSearchPatch : BytecodePatch( ) SettingsPatch.updatePatchStatus("Enable song search") + } } diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/doubletapbackground/DoubleTapOverlayBackgroundPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/doubletapbackground/DoubleTapOverlayBackgroundPatch.kt index d59327341..29701f0a7 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/doubletapbackground/DoubleTapOverlayBackgroundPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/doubletapbackground/DoubleTapOverlayBackgroundPatch.kt @@ -47,8 +47,7 @@ import app.revanced.patches.youtube.utils.settings.SettingsPatch "19.09.37" ] ) - ], - use = true + ] ) @Suppress("unused") object DoubleTapOverlayBackgroundPatch : AbstractOverlayBackgroundPatch( diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/ambientmode/fingerprints/PowerSaveModeOneFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/ambientmode/fingerprints/PowerSaveModeOneFingerprint.kt index 9bcb6dc21..1d9a8ac8d 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/ambientmode/fingerprints/PowerSaveModeOneFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/ambientmode/fingerprints/PowerSaveModeOneFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.youtube.misc.ambientmode.fingerprints /** #C# Add START */ +package app.revanced.patches.youtube.misc.ambientmode.fingerprints import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.MethodFingerprint @@ -40,4 +40,4 @@ object PowerSaveModeOneFingerprint : MethodFingerprint( } count == 1 } -) /** #C# Add END */ \ No newline at end of file +) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/ambientmode/fingerprints/PowerSaveModeTwoFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/ambientmode/fingerprints/PowerSaveModeTwoFingerprint.kt index 578d227f4..041b5f4bc 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/ambientmode/fingerprints/PowerSaveModeTwoFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/ambientmode/fingerprints/PowerSaveModeTwoFingerprint.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.youtube.misc.ambientmode.fingerprints /** #C# Add START */ +package app.revanced.patches.youtube.misc.ambientmode.fingerprints import app.revanced.patcher.extensions.or import app.revanced.patcher.fingerprint.MethodFingerprint @@ -41,4 +41,4 @@ object PowerSaveModeTwoFingerprint : MethodFingerprint( } count == 1 } -) /** #C# Add END */ \ No newline at end of file +) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/navigation/navigationbuttons/NavigationButtonsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/navigation/navigationbuttons/NavigationButtonsPatch.kt index 2f9a47f84..6a86a38db 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/navigation/navigationbuttons/NavigationButtonsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/navigation/navigationbuttons/NavigationButtonsPatch.kt @@ -102,7 +102,7 @@ object NavigationButtonsPatch : BytecodePatch( val buttonViewResult = this[1] val enumHookInsertIndex = enumScanResult.startIndex + 2 - val buttonHookInsertIndex = buttonViewResult.endIndex + val buttonHookInsertIndex = buttonViewResult.endIndex - 1 mapOf( BUTTON_HOOK to buttonHookInsertIndex, diff --git a/src/main/kotlin/app/revanced/patches/youtube/navigation/navigationbuttons/fingerprints/PivotBarShortsButtonViewFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/navigation/navigationbuttons/fingerprints/PivotBarShortsButtonViewFingerprint.kt index 51acdfc07..8928deef7 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/navigation/navigationbuttons/fingerprints/PivotBarShortsButtonViewFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/navigation/navigationbuttons/fingerprints/PivotBarShortsButtonViewFingerprint.kt @@ -7,6 +7,7 @@ object PivotBarShortsButtonViewFingerprint : MethodFingerprint( opcodes = listOf( Opcode.INVOKE_VIRTUAL_RANGE, Opcode.MOVE_RESULT_OBJECT, // target reference - Opcode.GOTO, + null, // Opcode.GOTO_16 or Opcode.GOTO + Opcode.IF_NE ) ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/overlaybutton/download/hook/fingerprints/PlaylistOfflineDownloadOnClickFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/overlaybutton/download/hook/fingerprints/PlaylistOfflineDownloadOnClickFingerprint.kt index d67d680fd..cd56d2067 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/overlaybutton/download/hook/fingerprints/PlaylistOfflineDownloadOnClickFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/overlaybutton/download/hook/fingerprints/PlaylistOfflineDownloadOnClickFingerprint.kt @@ -14,7 +14,7 @@ object PlaylistOfflineDownloadOnClickFingerprint : MethodFingerprint( Opcode.INVOKE_STATIC, Opcode.MOVE_RESULT, Opcode.IF_EQZ, - null, // Opcode.RETURN_VOID, Opcode.GOTO + null, // Opcode.RETURN_VOID or Opcode.GOTO Opcode.IGET_OBJECT ), customFingerprint = { methodDef, classDef -> diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/musicbutton/HideMusicButtonPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/player/musicbutton/HideMusicButtonPatch.kt index 9e036f5a4..ef13b3c16 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/player/musicbutton/HideMusicButtonPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/player/musicbutton/HideMusicButtonPatch.kt @@ -9,7 +9,6 @@ import app.revanced.patcher.patch.annotation.Patch import app.revanced.patcher.util.smali.ExternalLabel import app.revanced.patches.youtube.player.musicbutton.fingerprints.MusicAppDeeplinkButtonAlternativeFingerprint import app.revanced.patches.youtube.player.musicbutton.fingerprints.MusicAppDeeplinkButtonFingerprint -import app.revanced.patches.youtube.player.musicbutton.fingerprints.MusicAppDeeplinkButtonParentFingerprint import app.revanced.patches.youtube.utils.integrations.Constants.PLAYER import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch import app.revanced.patches.youtube.utils.settings.SettingsPatch @@ -63,25 +62,38 @@ import app.revanced.util.exception ) @Suppress("unused") object HideMusicButtonPatch : BytecodePatch( - setOf(MusicAppDeeplinkButtonParentFingerprint) + setOf( + MusicAppDeeplinkButtonAlternativeFingerprint, + MusicAppDeeplinkButtonFingerprint + ) ) { override fun execute(context: BytecodeContext) { - MusicAppDeeplinkButtonParentFingerprint.result?.mutableClass?.let { mutableClass -> - MusicAppDeeplinkButtonFingerprint.also { it.resolve(context, mutableClass) }.result?.let { - it.mutableMethod.apply { - addInstructionsWithLabels( - 0, - """ - invoke-static {}, $PLAYER->hideMusicButton()Z - move-result v0 - if-nez v0, :hidden - """, - ExternalLabel("hidden", getInstruction(implementation!!.instructions.size - 1)) - ) - } - } ?: throw MusicAppDeeplinkButtonFingerprint.exception - } ?: throw MusicAppDeeplinkButtonParentFingerprint.exception + MusicAppDeeplinkButtonFingerprint.result?.let { + it.mutableMethod.apply { + addInstructionsWithLabels( + 0, + """ + invoke-static {}, $PLAYER->hideMusicButton()Z + move-result v0 + if-nez v0, :hidden + """, + ExternalLabel("hidden", getInstruction(implementation!!.instructions.size - 1)) + ) + } + } ?: MusicAppDeeplinkButtonAlternativeFingerprint.result?.let { + it.mutableMethod.apply { + addInstructionsWithLabels( + 0, + """ + invoke-static {}, $PLAYER->hideMusicButton()Z + move-result v0 + if-nez v0, :hidden + """, + ExternalLabel("hidden", getInstruction(implementation!!.instructions.size - 1)) + ) + } + } ?: throw MusicAppDeeplinkButtonFingerprint.exception /** * Add settings diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/musicbutton/fingerprints/MusicAppDeeplinkButtonFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/player/musicbutton/fingerprints/MusicAppDeeplinkButtonFingerprint.kt index d5c1b492e..372659b4d 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/player/musicbutton/fingerprints/MusicAppDeeplinkButtonFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/player/musicbutton/fingerprints/MusicAppDeeplinkButtonFingerprint.kt @@ -2,11 +2,12 @@ package app.revanced.patches.youtube.player.musicbutton.fingerprints import app.revanced.patcher.extensions.or import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch.MusicAppDeeplinkButtonView -import app.revanced.patcher.fingerprint.MethodFingerprint +import app.revanced.util.fingerprint.LiteralValueFingerprint import com.android.tools.smali.dexlib2.AccessFlags -object MusicAppDeeplinkButtonFingerprint : MethodFingerprint( +object MusicAppDeeplinkButtonFingerprint : LiteralValueFingerprint( returnType = "V", accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, parameters = listOf("Z", "Z"), + literalSupplier = { MusicAppDeeplinkButtonView } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/musicbutton/fingerprints/MusicAppDeeplinkButtonParentFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/player/musicbutton/fingerprints/MusicAppDeeplinkButtonParentFingerprint.kt deleted file mode 100644 index b593e74bb..000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/player/musicbutton/fingerprints/MusicAppDeeplinkButtonParentFingerprint.kt +++ /dev/null @@ -1,12 +0,0 @@ -package app.revanced.patches.youtube.player.musicbutton.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch.MusicAppDeeplinkButtonView -import app.revanced.util.fingerprint.LiteralValueFingerprint -import com.android.tools.smali.dexlib2.AccessFlags - -object MusicAppDeeplinkButtonParentFingerprint : LiteralValueFingerprint( - returnType = "V", - accessFlags = AccessFlags.PROTECTED or AccessFlags.FINAL, - literalSupplier = { MusicAppDeeplinkButtonView } -) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/speedoverlay/SpeedOverlayPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/player/speedoverlay/SpeedOverlayPatch.kt index 6856a46cb..e678acd06 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/player/speedoverlay/SpeedOverlayPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/player/speedoverlay/SpeedOverlayPatch.kt @@ -24,15 +24,6 @@ import org.w3c.dom.Element CompatiblePackage( "com.google.android.youtube", [ - "18.25.40", - "18.27.36", - "18.29.38", - "18.30.37", - "18.31.40", - "18.32.39", - "18.33.40", - "18.34.38", - "18.35.36", "18.36.39", "18.37.36", "18.38.44", diff --git a/src/main/kotlin/app/revanced/patches/youtube/swipe/controls/SwipeControlsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/swipe/controls/SwipeControlsPatch.kt index f0034a315..5371c00b6 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/swipe/controls/SwipeControlsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/swipe/controls/SwipeControlsPatch.kt @@ -129,7 +129,7 @@ object SwipeControlsPatch : BytecodePatch( } } ?: throw FullScreenEngagementOverlayFingerprint.exception - if (SettingsPatch.upward1909) { + try { HDRBrightnessFingerprint.result?.let { it.mutableMethod.apply { addInstructionsWithLabels( @@ -141,7 +141,7 @@ object SwipeControlsPatch : BytecodePatch( """, ExternalLabel("default", getInstruction(0)) ) } - } + } ?: throw HDRBrightnessFingerprint.exception /** * Add settings @@ -151,8 +151,11 @@ object SwipeControlsPatch : BytecodePatch( "SETTINGS: SWIPE_EXPERIMENTAL_FLAGS" ) ) + } catch (e: Exception) { + println("WARNING: Disable auto HDR brightness is not supported in this version. Use YouTube 19.08.36 or earlier (${e.message})") } + /** * Add settings */ diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/settings/SettingsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/settings/SettingsPatch.kt index bb54c40e7..98d548d35 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/settings/SettingsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/settings/SettingsPatch.kt @@ -106,8 +106,6 @@ object SettingsPatch : AbstractSettingsResourcePatch( upward1841 = 234200000 <= playServicesVersion upward1843 = 234400000 <= playServicesVersion upward1904 = 240502000 <= playServicesVersion - upward1905 = 240700000 <= playServicesVersion - upward1909 = 241002000 > playServicesVersion break } @@ -181,8 +179,6 @@ object SettingsPatch : AbstractSettingsResourcePatch( internal var upward1841: Boolean = false internal var upward1843: Boolean = false internal var upward1904: Boolean = false - internal var upward1905: Boolean = false - internal var upward1909: Boolean = false internal fun addPreference(settingArray: Array) { contexts.addPreference(settingArray) diff --git a/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/src/main/resources/youtube/settings/xml/revanced_prefs.xml index 26778f67a..ebd9fa830 100644 --- a/src/main/resources/youtube/settings/xml/revanced_prefs.xml +++ b/src/main/resources/youtube/settings/xml/revanced_prefs.xml @@ -7,80 +7,80 @@ PREFERENCE: GENERAL_SETTINGS --> + SETTINGS: CHANGE_START_PAGE --> + SETTINGS: DISABLE_AUTO_CAPTIONS --> + SETTINGS: DISABLE_ROLLING_NUMBER_ANIMATIONS --> + SETTINGS: ENABLE_GRADIENT_LOADING_SCREEN --> + SETTINGS: ENABLE_SONG_SEARCH --> + SETTINGS: ENABLE_TABLET_MINI_PLAYER --> + SETTINGS: ENABLE_WIDE_SEARCH_BAR --> + SETTINGS: HIDE_ACCOUNT_MENU --> + SETTINGS: HIDE_AUTO_PLAYER_POPUP_PANELS --> + SETTINGS: HIDE_CAST_BUTTON --> + SETTINGS: HIDE_CATEGORY_BAR --> + SETTINGS: HIDE_CHANNEL_LIST_SUBMENU --> + SETTINGS: HIDE_CROWDFUNDING_BOX --> + SETTINGS: HIDE_FLOATING_MICROPHONE --> + SETTINGS: HIDE_HANDLE --> + SETTINGS: HIDE_LATEST_VIDEOS_BUTTON --> + SETTINGS: HIDE_LOAD_MORE_BUTTON --> + SETTINGS: HIDE_MIX_PLAYLISTS --> + SETTINGS: HIDE_SEARCH_TERM_THUMBNAIL --> + SETTINGS: HIDE_SNACK_BAR --> + SETTINGS: HIDE_TOOLBAR_BUTTON --> + SETTINGS: HIDE_TRENDING_SEARCHES --> + SETTINGS: REMOVE_VIEWER_DISCRETION_DIALOG --> + SETTINGS: HIDE_LAYOUT_COMPONENTS --> + SETTINGS: GENERAL_EXPERIMENTAL_FLAGS --> + SETTINGS: HIDE_SUGGESTIONS_SHELF --> + SETTINGS: HIDE_LAYOUT_COMPONENTS --> + SETTINGS: HIDE_CHANNEL_PROFILE_COMPONENTS --> + SETTINGS: HIDE_DESCRIPTION_COMPONENTS --> @@ -149,19 +149,19 @@ - SETTINGS: HIDE_GENERAL_ADS --> + SETTINGS: HIDE_GENERAL_ADS --> + SETTINGS: HIDE_VIDEO_ADS --> + SETTINGS: HIDE_GENERAL_ADS --> + SETTINGS: HIDE_GENERAL_ADS --> @@ -184,17 +184,102 @@ PREFERENCE: ALTERNATIVE_THUMBNAILS_SETTINGS --> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SETTINGS: ENABLE_BOTTOM_PLAYER_GESTURES --> + SETTINGS: HIDE_CHANNEL_BAR_BUTTON --> + SETTINGS: BUTTON_CONTAINER --> + SETTINGS: COMMENT_COMPONENTS --> @@ -230,40 +315,40 @@ + SETTINGS: HIDE_FEED_FLYOUT_PANEL --> + SETTINGS: PLAYER_FLYOUT_PANEL_HEADER --> + SETTINGS: ENABLE_OLD_QUALITY_LAYOUT --> + + SETTINGS: HIDE_PLAYER_FLYOUT_PANEL --> + SETTINGS: PLAYER_FLYOUT_PANEL_ADDITIONAL_SETTINGS_HEADER --> + SETTINGS: CHANGE_PLAYER_FLYOUT_PANEL_TOGGLE --> + SETTINGS: HIDE_PLAYER_FLYOUT_PANEL --> @@ -273,17 +358,17 @@ PREFERENCE: FULLSCREEN_SETTINGS --> + SETTINGS: AMBIENT_MODE_SWITCH --> + SETTINGS: HIDE_AUTOPLAY_PREVIEW --> + SETTINGS: HIDE_END_SCREEN_OVERLAY --> + SETTINGS: HIDE_FULLSCREEN_PANELS --> + SETTINGS: QUICK_ACTIONS_COMPONENTS --> + SETTINGS: FULLSCREEN_EXPERIMENTAL_FLAGS --> + SETTINGS: DISABLE_LANDSCAPE_MODE --> + SETTINGS: ENABLE_COMPACT_CONTROLS_OVERLAY --> + SETTINGS: FORCE_FULLSCREEN --> + + SETTINGS: KEEP_LANDSCAPE_MODE --> @@ -324,132 +409,49 @@ PREFERENCE: NAVIGATION_SETTINGS --> + SETTINGS: ENABLE_TABLET_NAVIGATION_BAR --> + SETTINGS: HIDE_NAVIGATION_BUTTONS --> + SETTINGS: HIDE_NAVIGATION_LABEL --> + SETTINGS: HIDE_NAVIGATION_BUTTONS --> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + SETTINGS: APPEND_TIME_STAMP_INFORMATION --> + + SETTINGS: CUSTOM_SEEKBAR_COLOR --> + SETTINGS: ENABLE_NEW_THUMBNAIL_PREVIEW --> + SETTINGS: ENABLE_SEEKBAR_TAPPING --> + SETTINGS: HIDE_SEEKBAR --> + SETTINGS: HIDE_TIME_STAMP --> @@ -459,13 +461,13 @@ + SETTINGS: HIDE_SHORTS_SHELF --> + SETTINGS: SHORTS_PLAYER_PARENT --> + SETTINGS: DISABLE_STARTUP_SHORTS_PLAYER --> + SETTINGS: HIDE_SHORTS_COMPONENTS --> @@ -506,9 +508,11 @@ - + SETTINGS: SWIPE_CONTROLS --> + + + SETTINGS: SWIPE_EXPERIMENTAL_FLAGS --> @@ -518,38 +522,38 @@ PREFERENCE: VIDEO_SETTINGS --> + SETTINGS: DEFAULT_PLAYBACK_SPEED --> + + SETTINGS: DEFAULT_VIDEO_QUALITY --> + SETTINGS: DISABLE_HDR_VIDEO --> + SETTINGS: DEFAULT_PLAYBACK_SPEED --> + SETTINGS: CUSTOM_PLAYBACK_SPEED --> + SETTINGS: DEFAULT_PLAYBACK_SPEED --> + SETTINGS: DEFAULT_VIDEO_QUALITY --> + SETTINGS: VIDEO_EXPERIMENTAL_FLAGS --> + SETTINGS: DEFAULT_PLAYBACK_SPEED --> + SETTINGS: DEFAULT_VIDEO_QUALITY --> @@ -559,29 +563,29 @@ + SETTINGS: AMBIENT_MODE_SWITCH --> + SETTINGS: DISABLE_UPDATE_SCREEN --> + SETTINGS: DOUBLE_BACK_TIMEOUT --> + SETTINGS: ENABLE_DEBUG_LOGGING --> + SETTINGS: ENABLE_EXTERNAL_BROWSER --> + SETTINGS: ENABLE_LANGUAGE_SWITCH --> + SETTINGS: ENABLE_NEW_SPLASH_ANIMATION --> @@ -591,7 +595,7 @@ - SETTINGS: ENABLE_OPEN_LINKS_DIRECTLY --> + + SETTINGS: SANITIZE_SHARING_LINKS --> + SETTINGS: EXPERIMENTAL_FLAGS --> + SETTINGS: DISABLE_QUIC_PROTOCOL --> + SETTINGS: ENABLE_OPUS_CODEC --> + SETTINGS: LAYOUT_SWITCH --> + + SETTINGS: ENABLE_VIDEO_CODEC --> + SETTINGS: SPOOF_APP_VERSION --> + SETTINGS: SPOOF_DEVICE_DIMENSIONS -->