From 04057c6e5629d0f731a0e82fc95317c12755e32e Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 18 Sep 2025 06:16:27 +0000 Subject: [PATCH 01/11] chore: Release v5.40.0-dev.2 [skip ci] # [5.40.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.40.0-dev.1...v5.40.0-dev.2) (2025-09-18) ### Features * **Instagram:** Add `Limit feed to followed profiles` patch ([#5908](https://github.com/ReVanced/revanced-patches/issues/5908)) ([8ba9a19](https://github.com/ReVanced/revanced-patches/commit/8ba9a19ade24c5fe9bd6d4e49772b7663522780e)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 684d03bd3..0245fab25 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [5.40.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.40.0-dev.1...v5.40.0-dev.2) (2025-09-18) + + +### Features + +* **Instagram:** Add `Limit feed to followed profiles` patch ([#5908](https://github.com/ReVanced/revanced-patches/issues/5908)) ([8ba9a19](https://github.com/ReVanced/revanced-patches/commit/8ba9a19ade24c5fe9bd6d4e49772b7663522780e)) + # [5.40.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.39.1-dev.1...v5.40.0-dev.1) (2025-09-17) diff --git a/gradle.properties b/gradle.properties index 9ea70c171..17f7fb3a1 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.40.0-dev.1 +version = 5.40.0-dev.2 From 7857876551e3efc3e014fd963143991db42b62f1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 19 Sep 2025 19:40:03 +0400 Subject: [PATCH 02/11] chore: Sync translations (#5933) --- .../addresources/values-de-rDE/strings.xml | 148 +++++++++--------- .../addresources/values-fr-rFR/strings.xml | 22 +-- .../addresources/values-ja-rJP/strings.xml | 16 +- .../addresources/values-ko-rKR/strings.xml | 2 +- 4 files changed, 95 insertions(+), 93 deletions(-) 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 4725708e2..b1cb60cfe 100644 --- a/patches/src/main/resources/addresources/values-de-rDE/strings.xml +++ b/patches/src/main/resources/addresources/values-de-rDE/strings.xml @@ -61,7 +61,7 @@ Um neue Sprachen zu übersetzen, besuchen Sie translate.revanced.app" ReVanced-Einstellungen importieren/exportieren Sie verwenden ReVanced-Patches Version <i>%s</i> - Notiz + Hinweis Diese Version ist eine Vorabversion, es kann zu unerwarteten Problemen kommen Offizielle Links - \'Benachrichtigungen\' Button ausblenden - Schaltfläche \"Benachrichtige mich\" ist ausgeblendet + Schaltfläche \"Benachrichtige mich\" ausblenden + Schaltfläche \"Benachrichtige mich\" wird ausgeblendet Schaltfläche \"Benachrichtige mich\" wird angezeigt Playables ausblenden - Spiele sind ausgeblendet - Spielbare werden angezeigt + Playables sind ausgeblendet + Playables werden angezeigt \'Mehr anzeigen\' Button ausblenden Schaltfläche \"Mehr anzeigen\" in den Suchergebnissen ist ausgeblendet Schaltfläche \"Mehr anzeigen\" in den Suchergebnissen wird angezeigt Umfragen ausblenden - Umfragen sind ausgeblendet + Umfragen werden ausgeblendet Umfragen werden angezeigt Ticket-Reihe ausblenden Ticket-Reihe ist ausgeblendet @@ -421,14 +423,14 @@ Diese Funktion ist nur für ältere Geräte verfügbar" Vollbild-Werbung ausblenden funktioniert nur mit älteren Geräten Allgemeine Werbung ausblenden - Allgemeine Anzeigen sind ausgeblendet - Allgemeine Anzeigen werden angezeigt + Allgemeine Werbung werden ausgeblendet + Allgemeine Werbung werden angezeigt Merchandise-Banner ausblenden Merchandise-Banner sind ausgeblendet Warenbanner werden angezeigt - Bezahltes Werbe-Label ausblenden - Bezahltes Werbelabel ist ausgeblendet - Bezahltes Werbe-Label wird angezeigt + \"Enthält bezahlte Werbung\"-Hinweis ausblenden + \"Enthält bezahlte Werbung\"-Hinweis wird ausgeblendet + \"Enthält bezahlte Werbung\"-Hinweis wird angezeigt Selbst gesponserte Karten ausblenden Selbst gesponserte Karten sind ausgeblendet Selbstgesponserte Karten werden angezeigt @@ -1002,22 +1004,22 @@ Diese Funktion funktioniert am besten mit einer Videoqualität von 720p oder nie SponsorBlock aktivieren - SponsorBlock ist ein Crowdsourcing-System zum Überspringen von nervigen Teilen von YouTube-Videos + SponsorBlock ist ein Crowdsourcing-System zum Überspringen von nervigen Segmenten von YouTube-Videos Darstellung - Stimmen-Button anzeigen - Segmentstimmen Button wird angezeigt - Segmentstimmen Button wird nicht angezeigt - Quadratisches Layout verwenden + Like-Button anzeigen + Segmentbewertungs-Button wird angezeigt + Segmentbewertungs-Button wird nicht angezeigt + Quadratische Bedienelemente verwenden Schaltflächen und Steuerelemente sind quadratisch Schaltflächen und Bedienelemente sind abgerundet Kompakten Überspringen-Button verwenden - Überspringe Taste für minimale Breite - Überspringen-Button für beste Darstellung gestaltet + Überspringen-Button wird mit minimale Breite angezeigt + Überspringen-Button wird mit bestem Aussehen angezeigt Überspringen-Button automatisch ausblenden - Überspringe Taste verbirgt sich nach ein paar Sekunden - Die Schaltfläche \"Überspringen\" wird für das gesamte Segment angezeigt - Dauer des Überspringen-Buttons + Überspringen-Button wird nach ein paar Sekunden ausgeblendet + Überspringen-Button wird während des ganzen Segmentes angezeigt + Anzeigedauer des Überspringen-Buttons Wie lange die Schaltflächen zum Überspringen und zum Hervorheben angezeigt werden sollen, bevor sie automatisch ausgeblendet werden Toast zum Rückgängigmachen des Überspringens anzeigen Ein Toast wird angezeigt, wenn ein Segment automatisch übersprungen wird. Tippen Sie auf die Toast-Benachrichtigung, um das Überspringen rückgängig zu machen @@ -1082,25 +1084,25 @@ Ihre Benutzer-ID ist wie ein Passwort und sollte niemals weitergegeben werden. Nicht wieder anzeigen Segmentverhalten ändern Sponsor - Bezahlte Förderung, bezahlte Empfehlungen und direkte Werbung. Nicht für Selbstwerbung oder kostenlose Shoutouts an Ursachen/Webseiten/Produkte, die ihnen gefallen - Unbezahlt/Eigenwerbung + Bezahlte Werbung, bezahlte Empfehlungen und direkte Werbung. Nicht für Eigenwerbung oder kostenlose Shoutouts an Zwecke/Webseiten/Produkte, die ihnen gefallen + Unbezahlte oder Eigenwerbung Ähnlich wie Sponsor, jedoch für unbezahlte oder Eigenwerbung. Enthält Abschnitte über Merchandise, Spenden oder Informationen darüber, mit wem sie zusammengearbeitet haben Interaktionserinnerung (Abonnieren) - Eine kurze Erinnerung, sie in der Mitte des Inhalts zu zitieren, zu abonnieren oder zu verfolgen. Wenn es lang ist oder etwas Konkretes ist, sollte es stattdessen unter Selbstförderung stehen - Hervorheben + Eine kurze Erinnerung, sie in der Mitte des Inhalts zu liken, abonnieren oder folgen. Wenn er lang ist oder es um etwas Bestimmtes geht, sollte es stattdessen als Eigenwerbung gekennzeichnet sein + Highlight Der Teil des Videos, nach dem die meisten Menschen suchen Unterbrechung/Introanimation - Ein Intervall ohne aktuellen Inhalt. Kann eine Pause, ein statischer Rahmen oder eine Wiederholung der Animation sein. Enthält keine Übergänge mit Informationen - Endkarten / Credits - Credits oder wenn die YouTube-Endkarten erscheinen. Nicht für Schlussfolgerungen mit Informationen + Ein Intervall ohne aktuellen Inhalt. Kann eine Pause, ein statischer Frame oder eine wiederholende Animation sein. Enthält keine Übergänge mit Informationen + Endkarte / Credits + Credits oder wenn die YouTube-Endkarten erscheinen. Nicht für Fazite mit Informationen Hook / Begrüßungen - Erzählte Trailer für das kommende Video, Begrüßungen und Verabschiedungen. Enthält keine Abschnitte, die zusätzlichen Inhalt hinzufügen + Erzählte Trailer für das kommende Video, Begrüßungen und Verabschiedungen. Enthält keine Segmente, die zusätzlichen Inhalt hinzufügen Vorschau / Rückblick - Sammlung von Clips, die zeigen, was im Video oder in anderen Videos einer Serie vor sich geht, wo alle Informationen andernorts wiederholt werden + Sammlung von Clips, die zeigen, was im Video oder in anderen Videos einer Serie passiert ist, wo alle Informationen andernorts wiederholt werden Abschweifung / Witze - Tangentiale Szenen oder Witze, die nicht erforderlich sind, um den Hauptinhalt des Videos zu verstehen. Dies sollte keine Segmente enthalten, die Kontext oder Hintergrunddetails liefern - Musik: Nicht-Musik-Sektion - Nur für die Verwendung in Musikvideos. Abschnitte von Musikvideos ohne Musik, die noch nicht von einer anderen Kategorie abgedeckt sind + Tangentiale Szenen oder Witze, die nicht erforderlich sind, um den Hauptinhalt des Videos zu verstehen. Enthält keine Segmente, die Kontext oder Hintergrunddetails liefern + Musikvideos: Nicht-Musik-Passagen + Nur für die Verwendung in Musikvideos. Abschnitte von Musikvideos ohne Musik, die noch nicht von einer anderen Kategorie abgedeckt werden Überspringen Hervorheben Sponsor überspringen @@ -1375,29 +1377,29 @@ Durch Aktivieren dieser Option können fehlende Bilder behoben werden, die in ei Abos-Tab - Tab + Mein YouTube-Tab Player-Wiedergabelisten & Empfehlungen Suchergebnisse - Original-Miniaturansichten - Pfeil & Original-Miniaturansichten - Pfeil & immer noch erfasst - Noch Aufnahmen - "DeArrow bietet von der Community bereitgestellte Miniaturansichten für YouTube-Videos. Diese Miniaturansichten sind oft relevanter als die von YouTube bereitgestellten. + Original-Vorschaubilder + Pfeil & Original-Vorschaubilder + Pfeil & Standbild + Standbild + "DeArrow bietet von der Community bereitgestellte Vorschaubilder für YouTube-Videos. Diese Vorschaubilder sind oft relevanter als die von YouTube bereitgestellten. -Wenn diese Option aktiviert ist, werden Video-URLs an den API-Server gesendet und keine anderen Daten werden gesendet. Wenn ein Video keine DeArrow-Miniaturansichten hat, werden die Original- oder Still-Captures angezeigt. +Wenn diese Option aktiviert ist, werden Video-URLs an den API-Server gesendet und keine anderen Daten werden gesendet. Wenn ein Video keine DeArrow-Vorschaubilder hat, wird das originale Vorschaubild oder ein Standbild angezeigt. Tippen Sie hier, um mehr über DeArrow zu erfahren" - Einen Toast anzeigen, wenn die API nicht verfügbar ist - Toast wird angezeigt, wenn der Pfeil nicht verfügbar ist - Toast wird nicht angezeigt, wenn der Pfeil nicht verfügbar ist + Ein Toast anzeigen, wenn die API nicht verfügbar ist + Toast wird angezeigt, wenn DeArrow nicht verfügbar ist + Toast wird nicht angezeigt, wenn DeArrow nicht verfügbar ist DeArrow API-Endpunkt Die URL des Cache Endpunkts der DeArrow Thumbnails - Noch Videoaufnahmen - Die Aufnahmen werden immer noch von Anfang an / Mitte / Ende jedes Videos übernommen. Diese Bilder sind in YouTube eingebaut und es wird keine externe API verwendet - Schnelle Stand-Captures verwenden - Die Verwendung von mittlerer Qualität bleibt erhalten. Die Vorschaubilder werden schneller geladen, aber Live-Streams, unveröffentlichte oder sehr alte Videos können leere Thumbnails anzeigen - Verwendung hoher Qualität immer noch Captures - Videozeit für Aufnahmen von + Standbilder + Die Standbilder werden vom Anfang / Mitte / Ende jedes Videos erstellt. Diese Bilder stammen von YouTube und es wird keine externe API verwendet + Schnelle Standbilder verwenden + Standbilder in mittlerer Qualität verwenden. Die Vorschaubilder werden schneller geladen, aber Livestreams, unveröffentlichte oder sehr alte Videos können leere Vorschaubilder anzeigen. + Standbilder in hoher Qualität verwenden + Videozeitpunkt von dem Standbilder aufgenommen werden Beginn des Videos Mitte des Videos Ende des Videos 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 1ff7e441a..b856f248a 100644 --- a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml +++ b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml @@ -1163,20 +1163,20 @@ Il existe déjà." Voter pour Voter contre Modifier la catégorie - Il n\'y a pas de segments où voter + Il n\'y a pas de segments sur lesquels voter %1$s – %2$s Choisissez la catégorie du segment - La catégorie est désactivée dans les paramètres. Activez la catégorie pour soumettre. + Catégorie désact. ds paramètres. Activer pr soumettre. Nouveau segment SponsorBlock - Définir %s comme début ou fin du nouveau segment ? + Définir %s comme début ou fin d\'un nouveau segment ? Début Fin - Maint. + Maintenant Instant de début du segment Instant de fin du segment - Est-ce que ces valeurs sont correctes ? - "Le segment dure de + Ces valeurs sont-elles correctes ? + "Le segment s'étend de %1$s à @@ -1184,10 +1184,10 @@ Il existe déjà." (%3$s) -Prêt à soumettre ?" - Le début doit être avant la fin +Prêt à le soumettre ?" + Le début doit précéder la fin Marquez d\'abord deux emplacements sur la barre de progression - Regardez la vidéo au moment du segment, et assurez-vous qu\'il est ignoré de manière fluide + Prévisualisez segment + contrôlez fluidité du saut Modifier la durée du segment manuellement Voulez-vous modifier le début ou la fin du segment ? Temps fourni invalide @@ -1209,7 +1209,7 @@ Prêt à soumettre ?" Cela représente <b>%s</b> de leur vie.<br>Appuyez ici pour voir le classement Vous avez passé <b>%s</b> segments Pour un total de <b>%s</b> - Réinitialiser le compteur de segments ignorés ? + Réinitialiser le compteur de segments passés ? %1$s heures et %2$s minutes %1$s minutes et %2$s secondes %s secondes @@ -1478,7 +1478,7 @@ Activer cette option peut déverrouiller des qualités vidéo supérieures"Utilisation de la langue audio d\'origine Utilisation de l\'audio par défaut - Pour utiliser cette fonctionnalité, changez \"Simuler les flux vidéo\" pour tout client sauf Android Studio + Pour utiliser cette fonctionnalité, définissez \"Falsifier les flux vidéo\" sur n\'importe quel client, sauf Android Studio 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 8128bb2f8..0561b1bba 100644 --- a/patches/src/main/resources/addresources/values-ja-rJP/strings.xml +++ b/patches/src/main/resources/addresources/values-ja-rJP/strings.xml @@ -624,9 +624,9 @@ YouTube Premium ユーザーの場合、この設定は必要ない可能性が クリップボタンは表示されません クリップボタンは表示されます - 「ショップ」を非表示 - ショップボタンは表示されません - ショップボタンは表示されます + 購入ボタンを非表示 + 購入ボタンは表示されません + 購入ボタンは表示されます 「保存」を非表示にする 「保存」ボタンは表示されません @@ -1314,12 +1314,12 @@ Automotive レイアウト 丸角を有効化 ミニプレーヤーの角は丸角です ミニプレーヤーの角は直角です - 「ダブルタップとピンチでサイズ変更」を有効化 - "「ダブルタップとピンチでサイズ変更」は有効です + ダブルタップとピンチによるサイズ変更を有効化 + "ダブルタップとピンチによるサイズ変更は有効です • ダブルタップすると、ミニプレーヤーのサイズが大きくなる • もう一度ダブルタップすると、元のサイズに戻る" - 「 ダブルタップとピンチでサイズ変更」は無効です + ダブルタップとピンチによるサイズ変更は無効です ドラッグ&ドロップを有効化 "ドラッグ&ドロップは有効です @@ -1479,7 +1479,7 @@ Automotive レイアウト オリジナルの音声トラック (言語) を使用します\n\nオートダビングを含む吹き替えの音声トラックは使用しません アプリが選択した音声トラック (言語) を使用します\n\nオートダビングを含む吹き替えの音声トラックを使用する場合があります - この機能を使用するには、「動画ストリームを偽装」のクライアントを Android Studio を除く任意のクライアントに変更してください + この機能を使用するには、「動画ストリームを偽装」のクライアントを Android Studio 以外の任意のクライアントに変更してください @@ -1585,7 +1585,7 @@ Automotive レイアウト 常時リピートを有効化 常時リピートは有効です\n\nリピート設定が保存され常時適用されます - 常時リピートは無効です\n\nリピート設定は保存されません + 常時リピートは無効です\n\nリピート設定は保存されず毎回リセットされます カテゴリバーを非表示 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 bb3d0a511..8925347bf 100644 --- a/patches/src/main/resources/addresources/values-ko-rKR/strings.xml +++ b/patches/src/main/resources/addresources/values-ko-rKR/strings.xml @@ -1484,7 +1484,7 @@ DeArrow에 대해 자세히 알아보려면 여기를 탭하세요" 원본 오디오 스트림 언어를 사용 중입니다 기본 오디오 스트림 언어를 사용 중입니다 - 이 기능을 사용하려면, \'동영상 스트림 변경하기\'를 Android Studio를 제외한 다른 클라이언트로 변경하세요. + 이 기능을 사용하려면, \'동영상 스트림 변경하기\'에서 기본 클라이언트를 Android Studio를 제외한 다른 클라이언트로 변경하세요 From 767f1e3695327bdbc4daea8b50a80d4c0a38456a Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Fri, 19 Sep 2025 19:40:32 +0400 Subject: [PATCH 03/11] fix(Instagram - Limit feed to followed profiles): Change patch to default off Co-authored-by: brosssh <44944126+brosssh@users.noreply.github.com> --- .../patches/instagram/feed/LimitFeedToFollowedProfiles.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/patches/src/main/kotlin/app/revanced/patches/instagram/feed/LimitFeedToFollowedProfiles.kt b/patches/src/main/kotlin/app/revanced/patches/instagram/feed/LimitFeedToFollowedProfiles.kt index 3ded4c91a..e7af0466c 100644 --- a/patches/src/main/kotlin/app/revanced/patches/instagram/feed/LimitFeedToFollowedProfiles.kt +++ b/patches/src/main/kotlin/app/revanced/patches/instagram/feed/LimitFeedToFollowedProfiles.kt @@ -15,6 +15,7 @@ internal const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/instagr val limitFeedToFollowedProfiles = bytecodePatch( name = "Limit feed to followed profiles", description = "Filters the home feed to display only content from profiles you follow.", + use = false ) { compatibleWith("com.instagram.android") From 729997ec3ea61eb2fd907e9e03847b9c56f788f6 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Fri, 19 Sep 2025 15:43:08 +0000 Subject: [PATCH 04/11] chore: Release v5.40.0-dev.3 [skip ci] # [5.40.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.40.0-dev.2...v5.40.0-dev.3) (2025-09-19) ### Bug Fixes * **Instagram - Limit feed to followed profiles:** Change patch to default off ([767f1e3](https://github.com/ReVanced/revanced-patches/commit/767f1e3695327bdbc4daea8b50a80d4c0a38456a)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0245fab25..0b5b768ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [5.40.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.40.0-dev.2...v5.40.0-dev.3) (2025-09-19) + + +### Bug Fixes + +* **Instagram - Limit feed to followed profiles:** Change patch to default off ([767f1e3](https://github.com/ReVanced/revanced-patches/commit/767f1e3695327bdbc4daea8b50a80d4c0a38456a)) + # [5.40.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.40.0-dev.1...v5.40.0-dev.2) (2025-09-18) diff --git a/gradle.properties b/gradle.properties index 17f7fb3a1..6fda42af7 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.40.0-dev.2 +version = 5.40.0-dev.3 From 5c7c8b536416ec53cd98f7d59d11850aa1b70f11 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Sat, 20 Sep 2025 14:36:15 +0400 Subject: [PATCH 05/11] fix(Spoof video streams): Resolve occasional playback stuttering Code adapted from: https://github.com/inotia00/revanced-patches/commit/2cf9db66ac3f241d74cbbe2579961f4e7c57f8ae https://github.com/inotia00/revanced-patches/commit/50d9c60374d8c2ee4f8034b3cbcb1d68e59b6a84 --- .../shared/spoof/SpoofVideoStreamsPatch.java | 39 +++++++- .../patches/shared/misc/spoof/Fingerprints.kt | 19 ++-- .../misc/spoof/SpoofVideoStreamsPatch.kt | 89 +++++++++++++++++-- 3 files changed, 132 insertions(+), 15 deletions(-) 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 f11c7ea26..a5f69ba30 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 @@ -97,6 +97,35 @@ public class SpoofVideoStreamsPatch { return playerRequestUri; } + /** + * Injection point. + * + * Blocks /get_watch requests by returning an unreachable URI. + * /att/get requests are used to obtain a PoToken challenge. + * See: botGuardScript.js#L15 + *

