Compare commits

...

10 Commits

Author SHA1 Message Date
semantic-release-bot
949d6bdd19 chore: Release v5.43.1-dev.1 [skip ci]
## [5.43.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.43.0...v5.43.1-dev.1) (2025-10-14)

### Bug Fixes

* **X / Twitter - Change link sharing domain:** Resolve duplicate patch option ([#6119](https://github.com/ReVanced/revanced-patches/issues/6119)) ([7563990](7563990750))
2025-10-14 18:19:42 +00:00
ADudeCalledLeo
7563990750 fix(X / Twitter - Change link sharing domain): Resolve duplicate patch option (#6119) 2025-10-14 22:16:01 +04:00
semantic-release-bot
4b605eb270 chore: Release v5.43.0 [skip ci]
# [5.43.0](https://github.com/ReVanced/revanced-patches/compare/v5.42.1...v5.43.0) (2025-10-14)

### Bug Fixes

* **Custom branding:** Use white notification icon for expanded status bar panel ([95eee59](95eee59a87))
* **Instagram - Change sharing domain:** Display patch option ([#6089](https://github.com/ReVanced/revanced-patches/issues/6089)) ([be2b144](be2b144cc9))
* **X / Twitter - Change Link Sharing Domain:** Change link domain of share copy action ([#6091](https://github.com/ReVanced/revanced-patches/issues/6091)) ([5484625](54846253d7))
* **YouTube - Custom branding:** Do not add a broken custom icon if the user provides an invalid custom icon path ([6555f6e](6555f6e6f8))
* **YouTube - Custom branding:** Use ReVanced icon for status bar notification icon ([#6108](https://github.com/ReVanced/revanced-patches/issues/6108)) ([10ea250](10ea250d4a))
* **YouTube - Force original audio:** Do not use translated audio if stream spoofing is off and force audio is on ([0c19dba](0c19dbaf30))

### Features

* **Instagram:** Add `Hide suggested content` patch ([#6075](https://github.com/ReVanced/revanced-patches/issues/6075)) ([50f0b9c](50f0b9c5ee))
2025-10-14 12:03:58 +00:00
LisoUseInAIKyrios
c2d7a7fb8b chore: Merge branch dev to main (#6090) 2025-10-14 16:00:00 +04:00
github-actions[bot]
a55560dc25 chore: Sync translations (#6118) 2025-10-14 15:58:38 +04:00
semantic-release-bot
e8522d703e chore: Release v5.43.0-dev.4 [skip ci]
# [5.43.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.43.0-dev.3...v5.43.0-dev.4) (2025-10-14)

### Bug Fixes

* **YouTube - Force original audio:** Do not use translated audio if stream spoofing is off and force audio is on ([0c19dba](0c19dbaf30))
2025-10-14 11:46:49 +00:00
LisoUseInAIKyrios
068d029a03 refactor: Use notNull delegate to prevent wasting more time in the future 2025-10-14 15:43:05 +04:00
LisoUseInAIKyrios
0c19dbaf30 fix(YouTube - Force original audio): Do not use translated audio if stream spoofing is off and force audio is on 2025-10-14 15:38:05 +04:00
semantic-release-bot
bf73ac8316 chore: Release v5.43.0-dev.3 [skip ci]
# [5.43.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.43.0-dev.2...v5.43.0-dev.3) (2025-10-14)

### Bug Fixes

* **Custom branding:** Use white notification icon for expanded status bar panel ([95eee59](95eee59a87))
2025-10-14 10:39:28 +00:00
LisoUseInAIKyrios
95eee59a87 fix(Custom branding): Use white notification icon for expanded status bar panel 2025-10-14 14:36:09 +04:00
13 changed files with 105 additions and 63 deletions

View File

@@ -1,3 +1,41 @@
## [5.43.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.43.0...v5.43.1-dev.1) (2025-10-14)
### Bug Fixes
* **X / Twitter - Change link sharing domain:** Resolve duplicate patch option ([#6119](https://github.com/ReVanced/revanced-patches/issues/6119)) ([7563990](https://github.com/ReVanced/revanced-patches/commit/75639907502382f63fa127a886362d4a4573e6e3))
# [5.43.0](https://github.com/ReVanced/revanced-patches/compare/v5.42.1...v5.43.0) (2025-10-14)
### Bug Fixes
* **Custom branding:** Use white notification icon for expanded status bar panel ([95eee59](https://github.com/ReVanced/revanced-patches/commit/95eee59a87a680e212a3ba06e1afefee8d91ee9d))
* **Instagram - Change sharing domain:** Display patch option ([#6089](https://github.com/ReVanced/revanced-patches/issues/6089)) ([be2b144](https://github.com/ReVanced/revanced-patches/commit/be2b144cc9c4108ec37e16f3dd20573d88ffaa2b))
* **X / Twitter - Change Link Sharing Domain:** Change link domain of share copy action ([#6091](https://github.com/ReVanced/revanced-patches/issues/6091)) ([5484625](https://github.com/ReVanced/revanced-patches/commit/54846253d748f4e7e30b2bba427c7d2fb9c341e2))
* **YouTube - Custom branding:** Do not add a broken custom icon if the user provides an invalid custom icon path ([6555f6e](https://github.com/ReVanced/revanced-patches/commit/6555f6e6f8b52c2f1ddab1f52c6704cd2d8cfc12))
* **YouTube - Custom branding:** Use ReVanced icon for status bar notification icon ([#6108](https://github.com/ReVanced/revanced-patches/issues/6108)) ([10ea250](https://github.com/ReVanced/revanced-patches/commit/10ea250d4a91f8ab3b7f865612a403fc93a857b5))
* **YouTube - Force original audio:** Do not use translated audio if stream spoofing is off and force audio is on ([0c19dba](https://github.com/ReVanced/revanced-patches/commit/0c19dbaf30bcb95a29448d98b028ebeea54cc7d3))
### Features
* **Instagram:** Add `Hide suggested content` patch ([#6075](https://github.com/ReVanced/revanced-patches/issues/6075)) ([50f0b9c](https://github.com/ReVanced/revanced-patches/commit/50f0b9c5eee95ff5f9974e344802e1d2a4aab47b))
# [5.43.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.43.0-dev.3...v5.43.0-dev.4) (2025-10-14)
### Bug Fixes
* **YouTube - Force original audio:** Do not use translated audio if stream spoofing is off and force audio is on ([0c19dba](https://github.com/ReVanced/revanced-patches/commit/0c19dbaf30bcb95a29448d98b028ebeea54cc7d3))
# [5.43.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.43.0-dev.2...v5.43.0-dev.3) (2025-10-14)
### Bug Fixes
* **Custom branding:** Use white notification icon for expanded status bar panel ([95eee59](https://github.com/ReVanced/revanced-patches/commit/95eee59a87a680e212a3ba06e1afefee8d91ee9d))
# [5.43.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.43.0-dev.1...v5.43.0-dev.2) (2025-10-14)

View File

@@ -2,7 +2,7 @@ package app.revanced.twitter.patches.links;
@SuppressWarnings("unused")
public final class ChangeLinkSharingDomainPatch {
private static final String LINK_FORMAT = "%s/%s/status/%s";
private static final String LINK_FORMAT = "https://%s/%s/status/%s";
/**
* Method is modified during patching. Do not change.

View File

@@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
org.gradle.parallel = true
android.useAndroidX = true
kotlin.code.style = official
version = 5.43.0-dev.2
version = 5.43.1-dev.1

View File

@@ -27,7 +27,7 @@ val forceOriginalAudioPatch = forceOriginalAudioPatch(
)
)
},
fixUseLocalizedAudioTrackFlag = is_8_10_or_greater,
fixUseLocalizedAudioTrackFlag = { is_8_10_or_greater },
mainActivityOnCreateFingerprint = mainActivityOnCreateFingerprint,
subclassExtensionClassDescriptor = EXTENSION_CLASS_DESCRIPTOR,
preferenceScreen = PreferenceScreen.MISC,

View File

@@ -4,14 +4,17 @@ package app.revanced.patches.music.playservice
import app.revanced.patcher.patch.resourcePatch
import app.revanced.util.findPlayStoreServicesVersion
import kotlin.properties.Delegates
var is_7_33_or_greater = false
// Use notNull delegate so an exception is thrown if these fields are accessed before they are set.
var is_7_33_or_greater: Boolean by Delegates.notNull()
private set
var is_8_10_or_greater = false
var is_8_10_or_greater: Boolean by Delegates.notNull()
private set
var is_8_11_or_greater = false
var is_8_11_or_greater: Boolean by Delegates.notNull()
private set
var is_8_15_or_greater = false
var is_8_15_or_greater: Boolean by Delegates.notNull()
private set
val versionCheckPatch = resourcePatch(

View File

@@ -27,4 +27,3 @@ internal val selectAudioStreamFingerprint = fingerprint {
&& method.containsLiteralInstruction(AUDIO_STREAM_IGNORE_DEFAULT_FEATURE_FLAG)
}
}

View File

@@ -34,7 +34,7 @@ private const val EXTENSION_CLASS_DESCRIPTOR =
internal fun forceOriginalAudioPatch(
block: BytecodePatchBuilder.() -> Unit = {},
executeBlock: BytecodePatchContext.() -> Unit = {},
fixUseLocalizedAudioTrackFlag: Boolean,
fixUseLocalizedAudioTrackFlag: () -> Boolean,
mainActivityOnCreateFingerprint: Fingerprint,
subclassExtensionClassDescriptor: String,
preferenceScreen: BasePreferenceScreen.Screen
@@ -64,7 +64,7 @@ internal fun forceOriginalAudioPatch(
// Disable feature flag that ignores the default track flag
// and instead overrides to the user region language.
if (fixUseLocalizedAudioTrackFlag) {
if (fixUseLocalizedAudioTrackFlag()) {
selectAudioStreamFingerprint.method.insertLiteralOverride(
AUDIO_STREAM_IGNORE_DEFAULT_FEATURE_FLAG,
"$EXTENSION_CLASS_DESCRIPTOR->ignoreDefaultAudioStream(Z)Z"

View File

@@ -15,9 +15,9 @@ import java.util.logging.Logger
internal const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/twitter/patches/links/ChangeLinkSharingDomainPatch;"
internal val domainNameOption by stringOption(
internal val domainNameOption = stringOption(
key = "domainName",
default = "https://fxtwitter.com",
default = "fxtwitter.com",
title = "Domain name",
description = "The domain name to use when sharing links.",
required = true,
@@ -28,7 +28,7 @@ internal val domainNameOption by stringOption(
// may not allow network connections or the network may be down.
try {
InetAddress.getByName(it)
} catch (e: UnknownHostException) {
} catch (_: UnknownHostException) {
Logger.getLogger(this::class.java.name).warning(
"Host \"$it\" did not resolve to any domain."
)
@@ -38,13 +38,9 @@ internal val domainNameOption by stringOption(
internal val changeLinkSharingDomainResourcePatch = resourcePatch {
execute {
val domainName = domainNameOption!!
val domainName = domainNameOption.value!!
val shareLinkTemplate = if (domainName.endsWith("/")) {
"$domainName%1\$s/status/%2\$s"
} else {
"$domainName/%1\$s/status/%2\$s"
}
val shareLinkTemplate = "https://$domainName/%1\$s/status/%2\$s"
document("res/values/strings.xml").use { document ->
document.documentElement.childNodes.findElementByAttributeValueOrThrow(
@@ -58,7 +54,8 @@ internal val changeLinkSharingDomainResourcePatch = resourcePatch {
@Suppress("unused")
val changeLinkSharingDomainPatch = bytecodePatch(
name = PATCH_NAME_CHANGE_LINK_SHARING_DOMAIN,
description = PATCH_DESCRIPTION_CHANGE_LINK_SHARING_DOMAIN
description = PATCH_DESCRIPTION_CHANGE_LINK_SHARING_DOMAIN,
use = false
) {
dependsOn(
changeLinkSharingDomainResourcePatch,
@@ -72,11 +69,11 @@ val changeLinkSharingDomainPatch = bytecodePatch(
)
)
execute {
val domainName = domainNameOption!!
val domainName by domainNameOption()
execute {
// Replace the domain name in the link sharing extension methods.
linkSharingDomainHelperFingerprint.method.returnEarly(domainName)
linkSharingDomainHelperFingerprint.method.returnEarly(domainName!!)
// Replace the domain name when copying a link with "Copy link" button.
linkBuilderFingerprint.method.addInstructions(

View File

@@ -4,72 +4,75 @@ package app.revanced.patches.youtube.misc.playservice
import app.revanced.patcher.patch.resourcePatch
import app.revanced.util.findPlayStoreServicesVersion
import kotlin.properties.Delegates
// Use notNull delegate so an exception is thrown if these fields are accessed before they are set.
@Deprecated("19.34.42 is the lowest supported version")
var is_19_03_or_greater = false
var is_19_03_or_greater : Boolean by Delegates.notNull()
private set
@Deprecated("19.34.42 is the lowest supported version")
var is_19_04_or_greater = false
var is_19_04_or_greater : Boolean by Delegates.notNull()
private set
@Deprecated("19.34.42 is the lowest supported version")
var is_19_16_or_greater = false
var is_19_16_or_greater : Boolean by Delegates.notNull()
private set
@Deprecated("19.34.42 is the lowest supported version")
var is_19_17_or_greater = false
var is_19_17_or_greater : Boolean by Delegates.notNull()
private set
@Deprecated("19.34.42 is the lowest supported version")
var is_19_18_or_greater = false
var is_19_18_or_greater : Boolean by Delegates.notNull()
private set
@Deprecated("19.34.42 is the lowest supported version")
var is_19_23_or_greater = false
var is_19_23_or_greater : Boolean by Delegates.notNull()
private set
@Deprecated("19.34.42 is the lowest supported version")
var is_19_25_or_greater = false
var is_19_25_or_greater : Boolean by Delegates.notNull()
private set
@Deprecated("19.34.42 is the lowest supported version")
var is_19_26_or_greater = false
var is_19_26_or_greater : Boolean by Delegates.notNull()
private set
@Deprecated("19.34.42 is the lowest supported version")
var is_19_29_or_greater = false
var is_19_29_or_greater : Boolean by Delegates.notNull()
private set
@Deprecated("19.34.42 is the lowest supported version")
var is_19_32_or_greater = false
var is_19_32_or_greater : Boolean by Delegates.notNull()
private set
@Deprecated("19.34.42 is the lowest supported version")
var is_19_33_or_greater = false
var is_19_33_or_greater : Boolean by Delegates.notNull()
private set
@Deprecated("19.34.42 is the lowest supported version")
var is_19_34_or_greater = false
var is_19_34_or_greater : Boolean by Delegates.notNull()
private set
var is_19_35_or_greater = false
var is_19_35_or_greater : Boolean by Delegates.notNull()
private set
var is_19_36_or_greater = false
var is_19_36_or_greater : Boolean by Delegates.notNull()
private set
var is_19_41_or_greater = false
var is_19_41_or_greater : Boolean by Delegates.notNull()
private set
var is_19_43_or_greater = false
var is_19_43_or_greater : Boolean by Delegates.notNull()
private set
var is_19_46_or_greater = false
var is_19_46_or_greater : Boolean by Delegates.notNull()
private set
var is_19_47_or_greater = false
var is_19_47_or_greater : Boolean by Delegates.notNull()
private set
var is_19_49_or_greater = false
var is_19_49_or_greater : Boolean by Delegates.notNull()
private set
var is_20_02_or_greater = false
var is_20_02_or_greater : Boolean by Delegates.notNull()
private set
var is_20_03_or_greater = false
var is_20_03_or_greater : Boolean by Delegates.notNull()
private set
var is_20_05_or_greater = false
var is_20_05_or_greater : Boolean by Delegates.notNull()
private set
var is_20_07_or_greater = false
var is_20_07_or_greater : Boolean by Delegates.notNull()
private set
var is_20_09_or_greater = false
var is_20_09_or_greater : Boolean by Delegates.notNull()
private set
var is_20_10_or_greater = false
var is_20_10_or_greater : Boolean by Delegates.notNull()
private set
var is_20_14_or_greater = false
var is_20_14_or_greater : Boolean by Delegates.notNull()
private set
var is_20_15_or_greater = false
var is_20_15_or_greater : Boolean by Delegates.notNull()
private set
val versionCheckPatch = resourcePatch(

View File

@@ -29,7 +29,7 @@ val forceOriginalAudioPatch = forceOriginalAudioPatch(
)
)
},
fixUseLocalizedAudioTrackFlag = is_20_07_or_greater,
fixUseLocalizedAudioTrackFlag = { is_20_07_or_greater },
mainActivityOnCreateFingerprint = mainActivityOnCreateFingerprint,
subclassExtensionClassDescriptor = EXTENSION_CLASS_DESCRIPTOR,
preferenceScreen = PreferenceScreen.VIDEO,

View File

@@ -24,14 +24,14 @@ Second \"item\" text"</string>
<patch id="layout.branding.baseCustomBrandingPatch">
<string name="revanced_custom_branding_name_title">Nom de l\'application</string>
<!-- Translations of this should be identical to revanced_custom_branding_icon_entry_5 -->
<string name="revanced_custom_branding_name_entry_5">Personnalisé</string>
<string name="revanced_custom_branding_name_entry_5">Personnalisée</string>
<string name="revanced_custom_branding_icon_title">Icône de l\'application</string>
<string name="revanced_custom_branding_icon_entry_1">Original</string>
<string name="revanced_custom_branding_icon_entry_1">Originale</string>
<!-- Translation of this should be identical to revanced_header_logo_entry_5 -->
<string name="revanced_custom_branding_icon_entry_3">ReVanced minimaliste</string>
<string name="revanced_custom_branding_icon_entry_4">ReVanced mis à l\'échelle</string>
<string name="revanced_custom_branding_icon_entry_4">ReVanced mise à l\'échelle</string>
<!-- Translations of this should be identical to revanced_custom_branding_name_entry_5 -->
<string name="revanced_custom_branding_icon_entry_5">Personnalisé</string>
<string name="revanced_custom_branding_icon_entry_5">Personnalisée</string>
</patch>
<patch id="misc.checks.checkEnvironmentPatch">
<string name="revanced_check_environment_failed_title">Les vérifications ont échoué</string>
@@ -1363,7 +1363,7 @@ Limitation : Il se peut que le bouton Retour dans la barre d'outils ne fonction
</patch>
<patch id="layout.miniplayer.miniplayerPatch">
<string name="revanced_miniplayer_screen_title">Lecteur réduit</string>
<string name="revanced_miniplayer_screen_summary">Modifier le style du lecteur réduit à l\'intérieur de l\'application</string>
<string name="revanced_miniplayer_screen_summary">Modifiez le style du lecteur réduit intégré à l\'application</string>
<string name="revanced_miniplayer_type_title">Type de lecteur réduit</string>
<string name="revanced_miniplayer_type_entry_0">Désactivé</string>
<string name="revanced_miniplayer_type_entry_1">Par défaut</string>
@@ -1623,11 +1623,11 @@ Limitations :
<string name="revanced_spoof_video_streams_av1_title">Autoriser Android VR AV1</string>
<string name="revanced_spoof_video_streams_av1_summary_on">"Le codec vidéo est AVC (H.264), VP9 ou AV1
La lecture peut saccader ou perdre des images"</string>
La lecture peut être saccadée et des images peuvent être perdues"</string>
<string name="revanced_spoof_video_streams_av1_summary_off">Le codec vidéo est AVC (H.264) ou VP9</string>
<string name="revanced_spoof_video_streams_av1_user_dialog_message">"L'activation de ce paramètre peut utiliser le décodage AV1 logiciel.
<string name="revanced_spoof_video_streams_av1_user_dialog_message">"L'activation de ce paramètre permet l'utilisation du décodage AV1 logiciel.
La lecture vidéo avec AV1 peut saccader ou perdre des images."</string>
La lecture vidéo avec AV1 peut être saccadée et des images peuvent être perdues."</string>
<string name="revanced_spoof_video_streams_about_title">Effets secondaires de la falsification</string>
<string name="revanced_spoof_video_streams_about_experimental">• Client expérimental, peut cesser de fonctionner à tout moment</string>
<string name="revanced_spoof_video_streams_about_playback_failure">• Les vidéos sont susceptibles de s\'arrêter à 1:00, ou de ne pas être disponibles dans certaines régions</string>

View File

@@ -6,7 +6,8 @@
android:viewportWidth="24"
android:viewportHeight="24">
<!-- Path must be white to ensure the icon appears white in the expanded status bar panel. -->
<path
android:fillColor="#000000"
android:fillColor="#FFFFFF"
android:pathData="M4.03516,3 C3.80859,3,3.59375,3.11719,3.46875,3.30469 C3.34375,3.49609,3.32422,3.73828,3.41406,3.94922 C4.87109,7.27344,9.71875,18.3359,10.707,20.5938 C10.8164,20.8398,11.0586,21,11.3281,21 L12.6719,21 C12.9375,21,13.1836,20.8398,13.293,20.5938 C14.2813,18.3359,19.1289,7.27344,20.5859,3.94922 C20.6758,3.73828,20.6563,3.49609,20.5313,3.30469 C20.4063,3.11719,20.1914,3,19.9648,3 L19.0898,3 C18.8984,3,18.7227,3.11328,18.6445,3.28906 C17.875,5.04688,13.8008,14.3203,12.4414,17.418 C12.3672,17.5938,12.1914,17.707,12,17.707 C11.8086,17.707,11.6328,17.5938,11.5586,17.418 C10.1992,14.3203,6.125,5.04688,5.35547,3.28906 C5.27734,3.11328,5.10156,3,4.91016,3 Z M7.47266,3 C7.26563,3,7.07422,3.10938,6.97266,3.28906 C6.86719,3.46875,6.86719,3.69141,6.97266,3.87109 C8.02344,5.69141,10.4453,9.88672,11.4961,11.7109 C11.6016,11.8906,11.793,12,12,12 C12.207,12,12.3984,11.8906,12.5039,11.7109 C13.5547,9.88672,15.9766,5.69141,17.0273,3.87109 C17.1328,3.69141,17.1328,3.46875,17.0273,3.28906 C16.9258,3.10938,16.7344,3,16.5273,3 Z M7.47266,3" />
</vector>

View File

@@ -6,7 +6,8 @@
android:viewportWidth="24"
android:viewportHeight="24">
<!-- Path must be white to ensure the icon appears white in the expanded status bar panel. -->
<path
android:fillColor="#000000"
android:fillColor="#FFFFFF"
android:pathData="M4.03516,3 C3.80859,3,3.59375,3.11719,3.46875,3.30469 C3.34375,3.49609,3.32422,3.73828,3.41406,3.94922 C4.87109,7.27344,9.71875,18.3359,10.707,20.5938 C10.8164,20.8398,11.0586,21,11.3281,21 L12.6719,21 C12.9375,21,13.1836,20.8398,13.293,20.5938 C14.2813,18.3359,19.1289,7.27344,20.5859,3.94922 C20.6758,3.73828,20.6563,3.49609,20.5313,3.30469 C20.4063,3.11719,20.1914,3,19.9648,3 L19.0898,3 C18.8984,3,18.7227,3.11328,18.6445,3.28906 C17.875,5.04688,13.8008,14.3203,12.4414,17.418 C12.3672,17.5938,12.1914,17.707,12,17.707 C11.8086,17.707,11.6328,17.5938,11.5586,17.418 C10.1992,14.3203,6.125,5.04688,5.35547,3.28906 C5.27734,3.11328,5.10156,3,4.91016,3 Z M7.47266,3 C7.26563,3,7.07422,3.10938,6.97266,3.28906 C6.86719,3.46875,6.86719,3.69141,6.97266,3.87109 C8.02344,5.69141,10.4453,9.88672,11.4961,11.7109 C11.6016,11.8906,11.793,12,12,12 C12.207,12,12.3984,11.8906,12.5039,11.7109 C13.5547,9.88672,15.9766,5.69141,17.0273,3.87109 C17.1328,3.69141,17.1328,3.46875,17.0273,3.28906 C16.9258,3.10938,16.7344,3,16.5273,3 Z M7.47266,3" />
</vector>