feat(YouTube): Add support for 20.44.38

This commit is contained in:
oSumAtrIX 2026-03-11 02:26:25 +01:00
parent 636698c96e
commit af95a58009
No known key found for this signature in database
GPG key ID: A9B3094ACDB604B4
61 changed files with 137 additions and 70 deletions

View file

@ -96,7 +96,8 @@ val hideAdsPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -29,7 +29,8 @@ val videoAdsPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -58,7 +58,8 @@ val copyVideoURLPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -45,7 +45,8 @@ val removeViewerDiscretionDialogPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -22,7 +22,8 @@ val addMoreDoubleTapToSeekLengthOptionsPatch = resourcePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
)
)

View file

@ -37,7 +37,8 @@ val disableDoubleTapActionsPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -80,7 +80,8 @@ val downloadsPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -58,7 +58,8 @@ val disableHapticFeedbackPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -23,7 +23,8 @@ val seekbarPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)
}

View file

@ -109,7 +109,8 @@ val swipeControlsPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -31,7 +31,8 @@ val disableAutoCaptionsPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -31,7 +31,8 @@ val customBrandingPatch = baseCustomBrandingPatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)
},

View file

@ -88,7 +88,8 @@ val changeHeaderPatch = changeHeaderPatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
)
),
variants = variants,

View file