+ * Since the Spoof streaming data patch was implemented because a valid PoToken cannot be obtained, + * Blocking /att/get requests are not a problem. + */ + public static String blockGetAttRequest(String originalUrlString) { + if (SPOOF_STREAMING_DATA) { + try { + var originalUri = Uri.parse(originalUrlString); + String path = originalUri.getPath(); + + if (path != null && path.contains("att/get")) { + Logger.printDebug(() -> "Blocking 'att/get' by returning internet connection check uri"); + + return INTERNET_CONNECTION_CHECK_URI_STRING; + } + } catch (Exception ex) { + Logger.printException(() -> "blockGetAttRequest failure", ex); + } + } + + return originalUrlString; + } + /** * Injection point. *

@@ -130,7 +159,7 @@ public class SpoofVideoStreamsPatch { /** * Injection point. - * Only invoked when playing a livestream on an iOS client. + * Only invoked when playing a livestream on an Apple client. */ public static boolean fixHLSCurrentTime(boolean original) { if (!SPOOF_STREAMING_DATA) { @@ -139,6 +168,14 @@ public class SpoofVideoStreamsPatch { return false; } + /* + * Injection point. + * Fix audio stuttering in YouTube Music. + */ + public static boolean disableSABR() { + return SPOOF_STREAMING_DATA; + } + /** * Injection point. * Turns off a feature flag that interferes with spoofing. diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/Fingerprints.kt index ed2f86387..7c42648c7 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/Fingerprints.kt @@ -1,12 +1,9 @@ package app.revanced.patches.shared.misc.spoof import app.revanced.patcher.fingerprint -import app.revanced.util.getReference -import app.revanced.util.indexOfFirstInstruction import app.revanced.util.literal import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -import com.android.tools.smali.dexlib2.iface.reference.MethodReference internal val buildInitPlaybackRequestFingerprint = fingerprint { returns("Lorg/chromium/net/UrlRequest\$Builder;") @@ -40,10 +37,7 @@ internal val buildRequestFingerprint = fingerprint { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) returns("Lorg/chromium/net/UrlRequest") // UrlRequest; or UrlRequest$Builder; custom { methodDef, _ -> - if (methodDef.indexOfFirstInstruction { - val reference = getReference() - reference?.name == "newUrlRequestBuilder" - } < 0) { + if (indexOfNewUrlRequestBuilderInstruction(methodDef) < 0) { return@custom false } @@ -142,6 +136,17 @@ internal val hlsCurrentTimeFingerprint = fingerprint { } } +internal const val DISABLED_BY_SABR_STREAMING_URI_STRING = "DISABLED_BY_SABR_STREAMING_URI" + +internal val mediaFetchEnumConstructorFingerprint = fingerprint { + returns("V") + strings( + "ENABLED", + "DISABLED_FOR_PLAYBACK", + DISABLED_BY_SABR_STREAMING_URI_STRING + ) +} + internal val nerdsStatsVideoFormatBuilderFingerprint = fingerprint { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) returns("Ljava/lang/String;") diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/SpoofVideoStreamsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/SpoofVideoStreamsPatch.kt index 26b80a2f9..40746553f 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/SpoofVideoStreamsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/SpoofVideoStreamsPatch.kt @@ -5,23 +5,28 @@ 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.extensions.InstructionExtensions.instructions +import app.revanced.patcher.fingerprint import app.revanced.patcher.patch.BytecodePatchBuilder import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.patch.bytecodePatch +import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable import app.revanced.patches.all.misc.resources.addResources import app.revanced.patches.all.misc.resources.addResourcesPatch import app.revanced.util.findFreeRegister import app.revanced.util.findInstructionIndicesReversedOrThrow import app.revanced.util.getReference +import app.revanced.util.indexOfFirstInstruction import app.revanced.util.indexOfFirstInstructionOrThrow import app.revanced.util.insertLiteralOverride import app.revanced.util.returnEarly import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.builder.MutableMethodImplementation +import com.android.tools.smali.dexlib2.iface.Method 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.instruction.ReferenceInstruction import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction import com.android.tools.smali.dexlib2.iface.reference.FieldReference import com.android.tools.smali.dexlib2.iface.reference.MethodReference @@ -31,6 +36,9 @@ import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter internal const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/shared/spoof/SpoofVideoStreamsPatch;" +private lateinit var buildRequestMethod: MutableMethod +private var buildRequestMethodUrlRegister = -1 + fun spoofVideoStreamsPatch( block: BytecodePatchBuilder.() -> Unit = {}, fixMediaFetchHotConfigChanges: BytecodePatchBuilder.() -> Boolean = { false }, @@ -91,18 +99,17 @@ fun spoofVideoStreamsPatch( // region Get replacement streams at player requests. buildRequestFingerprint.method.apply { - val newRequestBuilderIndex = indexOfFirstInstructionOrThrow { - opcode == Opcode.INVOKE_VIRTUAL && - getReference()?.name == "newUrlRequestBuilder" - } - val urlRegister = getInstruction(newRequestBuilderIndex).registerD - val freeRegister = findFreeRegister(newRequestBuilderIndex, urlRegister) + buildRequestMethod = this + + val newRequestBuilderIndex = indexOfNewUrlRequestBuilderInstruction(this) + buildRequestMethodUrlRegister = getInstruction(newRequestBuilderIndex).registerD + val freeRegister = findFreeRegister(newRequestBuilderIndex, buildRequestMethodUrlRegister) addInstructions( newRequestBuilderIndex, """ move-object v$freeRegister, p1 - invoke-static { v$urlRegister, v$freeRegister }, $EXTENSION_CLASS_DESCRIPTOR->fetchStreams(Ljava/lang/String;Ljava/util/Map;)V + invoke-static { v$buildRequestMethodUrlRegister, v$freeRegister }, $EXTENSION_CLASS_DESCRIPTOR->fetchStreams(Ljava/lang/String;Ljava/util/Map;)V """ ) } @@ -187,6 +194,21 @@ fun spoofVideoStreamsPatch( // endregion + // region block getAtt request + + buildRequestMethod.apply { + val insertIndex = indexOfNewUrlRequestBuilderInstruction(this) + + addInstructions( + insertIndex, """ + invoke-static { v$buildRequestMethodUrlRegister }, $EXTENSION_CLASS_DESCRIPTOR->blockGetAttRequest(Ljava/lang/String;)Ljava/lang/String; + move-result-object v$buildRequestMethodUrlRegister + """ + ) + } + + // endregion + // region Remove /videoplayback request body to fix playback. // It is assumed, YouTube makes a request with a body tuned for Android. // Requesting streams intended for other platforms with a body tuned for Android could be the cause of 400 errors. @@ -243,6 +265,50 @@ fun spoofVideoStreamsPatch( // endregion + // region Disable SABR playback. + // If SABR is disabled, it seems 'MediaFetchHotConfig' may no longer need an override (not confirmed). + + val (mediaFetchEnumClass, sabrFieldReference) = with(mediaFetchEnumConstructorFingerprint.method) { + val stringIndex = mediaFetchEnumConstructorFingerprint.stringMatches!!.first { + it.string == DISABLED_BY_SABR_STREAMING_URI_STRING + }.index + + val mediaFetchEnumClass = definingClass + val sabrFieldIndex = indexOfFirstInstructionOrThrow(stringIndex) { + opcode == Opcode.SPUT_OBJECT && + getReference()?.type == mediaFetchEnumClass + } + + Pair( + mediaFetchEnumClass, + getInstruction(sabrFieldIndex).reference + ) + } + + fingerprint { + returns(mediaFetchEnumClass) + opcodes( + Opcode.SGET_OBJECT, + Opcode.RETURN_OBJECT, + ) + custom { method, _ -> + !method.parameterTypes.isEmpty() + } + }.method.addInstructionsWithLabels( + 0, + """ + invoke-static { }, $EXTENSION_CLASS_DESCRIPTOR->disableSABR()Z + move-result v0 + if-eqz v0, :ignore + sget-object v0, $sabrFieldReference + return-object v0 + :ignore + nop + """ + ) + + // endregion + // region turn off stream config replacement feature flag. if (fixMediaFetchHotConfigChanges()) { @@ -271,3 +337,12 @@ fun spoofVideoStreamsPatch( executeBlock() } } + +internal fun indexOfNewUrlRequestBuilderInstruction(method: Method) = method.indexOfFirstInstruction { + opcode == Opcode.INVOKE_VIRTUAL && getReference().toString() == + "Lorg/chromium/net/CronetEngine;" + + "->newUrlRequestBuilder(" + + "Ljava/lang/String;Lorg/chromium/net/UrlRequest${'$'}Callback;" + + "Ljava/util/concurrent/Executor;" + + ")Lorg/chromium/net/UrlRequest${'$'}Builder;" +} From 0d15c5f3385a6dbf5596766d508cde93492856a1 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 20 Sep 2025 10:39:29 +0000 Subject: [PATCH 06/11] chore: Release v5.40.0-dev.4 [skip ci] # [5.40.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.40.0-dev.3...v5.40.0-dev.4) (2025-09-20) ### Bug Fixes * **Spoof video streams:** Resolve occasional playback stuttering ([5c7c8b5](https://github.com/ReVanced/revanced-patches/commit/5c7c8b536416ec53cd98f7d59d11850aa1b70f11)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b5b768ac..294104ff4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [5.40.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.40.0-dev.3...v5.40.0-dev.4) (2025-09-20) + + +### Bug Fixes + +* **Spoof video streams:** Resolve occasional playback stuttering ([5c7c8b5](https://github.com/ReVanced/revanced-patches/commit/5c7c8b536416ec53cd98f7d59d11850aa1b70f11)) + # [5.40.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.40.0-dev.2...v5.40.0-dev.3) (2025-09-19) diff --git a/gradle.properties b/gradle.properties index 6fda42af7..bcf124a36 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.40.0-dev.3 +version = 5.40.0-dev.4 From 651d3580967a252b57cbf4afbba02d6a4601ccfe Mon Sep 17 00:00:00 2001 From: MarcaD <152095496+MarcaDian@users.noreply.github.com> Date: Sat, 20 Sep 2025 14:26:14 +0300 Subject: [PATCH 07/11] feat(YouTube Music): Add `Hide cast button` and `Navigation bar` patches (#5934) --- .../music/patches/HideCastButtonPatch.java | 24 ++++ .../music/patches/NavigationBarPatch.java | 74 ++++++++++++ .../extension/music/settings/Settings.java | 8 ++ patches/api/patches.api | 8 ++ .../music/layout/castbutton/Fingerprints.kt | 17 +++ .../music/layout/castbutton/HideCastButton.kt | 70 +++++++++++ .../layout/navigationbar/Fingerprints.kt | 36 ++++++ .../navigationbar/NavigationBarPatch.kt | 110 ++++++++++++++++++ .../upgradebutton/HideUpgradeButtonPatch.kt | 2 +- .../resources/addresources/values/strings.xml | 35 ++++++ 10 files changed, 383 insertions(+), 1 deletion(-) create mode 100644 extensions/music/src/main/java/app/revanced/extension/music/patches/HideCastButtonPatch.java create mode 100644 extensions/music/src/main/java/app/revanced/extension/music/patches/NavigationBarPatch.java create mode 100644 patches/src/main/kotlin/app/revanced/patches/music/layout/castbutton/Fingerprints.kt create mode 100644 patches/src/main/kotlin/app/revanced/patches/music/layout/castbutton/HideCastButton.kt create mode 100644 patches/src/main/kotlin/app/revanced/patches/music/layout/navigationbar/Fingerprints.kt create mode 100644 patches/src/main/kotlin/app/revanced/patches/music/layout/navigationbar/NavigationBarPatch.kt 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 new file mode 100644 index 000000000..d694891ab --- /dev/null +++ b/extensions/music/src/main/java/app/revanced/extension/music/patches/HideCastButtonPatch.java @@ -0,0 +1,24 @@ +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") +public class HideCastButtonPatch { + + /** + * Injection point + */ + public static int hideCastButton(int original) { + return Settings.HIDE_CAST_BUTTON.get() ? View.GONE : original; + } + + /** + * Injection point + */ + public static void hideCastButton(View view) { + hideViewBy0dpUnderCondition(Settings.HIDE_CAST_BUTTON.get(), view); + } +} diff --git a/extensions/music/src/main/java/app/revanced/extension/music/patches/NavigationBarPatch.java b/extensions/music/src/main/java/app/revanced/extension/music/patches/NavigationBarPatch.java new file mode 100644 index 000000000..511e50304 --- /dev/null +++ b/extensions/music/src/main/java/app/revanced/extension/music/patches/NavigationBarPatch.java @@ -0,0 +1,74 @@ +package app.revanced.extension.music.patches; + +import static app.revanced.extension.shared.Utils.hideViewUnderCondition; + +import android.view.View; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import app.revanced.extension.music.settings.Settings; + +@SuppressWarnings("unused") +public class NavigationBarPatch { + @NonNull + private static String lastYTNavigationEnumName = ""; + + public static void setLastAppNavigationEnum(@Nullable Enum ytNavigationEnumName) { + if (ytNavigationEnumName != null) { + lastYTNavigationEnumName = ytNavigationEnumName.name(); + } + } + + public static void hideNavigationLabel(TextView textview) { + hideViewUnderCondition(Settings.HIDE_NAVIGATION_BAR_LABEL.get(), textview); + } + + public static void hideNavigationButton(@NonNull View view) { + // Hide entire navigation bar. + if (Settings.HIDE_NAVIGATION_BAR.get() && view.getParent() != null) { + hideViewUnderCondition(true, (View) view.getParent()); + return; + } + + // Hide navigation buttons based on their type. + for (NavigationButton button : NavigationButton.values()) { + if (button.ytEnumNames.equals(lastYTNavigationEnumName)) { + hideViewUnderCondition(button.hidden, view); + break; + } + } + } + + private enum NavigationButton { + HOME( + "TAB_HOME", + Settings.HIDE_NAVIGATION_BAR_HOME_BUTTON.get() + ), + SAMPLES( + "TAB_SAMPLES", + Settings.HIDE_NAVIGATION_BAR_SAMPLES_BUTTON.get() + ), + EXPLORE( + "TAB_EXPLORE", + Settings.HIDE_NAVIGATION_BAR_EXPLORE_BUTTON.get() + ), + LIBRARY( + "LIBRARY_MUSIC", + Settings.HIDE_NAVIGATION_BAR_LIBRARY_BUTTON.get() + ), + UPGRADE( + "TAB_MUSIC_PREMIUM", + Settings.HIDE_NAVIGATION_BAR_UPGRADE_BUTTON.get() + ); + + private final String ytEnumNames; + private final boolean hidden; + + NavigationButton(@NonNull String ytEnumNames, boolean hidden) { + this.ytEnumNames = ytEnumNames; + this.hidden = hidden; + } + } +} diff --git a/extensions/music/src/main/java/app/revanced/extension/music/settings/Settings.java b/extensions/music/src/main/java/app/revanced/extension/music/settings/Settings.java index f793eef0f..b120672c5 100644 --- a/extensions/music/src/main/java/app/revanced/extension/music/settings/Settings.java +++ b/extensions/music/src/main/java/app/revanced/extension/music/settings/Settings.java @@ -18,7 +18,15 @@ public class Settings extends BaseSettings { public static final BooleanSetting HIDE_UPGRADE_BUTTON = new BooleanSetting("revanced_music_hide_upgrade_button", TRUE, true); // General + public static final BooleanSetting HIDE_CAST_BUTTON = new BooleanSetting("revanced_music_hide_cast_button", FALSE, false); public static final BooleanSetting HIDE_CATEGORY_BAR = new BooleanSetting("revanced_music_hide_category_bar", FALSE, true); + public static final BooleanSetting HIDE_NAVIGATION_BAR_HOME_BUTTON = new BooleanSetting("revanced_music_hide_navigation_bar_home_button", FALSE, true); + public static final BooleanSetting HIDE_NAVIGATION_BAR_SAMPLES_BUTTON = new BooleanSetting("revanced_music_hide_navigation_bar_samples_button", FALSE, true); + public static final BooleanSetting HIDE_NAVIGATION_BAR_EXPLORE_BUTTON = new BooleanSetting("revanced_music_hide_navigation_bar_explore_button", FALSE, true); + public static final BooleanSetting HIDE_NAVIGATION_BAR_LIBRARY_BUTTON = new BooleanSetting("revanced_music_hide_navigation_bar_library_button", FALSE, true); + public static final BooleanSetting HIDE_NAVIGATION_BAR_UPGRADE_BUTTON = new BooleanSetting("revanced_music_hide_navigation_bar_upgrade_button", TRUE, true); + public static final BooleanSetting HIDE_NAVIGATION_BAR = new BooleanSetting("revanced_music_hide_navigation_bar", FALSE, true); + public static final BooleanSetting HIDE_NAVIGATION_BAR_LABEL = new BooleanSetting("revanced_music_hide_navigation_bar_labels", FALSE, true); // Player public static final BooleanSetting PERMANENT_REPEAT = new BooleanSetting("revanced_music_play_permanent_repeat", FALSE, true); diff --git a/patches/api/patches.api b/patches/api/patches.api index f54cb57e8..69db9f4de 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -372,10 +372,18 @@ public final class app/revanced/patches/music/interaction/permanentshuffle/Perma public static final fun getPermanentShufflePatch ()Lapp/revanced/patcher/patch/BytecodePatch; } +public final class app/revanced/patches/music/layout/castbutton/HideCastButtonKt { + public static final fun getHideCastButton ()Lapp/revanced/patcher/patch/BytecodePatch; +} + public final class app/revanced/patches/music/layout/compactheader/HideCategoryBarKt { public static final fun getHideCategoryBar ()Lapp/revanced/patcher/patch/BytecodePatch; } +public final class app/revanced/patches/music/layout/navigationbar/NavigationBarPatchKt { + public static final fun getNavigationBarPatch ()Lapp/revanced/patcher/patch/BytecodePatch; +} + public final class app/revanced/patches/music/layout/premium/HideGetPremiumPatchKt { public static final fun getHideGetPremiumPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } diff --git a/patches/src/main/kotlin/app/revanced/patches/music/layout/castbutton/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/music/layout/castbutton/Fingerprints.kt new file mode 100644 index 000000000..718d49479 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/music/layout/castbutton/Fingerprints.kt @@ -0,0 +1,17 @@ +package app.revanced.patches.music.layout.castbutton + +import com.android.tools.smali.dexlib2.AccessFlags +import app.revanced.patcher.fingerprint +import app.revanced.util.literal + +internal val mediaRouteButtonFingerprint = fingerprint { + accessFlags(AccessFlags.PRIVATE, AccessFlags.FINAL) + returns("Z") + strings("MediaRouteButton") +} + +internal val playerOverlayChipFingerprint = fingerprint { + accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) + returns("L") + literal { playerOverlayChip } +} diff --git a/patches/src/main/kotlin/app/revanced/patches/music/layout/castbutton/HideCastButton.kt b/patches/src/main/kotlin/app/revanced/patches/music/layout/castbutton/HideCastButton.kt new file mode 100644 index 000000000..4e18e6305 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/music/layout/castbutton/HideCastButton.kt @@ -0,0 +1,70 @@ +package app.revanced.patches.music.layout.castbutton + +import app.revanced.patcher.extensions.InstructionExtensions.addInstruction +import app.revanced.patcher.extensions.InstructionExtensions.addInstructions +import app.revanced.patcher.extensions.InstructionExtensions.getInstruction +import app.revanced.patcher.patch.bytecodePatch +import app.revanced.patches.all.misc.resources.addResources +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.settings.preference.SwitchPreference +import app.revanced.util.indexOfFirstInstructionOrThrow +import app.revanced.util.indexOfFirstLiteralInstructionOrThrow +import com.android.tools.smali.dexlib2.Opcode +import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction + +internal var playerOverlayChip = -1L + private set + +private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/HideCastButtonPatch;" + +@Suppress("unused") +val hideCastButton = bytecodePatch( + name = "Hide cast button", + description = "Adds an option to hide the cast button." +) { + dependsOn( + sharedExtensionPatch, + settingsPatch, + addResourcesPatch, + ) + + compatibleWith( + "com.google.android.apps.youtube.music"( + "7.29.52" + ) + ) + + execute { + addResources("music", "layout.castbutton.hideCastButton") + + PreferenceScreen.GENERAL.addPreferences( + SwitchPreference("revanced_music_hide_cast_button"), + ) + + mediaRouteButtonFingerprint.classDef.apply { + val setVisibilityMethod = methods.first { method -> method.name == "setVisibility" } + + setVisibilityMethod.addInstructions( + 0, + """ + invoke-static { p1 }, $EXTENSION_CLASS_DESCRIPTOR->hideCastButton(I)I + move-result p1 + """ + ) + } + + playerOverlayChipFingerprint.method.apply { + val resourceIndex = indexOfFirstLiteralInstructionOrThrow(playerOverlayChip) + val targetIndex = indexOfFirstInstructionOrThrow(resourceIndex, Opcode.MOVE_RESULT) + val targetRegister = getInstruction(targetIndex).registerA + + addInstruction( + targetIndex + 1, + "invoke-static { v$targetRegister }, $EXTENSION_CLASS_DESCRIPTOR->hideCastButton(Landroid/view/View;)V" + ) + } + } +} diff --git a/patches/src/main/kotlin/app/revanced/patches/music/layout/navigationbar/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/music/layout/navigationbar/Fingerprints.kt new file mode 100644 index 000000000..ab4fb3a8b --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/music/layout/navigationbar/Fingerprints.kt @@ -0,0 +1,36 @@ +package app.revanced.patches.music.layout.navigationbar + +import com.android.tools.smali.dexlib2.Opcode +import com.android.tools.smali.dexlib2.AccessFlags +import app.revanced.patcher.fingerprint +import app.revanced.util.getReference +import app.revanced.util.indexOfFirstInstruction +import app.revanced.util.literal +import com.android.tools.smali.dexlib2.iface.Method +import com.android.tools.smali.dexlib2.iface.reference.MethodReference + +internal val tabLayoutTextFingerprint = fingerprint { + accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) + returns("V") + parameters("L") + opcodes( + Opcode.IGET, + Opcode.INVOKE_STATIC, + Opcode.MOVE_RESULT_OBJECT, + Opcode.IF_NEZ, + Opcode.SGET_OBJECT, + Opcode.INVOKE_INTERFACE, + Opcode.MOVE_RESULT + ) + strings("FEmusic_search") + literal { text1 } + custom { method, _ -> + indexOfGetVisibilityInstruction(method) >= 0 + } +} + +internal fun indexOfGetVisibilityInstruction(method: Method) = + method.indexOfFirstInstruction { + opcode == Opcode.INVOKE_VIRTUAL && + getReference()?.name == "getVisibility" + } diff --git a/patches/src/main/kotlin/app/revanced/patches/music/layout/navigationbar/NavigationBarPatch.kt b/patches/src/main/kotlin/app/revanced/patches/music/layout/navigationbar/NavigationBarPatch.kt new file mode 100644 index 000000000..d3af09f24 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/music/layout/navigationbar/NavigationBarPatch.kt @@ -0,0 +1,110 @@ +package app.revanced.patches.music.layout.navigationbar + +import app.revanced.patcher.extensions.InstructionExtensions.addInstruction +import app.revanced.patcher.extensions.InstructionExtensions.getInstruction +import app.revanced.patcher.patch.PatchException +import app.revanced.patcher.patch.bytecodePatch +import app.revanced.patches.all.misc.resources.addResources +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.resourceMappingPatch +import app.revanced.patches.shared.misc.mapping.resourceMappings +import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference +import app.revanced.patches.shared.misc.settings.preference.SwitchPreference +import app.revanced.util.indexOfFirstInstructionOrThrow +import app.revanced.util.indexOfFirstLiteralInstructionOrThrow +import com.android.tools.smali.dexlib2.Opcode +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.instruction.ReferenceInstruction + +internal var text1 = -1L + private set + +private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/NavigationBarPatch;" + +@Suppress("unused") +val navigationBarPatch = bytecodePatch( + name = "Navigation bar", + description = "Adds options to hide navigation bar, labels and buttons." +) { + dependsOn( + resourceMappingPatch, + sharedExtensionPatch, + settingsPatch, + addResourcesPatch + ) + + compatibleWith( + "com.google.android.apps.youtube.music"( + "7.29.52" + ) + ) + + execute { + text1 = resourceMappings[ + "id", + "text1", + ] + + addResources("music", "layout.navigationbar.navigationBarPatch") + + PreferenceScreen.GENERAL.addPreferences( + PreferenceScreenPreference( + key = "revanced_music_navigation_bar_screen", + sorting = PreferenceScreenPreference.Sorting.UNSORTED, + preferences = setOf( + SwitchPreference("revanced_music_hide_navigation_bar_home_button"), + SwitchPreference("revanced_music_hide_navigation_bar_samples_button"), + SwitchPreference("revanced_music_hide_navigation_bar_explore_button"), + SwitchPreference("revanced_music_hide_navigation_bar_library_button"), + SwitchPreference("revanced_music_hide_navigation_bar_upgrade_button"), + + SwitchPreference("revanced_music_hide_navigation_bar"), + SwitchPreference("revanced_music_hide_navigation_bar_labels"), + ) + ) + ) + + tabLayoutTextFingerprint.method.apply { + /** + * Hide navigation labels. + */ + val constIndex = indexOfFirstLiteralInstructionOrThrow(text1) + val targetIndex = indexOfFirstInstructionOrThrow(constIndex, Opcode.CHECK_CAST) + val targetParameter = getInstruction(targetIndex).reference + val targetRegister = getInstruction(targetIndex).registerA + + if (!targetParameter.toString().endsWith("Landroid/widget/TextView;")) + throw PatchException("Method signature parameter did not match: $targetParameter") + + addInstruction( + targetIndex + 1, + "invoke-static { v$targetRegister }, $EXTENSION_CLASS_DESCRIPTOR->hideNavigationLabel(Landroid/widget/TextView;)V" + ) + + /** + * Set navigation enum and hide navigation buttons. + */ + val enumIndex = tabLayoutTextFingerprint.patternMatch!!.startIndex + 3 + val enumRegister = getInstruction(enumIndex).registerA + val insertEnumIndex = indexOfFirstInstructionOrThrow(Opcode.AND_INT_LIT8) - 2 + + val pivotTabIndex = indexOfGetVisibilityInstruction(this) + val pivotTabRegister = getInstruction(pivotTabIndex).registerC + + addInstruction( + pivotTabIndex, + "invoke-static { v$pivotTabRegister }, $EXTENSION_CLASS_DESCRIPTOR->hideNavigationButton(Landroid/view/View;)V" + ) + + addInstruction( + insertEnumIndex, + "invoke-static { v$enumRegister }, $EXTENSION_CLASS_DESCRIPTOR->setLastAppNavigationEnum(Ljava/lang/Enum;)V" + ) + } + } +} diff --git a/patches/src/main/kotlin/app/revanced/patches/music/layout/upgradebutton/HideUpgradeButtonPatch.kt b/patches/src/main/kotlin/app/revanced/patches/music/layout/upgradebutton/HideUpgradeButtonPatch.kt index b54e4f2b6..f06eda341 100644 --- a/patches/src/main/kotlin/app/revanced/patches/music/layout/upgradebutton/HideUpgradeButtonPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/music/layout/upgradebutton/HideUpgradeButtonPatch.kt @@ -21,9 +21,9 @@ import com.android.tools.smali.dexlib2.iface.reference.FieldReference private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/music/patches/HideUpgradeButtonPatch;" +@Deprecated("This patch will be removed in the future.") @Suppress("unused") val hideUpgradeButton = bytecodePatch( - name = "Hide upgrade button", description = "Hides the upgrade tab from the pivot bar.", ) { dependsOn( diff --git a/patches/src/main/resources/addresources/values/strings.xml b/patches/src/main/resources/addresources/values/strings.xml index 1d86f2421..86d617500 100644 --- a/patches/src/main/resources/addresources/values/strings.xml +++ b/patches/src/main/resources/addresources/values/strings.xml @@ -1663,11 +1663,46 @@ Enabling this can unlock higher video qualities" Permanent repeat is enabled Permanent repeat is disabled + + Hide cast button + Cast button is hidden + Cast button is shown + Hide category bar Category bar is hidden Category bar is shown + + Navigation bar + Hide or change navigation bar buttons + + Hide Home button + Home button is hidden + Home button is shown + + Hide Samples button + Samples button is hidden + Samples button is shown + + Hide Explore button + Explore button is hidden + Explore button is shown + + Hide Library button + Library button is hidden + Library button is shown + + Hide Upgrade button + Upgrade button is hidden + Upgrade button is shown + Hide navigation bar + Navigation bar is hidden + Navigation bar is shown + Hide navigation button labels + Labels are hidden + Labels are shown + Hide \'Get Music Premium\' label Label is hidden From eb1d07fd98cf2ff7c2cb6dba083c5a2421ede848 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 20 Sep 2025 11:30:04 +0000 Subject: [PATCH 08/11] chore: Release v5.40.0-dev.5 [skip ci] # [5.40.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.40.0-dev.4...v5.40.0-dev.5) (2025-09-20) ### Features * **YouTube Music:** Add `Hide cast button` and `Navigation bar` patches ([#5934](https://github.com/ReVanced/revanced-patches/issues/5934)) ([651d358](https://github.com/ReVanced/revanced-patches/commit/651d3580967a252b57cbf4afbba02d6a4601ccfe)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 294104ff4..ebf2606c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [5.40.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.40.0-dev.4...v5.40.0-dev.5) (2025-09-20) + + +### Features + +* **YouTube Music:** Add `Hide cast button` and `Navigation bar` patches ([#5934](https://github.com/ReVanced/revanced-patches/issues/5934)) ([651d358](https://github.com/ReVanced/revanced-patches/commit/651d3580967a252b57cbf4afbba02d6a4601ccfe)) + # [5.40.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.40.0-dev.3...v5.40.0-dev.4) (2025-09-20) diff --git a/gradle.properties b/gradle.properties index bcf124a36..a24704b81 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.40.0-dev.4 +version = 5.40.0-dev.5 From e26c971067c752baf6c441c3dccaf0dc814883b0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 20 Sep 2025 16:32:50 +0400 Subject: [PATCH 09/11] chore: Sync translations (#5942) --- .../addresources/values-af-rZA/strings.xml | 9 +++++ .../addresources/values-am-rET/strings.xml | 9 +++++ .../addresources/values-ar-rSA/strings.xml | 35 +++++++++++++++++++ .../addresources/values-as-rIN/strings.xml | 9 +++++ .../addresources/values-az-rAZ/strings.xml | 9 +++++ .../addresources/values-be-rBY/strings.xml | 35 +++++++++++++++++++ .../addresources/values-bg-rBG/strings.xml | 35 +++++++++++++++++++ .../addresources/values-bn-rBD/strings.xml | 35 +++++++++++++++++++ .../addresources/values-bs-rBA/strings.xml | 9 +++++ .../addresources/values-ca-rES/strings.xml | 9 +++++ .../addresources/values-cs-rCZ/strings.xml | 35 +++++++++++++++++++ .../addresources/values-da-rDK/strings.xml | 35 +++++++++++++++++++ .../addresources/values-de-rDE/strings.xml | 35 +++++++++++++++++++ .../addresources/values-el-rGR/strings.xml | 35 +++++++++++++++++++ .../addresources/values-es-rES/strings.xml | 35 +++++++++++++++++++ .../addresources/values-et-rEE/strings.xml | 35 +++++++++++++++++++ .../addresources/values-eu-rES/strings.xml | 9 +++++ .../addresources/values-fa-rIR/strings.xml | 9 +++++ .../addresources/values-fi-rFI/strings.xml | 35 +++++++++++++++++++ .../addresources/values-fil-rPH/strings.xml | 35 +++++++++++++++++++ .../addresources/values-fr-rFR/strings.xml | 35 +++++++++++++++++++ .../addresources/values-ga-rIE/strings.xml | 35 +++++++++++++++++++ .../addresources/values-gl-rES/strings.xml | 9 +++++ .../addresources/values-gu-rIN/strings.xml | 9 +++++ .../addresources/values-hi-rIN/strings.xml | 9 +++++ .../addresources/values-hr-rHR/strings.xml | 9 +++++ .../addresources/values-hu-rHU/strings.xml | 35 +++++++++++++++++++ .../addresources/values-hy-rAM/strings.xml | 35 +++++++++++++++++++ .../addresources/values-in-rID/strings.xml | 35 +++++++++++++++++++ .../addresources/values-is-rIS/strings.xml | 9 +++++ .../addresources/values-it-rIT/strings.xml | 35 +++++++++++++++++++ .../addresources/values-iw-rIL/strings.xml | 35 +++++++++++++++++++ .../addresources/values-ja-rJP/strings.xml | 35 +++++++++++++++++++ .../addresources/values-ka-rGE/strings.xml | 9 +++++ .../addresources/values-kk-rKZ/strings.xml | 9 +++++ .../addresources/values-km-rKH/strings.xml | 9 +++++ .../addresources/values-kn-rIN/strings.xml | 9 +++++ .../addresources/values-ko-rKR/strings.xml | 35 +++++++++++++++++++ .../addresources/values-ky-rKG/strings.xml | 9 +++++ .../addresources/values-lo-rLA/strings.xml | 9 +++++ .../addresources/values-lt-rLT/strings.xml | 35 +++++++++++++++++++ .../addresources/values-lv-rLV/strings.xml | 35 +++++++++++++++++++ .../addresources/values-mk-rMK/strings.xml | 9 +++++ .../addresources/values-ml-rIN/strings.xml | 9 +++++ .../addresources/values-mn-rMN/strings.xml | 9 +++++ .../addresources/values-mr-rIN/strings.xml | 9 +++++ .../addresources/values-ms-rMY/strings.xml | 9 +++++ .../addresources/values-my-rMM/strings.xml | 9 +++++ .../addresources/values-nb-rNO/strings.xml | 9 +++++ .../addresources/values-ne-rIN/strings.xml | 9 +++++ .../addresources/values-nl-rNL/strings.xml | 35 +++++++++++++++++++ .../addresources/values-or-rIN/strings.xml | 9 +++++ .../addresources/values-pa-rIN/strings.xml | 9 +++++ .../addresources/values-pl-rPL/strings.xml | 35 +++++++++++++++++++ .../addresources/values-pt-rBR/strings.xml | 35 +++++++++++++++++++ .../addresources/values-pt-rPT/strings.xml | 35 +++++++++++++++++++ .../addresources/values-ro-rRO/strings.xml | 35 +++++++++++++++++++ .../addresources/values-ru-rRU/strings.xml | 35 +++++++++++++++++++ .../addresources/values-si-rLK/strings.xml | 9 +++++ .../addresources/values-sk-rSK/strings.xml | 35 +++++++++++++++++++ .../addresources/values-sl-rSI/strings.xml | 35 +++++++++++++++++++ .../addresources/values-sq-rAL/strings.xml | 35 +++++++++++++++++++ .../addresources/values-sr-rCS/strings.xml | 35 +++++++++++++++++++ .../addresources/values-sr-rSP/strings.xml | 35 +++++++++++++++++++ .../addresources/values-sv-rSE/strings.xml | 35 +++++++++++++++++++ .../addresources/values-sw-rKE/strings.xml | 9 +++++ .../addresources/values-ta-rIN/strings.xml | 9 +++++ .../addresources/values-te-rIN/strings.xml | 9 +++++ .../addresources/values-th-rTH/strings.xml | 35 +++++++++++++++++++ .../addresources/values-tr-rTR/strings.xml | 35 +++++++++++++++++++ .../addresources/values-uk-rUA/strings.xml | 35 +++++++++++++++++++ .../addresources/values-ur-rIN/strings.xml | 9 +++++ .../addresources/values-uz-rUZ/strings.xml | 9 +++++ .../addresources/values-vi-rVN/strings.xml | 35 +++++++++++++++++++ .../addresources/values-zh-rCN/strings.xml | 35 +++++++++++++++++++ .../addresources/values-zh-rTW/strings.xml | 35 +++++++++++++++++++ .../addresources/values-zu-rZA/strings.xml | 9 +++++ 77 files changed, 1759 insertions(+) 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-af-rZA/strings.xml +++ b/patches/src/main/resources/addresources/values-af-rZA/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-am-rET/strings.xml +++ b/patches/src/main/resources/addresources/values-am-rET/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 6e124f11b..34d523cc3 100644 --- a/patches/src/main/resources/addresources/values-ar-rSA/strings.xml +++ b/patches/src/main/resources/addresources/values-ar-rSA/strings.xml @@ -1585,11 +1585,46 @@ Second \"item\" text" تم تمكين التكرار الدائم تم تعطيل التكرار الدائم + + إخفاء زر الإرسال + زر الإرسال مخفي + زر الإرسال ظاهر + إخفاء شريط الفئات شريط الفئات مخفي شريط الفئات معروض + + شريط التنقل + إخفاء أزرار شريط التنقل أو تغييرها + + إخفاء زر \"الرئيسية\" + زر \"الرئيسية\" مخفي + زر \"الرئيسية\" ظاهر + + إخفاء زر \"المقتطفات\" + زر \"المقتطفات\" مخفي + زر \"المقتطفات\" ظاهر + + إخفاء زر \"استكشاف\" + زر \"استكشاف\" مخفي + زر \"استكشاف\" ظاهر + + إخفاء زر \"المكتبة\" + زر \"المكتبة\" مخفي + زر \"المكتبة\" ظاهر + + إخفاء زر \"الترقية\" + زر \"الترقية\" مخفي + زر \"الترقية\" ظاهر + إخفاء شريط التنقل + شريط التنقل مخفي + شريط التنقل ظاهر + إخفاء تسميات أزرار التنقل + التسميات مخفية + التسميات ظاهرة + إخفاء تسمية \'الحصول على Music Premium\' التسمية مخفية 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 a87acac0a..89ca72a06 100644 --- a/patches/src/main/resources/addresources/values-as-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-as-rIN/strings.xml @@ -255,8 +255,17 @@ Second \"item\" text" + + + + + + + + + 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 3c78618f6..50b6a7bbf 100644 --- a/patches/src/main/resources/addresources/values-az-rAZ/strings.xml +++ b/patches/src/main/resources/addresources/values-az-rAZ/strings.xml @@ -1584,11 +1584,20 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər Kəsintisiz təkrarlama aktivdir Kəsintisiz təkrarlama qapalıdır + + Kateqoriya cizgisin gizlət Kateqoriya cizgisi gizlidir Kateqoriya cizgisi görünür + + + + + + + \'Musiqi Premiumu Əldə et\' etiketini gizlət Etiket gizlidir 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 b040e0879..4e16211e9 100644 --- a/patches/src/main/resources/addresources/values-be-rBY/strings.xml +++ b/patches/src/main/resources/addresources/values-be-rBY/strings.xml @@ -1586,11 +1586,46 @@ Second \"item\" text" Пастаянны паўтор уключаны Пастаянны паўтор адключаны + + Схаваць кнопку трансляцыі + Кнопка трансляцыі схавана + Кнопка трансляцыі паказана + Схаваць панэль катэгорый Панэль катэгорый схаваная Панэль катэгорый паказаная + + Панэль навігацыі + Схаваць або змяніць кнопкі панэлі навігацыі + + Схаваць кнопку \"Галоўная\" + Кнопка \"Галоўная\" схавана + Кнопка \"Галоўная\" паказана + + Схаваць кнопку \"Узоры\" + Кнопка \"Узоры\" схавана + Кнопка \"Узоры\" паказана + + Схаваць кнопку \"Агляд\" + Кнопка \"Агляд\" схавана + Кнопка \"Агляд\" паказана + + Схаваць кнопку \"Бібліятэка\" + Кнопка \"Бібліятэка\" схавана + Кнопка \"Бібліятэка\" паказана + + Схаваць кнопку \"Абнавіць\" + Кнопка \"Абнавіць\" схавана + Кнопка \"Абнавіць\" паказана + Схаваць панэль навігацыі + Панэль навігацыі схавана + Панэль навігацыі паказана + Схаваць подпісы кнопак навігацыі + Подпісы схаваны + Подпісы паказаны + Схаваць надпіс \"Атрымаць Music Premium\" Надпіс схаваны 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 0f56d98d2..420c5cbde 100644 --- a/patches/src/main/resources/addresources/values-bg-rBG/strings.xml +++ b/patches/src/main/resources/addresources/values-bg-rBG/strings.xml @@ -1585,11 +1585,46 @@ Second \"item\" text" Постоянното повтаряне е активирано Постоянното повтаряне е деактивирано + + Скриване на бутона за предаване + Бутонът за предаване е скрит + Бутонът за предаване е показан + Скриване на лентата с категории Лентата с категории е скрита Лентата с категории е показана + + Навигационна лента + Скриване или промяна на бутоните на навигационната лента + + Скриване на бутона Начало + Бутонът Начало е скрит + Бутонът Начало е показан + + Скриване на бутона Мостри + Бутонът Мостри е скрит + Бутонът Мостри е показан + + Скриване на бутона Проучване + Бутонът Проучване е скрит + Бутонът Проучване е показан + + Скриване на бутона Библиотека + Бутонът Библиотека е скрит + Бутонът Библиотека е показан + + Скриване на бутона Надграждане + Бутонът Надграждане е скрит + Бутонът Надграждане е показан + Скриване на навигационната лента + Навигационната лента е скрита + Навигационната лента е показана + Скриване на етикетите на навигационните бутони + Етикетите са скрити + Етикетите са показани + Скриване на етикета „Вземете Music Premium“ Етикетът е скрит 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 ab28549e3..1baa688da 100644 --- a/patches/src/main/resources/addresources/values-bn-rBD/strings.xml +++ b/patches/src/main/resources/addresources/values-bn-rBD/strings.xml @@ -1581,11 +1581,46 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট স্থায়ী পুনরাবৃত্তি সক্ষম করা হয়েছে স্থায়ী পুনরাবৃত্তি অক্ষম করা হয়েছে + + কাস্ট বোতাম লুকান + কাস্ট বোতাম লুকানো আছে + কাস্ট বোতাম দেখানো আছে + ক্যাটাগরি বার লুকান ক্যাটাগরি বার লুকানো আছে ক্যাটাগরি বার দেখানো আছে + + নেভিগেশন বার + নেভিগেশন বারের বোতামগুলি লুকান বা পরিবর্তন করুন + + হোম বোতাম লুকান + হোম বোতাম লুকানো আছে + হোম বোতাম দেখানো আছে + + স্যাম্পল বোতাম লুকান + স্যাম্পল বোতাম লুকানো আছে + স্যাম্পল বোতাম দেখানো আছে + + অনুসন্ধান বোতাম লুকান + অনুসন্ধান বোতাম লুকানো আছে + অনুসন্ধান বোতাম দেখানো আছে + + লাইব্রেরি বোতাম লুকান + লাইব্রেরি বোতাম লুকানো আছে + লাইব্রেরি বোতাম দেখানো আছে + + আপগ্রেড বোতাম লুকান + আপগ্রেড বোতাম লুকানো আছে + আপগ্রেড বোতাম দেখানো আছে + নেভিগেশন বার লুকান + নেভিগেশন বার লুকানো আছে + নেভিগেশন বার দেখানো আছে + নেভিগেশন বোতামের লেবেলগুলি লুকান + লেবেলগুলি লুকানো আছে + লেবেলগুলি দেখানো আছে + \'গেট মিউজিক প্রিমিয়াম\' লেবেল লুকান লেবেল লুকানো আছে 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-bs-rBA/strings.xml +++ b/patches/src/main/resources/addresources/values-bs-rBA/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-ca-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-ca-rES/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 876ebac1d..8c092a5c9 100644 --- a/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml +++ b/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml @@ -1585,11 +1585,46 @@ Povolením této funkce lze odemknout vyšší kvality videa" Trvalé opakování je povoleno Trvalé opakování je zakázáno + + Skrýt tlačítko Odesílat + Tlačítko Odesílat je skryté + Tlačítko Odesílat je zobrazené + Skrýt panel kategorií Panel kategorií je skryt Panel kategorií je zobrazen + + Navigační panel + Skrýt nebo změnit tlačítka navigačního panelu + + Skrýt tlačítko Domů + Tlačítko Domů je skryté + Tlačítko Domů je zobrazeno + + Skrýt tlačítko Ukázky + Tlačítko Ukázky je skryté + Tlačítko Ukázky je zobrazeno + + Skrýt tlačítko Prozkoumat + Tlačítko Prozkoumat je skryté + Tlačítko Prozkoumat je zobrazeno + + Skrýt tlačítko Knihovna + Tlačítko Knihovna je skryté + Tlačítko Knihovna je zobrazeno + + Skrýt tlačítko Vylepšit + Tlačítko Vylepšit je skryté + Tlačítko Vylepšit je zobrazeno + Skrýt navigační panel + Navigační panel je skrytý + Navigační panel je zobrazen + Skrýt popisky navigačních tlačítek + Popisky jsou skryté + Popisky jsou zobrazeny + Skrýt štítek \"Získat Music Premium\" Štítek je skryt 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 6738a3d89..15af0db71 100644 --- a/patches/src/main/resources/addresources/values-da-rDK/strings.xml +++ b/patches/src/main/resources/addresources/values-da-rDK/strings.xml @@ -1587,11 +1587,46 @@ Aktivering af dette kan låse op for højere videokvalitet" Permanent gentagelse er aktiveret Permanent gentagelse er deaktiveret + + Skjul cast-knap + Cast-knappen er skjult + Cast-knappen vises + Skjul kategorilinje Kategorilinjen er skjult Kategorilinjen vises + + Navigationslinje + Skjul eller skift navigationslinjeknapper + + Skjul Startside-knap + Startside-knappen er skjult + Startside-knappen vises + + Skjul Kortklip-knap + Kortklip-knappen er skjult + Kortklip-knappen vises + + Skjul Udforsk-knap + Udforsk-knappen er skjult + Udforsk-knappen vises + + Skjul Bibliotek-knap + Bibliotek-knappen er skjult + Bibliotek-knappen vises + + Skjul Opgrader-knap + Opgrader-knappen er skjult + Opgrader-knappen vises + Skjul navigationslinje + Navigationslinjen er skjult + Navigationslinjen vises + Skjul etiketter for navigationsknapper + Etiketter er skjult + Etiketter vises + Skjul \'Få Music Premium\'-etiket Etiketten er skjult 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 b1cb60cfe..0efed29ce 100644 --- a/patches/src/main/resources/addresources/values-de-rDE/strings.xml +++ b/patches/src/main/resources/addresources/values-de-rDE/strings.xml @@ -1582,11 +1582,46 @@ Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet w Dauerwiederholung ist aktiviert Dauerwiederholung ist deaktiviert + + Übertragen-Taste ausblenden + Übertragen-Taste ist ausgeblendet + Übertragen-Taste wird angezeigt + Kategorieleiste ausblenden Kategorieleiste ist ausgeblendet Kategorieleiste wird angezeigt + + Navigationsleiste + Navigationsleisten-Schaltflächen ausblenden oder ändern + + Start-Schaltfläche ausblenden + Start-Schaltfläche ist ausgeblendet + Start-Schaltfläche wird angezeigt + + Samples-Schaltfläche ausblenden + Samples-Schaltfläche ist ausgeblendet + Samples-Schaltfläche wird angezeigt + + Entdecken-Schaltfläche ausblenden + Entdecken-Schaltfläche ist ausgeblendet + Entdecken-Schaltfläche wird angezeigt + + Mediathek-Schaltfläche ausblenden + Mediathek-Schaltfläche ist ausgeblendet + Mediathek-Schaltfläche wird angezeigt + + Upgrade-Schaltfläche ausblenden + Upgrade-Schaltfläche ist ausgeblendet + Upgrade-Schaltfläche wird angezeigt + Navigationsleiste ausblenden + Navigationsleiste ist ausgeblendet + Navigationsleiste wird angezeigt + Beschriftungen der Navigationsschaltflächen ausblenden + Beschriftungen sind ausgeblendet + Beschriftungen werden angezeigt + \"Music Premium holen\"-Label ausblenden Label ist ausgeblendet 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 9c8483553..478bc23c8 100644 --- a/patches/src/main/resources/addresources/values-el-rGR/strings.xml +++ b/patches/src/main/resources/addresources/values-el-rGR/strings.xml @@ -1584,11 +1584,46 @@ Second \"item\" text" Η μόνιμη επανάληψη είναι ενεργοποιημένη Η μόνιμη επανάληψη είναι απενεργοποιημένη + + Απόκρυψη κουμπιού μετάδοσης + Κρυμμένο + Εμφανίζεται + Γραμμή κατηγοριών Κρυμμένη Εμφανίζεται + + Γραμμή πλοήγησης + Απόκρυψη ή αλλαγή κουμπιών γραμμής πλοήγησης + + Απόκρυψη κουμπιού Αρχικής οθόνης + Κρυμμένο + Εμφανίζεται + + Απόκρυψη κουμπιού Δειγμάτων + Το κουμπί «Δείγματα» είναι κρυμμένο + Το κουμπί «Δείγματα» εμφανίζεται + + Απόκρυψη κουμπιού Εξερεύνησης + Το κουμπί «Εξερεύνηση» είναι κρυμμένο + Το κουμπί «Εξερεύνηση» εμφανίζεται + + Απόκρυψη κουμπιού Βιβλιοθήκης + Το κουμπί «Βιβλιοθήκη» είναι κρυμμένο + Το κουμπί «Βιβλιοθήκη» εμφανίζεται + + Απόκρυψη κουμπιού «Αναβάθμιση» + Το κουμπί «Αναβάθμιση» είναι κρυμμένο + Το κουμπί «Αναβάθμιση» εμφανίζεται + Γραμμή πλοήγησης + Η γραμμή πλοήγησης θα είναι κρυμμένη κατά την αναπαραγωγή Shorts + Η γραμμή πλοήγησης εμφανίζεται κατά την αναπαραγωγή Shorts + Ονομασίες κουμπιών γραμμής πλοήγησης + Κρυμμένες + Εμφανίζονται + Ετικέτα «Αποκτήστε το Music Premium» Κρυμμένη 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 1018b914d..fa88a6fa4 100644 --- a/patches/src/main/resources/addresources/values-es-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-es-rES/strings.xml @@ -1576,11 +1576,46 @@ Habilitar esto puede desbloquear calidades de vídeo más altas" La repetición permanente está habilitada La repetición permanente está deshabilitada + + Ocultar el botón de emisión + El botón de emisión está oculto + El botón de emisión es visible + Ocultar barra de categorías La barra de categorías está oculta La barra de categorías es visible + + Barra de navegación + Ocultar o cambiar los botones de la barra de navegación + + Ocultar el botón Inicio + El botón Inicio está oculto + El botón Inicio es visible + + Ocultar el botón Muestras + El botón Muestras está oculto + El botón Muestras es visible + + Ocultar el botón Explorar + El botón Explorar está oculto + El botón Explorar es visible + + Ocultar el botón Biblioteca + El botón Biblioteca está oculto + El botón Biblioteca es visible + + Ocultar el botón Actualizar + El botón Actualizar está oculto + El botón Actualizar es visible + Ocultar la barra de navegación + La barra de navegación está oculta + La barra de navegación es visible + Ocultar etiquetas de navegación + Las etiquetas están ocultas + Las etiquetas son visibles + Ocultar la etiqueta \'Obtener Music Premium\' La etiqueta está oculta 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 c33984447..e01a31817 100644 --- a/patches/src/main/resources/addresources/values-et-rEE/strings.xml +++ b/patches/src/main/resources/addresources/values-et-rEE/strings.xml @@ -1585,11 +1585,46 @@ Selle lubamine võib avada kõrgema video kvaliteedi" Püsiv kordus on lubatud Püsiv kordus on keelatud + + Peida edastusnupp + Edastusnupp on peidetud + Edastusnupp on nähtav + Peida kategooriariba Kategooriariba on peidetud Kategooriariba on nähtaval + + Navigeerimisriba + Peida või muuda navigeerimisriba nuppe + + Peida Avalehe nupp + Avalehe nupp on peidetud + Avalehe nupp on nähtav + + Peida Näidiste nupp + Näidiste nupp on peidetud + Näidiste nupp on nähtav + + Peida Avasta nupp + Avasta nupp on peidetud + Avasta nupp on nähtav + + Peida Kogu nupp + Kogu nupp on peidetud + Kogu nupp on nähtav + + Peida Uuenda nupp + Uuenda nupp on peidetud + Uuenda nupp on nähtav + Peida navigeerimisriba + Navigeerimisriba on peidetud + Navigeerimisriba on nähtav + Peida navigeerimisnuppude sildid + Sildid on peidetud + Sildid on nähtavale toodud + Peida sildike \"Hangi Music Premium\" Silt on peidetud 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-eu-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-eu-rES/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 cdb190b76..b3632d5ff 100644 --- a/patches/src/main/resources/addresources/values-fa-rIR/strings.xml +++ b/patches/src/main/resources/addresources/values-fa-rIR/strings.xml @@ -303,8 +303,17 @@ Second \"item\" text" + + + + + + + + + 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 34351751a..037cb4823 100644 --- a/patches/src/main/resources/addresources/values-fi-rFI/strings.xml +++ b/patches/src/main/resources/addresources/values-fi-rFI/strings.xml @@ -1585,11 +1585,46 @@ Tämä voi avata korkealaatuisemmat videot" Pysyvä toisto on käytössä Pysyvä toisto on poissa käytöstä + + Piilota lähetyspainike + Lähetyspainike on piilotettu + Lähetyspainike näytetään + Piilota kategoriapalkki Kategoriapalkki on piilotettu Kategoriapalkki näytetään + + Navigointipalkki + Piilota tai muuta navigointipalkin painikkeita + + Piilota Etusivu-painike + Etusivu-painike on piilotettu + Etusivu-painike näytetään + + Piilota Näytteet-painike + Näytteet-painike on piilotettu + Näytteet-painike näytetään + + Piilota Tutustu-painike + Tutustu-painike on piilotettu + Tutustu-painike näytetään + + Piilota Kirjasto-painike + Kirjasto-painike on piilotettu + Kirjasto-painike näytetään + + Piilota Päivitä-painike + Päivitä-painike on piilotettu + Päivitä-painike näytetään + Piilota navigointipalkki + Navigointipalkki on piilotettu + Navigointipalkki näytetään + Piilota navigointipainikkeiden otsikot + Otsikot on piilotettu + Otsikot näytetään + Piilota \"Hanki Music Premium\" -merkintä Merkintä on piilotettu 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 d28b500ee..735bc7e49 100644 --- a/patches/src/main/resources/addresources/values-fil-rPH/strings.xml +++ b/patches/src/main/resources/addresources/values-fil-rPH/strings.xml @@ -1583,11 +1583,46 @@ Ang pagpapagana nito ay maaaring magbukas ng mas mataas na kalidad ng video"Pinagana ang permanenteng pag-ulit Hindi pinagana ang permanenteng pag-ulit + + Itago ang pindutan ng Cast + Nakatago ang pindutan ng Cast + Ipinapakita ang pindutan ng Cast + Itago ang category bar Nakatago ang category bar Ipinapakita ang category bar + + Navigation bar + Itago o baguhin ang mga pindutan ng navigation bar + + Itago ang pindutan ng Home + Nakatago ang pindutan ng Home + Nakalabas ang pindutan ng Home + + Itago ang pindutan ng Samples + Nakatago ang pindutan ng Samples + Nakalabas ang pindutan ng Samples + + Itago ang pindutan ng Explore + Nakatago ang pindutan ng Explore + Nakalabas ang pindutan ng Explore + + Itago ang pindutan ng Library + Nakatago ang pindutan ng Library + Nakalabas ang pindutan ng Library + + Itago ang pindutan ng Upgrade + Nakatago ang pindutan ng Upgrade + Nakalabas ang pindutan ng Upgrade + Itago ang navigation bar + Nakatago ang navigation bar + Nakalabas ang navigation bar + Itago ang mga label ng pindutan ng navigation + Nakatago ang mga label + Nakalabas ang mga label + Itago ang label na \'Kumuha ng Music Premium\' Nakatago ang label 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 b856f248a..0678f2e4c 100644 --- a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml +++ b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml @@ -1586,11 +1586,46 @@ Activer cette option peut déverrouiller des qualités vidéo supérieures"La lecture en boucle permanente est activée La lecture en boucle permanente est désactivée + + Masquer le bouton de diffusion + Le bouton de diffusion est masqué + Le bouton de diffusion est affiché + Masquer la barre des catégories La barre des catégories est masquée La barre des catégories est affichée + + Barre de navigation + Masquer ou modifier les boutons de la barre de navigation + + Masquer le bouton Accueil + Le bouton Accueil est masqué + Le bouton Accueil est affiché + + Masquer le bouton Extraits + Le bouton Extraits est masqué + Le bouton Extraits est affiché + + Masquer le bouton Explorer + Le bouton Explorer est masqué + Le bouton Explorer est affiché + + Masquer le bouton Bibliothèque + Le bouton Bibliothèque est masqué + Le bouton Bibliothèque est affiché + + Masquer le bouton S\'abonner + Le bouton S\'abonner est masqué + Le bouton S\'abonner est affiché + Masquer la barre de navigation + La barre de navigation est masquée + La barre de navigation est affichée + Masquer les libellés des boutons de navigation + Les libellés sont masqués + Les libellés sont affichés + Masquer le libellé \"S\'abonner à Music Premium\" Le libellé est masqué 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 953056e64..739a8164a 100644 --- a/patches/src/main/resources/addresources/values-ga-rIE/strings.xml +++ b/patches/src/main/resources/addresources/values-ga-rIE/strings.xml @@ -1585,11 +1585,46 @@ Is féidir le seo caighdeáin físeáin níos airde a dhíghlasáil" Tá athdhéanamh buan cumasaithe Tá athdhéanamh buan díchumasaithe + + Folaigh an cnaipe teilgthe + Tá an cnaipe teilgthe i bhfolach + Tá an cnaipe teilgthe ar taispeáint + Folaigh an barra catagóirí Tá an barra catagóirí i bhfolach Taispeántar an barra catagóirí + + Barra nascleanúna + Folaigh nó athraigh cnaipí an bharra nascleanúna + + Folaigh cnaipe Baile + Tá cnaipe Baile folaithe + Tá cnaipe Baile taispeánta + + Folaigh cnaipe Samplaí + Tá cnaipe Samplaí folaithe + Tá cnaipe Samplaí taispeánta + + Folaigh cnaipe Fionnachtana + Tá cnaipe Fionnachtana folaithe + Tá cnaipe Fionnachtana taispeánta + + Folaigh cnaipe Leabharlann + Tá cnaipe Leabharlann folaithe + Tá cnaipe Leabharlann taispeánta + + Folaigh cnaipe Uasghrádú + Tá cnaipe Uasghrádú folaithe + Tá cnaipe Uasghrádú taispeánta + Folaigh barra nascleanúna + Tá barra nascleanúna folaithe + Tá barra nascleanúna taispeánta + Folaigh lipéid cnaipí nascleanúna + Tá lipéid folaithe + Tá lipéid taispeánta + Folaigh an lipéad \'Faigh Music Premium\' Tá an lipéad i bhfolach 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-gl-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-gl-rES/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-gu-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-gu-rIN/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-hi-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-hi-rIN/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-hr-rHR/strings.xml +++ b/patches/src/main/resources/addresources/values-hr-rHR/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 e918555c7..b9809e8b6 100644 --- a/patches/src/main/resources/addresources/values-hu-rHU/strings.xml +++ b/patches/src/main/resources/addresources/values-hu-rHU/strings.xml @@ -1582,11 +1582,46 @@ Ez a beállítás lehetővé teszi a magasabb videóminőségek feloldását"Az állandó ismétlés engedélyezve van Az állandó ismétlés letiltva van + + Kivetítés gomb elrejtése + Kivetítés gomb elrejtve + Kivetítés gomb látható + Kategóriasáv elrejtése A kategóriasáv rejtve van A kategóriasáv látható + + Navigációs sáv + Navigációs sáv gombjainak elrejtése vagy módosítása + + Kezdőlap gomb elrejtése + A Kezdőlap gomb elrejtve + A Kezdőlap gomb látható + + Minták gomb elrejtése + A Minták gomb elrejtve + A Minták gomb látható + + Felfedezés gomb elrejtése + A Felfedezés gomb elrejtve + A Felfedezés gomb látható + + Könyvtár gomb elrejtése + A Könyvtár gomb elrejtve + A Könyvtár gomb látható + + Frissítés gomb elrejtése + A Frissítés gomb elrejtve + A Frissítés gomb látható + Navigációs sáv elrejtése + A navigációs sáv elrejtve + A navigációs sáv látható + Navigációs gombok feliratainak elrejtése + A feliratok elrejtve + A feliratok láthatóak + A „Music Premium beszerzése” címke elrejtése A címke rejtve van 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 0ee3a1caf..b626c3ef9 100644 --- a/patches/src/main/resources/addresources/values-hy-rAM/strings.xml +++ b/patches/src/main/resources/addresources/values-hy-rAM/strings.xml @@ -1586,11 +1586,46 @@ Mini-player-ը կարող է գրավվել էկրանից դուրս՝ դեպի Մշտական կրկնությունը միացված է Մշտական կրկնությունը անջատված է + + Թաքցնել հեռարձակման կոճակը + Հեռարձակման կոճակը թաքնված է + Հեռարձակման կոճակը ցուցադրված է + Թաքցնել կատեգորիաների վահանակը Կատեգորիաների վահանակը թաքցված է Կատեգորիաների վահանակը ցուցադրվում է + + Նավիգացիոն գիծ + Թաքցնել կամ փոխել նավիգացիոն գծի կոճակները + + Թաքցնել «Գլխավոր» կոճակը + «Գլխավոր» կոճակը թաքնված է + «Գլխավոր» կոճակը ցուցադրված է + + Թաքցնել «Նմուշներ» կոճակը + «Նմուշներ» կոճակը թաքնված է + «Նմուշներ» կոճակը ցուցադրված է + + Թաքցնել «Բացահայտել» կոճակը + «Բացահայտել» կոճակը թաքնված է + «Բացահայտել» կոճակը ցուցադրված է + + Թաքցնել «Գրադարան» կոճակը + «Գրադարան» կոճակը թաքնված է + «Գրադարան» կոճակը ցուցադրված է + + Թաքցնել «Արդիականացնել» կոճակը + «Արդիականացնել» կոճակը թաքնված է + «Արդիականացնել» կոճակը ցուցադրված է + Թաքցնել նավիգացիոն գիծը + Նավիգացիոն գիծը թաքնված է + Նավիգացիոն գիծը ցուցադրված է + Թաքցնել նավիգացիոն կոճակների պիտակները + Պիտակները թաքնված են + Պիտակները ցուցադրված են + Թաքցնել «Ստացեք Music Premium» պիտակը Պիտակը թաքցված է 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 7d237961b..e9df0e74b 100644 --- a/patches/src/main/resources/addresources/values-in-rID/strings.xml +++ b/patches/src/main/resources/addresources/values-in-rID/strings.xml @@ -1584,11 +1584,46 @@ Mengaktifkan ini dapat membuka kualitas video yang lebih tinggi" Pengulangan permanen diaktifkan Pengulangan permanen dinonaktifkan + + Sembunyikan tombol Transmisi + Tombol Transmisi disembunyikan + Tombol Transmisi ditampilkan + Sembunyikan bilah kategori Bilah kategori disembunyikan Bilah kategori ditampilkan + + Bilah navigasi + Sembunyikan atau ubah tombol bilah navigasi + + Sembunyikan tombol Beranda + Tombol Beranda disembunyikan + Tombol Beranda ditampilkan + + Sembunyikan tombol Cuplikan + Tombol Cuplikan disembunyikan + Tombol Cuplikan ditampilkan + + Sembunyikan tombol Jelajahi + Tombol Jelajahi disembunyikan + Tombol Jelajahi ditampilkan + + Sembunyikan tombol Koleksi + Tombol Koleksi disembunyikan + Tombol Koleksi ditampilkan + + Sembunyikan tombol upgrade + Tombol upgrade disembunyikan + Tombol upgrade ditampilkan + Sembunyikan bilah navigasi + Bilah navigasi disembunyikan + Bilah navigasi ditampilkan + Sembunyikan label tombol navigasi + Label disembunyikan + Label ditampilkan + Sembunyikan label \'Dapatkan Music Premium\' Label disembunyikan 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-is-rIS/strings.xml +++ b/patches/src/main/resources/addresources/values-is-rIS/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 f5a1ad788..11a5d47c3 100644 --- a/patches/src/main/resources/addresources/values-it-rIT/strings.xml +++ b/patches/src/main/resources/addresources/values-it-rIT/strings.xml @@ -1584,11 +1584,46 @@ Abilitare questa opzione può sbloccare qualità video più elevate" La ripetizione permanente è abilitata La ripetizione permanente è disabilitata + + Nascondi pulsante trasmissione + Il pulsante di trasmissione è nascosto + Il pulsante di trasmissione è mostrato + Nascondi barra delle categorie La barra delle categorie è nascosta La barra delle categorie è mostrata + + Barra di navigazione + Nascondi o modifica i pulsanti della barra di navigazione + + Nascondi il pulsante Home + Il pulsante Home è nascosto + Il pulsante Home è mostrato + + Nascondi il pulsante Campioni + Il pulsante Campioni è nascosto + Il pulsante Campioni è mostrato + + Nascondi il pulsante Esplora + Il pulsante Esplora è nascosto + Il pulsante Esplora è mostrato + + Nascondi il pulsante Libreria + Il pulsante Libreria è nascosto + Il pulsante Libreria è mostrato + + Nascondi il pulsante Aggiorna + Il pulsante Aggiorna è nascosto + Il pulsante Aggiorna è mostrato + Nascondi la barra di navigazione + La barra di navigazione è nascosta + La barra di navigazione è mostrata + Nascondi le etichette dei pulsanti di navigazione + Le etichette sono nascoste + Le etichette sono mostrate + Nascondi l\'etichetta \'Ottieni Music Premium\' L\'etichetta è nascosta 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 7480855f6..056e1b5a2 100644 --- a/patches/src/main/resources/addresources/values-iw-rIL/strings.xml +++ b/patches/src/main/resources/addresources/values-iw-rIL/strings.xml @@ -1587,11 +1587,46 @@ Second \"item\" text" חזרה קבועה מופעלת חזרה קבועה מושבתת + + הסתר לחצן שידור + לחצן השידור מוסתר + לחצן השידור מוצג + הסתר סרגל קטגוריות סרגל הקטגוריות מוסתר סרגל הקטגוריות מוצג + + סרגל ניווט + הסתר או שנה לחצני סרגל ניווט + + הסתר לחצן \'דף הבית\' + לחצן \'דף הבית\' מוסתר + לחצן \'דף הבית\' מוצג + + הסתר לחצן \'דוגמיות\' + לחצן \'דוגמיות\' מוסתר + לחצן \'דוגמיות\' מוצג + + הסתר לחצן \'גלו\' + לחצן \'גלו\' מוסתר + לחצן \'גלו\' מוצג + + הסתר לחצן \'ספרייה\' + לחצן \'ספרייה\' מוסתר + לחצן \'ספרייה\' מוצג + + הסתר לחצן \'שדרוג\' + לחצן \'שדרוג\' מוסתר + לחצן \'שדרוג\' מוצג + הסתר סרגל ניווט + סרגל הניווט מוסתר + סרגל הניווט מוצג + הסתר תוויות לחצני ניווט + התוויות מוסתרות + התוויות מוצגות + הסתר תווית \'קבל Premium למוזיקה\' התווית מוסתרת 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 0561b1bba..1a479c21f 100644 --- a/patches/src/main/resources/addresources/values-ja-rJP/strings.xml +++ b/patches/src/main/resources/addresources/values-ja-rJP/strings.xml @@ -1587,11 +1587,46 @@ Automotive レイアウト 常時リピートは有効です\n\nリピート設定が保存され常時適用されます 常時リピートは無効です\n\nリピート設定は保存されず毎回リセットされます + + キャストボタンを非表示 + プレーヤー オーバーレイのキャストボタンは表示されません + プレーヤー オーバーレイのキャストボタンは表示されます + カテゴリバーを非表示 カテゴリバーは表示されません カテゴリバーは表示されます + + ナビゲーションバー + ナビゲーションバーのボタンを非表示または変更 + + ホームボタンを非表示 + ホームボタンは表示されません + ホームボタンは表示されます + + サンプルボタンを非表示 + サンプルボタンは表示されません + サンプルボタンは表示されます + + 探索ボタンを非表示 + 探索ボタンは表示されません + 探索ボタンは表示されます + + ライブラリボタンを非表示 + ライブラリボタンは表示されません + ライブラリボタンは表示されます + + アップグレード ボタンを非表示 + アップグレード ボタンは表示されません + アップグレード ボタンは表示されます + ナビゲーションバーを非表示 + ナビゲーションバーは表示されません + ナビゲーションバーは表示されます + ボタンをアイコンのみで表示 + ナビゲーション ボタンはアイコンのみで表示されます + ナビゲーション ボタンはアイコンと文字で表示されます + 「Music Premium に登録」ラベルを非表示 ラベルは表示されません 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-ka-rGE/strings.xml +++ b/patches/src/main/resources/addresources/values-ka-rGE/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-kk-rKZ/strings.xml +++ b/patches/src/main/resources/addresources/values-kk-rKZ/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-km-rKH/strings.xml +++ b/patches/src/main/resources/addresources/values-km-rKH/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 a46a49eb4..ebdb14402 100644 --- a/patches/src/main/resources/addresources/values-kn-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-kn-rIN/strings.xml @@ -268,8 +268,17 @@ Second \"item\" text" + + + + + + + + + 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 8925347bf..a2e1b0025 100644 --- a/patches/src/main/resources/addresources/values-ko-rKR/strings.xml +++ b/patches/src/main/resources/addresources/values-ko-rKR/strings.xml @@ -1592,11 +1592,46 @@ DeArrow에 대해 자세히 알아보려면 여기를 탭하세요" 영구적인 반복을 활성화합니다 영구적인 반복을 비활성화합니다 + + 크롬캐스트 버튼 숨기기 + 크롬캐스트 버튼이 숨겨집니다 + 크롬캐스트 버튼이 표시됩니다 + 카테고리 바 숨기기 카테고리 바가 숨겨집니다 카테고리 바가 표시됩니다 + + 하단바 + 하단바에서 버튼을 숨기거나 변경할 수 있습니다 + + 홈 버튼 숨기기 + 홈 버튼이 숨겨집니다 + 홈 버튼이 표시됩니다 + + 샘플 버튼 숨기기 + 샘플 버튼이 숨겨집니다 + 샘플 버튼이 표시됩니다 + + 둘러보기 버튼 숨기기 + 둘러보기 버튼이 숨겨집니다 + 둘러보기 버튼이 표시됩니다 + + 보관함 버튼 숨기기 + 보관함 버튼이 숨겨집니다 + 보관함 버튼이 표시됩니다 + + 업그레이드 버튼 숨기기 + 업그레이드 버튼이 숨겨집니다 + 업그레이드 버튼이 표시됩니다 + 하단바 숨기기 + 하단바가 숨겨집니다 + 하단바가 표시됩니다 + 하단바 버튼 라벨 숨기기 + 라벨이 숨겨집니다 + 라벨이 표시됩니다 + Music Premium 가입 라벨 숨기기 Music Premium 가입 라벨이 숨겨집니다 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-ky-rKG/strings.xml +++ b/patches/src/main/resources/addresources/values-ky-rKG/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-lo-rLA/strings.xml +++ b/patches/src/main/resources/addresources/values-lo-rLA/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 a2b993423..fbf726ab5 100644 --- a/patches/src/main/resources/addresources/values-lt-rLT/strings.xml +++ b/patches/src/main/resources/addresources/values-lt-rLT/strings.xml @@ -1586,11 +1586,46 @@ Gali būti atrakinta aukštesnės vaizdo įrašų kokybės, bet galite patirti v Nuolatinis kartojimas įjungtas Nuolatinis kartojimas išjungtas + + Slėpti transliavimo mygtuką + Transliavimo mygtukas paslėptas + Transliavimo mygtukas rodomas + Slėpti kategorijų juostą Kategorijų juosta paslėpta Kategorijų juosta rodoma + + Naršymo juosta + Slėpti arba keisti naršymo juostos mygtukus + + Slėpti mygtuką „Pagrindinis“ + Mygtukas „Pagrindinis“ yra paslėptas + Mygtukas „Pagrindinis“ yra rodomas + + Slėpti mygtuką „Pavyzdžiai“ + Mygtukas „Pavyzdžiai“ yra paslėptas + Mygtukas „Pavyzdžiai“ yra rodomas + + Slėpti mygtuką „Naršyti“ + Mygtukas „Naršyti“ yra paslėptas + Mygtukas „Naršyti“ yra rodomas + + Slėpti mygtuką „Biblioteka“ + Mygtukas „Biblioteka“ yra paslėptas + Mygtukas „Biblioteka“ yra rodomas + + Slėpti mygtuką „Naujinti“ + Mygtukas „Naujinti“ yra paslėptas + Mygtukas „Naujinti“ yra rodomas + Slėpti naršymo juostą + Naršymo juosta yra paslėpta + Naršymo juosta yra rodoma + Slėpti naršymo mygtukų etiketes + Etiketės yra paslėptos + Etiketės yra rodomos + Slėpti „Gauti Music Premium“ etiketę Etiketė paslėpta 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 862ec7422..7640b8328 100644 --- a/patches/src/main/resources/addresources/values-lv-rLV/strings.xml +++ b/patches/src/main/resources/addresources/values-lv-rLV/strings.xml @@ -1586,11 +1586,46 @@ Var tikt atbloķētas augstākas video kvalitātes, taču var rasties video atsk Pastāvīgā atkārtošana ir iespējota Pastāvīgā atkārtošana ir atspējota + + Slēpt apraides pogu + Apraides poga ir paslēpta + Apraides poga ir redzama + Slēpt kategoriju joslu Kategoriju josla ir paslēpta Kategoriju josla ir redzama + + Navigācijas josla + Slēpt vai mainīt navigācijas joslas pogas + + Slēpt pogu Sākums + Poga Sākums ir paslēpta + Poga Sākums ir redzama + + Slēpt pogu Paraugi + Poga Paraugi ir paslēpta + Poga Paraugi ir redzama + + Slēpt pogu Izpētīt + Poga Izpētīt ir paslēpta + Poga Izpētīt ir redzama + + Slēpt pogu Bibliotēka + Poga Bibliotēka ir paslēpta + Poga Bibliotēka ir redzama + + Slēpt pogu Jaunināt + Poga Jaunināt ir paslēpta + Poga Jaunināt ir redzama + Slēpt navigācijas joslu + Navigācijas josla ir paslēpta + Navigācijas josla ir redzama + Slēpt navigācijas pogu etiķetes + Etiķetes ir paslēptas + Etiķetes ir redzamas + Slēpt uzrakstu \"Iegūt Music Premium\" Uzraksts ir paslēpts 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-mk-rMK/strings.xml +++ b/patches/src/main/resources/addresources/values-mk-rMK/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-ml-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-ml-rIN/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-mn-rMN/strings.xml +++ b/patches/src/main/resources/addresources/values-mn-rMN/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-mr-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-mr-rIN/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 177641f2e..e7a089136 100644 --- a/patches/src/main/resources/addresources/values-ms-rMY/strings.xml +++ b/patches/src/main/resources/addresources/values-ms-rMY/strings.xml @@ -254,8 +254,17 @@ Second \"item\" text" + + + + + + + + + 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-my-rMM/strings.xml +++ b/patches/src/main/resources/addresources/values-my-rMM/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-nb-rNO/strings.xml +++ b/patches/src/main/resources/addresources/values-nb-rNO/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 39674e0dc..54e3c3092 100644 --- a/patches/src/main/resources/addresources/values-ne-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-ne-rIN/strings.xml @@ -255,8 +255,17 @@ Second \"item\" text" + + + + + + + + + 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 efe7a43c6..c3bd399d8 100644 --- a/patches/src/main/resources/addresources/values-nl-rNL/strings.xml +++ b/patches/src/main/resources/addresources/values-nl-rNL/strings.xml @@ -1583,11 +1583,46 @@ Het inschakelen hiervan kan hogere videokwaliteiten ontgrendelen" Permanent herhalen is ingeschakeld Permanent herhalen is uitgeschakeld + + Cast-knop verbergen + Cast-knop is verborgen + Cast-knop is weergegeven + Categoriebalk verbergen Categoriebalk is verborgen Categoriebalk wordt weergegeven + + Navigatiebalk + Navigatiebalkknoppen verbergen of wijzigen + + Startknop verbergen + Startknop is verborgen + Startknop wordt weergegeven + + Knop Voorbeelden verbergen + Knop Voorbeelden is verborgen + Knop Voorbeelden wordt weergegeven + + Knop Ontdekken verbergen + Knop Ontdekken is verborgen + Knop Ontdekken wordt weergegeven + + Knop Bibliotheek verbergen + Knop Bibliotheek is verborgen + Knop Bibliotheek wordt weergegeven + + Upgrade-knop verbergen + Upgrade-knop is verborgen + Upgrade-knop wordt weergegeven + Navigatiebalk verbergen + Navigatiebalk is verborgen + Navigatiebalk wordt weergegeven + Labels van navigatieknoppen verbergen + Labels zijn verborgen + Labels worden weergegeven + \'Muziek Premium krijgen\' label verbergen Label is verborgen 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-or-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-or-rIN/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-pa-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-pa-rIN/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 b19d19a24..93b597706 100644 --- a/patches/src/main/resources/addresources/values-pl-rPL/strings.xml +++ b/patches/src/main/resources/addresources/values-pl-rPL/strings.xml @@ -1581,11 +1581,46 @@ Włączenie tego może odblokować wyższe jakości wideo" Stałe powtarzanie jest włączone Stałe powtarzanie jest wyłączone + + Ukryj przycisk Cast + Przycisk Cast jest ukryty + Przycisk Cast jest widoczny + Ukryj pasek kategorii Pasek kategorii jest ukryty Pasek kategorii jest widoczny + + Pasek nawigacji + Ukryj lub zmień przyciski paska nawigacji + + Ukryj przycisk Główna + Przycisk Główna jest ukryty + Przycisk Główna jest pokazany + + Ukryj przycisk Wycinki + Przycisk Wycinki jest ukryty + Przycisk Wycinki jest pokazany + + Ukryj przycisk Przeglądaj + Przycisk Przeglądaj jest ukryty + Przycisk Przeglądaj jest pokazany + + Ukryj przycisk Biblioteka + Przycisk Biblioteka jest ukryty + Przycisk Biblioteka jest pokazany + + Ukryj przycisk Ulepsz + Przycisk Ulepsz jest ukryty + Przycisk Ulepsz jest pokazany + Ukryj pasek nawigacji + Pasek nawigacji jest ukryty + Pasek nawigacji jest pokazany + Ukryj etykiety przycisków nawigacji + Etykiety są ukryte + Etykiety są pokazane + Ukryj etykietę „Uzyskaj Music Premium” Etykieta jest ukryta 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 f32cbe2a1..a81842d78 100644 --- a/patches/src/main/resources/addresources/values-pt-rBR/strings.xml +++ b/patches/src/main/resources/addresources/values-pt-rBR/strings.xml @@ -1582,11 +1582,46 @@ Habilitar isso pode desbloquear qualidades de vídeo mais altas" Repetição permanente está ativada Repetição permanente está desativada + + Ocultar botão de transmissão + Botão de transmissão está oculto + Botão de transmissão está visível + Ocultar barra de categoria Barra de categoria está oculta Barra de categoria é exibida + + Barra de navegação + Ocultar ou alterar botões da barra de navegação + + Ocultar botão Início + Botão Início oculto + Botão Início visível + + Ocultar botão Amostras + Botão Amostras oculto + Botão Amostras visível + + Ocultar botão Explorar + Botão Explorar oculto + Botão Explorar visível + + Ocultar botão Biblioteca + Botão Biblioteca oculto + Botão Biblioteca visível + + Ocultar botão Fazer upgrade + Botão Fazer upgrade oculto + Botão Fazer upgrade visível + Ocultar barra de navegação + Barra de navegação oculta + Barra de navegação visível + Ocultar rótulos dos botões de navegação + Rótulos ocultos + Rótulos visíveis + Ocultar o rótulo \'Obter Music Premium\' Rótulo está oculto 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 4bffd019f..f840c6ccb 100644 --- a/patches/src/main/resources/addresources/values-pt-rPT/strings.xml +++ b/patches/src/main/resources/addresources/values-pt-rPT/strings.xml @@ -1585,11 +1585,46 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"Repetição permanente está ativada Repetição permanente está desativada + + Ocultar botão de transmissão + O botão de transmissão está oculto + O botão de transmissão está exibido + Ocultar barra de categorias Barra de categorias está oculta Barra de categorias está exibida + + Barra de navegação + Ocultar ou alterar botões da barra de navegação + + Ocultar botão Início + Botão Início está oculto + Botão Início está exibido + + Ocultar botão Amostras + Botão Amostras está oculto + Botão Amostras está exibido + + Ocultar botão Explorar + Botão Explorar está oculto + Botão Explorar está exibido + + Ocultar botão Biblioteca + Botão Biblioteca está oculto + Botão Biblioteca está exibido + + Ocultar botão Fazer upgrade + Botão Fazer upgrade está oculto + Botão Fazer upgrade está exibido + Ocultar barra de navegação + Barra de navegação está oculta + Barra de navegação está exibida + Ocultar rótulos dos botões de navegação + Rótulos estão ocultos + Rótulos estão exibidos + Ocultar o rótulo \"Obter Music Premium\" Rótulo está oculto 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 b94cc4106..ff7331b28 100644 --- a/patches/src/main/resources/addresources/values-ro-rRO/strings.xml +++ b/patches/src/main/resources/addresources/values-ro-rRO/strings.xml @@ -1584,11 +1584,46 @@ Activarea acestei opțiuni poate debloca calități video mai mari" Repetarea permanentă este activată Repetarea permanentă este dezactivată + + Ascunde butonul de transmisie + Butonul de transmisie este ascuns + Butonul de transmisie este afișat + Ascunde bara de categorii Bara de categorii este ascunsă Bara de categorii este afișată + + Bară de navigare + Ascundeți sau modificați butoanele barei de navigare + + Ascundeți butonul Acasă + Butonul Acasă este ascuns + Butonul Acasă este afișat + + Ascundeți butonul Mostre + Butonul Mostre este ascuns + Butonul Mostre este afișat + + Ascundeți butonul Explorare + Butonul Explorare este ascuns + Butonul Explorare este afișat + + Ascundeți butonul Bibliotecă + Butonul Bibliotecă este ascuns + Butonul Bibliotecă este afișat + + Ascundeți butonul Upgrade + Butonul Upgrade este ascuns + Butonul Upgrade este afișat + Ascundeți bara de navigare + Bara de navigare este ascunsă + Bara de navigare este afișată + Ascundeți etichetele butoanelor de navigare + Etichetele sunt ascunse + Etichetele sunt afișate + Ascunde eticheta „Obține Music Premium” Eticheta este ascunsă 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 cf31e0a5e..2f7d3ef57 100644 --- a/patches/src/main/resources/addresources/values-ru-rRU/strings.xml +++ b/patches/src/main/resources/addresources/values-ru-rRU/strings.xml @@ -1592,11 +1592,46 @@ Second \"item\" text" Постоянный повтор включен Постоянный повтор отключен + + Скрыть кнопку \"Трансляция\" + Кнопка \"Трансляция\" в плеере скрыта + Кнопка \"Трансляция\" в плеере показана + Скрыть панель категорий Панель категорий скрыта Панель категорий показана + + Панель навигации + Скрыть или изменить кнопки панели навигации + + Скрыть кнопку \"Главная\" + Кнопка \"Главная\" в панели навигации скрыта + Кнопка \"Главная\" в панели навигации показана + + Скрыть кнопку \"Семплы\" + Кнопка \"Семплы\" скрыта + Кнопка \"Семплы\" показана + + Скрыть кнопку \"Обзор\" + Кнопка \"Обзор\" скрыта + Кнопка \"Обзор\" показана + + Скрыть кнопку \"Библиотека\" + Кнопка \"Библиотека\" скрыта + Кнопка \"Библиотека\" показана + + Скрыть кнопку \"Премиум\" + Кнопка \"Премиум\" скрыта + Кнопка \"Премиум\" показана + Скрыть панель навигации + Панель навигации в Shorts скрыта + Панель навигации в Shorts показана + Скрыть подписи кнопок навигации + Подписи кнопок навигации скрыты + Подписи кнопок навигации показаны + Скрыть ярлык \"Купить Music Premium\" Ярлык скрыт 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-si-rLK/strings.xml +++ b/patches/src/main/resources/addresources/values-si-rLK/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 8b14f7f09..c8a22c223 100644 --- a/patches/src/main/resources/addresources/values-sk-rSK/strings.xml +++ b/patches/src/main/resources/addresources/values-sk-rSK/strings.xml @@ -1578,11 +1578,46 @@ Povolením tejto možnosti môžete odomknúť vyššie kvality videa" Trvalé opakovanie je povolené Trvalé opakovanie je zakázané + + Skryť tlačidlo prenášania + Tlačidlo prenášania je skryté + Tlačidlo prenášania je zobrazené + Skryť lištu kategórií Lišta kategórií je skrytá Lišta kategórií je zobrazená + + Navigačný panel + Skryť alebo zmeniť tlačidlá navigačného panela + + Skryť tlačidlo Domov + Tlačidlo Domov je skryté + Tlačidlo Domov je zobrazené + + Skryť tlačidlo Ukážky + Tlačidlo Ukážky je skryté + Tlačidlo Ukážky je zobrazené + + Skryť tlačidlo Preskúmať + Tlačidlo Preskúmať je skryté + Tlačidlo Preskúmať je zobrazené + + Skryť tlačidlo Knižnica + Tlačidlo Knižnica je skryté + Tlačidlo Knižnica je zobrazené + + Skryť tlačidlo Inovovať + Tlačidlo Inovovať je skryté + Tlačidlo Inovovať je zobrazené + Skryť navigačný panel + Navigačný panel je skrytý + Navigačný panel je zobrazený + Skryť popisky navigačných tlačidiel + Popisky sú skryté + Popisky sú zobrazené + Skryť štítok „Získajte Music Premium“ Štítok je skrytý 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 a72fe78c7..7c423d2e7 100644 --- a/patches/src/main/resources/addresources/values-sl-rSI/strings.xml +++ b/patches/src/main/resources/addresources/values-sl-rSI/strings.xml @@ -1585,11 +1585,46 @@ Omogočanje tega lahko odklene višje kakovosti videa" Trajno ponavljanje je omogočeno Trajno ponavljanje je onemogočeno + + Skrij gumb za predvajanje + Gumb za predvajanje je skrit + Gumb za predvajanje je prikazan + Skrij vrstico kategorij Vrstica kategorij je skrita Vrstica kategorij je prikazana + + Navigacijska vrstica + Skrij ali spremeni gumbe navigacijske vrstice + + Skrij gumb Domov + Gumb Domov je skrit + Gumb Domov je prikazan + + Skrij gumb Vzorci + Gumb Vzorci je skrit + Gumb Vzorci je prikazan + + Skrij gumb Raziskovanje + Gumb Raziskovanje je skrit + Gumb Raziskovanje je prikazan + + Skrij gumb Knjižnica + Gumb Knjižnica je skrit + Gumb Knjižnica je prikazan + + Skrij gumb Nadgradi + Gumb Nadgradi je skrit + Gumb Nadgradi je prikazan + Skrij navigacijsko vrstico + Navigacijska vrstica je skrita + Navigacijska vrstica je prikazana + Skrij oznake navigacijskih gumbov + Oznake so skrite + Oznake so prikazane + Skrij oznako \'Pridobi Music Premium\' Oznaka je skrita 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 ec07f6b47..20ff26be3 100644 --- a/patches/src/main/resources/addresources/values-sq-rAL/strings.xml +++ b/patches/src/main/resources/addresources/values-sq-rAL/strings.xml @@ -1583,11 +1583,46 @@ Aktivizimi i kësaj mund të zhbllokojë cilësi më të larta video" Përsëritja e përhershme është aktivizuar Përsëritja e përhershme është çaktivizuar + + Fshih butonin e transmetimit + Butoni i transmetimit është fshehur + Butoni i transmetimit është shfaqur + Fshi shiritin e kategorive Shiriti i kategorive është i fshehur Shiriti i kategorive është i shfaqur + + Shiriti i navigimit + Fshih ose ndrysho butonat e shiritit të navigimit + + Fshih butonin Kryesore + Butoni Kryesore është fshehur + Butoni Kryesore është shfaqur + + Fshih butonin Mostra + Butoni Mostra është fshehur + Butoni Mostra është shfaqur + + Fshih butonin Eksploro + Butoni Eksploro është fshehur + Butoni Eksploro është shfaqur + + Fshih butonin Biblioteka + Butoni Biblioteka është fshehur + Butoni Biblioteka është shfaqur + + Fshih butonin Azhorno + Butoni Azhorno është fshehur + Butoni Azhorno është shfaqur + Fshih shiritin e navigimit + Shiriti i navigimit është fshehur + Shiriti i navigimit është shfaqur + Fshih etiketat e butonave të navigimit + Etiketat janë fshehur + Etiketat janë shfaqur + Fshi etiketën \'Merr Music Premium\' Etiketa është e fshehur 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 eae05e2e4..fb81b0167 100644 --- a/patches/src/main/resources/addresources/values-sr-rCS/strings.xml +++ b/patches/src/main/resources/addresources/values-sr-rCS/strings.xml @@ -1584,11 +1584,46 @@ Ako ovo omogućite, mogu biti otključani viši kvaliteti videa" Trajno ponavljanje je omogućeno Trajno ponavljanje je onemogućeno + + Sakrij dugme „Prenos” + Dugme „Prenos” je skriveno + Dugme „Prenos” je prikazano + Sakrij traku kategorija Traka kategorija je skrivena Traka kategorija je prikazana + + Traka za navigaciju + Sakrijte ili promenite dugmad trake za navigaciju + + Sakrij dugme „Početna” + Dugme „Početna” je skriveno + Dugme „Početna” je prikazano + + Sakrij dugme „Uzorci” + Dugme „Uzorci” je skriveno + Dugme „Uzorci” je prikazano + + Sakrij dugme „Istražite” + Dugme „Istražite” je skriveno + Dugme „Istražite” je prikazano + + Sakrij dugme „Biblioteka” + Dugme „Biblioteka” je skriveno + Dugme „Biblioteka” je prikazano + + Sakrij dugme „Nadogradite” + Dugme „Nadogradite” je skriveno + Dugme „Nadogradite” je prikazano + Sakrij traku za navigaciju + Traka za navigaciju je skrivena + Traka za navigaciju je prikazana + Sakrij oznake navigacionih dugmadi + Oznake su skrivene + Oznake su prikazane + Sakrij oznaku „Nabavite Music Premium” Oznaka je skrivena 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 e84787fda..fd0da35ea 100644 --- a/patches/src/main/resources/addresources/values-sr-rSP/strings.xml +++ b/patches/src/main/resources/addresources/values-sr-rSP/strings.xml @@ -1587,11 +1587,46 @@ Second \"item\" text" Трајно понављање је омогућено Трајно понављање је онемогућено + + Сакриј дугме „Пребацивање” + Дугме „Пребацивање” је скривено + Дугме „Пребацивање” је приказано + Сакриј траку категорија Трака категорија је скривена Трака категорија је приказана + + Трака за навигацију + Сакријте или промените дугмад траке за навигацију + + Сакриј дугме „Почетна” + Дугме „Почетна” је скривено + Дугме „Почетна” је приказано + + Сакриј дугме „Узорци” + Дугме „Узорци” је скривено + Дугме „Узорци” је приказано + + Сакриј дугме „Истражи” + Дугме „Истражи” је скривено + Дугме „Истражи” је приказано + + Сакриј дугме „Библиотека” + Дугме „Библиотека” је скривено + Дугме „Библиотека” је приказано + + Сакриј дугме „Надогради” + Дугме „Надогради” је скривено + Дугме „Надогради” је приказано + Сакриј траку за навигацију + Трака за навигацију је скривена + Трака за навигацију је приказана + Сакриј ознаке дугмади за навигацију + Ознаке су скривене + Ознаке су приказане + Сакриј ознаку „Набавите Music Premium” Ознака је скривена 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 d0642166d..62901c1e7 100644 --- a/patches/src/main/resources/addresources/values-sv-rSE/strings.xml +++ b/patches/src/main/resources/addresources/values-sv-rSE/strings.xml @@ -1584,11 +1584,46 @@ Om du aktiverar detta kan högre videokvaliteter låsas upp" Permanent upprepning är aktiverad Permanent upprepning är inaktiverad + + Dölj knappen Casta + Knappen Casta är dold + Knappen Casta visas + Dölj kategorifält Kategorifältet är dolt Kategorifältet visas + + Navigationsfältet + Dölj eller ändra knappar i navigeringsfältet + + Dölj Hem-knappen + Knappen Hem är dold + Knappen Hem visas + + Dölj Klipp-knappen + Klipp-knappen är dold + Klipp-knappen visas + + Dölj Utforska-knappen + Utforska-knappen är dold + Utforska-knappen visas + + Dölj Bibliotek-knappen + Bibliotek-knappen är dold + Bibliotek-knappen visas + + Dölj Uppgradera-knappen + Uppgradera-knappen är dold + Uppgradera-knappen visas + Dölj navigeringsfältet + Navigeringsfältet är dolt + Navigeringsfältet visas + Dölj etiketter för navigeringsknappar + Etiketter är dolda + Etiketter visas + Dölj etiketten \"Skaffa Music Premium\" Etiketten är dold 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-sw-rKE/strings.xml +++ b/patches/src/main/resources/addresources/values-sw-rKE/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-ta-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-ta-rIN/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-te-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-te-rIN/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 189784fb2..c8783aed1 100644 --- a/patches/src/main/resources/addresources/values-th-rTH/strings.xml +++ b/patches/src/main/resources/addresources/values-th-rTH/strings.xml @@ -1587,11 +1587,46 @@ User id ของคุณเหมือนกับรหัสผ่าน เปิดใช้งานเล่นซ้ำถาวรแล้ว ปิดใช้งานเล่นซ้ำถาวรแล้ว + + ซ่อนปุ่มแคสต์ + ปุ่มแคสต์ซ่อนอยู่ + ปุ่มแคสต์แสดงอยู่ + ซ่อนแถบหมวดหมู่ ซ่อนแถบหมวดหมู่แล้ว แสดงแถบหมวดหมู่แล้ว + + แถบนำทาง + ซ่อนหรือเปลี่ยนปุ่มแถบนำทาง + + ซ่อนปุ่มหน้าแรก + ซ่อนปุ่มหน้าแรกแล้ว + แสดงปุ่มหน้าแรกแล้ว + + ซ่อนปุ่มตัวอย่าง + ซ่อนปุ่มตัวอย่างแล้ว + แสดงปุ่มตัวอย่างแล้ว + + ซ่อนปุ่มสำรวจ + ซ่อนปุ่มสำรวจแล้ว + แสดงปุ่มสำรวจแล้ว + + ซ่อนปุ่มคลัง + ซ่อนปุ่มคลังแล้ว + แสดงปุ่มคลังแล้ว + + ซ่อนปุ่มอัปเกรด + ซ่อนปุ่มอัปเกรดแล้ว + แสดงปุ่มอัปเกรดแล้ว + ซ่อนแถบนำทาง + ซ่อนแถบนำทางแล้ว + แสดงแถบนำทางแล้ว + ซ่อนป้ายกำกับปุ่มนำทาง + ซ่อนป้ายกำกับแล้ว + แสดงป้ายกำกับแล้ว + ซ่อนป้าย \'รับ Music Premium\' ซ่อนป้ายแล้ว 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 726beeda2..e38a3a8d8 100644 --- a/patches/src/main/resources/addresources/values-tr-rTR/strings.xml +++ b/patches/src/main/resources/addresources/values-tr-rTR/strings.xml @@ -1592,11 +1592,46 @@ Bunu etkinleştirmek daha yüksek video kalitelerini açabilir" Kalıcı tekrar etkin Kalıcı tekrar devre dışı + + Yayınla düğmesini gizle + Yayınla düğmesi gizli + Yayınla düğmesi görünür + Kategori çubuğunu gizle Kategori çubuğu gizli Kategori çubuğu görünür + + Gezinme çubuğu + Gezinme çubuğundaki düğmeleri gizle veya değiştir + + Ana Sayfa düğmesini gizle + Ana Sayfa düğmesi gizli + Ana Sayfa düğmesi görünür + + Sana Özel düğmesini gizle + Sana Özel düğmesi gizli + Sana Özel düğmesi görünür + + Keşfet düğmesini gizle + Keşfet düğmesi gizli + Keşfet düğmesi görünür + + Kitaplık düğmesini gizle + Kitaplık düğmesi gizli + Kitaplık düğmesi görünür + + Yükselt düğmesini gizle + Yükselt düğmesi gizli + Yükselt düğmesi görünür + Gezinme çubuğunu gizle + Gezinme çubuğu gizli + Gezinme çubuğu görünür + Gezinme düğmeleri etiketlerini gizle + Etiketler gizli + Etiketler görünür + \'Müzik Premium Al\' etiketini gizle Etiket gizli 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 11baf5759..3267b6222 100644 --- a/patches/src/main/resources/addresources/values-uk-rUA/strings.xml +++ b/patches/src/main/resources/addresources/values-uk-rUA/strings.xml @@ -1584,11 +1584,46 @@ Second \"item\" text" Постійний повтор увімкнено Постійний повтор вимкнено + + Приховати кнопку трансляції + Кнопку \"Трансляція\" у відеоплеєрі приховано + Кнопка \"Трансляція\" у відеоплеєрі показується + Приховати панель категорій Панель категорій приховано Панель категорій показується + + Панель навігації + Приховати або змінити кнопки панелі навігації + + Приховати кнопку \"Головна\" + Кнопку \"Головна\" приховано на панелі навігації + Кнопка \"Головна\" показується на панелі навігації + + Приховати кнопку \"Зразки\" + Кнопку \"Зразки\" приховано + Кнопка \"Зразки\" показується + + Приховати кнопку \"Огляд\" + Кнопку \"Огляд\" приховано + Кнопка \"Огляд\" показується + + Приховати кнопку \"Бібліотека\" + Кнопку \"Бібліотека\" приховано + Кнопка \"Бібліотека\" показується + + Приховати кнопку \"Підписка\" + Кнопку \"Підписка\" приховано + Кнопка \"Підписка\" показується + Приховати панель навігації + Панель навігації приховано + Панель навігації показується + Приховати підписи кнопок навігації + Підписи кнопок навігації приховано + Підписи кнопок навігації показуються + Приховати Пункт \"Підписатися на Music Premium\" Пункт приховано 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-ur-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-ur-rIN/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-uz-rUZ/strings.xml +++ b/patches/src/main/resources/addresources/values-uz-rUZ/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + 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 4cea6ef05..4bf3abc1a 100644 --- a/patches/src/main/resources/addresources/values-vi-rVN/strings.xml +++ b/patches/src/main/resources/addresources/values-vi-rVN/strings.xml @@ -1591,11 +1591,46 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"Lặp lại vĩnh viễn đã được bật Lặp lại vĩnh viễn đã bị tắt + + Ẩn nút truyền + Nút truyền đã bị ẩn + Nút truyền được hiển thị + Ẩn thanh danh mục Thanh danh mục đã bị ẩn Thanh danh mục được hiển thị + + Thanh điều hướng + Ẩn hoặc thay đổi các nút trên thanh điều hướng + + Ẩn nút Trang chủ + Nút Trang chủ đã bị ẩn + Nút Trang chủ được hiển thị + + Ẩn nút Mẫu + Nút Mẫu đã bị ẩn + Nút Mẫu được hiển thị + + Ẩn nút Khám phá + Nút Khám phá đã bị ẩn + Nút Khám phá được hiển thị + + Ẩn nút Thư viện + Nút Thư viện đã bị ẩn + Nút Thư viện được hiển thị + + Ẩn nút Nâng cấp + Nút Nâng cấp đã bị ẩn + Nút Nâng cấp được hiển thị + Ẩn thanh điều hướng + Thanh điều hướng đã bị ẩn + Thanh điều hướng được hiển thị + Ẩn nhãn nút điều hướng + Nhãn đã bị ẩn + Nhãn được hiển thị + Ẩn nhãn \'Nhận Music Premium\' Nhãn đã bị ẩn 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 392bc2024..3acec7405 100644 --- a/patches/src/main/resources/addresources/values-zh-rCN/strings.xml +++ b/patches/src/main/resources/addresources/values-zh-rCN/strings.xml @@ -1590,11 +1590,46 @@ Second \"item\" text" 已启用永久重复播放 已禁用永久重复播放 + + 隐藏投射按钮 + 投射按钮已隐藏 + 投射按钮已显示 + 隐藏类别栏 类别栏已隐藏 类别栏已显示 + + 导航栏 + 隐藏或更改导航栏按钮 + + 隐藏主页按钮 + 主页按钮已隐藏 + 主页按钮已显示 + + 隐藏精选按钮 + 精选按钮已隐藏 + 精选按钮已显示 + + 隐藏探索按钮 + 探索按钮已隐藏 + 探索按钮已显示 + + 隐藏媒体库按钮 + 媒体库按钮已隐藏 + 媒体库按钮已显示 + + 隐藏升级按钮 + 升级按钮已隐藏 + 升级按钮已显示 + 隐藏导航栏 + 导航栏已隐藏 + 导航栏已显示 + 隐藏导航按钮标签 + 标签已隐藏 + 标签已显示 + 隐藏“获取音乐高级版”标签 标签已隐藏 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 36b19264b..b1430178b 100644 --- a/patches/src/main/resources/addresources/values-zh-rTW/strings.xml +++ b/patches/src/main/resources/addresources/values-zh-rTW/strings.xml @@ -1595,11 +1595,46 @@ Second \"item\" text" 永久重複播放已啟用 永久重複播放已停用 + + 隱藏投放按鈕 + 投放按鈕已隱藏 + 投放按鈕已顯示 + 隱藏類別列 類別列已隱藏 類別列已顯示 + + 導覽列 + 隱藏或變更導覽列按鈕 + + 隱藏「首頁」按鈕 + 「首頁」按鈕已隱藏 + 「首頁」按鈕已顯示 + + 隱藏「取樣」按鈕 + 「取樣」按鈕已隱藏 + 「取樣」按鈕已顯示 + + 隱藏「探索」按鈕 + 「探索」按鈕已隱藏 + 「探索」按鈕已顯示 + + 隱藏「媒體庫」按鈕 + 「媒體庫」按鈕已隱藏 + 「媒體庫」按鈕已顯示 + + 隱藏「升級」按鈕 + 「升級」按鈕已隱藏 + 「升級」按鈕已顯示 + 隱藏導覽列 + 導覽列已隱藏 + 導覽列已顯示 + 隱藏導覽按鈕標籤 + 已隱藏「標籤」 + 已顯示「標籤」 + 隱藏「取得 Music Premium」標籤 標籤已隱藏 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 98a3659f6..bad4f0c2d 100644 --- a/patches/src/main/resources/addresources/values-zu-rZA/strings.xml +++ b/patches/src/main/resources/addresources/values-zu-rZA/strings.xml @@ -253,8 +253,17 @@ Second \"item\" text" + + + + + + + + + From 418f5945c213313f9a77cac9a5c326d89c754dfd Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Sat, 20 Sep 2025 16:33:03 +0400 Subject: [PATCH 10/11] feat(YouTube Music): Add `Enable debugging` patch (#5939) --- .../shared}/patches/EnableDebuggingPatch.java | 2 +- patches/api/patches.api | 4 + .../misc/debugging/EnableDebuggingPatch.kt | 25 +++ .../music/misc/settings/SettingsPatch.kt | 42 ++--- .../misc/debugging/EnableDebuggingPatch.kt | 147 ++++++++++++++++ .../shared/misc/debugging/Fingerprints.kt | 35 ++++ .../misc/debugging/EnableDebuggingPatch.kt | 157 +++--------------- .../resources/addresources/values/strings.xml | 18 +- 8 files changed, 257 insertions(+), 173 deletions(-) rename extensions/{youtube/src/main/java/app/revanced/extension/youtube => shared/library/src/main/java/app/revanced/extension/shared}/patches/EnableDebuggingPatch.java (98%) create mode 100644 patches/src/main/kotlin/app/revanced/patches/music/misc/debugging/EnableDebuggingPatch.kt create mode 100644 patches/src/main/kotlin/app/revanced/patches/shared/misc/debugging/EnableDebuggingPatch.kt create mode 100644 patches/src/main/kotlin/app/revanced/patches/shared/misc/debugging/Fingerprints.kt diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/EnableDebuggingPatch.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/patches/EnableDebuggingPatch.java similarity index 98% rename from extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/EnableDebuggingPatch.java rename to extensions/shared/library/src/main/java/app/revanced/extension/shared/patches/EnableDebuggingPatch.java index ff891edc1..424ba7b12 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/EnableDebuggingPatch.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/patches/EnableDebuggingPatch.java @@ -1,4 +1,4 @@ -package app.revanced.extension.youtube.patches; +package app.revanced.extension.shared.patches; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; diff --git a/patches/api/patches.api b/patches/api/patches.api index 69db9f4de..aeaab90db 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -401,6 +401,10 @@ public final class app/revanced/patches/music/misc/backgroundplayback/Background public static final fun getBackgroundPlaybackPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } +public final class app/revanced/patches/music/misc/debugging/EnableDebuggingPatchKt { + public static final fun getEnableDebuggingPatch ()Lapp/revanced/patcher/patch/BytecodePatch; +} + public final class app/revanced/patches/music/misc/extension/SharedExtensionPatchKt { public static final fun getSharedExtensionPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } diff --git a/patches/src/main/kotlin/app/revanced/patches/music/misc/debugging/EnableDebuggingPatch.kt b/patches/src/main/kotlin/app/revanced/patches/music/misc/debugging/EnableDebuggingPatch.kt new file mode 100644 index 000000000..f4747b2fc --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/music/misc/debugging/EnableDebuggingPatch.kt @@ -0,0 +1,25 @@ +package app.revanced.patches.music.misc.debugging + +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.debugging.enableDebuggingPatch + +@Suppress("unused") +val enableDebuggingPatch = enableDebuggingPatch( + block = { + dependsOn( + sharedExtensionPatch, + settingsPatch, + ) + + compatibleWith( + "com.google.android.apps.youtube.music"( + "7.29.52" + ) + ) + }, + // String feature flag does not appear to be present with YT Music. + hookStringFeatureFlag = false, + preferenceScreen = PreferenceScreen.MISC +) diff --git a/patches/src/main/kotlin/app/revanced/patches/music/misc/settings/SettingsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/music/misc/settings/SettingsPatch.kt index 09fab446b..5d282b715 100644 --- a/patches/src/main/kotlin/app/revanced/patches/music/misc/settings/SettingsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/music/misc/settings/SettingsPatch.kt @@ -8,12 +8,16 @@ import app.revanced.patches.all.misc.resources.addResources import app.revanced.patches.all.misc.resources.addResourcesPatch import app.revanced.patches.music.misc.extension.sharedExtensionPatch import app.revanced.patches.shared.misc.mapping.resourceMappingPatch -import app.revanced.patches.shared.misc.settings.preference.* +import app.revanced.patches.shared.misc.settings.preference.BasePreference +import app.revanced.patches.shared.misc.settings.preference.BasePreferenceScreen +import app.revanced.patches.shared.misc.settings.preference.IntentPreference +import app.revanced.patches.shared.misc.settings.preference.NonInteractivePreference import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference -import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference.Sorting -import app.revanced.patches.shared.misc.settings.preference.SwitchPreference import app.revanced.patches.shared.misc.settings.settingsPatch -import app.revanced.util.* +import app.revanced.util.ResourceGroup +import app.revanced.util.copyResources +import app.revanced.util.copyXmlNode +import app.revanced.util.inputStreamFromBundledResource import com.android.tools.smali.dexlib2.util.MethodUtil private const val BASE_ACTIVITY_HOOK_CLASS_DESCRIPTOR = @@ -23,7 +27,6 @@ private const val GOOGLE_API_ACTIVITY_HOOK_CLASS_DESCRIPTOR = private val preferences = mutableSetOf() - private val settingsResourcePatch = resourcePatch { dependsOn( resourceMappingPatch, @@ -87,27 +90,6 @@ val settingsPatch = bytecodePatch( addResources("music", "misc.settings.settingsPatch") addResources("shared", "misc.debugging.enableDebuggingPatch") - // Should make a separate debugging patch, but for now include it with all installations. - PreferenceScreen.MISC.addPreferences( - PreferenceScreenPreference( - key = "revanced_debug_screen", - sorting = Sorting.UNSORTED, - preferences = setOf( - SwitchPreference("revanced_debug"), - NonInteractivePreference( - "revanced_debug_export_logs_to_clipboard", - tag = "app.revanced.extension.shared.settings.preference.ExportLogToClipboardPreference", - selectable = true - ), - NonInteractivePreference( - "revanced_debug_logs_clear_buffer", - tag = "app.revanced.extension.shared.settings.preference.ClearLogBufferPreference", - selectable = true - ) - ) - ) - ) - // Add an "About" preference to the top. preferences += NonInteractivePreference( key = "revanced_settings_music_screen_0_about", @@ -154,19 +136,19 @@ fun newIntent(settingsName: String) = IntentPreference.Intent( object PreferenceScreen : BasePreferenceScreen() { val ADS = Screen( - "revanced_settings_music_screen_1_ads", + key = "revanced_settings_music_screen_1_ads", summaryKey = null ) val GENERAL = Screen( - "revanced_settings_music_screen_2_general", + key = "revanced_settings_music_screen_2_general", summaryKey = null ) val PLAYER = Screen( - "revanced_settings_music_screen_3_player", + key = "revanced_settings_music_screen_3_player", summaryKey = null ) val MISC = Screen( - "revanced_settings_music_screen_4_misc", + key = "revanced_settings_music_screen_4_misc", summaryKey = null ) diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/debugging/EnableDebuggingPatch.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/debugging/EnableDebuggingPatch.kt new file mode 100644 index 000000000..85cf53bd0 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/debugging/EnableDebuggingPatch.kt @@ -0,0 +1,147 @@ +package app.revanced.patches.shared.misc.debugging + +import app.revanced.patcher.extensions.InstructionExtensions.addInstructions +import app.revanced.patcher.extensions.InstructionExtensions.getInstruction +import app.revanced.patcher.patch.BytecodePatchBuilder +import app.revanced.patcher.patch.BytecodePatchContext +import app.revanced.patcher.patch.bytecodePatch +import app.revanced.patches.all.misc.resources.addResources +import app.revanced.patches.all.misc.resources.addResourcesPatch +import app.revanced.patches.shared.misc.settings.preference.BasePreference +import app.revanced.patches.shared.misc.settings.preference.BasePreferenceScreen +import app.revanced.patches.shared.misc.settings.preference.NonInteractivePreference +import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference +import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference.Sorting +import app.revanced.patches.shared.misc.settings.preference.SwitchPreference +import app.revanced.util.findInstructionIndicesReversedOrThrow +import app.revanced.util.indexOfFirstInstructionOrThrow +import app.revanced.util.indexOfFirstInstructionReversedOrThrow +import com.android.tools.smali.dexlib2.Opcode +import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction + +private const val EXTENSION_CLASS_DESCRIPTOR = + "Lapp/revanced/extension/shared/patches/EnableDebuggingPatch;" + +/** + * Patch shared with YouTube and YT Music. + */ +internal fun enableDebuggingPatch( + block: BytecodePatchBuilder.() -> Unit = {}, + executeBlock: BytecodePatchContext.() -> Unit = {}, + hookStringFeatureFlag: Boolean, + preferenceScreen: BasePreferenceScreen.Screen, + additionalDebugPreferences: List = emptyList() +) = bytecodePatch( + name = "Enable debugging", + description = "Adds options for debugging and exporting ReVanced logs to the clipboard.", +) { + + dependsOn(addResourcesPatch) + + block() + + execute { + executeBlock() + + addResources("shared", "misc.debugging.enableDebuggingPatch") + + val preferences = mutableSetOf( + SwitchPreference("revanced_debug"), + ) + + preferences.addAll(additionalDebugPreferences) + + preferences.addAll( + listOf( + SwitchPreference("revanced_debug_stacktrace"), + SwitchPreference("revanced_debug_toast_on_error"), + NonInteractivePreference( + "revanced_debug_export_logs_to_clipboard", + tag = "app.revanced.extension.shared.settings.preference.ExportLogToClipboardPreference", + selectable = true + ), + NonInteractivePreference( + "revanced_debug_logs_clear_buffer", + tag = "app.revanced.extension.shared.settings.preference.ClearLogBufferPreference", + selectable = true + ) + ) + ) + + preferenceScreen.addPreferences( + PreferenceScreenPreference( + key = "revanced_debug_screen", + sorting = Sorting.UNSORTED, + preferences = preferences, + ) + ) + + // Hook the methods that look up if a feature flag is active. + experimentalBooleanFeatureFlagFingerprint.match( + experimentalFeatureFlagParentFingerprint.originalClassDef + ).method.apply { + findInstructionIndicesReversedOrThrow(Opcode.RETURN).forEach { index -> + val register = getInstruction(index).registerA + + addInstructions( + index, + """ + invoke-static { v$register, p1 }, $EXTENSION_CLASS_DESCRIPTOR->isBooleanFeatureFlagEnabled(ZLjava/lang/Long;)Z + move-result v$register + """ + ) + } + } + + experimentalDoubleFeatureFlagFingerprint.match( + experimentalFeatureFlagParentFingerprint.originalClassDef + ).method.apply { + val insertIndex = indexOfFirstInstructionOrThrow(Opcode.MOVE_RESULT_WIDE) + + addInstructions( + insertIndex, + """ + move-result-wide v0 # Also clobbers v1 (p0) since result is wide. + invoke-static/range { v0 .. v5 }, $EXTENSION_CLASS_DESCRIPTOR->isDoubleFeatureFlagEnabled(DJD)D + move-result-wide v0 + return-wide v0 + """ + ) + } + + experimentalLongFeatureFlagFingerprint.match( + experimentalFeatureFlagParentFingerprint.originalClassDef + ).method.apply { + val insertIndex = indexOfFirstInstructionOrThrow(Opcode.MOVE_RESULT_WIDE) + + addInstructions( + insertIndex, + """ + move-result-wide v0 + invoke-static/range { v0 .. v5 }, $EXTENSION_CLASS_DESCRIPTOR->isLongFeatureFlagEnabled(JJJ)J + move-result-wide v0 + return-wide v0 + """ + ) + } + + if (hookStringFeatureFlag) experimentalStringFeatureFlagFingerprint.match( + experimentalFeatureFlagParentFingerprint.originalClassDef + ).method.apply { + val insertIndex = indexOfFirstInstructionReversedOrThrow(Opcode.MOVE_RESULT_OBJECT) + + addInstructions( + insertIndex, + """ + move-result-object v0 + invoke-static { v0, p1, p2, p3 }, $EXTENSION_CLASS_DESCRIPTOR->isStringFeatureFlagEnabled(Ljava/lang/String;JLjava/lang/String;)Ljava/lang/String; + move-result-object v0 + return-object v0 + """ + ) + } + + // There exists other experimental accessor methods for byte[] + // and wrappers for obfuscated classes, but currently none of those are hooked. + } +} diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/debugging/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/debugging/Fingerprints.kt new file mode 100644 index 000000000..6f183dd08 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/debugging/Fingerprints.kt @@ -0,0 +1,35 @@ +package app.revanced.patches.shared.misc.debugging + +import app.revanced.patcher.fingerprint +import com.android.tools.smali.dexlib2.AccessFlags + +internal val experimentalFeatureFlagParentFingerprint = fingerprint { + accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) + returns("L") + parameters("L", "J", "[B") + strings("Unable to parse proto typed experiment flag: ") +} + +internal val experimentalBooleanFeatureFlagFingerprint = fingerprint { + accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) + returns("Z") + parameters("L", "J", "Z") +} + +internal val experimentalDoubleFeatureFlagFingerprint = fingerprint { + accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) + returns("D") + parameters("J", "D") +} + +internal val experimentalLongFeatureFlagFingerprint = fingerprint { + accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) + returns("J") + parameters("J", "J") +} + +internal val experimentalStringFeatureFlagFingerprint = fingerprint { + accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) + returns("Ljava/lang/String;") + parameters("J", "Ljava/lang/String;") +} diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/debugging/EnableDebuggingPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/debugging/EnableDebuggingPatch.kt index ab8c54afb..e2e4bc4fb 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/debugging/EnableDebuggingPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/debugging/EnableDebuggingPatch.kt @@ -1,144 +1,35 @@ package app.revanced.patches.youtube.misc.debugging -import app.revanced.patcher.extensions.InstructionExtensions.addInstructions -import app.revanced.patcher.extensions.InstructionExtensions.getInstruction -import app.revanced.patcher.patch.bytecodePatch import app.revanced.patches.all.misc.resources.addResources -import app.revanced.patches.all.misc.resources.addResourcesPatch -import app.revanced.patches.shared.misc.settings.preference.NonInteractivePreference -import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference -import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference.Sorting +import app.revanced.patches.shared.misc.debugging.enableDebuggingPatch import app.revanced.patches.shared.misc.settings.preference.SwitchPreference import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch -import app.revanced.patches.youtube.misc.playservice.versionCheckPatch import app.revanced.patches.youtube.misc.settings.PreferenceScreen import app.revanced.patches.youtube.misc.settings.settingsPatch -import app.revanced.util.findInstructionIndicesReversedOrThrow -import app.revanced.util.indexOfFirstInstructionOrThrow -import app.revanced.util.indexOfFirstInstructionReversedOrThrow -import com.android.tools.smali.dexlib2.Opcode -import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction -private const val EXTENSION_CLASS_DESCRIPTOR = - "Lapp/revanced/extension/youtube/patches/EnableDebuggingPatch;" - -// TODO: Refactor this into a shared patch that can be used by both YT and YT Music. -// Almost all of the feature flag hooks are the same between both apps. -val enableDebuggingPatch = bytecodePatch( - name = "Enable debugging", - description = "Adds options for debugging and exporting ReVanced logs to the clipboard.", -) { - dependsOn( - sharedExtensionPatch, - settingsPatch, - addResourcesPatch, - versionCheckPatch - ) - - compatibleWith( - "com.google.android.youtube"( - "19.34.42", - "19.43.41", - "19.47.53", - "20.07.39", - "20.12.46", - "20.13.41", +@Suppress("unused") +val enableDebuggingPatch = enableDebuggingPatch( + block = { + dependsOn( + sharedExtensionPatch, + settingsPatch, ) - ) - execute { - addResources("shared", "misc.debugging.enableDebuggingPatch") + compatibleWith( + "com.google.android.youtube"( + "19.34.42", + "19.43.41", + "19.47.53", + "20.07.39", + "20.12.46", + "20.13.41", + ) + ) + }, + executeBlock = { addResources("youtube", "misc.debugging.enableDebuggingPatch") - - PreferenceScreen.MISC.addPreferences( - PreferenceScreenPreference( - key = "revanced_debug_screen", - sorting = Sorting.UNSORTED, - preferences = setOf( - SwitchPreference("revanced_debug"), - SwitchPreference("revanced_debug_protobuffer"), - SwitchPreference("revanced_debug_stacktrace"), - SwitchPreference("revanced_debug_toast_on_error"), - NonInteractivePreference( - "revanced_debug_export_logs_to_clipboard", - tag = "app.revanced.extension.shared.settings.preference.ExportLogToClipboardPreference", - selectable = true - ), - NonInteractivePreference( - "revanced_debug_logs_clear_buffer", - tag = "app.revanced.extension.shared.settings.preference.ClearLogBufferPreference", - selectable = true - ), - ), - ), - ) - - // Hook the methods that look up if a feature flag is active. - experimentalBooleanFeatureFlagFingerprint.match( - experimentalFeatureFlagParentFingerprint.originalClassDef - ).method.apply { - findInstructionIndicesReversedOrThrow(Opcode.RETURN).forEach { index -> - val register = getInstruction(index).registerA - - addInstructions( - index, - """ - invoke-static { v$register, p1 }, $EXTENSION_CLASS_DESCRIPTOR->isBooleanFeatureFlagEnabled(ZLjava/lang/Long;)Z - move-result v$register - """ - ) - } - } - - experimentalDoubleFeatureFlagFingerprint.match( - experimentalFeatureFlagParentFingerprint.originalClassDef - ).method.apply { - val insertIndex = indexOfFirstInstructionOrThrow(Opcode.MOVE_RESULT_WIDE) - - addInstructions( - insertIndex, - """ - move-result-wide v0 # Also clobbers v1 (p0) since result is wide. - invoke-static/range { v0 .. v5 }, $EXTENSION_CLASS_DESCRIPTOR->isDoubleFeatureFlagEnabled(DJD)D - move-result-wide v0 - return-wide v0 - """ - ) - } - - experimentalLongFeatureFlagFingerprint.match( - experimentalFeatureFlagParentFingerprint.originalClassDef - ).method.apply { - val insertIndex = indexOfFirstInstructionOrThrow(Opcode.MOVE_RESULT_WIDE) - - addInstructions( - insertIndex, - """ - move-result-wide v0 - invoke-static/range { v0 .. v5 }, $EXTENSION_CLASS_DESCRIPTOR->isLongFeatureFlagEnabled(JJJ)J - move-result-wide v0 - return-wide v0 - """ - ) - } - - experimentalStringFeatureFlagFingerprint.match( - experimentalFeatureFlagParentFingerprint.originalClassDef - ).method.apply { - val insertIndex = indexOfFirstInstructionReversedOrThrow(Opcode.MOVE_RESULT_OBJECT) - - addInstructions( - insertIndex, - """ - move-result-object v0 - invoke-static { v0, p1, p2, p3 }, $EXTENSION_CLASS_DESCRIPTOR->isStringFeatureFlagEnabled(Ljava/lang/String;JLjava/lang/String;)Ljava/lang/String; - move-result-object v0 - return-object v0 - """ - ) - } - - // There exists other experimental accessor methods for byte[] - // and wrappers for obfuscated classes, but currently none of those are hooked. - } -} + }, + hookStringFeatureFlag = true, + preferenceScreen = PreferenceScreen.MISC, + additionalDebugPreferences = listOf(SwitchPreference("revanced_debug_protobuffer")) +) diff --git a/patches/src/main/resources/addresources/values/strings.xml b/patches/src/main/resources/addresources/values/strings.xml index 86d617500..5f4d5d5d7 100644 --- a/patches/src/main/resources/addresources/values/strings.xml +++ b/patches/src/main/resources/addresources/values/strings.xml @@ -163,6 +163,15 @@ Playback may not work" Debug logging Debug logs are enabled Debug logs are disabled + Log stack traces + Debug logs include stack trace + Debug logs do not include stack trace + Show toast on ReVanced error + Toast is shown if error occurs + Toast is not shown if error occurs + "Turning off error toasts hides all ReVanced error notifications. + +You will not be notified of any unexpected events." Export debug logs Copies ReVanced debug logs to the clipboard Debug logging is disabled @@ -209,15 +218,6 @@ Playback may not work" This can help identify components when creating custom filters. However, enabling this will also log some user data such as your IP address." - Log stack traces - Debug logs include stack trace - Debug logs do not include stack trace - Show toast on ReVanced error - Toast is shown if error occurs - Toast is not shown if error occurs - "Turning off error toasts hides all ReVanced error notifications. - -You will not be notified of any unexpected events." Hide album cards From aa1fb41ad8178f0a28f4493764622a1340d232c1 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 20 Sep 2025 12:37:33 +0000 Subject: [PATCH 11/11] chore: Release v5.40.0-dev.6 [skip ci] # [5.40.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.40.0-dev.5...v5.40.0-dev.6) (2025-09-20) ### Features * **YouTube Music:** Add `Enable debugging` patch ([#5939](https://github.com/ReVanced/revanced-patches/issues/5939)) ([418f594](https://github.com/ReVanced/revanced-patches/commit/418f5945c213313f9a77cac9a5c326d89c754dfd)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ebf2606c4..fb0158d80 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [5.40.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.40.0-dev.5...v5.40.0-dev.6) (2025-09-20) + + +### Features + +* **YouTube Music:** Add `Enable debugging` patch ([#5939](https://github.com/ReVanced/revanced-patches/issues/5939)) ([418f594](https://github.com/ReVanced/revanced-patches/commit/418f5945c213313f9a77cac9a5c326d89c754dfd)) + # [5.40.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.40.0-dev.4...v5.40.0-dev.5) (2025-09-20) diff --git a/gradle.properties b/gradle.properties index a24704b81..67e71bb03 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.40.0-dev.5 +version = 5.40.0-dev.6