@ -33,7 +33,8 @@ val hideVideoActionButtonsPatch = resourcePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -69,7 +69,8 @@ val overrideOpenInYouTubeMusicButtonPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -60,7 +60,8 @@ val navigationBarPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -43,7 +43,8 @@ val hidePlayerOverlayButtonsPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)
@ -146,7 +147,8 @@ val hidePlayerOverlayButtonsPatch = bytecodePatch(
titleAnchorMethodMatch.let {
it.method.apply {
val titleAnchorIndex = it[-1]
val titleAnchorRegister = getInstruction<OneRegisterInstruction>(titleAnchorIndex).registerA
val titleAnchorRegister =
getInstruction<OneRegisterInstruction>(titleAnchorIndex).registerA
addInstruction(
titleAnchorIndex + 1,
@ -154,7 +156,8 @@ val hidePlayerOverlayButtonsPatch = bytecodePatch(
)
val playerCollapseButtonIndex = it[1]
val playerCollapseButtonRegister = getInstruction<OneRegisterInstruction>(playerCollapseButtonIndex).registerA
val playerCollapseButtonRegister =
getInstruction<OneRegisterInstruction>(playerCollapseButtonIndex).registerA
addInstruction(
playerCollapseButtonIndex + 1,
@ -173,7 +176,8 @@ val hidePlayerOverlayButtonsPatch = bytecodePatch(
// so match on move-result-object after findViewById instead of check-cast.
val moveResultIndex = it[2]
val insertIndex = moveResultIndex + 1
val insertRegister = getInstruction<OneRegisterInstruction>(moveResultIndex).registerA
val insertRegister =
getInstruction<OneRegisterInstruction>(moveResultIndex).registerA
addInstructionsWithLabels(
insertIndex,

View file

@ -37,7 +37,8 @@ val changeFormFactorPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -39,7 +39,8 @@ val hideAutoplayPreviewPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
)
)

View file

@ -68,7 +68,8 @@ val hideEndScreenCardsPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -35,7 +35,8 @@ val hideEndScreenSuggestedVideoPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -35,7 +35,8 @@ val disableFullscreenAmbientModePatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -101,7 +101,8 @@ val hideLayoutComponentsPatch = hideLayoutComponentsPatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
),
) {

View file

@ -52,7 +52,8 @@ val hideInfoCardsPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -30,7 +30,8 @@ val hidePlayerFlyoutMenuItemsPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -31,7 +31,8 @@ val disablePlayerPopupPanelsPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -35,7 +35,8 @@ val hideRelatedVideoOverlayPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -35,7 +35,8 @@ val disableRollingNumberAnimationsPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -166,7 +166,8 @@ val hideShortsComponentsPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)
@ -188,7 +189,8 @@ val hideShortsComponentsPatch = bytecodePatch(
methodReference?.name == "getDimensionPixelSize"
} + 1
val sizeRegister = method.getInstruction<OneRegisterInstruction>(targetIndex).registerA
val sizeRegister =
method.getInstruction<OneRegisterInstruction>(targetIndex).registerA
return@forEachInstructionAsSequence targetIndex to sizeRegister
}) { method, (targetIndex, sizeRegister) ->

View file

@ -32,7 +32,8 @@ val disableSignInToTVPopupPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -30,7 +30,8 @@ val hideTimestampPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -82,7 +82,8 @@ val miniplayerPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -27,7 +27,8 @@ val exitFullscreenPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -27,7 +27,8 @@ val openVideosFullscreenPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -33,7 +33,8 @@ val customPlayerOverlayOpacityPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -67,7 +67,8 @@ val returnYouTubeDislikePatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)
@ -128,7 +129,8 @@ val returnYouTubeDislikePatch = bytecodePatch(
// This hook handles all situations, as it's where the created Spans are stored and later reused.
// Find the field name of the conversion context.
val textComponentConversionContextField = textComponentConstructorMethod.immutableClassDef.fields.find {
val textComponentConversionContextField =
textComponentConstructorMethod.immutableClassDef.fields.find {
it.type == conversionContextClassDef.type
} ?: throw PatchException("Could not find conversion context field")

View file

@ -54,7 +54,8 @@ val shortsAutoplayPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -57,7 +57,8 @@ val openShortsInRegularPlayerPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -134,7 +134,8 @@ val sponsorBlockPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -42,7 +42,8 @@ val spoofAppVersionPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -36,7 +36,8 @@ val changeStartPagePatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -42,7 +42,8 @@ val disableResumingShortsOnStartupPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
// This patch is obsolete with 21.03 because YT seems to have
// removed resuming Shorts functionality.
// TODO: Before adding 21.03+, merge this patch into `Hide Shorts component`

View file

@ -195,7 +195,8 @@ val themePatch = baseThemePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)
},

View file

@ -39,7 +39,8 @@ val alternativeThumbnailsPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -33,7 +33,8 @@ val bypassImageRegionRestrictionsPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -29,7 +29,8 @@ val announcementsPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -12,7 +12,8 @@ import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch
import app.revanced.patches.youtube.misc.settings.PreferenceScreen
import app.revanced.patches.youtube.misc.settings.settingsPatch
private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/patches/PauseOnAudioInterruptPatch;"
private const val EXTENSION_CLASS_DESCRIPTOR =
"Lapp/revanced/extension/youtube/patches/PauseOnAudioInterruptPatch;"
val pauseOnAudioInterruptPatch = bytecodePatch(
name = "Pause on audio interrupt",
@ -31,7 +32,8 @@ val pauseOnAudioInterruptPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -50,7 +50,8 @@ val removeBackgroundPlaybackRestrictionsPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -24,7 +24,8 @@ val enableDebuggingPatch = enableDebuggingPatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
)
)
},

View file

@ -32,7 +32,8 @@ val spoofDeviceDimensionsPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -18,7 +18,8 @@ val checkWatchHistoryDomainNameResolutionPatch = checkWatchHistoryDomainNameReso
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)
},

View file

@ -41,7 +41,8 @@ val gmsCoreSupportPatch = gmsCoreSupportPatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)
}

View file

@ -35,7 +35,8 @@ val bypassURLRedirectsPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -47,7 +47,8 @@ val openLinksExternallyPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -36,7 +36,8 @@ val loopVideoPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -20,7 +20,8 @@ val sanitizeSharingLinksPatch = sanitizeSharingLinksPatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
)
)
},

View file

@ -38,7 +38,8 @@ val spoofVideoStreamsPatch = spoofVideoStreamsPatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -25,7 +25,8 @@ val forceOriginalAudioPatch = forceOriginalAudioPatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)
},

View file

@ -61,7 +61,8 @@ val disableVideoCodecsPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -30,7 +30,8 @@ val videoQualityPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
),
)

View file

@ -33,7 +33,8 @@ val playbackSpeedPatch = bytecodePatch(
"20.26.46",
"20.31.42",
"20.37.48",
"20.40.45"
"20.40.45",
"20.44.38"
)
)