From 54f0e856b498790f1bfcc5ce63cbf3c920206cb3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 22 May 2025 10:33:36 +0200 Subject: [PATCH 01/46] chore: Sync translations (#5009) --- .../addresources/values-ar-rSA/strings.xml | 8 ++--- .../addresources/values-az-rAZ/strings.xml | 2 +- .../addresources/values-fa-rIR/strings.xml | 31 +++++++++++++++++++ .../addresources/values-ga-rIE/strings.xml | 12 +++---- .../addresources/values-ja-rJP/strings.xml | 16 +++++----- 5 files changed, 50 insertions(+), 19 deletions(-) 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 3dbb255ad..212eb22f3 100644 --- a/patches/src/main/resources/addresources/values-ar-rSA/strings.xml +++ b/patches/src/main/resources/addresources/values-ar-rSA/strings.xml @@ -42,7 +42,7 @@ Second \"item\" text" إعادة تعيين إعدادات ReVanced إلى الوضع الافتراضي تم استيراد %d إعدادات فشل الاستيراد: %s - إعدادات البحث + بحث الإعدادات لم يتم العثور على نتائج لـ \".%s\" جرّب كلمة مفتاحية أخرى إزالة من سجل البحث؟ @@ -97,9 +97,9 @@ Second \"item\" text" استعادة قوائم الإعدادات القديمة يتم عرض قوائم الإعدادات القديمة لا يتم عرض قوائم الإعدادات القديمة - إظهار سجل البحث في الإعدادات - سجل البحث في الإعدادات معروض - لم يتم عرض سجل البحث في الإعدادات + عرض سجل بحث الإعدادات + يتم عرض سجل البحث في الإعدادات + لا يتم عرض سجل البحث في الإعدادات تعطيل تشغيل فيديوهات Shorts في الخلفية 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 5cb5334c3..bb68fbb7a 100644 --- a/patches/src/main/resources/addresources/values-az-rAZ/strings.xml +++ b/patches/src/main/resources/addresources/values-az-rAZ/strings.xml @@ -42,7 +42,7 @@ Second \"item\" text" ReVanced tənzimləmələr standarta təyin edildi %d tənzimləmə idxal edildi Uğursuz idxal prosesi: %s - Axtarış tənzimləmələri + Tənzimləmələri axtar ‘%s’ üçün nəticə tapılmadı Başqa açar sözü yoxla Axtarış tarixçəsindən silinsin? 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 d4c4d8952..7441ceffc 100644 --- a/patches/src/main/resources/addresources/values-fa-rIR/strings.xml +++ b/patches/src/main/resources/addresources/values-fa-rIR/strings.xml @@ -42,21 +42,48 @@ Second \"item\" text" بازگرداندن تنظیمات ReVanced به پیش‌فرض %d تنظیمات وارد شدند واردکردن انجام نشد: %s + تنظیمات جستجو + نتایجی برای %s یافت نشد + کلیدواژه دیگری را امتحان کنید + حذف از تاریخچه جستجو؟ + نمایش آیکون تنظیمات ReVanced + نمادهای تنظیمات نشان داده می‌شوند + نمادهای تنظیمات نمایش داده نمی شوند زبان ReVanced + زبان برنامه + وارد کردن/صادر کردن + وارد کردن / صادر کردن تنظیمات ReVanced + شما درحال استفاده از نسخه <i>%s</i> از پچ Revanced هستید + توجه + لینک‌های رسمی + MicroG GmsCore نصب نشده است. آنرا نصب کنید. + اقدام لازم است + باز کردن تارنما + ادامه + درباره + عمومی + اجراکننده + نوار جریان پخش + ويدئو + عیب‌یابی + فعال یا غیرفعال کردن گزینه‌های عیب یابی + گزارش عیب + لاگ عیب فعال است + لاگ عیب غیرفعال است + پنهان سازی دکمه \'نمایش بیشتر\' + دکمه پنهان است + دکمه نمایان است + پنهان سازی قفسه بلیط Folaigh lipéid moltaí físeáin - Tá lipéid \",,D’fhéach daoine eile air freisin\",, agus \",,B’fhéidir gur mhaith leat é seo freisin\",, folaithe - Tá lipéid \",,D’fhéach daoine eile air freisin\",, agus \",,B’fhéidir gur mhaith leat é seo freisin\",, ar taispeáint + Tá na lipéid \'Daoine a d\'fhéach orthu freisin\' agus \'B\'fhéidir gur mhaith leat freisin\' i bhfolach + Taispeántar lipéid ‘Daoine a d’fhéach freisin’ agus ‘B’fhéidir gur mhaith leat freisin’ Folaigh cnaipe \'Taispeáin tuilleadh\' @@ -263,8 +263,8 @@ Ní chuirfear ar an eolas thú faoi aon imeachtaí gan choinne." Tá an chuid Príomhchoincheapa i bhfolach Taispeántar an chuid Príomhchoincheapa Folaigh Tras-scríbhinn - Tá an chuid trasscríbhinne i bhfolach - Taispeántar alt an trasscríbhinne + Tá alt an tras-scríbhinn i bhfolach + Taispeántar alt an tras-scríbhinn Cur síos físeán Folaigh nó taispeáint comhpháirteanna tuairisc Barra scagaire @@ -278,8 +278,8 @@ Ní chuirfear ar an eolas thú faoi aon imeachtaí gan choinne." Folaigh i bhfíseáin gaolmhara I bhfolach i bhfíseáin ghaolmhara Taispeántar i bhfíseáin ghaolmhara - Tuairimí - Folaigh nó taispeáin comhpháirteanna na rannóige tuairimí + Tráchtanna + Folaigh nó taispeáin comhpháirteanna na rannóige tráchtanna Folaigh achoimre Comhrá AI Tá achoimre comhrá i bhfolach Taispeántar achoimre comhrá 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 bdae717f7..a5c60ce19 100644 --- a/patches/src/main/resources/addresources/values-ja-rJP/strings.xml +++ b/patches/src/main/resources/addresources/values-ja-rJP/strings.xml @@ -42,8 +42,8 @@ Second \"item\" text" ReVanced 設定をデフォルトにリセット %d 個の設定をインポートしました インポート失敗: %s - 設定を検索 - \'%s\' に一致する設定は見つかりませんでした + ReVanced の設定を検索 + \'%s\' に一致する ReVanced の設定は見つかりませんでした 別のキーワードを試してください 検索履歴から削除しますか? ReVanced 設定にアイコンを表示する @@ -98,9 +98,9 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ 設定メニューを旧バージョンに戻す 旧バージョンの設定メニューが表示されます 通常の設定メニューが表示されます - 設定の検索履歴を表示する - 設定の検索履歴は表示されます - 設定の検索履歴は表示されません + 設定検索の履歴を表示する + 設定検索の履歴は表示されます + 設定検索の履歴は表示されません ショート動画のバックグラウンド再生を無効にする @@ -1167,7 +1167,7 @@ Automotive レイアウト "スタート画面の変更は常時適用されます 制限事項: ツールバーの [戻る] ボタンが機能しない可能性があります" - スタート画面の変更はアプリ起動時にのみ適用されます + スタート画面の変更は、アプリ起動時にのみ適用されます ショート動画プレーヤーの再開を無効にする @@ -1296,8 +1296,8 @@ Automotive レイアウト ReVanced のお知らせを表示する - アプリ起動時にお知らせが表示されます - アプリ起動時にお知らせは表示されません + お知らせは、アプリ起動時に表示されます + お知らせは、アプリ起動時に表示されません アプリ起動時にお知らせを表示する お知らせの取得に失敗しました 閉じる From 42d2c277982ef63e6ad42d85e46f13c3ab50243c Mon Sep 17 00:00:00 2001 From: hoodles <207470673+hoo-dles@users.noreply.github.com> Date: Thu, 22 May 2025 01:35:16 -0700 Subject: [PATCH 02/46] feat: Add `Disable pairip license check` patch (#4927) Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> --- patches/api/patches.api | 20 ++ .../patches/angulus/ads/RemoveAdsPatch.kt | 5 +- .../license/DisableLicenseCheckPatch.kt | 26 ++ .../misc/pairip/license/Fingerprints.kt | 17 ++ .../kotlin/app/revanced/util/BytecodeUtils.kt | 241 ++++++++++++++++-- .../main/kotlin/app/revanced/util/Utils.kt | 2 + 6 files changed, 282 insertions(+), 29 deletions(-) create mode 100644 patches/src/main/kotlin/app/revanced/patches/shared/misc/pairip/license/DisableLicenseCheckPatch.kt create mode 100644 patches/src/main/kotlin/app/revanced/patches/shared/misc/pairip/license/Fingerprints.kt diff --git a/patches/api/patches.api b/patches/api/patches.api index 6cca1abda..30ea1948e 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -652,6 +652,10 @@ public final class app/revanced/patches/shared/misc/mapping/ResourceMappingPatch public static final fun getResourceMappings ()Ljava/util/List; } +public final class app/revanced/patches/shared/misc/pairip/license/DisableLicenseCheckPatchKt { + public static final fun getDisableLicenseCheckPatch ()Lapp/revanced/patcher/patch/BytecodePatch; +} + public final class app/revanced/patches/shared/misc/settings/SettingsPatchKt { public static final fun settingsPatch (Ljava/util/List;Ljava/util/Set;)Lapp/revanced/patcher/patch/ResourcePatch; public static final fun settingsPatch (Lkotlin/Pair;Ljava/util/Set;)Lapp/revanced/patcher/patch/ResourcePatch; @@ -1615,8 +1619,24 @@ public final class app/revanced/util/BytecodeUtilsKt { public static final fun indexOfFirstResourceIdOrThrow (Lcom/android/tools/smali/dexlib2/iface/Method;Ljava/lang/String;)I public static final fun injectHideViewCall (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;IILjava/lang/String;Ljava/lang/String;)V public static final fun literal (Lapp/revanced/patcher/FingerprintBuilder;Lkotlin/jvm/functions/Function0;)V + public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;B)V + public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;C)V + public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;D)V + public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;F)V + public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;I)V + public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;J)V + public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;S)V public static final fun returnEarly (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Z)V public static synthetic fun returnEarly$default (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;ZILjava/lang/Object;)V + public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;B)V + public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;C)V + public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;D)V + public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;F)V + public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;I)V + public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;J)V + public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;S)V + public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Z)V + public static synthetic fun returnLate$default (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;ZILjava/lang/Object;)V public static final fun transformMethods (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableClass;Lkotlin/jvm/functions/Function1;)V public static final fun traverseClassHierarchy (Lapp/revanced/patcher/patch/BytecodePatchContext;Lapp/revanced/patcher/util/proxy/mutableTypes/MutableClass;Lkotlin/jvm/functions/Function1;)V } diff --git a/patches/src/main/kotlin/app/revanced/patches/angulus/ads/RemoveAdsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/angulus/ads/RemoveAdsPatch.kt index 5eb585cf5..c1f3acb8e 100644 --- a/patches/src/main/kotlin/app/revanced/patches/angulus/ads/RemoveAdsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/angulus/ads/RemoveAdsPatch.kt @@ -1,14 +1,17 @@ package app.revanced.patches.angulus.ads import app.revanced.patcher.patch.bytecodePatch +import app.revanced.patches.shared.misc.pairip.license.disableLicenseCheckPatch import app.revanced.util.returnEarly @Suppress("unused") val angulusPatch = bytecodePatch(name = "Hide ads") { compatibleWith("com.drinkplusplus.angulus") + dependsOn(disableLicenseCheckPatch) + execute { // Always return 0 as the daily measurement count. - getDailyMeasurementCountFingerprint.method.returnEarly() + getDailyMeasurementCountFingerprint.method.returnEarly(0) } } diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/pairip/license/DisableLicenseCheckPatch.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/pairip/license/DisableLicenseCheckPatch.kt new file mode 100644 index 000000000..6284075e1 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/pairip/license/DisableLicenseCheckPatch.kt @@ -0,0 +1,26 @@ +package app.revanced.patches.shared.misc.pairip.license + +import app.revanced.patcher.extensions.InstructionExtensions.addInstruction +import app.revanced.patcher.patch.bytecodePatch +import app.revanced.util.returnEarly +import java.util.logging.Logger + +@Suppress("unused") +val disableLicenseCheckPatch = bytecodePatch( + name = "Disable pairip license check", + description = "Disable Play Integrity Protect (pairip) client-side license check." +) { + + execute { + if (processLicenseResponseFingerprint.methodOrNull == null || validateLicenseResponseFingerprint.methodOrNull == null) + return@execute Logger.getLogger(this::class.java.name) + .warning("Could not find pairip licensing check. No changes applied.") + + // Set first parameter (responseCode) to 0 (success status). + processLicenseResponseFingerprint.method.addInstruction(0, "const/4 p1, 0x0") + + // Short-circuit the license response validation. + validateLicenseResponseFingerprint.method.returnEarly(); + + } +} diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/pairip/license/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/pairip/license/Fingerprints.kt new file mode 100644 index 000000000..344fd02da --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/pairip/license/Fingerprints.kt @@ -0,0 +1,17 @@ +package app.revanced.patches.shared.misc.pairip.license + +import app.revanced.patcher.fingerprint + +internal val processLicenseResponseFingerprint = fingerprint { + custom { method, classDef -> + classDef.type == "Lcom/pairip/licensecheck/LicenseClient;" && + method.name == "processResponse" + } +} + +internal val validateLicenseResponseFingerprint = fingerprint { + custom { method, classDef -> + classDef.type == "Lcom/pairip/licensecheck/ResponseValidator;" && + method.name == "validateResponse" + } +} diff --git a/patches/src/main/kotlin/app/revanced/util/BytecodeUtils.kt b/patches/src/main/kotlin/app/revanced/util/BytecodeUtils.kt index 0ca022201..7e8c5ab21 100644 --- a/patches/src/main/kotlin/app/revanced/util/BytecodeUtils.kt +++ b/patches/src/main/kotlin/app/revanced/util/BytecodeUtils.kt @@ -133,6 +133,7 @@ internal val Instruction.registersUsed: List else -> listOf(registerC, registerD, registerE, registerF, registerG) } } + is ThreeRegisterInstruction -> listOf(registerA, registerB, registerC) is TwoRegisterInstruction -> listOf(registerA, registerB) is OneRegisterInstruction -> listOf(registerA) @@ -170,7 +171,7 @@ internal val Instruction.isReturnInstruction: Boolean /** * Adds public [AccessFlags] and removes private and protected flags (if present). */ -internal fun Int.toPublicAccessFlags() : Int { +internal fun Int.toPublicAccessFlags(): Int { return this.or(AccessFlags.PUBLIC.value) .and(AccessFlags.PROTECTED.value.inv()) .and(AccessFlags.PRIVATE.value.inv()) @@ -489,9 +490,10 @@ fun Method.indexOfFirstInstruction(targetOpcode: Opcode): Int = indexOfFirstInst * @return The index of the first opcode specified, or -1 if not found. * @see indexOfFirstInstructionOrThrow */ -fun Method.indexOfFirstInstruction(startIndex: Int = 0, targetOpcode: Opcode): Int = indexOfFirstInstruction(startIndex) { - opcode == targetOpcode -} +fun Method.indexOfFirstInstruction(startIndex: Int = 0, targetOpcode: Opcode): Int = + indexOfFirstInstruction(startIndex) { + opcode == targetOpcode + } /** * Get the index of the first [Instruction] that matches the predicate, starting from [startIndex]. @@ -526,9 +528,10 @@ fun Method.indexOfFirstInstructionOrThrow(targetOpcode: Opcode): Int = indexOfFi * @throws PatchException * @see indexOfFirstInstruction */ -fun Method.indexOfFirstInstructionOrThrow(startIndex: Int = 0, targetOpcode: Opcode): Int = indexOfFirstInstructionOrThrow(startIndex) { - opcode == targetOpcode -} +fun Method.indexOfFirstInstructionOrThrow(startIndex: Int = 0, targetOpcode: Opcode): Int = + indexOfFirstInstructionOrThrow(startIndex) { + opcode == targetOpcode + } /** * Get the index of the first [Instruction] that matches the predicate, starting from [startIndex]. @@ -554,9 +557,10 @@ fun Method.indexOfFirstInstructionOrThrow(startIndex: Int = 0, filter: Instructi * @return -1 if the instruction is not found. * @see indexOfFirstInstructionReversedOrThrow */ -fun Method.indexOfFirstInstructionReversed(startIndex: Int? = null, targetOpcode: Opcode): Int = indexOfFirstInstructionReversed(startIndex) { - opcode == targetOpcode -} +fun Method.indexOfFirstInstructionReversed(startIndex: Int? = null, targetOpcode: Opcode): Int = + indexOfFirstInstructionReversed(startIndex) { + opcode == targetOpcode + } /** * Get the index of matching instruction, @@ -593,9 +597,10 @@ fun Method.indexOfFirstInstructionReversed(targetOpcode: Opcode): Int = indexOfF * @return The index of the instruction. * @see indexOfFirstInstructionReversed */ -fun Method.indexOfFirstInstructionReversedOrThrow(startIndex: Int? = null, targetOpcode: Opcode): Int = indexOfFirstInstructionReversedOrThrow(startIndex) { - opcode == targetOpcode -} +fun Method.indexOfFirstInstructionReversedOrThrow(startIndex: Int? = null, targetOpcode: Opcode): Int = + indexOfFirstInstructionReversedOrThrow(startIndex) { + opcode == targetOpcode + } /** * Get the index of matching instruction, @@ -652,7 +657,8 @@ fun Method.findInstructionIndicesReversedOrThrow(filter: Instruction.() -> Boole * _Returns an empty list if no indices are found_ * @see findInstructionIndicesReversedOrThrow */ -fun Method.findInstructionIndicesReversed(opcode: Opcode): List = findInstructionIndicesReversed { this.opcode == opcode } +fun Method.findInstructionIndicesReversed(opcode: Opcode): List = + findInstructionIndicesReversed { this.opcode == opcode } /** * @return An immutable list of indices of the opcode in reverse order. @@ -726,43 +732,222 @@ fun BytecodePatchContext.forEachLiteralValueInstruction( } } -/** - * Overrides the first instruction of a method with a constant return value. - * None of the method code will ever execute. - */ -fun MutableMethod.returnEarly(overrideValue: Boolean = false) = overrideReturnValue(overrideValue, false) +private const val RETURN_TYPE_MISMATCH = "Mismatch between override type and Method return type" /** - * Overrides all return statements with a constant value. + * Overrides the first instruction of a method with a constant `Boolean` return value. + * None of the method code will ever execute. + * + * For methods that return an object or any array type, calling this method with `false` + * will force the method to return a `null` value. + */ +fun MutableMethod.returnEarly(value: Boolean = false) { + val returnType = returnType.first() + check(returnType == 'Z' || (!value && (returnType in setOf('V', 'L', '[')))) { RETURN_TYPE_MISMATCH } + overrideReturnValue(value.toHexString(), false) +} + +/** + * Overrides the first instruction of a method with a constant `Byte` return value. + * None of the method code will ever execute. + */ +fun MutableMethod.returnEarly(value: Byte) { + check(returnType.first() == 'B') { RETURN_TYPE_MISMATCH } + overrideReturnValue(value.toString(), false) +} + +/** + * Overrides the first instruction of a method with a constant `Short` return value. + * None of the method code will ever execute. + */ +fun MutableMethod.returnEarly(value: Short) { + check(returnType.first() == 'S') { RETURN_TYPE_MISMATCH } + overrideReturnValue(value.toString(), false) +} + +/** + * Overrides the first instruction of a method with a constant `Char` return value. + * None of the method code will ever execute. + */ +fun MutableMethod.returnEarly(value: Char) { + check(returnType.first() == 'C') { RETURN_TYPE_MISMATCH } + overrideReturnValue(value.code.toString(), false) +} + +/** + * Overrides the first instruction of a method with a constant `Int` return value. + * None of the method code will ever execute. + */ +fun MutableMethod.returnEarly(value: Int) { + check(returnType.first() == 'I') { RETURN_TYPE_MISMATCH } + overrideReturnValue(value.toString(), false) +} + +/** + * Overrides the first instruction of a method with a constant `Long` return value. + * None of the method code will ever execute. + */ +fun MutableMethod.returnEarly(value: Long) { + check(returnType.first() == 'J') { RETURN_TYPE_MISMATCH } + overrideReturnValue(value.toString(), false) +} + +/** + * Overrides the first instruction of a method with a constant `Float` return value. + * None of the method code will ever execute. + */ +fun MutableMethod.returnEarly(value: Float) { + check(returnType.first() == 'F') { RETURN_TYPE_MISMATCH } + overrideReturnValue(value.toString(), false) +} + +/** + * Overrides the first instruction of a method with a constant `Double` return value. + * None of the method code will ever execute. + */ +fun MutableMethod.returnEarly(value: Double) { + check(returnType.first() == 'J') { RETURN_TYPE_MISMATCH } + overrideReturnValue(value.toString(), false) +} + +/** + * Overrides all return statements with a constant `Boolean` value. + * All method code is executed the same as unpatched. + * + * For methods that return an object or any array type, calling this method with `false` + * will force the method to return a `null` value. + * + * @see returnEarly + */ +fun MutableMethod.returnLate(value: Boolean) { + val returnType = returnType.first() + if (returnType == 'V') { + error("Cannot return late for Method of void type") + } + check(returnType == 'Z' || (!value && returnType in setOf('L', '['))) { RETURN_TYPE_MISMATCH } + + overrideReturnValue(value.toHexString(), true) +} + +/** + * Overrides all return statements with a constant `Byte` value. * All method code is executed the same as unpatched. * * @see returnEarly */ -internal fun MutableMethod.returnLate(overrideValue: Boolean = false) = overrideReturnValue(overrideValue, true) +fun MutableMethod.returnLate(value: Byte) { + check(returnType.first() == 'B') { RETURN_TYPE_MISMATCH } + overrideReturnValue(value.toString(), true) +} -private fun MutableMethod.overrideReturnValue(bool: Boolean, returnLate: Boolean) { - val const = if (bool) "0x1" else "0x0" +/** + * Overrides all return statements with a constant `Short` value. + * All method code is executed the same as unpatched. + * + * @see returnEarly + */ +fun MutableMethod.returnLate(value: Short) { + check(returnType.first() == 'S') { RETURN_TYPE_MISMATCH } + overrideReturnValue(value.toString(), true) +} +/** + * Overrides all return statements with a constant `Char` value. + * All method code is executed the same as unpatched. + * + * @see returnEarly + */ +fun MutableMethod.returnLate(value: Char) { + check(returnType.first() == 'C') { RETURN_TYPE_MISMATCH } + overrideReturnValue(value.code.toString(), true) +} + +/** + * Overrides all return statements with a constant `Int` value. + * All method code is executed the same as unpatched. + * + * @see returnEarly + */ +fun MutableMethod.returnLate(value: Int) { + check(returnType.first() == 'I') { RETURN_TYPE_MISMATCH } + overrideReturnValue(value.toString(), true) +} + +/** + * Overrides all return statements with a constant `Long` value. + * All method code is executed the same as unpatched. + * + * @see returnEarly + */ +fun MutableMethod.returnLate(value: Long) { + check(returnType.first() == 'J') { RETURN_TYPE_MISMATCH } + overrideReturnValue(value.toString(), true) +} + +/** + * Overrides all return statements with a constant `Float` value. + * All method code is executed the same as unpatched. + * + * @see returnEarly + */ +fun MutableMethod.returnLate(value: Float) { + check(returnType.first() == 'F') { RETURN_TYPE_MISMATCH } + overrideReturnValue(value.toString(), true) +} + +/** + * Overrides all return statements with a constant `Double` value. + * All method code is executed the same as unpatched. + * + * @see returnEarly + */ +fun MutableMethod.returnLate(value: Double) { + check(returnType.first() == 'D') { RETURN_TYPE_MISMATCH } + overrideReturnValue(value.toString(), true) +} + +private fun MutableMethod.overrideReturnValue(value: String, returnLate: Boolean) { val instructions = when (returnType.first()) { - 'L' -> { + // If return type is an object, always return null. + 'L', '[' -> { """ - const/4 v0, $const + const/4 v0, 0x0 return-object v0 """ } 'V' -> { - if (returnLate) throw IllegalArgumentException("Cannot return late for method of void type") "return-void" } - 'I', 'Z' -> { + 'B', 'Z' -> { """ - const/4 v0, $const + const/4 v0, $value return v0 """ } + 'S', 'C' -> { + """ + const/16 v0, $value + return v0 + """ + } + + 'I', 'F' -> { + """ + const v0, $value + return v0 + """ + } + + 'J', 'D' -> { + """ + const-wide v0, $value + return-wide v0 + """ + } + else -> throw Exception("Return type is not supported: $this") } diff --git a/patches/src/main/kotlin/app/revanced/util/Utils.kt b/patches/src/main/kotlin/app/revanced/util/Utils.kt index 57f0edf03..ef7d0ef1a 100644 --- a/patches/src/main/kotlin/app/revanced/util/Utils.kt +++ b/patches/src/main/kotlin/app/revanced/util/Utils.kt @@ -6,3 +6,5 @@ internal object Utils { .joinToString("\n") { it.trimIndent() } // Remove the leading whitespace from each line. .trimIndent() // Remove the leading newline. } + +internal fun Boolean.toHexString(): String = if (this) "0x1" else "0x0" \ No newline at end of file From 012dff7b6511b9e519ccac96f6713cf1a1b327b4 Mon Sep 17 00:00:00 2001 From: Dawid Krajcarz <80264606+drobotk@users.noreply.github.com> Date: Thu, 22 May 2025 10:35:31 +0200 Subject: [PATCH 03/46] feat(Messenger): Add `Remove Meta AI` patch (#4945) --- extensions/messenger/build.gradle.kts | 3 ++ .../messenger/src/main/AndroidManifest.xml | 1 + .../messenger/metaai/RemoveMetaAIPatch.java | 15 ++++++++ patches/api/patches.api | 8 +++++ .../patches/messenger/metaai/Fingerprints.kt | 14 ++++++++ .../messenger/metaai/RemoveMetaAIPatch.kt | 35 +++++++++++++++++++ .../misc/extension/ExtensionPatch.kt | 5 +++ .../patches/messenger/misc/extension/Hooks.kt | 7 ++++ .../patches/messenger/navbar/Fingerprints.kt | 16 --------- .../messenger/navbar/RemoveMetaAITabPatch.kt | 19 ++-------- 10 files changed, 91 insertions(+), 32 deletions(-) create mode 100644 extensions/messenger/build.gradle.kts create mode 100644 extensions/messenger/src/main/AndroidManifest.xml create mode 100644 extensions/messenger/src/main/java/app/revanced/extension/messenger/metaai/RemoveMetaAIPatch.java create mode 100644 patches/src/main/kotlin/app/revanced/patches/messenger/metaai/Fingerprints.kt create mode 100644 patches/src/main/kotlin/app/revanced/patches/messenger/metaai/RemoveMetaAIPatch.kt create mode 100644 patches/src/main/kotlin/app/revanced/patches/messenger/misc/extension/ExtensionPatch.kt create mode 100644 patches/src/main/kotlin/app/revanced/patches/messenger/misc/extension/Hooks.kt delete mode 100644 patches/src/main/kotlin/app/revanced/patches/messenger/navbar/Fingerprints.kt diff --git a/extensions/messenger/build.gradle.kts b/extensions/messenger/build.gradle.kts new file mode 100644 index 000000000..8cf6305c1 --- /dev/null +++ b/extensions/messenger/build.gradle.kts @@ -0,0 +1,3 @@ +dependencies { + compileOnly(project(":extensions:shared:library")) +} diff --git a/extensions/messenger/src/main/AndroidManifest.xml b/extensions/messenger/src/main/AndroidManifest.xml new file mode 100644 index 000000000..9b65eb06c --- /dev/null +++ b/extensions/messenger/src/main/AndroidManifest.xml @@ -0,0 +1 @@ + diff --git a/extensions/messenger/src/main/java/app/revanced/extension/messenger/metaai/RemoveMetaAIPatch.java b/extensions/messenger/src/main/java/app/revanced/extension/messenger/metaai/RemoveMetaAIPatch.java new file mode 100644 index 000000000..94684f687 --- /dev/null +++ b/extensions/messenger/src/main/java/app/revanced/extension/messenger/metaai/RemoveMetaAIPatch.java @@ -0,0 +1,15 @@ +package app.revanced.extension.messenger.metaai; + +@SuppressWarnings("unused") +public class RemoveMetaAIPatch { + public static boolean overrideConfigBool(long id, boolean value) { + // It seems like all configs starting with 363219 are related to Meta AI. + // A list of specific ones that need disabling would probably be better, + // but these config numbers seem to change slightly with each update. + // These first 6 digits don't though. + if (Long.toString(id).startsWith("363219")) + return false; + + return value; + } +} diff --git a/patches/api/patches.api b/patches/api/patches.api index 30ea1948e..49dd6a7ea 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -284,6 +284,14 @@ public final class app/revanced/patches/messenger/inputfield/DisableTypingIndica public static final fun getDisableTypingIndicatorPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } +public final class app/revanced/patches/messenger/metaai/RemoveMetaAIPatchKt { + public static final fun getRemoveMetaAIPatch ()Lapp/revanced/patcher/patch/BytecodePatch; +} + +public final class app/revanced/patches/messenger/misc/extension/ExtensionPatchKt { + public static final fun getSharedExtensionPatch ()Lapp/revanced/patcher/patch/BytecodePatch; +} + public final class app/revanced/patches/messenger/navbar/RemoveMetaAITabPatchKt { public static final fun getRemoveMetaAITabPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } diff --git a/patches/src/main/kotlin/app/revanced/patches/messenger/metaai/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/messenger/metaai/Fingerprints.kt new file mode 100644 index 000000000..80b94bf1a --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/messenger/metaai/Fingerprints.kt @@ -0,0 +1,14 @@ +package app.revanced.patches.messenger.metaai + +import com.android.tools.smali.dexlib2.Opcode +import app.revanced.patcher.fingerprint + +internal val getMobileConfigBoolFingerprint = fingerprint { + parameters("J") + returns("Z") + opcodes(Opcode.RETURN) + custom { method, classDef -> + method.implementation ?: return@custom false // unsure if this is necessary + classDef.interfaces.contains("Lcom/facebook/mobileconfig/factory/MobileConfigUnsafeContext;") + } +} \ No newline at end of file diff --git a/patches/src/main/kotlin/app/revanced/patches/messenger/metaai/RemoveMetaAIPatch.kt b/patches/src/main/kotlin/app/revanced/patches/messenger/metaai/RemoveMetaAIPatch.kt new file mode 100644 index 000000000..ea10ed6fc --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/messenger/metaai/RemoveMetaAIPatch.kt @@ -0,0 +1,35 @@ +package app.revanced.patches.messenger.metaai + +import app.revanced.patcher.extensions.InstructionExtensions.addInstructions +import app.revanced.patcher.extensions.InstructionExtensions.getInstruction +import app.revanced.patcher.patch.bytecodePatch +import app.revanced.patches.messenger.misc.extension.sharedExtensionPatch +import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction + +private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/messenger/metaai/RemoveMetaAIPatch;" + +@Suppress("unused") +val removeMetaAIPatch = bytecodePatch( + name = "Remove Meta AI", + description = "Removes UI elements related to Meta AI." +) { + compatibleWith("com.facebook.orca") + + dependsOn(sharedExtensionPatch) + + execute { + getMobileConfigBoolFingerprint.method.apply { + val returnIndex = getMobileConfigBoolFingerprint.patternMatch!!.startIndex + val returnRegister = getInstruction(returnIndex).registerA + + addInstructions( + returnIndex, + """ + invoke-static {p1, p2, v$returnRegister}, $EXTENSION_CLASS_DESCRIPTOR->overrideConfigBool(JZ)Z + + move-result v$returnRegister + """ + ) + } + } +} \ No newline at end of file diff --git a/patches/src/main/kotlin/app/revanced/patches/messenger/misc/extension/ExtensionPatch.kt b/patches/src/main/kotlin/app/revanced/patches/messenger/misc/extension/ExtensionPatch.kt new file mode 100644 index 000000000..0de5210ee --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/messenger/misc/extension/ExtensionPatch.kt @@ -0,0 +1,5 @@ +package app.revanced.patches.messenger.misc.extension + +import app.revanced.patches.shared.misc.extension.sharedExtensionPatch + +val sharedExtensionPatch = sharedExtensionPatch("messenger", mainActivityOnCreateHook) \ No newline at end of file diff --git a/patches/src/main/kotlin/app/revanced/patches/messenger/misc/extension/Hooks.kt b/patches/src/main/kotlin/app/revanced/patches/messenger/misc/extension/Hooks.kt new file mode 100644 index 000000000..0700c3209 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/messenger/misc/extension/Hooks.kt @@ -0,0 +1,7 @@ +package app.revanced.patches.messenger.misc.extension + +import app.revanced.patches.shared.misc.extension.extensionHook + +internal val mainActivityOnCreateHook = extensionHook { + strings("MainActivity_onCreate_begin") +} diff --git a/patches/src/main/kotlin/app/revanced/patches/messenger/navbar/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/messenger/navbar/Fingerprints.kt deleted file mode 100644 index 766e20209..000000000 --- a/patches/src/main/kotlin/app/revanced/patches/messenger/navbar/Fingerprints.kt +++ /dev/null @@ -1,16 +0,0 @@ -package app.revanced.patches.messenger.navbar - -import app.revanced.patcher.fingerprint -import com.android.tools.smali.dexlib2.Opcode - -internal val createTabConfigurationFingerprint = fingerprint { - strings("MessengerTabConfigurationCreator.createTabConfiguration") - opcodes( - Opcode.INVOKE_DIRECT, - Opcode.MOVE_RESULT, - Opcode.IF_EQZ, - Opcode.INVOKE_DIRECT, - Opcode.MOVE_RESULT, - Opcode.IF_EQZ, - ) -} diff --git a/patches/src/main/kotlin/app/revanced/patches/messenger/navbar/RemoveMetaAITabPatch.kt b/patches/src/main/kotlin/app/revanced/patches/messenger/navbar/RemoveMetaAITabPatch.kt index 75fb98577..280f448b3 100644 --- a/patches/src/main/kotlin/app/revanced/patches/messenger/navbar/RemoveMetaAITabPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/messenger/navbar/RemoveMetaAITabPatch.kt @@ -1,25 +1,12 @@ package app.revanced.patches.messenger.navbar import app.revanced.patcher.patch.bytecodePatch -import app.revanced.patcher.extensions.InstructionExtensions.getInstruction -import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction -import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction +import app.revanced.patches.messenger.metaai.removeMetaAIPatch +@Deprecated("Superseded by removeMetaAIPatch", ReplaceWith("removeMetaAIPatch")) @Suppress("unused") val removeMetaAITabPatch = bytecodePatch( - name = "Remove Meta AI tab", description = "Removes the 'Meta AI' tab from the navbar.", ) { - compatibleWith("com.facebook.orca") - - execute { - createTabConfigurationFingerprint.let { - val moveResultIndex = it.patternMatch!!.startIndex + 1 - val enabledRegister = it.method.getInstruction(moveResultIndex).registerA - it.method.replaceInstruction( - moveResultIndex, - "const/4 v$enabledRegister, 0x0" - ) - } - } + dependsOn(removeMetaAIPatch) } From b143610ed6f4ba5bfd1358e12f47a669fcbfc013 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 22 May 2025 08:39:21 +0000 Subject: [PATCH 04/46] chore: Release v5.25.0-dev.1 [skip ci] # [5.25.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.24.0...v5.25.0-dev.1) (2025-05-22) ### Features * Add `Disable pairip license check` patch ([#4927](https://github.com/ReVanced/revanced-patches/issues/4927)) ([42d2c27](https://github.com/ReVanced/revanced-patches/commit/42d2c277982ef63e6ad42d85e46f13c3ab50243c)) * **Messenger:** Add `Remove Meta AI` patch ([#4945](https://github.com/ReVanced/revanced-patches/issues/4945)) ([012dff7](https://github.com/ReVanced/revanced-patches/commit/012dff7b6511b9e519ccac96f6713cf1a1b327b4)) --- CHANGELOG.md | 8 ++++++++ gradle.properties | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 72c9e19f3..0f5a6f56d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +# [5.25.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.24.0...v5.25.0-dev.1) (2025-05-22) + + +### Features + +* Add `Disable pairip license check` patch ([#4927](https://github.com/ReVanced/revanced-patches/issues/4927)) ([42d2c27](https://github.com/ReVanced/revanced-patches/commit/42d2c277982ef63e6ad42d85e46f13c3ab50243c)) +* **Messenger:** Add `Remove Meta AI` patch ([#4945](https://github.com/ReVanced/revanced-patches/issues/4945)) ([012dff7](https://github.com/ReVanced/revanced-patches/commit/012dff7b6511b9e519ccac96f6713cf1a1b327b4)) + # [5.24.0](https://github.com/ReVanced/revanced-patches/compare/v5.23.0...v5.24.0) (2025-05-19) diff --git a/gradle.properties b/gradle.properties index d18a538e2..893543684 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.24.0 +version = 5.25.0-dev.1 From 74b6a94577ac3f73b04bd0cce98fb7011a6607fd Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Thu, 22 May 2025 12:14:33 +0200 Subject: [PATCH 05/46] fix(Disable Pairip license check): Change patch to default off --- .../sharetargets/RemoveShareTargetsPatch.kt | 3 ++- .../patches/messenger/metaai/RemoveMetaAIPatch.kt | 3 +-- .../misc/pairip/license/DisableLicenseCheckPatch.kt | 13 +++++++------ 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/patches/src/main/kotlin/app/revanced/patches/all/misc/shortcut/sharetargets/RemoveShareTargetsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/all/misc/shortcut/sharetargets/RemoveShareTargetsPatch.kt index 6b07c7dc6..4ec7651fe 100644 --- a/patches/src/main/kotlin/app/revanced/patches/all/misc/shortcut/sharetargets/RemoveShareTargetsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/all/misc/shortcut/sharetargets/RemoveShareTargetsPatch.kt @@ -17,7 +17,8 @@ val removeShareTargetsPatch = resourcePatch( try { document("res/xml/shortcuts.xml") } catch (_: FileNotFoundException) { - return@execute Logger.getLogger(this::class.java.name).warning("The app has no shortcuts") + return@execute Logger.getLogger(this::class.java.name).warning( + "The app has no shortcuts. No changes applied.") }.use { document -> val rootNode = document.getNode("shortcuts") as? Element ?: return@use diff --git a/patches/src/main/kotlin/app/revanced/patches/messenger/metaai/RemoveMetaAIPatch.kt b/patches/src/main/kotlin/app/revanced/patches/messenger/metaai/RemoveMetaAIPatch.kt index ea10ed6fc..e669ca2d8 100644 --- a/patches/src/main/kotlin/app/revanced/patches/messenger/metaai/RemoveMetaAIPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/messenger/metaai/RemoveMetaAIPatch.kt @@ -25,8 +25,7 @@ val removeMetaAIPatch = bytecodePatch( addInstructions( returnIndex, """ - invoke-static {p1, p2, v$returnRegister}, $EXTENSION_CLASS_DESCRIPTOR->overrideConfigBool(JZ)Z - + invoke-static { p1, p2, v$returnRegister }, $EXTENSION_CLASS_DESCRIPTOR->overrideConfigBool(JZ)Z move-result v$returnRegister """ ) diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/pairip/license/DisableLicenseCheckPatch.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/pairip/license/DisableLicenseCheckPatch.kt index 6284075e1..0eafad4e8 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/pairip/license/DisableLicenseCheckPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/pairip/license/DisableLicenseCheckPatch.kt @@ -7,20 +7,21 @@ import java.util.logging.Logger @Suppress("unused") val disableLicenseCheckPatch = bytecodePatch( - name = "Disable pairip license check", - description = "Disable Play Integrity Protect (pairip) client-side license check." + name = "Disable Pairip license check", + description = "Disable Play Integrity Protect (Pairip) client-side license check.", + use = false ) { execute { - if (processLicenseResponseFingerprint.methodOrNull == null || validateLicenseResponseFingerprint.methodOrNull == null) + if (processLicenseResponseFingerprint.methodOrNull == null || validateLicenseResponseFingerprint.methodOrNull == null) { return@execute Logger.getLogger(this::class.java.name) - .warning("Could not find pairip licensing check. No changes applied.") + .warning("Could not find Pairip licensing check. No changes applied.") + } // Set first parameter (responseCode) to 0 (success status). processLicenseResponseFingerprint.method.addInstruction(0, "const/4 p1, 0x0") // Short-circuit the license response validation. - validateLicenseResponseFingerprint.method.returnEarly(); - + validateLicenseResponseFingerprint.method.returnEarly() } } From 6ce739b0d09ddff6ba282e6f8c5d9a8c2233bed3 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 22 May 2025 10:18:30 +0000 Subject: [PATCH 06/46] chore: Release v5.25.0-dev.2 [skip ci] # [5.25.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.1...v5.25.0-dev.2) (2025-05-22) ### Bug Fixes * **Disable Pairip license check:** Change patch to default off ([74b6a94](https://github.com/ReVanced/revanced-patches/commit/74b6a94577ac3f73b04bd0cce98fb7011a6607fd)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f5a6f56d..ca4887605 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [5.25.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.1...v5.25.0-dev.2) (2025-05-22) + + +### Bug Fixes + +* **Disable Pairip license check:** Change patch to default off ([74b6a94](https://github.com/ReVanced/revanced-patches/commit/74b6a94577ac3f73b04bd0cce98fb7011a6607fd)) + # [5.25.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.24.0...v5.25.0-dev.1) (2025-05-22) diff --git a/gradle.properties b/gradle.properties index 893543684..45ec3b743 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.25.0-dev.1 +version = 5.25.0-dev.2 From 48b2e081ad7257e9a04e5c02ca6c571e30536652 Mon Sep 17 00:00:00 2001 From: Pun Butrach Date: Thu, 22 May 2025 19:56:33 +0700 Subject: [PATCH 07/46] ci: Attest release artifacts (#4816) Co-authored-by: oSumAtrIX --- .github/workflows/build_pull_request.yml | 6 +++--- .github/workflows/release.yml | 23 +++++++++++++++-------- .releaserc | 10 +++++----- 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build_pull_request.yml b/.github/workflows/build_pull_request.yml index b47e2e0b4..d77db8634 100644 --- a/.github/workflows/build_pull_request.yml +++ b/.github/workflows/build_pull_request.yml @@ -19,11 +19,11 @@ jobs: - name: Setup Java uses: actions/setup-java@v4 with: - distribution: "temurin" - java-version: "17" + distribution: 'temurin' + java-version: '17' - name: Cache Gradle - uses: burrunan/gradle-cache-action@v1 + uses: burrunan/gradle-cache-action@v3 - name: Build env: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3b682722f..849205933 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,24 +13,23 @@ jobs: permissions: contents: write packages: write + id-token: write + attestations: write runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: - # Make sure the release step uses its own credentials: - # https://github.com/cycjimmy/semantic-release-action#private-packages - persist-credentials: false fetch-depth: 0 - name: Setup Java uses: actions/setup-java@v4 with: - distribution: "temurin" - java-version: "17" + distribution: 'temurin' + java-version: '17' - name: Cache Gradle - uses: burrunan/gradle-cache-action@v1 + uses: burrunan/gradle-cache-action@v3 - name: Build env: @@ -40,7 +39,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: "lts/*" + node-version: 'lts/*' cache: 'npm' - name: Install dependencies @@ -54,6 +53,14 @@ jobs: fingerprint: ${{ vars.GPG_FINGERPRINT }} - name: Release + uses: cycjimmy/semantic-release-action@v4 + id: release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: npm exec semantic-release + + - name: Attest + if: steps.release.outputs.new_release_published == 'true' + uses: actions/attest-build-provenance@v2 + with: + subject-name: 'ReVanced Patches ${{ steps.release.outputs.new_release_git_tag }}' + subject-path: patches/build/libs/patches-*.rvp diff --git a/.releaserc b/.releaserc index b3d61b10b..ee495bf96 100644 --- a/.releaserc +++ b/.releaserc @@ -22,7 +22,7 @@ { "assets": [ "CHANGELOG.md", - "gradle.properties", + "gradle.properties" ], "message": "chore: Release v${nextRelease.version} [skip ci]\n\n${nextRelease.notes}" } @@ -33,16 +33,16 @@ "assets": [ { "path": "patches/build/libs/patches-!(*sources*|*javadoc*).rvp?(.asc)" - }, + } ], - successComment: false + "successComment": false } ], [ "@saithodev/semantic-release-backmerge", { - backmergeBranches: [{"from": "main", "to": "dev"}], - clearWorkspace: true + "backmergeBranches": [{"from": "main", "to": "dev"}], + "clearWorkspace": true } ] ] From 37e59d2771528c631dc13e73dac095fec95c6485 Mon Sep 17 00:00:00 2001 From: ILoveOpenSourceApplications <117499019+ILoveOpenSourceApplications@users.noreply.github.com> Date: Thu, 22 May 2025 22:05:11 +0530 Subject: [PATCH 08/46] fix(YouTube - Hide ads): Hide new type of general ad (#5004) --- .../youtube/patches/components/AdsFilter.java | 60 +++++++++---------- .../extension/youtube/settings/Settings.java | 1 - .../youtube/ad/general/HideAdsPatch.kt | 1 - .../resources/addresources/values/strings.xml | 3 - 4 files changed, 29 insertions(+), 36 deletions(-) diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/AdsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/AdsFilter.java index 78015ea79..1572c4b72 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/AdsFilter.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/AdsFilter.java @@ -64,48 +64,45 @@ public final class AdsFilter extends Filter { "_interstitial" ); - final var buttonedAd = new StringFilterGroup( - Settings.HIDE_BUTTONED_ADS, - "_ad_with", - "_buttoned_layout", - // text_image_button_group_layout, landscape_image_button_group_layout, full_width_square_image_button_group_layout - "image_button_group_layout", - "full_width_square_image_layout", - "video_display_button_group_layout", - "landscape_image_wide_button_layout", - "video_display_carousel_button_group_layout", - "video_display_full_buttoned_short_dr_layout", - "compact_landscape_image_layout", // Tablet layout search results. - "text_image_no_button_layout" // Tablet layout search results. - ); - final var generalAds = new StringFilterGroup( Settings.HIDE_GENERAL_ADS, + "_ad_with", + "_buttoned_layout", "ads_video_with_context", "banner_text_icon", - "square_image_layout", - "watch_metadata_app_promo", - "video_display_full_layout", - "hero_promo_image", - "statement_banner", + "brand_video_shelf", + "brand_video_singleton", "carousel_footered_layout", - "text_image_button_layout", + "carousel_headered_layout", + "compact_landscape_image_layout", // Tablet layout search results. + "composite_concurrent_carousel_layout", + "full_width_portrait_image_layout", + "full_width_square_image_carousel_layout", + "full_width_square_image_layout", + "hero_promo_image", + // text_image_button_group_layout, landscape_image_button_group_layout, full_width_square_image_button_group_layout + "image_button_group_layout", + "landscape_image_wide_button_layout", "primetime_promo", "product_details", - "composite_concurrent_carousel_layout", - "carousel_headered_layout", - "full_width_portrait_image_layout", - "brand_video_shelf", - "brand_video_singleton" + "square_image_layout", + "statement_banner", + "text_image_button_layout", + "text_image_no_button_layout", // Tablet layout search results. + "video_display_button_group_layout", + "video_display_carousel_button_group_layout", + "video_display_full_buttoned_short_dr_layout", + "video_display_full_layout", + "watch_metadata_app_promo" ); final var movieAds = new StringFilterGroup( Settings.HIDE_MOVIES_SECTION, "browsy_bar", "compact_movie", + "compact_tvfilm_item", "horizontal_movie_shelf", "movie_and_show_upsell_card", - "compact_tvfilm_item", "offer_module_root" ); @@ -160,7 +157,6 @@ public final class AdsFilter extends Filter { addPathCallbacks( generalAds, - buttonedAd, merchandise, viewProducts, selfSponsor, @@ -181,17 +177,19 @@ public final class AdsFilter extends Filter { } // Check for the index because of likelihood of false positives. - if (matchedGroup == shoppingLinks && contentIndex != 0) { + if (contentIndex != 0 && matchedGroup == shoppingLinks) { return false; } - if (exceptions.matches(path)) + if (exceptions.matches(path)) { return false; + } if (matchedGroup == fullscreenAd) { if (path.contains("|ImageType|")) closeFullscreenAd(); - return false; // Do not actually filter the fullscreen ad otherwise it will leave a dimmed screen. + // Do not actually filter the fullscreen ad otherwise it will leave a dimmed screen. + return false; } if (matchedGroup == channelProfile) { diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java index 4a36e6458..27c6f0d00 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java @@ -68,7 +68,6 @@ public class Settings extends BaseSettings { public static final BooleanSetting FORCE_ORIGINAL_AUDIO = new BooleanSetting("revanced_force_original_audio", FALSE, new ForceOriginalAudioAvailability()); // Ads - public static final BooleanSetting HIDE_BUTTONED_ADS = new BooleanSetting("revanced_hide_buttoned_ads", TRUE); public static final BooleanSetting HIDE_END_SCREEN_STORE_BANNER = new BooleanSetting("revanced_hide_end_screen_store_banner", TRUE, true); public static final BooleanSetting HIDE_FULLSCREEN_ADS = new BooleanSetting("revanced_hide_fullscreen_ads", TRUE); public static final BooleanSetting HIDE_GENERAL_ADS = new BooleanSetting("revanced_hide_general_ads", TRUE); diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/ad/general/HideAdsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/ad/general/HideAdsPatch.kt index dc66e4bfe..351e8ec2a 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/ad/general/HideAdsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/ad/general/HideAdsPatch.kt @@ -46,7 +46,6 @@ private val hideAdsResourcePatch = resourcePatch { SwitchPreference("revanced_hide_general_ads"), SwitchPreference("revanced_hide_end_screen_store_banner"), SwitchPreference("revanced_hide_fullscreen_ads"), - SwitchPreference("revanced_hide_buttoned_ads"), SwitchPreference("revanced_hide_paid_promotion_label"), SwitchPreference("revanced_hide_player_store_shelf"), SwitchPreference("revanced_hide_self_sponsor_ads"), diff --git a/patches/src/main/resources/addresources/values/strings.xml b/patches/src/main/resources/addresources/values/strings.xml index 95a31b71f..ede128926 100644 --- a/patches/src/main/resources/addresources/values/strings.xml +++ b/patches/src/main/resources/addresources/values/strings.xml @@ -427,9 +427,6 @@ Limitations This feature is only available for older devices" Fullscreen ads are shown - Hide buttoned ads - Buttoned ads are hidden - Buttoned ads are shown Hide paid promotion label Paid promotion label is hidden Paid promotion label is shown From b5c0228e7153f535e1016d1dced140cfab729082 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 22 May 2025 16:38:22 +0000 Subject: [PATCH 09/46] chore: Release v5.25.0-dev.3 [skip ci] # [5.25.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.2...v5.25.0-dev.3) (2025-05-22) ### Bug Fixes * **YouTube - Hide ads:** Hide new type of general ad ([#5004](https://github.com/ReVanced/revanced-patches/issues/5004)) ([37e59d2](https://github.com/ReVanced/revanced-patches/commit/37e59d2771528c631dc13e73dac095fec95c6485)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca4887605..e4de8881b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [5.25.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.2...v5.25.0-dev.3) (2025-05-22) + + +### Bug Fixes + +* **YouTube - Hide ads:** Hide new type of general ad ([#5004](https://github.com/ReVanced/revanced-patches/issues/5004)) ([37e59d2](https://github.com/ReVanced/revanced-patches/commit/37e59d2771528c631dc13e73dac095fec95c6485)) + # [5.25.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.1...v5.25.0-dev.2) (2025-05-22) diff --git a/gradle.properties b/gradle.properties index 45ec3b743..6dddf5b06 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.25.0-dev.2 +version = 5.25.0-dev.3 From 7686bbe975644e1e582fa52f166879da5694ed93 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Thu, 22 May 2025 19:25:15 +0200 Subject: [PATCH 10/46] fix(YouTube - GmsCore support): Restore patch functionality from prior merge --- patches/api/patches.api | 1 - .../app/revanced/patches/shared/misc/gms/GmsCoreSupportPatch.kt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/patches/api/patches.api b/patches/api/patches.api index 49dd6a7ea..72b3534e9 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -1644,7 +1644,6 @@ public final class app/revanced/util/BytecodeUtilsKt { public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;J)V public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;S)V public static final fun returnLate (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;Z)V - public static synthetic fun returnLate$default (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableMethod;ZILjava/lang/Object;)V public static final fun transformMethods (Lapp/revanced/patcher/util/proxy/mutableTypes/MutableClass;Lkotlin/jvm/functions/Function1;)V public static final fun traverseClassHierarchy (Lapp/revanced/patcher/patch/BytecodePatchContext;Lapp/revanced/patcher/util/proxy/mutableTypes/MutableClass;Lkotlin/jvm/functions/Function1;)V } diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/gms/GmsCoreSupportPatch.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/gms/GmsCoreSupportPatch.kt index 19e1bad96..d5260653a 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/gms/GmsCoreSupportPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/gms/GmsCoreSupportPatch.kt @@ -198,7 +198,7 @@ fun gmsCoreSupportPatch( // Google Play Utility is not present in all apps, so we need to check if it's present. if (googlePlayUtilityFingerprint.methodOrNull != null) { - googlePlayUtilityFingerprint.method.returnEarly() + googlePlayUtilityFingerprint.method.returnEarly(0) } // Verify GmsCore is installed and whitelisted for power optimizations and background usage. From d519a8c81fde0fa7c26653842d17fb9476d6b5a6 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 22 May 2025 17:28:53 +0000 Subject: [PATCH 11/46] chore: Release v5.25.0-dev.4 [skip ci] # [5.25.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.3...v5.25.0-dev.4) (2025-05-22) ### Bug Fixes * **YouTube - GmsCore support:** Restore patch functionality from prior merge ([7686bbe](https://github.com/ReVanced/revanced-patches/commit/7686bbe975644e1e582fa52f166879da5694ed93)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e4de8881b..51c18400e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [5.25.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.3...v5.25.0-dev.4) (2025-05-22) + + +### Bug Fixes + +* **YouTube - GmsCore support:** Restore patch functionality from prior merge ([7686bbe](https://github.com/ReVanced/revanced-patches/commit/7686bbe975644e1e582fa52f166879da5694ed93)) + # [5.25.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.2...v5.25.0-dev.3) (2025-05-22) diff --git a/gradle.properties b/gradle.properties index 6dddf5b06..80a555fe8 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.25.0-dev.3 +version = 5.25.0-dev.4 From 20abac52121fbecb65d87d0982f3380e1cf4e20e Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Thu, 22 May 2025 21:20:01 +0200 Subject: [PATCH 12/46] fix(YouTube): Better handle incorrect duplicate translations --- .../app/revanced/extension/shared/Utils.java | 21 +++++++++++++------ .../preference/SortedListPreference.java | 21 ++++++++++++------- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/Utils.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/Utils.java index 3cb809a2d..46aba8191 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/Utils.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/Utils.java @@ -1,7 +1,11 @@ package app.revanced.extension.shared; import android.annotation.SuppressLint; -import android.app.*; +import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; +import android.app.DialogFragment; +import android.app.Fragment; import android.content.Context; import android.content.Intent; import android.content.pm.ApplicationInfo; @@ -18,6 +22,7 @@ import android.os.Looper; import android.preference.Preference; import android.preference.PreferenceGroup; import android.preference.PreferenceScreen; +import android.util.Pair; import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; @@ -738,9 +743,9 @@ public class Utils { * then the preferences are left unsorted. */ @SuppressWarnings("deprecation") - public static void sortPreferenceGroups(@NonNull PreferenceGroup group) { + public static void sortPreferenceGroups(PreferenceGroup group) { Sort groupSort = Sort.fromKey(group.getKey(), Sort.UNSORTED); - SortedMap preferences = new TreeMap<>(); + List> preferences = new ArrayList<>(); for (int i = 0, prefCount = group.getPreferenceCount(); i < prefCount; i++) { Preference preference = group.getPreference(i); @@ -769,17 +774,21 @@ public class Utils { throw new IllegalStateException(); } - preferences.put(sortValue, preference); + preferences.add(new Pair<>(sortValue, preference)); } + Collections.sort(preferences, (pair1, pair2) + -> pair1.first.compareToIgnoreCase(pair2.first)); + int index = 0; - for (Preference pref : preferences.values()) { + for (Pair pair : preferences) { int order = index++; + Preference pref = pair.second; // Move any screens, intents, and the one off About preference to the top. if (pref instanceof PreferenceScreen || pref instanceof ReVancedAboutPreference || pref.getIntent() != null) { - // Arbitrary high number. + // Any arbitrary large number. order -= 1000; } diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/SortedListPreference.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/SortedListPreference.java index c5d166a7f..469319539 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/SortedListPreference.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/SortedListPreference.java @@ -6,9 +6,8 @@ import android.util.AttributeSet; import android.util.Pair; import java.util.ArrayList; +import java.util.Collections; import java.util.List; -import java.util.SortedMap; -import java.util.TreeMap; import app.revanced.extension.shared.Utils; @@ -46,17 +45,24 @@ public class SortedListPreference extends ListPreference { } List> firstEntries = new ArrayList<>(firstEntriesToPreserve); - SortedMap> lastEntries = new TreeMap<>(); + + // Android does not have a triple class like Kotlin, So instead use a nested pair. + // Cannot easily use a SortedMap, because if two entries incorrectly have + // identical names then the duplicates entries are not preserved. + List>> lastEntries = new ArrayList<>(); for (int i = 0; i < entrySize; i++) { Pair pair = new Pair<>(entries[i], entryValues[i]); if (i < firstEntriesToPreserve) { firstEntries.add(pair); } else { - lastEntries.put(Utils.removePunctuationToLowercase(pair.first), pair); + lastEntries.add(new Pair<>(Utils.removePunctuationToLowercase(pair.first), pair)); } } + Collections.sort(lastEntries, (pair1, pair2) + -> pair1.first.compareToIgnoreCase(pair2.first)); + CharSequence[] sortedEntries = new CharSequence[entrySize]; CharSequence[] sortedEntryValues = new CharSequence[entrySize]; @@ -67,9 +73,10 @@ public class SortedListPreference extends ListPreference { i++; } - for (Pair pair : lastEntries.values()) { - sortedEntries[i] = pair.first; - sortedEntryValues[i] = pair.second; + for (Pair> outer : lastEntries) { + Pair inner = outer.second; + sortedEntries[i] = inner.first; + sortedEntryValues[i] = inner.second; i++; } From 70c904b463472282679d3d4c77e1172bcbde5f2c Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 22 May 2025 19:23:25 +0000 Subject: [PATCH 13/46] chore: Release v5.25.0-dev.5 [skip ci] # [5.25.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.4...v5.25.0-dev.5) (2025-05-22) ### Bug Fixes * **YouTube:** Better handle incorrect duplicate translations ([20abac5](https://github.com/ReVanced/revanced-patches/commit/20abac52121fbecb65d87d0982f3380e1cf4e20e)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 51c18400e..81826c0c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [5.25.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.4...v5.25.0-dev.5) (2025-05-22) + + +### Bug Fixes + +* **YouTube:** Better handle incorrect duplicate translations ([20abac5](https://github.com/ReVanced/revanced-patches/commit/20abac52121fbecb65d87d0982f3380e1cf4e20e)) + # [5.25.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.3...v5.25.0-dev.4) (2025-05-22) diff --git a/gradle.properties b/gradle.properties index 80a555fe8..26a3c44d4 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.25.0-dev.4 +version = 5.25.0-dev.5 From 6a8c78af313ce5699568982782d59ad477c54e22 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 23 May 2025 21:54:47 +0200 Subject: [PATCH 14/46] chore: Sync translations (#5019) --- .../addresources/values-ar-rSA/strings.xml | 3 --- .../addresources/values-az-rAZ/strings.xml | 3 --- .../addresources/values-be-rBY/strings.xml | 3 --- .../addresources/values-bg-rBG/strings.xml | 3 --- .../addresources/values-bn-rBD/strings.xml | 3 --- .../addresources/values-ca-rES/strings.xml | 3 --- .../addresources/values-cs-rCZ/strings.xml | 3 --- .../addresources/values-da-rDK/strings.xml | 3 --- .../addresources/values-de-rDE/strings.xml | 3 --- .../addresources/values-el-rGR/strings.xml | 3 --- .../addresources/values-es-rES/strings.xml | 3 --- .../addresources/values-et-rEE/strings.xml | 3 --- .../addresources/values-fi-rFI/strings.xml | 3 --- .../addresources/values-fil-rPH/strings.xml | 3 --- .../addresources/values-fr-rFR/strings.xml | 3 --- .../addresources/values-ga-rIE/strings.xml | 3 --- .../addresources/values-hu-rHU/strings.xml | 3 --- .../addresources/values-hy-rAM/strings.xml | 3 --- .../addresources/values-in-rID/strings.xml | 3 --- .../addresources/values-it-rIT/strings.xml | 3 --- .../addresources/values-iw-rIL/strings.xml | 3 --- .../addresources/values-ja-rJP/strings.xml | 3 --- .../addresources/values-ko-rKR/strings.xml | 17 +++++++---------- .../addresources/values-lt-rLT/strings.xml | 3 --- .../addresources/values-lv-rLV/strings.xml | 3 --- .../addresources/values-nl-rNL/strings.xml | 3 --- .../addresources/values-pl-rPL/strings.xml | 3 --- .../addresources/values-pt-rBR/strings.xml | 9 +++------ .../addresources/values-pt-rPT/strings.xml | 3 --- .../addresources/values-ro-rRO/strings.xml | 3 --- .../addresources/values-ru-rRU/strings.xml | 3 --- .../addresources/values-sk-rSK/strings.xml | 3 --- .../addresources/values-sl-rSI/strings.xml | 3 --- .../addresources/values-sq-rAL/strings.xml | 3 --- .../addresources/values-sr-rCS/strings.xml | 3 --- .../addresources/values-sr-rSP/strings.xml | 3 --- .../addresources/values-sv-rSE/strings.xml | 3 --- .../addresources/values-th-rTH/strings.xml | 3 --- .../addresources/values-tr-rTR/strings.xml | 3 --- .../addresources/values-uk-rUA/strings.xml | 11 ++++------- .../addresources/values-vi-rVN/strings.xml | 3 --- .../addresources/values-zh-rCN/strings.xml | 3 --- .../addresources/values-zh-rTW/strings.xml | 3 --- 43 files changed, 14 insertions(+), 143 deletions(-) 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 212eb22f3..28fdb4dc8 100644 --- a/patches/src/main/resources/addresources/values-ar-rSA/strings.xml +++ b/patches/src/main/resources/addresources/values-ar-rSA/strings.xml @@ -365,9 +365,6 @@ 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 bb68fbb7a..7c0759957 100644 --- a/patches/src/main/resources/addresources/values-az-rAZ/strings.xml +++ b/patches/src/main/resources/addresources/values-az-rAZ/strings.xml @@ -365,9 +365,6 @@ Məhdudiyyətlər Bu xüsusiyyət yalnız köhnə cihazlar üçün mövcuddur" Tam ekran reklamları göstərilir - Düyməli reklamları gizlət - Düyməli reklamlar gizlədilir - Düyməli reklamlar göstərilir Ödənişli tanıtım etiketini gizlət Ödənişli reklam etiketi gizlədilib Ödənişli reklam etiketi göstərilir 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 63d92c4d5..6eea02a0b 100644 --- a/patches/src/main/resources/addresources/values-be-rBY/strings.xml +++ b/patches/src/main/resources/addresources/values-be-rBY/strings.xml @@ -365,9 +365,6 @@ Second \"item\" text" Гэтая функцыя даступная толькі для старых прылад" Адлюстроўваецца поўнаэкранная рэклама - Схаваць рэкламу на кнопках - Аб\"явы на кнопках схаваныя - Паказваюцца аб\"явы на кнопках Схаваць метку аплачанай акцыі Пазнака платнай акцыі схавана Адлюстроўваецца ярлык платнай акцыі 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 9f83dc52a..a7ebfbfea 100644 --- a/patches/src/main/resources/addresources/values-bg-rBG/strings.xml +++ b/patches/src/main/resources/addresources/values-bg-rBG/strings.xml @@ -365,9 +365,6 @@ Second \"item\" text" Тази функция е налична само за по-стари устройства" Рекламите в режим на цял екран са показани - Скриване на рекламни бутони - Бутонираните реклами са скрити - Бутонираните реклами са показани Скриване на платените промоции Промоционалните етикети са скрити Промоционалните етикети се показват 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 de95e72d4..459e36e5a 100644 --- a/patches/src/main/resources/addresources/values-bn-rBD/strings.xml +++ b/patches/src/main/resources/addresources/values-bn-rBD/strings.xml @@ -365,9 +365,6 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ এই বৈশিষ্ট্যটি কেবল পুরনো ডিভাইসের জন্য উপলব্ধ" পূর্ণ স্ক্রীন বিজ্ঞাপন প্রদর্শিত হয়েছে - বোতামযুক্ত বিজ্ঞাপন লুকান - বোতামযুক্ত বিজ্ঞাপন লুকিয়ে রয়েছে - বোতামযুক্ত বিজ্ঞাপন প্রদর্শিত হয়েছে অর্থের বিনিময়ে প্রচার অন্তর্ভুক্ত রয়েছে ব্যানার লুকান অর্থের বিনিময়ে প্রচার অন্তর্ভুক্ত রয়েছে ব্যানার লুকিয়ে রয়েছে অর্থের বিনিময়ে প্রচার অন্তর্ভুক্ত রয়েছে ব্যানার প্রদর্শিত হয়েছে 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 3ca5abe19..38bb58cf1 100644 --- a/patches/src/main/resources/addresources/values-ca-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-ca-rES/strings.xml @@ -365,9 +365,6 @@ Limitacions Aquesta funció només està disponible per a dispositius antics" Els anuncis de pantalla completa es mostren - Amaga els anuncis amb botó - Els anuncis amb botó estan amagats - Els anuncis amb botó es mostren Amaga l\'etiqueta de promoció de pagament L\'etiqueta de promoció de pagament està amagada Es mostra l\'etiqueta de promoció de pagament 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 d2eb23f23..f20ea1506 100644 --- a/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml +++ b/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml @@ -365,9 +365,6 @@ Omezení: Tato funkce je dostupná pouze pro starší zařízení" Celostránkové reklamy jsou zobrazeny - Skrýt reklamy s tlačítky - Reklamy s tlačítky jsou skryty - Reklamy s tlačítky jsou zobrazeny Skrýt štítek placené propagace Štítek placené propagace je skryt Štítek placené propagace je zobrazen 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 c2945d790..36a2ad9c6 100644 --- a/patches/src/main/resources/addresources/values-da-rDK/strings.xml +++ b/patches/src/main/resources/addresources/values-da-rDK/strings.xml @@ -338,9 +338,6 @@ Begrænsninger Denne funktion er kun tilgængelig for ældre enheder" Fuldskærms annoncer vises - Skjul knapfyldte annoncer - Knappede annoncer er skjult - Knappede annoncer vises Skjul betalt kampagneetiket Betalt reklamemærke er skjult Betalt salgsfremmende mærke er vist 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 f79a40bdd..31007aecf 100644 --- a/patches/src/main/resources/addresources/values-de-rDE/strings.xml +++ b/patches/src/main/resources/addresources/values-de-rDE/strings.xml @@ -360,9 +360,6 @@ Einschränkungen Diese Funktion ist nur für ältere Geräte verfügbar" Vollbild-Anzeigen werden angezeigt - Verknüpfte Werbung ausblenden - Verknüpfte Anzeigen sind ausgeblendet - Verknüpfte Werbung wird angezeigt Bezahltes Werbe-Label ausblenden Bezahltes Werbelabel ist ausgeblendet Bezahltes Werbe-Label wird angezeigt 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 7a6374031..bce913d42 100644 --- a/patches/src/main/resources/addresources/values-el-rGR/strings.xml +++ b/patches/src/main/resources/addresources/values-el-rGR/strings.xml @@ -367,9 +367,6 @@ Second \"item\" text" Αυτή η λειτουργία είναι διαθέσιμη μόνο για παλιότερες συσκευές" Οι διαφημίσεις πλήρους οθόνης εμφανίζονται - Διαφημίσεις κουμπιών - Κρυμμένες - Εμφανίζονται Ετικέτες προώθησης επί πληρωμή Κρυμμένες Εμφανίζονται 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 e03c5daee..c47f8410f 100644 --- a/patches/src/main/resources/addresources/values-es-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-es-rES/strings.xml @@ -362,9 +362,6 @@ Limitaciones Esta función solo está disponible para dispositivos antiguos" Se muestran anuncios a pantalla completa - Ocultar anuncios botonados - Los anuncios botonados están ocultos - Se muestran anuncios botonados Ocultar etiqueta de promoción de pago Etiqueta de promoción pagada está oculta Etiqueta de promoción pagada se muestra 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 3763d8631..806fbd8f8 100644 --- a/patches/src/main/resources/addresources/values-et-rEE/strings.xml +++ b/patches/src/main/resources/addresources/values-et-rEE/strings.xml @@ -365,9 +365,6 @@ Piirangud See funktsioon on saadaval ainult vanemates seadmetes" Täisekraanireklaamid kuvatakse - Peida nuppudega reklaamid - Nuppudega reklaamid on peidetud - Nuked onukleitud reklaamid näidatakse Peida makstud edendamise silt Makstud edendamise silt on peidus Makstud edendamise silt on näidatud 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 7757d978a..4984d8665 100644 --- a/patches/src/main/resources/addresources/values-fi-rFI/strings.xml +++ b/patches/src/main/resources/addresources/values-fi-rFI/strings.xml @@ -360,9 +360,6 @@ Rajoitukset Tämä ominaisuus on käytettävissä vain vanhemmilla laitteilla" Koko näytön mainokset näytetään - Piilota painikkeelliset mainokset - Painikkeelliset mainokset on piilotettu - Painikkeelliset mainokset näytetään Piilota maksetun mainostuksen tunniste Maksetun mainostuksen tunniste on piilotettu Maksetun mainostuksen tunniste näytetään 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 a646bdb1c..ca7c18c22 100644 --- a/patches/src/main/resources/addresources/values-fil-rPH/strings.xml +++ b/patches/src/main/resources/addresources/values-fil-rPH/strings.xml @@ -365,9 +365,6 @@ Mga limitasyon Ang tampok na ito ay magagamit lamang para sa mga mas lumang device" Ipinapakita ang mga fullscreen na ad - Itago ang mga naka-button na ad - Nakatago ang mga naka-button na ad - Ipinapakita ang mga naka-button na ad Itago ang may bayad na label ng promosyon Nakatago ang label ng bayad na promosyon Ipinapakita ang may bayad na label ng promosyon 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 0a0d32b9d..e93eb400c 100644 --- a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml +++ b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml @@ -365,9 +365,6 @@ Limitations Cette fonctionnalité est disponible uniquement pour les appareils anciens" Les annonces plein écran sont affichées - Masquer les annonces au format bouton - Les annonces au format bouton sont masquées - Les annonces au format bouton sont affichées Masquer la bannière de promotion rémunérée La bannière \"Inclut une promotion rémunérée\" est masquée La bannière \"Inclut une promotion rémunérée\" est affichée 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 37b8972d2..bde596d74 100644 --- a/patches/src/main/resources/addresources/values-ga-rIE/strings.xml +++ b/patches/src/main/resources/addresources/values-ga-rIE/strings.xml @@ -365,9 +365,6 @@ Teorainneacha Níl an ghné seo ar fáil ach do ghléasanna níos sine" Taispeántar fógraí lánscáileáin - Folaigh fógraí cnaipe - Tá fógraí cnaipe i bhfolach - Taispeántar fógraí cnaipe Folaigh lipéad chun cinn íoctha Tá an lipéad promóisin íoctha i bhfolach Taispeántar lipéad promóisin íoctha 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 da9bf76a6..85f851781 100644 --- a/patches/src/main/resources/addresources/values-hu-rHU/strings.xml +++ b/patches/src/main/resources/addresources/values-hu-rHU/strings.xml @@ -365,9 +365,6 @@ Korlátozások Ez a funkció csak régebbi eszközökön érhető el" A teljes képernyős hirdetések láthatók - Gomb hirdetések elrejtése - A gomb hirdetések el vannak rejtve - A gomb hirdetések láthatók Fizetett promóció címke elrejtése A fizetett promóciós címke el van rejtve A fizetett promóciós címke meg van jelenítve 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 e2bd8317d..d9b183906 100644 --- a/patches/src/main/resources/addresources/values-hy-rAM/strings.xml +++ b/patches/src/main/resources/addresources/values-hy-rAM/strings.xml @@ -365,9 +365,6 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել Այս հատկությունը հասանելի է միայն հին սարքերի համար" Լի էկրանի գովազդները երևում են - Թաքցնել կոճակավորված գովազդները - Կոճակավորված գովազդները թաքցված են - Կոճակավորված գովազդները երևում են Թաքցնել վճարված խթանման նշանը Վճարված խթանման նշանը թաքցված է Վճարված խթանման նշանը երևում է 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 1adcf77c0..b06449f45 100644 --- a/patches/src/main/resources/addresources/values-in-rID/strings.xml +++ b/patches/src/main/resources/addresources/values-in-rID/strings.xml @@ -365,9 +365,6 @@ Keterbatasan Fitur ini hanya tersedia untuk perangkat yang lebih lama" Iklan layar penuh ditampilkan - Sembunyikan iklan bertombol - Iklan bertombol disembunyikan - Iklan bertombol ditampilkan Sembunyikan label promosi berbayar Label promosi berbayar disembunyikan Label promosi berbayar ditampilkan 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 c51c0994f..52888ad47 100644 --- a/patches/src/main/resources/addresources/values-it-rIT/strings.xml +++ b/patches/src/main/resources/addresources/values-it-rIT/strings.xml @@ -365,9 +365,6 @@ Note: Questa funzione è disponibile solo per i dispositivi più vecchi" Le pubblicità a schermo intero sono visibili - Nascondi le pubblicità a pulsante - Le pubblicità a pulsante sono nascoste - Le pubblicità a pulsante sono visibili Nascondi l\'etichetta della promozione a pagamento L\'etichetta della promozione a pagamento è nascosta L\'etichetta della promozione a pagamento è visibile 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 e16a86143..946e9d9a4 100644 --- a/patches/src/main/resources/addresources/values-iw-rIL/strings.xml +++ b/patches/src/main/resources/addresources/values-iw-rIL/strings.xml @@ -349,9 +349,6 @@ Second \"item\" text" תכונה זו זמינה רק עבור מכשירים ישנים יותר" מודעות מסך מלא מוצגות - הסתר מודעות מכופתרות - מודעות מכפותרות מוסתרות - מודעות מכפותרות מוצגות הסתר תווית קידום מכירות בתשלום תווית קידום מכירות בתשלום מוסתרת תווית קידום מכירות בתשלום מוצגת 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 a5c60ce19..e59e4ed5c 100644 --- a/patches/src/main/resources/addresources/values-ja-rJP/strings.xml +++ b/patches/src/main/resources/addresources/values-ja-rJP/strings.xml @@ -368,9 +368,6 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ この機能は、古いデバイスでのみ利用できます" 全画面広告は、アプリ起動時に表示されます - ボタン付き広告を非表示 - ボタン付き広告は表示されません - ボタン付き広告は表示されます 「プロモーションを含みます」ボタンを非表示 「プロモーションを含みます」ボタンはプレーヤー画面に表示されません 「プロモーションを含みます」ボタンはプレーヤー画面に表示されます 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 d5bb6263a..0d7324c0b 100644 --- a/patches/src/main/resources/addresources/values-ko-rKR/strings.xml +++ b/patches/src/main/resources/addresources/values-ko-rKR/strings.xml @@ -21,15 +21,15 @@ Second \"item\" text" - 환경 검사에 실패함 + 환경 검사에 실패하였습니다 공식 홈페이지 열기 닫기 <h5>이 앱은 사용자가 패치하지 않은 것 같습니다.</h5><br>이 앱은 제대로 작동하지 않을 수 있으며, <b>사용 시 해롭거나 심지어 위험할 수도 있습니다</b>.<br><br>이러한 검사는 이 앱이 사전에 패치되었거나 다른 사람으로부터 받은 것임을 의미합니다:<br><br><small>%1$s</small><br>검증되고 안전한 앱을 사용하고 있는지 확인하려면 <b>이 앱을 삭제하고 직접 패치하는 것</b>을 강력히 권장합니다.<p><br>이 경고는 두 번만 표시됩니다. - 다른 기기에서 패치됨 - ReVanced Manager에 의해 설치되지 않음 - 10분 이상 전에 패치됨 - %s 일 전에 패치됨 - APK 빌드 날짜가 손상됨 + 다른 기기에서 패치되었습니다 + ReVanced Manager에 의해 설치되지 않았습니다 + 10분 이상 전에 패치되었습니다 + %s 일 전에 패치되었습니다 + APK 빌드 날짜가 손상되었습니다 설정 @@ -245,7 +245,7 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배 AI 생성 동영상 요약 섹션 숨기기 AI 생성 동영상 요약 섹션이 숨겨집니다 AI 생성 동영상 요약 섹션이 표시됩니다 - 요청 버튼 숨기기 + 요청 섹션 숨기기 요청 섹션이 숨겨집니다 요청 섹션이 표시됩니다 속성 섹션 숨기기 @@ -368,9 +368,6 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배 이 설정은 구형 기기에서만 사용할 수 있습니다" 전체 화면 광고가 표시됩니다 - 버튼형 광고 숨기기 - 버튼형 광고가 숨겨집니다 - 버튼형 광고가 표시됩니다 유료 광고 포함 라벨 숨기기 유료 광고 포함 라벨이 숨겨집니다 유료 광고 포함 라벨이 표시됩니다 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 4542a178e..4ca2c90e9 100644 --- a/patches/src/main/resources/addresources/values-lt-rLT/strings.xml +++ b/patches/src/main/resources/addresources/values-lt-rLT/strings.xml @@ -365,9 +365,6 @@ Apribojimai Ši funkcija yra prieinama tik senesniuose įrenginiuose" Viso ekrano reklamos yra rodomos - Slėpti reklamas su mygtukais - Reklamos su mygtukais yra paslėptos - Reklamos su mygtukais yra rodomos Slėpti apmokėtos reklamos etiketę Apmokėtos reklamos etiketė yra paslėpta Apmokėtos reklamos etiketė yra rodoma 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 149e74ac4..9b5476f68 100644 --- a/patches/src/main/resources/addresources/values-lv-rLV/strings.xml +++ b/patches/src/main/resources/addresources/values-lv-rLV/strings.xml @@ -365,9 +365,6 @@ Ierobežojumi Šī funkcija ir pieejama tikai vecākiem ierīcēm" Pilnekrāna reklāmas ir redzamas - Paslēpt reklāmas ar pogām - Reklāmas ar pogām ir paslēptas - Reklāmas ar pogām ir redzamas Paslēpt apmaksātas reklāmas etiķeti Apmaksātas reklāmas etiķete ir paslēpta Apmaksātas reklāmas etiķete ir redzama 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 3e613df68..6ad83c18d 100644 --- a/patches/src/main/resources/addresources/values-nl-rNL/strings.xml +++ b/patches/src/main/resources/addresources/values-nl-rNL/strings.xml @@ -365,9 +365,6 @@ Beperkingen Deze functie is alleen beschikbaar voor oudere apparaten" Volledig scherm advertenties worden getoond - Advertenties met knoppen verbergen - Advertenties met knoppen zijn verborgen - Advertenties met knoppen worden getoond Betaalde promotielabel verbergen Betaalde promotielabel is verborgen Betaalde promotielabel wordt getoond 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 552507398..152e51153 100644 --- a/patches/src/main/resources/addresources/values-pl-rPL/strings.xml +++ b/patches/src/main/resources/addresources/values-pl-rPL/strings.xml @@ -365,9 +365,6 @@ Ograniczenia Ta funkcja jest dostępna tylko dla starszych urządzeń" Reklamy pełnoekranowe są widoczne - Reklamy z przyciskami - Reklamy z przyciskami są ukryte - Reklamy z przyciskami są widoczne Etykiety płatnej promocji Etykiety płatnej promocji są ukryte Etykiety płatnej promocji są widoczne 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 3d6027222..a99c688fb 100644 --- a/patches/src/main/resources/addresources/values-pt-rBR/strings.xml +++ b/patches/src/main/resources/addresources/values-pt-rBR/strings.xml @@ -363,9 +363,6 @@ Linitações Este recurso está disponível apenas para dispositivos mais antigos" Anúncios em tela cheia não estão ocultos - Ocultar anúncios com botões - Os anúncios com botões estão ocultos - Anúncios com botões não estão ocultos Ocultar o rótulo de promoção paga O rótulo de promoção paga está oculto O rótulo de promoção paga é mostrada @@ -762,8 +759,8 @@ Para exibir o menu da faixa de áudio, altere \"Spoof video streams\" para iOS T Botão gostei está oculto Botão gostei não está oculto Ocultar botão Não curtir - Botão não gostei está oculto - Botão não gostei é mostrado + Botão não gostei é mostrado + Botão não gostei está oculto Ocultar botão Comentários Botão comentários está oculto Botão comentários não está oculto @@ -847,7 +844,7 @@ Configurações → Reprodução → Reproduzir próximo vídeo automaticamente" Recarregue o vídeo para votar usando o Return YouTube Dislike Oculto pelo proprietário - Não gostei está oculto + Não gostei é mostrado Não gostei não está oculto Mostrar não gostei no Shorts "\"Não gostei\" nos Shorts são mostrados 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 162ed02dd..145fc4b52 100644 --- a/patches/src/main/resources/addresources/values-pt-rPT/strings.xml +++ b/patches/src/main/resources/addresources/values-pt-rPT/strings.xml @@ -365,9 +365,6 @@ Limitações Tính năng này chỉ khả dụng cho các thiết bị cũ" Os anúncios são visíveis em ecrã cheia - Esconder anúncios com botão - Anúncios com botões estão escondidos - Os anúncios com botões são visíveis Ocultar rótulo de promoção paga O rótulo de promoção pago está oculto Rótulo de promoção pago é mostrado 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 490018070..da014d5c6 100644 --- a/patches/src/main/resources/addresources/values-ro-rRO/strings.xml +++ b/patches/src/main/resources/addresources/values-ro-rRO/strings.xml @@ -365,9 +365,6 @@ Limitări Această funcție este disponibilă numai pentru dispozitivele mai vechi" Reclame pe ecran complet sunt afișate - Ascunde reclame butoane - Reclame nastate sunt ascunse - Reclame buttonate sunt afișate Ascunde eticheta promoției cu plată Eticheta promoției plătite este ascunsă Eticheta promoției plătite este afișată 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 f1e2135e7..f7d442d11 100644 --- a/patches/src/main/resources/addresources/values-ru-rRU/strings.xml +++ b/patches/src/main/resources/addresources/values-ru-rRU/strings.xml @@ -365,9 +365,6 @@ 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 3ce11cac4..807457af5 100644 --- a/patches/src/main/resources/addresources/values-sk-rSK/strings.xml +++ b/patches/src/main/resources/addresources/values-sk-rSK/strings.xml @@ -358,9 +358,6 @@ Slová s veľkými písmenami v strede musia byť zadané s použitím veľkých Táto funkcia je dostupná len pre staršie zariadenia" Zobrazujú sa reklamy na celú obrazovku - Skryť zapnuté reklamy - Zapnuté reklamy sú skryté - Zobrazujú sa reklamy s tlačidlami Skryť štítok platenej propagácie Štítok platenej propagácie je skrytý Zobrazuje sa štítok platenej propagácie 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 8a665c963..a7987867b 100644 --- a/patches/src/main/resources/addresources/values-sl-rSI/strings.xml +++ b/patches/src/main/resources/addresources/values-sl-rSI/strings.xml @@ -365,9 +365,6 @@ Omejitve Ta funkcija je na voljo samo za starejše naprave" Oglasi na celotnem zaslonu so prikazani - Skrij oglase z gumbi - Oglasi z gumbi so skriti - Oglasi z gumbi so prikazani Skrij nalepko plačane promocije Nalepka plačane promocije je skrita Nalepka plačane promocije je prikazana 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 00acf2823..fe1cf67bc 100644 --- a/patches/src/main/resources/addresources/values-sq-rAL/strings.xml +++ b/patches/src/main/resources/addresources/values-sq-rAL/strings.xml @@ -365,9 +365,6 @@ Kufizime Kjo veçori është e disponueshme vetëm për pajisje më të vjetra" Reklamimet me ekran të plotë janë të dukshme - Fsheh reklamimet me butona - Reklamimet me butona janë të fshehur - Reklamimet me butona janë të dukshme Fsheh etiketën e promovimit të paguar Etiketë e promovimit të paguar është e fshehur Etiketë e promovimit të paguar është e dukshme 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 c1ecfd1cb..4a3770f28 100644 --- a/patches/src/main/resources/addresources/values-sr-rCS/strings.xml +++ b/patches/src/main/resources/addresources/values-sr-rCS/strings.xml @@ -365,9 +365,6 @@ Ograničenja Ova funkcija je dostupna samo za starije uređaje" Oglasi preko celog ekrana su prikazani - Sakrij oglase u obliku dugmadi - Oglasi u obliku dugmadi su skriveni - Oglasi u obliku dugmadi su prikazani Sakrij oznaku plaćene promocije Oznaka plaćeme promocije je skrivena Oznaka plaćene promocije je prikazana 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 8ca4c7ebf..8fb878bc0 100644 --- a/patches/src/main/resources/addresources/values-sr-rSP/strings.xml +++ b/patches/src/main/resources/addresources/values-sr-rSP/strings.xml @@ -365,9 +365,6 @@ Second \"item\" text" Ова функција је доступна само за старије уређаје" Огласи преко целог екрана су приказани - Сакриј огласе у облику дугмади - Огласи у облику дугмади су скривени - Огласи у облику дугмади су приказани Сакриј ознаку плаћене промоције Ознака плаћене промоције је скривена Ознака плаћене промоције је приказана 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 0eca7a7f7..fbcc0dc3e 100644 --- a/patches/src/main/resources/addresources/values-sv-rSE/strings.xml +++ b/patches/src/main/resources/addresources/values-sv-rSE/strings.xml @@ -365,9 +365,6 @@ Begränsningar Den här funktionen är endast tillgänglig för äldre enheter" Fullskärmsannonser är synliga - Dölj knappannonser - Knappannonser är dolda - Knappannonser är synliga Dölj betald kampanjetikett Betald kampanjetikett är dold Betald kampanjetikett är synlig 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 4c8d7fb4e..59c89db9d 100644 --- a/patches/src/main/resources/addresources/values-th-rTH/strings.xml +++ b/patches/src/main/resources/addresources/values-th-rTH/strings.xml @@ -365,9 +365,6 @@ Second \"item\" text" คุณสมบัตินี้มีเฉพาะสําหรับอุปกรณ์รุ่นเก่า" โฆษณาแบบเต็มหน้าจอจะแสดง - ซ่อนโฆษณาแบบมีปุ่ม - โฆษณาแบบมีปุ่มถูกซ่อน - โฆษณาแบบมีปุ่มจะแสดง ซ่อนป้ายโฆษณาที่จ่ายเงิน ป้ายโฆษณาที่จ่ายเงินถูกซ่อน ป้ายโฆษณาที่จ่ายเงินจะแสดง 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 51c6302b8..20dcaab75 100644 --- a/patches/src/main/resources/addresources/values-tr-rTR/strings.xml +++ b/patches/src/main/resources/addresources/values-tr-rTR/strings.xml @@ -365,9 +365,6 @@ Sınırlamalar Bu özellik yalnızca eski cihazlarda kullanılabilir" Tam ekran reklamlar görünür - Düğmeli reklamları gizle - Düğmeli reklamlar gizli - Düğmeli reklamlar görünür Ücretli tanıtım etiketini gizle Ücretli tanıtım etiketi gizli Ücretli tanıtım etiketi görünür 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 3c2326c9f..4a4d9f144 100644 --- a/patches/src/main/resources/addresources/values-uk-rUA/strings.xml +++ b/patches/src/main/resources/addresources/values-uk-rUA/strings.xml @@ -366,9 +366,6 @@ Second \"item\" text" Ця функція доступна тільки для старих пристроїв" Повноекранна реклама показується - Приховати рекламу з кнопкою - Рекламу з кнопкою приховано - Реклама з кнопкою показується Приховати \"Містить пряму рекламу\" Мітку \"Містить пряму рекламу\" приховано Мітка \"Містить пряму рекламу\" показується @@ -1141,13 +1138,13 @@ 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 885b15e6d..05fb5988a 100644 --- a/patches/src/main/resources/addresources/values-vi-rVN/strings.xml +++ b/patches/src/main/resources/addresources/values-vi-rVN/strings.xml @@ -365,9 +365,6 @@ Hạn chế Tính năng này chỉ khả dụng cho các thiết bị cũ hơn" Quảng cáo toàn màn hình được hiển thị - Ẩn quảng cáo có nút - Quảng cáo có nút đã bị ẩn - Quảng cáo có nút được hiển thị Ẩn nhãn quảng cáo được tài trợ Nhãn quảng cáo được tài trợ đã bị ẩn Nhãn quảng cáo được tài trợ được hiển thị 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 116e28465..487af8aa0 100644 --- a/patches/src/main/resources/addresources/values-zh-rCN/strings.xml +++ b/patches/src/main/resources/addresources/values-zh-rCN/strings.xml @@ -365,9 +365,6 @@ 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 ac4b3c1fd..2bea8d86f 100644 --- a/patches/src/main/resources/addresources/values-zh-rTW/strings.xml +++ b/patches/src/main/resources/addresources/values-zh-rTW/strings.xml @@ -355,9 +355,6 @@ Second \"item\" text" 此功能僅適用於舊版裝置" 已顯示全螢幕廣告 - 隱藏按鈕型廣告 - 已隱藏按鈕型廣告 - 已顯示按鈕型廣告 隱藏付費推廣標籤 已隱藏付費推廣標籤 已顯示付費推廣標籤 From fac6e59d281e21e57abdcfc899cd1aeb18e5c2b8 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Fri, 23 May 2025 21:55:04 +0200 Subject: [PATCH 15/46] fix(Yuka - Unlock premium): Remove broken patch that is no longer supported (#5018) --- .../patches/yuka/misc/unlockpremium/UnlockPremiumPatch.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/patches/src/main/kotlin/app/revanced/patches/yuka/misc/unlockpremium/UnlockPremiumPatch.kt b/patches/src/main/kotlin/app/revanced/patches/yuka/misc/unlockpremium/UnlockPremiumPatch.kt index c6689540d..c4cedd092 100644 --- a/patches/src/main/kotlin/app/revanced/patches/yuka/misc/unlockpremium/UnlockPremiumPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/yuka/misc/unlockpremium/UnlockPremiumPatch.kt @@ -3,10 +3,10 @@ package app.revanced.patches.yuka.misc.unlockpremium import app.revanced.patcher.extensions.InstructionExtensions.addInstructions import app.revanced.patcher.patch.bytecodePatch +@Deprecated("This patch no longer works and will be removed in the future.") @Suppress("unused") -val unlockPremiumPatch = bytecodePatch( - name = "Unlock premium", -) { +val unlockPremiumPatch = bytecodePatch { + compatibleWith("io.yuka.android"("4.29")) execute { From 6fe9ea940f7ed38db6365de49121aa985eedb28b Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Fri, 23 May 2025 19:58:47 +0000 Subject: [PATCH 16/46] chore: Release v5.25.0-dev.6 [skip ci] # [5.25.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.5...v5.25.0-dev.6) (2025-05-23) ### Bug Fixes * **Yuka - Unlock premium:** Remove broken patch that is no longer supported ([#5018](https://github.com/ReVanced/revanced-patches/issues/5018)) ([fac6e59](https://github.com/ReVanced/revanced-patches/commit/fac6e59d281e21e57abdcfc899cd1aeb18e5c2b8)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 81826c0c3..3c3896f4c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [5.25.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.5...v5.25.0-dev.6) (2025-05-23) + + +### Bug Fixes + +* **Yuka - Unlock premium:** Remove broken patch that is no longer supported ([#5018](https://github.com/ReVanced/revanced-patches/issues/5018)) ([fac6e59](https://github.com/ReVanced/revanced-patches/commit/fac6e59d281e21e57abdcfc899cd1aeb18e5c2b8)) + # [5.25.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.4...v5.25.0-dev.5) (2025-05-22) diff --git a/gradle.properties b/gradle.properties index 26a3c44d4..688f92359 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.25.0-dev.5 +version = 5.25.0-dev.6 From 3384f8dd0ff2a345f2e387f4ed1570079a83ccb6 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Sat, 24 May 2025 13:12:39 +0200 Subject: [PATCH 17/46] fix(YouTube - Open Shorts in regular player): Do not exit app when pressing back button in regular player (#5020) --- .../OpenShortsInRegularPlayerPatch.java | 19 ++++++++ .../OpenVideosFullscreenHookPatch.java | 2 +- .../layout/player/fullscreen/Fingerprints.kt | 3 -- .../layout/shortsplayer/Fingerprints.kt | 8 ++++ .../OpenShortsInRegularPlayerPatch.kt | 48 ++++++++++++++++++- 5 files changed, 75 insertions(+), 5 deletions(-) diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/OpenShortsInRegularPlayerPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/OpenShortsInRegularPlayerPatch.java index abe3b0cfd..e0a1e3c70 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/OpenShortsInRegularPlayerPatch.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/OpenShortsInRegularPlayerPatch.java @@ -31,6 +31,8 @@ public class OpenShortsInRegularPlayerPatch { private static WeakReference mainActivityRef = new WeakReference<>(null); + private static volatile boolean overrideBackPressToExit; + /** * Injection point. */ @@ -38,6 +40,18 @@ public class OpenShortsInRegularPlayerPatch { mainActivityRef = new WeakReference<>(activity); } + /** + * Injection point. + */ + public static boolean overrideBackPressToExit(boolean original) { + if (overrideBackPressToExit) { + Logger.printDebug(() -> "Overriding back press to exit activity"); + return false; + } + + return original; + } + /** * Injection point. */ @@ -45,6 +59,7 @@ public class OpenShortsInRegularPlayerPatch { try { ShortsPlayerType type = Settings.SHORTS_PLAYER_TYPE.get(); if (type == ShortsPlayerType.SHORTS_PLAYER) { + overrideBackPressToExit = false; return false; // Default unpatched behavior. } @@ -61,13 +76,17 @@ public class OpenShortsInRegularPlayerPatch { // set to open in the regular player, so it's ignored as // checking the map makes the patch more complicated. Logger.printDebug(() -> "Ignoring Short with no videoId"); + overrideBackPressToExit = false; return false; } if (NavigationButton.getSelectedNavigationButton() == NavigationButton.SHORTS) { + overrideBackPressToExit = false; return false; // Always use Shorts player for the Shorts nav button. } + overrideBackPressToExit = true; + final boolean forceFullScreen = (type == ShortsPlayerType.REGULAR_PLAYER_FULLSCREEN); OpenVideosFullscreenHookPatch.setOpenNextVideoFullscreen(forceFullScreen); diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/OpenVideosFullscreenHookPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/OpenVideosFullscreenHookPatch.java index 62f9bbff9..ff2d77874 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/OpenVideosFullscreenHookPatch.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/OpenVideosFullscreenHookPatch.java @@ -33,7 +33,7 @@ public class OpenVideosFullscreenHookPatch { } if (!isFullScreenPatchIncluded()) { - return false; + return original; } return Settings.OPEN_VIDEOS_FULLSCREEN_PORTRAIT.get(); diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/fullscreen/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/fullscreen/Fingerprints.kt index 096ed695d..a8aef3734 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/fullscreen/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/fullscreen/Fingerprints.kt @@ -15,9 +15,6 @@ internal val openVideosFullscreenPortraitFingerprint = fingerprint { } } -/** - * Used to enable opening regular videos fullscreen. - */ internal val openVideosFullscreenHookPatchExtensionFingerprint = fingerprint { accessFlags(AccessFlags.PRIVATE, AccessFlags.STATIC) returns("Z") diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/shortsplayer/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/shortsplayer/Fingerprints.kt index 961ddef02..abd7f10ce 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/shortsplayer/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/shortsplayer/Fingerprints.kt @@ -53,4 +53,12 @@ internal val shortsPlaybackIntentFingerprint = fingerprint { "ReelWatchFragmentArgs", "reels_fragment_descriptor" ) +} + +internal val exitVideoPlayerFingerprint = fingerprint { + returns("V") + parameters() + literal { + mdx_drawer_layout_id + } } \ No newline at end of file diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/shortsplayer/OpenShortsInRegularPlayerPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/shortsplayer/OpenShortsInRegularPlayerPatch.kt index 1198c4ce2..c932f4a03 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/shortsplayer/OpenShortsInRegularPlayerPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/shortsplayer/OpenShortsInRegularPlayerPatch.kt @@ -1,11 +1,16 @@ package app.revanced.patches.youtube.layout.shortsplayer import app.revanced.patcher.extensions.InstructionExtensions.addInstruction +import app.revanced.patcher.extensions.InstructionExtensions.addInstructions import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patcher.patch.bytecodePatch +import app.revanced.patcher.patch.resourcePatch import app.revanced.patches.all.misc.resources.addResources import app.revanced.patches.all.misc.resources.addResourcesPatch +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.ListPreference import app.revanced.patches.youtube.layout.player.fullscreen.openVideosFullscreenHookPatch import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch @@ -19,12 +24,29 @@ import app.revanced.patches.youtube.shared.mainActivityOnCreateFingerprint import app.revanced.util.findFreeRegister import app.revanced.util.getReference 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 import com.android.tools.smali.dexlib2.iface.reference.MethodReference private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/patches/OpenShortsInRegularPlayerPatch;" +internal var mdx_drawer_layout_id = -1L + private set + +private val openShortsInRegularPlayerResourcePatch = resourcePatch { + dependsOn(resourceMappingPatch) + + execute { + mdx_drawer_layout_id = resourceMappings[ + "id", + "mdx_drawer_layout", + ] + + } +} + @Suppress("unused") val openShortsInRegularPlayerPatch = bytecodePatch( name = "Open Shorts in regular player", @@ -36,7 +58,8 @@ val openShortsInRegularPlayerPatch = bytecodePatch( addResourcesPatch, openVideosFullscreenHookPatch, navigationBarHookPatch, - versionCheckPatch + versionCheckPatch, + openShortsInRegularPlayerResourcePatch ) compatibleWith( @@ -127,5 +150,28 @@ val openShortsInRegularPlayerPatch = bytecodePatch( ${extensionInstructions(0, 1)} """ ) + + // Fix issue with back button exiting the app instead of minimizing the player. + // Without this change this issue can be difficult to reproduce, but seems to occur + // most often with 'open video in regular player' and not open in fullscreen player. + exitVideoPlayerFingerprint.method.apply { + // Method call for Activity.finish() + val finishIndex = indexOfFirstInstructionOrThrow { + val reference = getReference() + reference?.name == "finish" + } + + // Index of PlayerType.isWatchWhileMaximizedOrFullscreen() + val index = indexOfFirstInstructionReversedOrThrow(finishIndex, Opcode.MOVE_RESULT) + val register = getInstruction(index).registerA + + addInstructions( + index + 1, + """ + invoke-static { v$register }, ${EXTENSION_CLASS_DESCRIPTOR}->overrideBackPressToExit(Z)Z + move-result v$register + """ + ) + } } } From 80e9978d642bed41bb762145fe7c4ac6cd0c1d5b Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 24 May 2025 11:16:03 +0000 Subject: [PATCH 18/46] chore: Release v5.25.0-dev.7 [skip ci] # [5.25.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.6...v5.25.0-dev.7) (2025-05-24) ### Bug Fixes * **YouTube - Open Shorts in regular player:** Do not exit app when pressing back button in regular player ([#5020](https://github.com/ReVanced/revanced-patches/issues/5020)) ([3384f8d](https://github.com/ReVanced/revanced-patches/commit/3384f8dd0ff2a345f2e387f4ed1570079a83ccb6)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c3896f4c..8d6de48ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [5.25.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.6...v5.25.0-dev.7) (2025-05-24) + + +### Bug Fixes + +* **YouTube - Open Shorts in regular player:** Do not exit app when pressing back button in regular player ([#5020](https://github.com/ReVanced/revanced-patches/issues/5020)) ([3384f8d](https://github.com/ReVanced/revanced-patches/commit/3384f8dd0ff2a345f2e387f4ed1570079a83ccb6)) + # [5.25.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.5...v5.25.0-dev.6) (2025-05-23) diff --git a/gradle.properties b/gradle.properties index 688f92359..d5d93ab38 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.25.0-dev.6 +version = 5.25.0-dev.7 From 1abebd5f3b73250c6638d2d8a274b92ea8268924 Mon Sep 17 00:00:00 2001 From: 1fexd <58902674+1fexd@users.noreply.github.com> Date: Sun, 25 May 2025 17:38:19 +0000 Subject: [PATCH 19/46] fix(Hide ADB status): Resolve app crash on startup (#5029) --- .../kotlin/app/revanced/patches/all/misc/adb/HideAdbPatch.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/src/main/kotlin/app/revanced/patches/all/misc/adb/HideAdbPatch.kt b/patches/src/main/kotlin/app/revanced/patches/all/misc/adb/HideAdbPatch.kt index 7e05318df..28653638b 100644 --- a/patches/src/main/kotlin/app/revanced/patches/all/misc/adb/HideAdbPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/all/misc/adb/HideAdbPatch.kt @@ -47,7 +47,7 @@ val hideAdbStatusPatch = bytecodePatch( .takeIf { it.opcode == Opcode.INVOKE_STATIC } ?.getReference() ?.takeIf { - it.anyMethodSignatureMatches(it, + it.anyMethodSignatureMatches( SETTINGS_GLOBAL_GET_INT_OR_THROW_METHOD_REFERENCE, SETTINGS_GLOBAL_GET_INT_OR_DEFAULT_METHOD_REFERENCE ) From c89f2bc9b8f8d20c622563545d8e9c2bd099c046 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 25 May 2025 17:41:52 +0000 Subject: [PATCH 20/46] chore: Release v5.25.0-dev.8 [skip ci] # [5.25.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.7...v5.25.0-dev.8) (2025-05-25) ### Bug Fixes * **Hide ADB status:** Resolve app crash on startup ([#5029](https://github.com/ReVanced/revanced-patches/issues/5029)) ([1abebd5](https://github.com/ReVanced/revanced-patches/commit/1abebd5f3b73250c6638d2d8a274b92ea8268924)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d6de48ea..c4a88ae5f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [5.25.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.7...v5.25.0-dev.8) (2025-05-25) + + +### Bug Fixes + +* **Hide ADB status:** Resolve app crash on startup ([#5029](https://github.com/ReVanced/revanced-patches/issues/5029)) ([1abebd5](https://github.com/ReVanced/revanced-patches/commit/1abebd5f3b73250c6638d2d8a274b92ea8268924)) + # [5.25.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.6...v5.25.0-dev.7) (2025-05-24) diff --git a/gradle.properties b/gradle.properties index d5d93ab38..5cf4d56d0 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.25.0-dev.7 +version = 5.25.0-dev.8 From 34932dc43933d346a5a3adadc62c0dbd38a633b5 Mon Sep 17 00:00:00 2001 From: Nuckyz <61953774+Nuckyz@users.noreply.github.com> Date: Mon, 26 May 2025 04:08:15 -0300 Subject: [PATCH 21/46] feat(Spotify): Add `Fix Facebook login` patch (#5023) --- patches/api/patches.api | 4 +++ .../spotify/misc/fix/SpoofSignaturePatch.kt | 2 -- .../spotify/misc/fix/login/Fingerprints.kt | 13 +++++++++ .../misc/fix/login/FixFacebookLoginPatch.kt | 29 +++++++++++++++++++ 4 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 patches/src/main/kotlin/app/revanced/patches/spotify/misc/fix/login/Fingerprints.kt create mode 100644 patches/src/main/kotlin/app/revanced/patches/spotify/misc/fix/login/FixFacebookLoginPatch.kt diff --git a/patches/api/patches.api b/patches/api/patches.api index 72b3534e9..c8ef5d763 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -1,3 +1,7 @@ +public final class FixFacebookLoginPatchKt { + public static final fun getFixFacebookLoginPatch ()Lapp/revanced/patcher/patch/BytecodePatch; +} + public final class app/revanced/patches/all/misc/activity/exportall/ExportAllActivitiesPatchKt { public static final fun getExportAllActivitiesPatch ()Lapp/revanced/patcher/patch/ResourcePatch; } diff --git a/patches/src/main/kotlin/app/revanced/patches/spotify/misc/fix/SpoofSignaturePatch.kt b/patches/src/main/kotlin/app/revanced/patches/spotify/misc/fix/SpoofSignaturePatch.kt index 7ac278ff3..d59969c6c 100644 --- a/patches/src/main/kotlin/app/revanced/patches/spotify/misc/fix/SpoofSignaturePatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/spotify/misc/fix/SpoofSignaturePatch.kt @@ -7,7 +7,5 @@ import app.revanced.patcher.patch.bytecodePatch val spoofSignaturePatch = bytecodePatch( description = "Spoofs the signature of the app fix various functions of the app.", ) { - compatibleWith("com.spotify.music") - dependsOn(spoofPackageInfoPatch) } diff --git a/patches/src/main/kotlin/app/revanced/patches/spotify/misc/fix/login/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/spotify/misc/fix/login/Fingerprints.kt new file mode 100644 index 000000000..b9edaaeac --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/spotify/misc/fix/login/Fingerprints.kt @@ -0,0 +1,13 @@ +package app.revanced.patches.spotify.misc.fix.login + +import app.revanced.patcher.fingerprint +import app.revanced.util.literal + +internal val katanaProxyLoginMethodHandlerClassFingerprint = fingerprint { + strings("katana_proxy_auth") +} + +internal val katanaProxyLoginMethodTryAuthorizeFingerprint = fingerprint { + strings("e2e") + literal { 0 } +} diff --git a/patches/src/main/kotlin/app/revanced/patches/spotify/misc/fix/login/FixFacebookLoginPatch.kt b/patches/src/main/kotlin/app/revanced/patches/spotify/misc/fix/login/FixFacebookLoginPatch.kt new file mode 100644 index 000000000..dc9179854 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/spotify/misc/fix/login/FixFacebookLoginPatch.kt @@ -0,0 +1,29 @@ +package app.revanced.patches.spotify.misc.fix.login + +import app.revanced.patcher.patch.bytecodePatch +import app.revanced.util.returnEarly + +@Suppress("unused") +val fixFacebookLoginPatch = bytecodePatch( + name = "Fix Facebook login", + description = + "Fix logging in with Facebook when the app is patched by always opening the login in a web browser window.", +) { + compatibleWith("com.spotify.music") + + execute { + // The Facebook SDK tries to handle the login using the Facebook app in case it is installed. + // However, the Facebook app does signature checks with the app that is requesting the authentication, + // which ends up making the Facebook server reject with an invalid key hash for the app signature. + // Override the Faceboook SDK to always handle the login using the web browser, which does not perform + // signature checks. + + val katanaProxyLoginMethodHandlerClass = katanaProxyLoginMethodHandlerClassFingerprint.originalClassDef + // Always return 0 (no Intent was launched) as the result of trying to authorize with the Facebook app to + // make the login fallback to a web browser window. + katanaProxyLoginMethodTryAuthorizeFingerprint + .match(katanaProxyLoginMethodHandlerClass) + .method + .returnEarly(0) + } +} From 1e0e398574329173aff11a4dc9acfc3fcdeabe16 Mon Sep 17 00:00:00 2001 From: MarcaD <152095496+MarcaDian@users.noreply.github.com> Date: Mon, 26 May 2025 10:08:45 +0300 Subject: [PATCH 22/46] feat(YouTube - Settings): Add a color picker (#4981) Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> --- .../app/revanced/extension/shared/Utils.java | 27 +- .../preference/ColorPickerPreference.java | 442 ++++++++++++++++ .../settings/preference/ColorPickerView.java | 500 ++++++++++++++++++ .../preference/ReVancedAboutPreference.java | 3 +- .../app/revanced/extension/tiktok/Utils.java | 5 +- .../preference/DownloadPathPreference.java | 2 +- .../preference/InputTextPreference.java | 2 +- .../preference/RangeValuePreference.java | 2 +- .../ReVancedTikTokAboutPreference.java | 2 +- .../settings/preference/TogglePreference.java | 2 +- .../patches/NavigationButtonsPatch.java | 2 +- .../youtube/patches/WideSearchbarPatch.java | 5 +- .../patches/theme/ProgressBarDrawable.java | 5 +- .../patches/theme/SeekbarColorPatch.java | 2 +- .../ReturnYouTubeDislike.java | 13 +- .../youtube/settings/LicenseActivityHook.java | 4 +- .../ReVancedPreferenceFragment.java | 5 +- .../SegmentPlaybackController.java | 17 +- .../sponsorblock/objects/SegmentCategory.java | 45 +- .../SegmentCategoryListPreference.java | 180 +++++-- .../ui/SponsorBlockPreferenceGroup.java | 2 +- .../swipecontrols/SwipeControlsPatch.kt | 4 +- .../youtube/layout/theme/ThemePatch.kt | 11 +- .../youtube/misc/settings/SettingsPatch.kt | 3 + .../resources/addresources/values/strings.xml | 7 +- .../revanced_settings_circle_background.xml | 8 + .../layout/revanced_color_dot_widget.xml | 18 + .../settings/layout/revanced_color_picker.xml | 11 + 28 files changed, 1199 insertions(+), 130 deletions(-) create mode 100644 extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/ColorPickerPreference.java create mode 100644 extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/ColorPickerView.java create mode 100644 patches/src/main/resources/settings/drawable/revanced_settings_circle_background.xml create mode 100644 patches/src/main/resources/settings/layout/revanced_color_dot_widget.xml create mode 100644 patches/src/main/resources/settings/layout/revanced_color_picker.xml diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/Utils.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/Utils.java index 46aba8191..dead738b4 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/Utils.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/Utils.java @@ -23,6 +23,7 @@ import android.preference.Preference; import android.preference.PreferenceGroup; import android.preference.PreferenceScreen; import android.util.Pair; +import android.util.TypedValue; import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; @@ -557,14 +558,14 @@ public class Utils { ); } - public static boolean isDarkModeEnabled(Context context) { - Configuration config = context.getResources().getConfiguration(); + public static boolean isDarkModeEnabled() { + Configuration config = Resources.getSystem().getConfiguration(); final int currentNightMode = config.uiMode & Configuration.UI_MODE_NIGHT_MASK; return currentNightMode == Configuration.UI_MODE_NIGHT_YES; } public static boolean isLandscapeOrientation() { - final int orientation = context.getResources().getConfiguration().orientation; + final int orientation = Resources.getSystem().getConfiguration().orientation; return orientation == Configuration.ORIENTATION_LANDSCAPE; } @@ -640,7 +641,11 @@ public class Utils { || networkType == NetworkType.OTHER; } - @SuppressLint({"MissingPermission", "deprecation"}) // Permission already included in YouTube. + /** + * Calling extension code must ensure the target app has the + * ACCESS_NETWORK_STATE app manifest permission. + */ + @SuppressWarnings({"deprecation", "MissingPermission"}) public static NetworkType getNetworkType() { Context networkContext = getContext(); if (networkContext == null) { @@ -852,6 +857,20 @@ public class Utils { return getResourceColor(colorString); } + /** + * Converts dip value to actual device pixels. + * + * @param dip The density-independent pixels value + * @return The device pixel value + */ + public static int dipToPixels(float dip) { + return (int) TypedValue.applyDimension( + TypedValue.COMPLEX_UNIT_DIP, + dip, + Resources.getSystem().getDisplayMetrics() + ); + } + public static int clamp(int value, int lower, int upper) { return Math.max(lower, Math.min(value, upper)); } diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/ColorPickerPreference.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/ColorPickerPreference.java new file mode 100644 index 000000000..e9f24ea61 --- /dev/null +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/ColorPickerPreference.java @@ -0,0 +1,442 @@ +package app.revanced.extension.shared.settings.preference; + +import static app.revanced.extension.shared.StringRef.str; +import static app.revanced.extension.shared.Utils.getResourceIdentifier; + +import android.app.AlertDialog; +import android.content.Context; +import android.graphics.Color; +import android.graphics.Typeface; +import android.os.Build; +import android.os.Bundle; +import android.preference.EditTextPreference; +import android.text.Editable; +import android.text.InputType; +import android.text.SpannableString; +import android.text.Spanned; +import android.text.TextWatcher; +import android.text.style.ForegroundColorSpan; +import android.text.style.RelativeSizeSpan; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewParent; +import android.widget.Button; +import android.widget.EditText; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.ColorInt; + +import java.util.Locale; +import java.util.regex.Pattern; + +import app.revanced.extension.shared.Logger; +import app.revanced.extension.shared.Utils; +import app.revanced.extension.shared.settings.Setting; +import app.revanced.extension.shared.settings.StringSetting; + +/** + * A custom preference for selecting a color via a hexadecimal code or a color picker dialog. + * Extends {@link EditTextPreference} to display a colored dot in the widget area, + * reflecting the currently selected color. The dot is dimmed when the preference is disabled. + */ +@SuppressWarnings({"unused", "deprecation"}) +public class ColorPickerPreference extends EditTextPreference { + + /** + * Character to show the color appearance. + */ + public static final String COLOR_DOT_STRING = "⬤"; + + /** + * Length of a valid color string of format #RRGGBB. + */ + public static final int COLOR_STRING_LENGTH = 7; + + /** + * Matches everything that is not a hex number/letter. + */ + private static final Pattern PATTERN_NOT_HEX = Pattern.compile("[^0-9A-Fa-f]"); + + /** + * Alpha for dimming when the preference is disabled. + */ + private static final float DISABLED_ALPHA = 0.5f; // 50% + + /** + * View displaying a colored dot in the widget area. + */ + private View widgetColorDot; + + /** + * Current color in RGB format (without alpha). + */ + @ColorInt + private int currentColor; + + /** + * Associated setting for storing the color value. + */ + private StringSetting colorSetting; + + /** + * Dialog TextWatcher for the EditText to monitor color input changes. + */ + private TextWatcher colorTextWatcher; + + /** + * Dialog TextView displaying a colored dot for the selected color preview in the dialog. + */ + private TextView dialogColorPreview; + + /** + * Dialog color picker view. + */ + private ColorPickerView dialogColorPickerView; + + /** + * Removes non valid hex characters, converts to all uppercase, + * and adds # character to the start if not present. + */ + public static String cleanupColorCodeString(String colorString) { + // Remove non-hex chars, convert to uppercase, and ensure correct length + String result = "#" + PATTERN_NOT_HEX.matcher(colorString) + .replaceAll("").toUpperCase(Locale.ROOT); + + if (result.length() < COLOR_STRING_LENGTH) { + return result; + } + + return result.substring(0, COLOR_STRING_LENGTH); + } + + /** + * @param color RGB color, without an alpha channel. + * @return #RRGGBB hex color string + */ + public static String getColorString(@ColorInt int color) { + String colorString = String.format("#%06X", color); + if ((color & 0xFF000000) != 0) { + // Likely a bug somewhere. + Logger.printException(() -> "getColorString: color has alpha channel: " + colorString); + } + return colorString; + } + + /** + * Creates a Spanned object for a colored dot using SpannableString. + * + * @param color The RGB color (without alpha). + * @return A Spanned object with the colored dot. + */ + public static Spanned getColorDot(@ColorInt int color) { + SpannableString spannable = new SpannableString(COLOR_DOT_STRING); + spannable.setSpan(new ForegroundColorSpan(color | 0xFF000000), 0, COLOR_DOT_STRING.length(), + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + spannable.setSpan(new RelativeSizeSpan(1.5f), 0, 1, + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + return spannable; + } + + public ColorPickerPreference(Context context) { + super(context); + init(); + } + + public ColorPickerPreference(Context context, AttributeSet attrs) { + super(context, attrs); + init(); + } + + public ColorPickerPreference(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(); + } + + /** + * Initializes the preference by setting up the EditText, loading the color, and set the widget layout. + */ + private void init() { + colorSetting = (StringSetting) Setting.getSettingFromPath(getKey()); + if (colorSetting == null) { + Logger.printException(() -> "Could not find color setting for: " + getKey()); + } + + EditText editText = getEditText(); + editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS + | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + editText.setAutofillHints((String) null); + } + + // Set the widget layout to a custom layout containing the colored dot. + setWidgetLayoutResource(getResourceIdentifier("revanced_color_dot_widget", "layout")); + } + + /** + * Sets the selected color and updates the UI and settings. + * + * @param colorString The color in hexadecimal format (e.g., "#RRGGBB"). + * @throws IllegalArgumentException If the color string is invalid. + */ + @Override + public final void setText(String colorString) { + try { + Logger.printDebug(() -> "setText: " + colorString); + super.setText(colorString); + + currentColor = Color.parseColor(colorString) & 0x00FFFFFF; + if (colorSetting != null) { + colorSetting.save(getColorString(currentColor)); + } + updateColorPreview(); + updateWidgetColorDot(); + } catch (IllegalArgumentException ex) { + // This code is reached if the user pastes settings json with an invalid color + // since this preference is updated with the new setting text. + Logger.printDebug(() -> "Parse color error: " + colorString, ex); + Utils.showToastShort(str("revanced_settings_color_invalid")); + setText(colorSetting.resetToDefault()); + } catch (Exception ex) { + Logger.printException(() -> "setText failure: " + colorString, ex); + } + } + + @Override + protected void onBindView(View view) { + super.onBindView(view); + + widgetColorDot = view.findViewById(getResourceIdentifier( + "revanced_color_dot_widget", "id")); + widgetColorDot.setBackgroundResource(getResourceIdentifier( + "revanced_settings_circle_background", "drawable")); + widgetColorDot.getBackground().setTint(currentColor | 0xFF000000); + widgetColorDot.setAlpha(isEnabled() ? 1.0f : DISABLED_ALPHA); + } + + /** + * Creates a layout with a color preview and EditText for hex color input. + * + * @param context The context for creating the layout. + * @return A LinearLayout containing the color preview and EditText. + */ + private LinearLayout createDialogLayout(Context context) { + LinearLayout layout = new LinearLayout(context); + layout.setOrientation(LinearLayout.VERTICAL); + layout.setPadding(70, 0, 70, 0); + + // Inflate color picker. + View colorPicker = LayoutInflater.from(context).inflate( + getResourceIdentifier("revanced_color_picker", "layout"), null); + dialogColorPickerView = colorPicker.findViewById( + getResourceIdentifier("color_picker_view", "id")); + dialogColorPickerView.setColor(currentColor); + layout.addView(colorPicker); + + // Horizontal layout for preview and EditText. + LinearLayout inputLayout = new LinearLayout(context); + inputLayout.setOrientation(LinearLayout.HORIZONTAL); + inputLayout.setPadding(0, 20, 0, 0); + + dialogColorPreview = new TextView(context); + inputLayout.addView(dialogColorPreview); + updateColorPreview(); + + EditText editText = getEditText(); + ViewParent parent = editText.getParent(); + if (parent instanceof ViewGroup parentViewGroup) { + parentViewGroup.removeView(editText); + } + editText.setLayoutParams(new LinearLayout.LayoutParams( + LinearLayout.LayoutParams.WRAP_CONTENT, + LinearLayout.LayoutParams.WRAP_CONTENT + )); + String currentColorString = getColorString(currentColor); + editText.setText(currentColorString); + editText.setSelection(currentColorString.length()); + editText.setTypeface(Typeface.MONOSPACE); + colorTextWatcher = createColorTextWatcher(dialogColorPickerView); + editText.addTextChangedListener(colorTextWatcher); + inputLayout.addView(editText); + + // Add a dummy view to take up remaining horizontal space, + // otherwise it will show an oversize underlined text view. + View paddingView = new View(context); + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( + 0, + LinearLayout.LayoutParams.MATCH_PARENT, + 1f + ); + paddingView.setLayoutParams(params); + inputLayout.addView(paddingView); + + layout.addView(inputLayout); + + // Set up color picker listener with debouncing. + // Add listener last to prevent callbacks from set calls above. + dialogColorPickerView.setOnColorChangedListener(color -> { + // Check if it actually changed, since this callback + // can be caused by updates in afterTextChanged(). + if (currentColor == color) { + return; + } + + String updatedColorString = getColorString(color); + Logger.printDebug(() -> "onColorChanged: " + updatedColorString); + currentColor = color; + editText.setText(updatedColorString); + editText.setSelection(updatedColorString.length()); + + updateColorPreview(); + updateWidgetColorDot(); + }); + + return layout; + } + + /** + * Updates the color preview TextView with a colored dot. + */ + private void updateColorPreview() { + if (dialogColorPreview != null) { + dialogColorPreview.setText(getColorDot(currentColor)); + } + } + + private void updateWidgetColorDot() { + if (widgetColorDot != null) { + widgetColorDot.getBackground().setTint(currentColor | 0xFF000000); + widgetColorDot.setAlpha(isEnabled() ? 1.0f : DISABLED_ALPHA); + } + } + + /** + * Creates a TextWatcher to monitor changes in the EditText for color input. + * + * @return A TextWatcher that updates the color preview on valid input. + */ + private TextWatcher createColorTextWatcher(ColorPickerView colorPickerView) { + return new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + } + + @Override + public void afterTextChanged(Editable edit) { + try { + String colorString = edit.toString(); + + String sanitizedColorString = cleanupColorCodeString(colorString); + if (!sanitizedColorString.equals(colorString)) { + edit.replace(0, colorString.length(), sanitizedColorString); + return; + } + + if (sanitizedColorString.length() != COLOR_STRING_LENGTH) { + // User is still typing out the color. + return; + } + + final int newColor = Color.parseColor(colorString); + if (currentColor != newColor) { + Logger.printDebug(() -> "afterTextChanged: " + sanitizedColorString); + currentColor = newColor; + updateColorPreview(); + updateWidgetColorDot(); + colorPickerView.setColor(newColor); + } + } catch (Exception ex) { + // Should never be reached since input is validated before using. + Logger.printException(() -> "afterTextChanged failure", ex); + } + } + }; + } + + /** + * Prepares the dialog builder with a custom view and reset button. + * + * @param builder The AlertDialog.Builder to configure. + */ + @Override + protected void onPrepareDialogBuilder(AlertDialog.Builder builder) { + Utils.setEditTextDialogTheme(builder); + LinearLayout dialogLayout = createDialogLayout(builder.getContext()); + builder.setView(dialogLayout); + final int originalColor = currentColor; + + builder.setNeutralButton(str("revanced_settings_reset_color"), null); + + builder.setPositiveButton(android.R.string.ok, (dialog, which) -> { + try { + String colorString = getEditText().getText().toString(); + + if (colorString.length() != COLOR_STRING_LENGTH) { + Utils.showToastShort(str("revanced_settings_color_invalid")); + setText(getColorString(originalColor)); + return; + } + + setText(colorString); + } catch (Exception ex) { + // Should never happen due to a bad color string, + // since the text is validated and fixed while the user types. + Logger.printException(() -> "setPositiveButton failure", ex); + } + }); + + builder.setNegativeButton(android.R.string.cancel, (dialog, which) -> { + try { + // Restore the original color. + setText(getColorString(originalColor)); + } catch (Exception ex) { + Logger.printException(() -> "setNegativeButton failure", ex); + } + }); + } + + @Override + protected void showDialog(Bundle state) { + super.showDialog(state); + + AlertDialog dialog = (AlertDialog) getDialog(); + dialog.setCanceledOnTouchOutside(false); + + // Do not close dialog when reset is pressed. + Button button = dialog.getButton(AlertDialog.BUTTON_NEUTRAL); + button.setOnClickListener(view -> { + try { + final int defaultColor = Color.parseColor(colorSetting.defaultValue) & 0x00FFFFFF; + // Setting view color causes listener callback into this class. + dialogColorPickerView.setColor(defaultColor); + } catch (Exception ex) { + Logger.printException(() -> "setOnClickListener failure", ex); + } + }); + } + + @Override + protected void onDialogClosed(boolean positiveResult) { + super.onDialogClosed(positiveResult); + + if (colorTextWatcher != null) { + getEditText().removeTextChangedListener(colorTextWatcher); + colorTextWatcher = null; + } + + dialogColorPreview = null; + dialogColorPickerView = null; + } + + @Override + public void setEnabled(boolean enabled) { + super.setEnabled(enabled); + updateWidgetColorDot(); + } +} diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/ColorPickerView.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/ColorPickerView.java new file mode 100644 index 000000000..cbec3349c --- /dev/null +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/ColorPickerView.java @@ -0,0 +1,500 @@ +package app.revanced.extension.shared.settings.preference; + +import static app.revanced.extension.shared.Utils.dipToPixels; +import static app.revanced.extension.shared.settings.preference.ColorPickerPreference.getColorString; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.ComposeShader; +import android.graphics.LinearGradient; +import android.graphics.Paint; +import android.graphics.PorterDuff; +import android.graphics.RectF; +import android.graphics.Shader; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.View; + +import androidx.annotation.ColorInt; + +import app.revanced.extension.shared.Logger; +import app.revanced.extension.shared.Utils; + +/** + * A custom color picker view that allows the user to select a color using a hue slider and a saturation-value selector. + * This implementation is density-independent and responsive across different screen sizes and DPIs. + * + *

+ * This view displays two main components for color selection: + *

    + *
  • Hue Bar: A vertical bar on the right that allows the user to select the hue component of the color. + *
  • Saturation-Value Selector: A rectangular area that allows the user to select the saturation and value (brightness) + * components of the color based on the selected hue. + *
+ * + *

+ * The view uses {@link LinearGradient} and {@link ComposeShader} to create the color gradients for the hue bar and the + * saturation-value selector. It also uses {@link Paint} to draw the selectors (draggable handles). + * + *

+ * The selected color can be retrieved using {@link #getColor()} and can be set using {@link #setColor(int)}. + * An {@link OnColorChangedListener} can be registered to receive notifications when the selected color changes. + */ +public class ColorPickerView extends View { + + /** + * Interface definition for a callback to be invoked when the selected color changes. + */ + public interface OnColorChangedListener { + /** + * Called when the selected color has changed. + * + * Important: Callback color uses RGB format with zero alpha channel. + * + * @param color The new selected color. + */ + void onColorChanged(@ColorInt int color); + } + + /** Expanded touch area for the hue bar to increase the touch-sensitive area. */ + public static final float TOUCH_EXPANSION = dipToPixels(20f); + + private static final float MARGIN_BETWEEN_AREAS = dipToPixels(24); + private static final float VIEW_PADDING = dipToPixels(16); + private static final float HUE_BAR_WIDTH = dipToPixels(12); + private static final float HUE_CORNER_RADIUS = dipToPixels(6); + private static final float SELECTOR_RADIUS = dipToPixels(12); + private static final float SELECTOR_STROKE_WIDTH = 8; + /** + * Hue fill radius. Use slightly smaller radius for the selector handle fill, + * otherwise the anti-aliasing causes the fill color to bleed past the selector outline. + */ + private static final float SELECTOR_FILL_RADIUS = SELECTOR_RADIUS - SELECTOR_STROKE_WIDTH / 2; + /** Thin dark outline stroke width for the selector rings. */ + private static final float SELECTOR_EDGE_STROKE_WIDTH = 1; + public static final float SELECTOR_EDGE_RADIUS = + SELECTOR_RADIUS + SELECTOR_STROKE_WIDTH / 2 + SELECTOR_EDGE_STROKE_WIDTH / 2; + + /** Selector outline inner color. */ + @ColorInt + private static final int SELECTOR_OUTLINE_COLOR = Color.WHITE; + + /** Dark edge color for the selector rings. */ + @ColorInt + private static final int SELECTOR_EDGE_COLOR = Color.parseColor("#CFCFCF"); + + private static final int[] HUE_COLORS = new int[361]; + static { + for (int i = 0; i < 361; i++) { + HUE_COLORS[i] = Color.HSVToColor(new float[]{i, 1, 1}); + } + } + + /** Hue bar. */ + private final Paint huePaint = new Paint(Paint.ANTI_ALIAS_FLAG); + /** Saturation-value selector. */ + private final Paint saturationValuePaint = new Paint(Paint.ANTI_ALIAS_FLAG); + /** Draggable selector. */ + private final Paint selectorPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + { + selectorPaint.setStrokeWidth(SELECTOR_STROKE_WIDTH); + } + + /** Bounds of the hue bar. */ + private final RectF hueRect = new RectF(); + /** Bounds of the saturation-value selector. */ + private final RectF saturationValueRect = new RectF(); + + /** HSV color calculations to avoid allocations during drawing. */ + private final float[] hsvArray = {1, 1, 1}; + + /** Current hue value (0-360). */ + private float hue = 0f; + /** Current saturation value (0-1). */ + private float saturation = 1f; + /** Current value (brightness) value (0-1). */ + private float value = 1f; + + /** The currently selected color in RGB format with no alpha channel. */ + @ColorInt + private int selectedColor; + + private OnColorChangedListener colorChangedListener; + + /** Track if we're currently dragging the hue or saturation handle. */ + private boolean isDraggingHue; + private boolean isDraggingSaturation; + + public ColorPickerView(Context context) { + super(context); + } + + public ColorPickerView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public ColorPickerView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + final float DESIRED_ASPECT_RATIO = 0.8f; // height = width * 0.8 + + final int minWidth = Utils.dipToPixels(250); + final int minHeight = (int) (minWidth * DESIRED_ASPECT_RATIO); + + int width = resolveSize(minWidth, widthMeasureSpec); + int height = resolveSize(minHeight, heightMeasureSpec); + + // Ensure minimum dimensions for usability + width = Math.max(width, minWidth); + height = Math.max(height, minHeight); + + // Adjust height to maintain desired aspect ratio if possible + final int desiredHeight = (int) (width * DESIRED_ASPECT_RATIO); + if (MeasureSpec.getMode(heightMeasureSpec) != MeasureSpec.EXACTLY) { + height = desiredHeight; + } + + setMeasuredDimension(width, height); + } + + /** + * Called when the size of the view changes. + * This method calculates and sets the bounds of the hue bar and saturation-value selector. + * It also creates the necessary shaders for the gradients. + */ + @Override + protected void onSizeChanged(int width, int height, int oldWidth, int oldHeight) { + super.onSizeChanged(width, height, oldWidth, oldHeight); + + // Calculate bounds with hue bar on the right + final float effectiveWidth = width - (2 * VIEW_PADDING); + final float selectorWidth = effectiveWidth - HUE_BAR_WIDTH - MARGIN_BETWEEN_AREAS; + + // Adjust rectangles to account for padding and density-independent dimensions + saturationValueRect.set( + VIEW_PADDING, + VIEW_PADDING, + VIEW_PADDING + selectorWidth, + height - VIEW_PADDING + ); + + hueRect.set( + width - VIEW_PADDING - HUE_BAR_WIDTH, + VIEW_PADDING, + width - VIEW_PADDING, + height - VIEW_PADDING + ); + + // Update the shaders. + updateHueShader(); + updateSaturationValueShader(); + } + + /** + * Updates the hue full spectrum (0-360 degrees). + */ + private void updateHueShader() { + LinearGradient hueShader = new LinearGradient( + hueRect.left, hueRect.top, + hueRect.left, hueRect.bottom, + HUE_COLORS, + null, + Shader.TileMode.CLAMP + ); + + huePaint.setShader(hueShader); + } + + /** + * Updates the shader for the saturation-value selector based on the currently selected hue. + * This method creates a combined shader that blends a saturation gradient with a value gradient. + */ + private void updateSaturationValueShader() { + // Create a saturation-value gradient based on the current hue. + // Calculate the start color (white with the selected hue) for the saturation gradient. + final int startColor = Color.HSVToColor(new float[]{hue, 0f, 1f}); + + // Calculate the middle color (fully saturated color with the selected hue) for the saturation gradient. + final int midColor = Color.HSVToColor(new float[]{hue, 1f, 1f}); + + // Create a linear gradient for the saturation from startColor to midColor (horizontal). + LinearGradient satShader = new LinearGradient( + saturationValueRect.left, saturationValueRect.top, + saturationValueRect.right, saturationValueRect.top, + startColor, + midColor, + Shader.TileMode.CLAMP + ); + + // Create a linear gradient for the value (brightness) from white to black (vertical). + //noinspection ExtractMethodRecommender + LinearGradient valShader = new LinearGradient( + saturationValueRect.left, saturationValueRect.top, + saturationValueRect.left, saturationValueRect.bottom, + Color.WHITE, + Color.BLACK, + Shader.TileMode.CLAMP + ); + + // Combine the saturation and value shaders using PorterDuff.Mode.MULTIPLY to create the final color. + ComposeShader combinedShader = new ComposeShader(satShader, valShader, PorterDuff.Mode.MULTIPLY); + + // Set the combined shader for the saturation-value paint. + saturationValuePaint.setShader(combinedShader); + } + + /** + * Draws the color picker view on the canvas. + * This method draws the saturation-value selector, the hue bar with rounded corners, + * and the draggable handles. + * + * @param canvas The canvas on which to draw. + */ + @Override + protected void onDraw(Canvas canvas) { + // Draw the saturation-value selector rectangle. + canvas.drawRect(saturationValueRect, saturationValuePaint); + + // Draw the hue bar. + canvas.drawRoundRect(hueRect, HUE_CORNER_RADIUS, HUE_CORNER_RADIUS, huePaint); + + final float hueSelectorX = hueRect.centerX(); + final float hueSelectorY = hueRect.top + (hue / 360f) * hueRect.height(); + + final float satSelectorX = saturationValueRect.left + saturation * saturationValueRect.width(); + final float satSelectorY = saturationValueRect.top + (1 - value) * saturationValueRect.height(); + + // Draw the saturation and hue selector handle filled with the selected color. + hsvArray[0] = hue; + final int hueHandleColor = Color.HSVToColor(0xFF, hsvArray); + selectorPaint.setStyle(Paint.Style.FILL_AND_STROKE); + + selectorPaint.setColor(hueHandleColor); + canvas.drawCircle(hueSelectorX, hueSelectorY, SELECTOR_FILL_RADIUS, selectorPaint); + + selectorPaint.setColor(selectedColor | 0xFF000000); + canvas.drawCircle(satSelectorX, satSelectorY, SELECTOR_FILL_RADIUS, selectorPaint); + + // Draw white outlines for the handles. + selectorPaint.setColor(SELECTOR_OUTLINE_COLOR); + selectorPaint.setStyle(Paint.Style.STROKE); + selectorPaint.setStrokeWidth(SELECTOR_STROKE_WIDTH); + canvas.drawCircle(hueSelectorX, hueSelectorY, SELECTOR_RADIUS, selectorPaint); + canvas.drawCircle(satSelectorX, satSelectorY, SELECTOR_RADIUS, selectorPaint); + + // Draw thin dark outlines for the handles at the outer edge of the white outline. + selectorPaint.setColor(SELECTOR_EDGE_COLOR); + selectorPaint.setStrokeWidth(SELECTOR_EDGE_STROKE_WIDTH); + canvas.drawCircle(hueSelectorX, hueSelectorY, SELECTOR_EDGE_RADIUS, selectorPaint); + canvas.drawCircle(satSelectorX, satSelectorY, SELECTOR_EDGE_RADIUS, selectorPaint); + } + + /** + * Handles touch events on the view. + * This method determines whether the touch event occurred within the hue bar or the saturation-value selector, + * updates the corresponding values (hue, saturation, value), and invalidates the view to trigger a redraw. + *

+ * In addition to testing if the touch is within the strict rectangles, an expanded hit area (by selectorRadius) + * is used so that the draggable handles remain active even when half of the handle is outside the drawn bounds. + * + * @param event The motion event. + * @return True if the event was handled, false otherwise. + */ + @SuppressLint("ClickableViewAccessibility") // performClick is not overridden, but not needed in this case. + @Override + public boolean onTouchEvent(MotionEvent event) { + try { + final float x = event.getX(); + final float y = event.getY(); + final int action = event.getAction(); + Logger.printDebug(() -> "onTouchEvent action: " + action + " x: " + x + " y: " + y); + + // Define touch expansion for the hue bar. + RectF expandedHueRect = new RectF( + hueRect.left - TOUCH_EXPANSION, + hueRect.top, + hueRect.right + TOUCH_EXPANSION, + hueRect.bottom + ); + + switch (action) { + case MotionEvent.ACTION_DOWN: + // Calculate current handle positions. + final float hueSelectorX = hueRect.centerX(); + final float hueSelectorY = hueRect.top + (hue / 360f) * hueRect.height(); + + final float satSelectorX = saturationValueRect.left + saturation * saturationValueRect.width(); + final float valSelectorY = saturationValueRect.top + (1 - value) * saturationValueRect.height(); + + // Create hit areas for both handles. + RectF hueHitRect = new RectF( + hueSelectorX - SELECTOR_RADIUS, + hueSelectorY - SELECTOR_RADIUS, + hueSelectorX + SELECTOR_RADIUS, + hueSelectorY + SELECTOR_RADIUS + ); + RectF satValHitRect = new RectF( + satSelectorX - SELECTOR_RADIUS, + valSelectorY - SELECTOR_RADIUS, + satSelectorX + SELECTOR_RADIUS, + valSelectorY + SELECTOR_RADIUS + ); + + // Check if the touch started on a handle or within the expanded hue bar area. + if (hueHitRect.contains(x, y)) { + isDraggingHue = true; + updateHueFromTouch(y); + } else if (satValHitRect.contains(x, y)) { + isDraggingSaturation = true; + updateSaturationValueFromTouch(x, y); + } else if (expandedHueRect.contains(x, y)) { + // Handle touch within the expanded hue bar area. + isDraggingHue = true; + updateHueFromTouch(y); + } else if (saturationValueRect.contains(x, y)) { + isDraggingSaturation = true; + updateSaturationValueFromTouch(x, y); + } + break; + + case MotionEvent.ACTION_MOVE: + // Continue updating values even if touch moves outside the view. + if (isDraggingHue) { + updateHueFromTouch(y); + } else if (isDraggingSaturation) { + updateSaturationValueFromTouch(x, y); + } + break; + + case MotionEvent.ACTION_UP: + case MotionEvent.ACTION_CANCEL: + isDraggingHue = false; + isDraggingSaturation = false; + break; + } + } catch (Exception ex) { + Logger.printException(() -> "onTouchEvent failure", ex); + } + + return true; + } + + /** + * Updates the hue value based on touch position, clamping to valid range. + * + * @param y The y-coordinate of the touch position. + */ + private void updateHueFromTouch(float y) { + // Clamp y to the hue rectangle bounds. + final float clampedY = Utils.clamp(y, hueRect.top, hueRect.bottom); + final float updatedHue = ((clampedY - hueRect.top) / hueRect.height()) * 360f; + if (hue == updatedHue) { + return; + } + + hue = updatedHue; + updateSaturationValueShader(); + updateSelectedColor(); + } + + /** + * Updates saturation and value based on touch position, clamping to valid range. + * + * @param x The x-coordinate of the touch position. + * @param y The y-coordinate of the touch position. + */ + private void updateSaturationValueFromTouch(float x, float y) { + // Clamp x and y to the saturation-value rectangle bounds. + final float clampedX = Utils.clamp(x, saturationValueRect.left, saturationValueRect.right); + final float clampedY = Utils.clamp(y, saturationValueRect.top, saturationValueRect.bottom); + + final float updatedSaturation = (clampedX - saturationValueRect.left) / saturationValueRect.width(); + final float updatedValue = 1 - ((clampedY - saturationValueRect.top) / saturationValueRect.height()); + + if (saturation == updatedSaturation && value == updatedValue) { + return; + } + saturation = updatedSaturation; + value = updatedValue; + updateSelectedColor(); + } + + /** + * Updates the selected color and notifies listeners. + */ + private void updateSelectedColor() { + final int updatedColor = Color.HSVToColor(0, new float[]{hue, saturation, value}); + + if (selectedColor != updatedColor) { + selectedColor = updatedColor; + + if (colorChangedListener != null) { + colorChangedListener.onColorChanged(updatedColor); + } + } + + // Must always redraw, otherwise if saturation is pure grey or black + // then the hue slider cannot be changed. + invalidate(); + } + + /** + * Sets the currently selected color. + * + * @param color The color to set in either ARGB or RGB format. + */ + public void setColor(@ColorInt int color) { + color &= 0x00FFFFFF; + if (selectedColor == color) { + return; + } + + // Update the selected color. + selectedColor = color; + Logger.printDebug(() -> "setColor: " + getColorString(selectedColor)); + + // Convert the ARGB color to HSV values. + float[] hsv = new float[3]; + Color.colorToHSV(color, hsv); + + // Update the hue, saturation, and value. + hue = hsv[0]; + saturation = hsv[1]; + value = hsv[2]; + + // Update the saturation-value shader based on the new hue. + updateSaturationValueShader(); + + // Notify the listener if it's set. + if (colorChangedListener != null) { + colorChangedListener.onColorChanged(selectedColor); + } + + // Invalidate the view to trigger a redraw. + invalidate(); + } + + /** + * Gets the currently selected color. + * + * @return The selected color in RGB format with no alpha channel. + */ + @ColorInt + public int getColor() { + return selectedColor; + } + + /** + * Sets the listener to be notified when the selected color changes. + * + * @param listener The listener to set. + */ + public void setOnColorChangedListener(OnColorChangedListener listener) { + colorChangedListener = listener; + } +} diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/ReVancedAboutPreference.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/ReVancedAboutPreference.java index ba2facccb..161711737 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/ReVancedAboutPreference.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/ReVancedAboutPreference.java @@ -8,7 +8,6 @@ import android.app.Dialog; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; -import android.content.res.Configuration; import android.graphics.Color; import android.net.Uri; import android.os.Bundle; @@ -54,7 +53,7 @@ public class ReVancedAboutPreference extends Preference { } protected boolean isDarkModeEnabled() { - return Utils.isDarkModeEnabled(getContext()); + return Utils.isDarkModeEnabled(); } /** diff --git a/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/Utils.java b/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/Utils.java index 63f4b0127..d1d0f089f 100644 --- a/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/Utils.java +++ b/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/Utils.java @@ -2,7 +2,6 @@ package app.revanced.extension.tiktok; import static app.revanced.extension.shared.Utils.isDarkModeEnabled; -import android.content.Context; import android.graphics.Color; import android.view.View; import android.widget.TextView; @@ -43,8 +42,8 @@ public class Utils { private static final @ColorInt int TEXT_LIGHT_MODE_SUMMARY = Color.argb(255, 80, 80, 80); - public static void setTitleAndSummaryColor(Context context, View view) { - final boolean darkModeEnabled = isDarkModeEnabled(context); + public static void setTitleAndSummaryColor(View view) { + final boolean darkModeEnabled = isDarkModeEnabled(); TextView title = view.findViewById(android.R.id.title); title.setTextColor(darkModeEnabled diff --git a/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/settings/preference/DownloadPathPreference.java b/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/settings/preference/DownloadPathPreference.java index fb4e27121..f387c68f5 100644 --- a/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/settings/preference/DownloadPathPreference.java +++ b/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/settings/preference/DownloadPathPreference.java @@ -101,7 +101,7 @@ public class DownloadPathPreference extends DialogPreference { protected void onBindView(View view) { super.onBindView(view); - Utils.setTitleAndSummaryColor(getContext(), view); + Utils.setTitleAndSummaryColor(view); } @Override diff --git a/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/settings/preference/InputTextPreference.java b/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/settings/preference/InputTextPreference.java index d2df31462..a4785c955 100644 --- a/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/settings/preference/InputTextPreference.java +++ b/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/settings/preference/InputTextPreference.java @@ -22,6 +22,6 @@ public class InputTextPreference extends EditTextPreference { protected void onBindView(View view) { super.onBindView(view); - Utils.setTitleAndSummaryColor(getContext(), view); + Utils.setTitleAndSummaryColor(view); } } diff --git a/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/settings/preference/RangeValuePreference.java b/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/settings/preference/RangeValuePreference.java index 012d334f0..a13438a90 100644 --- a/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/settings/preference/RangeValuePreference.java +++ b/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/settings/preference/RangeValuePreference.java @@ -127,7 +127,7 @@ public class RangeValuePreference extends DialogPreference { protected void onBindView(View view) { super.onBindView(view); - Utils.setTitleAndSummaryColor(getContext(), view); + Utils.setTitleAndSummaryColor(view); } @Override diff --git a/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/settings/preference/ReVancedTikTokAboutPreference.java b/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/settings/preference/ReVancedTikTokAboutPreference.java index 408bab6c0..7348ccc70 100644 --- a/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/settings/preference/ReVancedTikTokAboutPreference.java +++ b/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/settings/preference/ReVancedTikTokAboutPreference.java @@ -48,6 +48,6 @@ public class ReVancedTikTokAboutPreference extends ReVancedAboutPreference { protected void onBindView(View view) { super.onBindView(view); - Utils.setTitleAndSummaryColor(getContext(), view); + Utils.setTitleAndSummaryColor(view); } } diff --git a/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/settings/preference/TogglePreference.java b/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/settings/preference/TogglePreference.java index f0e8085f0..7a78d504d 100644 --- a/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/settings/preference/TogglePreference.java +++ b/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/settings/preference/TogglePreference.java @@ -22,6 +22,6 @@ public class TogglePreference extends SwitchPreference { protected void onBindView(View view) { super.onBindView(view); - Utils.setTitleAndSummaryColor(getContext(), view); + Utils.setTitleAndSummaryColor(view); } } diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/NavigationButtonsPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/NavigationButtonsPatch.java index d2e1d5f8b..7021cc6f9 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/NavigationButtonsPatch.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/NavigationButtonsPatch.java @@ -95,7 +95,7 @@ public final class NavigationButtonsPatch { return false; } - return Utils.isDarkModeEnabled(Utils.getContext()) + return Utils.isDarkModeEnabled() ? !DISABLE_TRANSLUCENT_NAVIGATION_BAR_DARK : !DISABLE_TRANSLUCENT_NAVIGATION_BAR_LIGHT; } diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/WideSearchbarPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/WideSearchbarPatch.java index 90f18a6c2..2b07a2f73 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/WideSearchbarPatch.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/WideSearchbarPatch.java @@ -1,7 +1,5 @@ package app.revanced.extension.youtube.patches; -import android.content.res.Resources; -import android.util.TypedValue; import android.view.View; import app.revanced.extension.shared.Logger; @@ -33,8 +31,7 @@ public final class WideSearchbarPatch { final int paddingRight = searchBarView.getPaddingRight(); final int paddingTop = searchBarView.getPaddingTop(); final int paddingBottom = searchBarView.getPaddingBottom(); - final int paddingStart = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, - 8, Resources.getSystem().getDisplayMetrics()); + final int paddingStart = Utils.dipToPixels(8); if (Utils.isRightToLeftLocale()) { searchBarView.setPadding(paddingLeft, paddingTop, paddingStart, paddingBottom); diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/theme/ProgressBarDrawable.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/theme/ProgressBarDrawable.java index bf0284f79..93d53c9a5 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/theme/ProgressBarDrawable.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/theme/ProgressBarDrawable.java @@ -20,13 +20,16 @@ import app.revanced.extension.youtube.settings.Settings; public class ProgressBarDrawable extends Drawable { private final Paint paint = new Paint(); + { + paint.setColor(SeekbarColorPatch.getSeekbarColor()); + } @Override public void draw(@NonNull Canvas canvas) { if (Settings.HIDE_SEEKBAR_THUMBNAIL.get()) { return; } - paint.setColor(SeekbarColorPatch.getSeekbarColor()); + canvas.drawRect(getBounds(), paint); } diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/theme/SeekbarColorPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/theme/SeekbarColorPatch.java index 4d036509e..1489ffd51 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/theme/SeekbarColorPatch.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/theme/SeekbarColorPatch.java @@ -179,7 +179,7 @@ public final class SeekbarColorPatch { //noinspection ConstantConditions if (false) { // Set true to force slow animation for development. final int longAnimation = Utils.getResourceIdentifier( - Utils.isDarkModeEnabled(Utils.getContext()) + Utils.isDarkModeEnabled() ? "startup_animation_5s_30fps_dark" : "startup_animation_5s_30fps_light", "raw"); diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/returnyoutubedislike/ReturnYouTubeDislike.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/returnyoutubedislike/ReturnYouTubeDislike.java index a0730c055..2a3c5a07c 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/returnyoutubedislike/ReturnYouTubeDislike.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/returnyoutubedislike/ReturnYouTubeDislike.java @@ -21,8 +21,6 @@ import android.text.Spanned; import android.text.style.ForegroundColorSpan; import android.text.style.ImageSpan; import android.text.style.ReplacementSpan; -import android.util.DisplayMetrics; -import android.util.TypedValue; import androidx.annotation.GuardedBy; import androidx.annotation.NonNull; @@ -120,16 +118,13 @@ public class ReturnYouTubeDislike { private static final ShapeDrawable leftSeparatorShape; static { - DisplayMetrics dp = Objects.requireNonNull(Utils.getContext()).getResources().getDisplayMetrics(); - leftSeparatorBounds = new Rect(0, 0, - (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1.2f, dp), - (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 14, dp)); - final int middleSeparatorSize = - (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 3.7f, dp); + Utils.dipToPixels(1.2f), + Utils.dipToPixels(14f)); + final int middleSeparatorSize = Utils.dipToPixels(3.7f); middleSeparatorBounds = new Rect(0, 0, middleSeparatorSize, middleSeparatorSize); - leftSeparatorShapePaddingPixels = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8.4f, dp); + leftSeparatorShapePaddingPixels = Utils.dipToPixels(8.4f); leftSeparatorShape = new ShapeDrawable(new RectShape()); leftSeparatorShape.setBounds(leftSeparatorBounds); diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/LicenseActivityHook.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/LicenseActivityHook.java index 5a14ca39c..a6335a5e3 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/LicenseActivityHook.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/LicenseActivityHook.java @@ -6,7 +6,6 @@ import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.preference.PreferenceFragment; -import android.util.TypedValue; import android.view.ViewGroup; import android.widget.TextView; import android.widget.Toolbar; @@ -119,8 +118,7 @@ public class LicenseActivityHook { toolbar.setNavigationIcon(ReVancedPreferenceFragment.getBackButtonDrawable()); toolbar.setTitle(getResourceIdentifier("revanced_settings_title", "string")); - final int margin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 16, - Utils.getContext().getResources().getDisplayMetrics()); + final int margin = Utils.dipToPixels(16); toolbar.setTitleMarginStart(margin); toolbar.setTitleMarginEnd(margin); TextView toolbarTextView = Utils.getChildView(toolbar, false, diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ReVancedPreferenceFragment.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ReVancedPreferenceFragment.java index 916378bf5..1257bb190 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ReVancedPreferenceFragment.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ReVancedPreferenceFragment.java @@ -17,7 +17,6 @@ import android.preference.SwitchPreference; import android.text.SpannableStringBuilder; import android.text.TextUtils; import android.text.style.BackgroundColorSpan; -import android.util.TypedValue; import android.view.ViewGroup; import android.view.WindowInsets; import android.widget.TextView; @@ -245,9 +244,7 @@ public class ReVancedPreferenceFragment extends AbstractPreferenceFragment { toolbar.setNavigationIcon(getBackButtonDrawable()); toolbar.setNavigationOnClickListener(view -> preferenceScreenDialog.dismiss()); - final int margin = (int) TypedValue.applyDimension( - TypedValue.COMPLEX_UNIT_DIP, 16, getResources().getDisplayMetrics() - ); + final int margin = Utils.dipToPixels(16); toolbar.setTitleMargin(margin, 0, margin, 0); TextView toolbarTextView = Utils.getChildView(toolbar, diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/SegmentPlaybackController.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/SegmentPlaybackController.java index 3f48930e3..22259d571 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/SegmentPlaybackController.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/SegmentPlaybackController.java @@ -5,7 +5,6 @@ import static app.revanced.extension.shared.StringRef.str; import android.graphics.Canvas; import android.graphics.Rect; import android.text.TextUtils; -import android.util.TypedValue; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -727,15 +726,11 @@ public class SegmentPlaybackController { } } - private static int highlightSegmentTimeBarScreenWidth = -1; // actual pixel width to use - private static int getHighlightSegmentTimeBarScreenWidth() { - if (highlightSegmentTimeBarScreenWidth == -1) { - highlightSegmentTimeBarScreenWidth = (int) TypedValue.applyDimension( - TypedValue.COMPLEX_UNIT_DIP, HIGHLIGHT_SEGMENT_DRAW_BAR_WIDTH, - Objects.requireNonNull(Utils.getContext()).getResources().getDisplayMetrics()); - } - return highlightSegmentTimeBarScreenWidth; - } + /** + * Actual screen pixel width to use for the highlight segment time bar. + */ + private static final int highlightSegmentTimeBarScreenWidth + = Utils.dipToPixels(HIGHLIGHT_SEGMENT_DRAW_BAR_WIDTH); /** * Injection point. @@ -757,7 +752,7 @@ public class SegmentPlaybackController { final float left = leftPadding + segment.start * videoMillisecondsToPixels; final float right; if (segment.category == SegmentCategory.HIGHLIGHT) { - right = left + getHighlightSegmentTimeBarScreenWidth(); + right = left + highlightSegmentTimeBarScreenWidth; } else { right = leftPadding + segment.end * videoMillisecondsToPixels; } diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/SegmentCategory.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/SegmentCategory.java index ec1b1fca5..ae6900330 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/SegmentCategory.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/SegmentCategory.java @@ -1,6 +1,7 @@ package app.revanced.extension.youtube.sponsorblock.objects; import static app.revanced.extension.shared.StringRef.sf; +import static app.revanced.extension.shared.settings.preference.ColorPickerPreference.COLOR_DOT_STRING; import static app.revanced.extension.youtube.settings.Settings.*; import android.graphics.Color; @@ -9,7 +10,9 @@ import android.text.Spannable; import android.text.SpannableString; import android.text.TextUtils; import android.text.style.ForegroundColorSpan; +import android.text.style.RelativeSizeSpan; +import androidx.annotation.ColorInt; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -134,7 +137,8 @@ public enum SegmentCategory { updateEnabledCategories(); } - public static int applyOpacityToColor(int color, float opacity) { + @ColorInt + public static int applyOpacityToColor(@ColorInt int color, float opacity) { if (opacity < 0 || opacity > 1.0f) { throw new IllegalArgumentException("Invalid opacity: " + opacity); } @@ -165,29 +169,28 @@ public enum SegmentCategory { /** * Skipped segment toast, if the skip occurred in the first quarter of the video */ - @NonNull public final StringRef skippedToastBeginning; /** * Skipped segment toast, if the skip occurred in the middle half of the video */ - @NonNull public final StringRef skippedToastMiddle; /** * Skipped segment toast, if the skip occurred in the last quarter of the video */ - @NonNull public final StringRef skippedToastEnd; - @NonNull public final Paint paint; + /** + * Category color with opacity applied. + */ + @ColorInt private int color; /** * Value must be changed using {@link #setBehaviour(CategoryBehaviour)}. * Caller must also {@link #updateEnabledCategories()}. */ - @NonNull public CategoryBehaviour behaviour = CategoryBehaviour.IGNORE; SegmentCategory(String keyValue, StringRef title, StringRef description, @@ -247,7 +250,7 @@ public enum SegmentCategory { } } - public void setBehaviour(@NonNull CategoryBehaviour behaviour) { + public void setBehaviour(CategoryBehaviour behaviour) { this.behaviour = Objects.requireNonNull(behaviour); this.behaviorSetting.save(behaviour.reVancedKeyValue); } @@ -273,6 +276,10 @@ public enum SegmentCategory { return opacitySetting.get(); } + public float getOpacityDefault() { + return opacitySetting.defaultValue; + } + public void resetColorAndOpacity() { setColor(colorSetting.defaultValue); setOpacity(opacitySetting.defaultValue); @@ -291,10 +298,19 @@ public enum SegmentCategory { /** * @return Integer color of #RRGGBB format. */ + @ColorInt public int getColorNoOpacity() { return color & 0x00FFFFFF; } + /** + * @return Integer color of #RRGGBB format. + */ + @ColorInt + public int getColorNoOpacityDefault() { + return Color.parseColor(colorSetting.defaultValue) & 0x00FFFFFF; + } + /** * @return Hex color string of #RRGGBB format with no opacity level. */ @@ -302,22 +318,27 @@ public enum SegmentCategory { return String.format(Locale.US, "#%06X", getColorNoOpacity()); } - private static SpannableString getCategoryColorDotSpan(String text, int color) { - SpannableString dotSpan = new SpannableString('⬤' + text); + private static SpannableString getCategoryColorDotSpan(String text, @ColorInt int color) { + SpannableString dotSpan = new SpannableString(COLOR_DOT_STRING + text); dotSpan.setSpan(new ForegroundColorSpan(color), 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); return dotSpan; } - public static SpannableString getCategoryColorDot(int color) { - return getCategoryColorDotSpan("", color); + public static SpannableString getCategoryColorDot(@ColorInt int color) { + SpannableString dotSpan = new SpannableString(COLOR_DOT_STRING); + dotSpan.setSpan(new ForegroundColorSpan(color), 0, 1, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + dotSpan.setSpan(new RelativeSizeSpan(1.5f), 0, 1, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + return dotSpan; } public SpannableString getCategoryColorDot() { return getCategoryColorDot(color); } - public SpannableString getTitleWithColorDot(int categoryColor) { + public SpannableString getTitleWithColorDot(@ColorInt int categoryColor) { return getCategoryColorDotSpan(" " + title, categoryColor); } diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/SegmentCategoryListPreference.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/SegmentCategoryListPreference.java index 36204319c..8c2a98757 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/SegmentCategoryListPreference.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/SegmentCategoryListPreference.java @@ -1,35 +1,46 @@ package app.revanced.extension.youtube.sponsorblock.objects; import static app.revanced.extension.shared.StringRef.str; +import static app.revanced.extension.shared.Utils.getResourceIdentifier; +import static app.revanced.extension.shared.settings.preference.ColorPickerPreference.getColorString; import static app.revanced.extension.youtube.sponsorblock.objects.SegmentCategory.applyOpacityToColor; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.graphics.Color; +import android.graphics.Typeface; +import android.os.Bundle; import android.preference.ListPreference; import android.text.Editable; import android.text.InputType; import android.text.TextWatcher; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.Button; import android.widget.EditText; import android.widget.GridLayout; +import android.widget.LinearLayout; import android.widget.TextView; +import androidx.annotation.ColorInt; + import java.util.Locale; import java.util.Objects; import app.revanced.extension.shared.Logger; import app.revanced.extension.shared.Utils; +import app.revanced.extension.shared.settings.preference.ColorPickerPreference; +import app.revanced.extension.shared.settings.preference.ColorPickerView; @SuppressWarnings("deprecation") public class SegmentCategoryListPreference extends ListPreference { private final SegmentCategory category; - private TextView colorDotView; - private EditText colorEditText; - private EditText opacityEditText; + /** - * #RRGGBB + * RGB format (no alpha). */ + @ColorInt private int categoryColor; /** * [0, 1] @@ -37,6 +48,11 @@ public class SegmentCategoryListPreference extends ListPreference { private float categoryOpacity; private int selectedDialogEntryIndex; + private TextView dialogColorDotView; + private EditText dialogColorEditText; + private EditText dialogOpacityEditText; + private ColorPickerView dialogColorPickerView; + public SegmentCategoryListPreference(Context context, SegmentCategory category) { super(context); this.category = Objects.requireNonNull(category); @@ -67,8 +83,20 @@ public class SegmentCategoryListPreference extends ListPreference { categoryOpacity = category.getOpacity(); Context context = builder.getContext(); + LinearLayout mainLayout = new LinearLayout(context); + mainLayout.setOrientation(LinearLayout.VERTICAL); + mainLayout.setPadding(70, 0, 70, 0); + + // Inflate the color picker view. + View colorPickerContainer = LayoutInflater.from(context) + .inflate(getResourceIdentifier("revanced_color_picker", "layout"), null); + dialogColorPickerView = colorPickerContainer.findViewById( + getResourceIdentifier("color_picker_view", "id")); + dialogColorPickerView.setColor(categoryColor); + mainLayout.addView(colorPickerContainer); + + // Grid layout for color and opacity inputs. GridLayout gridLayout = new GridLayout(context); - gridLayout.setPadding(70, 0, 150, 0); // Padding for the entire layout. gridLayout.setColumnCount(3); gridLayout.setRowCount(2); @@ -84,19 +112,22 @@ public class SegmentCategoryListPreference extends ListPreference { gridParams.rowSpec = GridLayout.spec(0); // First row. gridParams.columnSpec = GridLayout.spec(1); // Second column. gridParams.setMargins(0, 0, 10, 0); - colorDotView = new TextView(context); - colorDotView.setLayoutParams(gridParams); - gridLayout.addView(colorDotView); + dialogColorDotView = new TextView(context); + dialogColorDotView.setLayoutParams(gridParams); + gridLayout.addView(dialogColorDotView); updateCategoryColorDot(); gridParams = new GridLayout.LayoutParams(); gridParams.rowSpec = GridLayout.spec(0); // First row. gridParams.columnSpec = GridLayout.spec(2); // Third column. - colorEditText = new EditText(context); - colorEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS); - colorEditText.setTextLocale(Locale.US); - colorEditText.setText(category.getColorString()); - colorEditText.addTextChangedListener(new TextWatcher() { + dialogColorEditText = new EditText(context); + dialogColorEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS + | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); + dialogColorEditText.setAutofillHints((String) null); + dialogColorEditText.setTypeface(Typeface.MONOSPACE); + dialogColorEditText.setTextLocale(Locale.US); + dialogColorEditText.setText(getColorString(categoryColor)); + dialogColorEditText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @@ -109,28 +140,30 @@ public class SegmentCategoryListPreference extends ListPreference { public void afterTextChanged(Editable edit) { try { String colorString = edit.toString(); - final int colorStringLength = colorString.length(); + String normalizedColorString = ColorPickerPreference.cleanupColorCodeString(colorString); - if (!colorString.startsWith("#")) { - edit.insert(0, "#"); // Recursively calls back into this method. + if (!normalizedColorString.equals(colorString)) { + edit.replace(0, colorString.length(), normalizedColorString); return; } - final int maxColorStringLength = 7; // #RRGGBB - if (colorStringLength > maxColorStringLength) { - edit.delete(maxColorStringLength, colorStringLength); + if (normalizedColorString.length() != ColorPickerPreference.COLOR_STRING_LENGTH) { + // User is still typing out the color. return; } - categoryColor = Color.parseColor(colorString); - updateCategoryColorDot(); - } catch (IllegalArgumentException ex) { - // Ignore. + // Remove the alpha channel. + final int newColor = Color.parseColor(colorString) & 0x00FFFFFF; + // Changing view color causes callback into this class. + dialogColorPickerView.setColor(newColor); + } catch (Exception ex) { + // Should never be reached since input is validated before using. + Logger.printException(() -> "colorEditText afterTextChanged failure", ex); } } }); - colorEditText.setLayoutParams(gridParams); - gridLayout.addView(colorEditText); + dialogColorEditText.setLayoutParams(gridParams); + gridLayout.addView(dialogColorEditText); gridParams = new GridLayout.LayoutParams(); gridParams.rowSpec = GridLayout.spec(1); // Second row. @@ -143,9 +176,13 @@ public class SegmentCategoryListPreference extends ListPreference { gridParams = new GridLayout.LayoutParams(); gridParams.rowSpec = GridLayout.spec(1); // Second row. gridParams.columnSpec = GridLayout.spec(2); // Third column. - opacityEditText = new EditText(context); - opacityEditText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL); - opacityEditText.addTextChangedListener(new TextWatcher() { + dialogOpacityEditText = new EditText(context); + dialogOpacityEditText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL + | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); + dialogOpacityEditText.setAutofillHints((String) null); + dialogOpacityEditText.setTypeface(Typeface.MONOSPACE); + dialogOpacityEditText.setTextLocale(Locale.US); + dialogOpacityEditText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @@ -183,31 +220,40 @@ public class SegmentCategoryListPreference extends ListPreference { } updateCategoryColorDot(); - } catch (NumberFormatException ex) { + } catch (Exception ex) { // Should never happen. - Logger.printException(() -> "Could not parse opacity string", ex); + Logger.printException(() -> "opacityEditText afterTextChanged failure", ex); } } }); - opacityEditText.setLayoutParams(gridParams); - gridLayout.addView(opacityEditText); + dialogOpacityEditText.setLayoutParams(gridParams); + gridLayout.addView(dialogOpacityEditText); updateOpacityText(); - builder.setView(gridLayout); + mainLayout.addView(gridLayout); + + // Set up color picker listener. + // Do last to prevent listener callbacks while setting up view. + dialogColorPickerView.setOnColorChangedListener(color -> { + if (categoryColor == color) { + return; + } + categoryColor = color; + String hexColor = getColorString(color); + Logger.printDebug(() -> "onColorChanged: " + hexColor); + + updateCategoryColorDot(); + dialogColorEditText.setText(hexColor); + dialogColorEditText.setSelection(hexColor.length()); + }); + + builder.setView(mainLayout); builder.setTitle(category.title.toString()); builder.setPositiveButton(android.R.string.ok, (dialog, which) -> { onClick(dialog, DialogInterface.BUTTON_POSITIVE); }); - builder.setNeutralButton(str("revanced_sb_reset_color"), (dialog, which) -> { - try { - category.resetColorAndOpacity(); - updateUI(); - Utils.showToastShort(str("revanced_sb_color_reset")); - } catch (Exception ex) { - Logger.printException(() -> "setNeutralButton failure", ex); - } - }); + builder.setNeutralButton(str("revanced_settings_reset_color"), null); builder.setNegativeButton(android.R.string.cancel, null); selectedDialogEntryIndex = findIndexOfValue(getValue()); @@ -218,6 +264,25 @@ public class SegmentCategoryListPreference extends ListPreference { } } + @Override + protected void showDialog(Bundle state) { + super.showDialog(state); + + // Do not close dialog when reset is pressed. + Button button = ((AlertDialog) getDialog()).getButton(AlertDialog.BUTTON_NEUTRAL); + button.setOnClickListener(view -> { + try { + // Setting view color causes callback to update the UI. + dialogColorPickerView.setColor(category.getColorNoOpacityDefault()); + + categoryOpacity = category.getOpacityDefault(); + updateOpacityText(); + } catch (Exception ex) { + Logger.printException(() -> "setOnClickListener failure", ex); + } + }); + } + @Override protected void onDialogClosed(boolean positiveResult) { try { @@ -230,43 +295,42 @@ public class SegmentCategoryListPreference extends ListPreference { } try { - String colorString = colorEditText.getText().toString(); - if (!colorString.equals(category.getColorString()) || categoryOpacity != category.getOpacity()) { - category.setColor(colorString); - category.setOpacity(categoryOpacity); - Utils.showToastShort(str("revanced_sb_color_changed")); - } + category.setColor(dialogColorEditText.getText().toString()); + category.setOpacity(categoryOpacity); } catch (IllegalArgumentException ex) { - Utils.showToastShort(str("revanced_sb_color_invalid")); + Utils.showToastShort(str("revanced_settings_color_invalid")); } updateUI(); } } catch (Exception ex) { Logger.printException(() -> "onDialogClosed failure", ex); + } finally { + dialogColorDotView = null; + dialogColorEditText = null; + dialogOpacityEditText = null; + dialogColorPickerView = null; } } - private void applyOpacityToCategoryColor() { - categoryColor = applyOpacityToColor(categoryColor, categoryOpacity); + @ColorInt + private int applyOpacityToCategoryColor() { + return applyOpacityToColor(categoryColor, categoryOpacity); } public void updateUI() { categoryColor = category.getColorNoOpacity(); categoryOpacity = category.getOpacity(); - applyOpacityToCategoryColor(); - setTitle(category.getTitleWithColorDot(categoryColor)); + setTitle(category.getTitleWithColorDot(applyOpacityToCategoryColor())); } private void updateCategoryColorDot() { - applyOpacityToCategoryColor(); - - colorDotView.setText(SegmentCategory.getCategoryColorDot(categoryColor)); + dialogColorDotView.setText(SegmentCategory.getCategoryColorDot(applyOpacityToCategoryColor())); } private void updateOpacityText() { - opacityEditText.setText(String.format(Locale.US, "%.2f", categoryOpacity)); + dialogOpacityEditText.setText(String.format(Locale.US, "%.2f", categoryOpacity)); } @Override @@ -277,4 +341,4 @@ public class SegmentCategoryListPreference extends ListPreference { // This is required otherwise the ReVanced preference fragment // sets all ListPreference summaries to show the current selection. } -} \ No newline at end of file +} diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/SponsorBlockPreferenceGroup.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/SponsorBlockPreferenceGroup.java index 4ed3bf238..1cf2e0444 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/SponsorBlockPreferenceGroup.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/SponsorBlockPreferenceGroup.java @@ -421,7 +421,7 @@ public class SponsorBlockPreferenceGroup extends PreferenceGroup { .setTitle(apiUrl.getTitle()) .setView(editText) .setNegativeButton(android.R.string.cancel, null) - .setNeutralButton(str("revanced_sb_reset"), urlChangeListener) + .setNeutralButton(str("revanced_settings_reset"), urlChangeListener) .setPositiveButton(android.R.string.ok, urlChangeListener) .show(); return true; diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/swipecontrols/SwipeControlsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/swipecontrols/SwipeControlsPatch.kt index 2c55658fb..6c14a93b6 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/swipecontrols/SwipeControlsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/swipecontrols/SwipeControlsPatch.kt @@ -48,7 +48,9 @@ private val swipeControlsResourcePatch = resourcePatch { summaryKey = null, ), TextPreference("revanced_swipe_overlay_background_opacity", inputType = InputType.NUMBER), - TextPreference("revanced_swipe_overlay_progress_color", inputType = InputType.TEXT_CAP_CHARACTERS), + TextPreference("revanced_swipe_overlay_progress_color", + tag = "app.revanced.extension.shared.settings.preference.ColorPickerPreference", + inputType = InputType.TEXT_CAP_CHARACTERS), TextPreference("revanced_swipe_text_overlay_size", inputType = InputType.NUMBER), TextPreference("revanced_swipe_overlay_timeout", inputType = InputType.NUMBER), TextPreference("revanced_swipe_threshold", inputType = InputType.NUMBER), diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/theme/ThemePatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/theme/ThemePatch.kt index 73e84d659..514eae710 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/theme/ThemePatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/theme/ThemePatch.kt @@ -89,14 +89,15 @@ val themePatch = bytecodePatch( execute { val preferences = mutableSetOf( SwitchPreference("revanced_seekbar_custom_color"), - TextPreference("revanced_seekbar_custom_color_primary", inputType = InputType.TEXT_CAP_CHARACTERS), + TextPreference("revanced_seekbar_custom_color_primary", + tag = "app.revanced.extension.shared.settings.preference.ColorPickerPreference", + inputType = InputType.TEXT_CAP_CHARACTERS), ) if (is_19_25_or_greater) { - preferences += TextPreference( - "revanced_seekbar_custom_color_accent", - inputType = InputType.TEXT_CAP_CHARACTERS - ) + preferences += TextPreference("revanced_seekbar_custom_color_accent", + tag = "app.revanced.extension.shared.settings.preference.ColorPickerPreference", + inputType = InputType.TEXT_CAP_CHARACTERS) } PreferenceScreen.SEEKBAR.addPreferences( diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/settings/SettingsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/settings/SettingsPatch.kt index 06a28e7f3..1cd74f52c 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/settings/SettingsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/settings/SettingsPatch.kt @@ -74,6 +74,7 @@ private val settingsResourcePatch = resourcePatch { arrayOf( ResourceGroup("drawable", + "revanced_settings_circle_background.xml", "revanced_settings_cursor.xml", "revanced_settings_icon.xml", "revanced_settings_screen_00_about.xml", @@ -91,6 +92,8 @@ private val settingsResourcePatch = resourcePatch { "revanced_settings_screen_12_video.xml", ), ResourceGroup("layout", + "revanced_color_dot_widget.xml", + "revanced_color_picker.xml", "revanced_preference_with_icon_no_search_result.xml", "revanced_search_suggestion_item.xml", "revanced_settings_with_toolbar.xml"), diff --git a/patches/src/main/resources/addresources/values/strings.xml b/patches/src/main/resources/addresources/values/strings.xml index ede128926..d59675088 100644 --- a/patches/src/main/resources/addresources/values/strings.xml +++ b/patches/src/main/resources/addresources/values/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" ReVanced Do you wish to proceed? Reset + Reset color + Invalid color Refresh and restart Restart Import @@ -1161,11 +1163,6 @@ Ready to submit?" %s seconds Opacity: Color: - Color changed - Color reset - Invalid color code - Reset color - Reset About sponsor.ajay.app Data is provided by the SponsorBlock API. Tap here to learn more and see downloads for other platforms diff --git a/patches/src/main/resources/settings/drawable/revanced_settings_circle_background.xml b/patches/src/main/resources/settings/drawable/revanced_settings_circle_background.xml new file mode 100644 index 000000000..d0c8a7ae4 --- /dev/null +++ b/patches/src/main/resources/settings/drawable/revanced_settings_circle_background.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/patches/src/main/resources/settings/layout/revanced_color_dot_widget.xml b/patches/src/main/resources/settings/layout/revanced_color_dot_widget.xml new file mode 100644 index 000000000..ea61afb8d --- /dev/null +++ b/patches/src/main/resources/settings/layout/revanced_color_dot_widget.xml @@ -0,0 +1,18 @@ + + + + diff --git a/patches/src/main/resources/settings/layout/revanced_color_picker.xml b/patches/src/main/resources/settings/layout/revanced_color_picker.xml new file mode 100644 index 000000000..0c8a3db85 --- /dev/null +++ b/patches/src/main/resources/settings/layout/revanced_color_picker.xml @@ -0,0 +1,11 @@ + + + + + From 3eab838fe2c3417624d22842b2ec7495e94ce7ba Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 26 May 2025 09:25:54 +0200 Subject: [PATCH 23/46] chore: Sync translations (#5036) --- .../addresources/values-ar-rSA/strings.xml | 7 ++----- .../addresources/values-az-rAZ/strings.xml | 5 ----- .../addresources/values-be-rBY/strings.xml | 7 ++----- .../addresources/values-bg-rBG/strings.xml | 7 ++----- .../addresources/values-bn-rBD/strings.xml | 7 ++----- .../addresources/values-ca-rES/strings.xml | 7 ++----- .../addresources/values-cs-rCZ/strings.xml | 7 ++----- .../addresources/values-da-rDK/strings.xml | 7 ++----- .../addresources/values-de-rDE/strings.xml | 7 ++----- .../addresources/values-el-rGR/strings.xml | 7 ++----- .../addresources/values-es-rES/strings.xml | 7 ++----- .../addresources/values-et-rEE/strings.xml | 7 ++----- .../addresources/values-fi-rFI/strings.xml | 6 +----- .../addresources/values-fil-rPH/strings.xml | 7 ++----- .../addresources/values-fr-rFR/strings.xml | 7 ++----- .../addresources/values-ga-rIE/strings.xml | 7 ++----- .../addresources/values-hu-rHU/strings.xml | 7 ++----- .../addresources/values-hy-rAM/strings.xml | 7 ++----- .../addresources/values-in-rID/strings.xml | 7 ++----- .../addresources/values-it-rIT/strings.xml | 7 ++----- .../addresources/values-iw-rIL/strings.xml | 6 +----- .../addresources/values-ja-rJP/strings.xml | 7 ++----- .../addresources/values-ko-rKR/strings.xml | 21 ++++++++----------- .../addresources/values-lt-rLT/strings.xml | 7 ++----- .../addresources/values-lv-rLV/strings.xml | 7 ++----- .../addresources/values-nl-rNL/strings.xml | 7 ++----- .../addresources/values-pl-rPL/strings.xml | 7 ++----- .../addresources/values-pt-rBR/strings.xml | 11 ++++------ .../addresources/values-pt-rPT/strings.xml | 7 ++----- .../addresources/values-ro-rRO/strings.xml | 7 ++----- .../addresources/values-ru-rRU/strings.xml | 7 ++----- .../addresources/values-sk-rSK/strings.xml | 7 ++----- .../addresources/values-sl-rSI/strings.xml | 7 ++----- .../addresources/values-sq-rAL/strings.xml | 7 ++----- .../addresources/values-sr-rCS/strings.xml | 7 ++----- .../addresources/values-sr-rSP/strings.xml | 7 ++----- .../addresources/values-sv-rSE/strings.xml | 7 ++----- .../addresources/values-th-rTH/strings.xml | 7 ++----- .../addresources/values-tr-rTR/strings.xml | 7 ++----- .../addresources/values-uk-rUA/strings.xml | 7 ++----- .../addresources/values-vi-rVN/strings.xml | 7 ++----- .../addresources/values-zh-rCN/strings.xml | 7 ++----- .../addresources/values-zh-rTW/strings.xml | 5 ----- 43 files changed, 89 insertions(+), 224 deletions(-) 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 28fdb4dc8..0a50b996d 100644 --- a/patches/src/main/resources/addresources/values-ar-rSA/strings.xml +++ b/patches/src/main/resources/addresources/values-ar-rSA/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" الإعدادات هل ترغب في المتابعة؟ إعادة التعيين + إعادة تعيين اللون + لون غير صالح تحديث وإعادة التشغيل إعادة التشغيل استيراد @@ -1096,11 +1098,6 @@ Second \"item\" text" %s ثانية الشفافية: اللون: - تم تغيير اللون - إعادة ضبط اللون - رمز اللون غير صالح - إعادة تعيين اللون - إعادة التعيين لمحة يتم توفير البيانات بواسطة SponsorBlock API. انقر هنا لمعرفة المزيد ومشاهدة التنزيلات لمنصات أخرى 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 7c0759957..614c5033e 100644 --- a/patches/src/main/resources/addresources/values-az-rAZ/strings.xml +++ b/patches/src/main/resources/addresources/values-az-rAZ/strings.xml @@ -1095,11 +1095,6 @@ Təqdim etməyə hazırdır?" %s saniyə Qeyri-şəffaflıq: Rəng: - Rəng dəyişdirildi - Rəngi sıfırla - Etibarsız rəng kodu - Rəngi sıfırla - Sıfırlayın Haqqında Məlumat SponsorBlock API tərəfindən təqdim edilir. Daha ətraflı öyrənmək və digər platformalar üzrə yükləmələrə baxmaq üçün bura toxunun 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 6eea02a0b..4d3007465 100644 --- a/patches/src/main/resources/addresources/values-be-rBY/strings.xml +++ b/patches/src/main/resources/addresources/values-be-rBY/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Налады Вы хочаце працягнуць? Скінуць + Скінуць колер + Несапраўдны колер Абнавіце і перазагрузіце Перазапуск Імпарт @@ -1097,11 +1099,6 @@ Second \"item\" text" %s секунд Непразрыстасць: колер: - Колер змяніўся - Скід колеру - Няправільны код колеру - Скінуць колер - Скінуць Пра праграму Дадзеныя прадастаўляюцца API SponsorBlock. Націсніце тут, каб даведацца больш і паглядзець спампоўкі для іншых платформаў 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 a7ebfbfea..829f903f1 100644 --- a/patches/src/main/resources/addresources/values-bg-rBG/strings.xml +++ b/patches/src/main/resources/addresources/values-bg-rBG/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Настройки Искате ли да продължите? Възстанови + Нулиране на цвета + Невалиден цвят Рестартирай и опресни Рестартиране Импортиране @@ -1096,11 +1098,6 @@ Second \"item\" text" %s секунди Непрозрачност: Цвят: - Цветът е променен - Възстанови цвета - Невалидна стойност за цвета - Възстановяване на цвят - Възстанови За програмата Данните са предоставени от SponsorBlock API. Докоснете тук за повече информация и изтеглияния 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 459e36e5a..805ca4547 100644 --- a/patches/src/main/resources/addresources/values-bn-rBD/strings.xml +++ b/patches/src/main/resources/addresources/values-bn-rBD/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" সেটিংস আপনি কি এগিয়ে যেতে ইচ্ছুক? আবার সেট করুন + রঙ রিসেট করুন + অবৈধ রঙ রিফ্রেশ করুন এবং আবার চালু করুন আবার চালু করুন আমদানি করুন @@ -1096,11 +1098,6 @@ YouTube সেটিংসে অটো প্লে পরিবর্তন %s সেকেন্ড স্বচ্ছতা: রং: - রং পরিবর্তন করা হয়েছে - রং আবার সেট করুন - রংয়ের ভুল কোড - রং আবার সেট করুন - পুনরায় সেট করুন সম্পর্কিত ডেটা SponsorBlock API দ্বারা সরবরাহ করা হয়। আরও জানতে এবং অন্যান্য প্ল্যাটফর্মের ডাউনলোড দেখতে এখানে ট্যাপ করুন 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 38bb58cf1..c6d2cecdc 100644 --- a/patches/src/main/resources/addresources/values-ca-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-ca-rES/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Configuració Vols continuar? Restablir + Restablir el color + Color no vàlid Actualitza i reinicia Reinicia Importa @@ -1095,11 +1097,6 @@ Preparat per enviar?" %s segons Opacitat: Color: - Color canviat - Color restablert - Codi de color invàlid - Restableix el color - Restablir Quant a Les dades són proporcionades per l\'API de SponsorBlock. Toca aquí per a saber-ne més i veure les descàrregues per a altres plataformes 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 f20ea1506..be98cf4ac 100644 --- a/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml +++ b/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Nastavení Přejete si pokračovat? Výchozí + Obnovit barvu + Neplatná barva Obnovit a restartovat Restartovat Importovat @@ -1095,11 +1097,6 @@ Jste připraveni k odeslání?" %s sekund Průhlednost: Barva: - Barva změněna - Barva resetována - Neplatný kód barvy - Resetovat barvu - Výchozí O aplikaci Data poskytuje rozhraní API SponsorBlock. Klepněte zde, abyste se dozvěděli více a zobrazili si soubory ke stažení pro další platformy 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 36a2ad9c6..56c523afa 100644 --- a/patches/src/main/resources/addresources/values-da-rDK/strings.xml +++ b/patches/src/main/resources/addresources/values-da-rDK/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Indstillinger Ønsker du at fortsætte? Nulstil + Nulstil farve + Ugyldig farve Opdater og genstart Genstart Importer @@ -1045,11 +1047,6 @@ Er du klar til at indsende?" %s sekunder Opacitet: Farve: - Farve ændret - Nulstil farve - Ugyldig farvekode - Nulstil farve - Nulstil Om Data leveres af SponsorBlock API. Tryk her for at få flere oplysninger og se downloads til andre platforme 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 31007aecf..683669073 100644 --- a/patches/src/main/resources/addresources/values-de-rDE/strings.xml +++ b/patches/src/main/resources/addresources/values-de-rDE/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Einstellungen Möchtest du fortfahren? Zurücksetzen + Farbe zurücksetzen + Ungültige Farbe Aktualisieren und neu starten Neustart Importieren @@ -1089,11 +1091,6 @@ Bereit zum Einreichen?" %s Sekunden Deckkraft: Farbe: - Farbe geändert - Farbe zurücksetzen - Ungültiger Farbcode - Farbe zurücksetzen - Zurücksetzen Über Daten werden von der SponsorBlock API bereitgestellt. Tippe hier, um mehr zu erfahren und Downloads für andere Plattformen zu sehen 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 bce913d42..c39330ae2 100644 --- a/patches/src/main/resources/addresources/values-el-rGR/strings.xml +++ b/patches/src/main/resources/addresources/values-el-rGR/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Ρυθμίσεις Θέλετε να συνεχίσετε; Επαναφορά + Επαναφορά χρώματος + Μη έγκυρο χρώμα Ανανέωση και επανεκκίνηση Επανεκκίνηση Εισαγωγή @@ -1097,11 +1099,6 @@ Second \"item\" text" %s δευτερόλεπτα Αδιαφάνεια: Χρώμα: - Το χρώμα άλλαξε - Το χρώμα επαναφέρθηκε - Μη έγκυρος κωδικός χρώματος - Επαναφορά χρώματος - Επαναφορά Σχετικά με Τα δεδομένα παρέχονται από το SponsorBlock API. Πατήστε για να μάθετε περισσότερα και να δείτε λήψεις για άλλες πλατφόρμες 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 c47f8410f..4489dfad8 100644 --- a/patches/src/main/resources/addresources/values-es-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-es-rES/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Ajustes ¿Desea continuar? Restablecer + Restablecer color + Color no válido Actualizar y reiniciar Reiniciar Importar @@ -1084,11 +1086,6 @@ Ya existe" %s segundos Opacidad: Color: - Color cambiado - Restablecer color - Código de color inválido - Reiniciar color - Restablecer Acerca de Los datos son proporcionados por la API de SponsorBlock. Pulsa aquí para aprender más y ver las descargas para otras plataformas 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 806fbd8f8..280a2ccf3 100644 --- a/patches/src/main/resources/addresources/values-et-rEE/strings.xml +++ b/patches/src/main/resources/addresources/values-et-rEE/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Seaded Kas soovite jätkata? Lähtesta + Lähtesta värv + Vigane värv Värskenda ja taaskäivita Taaskäivita Impordi @@ -1096,11 +1098,6 @@ Kas olete esitamiseks valmis?" %s sekundit Läbipaistmatus: Värv: - Värv muudetud - Värv lähtestatud - Vigane värvikood - Lähtesta värv - Lähtesta Teave Andmed on pärit SponsorBlock API-st. Puudutage siia, et saada lisateavet ja vaadata allalaadimisi teistele platvormidele 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 4984d8665..439dc630c 100644 --- a/patches/src/main/resources/addresources/values-fi-rFI/strings.xml +++ b/patches/src/main/resources/addresources/values-fi-rFI/strings.xml @@ -35,6 +35,7 @@ Second \"item\" text" Asetukset Haluatko jatkaa? Nollaa + Nollaa väri Päivitä ja käynnistä uudelleen Käynnistä uudelleen Tuo @@ -1088,11 +1089,6 @@ Oletko valmis lähettämään?" %s sekuntia Läpikuultamattomuus: Väri: - Väri vaihdettu - Väri nollattu - Virheellinen värikoodi - Nollaa väri - Nollaa Tietoja Tiedot tarjoaa SponsorBlock API. Napauta tätä saadaksesi lisätietoja ja nähdäksesi lataukset muille alustoille 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 ca7c18c22..70363eec8 100644 --- a/patches/src/main/resources/addresources/values-fil-rPH/strings.xml +++ b/patches/src/main/resources/addresources/values-fil-rPH/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Mga Setting Gusto mo bang magpatuloy? I-reset + I-reset ang kulay + Hindi wasto ang kulay I-refresh at i-restart I-restart Angkat @@ -1094,11 +1096,6 @@ Isumite na ba?" %s segundo Opacity: Kulay: - Nagbago ang kulay - Pag-reset ng kulay - Di-wastong code ng kulay - I-reset ang kulay - I-reset Tungkol Ang data ay ibinibigay ng SponsorBlock API. Mag-tap dito para matuto pa at makakita ng mga download para sa iba pang platform 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 e93eb400c..24f7f0120 100644 --- a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml +++ b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Paramètres Voulez-vous continuer ? Réinitialiser + Réinitialiser la couleur + Couleur non valide Actualiser et redémarrer Redémarrer Importer @@ -1095,11 +1097,6 @@ Prêt à soumettre ?" %s secondes Opacité : Couleur : - Couleur modifiée - Couleur réinitialisée - Code couleur invalide - Réinitialiser la couleur - Réinitialiser À propos Les données sont fournies par l\'API SponsorBlock. Appuyez ici pour en savoir plus et pour voir les téléchargements pour les autres plateformes. 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 bde596d74..b8b3f6503 100644 --- a/patches/src/main/resources/addresources/values-ga-rIE/strings.xml +++ b/patches/src/main/resources/addresources/values-ga-rIE/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Socruithe Ar mhaith leat dul ar aghaidh? Athshocraigh + Dath a athshocrú + Dath neamhbhailí Athnuachan agus atosaigh Athosaigh Iompórtáil @@ -1096,11 +1098,6 @@ Maithe chun cur isteach?" %s soicindí Teimhneacht: Dath: - Athraigh dath - Athshocrú dath - Cód dath neamhbhailí - Athshocraigh dath - Athshocraigh Maidir Soláthraíonn an API SponsorBlock sonraí. Tapáil anseo chun níos mó a fhoghlaim agus íoslódálacha a fheiceáil d\'ardáin eile 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 85f851781..4d3970ed0 100644 --- a/patches/src/main/resources/addresources/values-hu-rHU/strings.xml +++ b/patches/src/main/resources/addresources/values-hu-rHU/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Beállítások Szeretné folytatni? Visszaállítás + Szín alaphelyzetbe állítása + Érvénytelen szín Frissítés és újraindítás Újraindítás Importálás @@ -1095,11 +1097,6 @@ Készen állsz a beküldésre?" %s másodperc Áttetszőség: Szín: - A szín megváltoztatva - Szín alaphelyzetbe - Érvénytelen színkód - Színek visszaállítása - Visszaállítás Rólunk Az adatokat a SponsorBlock API biztosítja. Koppintson ide, ha többet szeretne megtudni és megtekintené a letöltéseket más platformokra 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 d9b183906..755f38190 100644 --- a/patches/src/main/resources/addresources/values-hy-rAM/strings.xml +++ b/patches/src/main/resources/addresources/values-hy-rAM/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Կարգավորումներ Դուք ցանկանում եք շարունակել? Վերականգնել + Գույնը վերականգնել + Անվավեր գույն Թարմացնել և վերագործարկել Վերսկսել Ներմուծել @@ -1096,11 +1098,6 @@ Seekbar thumbnails-ները կօգտագործեն նույն որակը, ինչ %s վայրկյան Թափանցիկություն․ Գույն։ - Գույնը փոխվել է - Գույնը վերագործարկվել է - Անվավեր գույնի կոդ - Վերագործարկել գույնը - Վերագործարկել Ծրագրի մասին Տվյալները մատուցվում են SponsorBlock API-ի կողմից։ Սեղմեք այստեղ՝ ավելի շատ իմանալու և այլ հարթակների համար ներբեռնումները տեսնելու 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 b06449f45..ff68f6401 100644 --- a/patches/src/main/resources/addresources/values-in-rID/strings.xml +++ b/patches/src/main/resources/addresources/values-in-rID/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Pengaturan Apakah Anda ingin melanjutkan? Setel ulang + Setel ulang warna + Warna tidak valid Segarkan dan mulai ulang Mulai ulang Impor @@ -1095,11 +1097,6 @@ Siap mengirim?" %s detik Opasitas: Warna: - Warna berubah - Reset warna - Kode warna tidak sah - Atur ulang warna - Setel ulang Tentang Data disediakan oleh API SponsorBlock. Tekan di sini untuk mempelajari lebih lanjut dan melihat hasil pengunduhan untuk platform lain 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 52888ad47..3bfe9ad12 100644 --- a/patches/src/main/resources/addresources/values-it-rIT/strings.xml +++ b/patches/src/main/resources/addresources/values-it-rIT/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Impostazioni Sei sicuro di voler continuare? Reimposta + Reimposta colore + Colore non valido Aggiorna e riavvia Riavvia Importa @@ -1095,11 +1097,6 @@ Pronto per l'invio?" %s secondi Opacità: Colore: - Colore modificato - Ripristino colore - Codice colore non valido - Ripristina colore - Reimposta Informazioni I dati sono forniti dall\'API di SponsorBlock. Tocca qui per saperne di più e vedere i download per altre piattaforme 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 946e9d9a4..a551848e8 100644 --- a/patches/src/main/resources/addresources/values-iw-rIL/strings.xml +++ b/patches/src/main/resources/addresources/values-iw-rIL/strings.xml @@ -35,6 +35,7 @@ Second \"item\" text" הגדרות האם ברצונך להמשיך? איפוס + אפס צבע רענן והפעל מחדש הפעלה מחדש ייבוא @@ -1060,11 +1061,6 @@ Second \"item\" text" %s שניות אטימות: צבע: - צבע שונה - צבע אופס - קוד צבע לא חוקי - אפס צבע - איפוס אודות הנתונים מסופקים על ידי SponsorBlock API. הקש כאן כדי ללמוד עוד ולראות הורדות עבור פלטפורמות אחרות 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 e59e4ed5c..d152bc2ae 100644 --- a/patches/src/main/resources/addresources/values-ja-rJP/strings.xml +++ b/patches/src/main/resources/addresources/values-ja-rJP/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" 設定 続行しますか? リセット + 色をリセット + 色の値が無効です 更新して再起動 再起動 インポート @@ -1096,11 +1098,6 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ %s 秒 透明度: 色: - 色を変更しました - 色がリセットされました - 色の値が無効です - 色をリセット - リセット SponsorBlock について SponsorBlock APIによって提供されるデータです。詳細はこちらをタップしてください。 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 0d7324c0b..2cac93931 100644 --- a/patches/src/main/resources/addresources/values-ko-rKR/strings.xml +++ b/patches/src/main/resources/addresources/values-ko-rKR/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" 설정 계속하시겠습니까? 초기화 + 색상 초기화 + 잘못된 색상 새로고침 및 다시 시작 다시 시작 가져오기 @@ -485,13 +487,13 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배 볼륨 스와이프 민감도 스와이프할 때마다 볼륨이 얼마나 변경되는지를 지정할 수 있습니다 스와이프 오버레이 스타일 - 가로 오버레이 - 가로 오버레이 (최소화 - 상단) - 가로 오버레이 (최소화 - 중앙) - 원형 오버레이 - 원형 오버레이 (최소화) - 세로 오버레이 - 세로 오버레이 (최소화) + 가로 + 가로 (최소화 - 상단) + 가로 (최소화 - 중앙) + 원형 + 원형 (최소화) + 세로 + 세로 (최소화) 스와이프 제스처로 동영상 전환 활성화하기 전체 화면 중앙에서 위로/아래로 스와이프하여 다음/이전 동영상으로 전환합니다 전체 화면 중앙에서 위로/아래로 스와이프하여 다음/이전 동영상으로 전환하지 않습니다 @@ -1096,11 +1098,6 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배 %s 초 불투명도: 색상: - 설정한 색상을 적용하였습니다 - 색상을 초기화하였습니다 - 잘못된 헥스 코드입니다 - 색상 초기화 - 초기화 정보 건너뛸 구간의 데이터는 SponsorBlock API에 의해 제공됩니다. 자세한 내용을 보려면 여기를 누르세요 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 4ca2c90e9..6ce0f0767 100644 --- a/patches/src/main/resources/addresources/values-lt-rLT/strings.xml +++ b/patches/src/main/resources/addresources/values-lt-rLT/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Nustatymai Ar norite tęsti? Atstatyti + Atkurti spalvą + Neteisinga spalva Atnaujinti ir paleisti iš naujo Paleisti iš naujo Importuoti @@ -1095,11 +1097,6 @@ Ar paruošta pateikti?" %s sekundės Neskaidrumas: Spalva: - Spalva pakeista - Spalva atstatyta - Netinkamas spalvos kodas - Atstatyti spalvą - Atstatyti Apie Duomenys pateikiami per \"SponsorBlock\" API. Bakstelėkite čia, kad sužinotumėte daugiau ir pamatytumėte atsisiuntimus kitoms platformoms 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 9b5476f68..3f742ecaa 100644 --- a/patches/src/main/resources/addresources/values-lv-rLV/strings.xml +++ b/patches/src/main/resources/addresources/values-lv-rLV/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Iestatījumi Vai vēlaties turpināt? Atiestatīt + Atiestatīt krāsu + Nederīga krāsa Atjaunināt un restartēt Restartēt Importēt @@ -1095,11 +1097,6 @@ Vai esat gatavs iesniegt?" %s sekundes Necaurredzamība: Krāsa: - Krāsa mainīta - Krāsa atiestatīta - Nederīgs krāsas kods - Atiestatīt krāsu - Atiestatīt Par Dati tiek sniegti no SponsorBlock API. Pieskarieties šeit, lai uzzinātu vairāk un skatītu lejupielādes citām platformām 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 6ad83c18d..45d0c65b0 100644 --- a/patches/src/main/resources/addresources/values-nl-rNL/strings.xml +++ b/patches/src/main/resources/addresources/values-nl-rNL/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Instellingen Wilt u doorgaan? Terugzetten + Kleur opnieuw instellen + Ongeldige kleur Vernieuwen en opnieuw starten Opnieuw starten Importeren @@ -1096,11 +1098,6 @@ Klaar om in te dienen?" %s seconden Ondoorzichtigheid: Kleur: - Kleur gewijzigd - Kleur gereset - Ongeldige kleurcode - Kleur resetten - Herstellen naar standaard Over Gegevens worden geleverd door de SponsorBlock API. Tik hier om meer te weten te komen en downloads te bekijken voor andere platforms 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 152e51153..99bca3ab8 100644 --- a/patches/src/main/resources/addresources/values-pl-rPL/strings.xml +++ b/patches/src/main/resources/addresources/values-pl-rPL/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Ustawienia Czy chcesz kontynuować? Zresetuj + Zresetuj kolor + Nieprawidłowy kolor Odśwież i uruchom ponownie Uruchom ponownie Zaimportuj @@ -1096,11 +1098,6 @@ Gotowy do przesłania?" %s sekund Krycie: Kolor: - Zmieniono kolor - Zresetowano kolor - Nieprawidłowy kod koloru - Resetuj kolor - Resetuj O aplikacji Dane są dostarczane przez API SponsorBlock. Dotknij tutaj, aby dowiedzieć się więcej i pobrać na inne platformy 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 a99c688fb..da61ff455 100644 --- a/patches/src/main/resources/addresources/values-pt-rBR/strings.xml +++ b/patches/src/main/resources/addresources/values-pt-rBR/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Configurações Você deseja prosseguir? Resetar + Redefinir cor + Cor inválida Atualizar e reiniciar Reiniciar Importar @@ -759,8 +761,8 @@ Para exibir o menu da faixa de áudio, altere \"Spoof video streams\" para iOS T Botão gostei está oculto Botão gostei não está oculto Ocultar botão Não curtir - Botão não gostei é mostrado - Botão não gostei está oculto + Botão não gostei está oculto + Botão não gostei é mostrado Ocultar botão Comentários Botão comentários está oculto Botão comentários não está oculto @@ -1093,11 +1095,6 @@ Pronto para enviar?" %s segundos Opacidade: Cor: - Cor alterada - Redefinir cor - Código de cor inválido - Redefinir cor - Resetar Sobre Os dados são fornecidos pela API do SponsorBlock. Toque aqui para aprender mais e ver como baixar para outras plataformas 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 145fc4b52..b5171676a 100644 --- a/patches/src/main/resources/addresources/values-pt-rPT/strings.xml +++ b/patches/src/main/resources/addresources/values-pt-rPT/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Configurações Desejas continuar? Repor + Redefinir cor + Cor inválida Atualizar e reiniciar Reiniciar Importar @@ -1096,11 +1098,6 @@ Pronto para enviar?" %s segundos Opacidade: Cor: - Cor alterada - Redefinir cor - Código de cor inválido - Redefinir cor - Repor Sobre Os dados são fornecidos pela API do SponsorBlock. Toque aqui para aprender mais e ver downloads para outras plataformas 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 da014d5c6..845977c92 100644 --- a/patches/src/main/resources/addresources/values-ro-rRO/strings.xml +++ b/patches/src/main/resources/addresources/values-ro-rRO/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Setări Doriți să continuați? Resetare + Resetează culoarea + Culoare nevalidă Reîmprospătare și repornire Repornire Importare @@ -1095,11 +1097,6 @@ Ești gata să trimiți?" %s secunde Opacitate: Culoare: - Culoare schimbată - Resetare culoare - Cod culoare nevalid - Resetare culoare - Resetează Despre Datele sunt furnizate de API-ul SponsorBlock. Apasă aici pentru a afla mai multe și a vedea descărcările pentru alte platforme 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 f7d442d11..07671b7ad 100644 --- a/patches/src/main/resources/addresources/values-ru-rRU/strings.xml +++ b/patches/src/main/resources/addresources/values-ru-rRU/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Настройки Вы хотите продолжить? Сбросить + Сбросить цвет + Неверный цвет Обновить и перезапустить Перезапустить Импортировать @@ -1096,11 +1098,6 @@ Second \"item\" text" %s секунд Непрозрачность: Цвет: - Цвет изменен - Цвет сброшен - Неверный код цвета - Сбросить цвет - Сбросить Об интеграции Данные предоставлены SponsorBlock API. Нажмите для дополнительной информации и просмотра загрузок для других платформ 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 807457af5..91303e7c9 100644 --- a/patches/src/main/resources/addresources/values-sk-rSK/strings.xml +++ b/patches/src/main/resources/addresources/values-sk-rSK/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Nastavenia Chcete pokračovať? Resetovať + Obnovi farbu + Neplatn farba Obnovte a reštartujte Reštart Importovať @@ -1086,11 +1088,6 @@ Pripravené na odoslanie?" %s sekúnd Priehľadnosť: Farba: - Farba bola zmenená - Farba bola resetovaná - Neplatný kód farby - Obnoviť farbu - Resetovať Informácie Údaje poskytuje SponsorBlock API. Klepnutím sem sa dozviete viac a zobrazíte súbory na stiahnutie pre iné platformy 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 a7987867b..66ed2e5a8 100644 --- a/patches/src/main/resources/addresources/values-sl-rSI/strings.xml +++ b/patches/src/main/resources/addresources/values-sl-rSI/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Nastavitve Ali želite nadaljevati? Ponastavi + Ponastavi barvo + Neveljavna barva Osveži in ponovno zaženi Ponovno zaženi Uvozi @@ -1095,11 +1097,6 @@ Ali ste pripravljeni na oddajo?" %s sekund Prosojnost: Barva: - Barva spremenjena - Barva ponastavljena - Neveljavna koda barve - Ponastavi barvo - Ponastavi O programu Podatki so zagotovljeni s strani SponsorBlock API. Tapnite tukaj, da izveste več in si ogledate prenose za druge platforme 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 fe1cf67bc..dc0f4037b 100644 --- a/patches/src/main/resources/addresources/values-sq-rAL/strings.xml +++ b/patches/src/main/resources/addresources/values-sq-rAL/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Cilësimet Dëshironi të vazhdoni? Rivendos + Rikthe ngjyrën + Ngjyrë e pavlefshme Rifresko dhe rifillo Rifillo Importo @@ -1094,11 +1096,6 @@ Gati per te dhene?" %s sekonda Opaciteti: Ngjyra: - Ngjyra është ndryshuar - Ngjyra u rikthye - Kod ngjyre i pavlefshëm - Rikthe ngjyrën - Rikthe Rreth Të dhënat janë siguruar nga API e SponsorBlock. Prekni këtu për të mësuar më shumë dhe për të parë shkarkimet për platformat e tjera 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 4a3770f28..911b27ec0 100644 --- a/patches/src/main/resources/addresources/values-sr-rCS/strings.xml +++ b/patches/src/main/resources/addresources/values-sr-rCS/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Podešavanja Želite li da nastavite? Resetuj + Poništi boju + Nevažeća boja Osvežite i restartujte Restartuj Uvoz @@ -1095,11 +1097,6 @@ Spreman za podnošenje?" %s sekundi Neprozirnost: Boja: - Boja promenjena - Boja resetovana - Nevažeći kôd boje - Resetuj boju - Resetuj O programu Podatke obezbeđuje SponsorBlock API. Dodirnite ovde da saznate više i vidite preuzimanja za druge platforme 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 8fb878bc0..2697304ac 100644 --- a/patches/src/main/resources/addresources/values-sr-rSP/strings.xml +++ b/patches/src/main/resources/addresources/values-sr-rSP/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Подешавања Желите ли да наставите? Ресетуј + Врати подразумевану боју + Неисправна боја Освежите и рестартујте Рестартуј Увоз @@ -1095,11 +1097,6 @@ Second \"item\" text" %s секунди Непрозирност: Боја: - Боја промењена - Боја ресетована - Неважећи кôд боје - Ресетуј боју - Ресетуј О програму Податке обезбеђује SponsorBlock API. Додирните овде да сазнате више и видите преузимања за друге платформе 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 fbcc0dc3e..ebfcc4bf2 100644 --- a/patches/src/main/resources/addresources/values-sv-rSE/strings.xml +++ b/patches/src/main/resources/addresources/values-sv-rSE/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Inställningar Vill du fortsätta? Återställ + Återställ färg + Ogiltig färg Uppdatera och starta om Starta om Importera @@ -1095,11 +1097,6 @@ Redo att skicka in?" %s sekunder Opacitet: Färg: - Färg ändrad - Färg återställning - Ogiltig färgkod - Återställ färg - Återställ Om Data tillhandahålls av SponsorBlock API. Tryck här för att läsa mer och se nedladdningar för andra plattformar 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 59c89db9d..a059398c5 100644 --- a/patches/src/main/resources/addresources/values-th-rTH/strings.xml +++ b/patches/src/main/resources/addresources/values-th-rTH/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" การตั้งค่า คุณต้องการดำเนินการต่อหรือไม่? รีเซ็ต + รีเซ็ตสี + สีไม่ถูกต้อง รีเฟรชและเริ่มต้นใหม่ เริ่มต้นใหม่ นำเข้า @@ -1094,11 +1096,6 @@ User id ของคุณเหมือนกับรหัสผ่าน %s วินาที ความทึบ: สี: - เปลื่ยนสีแล้ว - สีเปลื่ยนเป็นค่าเริ่มต้นแล้ว - รหัสสีไม่ถูกต้อง - รีเซ็ตสี - รีเซ็ต เกี่ยวกับ ข้อมูลนี้มาจาก SponsorBlock API แตะที่นี่เพื่อเรียนรู้เพิ่มเติมและดูการดาวน์โหลดสำหรับแพลตฟอร์มอื่น ๆ 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 20dcaab75..93560b566 100644 --- a/patches/src/main/resources/addresources/values-tr-rTR/strings.xml +++ b/patches/src/main/resources/addresources/values-tr-rTR/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Ayarlar Devam etmek istiyor musunuz? Sıfırla + Rengi sıfırla + Geçersiz renk Yenile ve yeniden başlat Yeniden başlat İçe aktar @@ -1096,11 +1098,6 @@ Göndermeye hazır mısınız?" %s saniye Opaklık: Renk: - Renk değiştirildi - Renk sıfırlandı - Geçersiz renk kodu - Rengi sıfırla - Sıfırla Hakkında Veri, SponsorBlock API\'sinden sağlanır. Daha fazla bilgi ve diğer platformlar için indirmeleri görmek için dokunun 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 4a4d9f144..9daf00ea6 100644 --- a/patches/src/main/resources/addresources/values-uk-rUA/strings.xml +++ b/patches/src/main/resources/addresources/values-uk-rUA/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Налаштування Бажаєте продовжити? Скинути + Скинути колір + Невірний колір Оновити та перезавантажити? Перезавантажити Імпортувати @@ -1096,11 +1098,6 @@ Second \"item\" text" %s секунд(и) Непрозорість: Колір: - Колір змінено - Колір скинуто - Невірний код кольору - Скинути колір - Скинути Про інтеграцію Дані надаються через API SponsorBlock. Натисніть тут, щоб дізнатися більше та побачити завантаження для інших платформ 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 05fb5988a..91f1221e3 100644 --- a/patches/src/main/resources/addresources/values-vi-rVN/strings.xml +++ b/patches/src/main/resources/addresources/values-vi-rVN/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" Thiết lập Bạn có muốn tiếp tục không? Đặt lại + Đặt lại màu + Màu không hợp lệ Làm mới và khởi động lại Khởi động lại Nhập @@ -1095,11 +1097,6 @@ Bạn đã sẵn sàng gửi?" %s giây Độ mờ: Màu: - Màu sắc đã được thay đổi - Đặt lại màu sắc - Mã màu không hợp lệ - Đặt lại màu - Đặt lại Giới thiệu Dữ liệu được cung cấp bởi API SponsorBlock. Nhấn vào đây để tìm hiểu thêm và xem các bản tải cho các nền tảng khác 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 487af8aa0..2939cba96 100644 --- a/patches/src/main/resources/addresources/values-zh-rCN/strings.xml +++ b/patches/src/main/resources/addresources/values-zh-rCN/strings.xml @@ -35,6 +35,8 @@ Second \"item\" text" 设置 您想要继续吗? 重置 + 重置颜色 + 无效的颜色 刷新并重启 重启 导入 @@ -1100,11 +1102,6 @@ Second \"item\" text" %s 秒 不透明度: 颜色: - 已更改颜色 - 重置颜色 - 无效的颜色代码 - 重置颜色 - 重置 关于 数据由 SponsorBlock API 提供。点击这里了解更多信息并查看其他平台的下载内容 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 2bea8d86f..b64327801 100644 --- a/patches/src/main/resources/addresources/values-zh-rTW/strings.xml +++ b/patches/src/main/resources/addresources/values-zh-rTW/strings.xml @@ -1072,11 +1072,6 @@ Second \"item\" text" %s 秒 不透明度: 顏色: - 已變更顏色 - 重設顏色 - 無效的顏色代碼 - 重設顏色 - 重設 關於 資料由 SponsorBlock API 提供。輕觸這裡來了解更多資訊和查看其他平台的下載 From 391e6f2f92b89d98ede6394c1b0146e82401b986 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Mon, 26 May 2025 07:29:23 +0000 Subject: [PATCH 24/46] chore: Release v5.25.0-dev.9 [skip ci] # [5.25.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.8...v5.25.0-dev.9) (2025-05-26) ### Features * **Spotify:** Add `Fix Facebook login` patch ([#5023](https://github.com/ReVanced/revanced-patches/issues/5023)) ([34932dc](https://github.com/ReVanced/revanced-patches/commit/34932dc43933d346a5a3adadc62c0dbd38a633b5)) * **YouTube - Settings:** Add a color picker ([#4981](https://github.com/ReVanced/revanced-patches/issues/4981)) ([1e0e398](https://github.com/ReVanced/revanced-patches/commit/1e0e398574329173aff11a4dc9acfc3fcdeabe16)) --- CHANGELOG.md | 8 ++++++++ gradle.properties | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c4a88ae5f..22619e681 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +# [5.25.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.8...v5.25.0-dev.9) (2025-05-26) + + +### Features + +* **Spotify:** Add `Fix Facebook login` patch ([#5023](https://github.com/ReVanced/revanced-patches/issues/5023)) ([34932dc](https://github.com/ReVanced/revanced-patches/commit/34932dc43933d346a5a3adadc62c0dbd38a633b5)) +* **YouTube - Settings:** Add a color picker ([#4981](https://github.com/ReVanced/revanced-patches/issues/4981)) ([1e0e398](https://github.com/ReVanced/revanced-patches/commit/1e0e398574329173aff11a4dc9acfc3fcdeabe16)) + # [5.25.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.7...v5.25.0-dev.8) (2025-05-25) diff --git a/gradle.properties b/gradle.properties index 5cf4d56d0..13265dbfc 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.25.0-dev.8 +version = 5.25.0-dev.9 From 5a23158211c997758027cd60c89521b1f232a767 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 26 May 2025 09:49:50 +0200 Subject: [PATCH 25/46] chore: Sync translations (#5037) From 63c289e9f986ba0c7e174c53c2a4fcb3f119428f Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Mon, 26 May 2025 07:53:26 +0000 Subject: [PATCH 26/46] chore: Release v5.25.0-dev.9 [skip ci] # [5.25.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.8...v5.25.0-dev.9) (2025-05-26) ### Features * **Spotify:** Add `Fix Facebook login` patch ([#5023](https://github.com/ReVanced/revanced-patches/issues/5023)) ([34932dc](https://github.com/ReVanced/revanced-patches/commit/34932dc43933d346a5a3adadc62c0dbd38a633b5)) * **YouTube - Settings:** Add a color picker ([#4981](https://github.com/ReVanced/revanced-patches/issues/4981)) ([1e0e398](https://github.com/ReVanced/revanced-patches/commit/1e0e398574329173aff11a4dc9acfc3fcdeabe16)) --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 22619e681..e4a12c60b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ # [5.25.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.8...v5.25.0-dev.9) (2025-05-26) +### Features + +* **Spotify:** Add `Fix Facebook login` patch ([#5023](https://github.com/ReVanced/revanced-patches/issues/5023)) ([34932dc](https://github.com/ReVanced/revanced-patches/commit/34932dc43933d346a5a3adadc62c0dbd38a633b5)) +* **YouTube - Settings:** Add a color picker ([#4981](https://github.com/ReVanced/revanced-patches/issues/4981)) ([1e0e398](https://github.com/ReVanced/revanced-patches/commit/1e0e398574329173aff11a4dc9acfc3fcdeabe16)) + +# [5.25.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.8...v5.25.0-dev.9) (2025-05-26) + + ### Features * **Spotify:** Add `Fix Facebook login` patch ([#5023](https://github.com/ReVanced/revanced-patches/issues/5023)) ([34932dc](https://github.com/ReVanced/revanced-patches/commit/34932dc43933d346a5a3adadc62c0dbd38a633b5)) From 87f2a44ebd5bfe006dd91863975a35fb4f8af2e2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 26 May 2025 10:39:02 +0200 Subject: [PATCH 27/46] chore: Sync translations (#5038) --- .../src/main/resources/addresources/values-fr-rFR/strings.xml | 2 +- .../src/main/resources/addresources/values-in-rID/strings.xml | 2 +- .../src/main/resources/addresources/values-ko-rKR/strings.xml | 2 +- .../src/main/resources/addresources/values-uk-rUA/strings.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) 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 24f7f0120..83b756f5c 100644 --- a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml +++ b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml @@ -36,7 +36,7 @@ Second \"item\" text" Voulez-vous continuer ? Réinitialiser Réinitialiser la couleur - Couleur non valide + Couleur invalide Actualiser et redémarrer Redémarrer Importer 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 ff68f6401..ae189d755 100644 --- a/patches/src/main/resources/addresources/values-in-rID/strings.xml +++ b/patches/src/main/resources/addresources/values-in-rID/strings.xml @@ -36,7 +36,7 @@ Second \"item\" text" Apakah Anda ingin melanjutkan? Setel ulang Setel ulang warna - Warna tidak valid + Warna tidak sah Segarkan dan mulai ulang Mulai ulang Impor 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 2cac93931..08bad4695 100644 --- a/patches/src/main/resources/addresources/values-ko-rKR/strings.xml +++ b/patches/src/main/resources/addresources/values-ko-rKR/strings.xml @@ -36,7 +36,7 @@ Second \"item\" text" 계속하시겠습니까? 초기화 색상 초기화 - 잘못된 색상 + 잘못된 색상입니다 새로고침 및 다시 시작 다시 시작 가져오기 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 9daf00ea6..cdb579b53 100644 --- a/patches/src/main/resources/addresources/values-uk-rUA/strings.xml +++ b/patches/src/main/resources/addresources/values-uk-rUA/strings.xml @@ -36,7 +36,7 @@ Second \"item\" text" Бажаєте продовжити? Скинути Скинути колір - Невірний колір + Недійсний колір Оновити та перезавантажити? Перезавантажити Імпортувати From 2bafb517e5be9155643daf34efd892b9f5552e04 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Mon, 26 May 2025 09:48:51 +0000 Subject: [PATCH 28/46] chore: Release v5.25.0-dev.9 [skip ci] # [5.25.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.8...v5.25.0-dev.9) (2025-05-26) ### Features * **Spotify:** Add `Fix Facebook login` patch ([#5023](https://github.com/ReVanced/revanced-patches/issues/5023)) ([34932dc](https://github.com/ReVanced/revanced-patches/commit/34932dc43933d346a5a3adadc62c0dbd38a633b5)) * **YouTube - Settings:** Add a color picker ([#4981](https://github.com/ReVanced/revanced-patches/issues/4981)) ([1e0e398](https://github.com/ReVanced/revanced-patches/commit/1e0e398574329173aff11a4dc9acfc3fcdeabe16)) --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e4a12c60b..9d2123160 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,14 @@ # [5.25.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.8...v5.25.0-dev.9) (2025-05-26) +### Features + +* **Spotify:** Add `Fix Facebook login` patch ([#5023](https://github.com/ReVanced/revanced-patches/issues/5023)) ([34932dc](https://github.com/ReVanced/revanced-patches/commit/34932dc43933d346a5a3adadc62c0dbd38a633b5)) +* **YouTube - Settings:** Add a color picker ([#4981](https://github.com/ReVanced/revanced-patches/issues/4981)) ([1e0e398](https://github.com/ReVanced/revanced-patches/commit/1e0e398574329173aff11a4dc9acfc3fcdeabe16)) + +# [5.25.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.8...v5.25.0-dev.9) (2025-05-26) + + ### Features * **Spotify:** Add `Fix Facebook login` patch ([#5023](https://github.com/ReVanced/revanced-patches/issues/5023)) ([34932dc](https://github.com/ReVanced/revanced-patches/commit/34932dc43933d346a5a3adadc62c0dbd38a633b5)) From d9b5f94c68efd0eb5f696ba77079de032453d012 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Mon, 26 May 2025 12:36:16 +0200 Subject: [PATCH 29/46] chore: fix api dump --- patches/api/patches.api | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/patches/api/patches.api b/patches/api/patches.api index c8ef5d763..9bed69e1e 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -1,7 +1,3 @@ -public final class FixFacebookLoginPatchKt { - public static final fun getFixFacebookLoginPatch ()Lapp/revanced/patcher/patch/BytecodePatch; -} - public final class app/revanced/patches/all/misc/activity/exportall/ExportAllActivitiesPatchKt { public static final fun getExportAllActivitiesPatch ()Lapp/revanced/patcher/patch/ResourcePatch; } @@ -888,6 +884,10 @@ public final class app/revanced/patches/spotify/misc/fix/SpoofSignaturePatchKt { public static final fun getSpoofSignaturePatch ()Lapp/revanced/patcher/patch/BytecodePatch; } +public final class app/revanced/patches/spotify/misc/fix/login/FixFacebookLoginPatchKt { + public static final fun getFixFacebookLoginPatch ()Lapp/revanced/patcher/patch/BytecodePatch; +} + public final class app/revanced/patches/spotify/misc/privacy/SanitizeSharingLinksPatchKt { public static final fun getSanitizeSharingLinksPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } From 7b182cab825ee3a4a3ca528c744c9d2a351c7cf8 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Tue, 27 May 2025 08:47:09 +0200 Subject: [PATCH 30/46] fix(Messenger): Remove outdated `Disable switching emoji to sticker` patch (#5044) --- .../inputfield/DisableSwitchingEmojiToStickerPatch.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/patches/src/main/kotlin/app/revanced/patches/messenger/inputfield/DisableSwitchingEmojiToStickerPatch.kt b/patches/src/main/kotlin/app/revanced/patches/messenger/inputfield/DisableSwitchingEmojiToStickerPatch.kt index 19f5c1251..b9e301725 100644 --- a/patches/src/main/kotlin/app/revanced/patches/messenger/inputfield/DisableSwitchingEmojiToStickerPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/messenger/inputfield/DisableSwitchingEmojiToStickerPatch.kt @@ -5,9 +5,14 @@ import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction import app.revanced.patcher.patch.bytecodePatch import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction +/** + * This patch will be deleted soon. + * + * Pull requests to update this patch to the latest app target are invited. + */ +@Deprecated("This patch only works with an outdated app target that is no longer fully supported by Facebook.") @Suppress("unused") val disableSwitchingEmojiToStickerPatch = bytecodePatch( - name = "Disable switching emoji to sticker", description = "Disables switching from emoji to sticker search mode in message input field.", ) { compatibleWith("com.facebook.orca"("439.0.0.29.119")) From 4886d47506c94b03c1f190ecc4947d3d91df6a47 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Tue, 27 May 2025 08:47:56 +0200 Subject: [PATCH 31/46] fix(Spotify Lite): Remove obsolete `Enable on demand` patch (#5046) --- .../app/revanced/patches/spotify/lite/ondemand/OnDemandPatch.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/src/main/kotlin/app/revanced/patches/spotify/lite/ondemand/OnDemandPatch.kt b/patches/src/main/kotlin/app/revanced/patches/spotify/lite/ondemand/OnDemandPatch.kt index 6444ff7fb..a624b42fd 100644 --- a/patches/src/main/kotlin/app/revanced/patches/spotify/lite/ondemand/OnDemandPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/spotify/lite/ondemand/OnDemandPatch.kt @@ -3,9 +3,9 @@ package app.revanced.patches.spotify.lite.ondemand import app.revanced.patcher.extensions.InstructionExtensions.addInstruction import app.revanced.patcher.patch.bytecodePatch +@Deprecated("Patch no longer works and will be deleted soon") @Suppress("unused") val onDemandPatch = bytecodePatch( - name = "Enable on demand", description = "Enables listening to songs on-demand, allowing to play any song from playlists, albums or artists without limitations. This does not remove ads.", ) { compatibleWith("com.spotify.lite") From c4c9983298e7d7101d44196ceffdecd41e07c79f Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 27 May 2025 06:51:05 +0000 Subject: [PATCH 32/46] chore: Release v5.25.0-dev.10 [skip ci] # [5.25.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.9...v5.25.0-dev.10) (2025-05-27) ### Bug Fixes * **Messenger:** Remove outdated `Disable switching emoji to sticker` patch ([#5044](https://github.com/ReVanced/revanced-patches/issues/5044)) ([7b182ca](https://github.com/ReVanced/revanced-patches/commit/7b182cab825ee3a4a3ca528c744c9d2a351c7cf8)) * **Spotify Lite:** Remove obsolete `Enable on demand` patch ([#5046](https://github.com/ReVanced/revanced-patches/issues/5046)) ([4886d47](https://github.com/ReVanced/revanced-patches/commit/4886d47506c94b03c1f190ecc4947d3d91df6a47)) --- CHANGELOG.md | 8 ++++++++ gradle.properties | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d2123160..ab370b286 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +# [5.25.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.9...v5.25.0-dev.10) (2025-05-27) + + +### Bug Fixes + +* **Messenger:** Remove outdated `Disable switching emoji to sticker` patch ([#5044](https://github.com/ReVanced/revanced-patches/issues/5044)) ([7b182ca](https://github.com/ReVanced/revanced-patches/commit/7b182cab825ee3a4a3ca528c744c9d2a351c7cf8)) +* **Spotify Lite:** Remove obsolete `Enable on demand` patch ([#5046](https://github.com/ReVanced/revanced-patches/issues/5046)) ([4886d47](https://github.com/ReVanced/revanced-patches/commit/4886d47506c94b03c1f190ecc4947d3d91df6a47)) + # [5.25.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.8...v5.25.0-dev.9) (2025-05-26) diff --git a/gradle.properties b/gradle.properties index 13265dbfc..36c69411e 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.25.0-dev.9 +version = 5.25.0-dev.10 From bbe79744a513c96f9016476e8435f999e94c45d7 Mon Sep 17 00:00:00 2001 From: MarcaD <152095496+MarcaDian@users.noreply.github.com> Date: Tue, 27 May 2025 10:52:01 +0300 Subject: [PATCH 33/46] feat(YouTube): Add `Disable haptic feedback` patch (#5033) --- .../patches/DisableHapticFeedbackPatch.java | 35 +++++++++ .../youtube/patches/ZoomHapticsPatch.java | 10 --- .../extension/youtube/settings/Settings.java | 5 +- patches/api/patches.api | 4 + .../DisableHapticFeedbackPatch.kt | 74 +++++++++++++++++++ .../misc/hapticfeedback/Fingerprints.kt | 23 ++++++ .../youtube/misc/zoomhaptics/Fingerprints.kt | 7 -- .../misc/zoomhaptics/ZoomHapticsPatch.kt | 51 +------------ .../resources/addresources/values/strings.xml | 21 ++++-- 9 files changed, 160 insertions(+), 70 deletions(-) create mode 100644 extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/DisableHapticFeedbackPatch.java delete mode 100644 extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ZoomHapticsPatch.java create mode 100644 patches/src/main/kotlin/app/revanced/patches/youtube/misc/hapticfeedback/DisableHapticFeedbackPatch.kt create mode 100644 patches/src/main/kotlin/app/revanced/patches/youtube/misc/hapticfeedback/Fingerprints.kt delete mode 100644 patches/src/main/kotlin/app/revanced/patches/youtube/misc/zoomhaptics/Fingerprints.kt diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/DisableHapticFeedbackPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/DisableHapticFeedbackPatch.java new file mode 100644 index 000000000..6ae49427a --- /dev/null +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/DisableHapticFeedbackPatch.java @@ -0,0 +1,35 @@ +package app.revanced.extension.youtube.patches; + +import app.revanced.extension.youtube.settings.Settings; + +@SuppressWarnings("unused") +public class DisableHapticFeedbackPatch { + + /** + * Injection point. + */ + public static boolean disableChapterVibrate() { + return Settings.DISABLE_HAPTIC_FEEDBACK_CHAPTERS.get(); + } + + /** + * Injection point. + */ + public static boolean disableSeekUndoVibrate() { + return Settings.DISABLE_HAPTIC_FEEDBACK_SEEK_UNDO.get(); + } + + /** + * Injection point. + */ + public static boolean disablePreciseSeekingVibrate() { + return Settings.DISABLE_HAPTIC_FEEDBACK_PRECISE_SEEKING.get(); + } + + /** + * Injection point. + */ + public static boolean disableZoomVibrate() { + return Settings.DISABLE_HAPTIC_FEEDBACK_ZOOM.get(); + } +} diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ZoomHapticsPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ZoomHapticsPatch.java deleted file mode 100644 index 0367eb868..000000000 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ZoomHapticsPatch.java +++ /dev/null @@ -1,10 +0,0 @@ -package app.revanced.extension.youtube.patches; - -import app.revanced.extension.youtube.settings.Settings; - -@SuppressWarnings("unused") -public class ZoomHapticsPatch { - public static boolean shouldVibrate() { - return !Settings.DISABLE_ZOOM_HAPTICS.get(); - } -} diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java index 27c6f0d00..8f7b46421 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java @@ -309,7 +309,10 @@ public class Settings extends BaseSettings { public static final BooleanSetting AUTO_REPEAT = new BooleanSetting("revanced_auto_repeat", FALSE); public static final BooleanSetting BYPASS_URL_REDIRECTS = new BooleanSetting("revanced_bypass_url_redirects", TRUE); public static final BooleanSetting CHECK_WATCH_HISTORY_DOMAIN_NAME = new BooleanSetting("revanced_check_watch_history_domain_name", TRUE, false, false); - public static final BooleanSetting DISABLE_ZOOM_HAPTICS = new BooleanSetting("revanced_disable_zoom_haptics", TRUE); + public static final BooleanSetting DISABLE_HAPTIC_FEEDBACK_CHAPTERS = new BooleanSetting("revanced_disable_haptic_feedback_chapters", FALSE); + public static final BooleanSetting DISABLE_HAPTIC_FEEDBACK_PRECISE_SEEKING = new BooleanSetting("revanced_disable_haptic_feedback_precise_seeking", FALSE); + public static final BooleanSetting DISABLE_HAPTIC_FEEDBACK_SEEK_UNDO = new BooleanSetting("revanced_disable_haptic_feedback_seek_undo", FALSE); + public static final BooleanSetting DISABLE_HAPTIC_FEEDBACK_ZOOM = new BooleanSetting("revanced_disable_haptic_feedback_zoom", FALSE); public static final BooleanSetting EXTERNAL_BROWSER = new BooleanSetting("revanced_external_browser", TRUE, true); public static final BooleanSetting REMOVE_TRACKING_QUERY_PARAMETER = new BooleanSetting("revanced_remove_tracking_query_parameter", TRUE); public static final BooleanSetting SPOOF_DEVICE_DIMENSIONS = new BooleanSetting("revanced_spoof_device_dimensions", FALSE, true, diff --git a/patches/api/patches.api b/patches/api/patches.api index 9bed69e1e..09dbd1698 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -1399,6 +1399,10 @@ public final class app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatchKt { public static final fun getGmsCoreSupportPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } +public final class app/revanced/patches/youtube/misc/hapticfeedback/DisableHapticFeedbackPatchKt { + public static final fun getDisableHapticFeedbackPatch ()Lapp/revanced/patcher/patch/BytecodePatch; +} + public final class app/revanced/patches/youtube/misc/imageurlhook/CronetImageUrlHookKt { public static final fun addImageUrlErrorCallbackHook (Ljava/lang/String;)V public static final fun addImageUrlHook (Ljava/lang/String;Z)V diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/hapticfeedback/DisableHapticFeedbackPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/hapticfeedback/DisableHapticFeedbackPatch.kt new file mode 100644 index 000000000..977226560 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/hapticfeedback/DisableHapticFeedbackPatch.kt @@ -0,0 +1,74 @@ +package app.revanced.patches.youtube.misc.hapticfeedback + +import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels +import app.revanced.patcher.extensions.InstructionExtensions.getInstruction +import app.revanced.patcher.patch.bytecodePatch +import app.revanced.patcher.util.smali.ExternalLabel +import app.revanced.patches.all.misc.resources.addResources +import app.revanced.patches.all.misc.resources.addResourcesPatch +import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference +import app.revanced.patches.shared.misc.settings.preference.SwitchPreference +import app.revanced.patches.youtube.misc.settings.PreferenceScreen +import app.revanced.patches.youtube.misc.settings.settingsPatch + +private const val EXTENSION_CLASS_DESCRIPTOR = + "Lapp/revanced/extension/youtube/patches/DisableHapticFeedbackPatch;" + +@Suppress("unused") +val disableHapticFeedbackPatch = bytecodePatch( + name = "Disable haptic feedback", + description = "Adds an option to disable haptic feedback in the player for various actions.", +) { + dependsOn( + settingsPatch, + addResourcesPatch, + ) + + compatibleWith( + "com.google.android.youtube"( + "19.16.39", + "19.25.37", + "19.34.42", + "19.43.41", + "19.47.53", + "20.07.39", + "20.12.46", + ) + ) + + execute { + addResources("youtube", "misc.hapticfeedback.disableHapticFeedbackPatch") + + PreferenceScreen.PLAYER.addPreferences( + PreferenceScreenPreference( + "revanced_disable_haptic_feedback", + preferences = setOf( + SwitchPreference("revanced_disable_haptic_feedback_chapters"), + SwitchPreference("revanced_disable_haptic_feedback_precise_seeking"), + SwitchPreference("revanced_disable_haptic_feedback_seek_undo"), + SwitchPreference("revanced_disable_haptic_feedback_zoom"), + ) + ) + ) + + arrayOf( + markerHapticsFingerprint to "disableChapterVibrate", + scrubbingHapticsFingerprint to "disablePreciseSeekingVibrate", + seekUndoHapticsFingerprint to "disableSeekUndoVibrate", + zoomHapticsFingerprint to "disableZoomVibrate" + ).forEach { (fingerprint, methodName) -> + fingerprint.method.apply { + addInstructionsWithLabels( + 0, + """ + invoke-static {}, $EXTENSION_CLASS_DESCRIPTOR->$methodName()Z + move-result v0 + if-eqz v0, :vibrate + return-void + """, + ExternalLabel("vibrate", getInstruction(0)) + ) + } + } + } +} diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/hapticfeedback/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/hapticfeedback/Fingerprints.kt new file mode 100644 index 000000000..13efc4693 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/hapticfeedback/Fingerprints.kt @@ -0,0 +1,23 @@ +package app.revanced.patches.youtube.misc.hapticfeedback + +import app.revanced.patcher.fingerprint + +internal val markerHapticsFingerprint = fingerprint { + returns("V") + strings("Failed to execute markers haptics vibrate.") +} + +internal val scrubbingHapticsFingerprint = fingerprint { + returns("V") + strings("Failed to haptics vibrate for fine scrubbing.") +} + +internal val seekUndoHapticsFingerprint = fingerprint { + returns("V") + strings("Failed to execute seek undo haptics vibrate.") +} + +internal val zoomHapticsFingerprint = fingerprint { + returns("V") + strings("Failed to haptics vibrate for video zoom") +} diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/zoomhaptics/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/zoomhaptics/Fingerprints.kt deleted file mode 100644 index 65cb70769..000000000 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/zoomhaptics/Fingerprints.kt +++ /dev/null @@ -1,7 +0,0 @@ -package app.revanced.patches.youtube.misc.zoomhaptics - -import app.revanced.patcher.fingerprint - -internal val zoomHapticsFingerprint = fingerprint { - strings("Failed to haptics vibrate for video zoom") -} diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/zoomhaptics/ZoomHapticsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/zoomhaptics/ZoomHapticsPatch.kt index 0e961dfeb..44cde6002 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/zoomhaptics/ZoomHapticsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/zoomhaptics/ZoomHapticsPatch.kt @@ -1,54 +1,11 @@ package app.revanced.patches.youtube.misc.zoomhaptics -import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels -import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patcher.patch.bytecodePatch -import app.revanced.patcher.util.smali.ExternalLabel -import app.revanced.patches.all.misc.resources.addResources -import app.revanced.patches.all.misc.resources.addResourcesPatch -import app.revanced.patches.shared.misc.settings.preference.SwitchPreference -import app.revanced.patches.youtube.misc.settings.PreferenceScreen -import app.revanced.patches.youtube.misc.settings.settingsPatch +import app.revanced.patches.youtube.misc.hapticfeedback.disableHapticFeedbackPatch +@Deprecated("Superseded by disableHapticFeedbackPatch", ReplaceWith("disableHapticFeedbackPatch")) val zoomHapticsPatch = bytecodePatch( - name = "Disable zoom haptics", description = "Adds an option to disable haptics when zooming.", ) { - dependsOn( - settingsPatch, - addResourcesPatch, - ) - - compatibleWith( - "com.google.android.youtube"( - "19.16.39", - "19.25.37", - "19.34.42", - "19.43.41", - "19.47.53", - "20.07.39", - "20.12.46", - ) - ) - - execute { - addResources("youtube", "misc.zoomhaptics.zoomHapticsPatch") - - PreferenceScreen.MISC.addPreferences( - SwitchPreference("revanced_disable_zoom_haptics"), - ) - - zoomHapticsFingerprint.method.apply { - addInstructionsWithLabels( - 0, - """ - invoke-static { }, Lapp/revanced/extension/youtube/patches/ZoomHapticsPatch;->shouldVibrate()Z - move-result v0 - if-nez v0, :vibrate - return-void - """, - ExternalLabel("vibrate", getInstruction(0)), - ) - } - } -} + dependsOn(disableHapticFeedbackPatch) +} \ No newline at end of file diff --git a/patches/src/main/resources/addresources/values/strings.xml b/patches/src/main/resources/addresources/values/strings.xml index d59675088..86561c683 100644 --- a/patches/src/main/resources/addresources/values/strings.xml +++ b/patches/src/main/resources/addresources/values/strings.xml @@ -1390,6 +1390,22 @@ Enabling this can unlock higher video qualities" GmsCore Settings Settings for GmsCore + + Haptic feedback + Change haptic feedback + Disable chapters haptics + Chapters haptics is disabled + Chapters haptics is enabled + Disable precise seeking haptics + Precise seeking haptics is disabled + Precise seeking haptics is enabled + Disable seek undo haptics + Seek undo haptics is disabled + Seek undo haptics is enabled + Disable zoom haptics + Zoom haptics is disabled + Zoom haptics is enabled + If you recently changed your account login details, then uninstall and reinstall MicroG. @@ -1408,11 +1424,6 @@ Enabling this can unlock higher video qualities" Tracking query parameter is removed from links Tracking query parameter is not removed from links - - Disable zoom haptics - Haptics are disabled - Haptics are enabled - Force original audio language Using original audio language From 1ec4a88464a2a2810c02cf072950b618d183779a Mon Sep 17 00:00:00 2001 From: MarcaD <152095496+MarcaDian@users.noreply.github.com> Date: Tue, 27 May 2025 10:52:24 +0300 Subject: [PATCH 34/46] feat(YouTube - Enable debugging): Add settings menu to share debug logs (#5021) Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> --- .../app/revanced/extension/shared/Logger.java | 214 +++++++++++------- .../app/revanced/extension/shared/Utils.java | 51 +++-- .../preference/ImportExportPreference.java | 2 +- .../settings/preference/LogBufferManager.java | 113 +++++++++ .../preference/SortedListPreference.java | 3 +- .../tiktok/spoof/sim/SpoofSimPatch.java | 4 +- .../extension/youtube/settings/Settings.java | 7 +- .../preference/ClearLogBufferPreference.java | 34 +++ .../ExportLogToClipboardPreference.java | 34 +++ .../ui/SponsorBlockPreferenceGroup.java | 12 +- .../misc/debugging/EnableDebuggingPatch.kt | 14 +- .../resources/addresources/values/strings.xml | 14 ++ 12 files changed, 390 insertions(+), 112 deletions(-) create mode 100644 extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/LogBufferManager.java create mode 100644 extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ClearLogBufferPreference.java create mode 100644 extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ExportLogToClipboardPreference.java diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/Logger.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/Logger.java index 9df38ac99..83d0c7358 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/Logger.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/Logger.java @@ -1,15 +1,26 @@ package app.revanced.extension.shared; +import static app.revanced.extension.shared.settings.BaseSettings.DEBUG; +import static app.revanced.extension.shared.settings.BaseSettings.DEBUG_STACKTRACE; +import static app.revanced.extension.shared.settings.BaseSettings.DEBUG_TOAST_ON_ERROR; + import android.util.Log; + import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import app.revanced.extension.shared.settings.BaseSettings; import java.io.PrintWriter; import java.io.StringWriter; -import static app.revanced.extension.shared.settings.BaseSettings.*; +import app.revanced.extension.shared.settings.BaseSettings; +import app.revanced.extension.shared.settings.preference.LogBufferManager; +/** + * ReVanced specific logger. Logging is done to standard device log (accessible thru ADB), + * and additionally accessible thru {@link LogBufferManager}. + * + * All methods are thread safe. + */ public class Logger { /** @@ -17,99 +28,158 @@ public class Logger { */ @FunctionalInterface public interface LogMessage { + /** + * @return Logger string message. This method is only called if logging is enabled. + */ @NonNull String buildMessageString(); + } - /** - * @return For outer classes, this returns {@link Class#getSimpleName()}. - * For static, inner, or anonymous classes, this returns the simple name of the enclosing class. - *
- * For example, each of these classes return 'SomethingView': - * - * com.company.SomethingView - * com.company.SomethingView$StaticClass - * com.company.SomethingView$1 - * - */ - private String findOuterClassSimpleName() { - var selfClass = this.getClass(); + private enum LogLevel { + DEBUG, + INFO, + ERROR + } - String fullClassName = selfClass.getName(); - final int dollarSignIndex = fullClassName.indexOf('$'); - if (dollarSignIndex < 0) { - return selfClass.getSimpleName(); // Already an outer class. + private static final String REVANCED_LOG_TAG = "revanced"; + + private static final String LOGGER_CLASS_NAME = Logger.class.getName(); + + /** + * @return For outer classes, this returns {@link Class#getSimpleName()}. + * For static, inner, or anonymous classes, this returns the simple name of the enclosing class. + *
+ * For example, each of these classes returns 'SomethingView': + * + * com.company.SomethingView + * com.company.SomethingView$StaticClass + * com.company.SomethingView$1 + * + */ + private static String getOuterClassSimpleName(Object obj) { + Class logClass = obj.getClass(); + String fullClassName = logClass.getName(); + final int dollarSignIndex = fullClassName.indexOf('$'); + if (dollarSignIndex < 0) { + return logClass.getSimpleName(); // Already an outer class. + } + + // Class is inner, static, or anonymous. + // Parse the simple name full name. + // A class with no package returns index of -1, but incrementing gives index zero which is correct. + final int simpleClassNameStartIndex = fullClassName.lastIndexOf('.') + 1; + return fullClassName.substring(simpleClassNameStartIndex, dollarSignIndex); + } + + /** + * Internal method to handle logging to Android Log and {@link LogBufferManager}. + * Appends the log message, stack trace (if enabled), and exception (if present) to logBuffer + * with class name but without 'revanced:' prefix. + * + * @param logLevel The log level. + * @param message Log message object. + * @param ex Optional exception. + * @param includeStackTrace If the current stack should be included. + * @param showToast If a toast is to be shown. + */ + private static void logInternal(LogLevel logLevel, LogMessage message, @Nullable Throwable ex, + boolean includeStackTrace, boolean showToast) { + // It's very important that no Settings are used in this method, + // as this code is used when a context is not set and thus referencing + // a setting will crash the app. + String messageString = message.buildMessageString(); + String className = getOuterClassSimpleName(message); + + StringBuilder logBuilder = new StringBuilder(className.length() + 2 + + messageString.length()); + logBuilder.append(className).append(": ").append(messageString); + + String toastMessage = showToast ? logBuilder.toString() : null; + + // Append exception message if present. + if (ex != null) { + var exceptionMessage = ex.getMessage(); + if (exceptionMessage != null) { + logBuilder.append("\nException: ").append(exceptionMessage); } + } - // Class is inner, static, or anonymous. - // Parse the simple name full name. - // A class with no package returns index of -1, but incrementing gives index zero which is correct. - final int simpleClassNameStartIndex = fullClassName.lastIndexOf('.') + 1; - return fullClassName.substring(simpleClassNameStartIndex, dollarSignIndex); + if (includeStackTrace) { + var sw = new StringWriter(); + new Throwable().printStackTrace(new PrintWriter(sw)); + String stackTrace = sw.toString(); + // Remove the stacktrace elements of this class. + final int loggerIndex = stackTrace.lastIndexOf(LOGGER_CLASS_NAME); + final int loggerBegins = stackTrace.indexOf('\n', loggerIndex); + logBuilder.append(stackTrace, loggerBegins, stackTrace.length()); + } + + String logText = logBuilder.toString(); + LogBufferManager.appendToLogBuffer(logText); + + switch (logLevel) { + case DEBUG: + if (ex == null) Log.d(REVANCED_LOG_TAG, logText); + else Log.d(REVANCED_LOG_TAG, logText, ex); + break; + case INFO: + if (ex == null) Log.i(REVANCED_LOG_TAG, logText); + else Log.i(REVANCED_LOG_TAG, logText, ex); + break; + case ERROR: + if (ex == null) Log.e(REVANCED_LOG_TAG, logText); + else Log.e(REVANCED_LOG_TAG, logText, ex); + break; + } + + if (toastMessage != null) { + Utils.showToastLong(toastMessage); } } - private static final String REVANCED_LOG_PREFIX = "revanced: "; - /** * Logs debug messages under the outer class name of the code calling this method. - * Whenever possible, the log string should be constructed entirely inside {@link LogMessage#buildMessageString()} - * so the performance cost of building strings is paid only if {@link BaseSettings#DEBUG} is enabled. + *

+ * Whenever possible, the log string should be constructed entirely inside + * {@link LogMessage#buildMessageString()} so the performance cost of + * building strings is paid only if {@link BaseSettings#DEBUG} is enabled. */ - public static void printDebug(@NonNull LogMessage message) { + public static void printDebug(LogMessage message) { printDebug(message, null); } /** * Logs debug messages under the outer class name of the code calling this method. - * Whenever possible, the log string should be constructed entirely inside {@link LogMessage#buildMessageString()} - * so the performance cost of building strings is paid only if {@link BaseSettings#DEBUG} is enabled. + *

+ * Whenever possible, the log string should be constructed entirely inside + * {@link LogMessage#buildMessageString()} so the performance cost of + * building strings is paid only if {@link BaseSettings#DEBUG} is enabled. */ - public static void printDebug(@NonNull LogMessage message, @Nullable Exception ex) { + public static void printDebug(LogMessage message, @Nullable Exception ex) { if (DEBUG.get()) { - String logMessage = message.buildMessageString(); - String logTag = REVANCED_LOG_PREFIX + message.findOuterClassSimpleName(); - - if (DEBUG_STACKTRACE.get()) { - var builder = new StringBuilder(logMessage); - var sw = new StringWriter(); - new Throwable().printStackTrace(new PrintWriter(sw)); - - builder.append('\n').append(sw); - logMessage = builder.toString(); - } - - if (ex == null) { - Log.d(logTag, logMessage); - } else { - Log.d(logTag, logMessage, ex); - } + logInternal(LogLevel.DEBUG, message, ex, DEBUG_STACKTRACE.get(), false); } } /** * Logs information messages using the outer class name of the code calling this method. */ - public static void printInfo(@NonNull LogMessage message) { + public static void printInfo(LogMessage message) { printInfo(message, null); } /** * Logs information messages using the outer class name of the code calling this method. */ - public static void printInfo(@NonNull LogMessage message, @Nullable Exception ex) { - String logTag = REVANCED_LOG_PREFIX + message.findOuterClassSimpleName(); - String logMessage = message.buildMessageString(); - if (ex == null) { - Log.i(logTag, logMessage); - } else { - Log.i(logTag, logMessage, ex); - } + public static void printInfo(LogMessage message, @Nullable Exception ex) { + logInternal(LogLevel.INFO, message, ex, DEBUG_STACKTRACE.get(), false); } /** * Logs exceptions under the outer class name of the code calling this method. + * Appends the log message, exception (if present), and toast message (if enabled) to logBuffer. */ - public static void printException(@NonNull LogMessage message) { + public static void printException(LogMessage message) { printException(message, null); } @@ -122,35 +192,23 @@ public class Logger { * @param message log message * @param ex exception (optional) */ - public static void printException(@NonNull LogMessage message, @Nullable Throwable ex) { - String messageString = message.buildMessageString(); - String outerClassSimpleName = message.findOuterClassSimpleName(); - String logMessage = REVANCED_LOG_PREFIX + outerClassSimpleName; - if (ex == null) { - Log.e(logMessage, messageString); - } else { - Log.e(logMessage, messageString, ex); - } - if (DEBUG_TOAST_ON_ERROR.get()) { - Utils.showToastLong(outerClassSimpleName + ": " + messageString); - } + public static void printException(LogMessage message, @Nullable Throwable ex) { + logInternal(LogLevel.ERROR, message, ex, DEBUG_STACKTRACE.get(), DEBUG_TOAST_ON_ERROR.get()); } /** * Logging to use if {@link BaseSettings#DEBUG} or {@link Utils#getContext()} may not be initialized. * Normally this method should not be used. */ - public static void initializationInfo(@NonNull Class callingClass, @NonNull String message) { - Log.i(REVANCED_LOG_PREFIX + callingClass.getSimpleName(), message); + public static void initializationInfo(LogMessage message) { + logInternal(LogLevel.INFO, message, null, false, false); } /** * Logging to use if {@link BaseSettings#DEBUG} or {@link Utils#getContext()} may not be initialized. * Normally this method should not be used. */ - public static void initializationException(@NonNull Class callingClass, @NonNull String message, - @Nullable Exception ex) { - Log.e(REVANCED_LOG_PREFIX + callingClass.getSimpleName(), message, ex); + public static void initializationException(LogMessage message, @Nullable Exception ex) { + logInternal(LogLevel.ERROR, message, ex, false, false); } - -} \ No newline at end of file +} diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/Utils.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/Utils.java index dead738b4..111a0dd77 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/Utils.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/Utils.java @@ -363,15 +363,17 @@ public class Utils { public static Context getContext() { if (context == null) { - Logger.initializationException(Utils.class, "Context is not set by extension hook, returning null", null); + Logger.initializationException(() -> "Context is not set by extension hook, returning null", null); } return context; } public static void setContext(Context appContext) { + // Intentionally use logger before context is set, + // to expose any bugs in the 'no context available' logger method. + Logger.initializationInfo(() -> "Set context: " + appContext); // Must initially set context to check the app language. context = appContext; - Logger.initializationInfo(Utils.class, "Set context: " + appContext); AppLanguage language = BaseSettings.REVANCED_LANGUAGE.get(); if (language != AppLanguage.DEFAULT) { @@ -383,8 +385,9 @@ public class Utils { } } - public static void setClipboard(@NonNull String text) { - android.content.ClipboardManager clipboard = (android.content.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); + public static void setClipboard(CharSequence text) { + android.content.ClipboardManager clipboard = (android.content.ClipboardManager) context + .getSystemService(Context.CLIPBOARD_SERVICE); android.content.ClipData clip = android.content.ClipData.newPlainText("ReVanced", text); clipboard.setPrimaryClip(clip); } @@ -548,14 +551,15 @@ public class Utils { private static void showToast(@NonNull String messageToToast, int toastDuration) { Objects.requireNonNull(messageToToast); runOnMainThreadNowOrLater(() -> { - if (context == null) { - Logger.initializationException(Utils.class, "Cannot show toast (context is null): " + messageToToast, null); - } else { - Logger.printDebug(() -> "Showing toast: " + messageToToast); - Toast.makeText(context, messageToToast, toastDuration).show(); - } - } - ); + Context currentContext = context; + + if (currentContext == null) { + Logger.initializationException(() -> "Cannot show toast (context is null): " + messageToToast, null); + } else { + Logger.printDebug(() -> "Showing toast: " + messageToToast); + Toast.makeText(currentContext, messageToToast, toastDuration).show(); + } + }); } public static boolean isDarkModeEnabled() { @@ -579,7 +583,7 @@ public class Utils { } /** - * Automatically logs any exceptions the runnable throws + * Automatically logs any exceptions the runnable throws. */ public static void runOnMainThreadDelayed(@NonNull Runnable runnable, long delayMillis) { Runnable loggingRunnable = () -> { @@ -605,14 +609,14 @@ public class Utils { } /** - * @return if the calling thread is on the main thread + * @return if the calling thread is on the main thread. */ public static boolean isCurrentlyOnMainThread() { return Looper.getMainLooper().isCurrentThread(); } /** - * @throws IllegalStateException if the calling thread is _off_ the main thread + * @throws IllegalStateException if the calling thread is _off_ the main thread. */ public static void verifyOnMainThread() throws IllegalStateException { if (!isCurrentlyOnMainThread()) { @@ -621,7 +625,7 @@ public class Utils { } /** - * @throws IllegalStateException if the calling thread is _on_ the main thread + * @throws IllegalStateException if the calling thread is _on_ the main thread. */ public static void verifyOffMainThread() throws IllegalStateException { if (isCurrentlyOnMainThread()) { @@ -635,6 +639,11 @@ public class Utils { OTHER, } + /** + * Calling extension code must ensure the un-patched app has the permission + * android.permission.ACCESS_NETWORK_STATE, otherwise the app will crash + * if this method is used. + */ public static boolean isNetworkConnected() { NetworkType networkType = getNetworkType(); return networkType == NetworkType.MOBILE @@ -642,10 +651,11 @@ public class Utils { } /** - * Calling extension code must ensure the target app has the - * ACCESS_NETWORK_STATE app manifest permission. + * Calling extension code must ensure the un-patched app has the permission + * android.permission.ACCESS_NETWORK_STATE, otherwise the app will crash + * if this method is used. */ - @SuppressWarnings({"deprecation", "MissingPermission"}) + @SuppressLint({"MissingPermission", "deprecation"}) public static NetworkType getNetworkType() { Context networkContext = getContext(); if (networkContext == null) { @@ -782,8 +792,9 @@ public class Utils { preferences.add(new Pair<>(sortValue, preference)); } + //noinspection ComparatorCombinators Collections.sort(preferences, (pair1, pair2) - -> pair1.first.compareToIgnoreCase(pair2.first)); + -> pair1.first.compareTo(pair2.first)); int index = 0; for (Pair pair : preferences) { diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/ImportExportPreference.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/ImportExportPreference.java index a1d051c2b..20d2510e2 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/ImportExportPreference.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/ImportExportPreference.java @@ -70,7 +70,7 @@ public class ImportExportPreference extends EditTextPreference implements Prefer // Show the user the settings in JSON format. builder.setNeutralButton(str("revanced_settings_import_copy"), (dialog, which) -> { - Utils.setClipboard(getEditText().getText().toString()); + Utils.setClipboard(getEditText().getText()); }).setPositiveButton(str("revanced_settings_import"), (dialog, which) -> { importSettings(builder.getContext(), getEditText().getText().toString()); }); diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/LogBufferManager.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/LogBufferManager.java new file mode 100644 index 000000000..4bd54c65b --- /dev/null +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/LogBufferManager.java @@ -0,0 +1,113 @@ +package app.revanced.extension.shared.settings.preference; + +import static app.revanced.extension.shared.StringRef.str; + +import java.util.Deque; +import java.util.Objects; +import java.util.concurrent.ConcurrentLinkedDeque; +import java.util.concurrent.atomic.AtomicInteger; + +import app.revanced.extension.shared.Logger; +import app.revanced.extension.shared.Utils; +import app.revanced.extension.shared.settings.BaseSettings; + +/** + * Manages a buffer for storing debug logs from {@link Logger}. + * Stores just under 1MB of the most recent log data. + * + * All methods are thread-safe. + */ +public final class LogBufferManager { + /** Maximum byte size of all buffer entries. Must be less than Android's 1 MB Binder transaction limit. */ + private static final int BUFFER_MAX_BYTES = 900_000; + /** Limit number of log lines. */ + private static final int BUFFER_MAX_SIZE = 10_000; + + private static final Deque logBuffer = new ConcurrentLinkedDeque<>(); + private static final AtomicInteger logBufferByteSize = new AtomicInteger(); + + /** + * Appends a log message to the internal buffer if debugging is enabled. + * The buffer is limited to approximately {@link #BUFFER_MAX_BYTES} or {@link #BUFFER_MAX_SIZE} + * to prevent excessive memory usage. + * + * @param message The log message to append. + */ + public static void appendToLogBuffer(String message) { + Objects.requireNonNull(message); + + // It's very important that no Settings are used in this method, + // as this code is used when a context is not set and thus referencing + // a setting will crash the app. + logBuffer.addLast(message); + int newSize = logBufferByteSize.addAndGet(message.length()); + + // Remove oldest entries if over the log size limits. + while (newSize > BUFFER_MAX_BYTES || logBuffer.size() > BUFFER_MAX_SIZE) { + String removed = logBuffer.pollFirst(); + if (removed == null) { + // Thread race of two different calls to this method, and the other thread won. + return; + } + + newSize = logBufferByteSize.addAndGet(-removed.length()); + } + } + + /** + * Exports all logs from the internal buffer to the clipboard. + * Displays a toast with the result. + */ + public static void exportToClipboard() { + try { + if (!BaseSettings.DEBUG.get()) { + Utils.showToastShort(str("revanced_debug_logs_disabled")); + return; + } + + if (logBuffer.isEmpty()) { + Utils.showToastShort(str("revanced_debug_logs_none_found")); + clearLogBufferData(); // Clear toast log entry that was just created. + return; + } + + // Most (but not all) Android 13+ devices always show a "copied to clipboard" toast + // and there is no way to programmatically detect if a toast will show or not. + // Show a toast even if using Android 13+, but show ReVanced toast first (before copying to clipboard). + Utils.showToastShort(str("revanced_debug_logs_copied_to_clipboard")); + + Utils.setClipboard(String.join("\n", logBuffer)); + } catch (Exception ex) { + // Handle security exception if clipboard access is denied. + String errorMessage = String.format(str("revanced_debug_logs_failed_to_export"), ex.getMessage()); + Utils.showToastLong(errorMessage); + Logger.printDebug(() -> errorMessage, ex); + } + } + + private static void clearLogBufferData() { + // Cannot simply clear the log buffer because there is no + // write lock for both the deque and the atomic int. + // Instead pop off log entries and decrement the size one by one. + while (!logBuffer.isEmpty()) { + String removed = logBuffer.pollFirst(); + if (removed != null) { + logBufferByteSize.addAndGet(-removed.length()); + } + } + } + + /** + * Clears the internal log buffer and displays a toast with the result. + */ + public static void clearLogBuffer() { + if (!BaseSettings.DEBUG.get()) { + Utils.showToastShort(str("revanced_debug_logs_disabled")); + return; + } + + // Show toast before clearing, otherwise toast log will still remain. + Utils.showToastShort(str("revanced_debug_logs_clear_toast")); + clearLogBufferData(); + } +} diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/SortedListPreference.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/SortedListPreference.java index 469319539..b1de29ee2 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/SortedListPreference.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/SortedListPreference.java @@ -60,8 +60,9 @@ public class SortedListPreference extends ListPreference { } } + //noinspection ComparatorCombinators Collections.sort(lastEntries, (pair1, pair2) - -> pair1.first.compareToIgnoreCase(pair2.first)); + -> pair1.first.compareTo(pair2.first)); CharSequence[] sortedEntries = new CharSequence[entrySize]; CharSequence[] sortedEntryValues = new CharSequence[entrySize]; diff --git a/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/spoof/sim/SpoofSimPatch.java b/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/spoof/sim/SpoofSimPatch.java index d2557e05c..d3e1baf7b 100644 --- a/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/spoof/sim/SpoofSimPatch.java +++ b/extensions/tiktok/src/main/java/app/revanced/extension/tiktok/spoof/sim/SpoofSimPatch.java @@ -16,9 +16,7 @@ public class SpoofSimPatch { return false; } - Logger.initializationException(SpoofSimPatch.class, - "Context is not yet set, cannot spoof: " + fieldSpoofed, null); - + Logger.initializationException(() -> "Context is not yet set, cannot spoof: " + fieldSpoofed, null); return true; } diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java index 8f7b46421..b7d1e2aee 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java @@ -317,11 +317,8 @@ public class Settings extends BaseSettings { public static final BooleanSetting REMOVE_TRACKING_QUERY_PARAMETER = new BooleanSetting("revanced_remove_tracking_query_parameter", TRUE); public static final BooleanSetting SPOOF_DEVICE_DIMENSIONS = new BooleanSetting("revanced_spoof_device_dimensions", FALSE, true, "revanced_spoof_device_dimensions_user_dialog_message"); - /** - * When enabled, share the debug logs with care. - * The buffer contains select user data, including the client ip address and information that could identify the end user. - */ - public static final BooleanSetting DEBUG_PROTOBUFFER = new BooleanSetting("revanced_debug_protobuffer", FALSE, parent(BaseSettings.DEBUG)); + public static final BooleanSetting DEBUG_PROTOBUFFER = new BooleanSetting("revanced_debug_protobuffer", FALSE, false, + "revanced_debug_protobuffer_user_dialog_message", parent(BaseSettings.DEBUG)); // Swipe controls public static final BooleanSetting SWIPE_CHANGE_VIDEO = new BooleanSetting("revanced_swipe_change_video", FALSE, true); diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ClearLogBufferPreference.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ClearLogBufferPreference.java new file mode 100644 index 000000000..109c6c8e7 --- /dev/null +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ClearLogBufferPreference.java @@ -0,0 +1,34 @@ +package app.revanced.extension.youtube.settings.preference; + +import android.content.Context; +import android.util.AttributeSet; +import android.preference.Preference; +import app.revanced.extension.shared.settings.preference.LogBufferManager; + +/** + * A custom preference that clears the ReVanced debug log buffer when clicked. + * Invokes the {@link LogBufferManager#clearLogBuffer} method. + */ +@SuppressWarnings("unused") +public class ClearLogBufferPreference extends Preference { + + { + setOnPreferenceClickListener(pref -> { + LogBufferManager.clearLogBuffer(); + return true; + }); + } + + public ClearLogBufferPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } + public ClearLogBufferPreference(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + public ClearLogBufferPreference(Context context, AttributeSet attrs) { + super(context, attrs); + } + public ClearLogBufferPreference(Context context) { + super(context); + } +} diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ExportLogToClipboardPreference.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ExportLogToClipboardPreference.java new file mode 100644 index 000000000..fac1cfa79 --- /dev/null +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/preference/ExportLogToClipboardPreference.java @@ -0,0 +1,34 @@ +package app.revanced.extension.youtube.settings.preference; + +import android.content.Context; +import android.util.AttributeSet; +import android.preference.Preference; +import app.revanced.extension.shared.settings.preference.LogBufferManager; + +/** + * A custom preference that triggers exporting ReVanced debug logs to the clipboard when clicked. + * Invokes the {@link LogBufferManager#exportToClipboard} method. + */ +@SuppressWarnings({"deprecation", "unused"}) +public class ExportLogToClipboardPreference extends Preference { + + { + setOnPreferenceClickListener(pref -> { + LogBufferManager.exportToClipboard(); + return true; + }); + } + + public ExportLogToClipboardPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } + public ExportLogToClipboardPreference(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + public ExportLogToClipboardPreference(Context context, AttributeSet attrs) { + super(context, attrs); + } + public ExportLogToClipboardPreference(Context context) { + super(context); + } +} diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/SponsorBlockPreferenceGroup.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/SponsorBlockPreferenceGroup.java index 1cf2e0444..1b5e0aae5 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/SponsorBlockPreferenceGroup.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/ui/SponsorBlockPreferenceGroup.java @@ -376,7 +376,11 @@ public class SponsorBlockPreferenceGroup extends PreferenceGroup { Utils.setEditTextDialogTheme(builder); builder.setNeutralButton(str("revanced_sb_settings_copy"), (dialog, which) -> { - Utils.setClipboard(getEditText().getText().toString()); + try { + Utils.setClipboard(getEditText().getText()); + } catch (Exception ex) { + Logger.printException(() -> "Copy settings failure", ex); + } }); } }; @@ -433,7 +437,11 @@ public class SponsorBlockPreferenceGroup extends PreferenceGroup { Utils.setEditTextDialogTheme(builder); builder.setNeutralButton(str("revanced_sb_settings_copy"), (dialog, which) -> { - Utils.setClipboard(getEditText().getText().toString()); + try { + Utils.setClipboard(getEditText().getText()); + } catch (Exception ex) { + Logger.printException(() -> "Copy settings failure", ex); + } }); } }; 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 f4facb097..d991b2d4b 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 @@ -5,6 +5,7 @@ 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.settings.preference.SwitchPreference @@ -23,7 +24,7 @@ private const val EXTENSION_CLASS_DESCRIPTOR = val enableDebuggingPatch = bytecodePatch( name = "Enable debugging", - description = "Adds options for debugging.", + description = "Adds options for debugging and exporting ReVanced logs to the clipboard.", ) { dependsOn( sharedExtensionPatch, @@ -56,6 +57,16 @@ val enableDebuggingPatch = bytecodePatch( 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.youtube.settings.preference.ExportLogToClipboardPreference", + selectable = true, + ), + NonInteractivePreference( + "revanced_debug_logs_clear_buffer", + tag = "app.revanced.extension.youtube.settings.preference.ClearLogBufferPreference", + selectable = true, + ), ), ), ) @@ -107,7 +118,6 @@ val enableDebuggingPatch = bytecodePatch( return-wide v0 """ ) - } experimentalStringFeatureFlagFingerprint.match( diff --git a/patches/src/main/resources/addresources/values/strings.xml b/patches/src/main/resources/addresources/values/strings.xml index 86561c683..79a52e628 100644 --- a/patches/src/main/resources/addresources/values/strings.xml +++ b/patches/src/main/resources/addresources/values/strings.xml @@ -175,6 +175,11 @@ Tap the continue button and allow optimization changes." Log protocol buffer Debug logs include proto buffer Debug logs do not include proto buffer + "Enabling this setting will log additional layout data, including on-screen text for some UI components. + +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 @@ -184,6 +189,15 @@ Tap the continue button and allow optimization changes." "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 + No logs found + Logs copied + Failed to export logs: $s + Clear debug logs + Clears all stored ReVanced debug logs + Logs cleared Hide album cards From d4827e118f207414210865486bf7209ea4daf0b9 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 27 May 2025 07:55:39 +0000 Subject: [PATCH 35/46] chore: Release v5.25.0-dev.11 [skip ci] # [5.25.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.10...v5.25.0-dev.11) (2025-05-27) ### Features * **YouTube - Enable debugging:** Add settings menu to share debug logs ([#5021](https://github.com/ReVanced/revanced-patches/issues/5021)) ([1ec4a88](https://github.com/ReVanced/revanced-patches/commit/1ec4a88464a2a2810c02cf072950b618d183779a)) * **YouTube:** Add `Disable haptic feedback` patch ([#5033](https://github.com/ReVanced/revanced-patches/issues/5033)) ([bbe7974](https://github.com/ReVanced/revanced-patches/commit/bbe79744a513c96f9016476e8435f999e94c45d7)) --- CHANGELOG.md | 8 ++++++++ gradle.properties | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab370b286..213294395 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +# [5.25.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.10...v5.25.0-dev.11) (2025-05-27) + + +### Features + +* **YouTube - Enable debugging:** Add settings menu to share debug logs ([#5021](https://github.com/ReVanced/revanced-patches/issues/5021)) ([1ec4a88](https://github.com/ReVanced/revanced-patches/commit/1ec4a88464a2a2810c02cf072950b618d183779a)) +* **YouTube:** Add `Disable haptic feedback` patch ([#5033](https://github.com/ReVanced/revanced-patches/issues/5033)) ([bbe7974](https://github.com/ReVanced/revanced-patches/commit/bbe79744a513c96f9016476e8435f999e94c45d7)) + # [5.25.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.9...v5.25.0-dev.10) (2025-05-27) diff --git a/gradle.properties b/gradle.properties index 36c69411e..379aedf3d 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.25.0-dev.10 +version = 5.25.0-dev.11 From 80f50e8c50ca6a8366b7fd7b01459fb16fa1074a Mon Sep 17 00:00:00 2001 From: MarcaD <152095496+MarcaDian@users.noreply.github.com> Date: Wed, 28 May 2025 12:54:28 +0300 Subject: [PATCH 36/46] feat(YouTube - Swipe controls): Add separate color settings for the brightness and volume bars (#5043) --- .../extension/youtube/settings/Settings.java | 12 +- .../SwipeControlsConfigurationProvider.kt | 124 +++++++++--------- .../views/SwipeControlsOverlayLayout.kt | 123 ++++++++++------- .../swipecontrols/SwipeControlsPatch.kt | 5 +- .../resources/addresources/values/strings.xml | 7 +- 5 files changed, 159 insertions(+), 112 deletions(-) diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java index b7d1e2aee..92b222161 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java @@ -337,13 +337,17 @@ public class Settings extends BaseSettings { parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME)); public static final IntegerSetting SWIPE_OVERLAY_OPACITY = new IntegerSetting("revanced_swipe_overlay_background_opacity", 60, true, parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME)); - public static final StringSetting SWIPE_OVERLAY_PROGRESS_COLOR = new StringSetting("revanced_swipe_overlay_progress_color", "#FFFFFF", true, - parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME)); + public static final StringSetting SWIPE_OVERLAY_BRIGHTNESS_COLOR = new StringSetting("revanced_swipe_overlay_progress_brightness_color", "#FFFFFF", true, + parent(SWIPE_BRIGHTNESS)); + public static final StringSetting SWIPE_OVERLAY_VOLUME_COLOR = new StringSetting("revanced_swipe_overlay_progress_volume_color", "#FFFFFF", true, + parent(SWIPE_VOLUME)); public static final LongSetting SWIPE_OVERLAY_TIMEOUT = new LongSetting("revanced_swipe_overlay_timeout", 500L, true, parentsAny(SWIPE_BRIGHTNESS, SWIPE_VOLUME)); - public static final BooleanSetting SWIPE_SAVE_AND_RESTORE_BRIGHTNESS = new BooleanSetting("revanced_swipe_save_and_restore_brightness", TRUE, true, parent(SWIPE_BRIGHTNESS)); + public static final BooleanSetting SWIPE_SAVE_AND_RESTORE_BRIGHTNESS = new BooleanSetting("revanced_swipe_save_and_restore_brightness", TRUE, true, + parent(SWIPE_BRIGHTNESS)); public static final FloatSetting SWIPE_BRIGHTNESS_VALUE = new FloatSetting("revanced_swipe_brightness_value", -1f); - public static final BooleanSetting SWIPE_LOWEST_VALUE_ENABLE_AUTO_BRIGHTNESS = new BooleanSetting("revanced_swipe_lowest_value_enable_auto_brightness", FALSE, true, parent(SWIPE_BRIGHTNESS)); + public static final BooleanSetting SWIPE_LOWEST_VALUE_ENABLE_AUTO_BRIGHTNESS = new BooleanSetting("revanced_swipe_lowest_value_enable_auto_brightness", FALSE, true, + parent(SWIPE_BRIGHTNESS)); // ReturnYoutubeDislike public static final BooleanSetting RYD_ENABLED = new BooleanSetting("revanced_ryd_enabled", TRUE); diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/SwipeControlsConfigurationProvider.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/SwipeControlsConfigurationProvider.kt index e8f181936..c5854fd2f 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/SwipeControlsConfigurationProvider.kt +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/SwipeControlsConfigurationProvider.kt @@ -1,10 +1,10 @@ package app.revanced.extension.youtube.swipecontrols -import android.annotation.SuppressLint import android.graphics.Color import app.revanced.extension.shared.Logger import app.revanced.extension.shared.StringRef.str import app.revanced.extension.shared.Utils +import app.revanced.extension.shared.settings.StringSetting import app.revanced.extension.youtube.settings.Settings import app.revanced.extension.youtube.shared.PlayerType @@ -51,105 +51,112 @@ class SwipeControlsConfigurationProvider { /** * Indicates whether press-to-swipe mode is enabled, requiring a press before swiping to activate controls. */ - val shouldEnablePressToSwipe: Boolean - get() = Settings.SWIPE_PRESS_TO_ENGAGE.get() + val shouldEnablePressToSwipe = Settings.SWIPE_PRESS_TO_ENGAGE.get() /** * The threshold for detecting swipe gestures, in pixels. * Loaded once to ensure consistent behavior during rapid scroll events. */ - val swipeMagnitudeThreshold: Int - get() = Settings.SWIPE_MAGNITUDE_THRESHOLD.get() + val swipeMagnitudeThreshold = Settings.SWIPE_MAGNITUDE_THRESHOLD.get() /** * The sensitivity of volume swipe gestures, determining how much volume changes per swipe. * Resets to default if set to 0, as it would disable swiping. */ - val volumeSwipeSensitivity: Int - get() { - val sensitivity = Settings.SWIPE_VOLUME_SENSITIVITY.get() + val volumeSwipeSensitivity: Int by lazy { + val sensitivity = Settings.SWIPE_VOLUME_SENSITIVITY.get() - if (sensitivity < 1) { - return Settings.SWIPE_VOLUME_SENSITIVITY.resetToDefault() - } - - return sensitivity + if (sensitivity < 1) { + return@lazy Settings.SWIPE_VOLUME_SENSITIVITY.resetToDefault() } + + sensitivity + } //endregion //region overlay adjustments /** * Indicates whether haptic feedback should be enabled for swipe control interactions. */ - val shouldEnableHapticFeedback: Boolean - get() = Settings.SWIPE_HAPTIC_FEEDBACK.get() + val shouldEnableHapticFeedback = Settings.SWIPE_HAPTIC_FEEDBACK.get() /** * The duration in milliseconds that the overlay should remain visible after a change. */ - val overlayShowTimeoutMillis: Long - get() = Settings.SWIPE_OVERLAY_TIMEOUT.get() + val overlayShowTimeoutMillis = Settings.SWIPE_OVERLAY_TIMEOUT.get() /** * The background opacity of the overlay, converted from a percentage (0-100) to an alpha value (0-255). * Resets to default and shows a toast if the value is out of range. */ - val overlayBackgroundOpacity: Int - get() { - var opacity = Settings.SWIPE_OVERLAY_OPACITY.get() + val overlayBackgroundOpacity: Int by lazy { + var opacity = Settings.SWIPE_OVERLAY_OPACITY.get() - if (opacity < 0 || opacity > 100) { - Utils.showToastLong(str("revanced_swipe_overlay_background_opacity_invalid_toast")) - opacity = Settings.SWIPE_OVERLAY_OPACITY.resetToDefault() - } - - opacity = opacity * 255 / 100 - return Color.argb(opacity, 0, 0, 0) + if (opacity < 0 || opacity > 100) { + Utils.showToastLong(str("revanced_swipe_overlay_background_opacity_invalid_toast")) + opacity = Settings.SWIPE_OVERLAY_OPACITY.resetToDefault() } + opacity = opacity * 255 / 100 + Color.argb(opacity, 0, 0, 0) + } + /** - * The color of the progress bar in the overlay. + * The color of the progress bar in the overlay for brightness. * Resets to default and shows a toast if the color string is invalid or empty. */ - val overlayProgressColor: Int - get() { - try { - @SuppressLint("UseKtx") - val color = Color.parseColor(Settings.SWIPE_OVERLAY_PROGRESS_COLOR.get()) - return (0xBF000000.toInt() or (color and 0xFFFFFF)) - } catch (ex: IllegalArgumentException) { - Logger.printDebug({ "Could not parse color" }, ex) - Utils.showToastLong(str("revanced_swipe_overlay_progress_color_invalid_toast")) - Settings.SWIPE_OVERLAY_PROGRESS_COLOR.resetToDefault() - return overlayProgressColor // Recursively return. - } + val overlayBrightnessProgressColor: Int by lazy { + // Use lazy to avoid repeat parsing. Changing color requires app restart. + getSettingColor(Settings.SWIPE_OVERLAY_BRIGHTNESS_COLOR) + } + + /** + * The color of the progress bar in the overlay for volume. + * Resets to default and shows a toast if the color string is invalid or empty. + */ + val overlayVolumeProgressColor: Int by lazy { + getSettingColor(Settings.SWIPE_OVERLAY_VOLUME_COLOR) + } + + private fun getSettingColor(setting: StringSetting): Int { + try { + //noinspection UseKtx + val color = Color.parseColor(setting.get()) + return (0xBF000000.toInt() or (color and 0x00FFFFFF)) + } catch (ex: IllegalArgumentException) { + // This code should never be reached. + // Color picker rejects and will not save bad colors to a setting. + // If a user imports bad data, the color picker preference resets the + // bad color before this method can be called. + Logger.printDebug({ "Could not parse color: $setting" }, ex) + Utils.showToastLong(str("revanced_settings_color_invalid")) + setting.resetToDefault() + return getSettingColor(setting) // Recursively return. } + } /** * The background color used for the filled portion of the progress bar in the overlay. */ - val overlayFillBackgroundPaint: Int - get() = 0x80D3D3D3.toInt() + val overlayFillBackgroundPaint = 0x80D3D3D3.toInt() /** * The color used for text and icons in the overlay. */ - val overlayTextColor: Int - get() = Color.WHITE + val overlayTextColor = Color.WHITE /** * The text size in the overlay, in density-independent pixels (dp). * Must be between 1 and 30 dp; resets to default and shows a toast if invalid. */ - val overlayTextSize: Int - get() { - val size = Settings.SWIPE_OVERLAY_TEXT_SIZE.get() - if (size < 1 || size > 30) { - Utils.showToastLong(str("revanced_swipe_text_overlay_size_invalid_toast")) - return Settings.SWIPE_OVERLAY_TEXT_SIZE.resetToDefault() - } - return size + val overlayTextSize: Int by lazy { + val size = Settings.SWIPE_OVERLAY_TEXT_SIZE.get() + if (size < 1 || size > 30) { + Utils.showToastLong(str("revanced_swipe_text_overlay_size_invalid_toast")) + return@lazy Settings.SWIPE_OVERLAY_TEXT_SIZE.resetToDefault() } + size + } /** * Defines the style of the swipe controls overlay, determining its layout and appearance. @@ -199,28 +206,25 @@ class SwipeControlsConfigurationProvider { /** * A minimal vertical progress bar. */ - VERTICAL_MINIMAL(isMinimal = true, isVertical = true) + VERTICAL_MINIMAL(isMinimal = true, isVertical = true) } /** * The current style of the overlay, determining its layout and appearance. */ - val overlayStyle: SwipeOverlayStyle - get() = Settings.SWIPE_OVERLAY_STYLE.get() + val overlayStyle = Settings.SWIPE_OVERLAY_STYLE.get() //endregion //region behaviour /** * Indicates whether the brightness level should be saved and restored when entering or exiting fullscreen mode. */ - val shouldSaveAndRestoreBrightness: Boolean - get() = Settings.SWIPE_SAVE_AND_RESTORE_BRIGHTNESS.get() + val shouldSaveAndRestoreBrightness = Settings.SWIPE_SAVE_AND_RESTORE_BRIGHTNESS.get() /** * Indicates whether auto-brightness should be enabled when the brightness gesture reaches its lowest value. */ - val shouldLowestValueEnableAutoBrightness: Boolean - get() = Settings.SWIPE_LOWEST_VALUE_ENABLE_AUTO_BRIGHTNESS.get() + val shouldLowestValueEnableAutoBrightness = Settings.SWIPE_LOWEST_VALUE_ENABLE_AUTO_BRIGHTNESS.get() /** * The saved brightness value for the swipe gesture, used to restore brightness in fullscreen mode. @@ -229,4 +233,4 @@ class SwipeControlsConfigurationProvider { get() = Settings.SWIPE_BRIGHTNESS_VALUE.get() set(value) = Settings.SWIPE_BRIGHTNESS_VALUE.save(value) //endregion -} \ No newline at end of file +} diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/views/SwipeControlsOverlayLayout.kt b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/views/SwipeControlsOverlayLayout.kt index 6a9044e85..71226c082 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/views/SwipeControlsOverlayLayout.kt +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/swipecontrols/views/SwipeControlsOverlayLayout.kt @@ -39,7 +39,7 @@ class SwipeControlsOverlayLayout( constructor(context: Context) : this(context, SwipeControlsConfigurationProvider()) - // Drawable icons for brightness and volume + // Drawable icons for brightness and volume. private val autoBrightnessIcon: Drawable = getDrawable("revanced_ic_sc_brightness_auto") private val lowBrightnessIcon: Drawable = getDrawable("revanced_ic_sc_brightness_low") private val mediumBrightnessIcon: Drawable = getDrawable("revanced_ic_sc_brightness_medium") @@ -50,7 +50,7 @@ class SwipeControlsOverlayLayout( private val normalVolumeIcon: Drawable = getDrawable("revanced_ic_sc_volume_normal") private val fullVolumeIcon: Drawable = getDrawable("revanced_ic_sc_volume_high") - // Function to retrieve drawable resources by name + // Function to retrieve drawable resources by name. private fun getDrawable(name: String): Drawable { val drawable = resources.getDrawable( Utils.getResourceIdentifier(context, name, "drawable"), @@ -60,19 +60,19 @@ class SwipeControlsOverlayLayout( return drawable } - // Initialize progress bars + // Initialize progress bars. private val circularProgressView: CircularProgressView private val horizontalProgressView: HorizontalProgressView private val verticalBrightnessProgressView: VerticalProgressView private val verticalVolumeProgressView: VerticalProgressView init { - // Initialize circular progress bar + // Initialize circular progress bar. circularProgressView = CircularProgressView( context, config.overlayBackgroundOpacity, config.overlayStyle.isMinimal, - config.overlayProgressColor, + config.overlayBrightnessProgressColor, // Placeholder, updated in showFeedbackView. config.overlayFillBackgroundPaint, config.overlayTextColor, config.overlayTextSize @@ -80,18 +80,18 @@ class SwipeControlsOverlayLayout( layoutParams = LayoutParams(100f.toDisplayPixels().toInt(), 100f.toDisplayPixels().toInt()).apply { addRule(CENTER_IN_PARENT, TRUE) } - visibility = GONE // Initially hidden + visibility = GONE // Initially hidden. } addView(circularProgressView) - // Initialize horizontal progress bar + // Initialize horizontal progress bar. val screenWidth = resources.displayMetrics.widthPixels - val layoutWidth = (screenWidth * 4 / 5).toInt() // Cap at ~360dp + val layoutWidth = (screenWidth * 4 / 5).toInt() // Cap at ~360dp. horizontalProgressView = HorizontalProgressView( context, config.overlayBackgroundOpacity, config.overlayStyle.isMinimal, - config.overlayProgressColor, + config.overlayBrightnessProgressColor, // Placeholder, updated in showFeedbackView. config.overlayFillBackgroundPaint, config.overlayTextColor, config.overlayTextSize @@ -104,16 +104,16 @@ class SwipeControlsOverlayLayout( topMargin = 20f.toDisplayPixels().toInt() } } - visibility = GONE // Initially hidden + visibility = GONE // Initially hidden. } addView(horizontalProgressView) - // Initialize vertical progress bar for brightness (right side) + // Initialize vertical progress bar for brightness (right side). verticalBrightnessProgressView = VerticalProgressView( context, config.overlayBackgroundOpacity, config.overlayStyle.isMinimal, - config.overlayProgressColor, + config.overlayBrightnessProgressColor, config.overlayFillBackgroundPaint, config.overlayTextColor, config.overlayTextSize @@ -123,16 +123,16 @@ class SwipeControlsOverlayLayout( rightMargin = 40f.toDisplayPixels().toInt() addRule(CENTER_VERTICAL) } - visibility = GONE // Initially hidden + visibility = GONE // Initially hidden. } addView(verticalBrightnessProgressView) - // Initialize vertical progress bar for volume (left side) + // Initialize vertical progress bar for volume (left side). verticalVolumeProgressView = VerticalProgressView( context, config.overlayBackgroundOpacity, config.overlayStyle.isMinimal, - config.overlayProgressColor, + config.overlayVolumeProgressColor, config.overlayFillBackgroundPaint, config.overlayTextColor, config.overlayTextSize @@ -142,12 +142,12 @@ class SwipeControlsOverlayLayout( leftMargin = 40f.toDisplayPixels().toInt() addRule(CENTER_VERTICAL) } - visibility = GONE // Initially hidden + visibility = GONE // Initially hidden. } addView(verticalVolumeProgressView) } - // Handler and callback for hiding progress bars + // Handler and callback for hiding progress bars. private val feedbackHideHandler = Handler(Looper.getMainLooper()) private val feedbackHideCallback = Runnable { circularProgressView.visibility = GONE @@ -165,29 +165,42 @@ class SwipeControlsOverlayLayout( val viewToShow = when { config.overlayStyle.isCircular -> circularProgressView - config.overlayStyle.isVertical -> if (isBrightness) verticalBrightnessProgressView else verticalVolumeProgressView + config.overlayStyle.isVertical -> + if (isBrightness) + verticalBrightnessProgressView + else + verticalVolumeProgressView else -> horizontalProgressView } viewToShow.apply { + // Set the appropriate progress color. + if (this is CircularProgressView || this is HorizontalProgressView) { + setProgressColor( + if (isBrightness) + config.overlayBrightnessProgressColor + else + config.overlayVolumeProgressColor + ) + } setProgress(progress, max, value, isBrightness) this.icon = icon visibility = VISIBLE } } - // Handle volume change + // Handle volume change. override fun onVolumeChanged(newVolume: Int, maximumVolume: Int) { val volumePercentage = (newVolume.toFloat() / maximumVolume) * 100 val icon = when { newVolume == 0 -> mutedVolumeIcon - volumePercentage < 33 -> lowVolumeIcon - volumePercentage < 66 -> normalVolumeIcon + volumePercentage < 25 -> lowVolumeIcon + volumePercentage < 50 -> normalVolumeIcon else -> fullVolumeIcon } showFeedbackView("$newVolume", newVolume, maximumVolume, icon, isBrightness = false) } - // Handle brightness change + // Handle brightness change. override fun onBrightnessChanged(brightness: Double) { if (config.shouldLowestValueEnableAutoBrightness && brightness <= 0) { val displayText = if (config.overlayStyle.isVertical) "А" @@ -195,18 +208,19 @@ class SwipeControlsOverlayLayout( showFeedbackView(displayText, 0, 100, autoBrightnessIcon, isBrightness = true) } else { val brightnessValue = round(brightness).toInt() + val clampedProgress = max(0, brightnessValue) val icon = when { - brightnessValue < 25 -> lowBrightnessIcon - brightnessValue < 50 -> mediumBrightnessIcon - brightnessValue < 75 -> highBrightnessIcon + clampedProgress < 25 -> lowBrightnessIcon + clampedProgress < 50 -> mediumBrightnessIcon + clampedProgress < 75 -> highBrightnessIcon else -> fullBrightnessIcon } - val displayText = if (config.overlayStyle.isVertical) "$brightnessValue" else "$brightnessValue%" - showFeedbackView(displayText, brightnessValue, 100, icon, isBrightness = true) + val displayText = if (config.overlayStyle.isVertical) "$clampedProgress" else "$clampedProgress%" + showFeedbackView(displayText, clampedProgress, 100, icon, isBrightness = true) } } - // Begin swipe session + // Begin swipe session. override fun onEnterSwipeSession() { if (config.shouldEnableHapticFeedback) { @Suppress("DEPRECATION") @@ -233,25 +247,41 @@ abstract class AbstractProgressView( defStyleAttr: Int = 0 ) : View(context, attrs, defStyleAttr) { - // Combined paint creation function for both fill and stroke styles - private fun createPaint(color: Int, style: Paint.Style = Paint.Style.FILL, strokeCap: Paint.Cap = Paint.Cap.BUTT, strokeWidth: Float = 0f) = Paint(Paint.ANTI_ALIAS_FLAG).apply { + // Combined paint creation function for both fill and stroke styles. + private fun createPaint( + color: Int, + style: Paint.Style = Paint.Style.FILL, + strokeCap: Paint.Cap = Paint.Cap.BUTT, + strokeWidth: Float = 0f + ) = Paint(Paint.ANTI_ALIAS_FLAG).apply { this.style = style this.color = color this.strokeCap = strokeCap this.strokeWidth = strokeWidth } - // Initialize paints - val backgroundPaint = createPaint(overlayBackgroundOpacity, style = Paint.Style.FILL) - val progressPaint = createPaint(overlayProgressColor, style = Paint.Style.STROKE, strokeCap = Paint.Cap.ROUND, strokeWidth = 6f.toDisplayPixels()) - val fillBackgroundPaint = createPaint(overlayFillBackgroundPaint, style = Paint.Style.FILL) - val textPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply { - color = overlayTextColor + // Initialize paints. + val backgroundPaint = createPaint( + overlayBackgroundOpacity, + style = Paint.Style.FILL + ) + val progressPaint = createPaint( + overlayProgressColor, + style = Paint.Style.STROKE, + strokeCap = Paint.Cap.ROUND, + strokeWidth = 6f.toDisplayPixels() + ) + val fillBackgroundPaint = createPaint( + overlayFillBackgroundPaint, + style = Paint.Style.FILL + ) + val textPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply { + color = overlayTextColor textAlign = Paint.Align.CENTER - textSize = overlayTextSize.toFloat().toDisplayPixels() + textSize = overlayTextSize.toFloat().toDisplayPixels() } - // Rect for text measurement + // Rect for text measurement. protected val textBounds = Rect() protected var progress = 0 @@ -268,13 +298,18 @@ abstract class AbstractProgressView( invalidate() } + fun setProgressColor(color: Int) { + progressPaint.color = color + invalidate() + } + protected fun measureTextWidth(text: String, paint: Paint): Int { paint.getTextBounds(text, 0, text.length, textBounds) return textBounds.width() } override fun onDraw(canvas: Canvas) { - // Base class implementation can be empty + // Base class implementation can be empty. } } @@ -393,8 +428,8 @@ class HorizontalProgressView( } /** - * Calculate required width based on content - * @return Required width to display all elements + * Calculate required width based on content. + * @return Required width to display all elements. */ private fun calculateRequiredWidth(): Float { textWidth = measureTextWidth(displayText, textPaint).toFloat() @@ -537,8 +572,8 @@ class VerticalProgressView( } /** - * Calculate required height based on content - * @return Required height to display all elements + * Calculate required height based on content. + * @return Required height to display all elements. */ private fun calculateRequiredHeight(): Float { return if (!isMinimalStyle) { @@ -633,4 +668,4 @@ class VerticalProgressView( super.setProgress(value, max, text, isBrightnessMode) requestLayout() } -} \ No newline at end of file +} diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/swipecontrols/SwipeControlsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/swipecontrols/SwipeControlsPatch.kt index 6c14a93b6..fc9c3dc83 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/swipecontrols/SwipeControlsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/swipecontrols/SwipeControlsPatch.kt @@ -48,7 +48,10 @@ private val swipeControlsResourcePatch = resourcePatch { summaryKey = null, ), TextPreference("revanced_swipe_overlay_background_opacity", inputType = InputType.NUMBER), - TextPreference("revanced_swipe_overlay_progress_color", + TextPreference("revanced_swipe_overlay_progress_brightness_color", + tag = "app.revanced.extension.shared.settings.preference.ColorPickerPreference", + inputType = InputType.TEXT_CAP_CHARACTERS), + TextPreference("revanced_swipe_overlay_progress_volume_color", tag = "app.revanced.extension.shared.settings.preference.ColorPickerPreference", inputType = InputType.TEXT_CAP_CHARACTERS), TextPreference("revanced_swipe_text_overlay_size", inputType = InputType.NUMBER), diff --git a/patches/src/main/resources/addresources/values/strings.xml b/patches/src/main/resources/addresources/values/strings.xml index 79a52e628..0a51eedb0 100644 --- a/patches/src/main/resources/addresources/values/strings.xml +++ b/patches/src/main/resources/addresources/values/strings.xml @@ -553,9 +553,10 @@ Adjust volume by swiping vertically on the right side of the screen" Swipe overlay background opacity Opacity value between 0-100 Swipe opacity must be between 0-100 - Swipe overlay progress bar color - The color of the progress bar for volume and brightness controls - Invalid progress bar color + Swipe overlay brightness color + The color of the progress bar for brightness controls + Swipe overlay volume color + The color of the progress bar for volume controls Swipe overlay text size The text size for swipe overlay between 1-30 The text size must be between 1-30 From ef21efa0e89cf82a192fa00ff3556dd8baa8fd44 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Wed, 28 May 2025 11:55:02 +0200 Subject: [PATCH 37/46] refactor(YouTube - Enabling debugging): Adjust logger formatting to preserve backwards compatibility (#5054) --- .../app/revanced/extension/shared/Logger.java | 37 ++++++++++--------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/Logger.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/Logger.java index 83d0c7358..edf57e9c1 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/Logger.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/Logger.java @@ -41,7 +41,10 @@ public class Logger { ERROR } - private static final String REVANCED_LOG_TAG = "revanced"; + /** + * Log tag prefix. Only used for system logging. + */ + private static final String REVANCED_LOG_TAG_PREFIX = "revanced: "; private static final String LOGGER_CLASS_NAME = Logger.class.getName(); @@ -90,17 +93,13 @@ public class Logger { String messageString = message.buildMessageString(); String className = getOuterClassSimpleName(message); - StringBuilder logBuilder = new StringBuilder(className.length() + 2 - + messageString.length()); - logBuilder.append(className).append(": ").append(messageString); - - String toastMessage = showToast ? logBuilder.toString() : null; + String logText = messageString; // Append exception message if present. if (ex != null) { var exceptionMessage = ex.getMessage(); if (exceptionMessage != null) { - logBuilder.append("\nException: ").append(exceptionMessage); + logText += "\nException: " + exceptionMessage; } } @@ -111,29 +110,31 @@ public class Logger { // Remove the stacktrace elements of this class. final int loggerIndex = stackTrace.lastIndexOf(LOGGER_CLASS_NAME); final int loggerBegins = stackTrace.indexOf('\n', loggerIndex); - logBuilder.append(stackTrace, loggerBegins, stackTrace.length()); + logText += stackTrace.substring(loggerBegins); } - String logText = logBuilder.toString(); - LogBufferManager.appendToLogBuffer(logText); + // Do not include "revanced:" prefix in clipboard logs. + String managerToastString = className + ": " + logText; + LogBufferManager.appendToLogBuffer(managerToastString); + String logTag = REVANCED_LOG_TAG_PREFIX + className; switch (logLevel) { case DEBUG: - if (ex == null) Log.d(REVANCED_LOG_TAG, logText); - else Log.d(REVANCED_LOG_TAG, logText, ex); + if (ex == null) Log.d(logTag, logText); + else Log.d(logTag, logText, ex); break; case INFO: - if (ex == null) Log.i(REVANCED_LOG_TAG, logText); - else Log.i(REVANCED_LOG_TAG, logText, ex); + if (ex == null) Log.i(logTag, logText); + else Log.i(logTag, logText, ex); break; case ERROR: - if (ex == null) Log.e(REVANCED_LOG_TAG, logText); - else Log.e(REVANCED_LOG_TAG, logText, ex); + if (ex == null) Log.e(logTag, logText); + else Log.e(logTag, logText, ex); break; } - if (toastMessage != null) { - Utils.showToastLong(toastMessage); + if (showToast) { + Utils.showToastLong(managerToastString); } } From 752a776101291f337691e970136b7267da951299 Mon Sep 17 00:00:00 2001 From: Nuckyz <61953774+Nuckyz@users.noreply.github.com> Date: Wed, 28 May 2025 06:55:25 -0300 Subject: [PATCH 38/46] refactor(Spotify): Improve protobuf array list mutability patch (#5053) Co-authored-by: oSumAtrIX --- .../patches/spotify/misc/Fingerprints.kt | 11 +++++-- .../spotify/misc/UnlockPremiumPatch.kt | 32 +++++++------------ 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/patches/src/main/kotlin/app/revanced/patches/spotify/misc/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/spotify/misc/Fingerprints.kt index daddd2841..708ec7e77 100644 --- a/patches/src/main/kotlin/app/revanced/patches/spotify/misc/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/spotify/misc/Fingerprints.kt @@ -65,8 +65,15 @@ internal val protobufListsFingerprint = fingerprint { custom { method, _ -> method.name == "emptyProtobufList" } } -internal val protobufListRemoveFingerprint = fingerprint { - custom { method, _ -> method.name == "remove" } +internal val abstractProtobufListEnsureIsMutableFingerprint = fingerprint { + accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) + parameters() + returns("V") + custom { method, _ -> + method.indexOfFirstInstruction { + getReference()?.type == "Ljava/lang/UnsupportedOperationException;" + } >= 0 + } } internal val homeSectionFingerprint = fingerprint { diff --git a/patches/src/main/kotlin/app/revanced/patches/spotify/misc/UnlockPremiumPatch.kt b/patches/src/main/kotlin/app/revanced/patches/spotify/misc/UnlockPremiumPatch.kt index 90bfc1694..b34df2aac 100644 --- a/patches/src/main/kotlin/app/revanced/patches/spotify/misc/UnlockPremiumPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/spotify/misc/UnlockPremiumPatch.kt @@ -3,7 +3,6 @@ package app.revanced.patches.spotify.misc 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.extensions.InstructionExtensions.removeInstruction import app.revanced.patcher.extensions.InstructionExtensions.removeInstructions import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction import app.revanced.patcher.patch.PatchException @@ -12,9 +11,7 @@ import app.revanced.patcher.util.proxy.mutableTypes.MutableClass import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod import app.revanced.patches.spotify.misc.extension.IS_SPOTIFY_LEGACY_APP_TARGET import app.revanced.patches.spotify.misc.extension.sharedExtensionPatch -import app.revanced.util.getReference -import app.revanced.util.indexOfFirstInstructionOrThrow -import app.revanced.util.indexOfFirstInstructionReversedOrThrow +import app.revanced.util.* import app.revanced.util.toPublicAccessFlags import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction @@ -133,29 +130,24 @@ val unlockPremiumPatch = bytecodePatch( } - val protobufListClassDef = with(protobufListsFingerprint.originalMethod) { + val protobufArrayListClassDef = with(protobufListsFingerprint.originalMethod) { val emptyProtobufListGetIndex = indexOfFirstInstructionOrThrow(Opcode.SGET_OBJECT) - // Find the protobuffer list class using the definingClass which contains the empty list static value. + // Find the protobuf array list class using the definingClass which contains the empty list static value. val classType = getInstruction(emptyProtobufListGetIndex).getReference()!!.definingClass - classes.find { it.type == classType } ?: throw PatchException("Could not find protobuffer list class.") + classes.find { it.type == classType } ?: throw PatchException("Could not find protobuf array list class.") } + val abstractProtobufListClassDef = classes.find { + it.type == protobufArrayListClassDef.superclass + } ?: throw PatchException("Could not find abstract protobuf list class.") + // Need to allow mutation of the list so the home ads sections can be removed. - // Protobuffer list has an 'isMutable' boolean parameter that sets the mutability. + // Protobuf array list has an 'isMutable' boolean parameter that sets the mutability. // Forcing that always on breaks unrelated code in strange ways. - // Instead, remove the method call that checks if the list is unmodifiable. - protobufListRemoveFingerprint.match(protobufListClassDef).method.apply { - val invokeThrowUnmodifiableIndex = indexOfFirstInstructionOrThrow { - val reference = getReference() - opcode == Opcode.INVOKE_VIRTUAL && - reference?.returnType == "V" && reference.parameterTypes.isEmpty() - } - - // Remove the method call that throws an exception if the list is not mutable. - removeInstruction(invokeThrowUnmodifiableIndex) - } - + // Instead, return early in the method that throws an error if the list is unmutable. + abstractProtobufListEnsureIsMutableFingerprint.match(abstractProtobufListClassDef) + .method.returnEarly() // Make featureTypeCase_ accessible so we can check the home section type in the extension. homeSectionFingerprint.classDef.publicizeField("featureTypeCase_") From d88793edae4460a39083614119d7eb778ed5fdd6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 28 May 2025 11:58:56 +0200 Subject: [PATCH 39/46] chore: Sync translations (#5055) --- .../addresources/values-af-rZA/strings.xml | 4 +- .../addresources/values-am-rET/strings.xml | 4 +- .../addresources/values-ar-rSA/strings.xml | 38 +++++++++++--- .../addresources/values-as-rIN/strings.xml | 4 +- .../addresources/values-az-rAZ/strings.xml | 11 ++-- .../addresources/values-be-rBY/strings.xml | 38 +++++++++++--- .../addresources/values-bg-rBG/strings.xml | 38 +++++++++++--- .../addresources/values-bn-rBD/strings.xml | 38 +++++++++++--- .../addresources/values-bs-rBA/strings.xml | 4 +- .../addresources/values-ca-rES/strings.xml | 38 +++++++++++--- .../addresources/values-cs-rCZ/strings.xml | 38 +++++++++++--- .../addresources/values-da-rDK/strings.xml | 38 +++++++++++--- .../addresources/values-de-rDE/strings.xml | 38 +++++++++++--- .../addresources/values-el-rGR/strings.xml | 38 +++++++++++--- .../addresources/values-es-rES/strings.xml | 38 +++++++++++--- .../addresources/values-et-rEE/strings.xml | 42 ++++++++++++--- .../addresources/values-eu-rES/strings.xml | 4 +- .../addresources/values-fa-rIR/strings.xml | 4 +- .../addresources/values-fi-rFI/strings.xml | 11 ++-- .../addresources/values-fil-rPH/strings.xml | 42 ++++++++++++--- .../addresources/values-fr-rFR/strings.xml | 38 +++++++++++--- .../addresources/values-ga-rIE/strings.xml | 38 +++++++++++--- .../addresources/values-gl-rES/strings.xml | 4 +- .../addresources/values-gu-rIN/strings.xml | 4 +- .../addresources/values-hi-rIN/strings.xml | 4 +- .../addresources/values-hr-rHR/strings.xml | 4 +- .../addresources/values-hu-rHU/strings.xml | 38 +++++++++++--- .../addresources/values-hy-rAM/strings.xml | 38 +++++++++++--- .../addresources/values-in-rID/strings.xml | 42 ++++++++++++--- .../addresources/values-is-rIS/strings.xml | 4 +- .../addresources/values-it-rIT/strings.xml | 38 +++++++++++--- .../addresources/values-iw-rIL/strings.xml | 12 +++-- .../addresources/values-ja-rJP/strings.xml | 38 +++++++++++--- .../addresources/values-ka-rGE/strings.xml | 4 +- .../addresources/values-kk-rKZ/strings.xml | 4 +- .../addresources/values-km-rKH/strings.xml | 4 +- .../addresources/values-kn-rIN/strings.xml | 4 +- .../addresources/values-ko-rKR/strings.xml | 52 +++++++++++++------ .../addresources/values-ky-rKG/strings.xml | 4 +- .../addresources/values-lo-rLA/strings.xml | 4 +- .../addresources/values-lt-rLT/strings.xml | 38 +++++++++++--- .../addresources/values-lv-rLV/strings.xml | 42 ++++++++++++--- .../addresources/values-mk-rMK/strings.xml | 4 +- .../addresources/values-ml-rIN/strings.xml | 4 +- .../addresources/values-mn-rMN/strings.xml | 4 +- .../addresources/values-mr-rIN/strings.xml | 4 +- .../addresources/values-ms-rMY/strings.xml | 4 +- .../addresources/values-my-rMM/strings.xml | 4 +- .../addresources/values-nb-rNO/strings.xml | 4 +- .../addresources/values-ne-rIN/strings.xml | 4 +- .../addresources/values-nl-rNL/strings.xml | 38 +++++++++++--- .../addresources/values-or-rIN/strings.xml | 4 +- .../addresources/values-pa-rIN/strings.xml | 4 +- .../addresources/values-pl-rPL/strings.xml | 34 +++++++++--- .../addresources/values-pt-rBR/strings.xml | 42 ++++++++++++--- .../addresources/values-pt-rPT/strings.xml | 38 +++++++++++--- .../addresources/values-ro-rRO/strings.xml | 38 +++++++++++--- .../addresources/values-ru-rRU/strings.xml | 38 +++++++++++--- .../addresources/values-si-rLK/strings.xml | 4 +- .../addresources/values-sk-rSK/strings.xml | 42 ++++++++++++--- .../addresources/values-sl-rSI/strings.xml | 42 ++++++++++++--- .../addresources/values-sq-rAL/strings.xml | 38 +++++++++++--- .../addresources/values-sr-rCS/strings.xml | 44 ++++++++++++---- .../addresources/values-sr-rSP/strings.xml | 46 ++++++++++++---- .../addresources/values-sv-rSE/strings.xml | 42 ++++++++++++--- .../addresources/values-sw-rKE/strings.xml | 4 +- .../addresources/values-ta-rIN/strings.xml | 4 +- .../addresources/values-te-rIN/strings.xml | 4 +- .../addresources/values-th-rTH/strings.xml | 42 ++++++++++++--- .../addresources/values-tr-rTR/strings.xml | 42 ++++++++++++--- .../addresources/values-uk-rUA/strings.xml | 48 +++++++++++++---- .../addresources/values-ur-rIN/strings.xml | 4 +- .../addresources/values-uz-rUZ/strings.xml | 4 +- .../addresources/values-vi-rVN/strings.xml | 42 ++++++++++++--- .../addresources/values-zh-rCN/strings.xml | 38 +++++++++++--- .../addresources/values-zh-rTW/strings.xml | 9 ++-- .../addresources/values-zu-rZA/strings.xml | 4 +- 77 files changed, 1319 insertions(+), 420 deletions(-) diff --git a/patches/src/main/resources/addresources/values-af-rZA/strings.xml b/patches/src/main/resources/addresources/values-af-rZA/strings.xml index 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-af-rZA/strings.xml +++ b/patches/src/main/resources/addresources/values-af-rZA/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-am-rET/strings.xml +++ b/patches/src/main/resources/addresources/values-am-rET/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 0a50b996d..d4aaf27e5 100644 --- a/patches/src/main/resources/addresources/values-ar-rSA/strings.xml +++ b/patches/src/main/resources/addresources/values-ar-rSA/strings.xml @@ -117,6 +117,11 @@ Second \"item\" text" سجل بروتوكول التخزين المؤقت تتضمن سجلات التصحيح التخزين المؤقت لا تتضمن سجلات التصحيح التخزين المؤقت + "سيؤدي تمكين هذا الإعداد إلى تسجيل بيانات تخطيط إضافية، بما في ذلك النص المعروض على الشاشة لبعض مكونات واجهة المستخدم. + +يمكن أن يساعد هذا في تحديد المكونات عند إنشاء عوامل تصفية مخصصة. + +ومع ذلك، سيؤدي تمكين هذا أيضًا إلى تسجيل بعض بيانات المستخدم مثل عنوان IP الخاص بك." سجل تتبع المكدس تتضمن سجلات التصحيح سجل تتبع المكدس لا تتضمن سجلات التصحيح سجل تتبع المكدس @@ -126,6 +131,15 @@ Second \"item\" text" "يؤدي إيقاف تشغيل ملاحظات الأخطاء إلى إخفاء كافة إشعارات أخطاء ReVanced. لن يتم إعلامك بأي أخطاء غير متوقعة." + تصدير سجلات تصحيح الأخطاء + نسخ سجلات تصحيح أخطاء ReVanced إلى الحافظة + تم تعطيل تسجيلات تصحيح الأخطاء + لم يتم العثور على سجلات + تم نسخ السجلات + فشل تصدير السجلات: $s + مسح سجلات تصحيح الأخطاء + يمسح جميع سجلات تصحيح أخطاء ReVanced المخزنة + تم مسح السجلات إخفاء بطاقات الألبوم @@ -477,9 +491,6 @@ Second \"item\" text" تعتيم خلفية واجهة التمرير السريع قيمة التعتيم بين 0-100 يجب أن يكون تعتيم التمرير السريع بين 0-100 - لون شريط تقدم واجهة التمرير - لون شريط التقدم لعناصر التحكم في مستوى الصوت والسطوع - لون شريط التقدم غير صالح حجم نص واجهة التمرير حجم النص لواجهة التمرير بين 1-30 يجب أن يكون حجم النص بين 1-30 @@ -1322,6 +1333,22 @@ Second \"item\" text" إعدادات GmsCore إعدادات لـ GmsCore + + الاهتزاز عند الضغط + تغيير الاهتزاز عند الضغط + تعطيل الاهتزاز للفصول + تم تعطيل الاهتزاز للفصول + تم تفعيل الاهتزاز للفصول + تعطيل الاهتزاز عند التمرير الدقيق + تم تعطيل الاهتزاز الدقيق عند البحث + تم تفعيل الاهتزاز عند التمرير الدقيق + تعطيل الاهتزاز عند التراجع عن البحث + تم تعطيل الاهتزاز عند التراجع عن البحث + تم تمكين الاهتزاز عند التراجع عن البحث + تعطيل الاهتزاز عند التكبير + تم تعطيل الاهتزاز عند التكبير + تم تمكين الاهتزاز عند التكبير + إذا قمت مؤخرًا بتغيير تفاصيل تسجيل الدخول إلى حسابك، فأزل تثبيت MicroG ثم أعد تثبيته. @@ -1340,11 +1367,6 @@ Second \"item\" text" يتم إزالة معلمة استعلام التتبع من الروابط لا يتم إزالة معلمة استعلام التتبع من الروابط - - تعطيل الاهتزاز عند التكبير - تم تعطيل الاهتزاز - تم تمكين الاهتزاز - فرض لغة الصوت الأصلية استخدام لغة الصوت الأصلية 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 fec4d1148..5b92e537e 100644 --- a/patches/src/main/resources/addresources/values-as-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-as-rIN/strings.xml @@ -201,6 +201,8 @@ Second \"item\" text" + + @@ -209,8 +211,6 @@ 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 614c5033e..b8bb420df 100644 --- a/patches/src/main/resources/addresources/values-az-rAZ/strings.xml +++ b/patches/src/main/resources/addresources/values-az-rAZ/strings.xml @@ -475,9 +475,6 @@ Ekranın sağ tərəfində düzünə sürüşdürərək səs səviyyəsini tənz Sürüşdürmə cildi arxa plan qeyri-şəffaflığı 0-100 arası qeyri-şəffaflıq dəyəri Sürüşmə qeyri-şəffaflığı 0-100 arası olmalıdır - Sürüşdürmə örtüyü irəliləyiş cizgisi rəngi - Səs səviyyəsinə və parlaqlığa nəzarət üçün irəliləyiş cizgisi rəngi - Yanlış irəliləyiş cizgisi rəngi Sürüşdürmə örtüyü mətn ölçüsü Sürüşmə üçün mətn ölçüsü 1-30 arasındadır Mətn ölçüsü 1-30 arası olmalıdır @@ -1319,6 +1316,9 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər GmsCore Tənzimləmələri GmsCore üçün Tənzimləmələr + + Yaxınlaşdırma reaksiyasın qapat + Bu yaxınlarda hesabınıza giriş məlumatlarınızı dəyişmisinizsə, MicroG-ni silin və təkrar quraşdırın. @@ -1337,11 +1337,6 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər İzləmə sorğusu faktoru bağlantılardan silinir İzləmə sorğusu faktoru bağlantılardan silinmir - - Yaxınlaşdırma reaksiyasın qapat - Reaksiya qapalıdır - Reaksiya aktivdir - Orijinal səs dilini zorla Orijinal səs dilini istifadə 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 4d3007465..7c2bbc58b 100644 --- a/patches/src/main/resources/addresources/values-be-rBY/strings.xml +++ b/patches/src/main/resources/addresources/values-be-rBY/strings.xml @@ -117,6 +117,11 @@ Second \"item\" text" Буфер пратаколу часопіса Журналы адладкі ўключаюць пратабуфер Журналы адладкі не ўключаюць пратабуфер + "Уключэнне гэтага параметра будзе запісваць дадатковыя даныя макета, у тым ліку тэкст на экране для некаторых кампанентаў інтэрфейсу. + +Гэта можа дапамагчы ідэнтыфікаваць кампаненты пры стварэнні карыстацкіх фільтраў. + +Аднак уключэнне гэтага параметра таксама будзе запісваць некаторыя даныя карыстальніка, такія як ваш IP-адрас." Сляды стэка журнала Журналы адладкі ўключаюць трасіроўку стэка Журналы адладкі не ўключаюць трасіроўку стэка @@ -126,6 +131,15 @@ Second \"item\" text" "Адключэнне паведамленняў пра памылкі схавае ўсе апавяшчэнні ReVanced пра памылкі. Вы не будзеце атрымліваць апавяшчэнні пра нечаканыя падзеі." + Экспартаваць адладачныя лагі + Капіруе адладачныя лагі ReVanced у буфер абмену + Адладачнае лагаванне адключана + Лагі не знойдзены + Лагі скапіяваны + Не атрымалася экспартаваць лагі: $s + Ачысціць адладачныя лагі + Ачышчае ўсе захаваныя адладачныя лагі ReVanced + Лагі ачышчаны Схаваць карты альбома @@ -477,9 +491,6 @@ Second \"item\" text" Непразрыстасць фону накладкі пракруткі Значэнне непразрыстасці паміж 0-100 Непразрыстасць пракруткі павінна быць паміж 0-100 - Колер слупка прагрэсу накладкі правядзення - Колер слупка прагрэсу для рэгулявання гучнасці і яркасці - Несапраўдны колер слупка прагрэсу Памер тэксту накладкі правядзення Памер тэксту для накладкі правядзення ад 1 да 30 Памер тэксту павінен быць у межах ад 1 да 30 @@ -1323,6 +1334,22 @@ Second \"item\" text" Налады GmsCore Налады для GmsCore + + Тактыльная зваротная сувязь + Змяніць тактыльную зваротную сувязь + Адключыць тактыльныя эфекты раздзелаў + Тактыльныя эфекты раздзелаў адключаны + Тактыльныя эфекты раздзелаў уключаны + Адключыць тактыльны эфект дакладнага пошуку + Дакладны тактыльны эфект пошуку адключаны + Тактыльны эфект дакладнага пошуку ўключаны + Адключыць тактыльны эфект адмены пошуку + Тактыльны эфект адмены пошуку адключаны + Тактыльны эфект адмены пошуку ўключаны + Адключыць тактыльны эфект маштабавання + Тактыльны эфект маштабавання адключаны + Тактыльны эфект маштабавання ўключаны + Калі вы нядаўна змянілі даныя для ўваходу ў свой уліковы запіс, выдаліце і пераўсталюйце MicroG. @@ -1341,11 +1368,6 @@ Second \"item\" text" Параметр запыту адсочвання выдалены са спасылак Параметр адсочвання запыту не выдаляецца са спасылак - - Адключыць тактыльны эфект маштабавання - Тактыльныя функцыі адключаны - Тактыльныя сігналы ўключаны - Вымушаная арыгінальная мова аўдыё Выкарыстоўваць арыгінальную мову аўдыя 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 829f903f1..669ffec8f 100644 --- a/patches/src/main/resources/addresources/values-bg-rBG/strings.xml +++ b/patches/src/main/resources/addresources/values-bg-rBG/strings.xml @@ -117,6 +117,11 @@ Second \"item\" text" Буфер на протокола за дневника Файлове с дневници за грешки включват буфера Файлове с дневници за грешки не включват буфера + "Активирането на тази настройка ще регистрира допълнителни данни за оформлението, включително текст на екрана за някои компоненти на потребителския интерфейс. + +Това може да помогне за идентифициране на компоненти при създаване на персонализирани филтри. + +Активирането на тази настройка обаче ще регистрира и някои потребителски данни, като например вашия IP адрес." Следи от стека на дневника Дневникът за отстраняване на грешки съдържа следи от стека Дневникът за отстраняване на грешки не съдържа следи от стека @@ -126,6 +131,15 @@ Second \"item\" text" "Изключването на изскачащи съобщения за грешки крие всички известия за грешки на ReVanced. Няма да бъдете уведомени за неочаквани събития." + Експортиране на логове за отстраняване на грешки + Копира логовете за отстраняване на грешки на ReVanced в клипборда + Отстраняването на грешки е деактивирано + Не са намерени логове + Логовете са копирани + Неуспешно експортиране на логове: $s + Изчистване на логовете за отстраняване на грешки + Изчиства всички съхранени логове за отстраняване на грешки на ReVanced + Логовете са изчистени \"Карти на албумите\" @@ -477,9 +491,6 @@ Second \"item\" text" Плъзгане на фона на наслагването непрозрачност Стойност на непрозрачността между 0-100 Непрозрачността на плъзгането трябва да е между 0-100 - Цвят на лентата за напредък при плъзгане - Цветът на лентата за напредък за контролите за сила на звука и яркост - Невалиден цвят на лентата за напредък Размер на текста на наслагването при плъзгане Размерът на текста за наслагването при плъзгане между 1-30 Размерът на текста трябва да е между 1-30 @@ -1322,6 +1333,22 @@ Second \"item\" text" GmsCore Настройки Настройки на GmsCore + + Вибрационна обратна връзка + Промяна на вибрационната обратна връзка + Деактивиране на вибрацията при главите + Вибрацията при главите е деактивирана + Вибрацията при главите е активирана + Деактивиране на вибрацията при прецизното търсене + Прецизната вибрация при търсене е деактивирана + Вибрацията при прецизното търсене е активирана + Деактивиране на вибрация при отмяна на търсене + Вибрацията при отмяна на търсене е деактивирана + Вибрацията при отмяна на търсене е активирана + Деактивиране на вибрация при мащабиране + Вибрацията при мащабиране е деактивирана + Вибрацията при мащабиране е активирана + Ако наскоро сте променили данните си за вход в профила, деинсталирайте и инсталирайте отново MicroG. @@ -1340,11 +1367,6 @@ Second \"item\" text" Параметърът на заявката за проследяване е премахнат от връзките Параметърът на заявката за проследяване не е премахнат от връзките - - Деактивиране на вибрация при мащабиране - Вибрациите са деактивирани - Вибрациите са активирани - Принудително оригинално аудио език Използване на оригиналния език на аудиото 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 805ca4547..e6506f291 100644 --- a/patches/src/main/resources/addresources/values-bn-rBD/strings.xml +++ b/patches/src/main/resources/addresources/values-bn-rBD/strings.xml @@ -117,6 +117,7 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ প্রটোকল বাফার লগ ডিবাগ লগ প্রটোকল বাফার সংযুক্ত করবে ডিবাগ লগ প্রটোকল বাফার সংযুক্ত করবে না + "এই সেটিংস সক্ষম করলে কিছু UI উপাদানের জন্য অন-স্ক্রীন পাঠ্য সহ অতিরিক্ত লেআউট ডেটা লগ করা হবে।\n\nএটি কাস্টম ফিল্টার তৈরি করার সময় উপাদান সনাক্ত করতে সাহায্য করতে পারে।\n\nতবে, এটি সক্রিয় করলে আপনার আইপি ঠিকানার মতো কিছু ব্যবহারকারীর ডেটাও লগ করা হবে।" স্টেক ট্রেস লগ ডিবাগ লগ স্টেক ট্রেস সংযুক্ত করবে ডিবাগ লগ স্টেক ট্রেস সংযুক্ত করবে না @@ -126,6 +127,15 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ "ত্রুটি \"toast\" বন্ধ করে ReVanced ত্রুটি বিজ্ঞপ্তিগুলি লুকানো হয়। আপনি কোনও অপ্রত্যাশিত ঘটনার বিষয়ে অবহিত হবেন না।" + ডিবাগ লগগুলি রফতানি করুন + ক্লিপবোর্ডে ReVanced ডিবাগ লগগুলি অনুলিপি করে + ডিবাগ লগিং নিষ্ক্রিয় করা হয়েছে + কোনো লগ পাওয়া যায়নি + লগ অনুলিপি করা হয়েছে + লগ রপ্তানি করতে ব্যর্থ: $s + ডিবাগ লগগুলি সাফ করুন + সমস্ত সঞ্চিত ReVanced ডিবাগ লগ সাফ করে + লগ সাফ করা হয়েছে অ্যালবাম কার্ড লুকান @@ -477,9 +487,10 @@ MicroG-এর জন্য ব্যাটারি অপ্টিমাইজ অস্বচ্ছতা 0-100 এর মধ্যে অস্বচ্ছতার মান সোয়াইপের অস্বচ্ছতা অবশ্যই 0-100 এর মধ্যে হতে হবে - সোয়াইপ ওভারলে প্রগ্রেস বার এর রং - ভলিউম এবং উজ্জ্বলতা নিয়ন্ত্রণের জন্য প্রগ্রেস বার এর রং - অবৈধ প্রগ্রেস বার রং + সোয়াইপ ওভারলে উজ্জ্বলতা রঙ + উজ্জ্বলতা নিয়ন্ত্রণের জন্য প্রগ্রেস বারের রঙ + সোয়াইপ ওভারলে ভলিউম রঙ + ভলিউম নিয়ন্ত্রণের জন্য প্রগ্রেস বারের রঙ সোয়াইপ ওভারলে টেক্সট সাইজ সোয়াইপ ওভারলে-এর জন্য টেক্সট সাইজ ১-৩০ এর মধ্যে টেক্সট সাইজ অবশ্যই ১-৩০ এর মধ্যে হতে হবে @@ -1322,6 +1333,22 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট GmsCore সেটিং GmsCore এর জন্য সেটিং + + কম্পন প্রতিক্রিয়া + কম্পন প্রতিক্রিয়া পরিবর্তন করুন + অধ্যায়গুলোর কম্পন নিষ্ক্রিয় করুন + অধ্যায়গুলোর কম্পন নিষ্ক্রিয় করা হয়েছে + অধ্যায়গুলোর কম্পন সক্রিয় করা হয়েছে + নির্দিষ্ট স্থানে খোঁজার কম্পন নিষ্ক্রিয় করুন + সূক্ষ্ম সিকিং কম্পন নিষ্ক্রিয় করা হয়েছে + নির্দিষ্ট স্থানে খোঁজার কম্পন সক্রিয় করা হয়েছে + সীক আনডু কম্পন নিষ্ক্রিয় করুন + সীক আনডু কম্পন নিষ্ক্রিয় করা হয়েছে + সীক আনডু কম্পন সক্রিয় করা হয়েছে + জুম করার কম্পন নিষ্ক্রিয় করুন + জুম করার কম্পন নিষ্ক্রিয় করা হয়েছে + জুম করার কম্পন সক্রিয় করা হয়েছে + আপনি যদি সম্প্রতি আপনার অ্যাকাউন্ট লগইন বিশদ পরিবর্তন করে থাকেন, তবে MicroG আনইনস্টল করুন এবং পুনরায় ইনস্টল করুন। @@ -1340,11 +1367,6 @@ 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-bs-rBA/strings.xml +++ b/patches/src/main/resources/addresources/values-bs-rBA/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 c6d2cecdc..84113b47c 100644 --- a/patches/src/main/resources/addresources/values-ca-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-ca-rES/strings.xml @@ -117,6 +117,11 @@ Toca el botó Continua i permet els canvis d'optimització." Iniciar sesión en el buffer de protocolo El registro de depuración incluye el búfer de protocolo Els registres de depuració no inclouen l\'amortiment de proto + "Si activeu aquest paràmetre, es registraran dades de disseny addicionals, inclòs el text en pantalla per a alguns components de la IU. + +Això pot ajudar a identificar components quan creeu filtres personalitzats. + +Tot i això, si activeu aquesta opció, també es registraran algunes dades de l'usuari, com ara la vostra adreça IP." Registre dels rastrejos de la pila Els registres de depuració inclouen el rastreig de la pila Els registres de depuració no inclouen el rastreig de la pila @@ -126,6 +131,15 @@ Toca el botó Continua i permet els canvis d'optimització." "Desactivar els missatges d'error d'avis oculta totes les notificacions d'error de ReVanced. No se t'informarà de cap esdeveniment inesperat." + Exporta els registres de depuració + Copia els registres de depuració de ReVanced al porta-retalls + El registre de depuració està desactivat + No s\'ha trobat cap registre + Registres copiats + No s\'han pogut exportar els registres: $s + Esborra els registres de depuració + Esborra tots els registres de depuració de ReVanced emmagatzemats + Registres esborrats Amagar les targetes d\'àlbums @@ -477,9 +491,6 @@ Ajusteu el volum lliscant verticalment a la part dreta de la pantalla" Opacitat del fons de la superposició de lliscament Valor d\'opacitat entre 0 i 100 L\'opacitat de lliscament ha d\'estar entre 0 i 100 - Color de la barra de progrés de la superposició lliscant - El color de la barra de progrés per als controls de volum i brillantor - Color de barra de progrés no vàlid Mida del text de la superposició lliscant La mida del text per a la superposició lliscant entre 1 i 30 La mida del text ha d\'estar entre 1 i 30 @@ -1321,6 +1332,22 @@ Si actives aquesta opció, es poden desbloquejar qualitats de vídeo més altes" Configuració de GmsCore Configuració de GmsCore + + Hàptica + Canvia la resposta hàptica + Desactiva els hàptics dels capítols + Els hàptics dels capítols estan desactivats + Els hàptics dels capítols estan activats + Desactiva els hàptics de cerca precisa + Els hàptics de cerca precisa estan desactivats + Els hàptics de cerca precisa estan activats + Desactiva els hàptics de desfer la cerca + Els hàptics de desfer la cerca estan desactivats + Els hàptics de desfer la cerca estan activats + Desactiva els hàptics d\'enfocament + Els hàptics de zoom estan desactivats + Els hàptics de zoom estan habilitats + Si recentment heu canviat les dades d\'inici de sessió del vostre compte, desinstal·leu i torneu a instal·lar MicroG. @@ -1339,11 +1366,6 @@ Si actives aquesta opció, es poden desbloquejar qualitats de vídeo més altes" El paràmetre de consulta de seguiment s\'elimina dels enllaços El paràmetre de consulta de seguiment no s\'elimina dels enllaços - - Desactiva els hàptics d\'enfocament - Els hàptics estan desactivats - Els hàptics estan habilitats - Forçar l\'idioma d\'àudio original S\'utilitza l\'idioma d\'àudio original 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 be98cf4ac..c0212969b 100644 --- a/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml +++ b/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml @@ -117,6 +117,11 @@ Klepněte na tlačítko Pokračovat a povolte změny optimalizace." Záznam bufferu protokolu Debugovací záznamy obsahují proto buffer Debugovací záznamy neobsahují proto buffer + "Povolením tohoto nastavení se bude zaznamenávat další data rozvržení, včetně textu na obrazovce pro některé komponenty uživatelského rozhraní. + +To může pomoci identifikovat komponenty při vytváření vlastních filtrů. + +Povolením této možnosti se však budou zaznamenávat i některá uživatelská data, jako je vaše IP adresa." Protokolovat trasování zásobníku Protokoly ladění obsahují trasování zásobníku Ladící protokoly nezahrnují sledování zásobníku @@ -126,6 +131,15 @@ Klepněte na tlačítko Pokračovat a povolte změny optimalizace." "Vypnutí chybových toastů skryje všechna chybová oznámení ReVanced. Nebudete informováni o žádné neočekávané události." + Exportovat ladicí protokoly + Zkopíruje ladicí protokoly ReVanced do schránky + Ladění je vypnuto + Nebyly nalezeny žádné protokoly + Protokoly zkopírovány + Nepodařilo se exportovat protokoly: $s + Vymazat ladicí protokoly + Vymaže všechny uložené ladicí protokoly ReVanced + Protokoly vymazány Skrýt karty alb @@ -477,9 +491,6 @@ Hlasitost se upravuje svislým přejetím po pravé straně obrazovky" Průsvitnost pozadí překrytí tažením Hodnota průsvitnosti mezi 0-100 Průsvitnost tažení musí být mezi 0-100 - Barva ukazatele průběhu překrytí přejetím - Barva ukazatele průběhu pro ovládání hlasitosti a jasu - Neplatná barva ukazatele průběhu Velikost textu překrytí přejetím Velikost textu překrytí přejetím mezi 1–30 Velikost textu musí být mezi 1–30 @@ -1321,6 +1332,22 @@ Povolením této funkce lze odemknout vyšší kvality videa" Nastavení GmsCore Nastavení pro GmsCore + + Haptická odezva + Změnit haptickou odezvu + Zakázat haptiku kapitol + Haptika kapitol je zakázána + Haptika kapitol je povolena + Zakázat haptiku pro přesné hledání + Haptická odezva při přesném vyhledávání je vypnutá + Haptika pro přesné hledání je povolena + Zakázat haptiku pro vrácení zpět vyhledávání + Haptika pro vrácení zpět vyhledávání je vypnutá + Haptika pro vrácení zpět vyhledávání je zapnutá + Zakázat haptiku pro zoom + Haptika zoomu je vypnutá + Haptika zoomu je zapnutá + Pokud jste nedávno změnili přihlašovací údaje svého účtu, odinstalujte a znovu nainstalujte MicroG. @@ -1339,11 +1366,6 @@ Povolením této funkce lze odemknout vyšší kvality videa" Sledovací parametr dotazu je odstraněn z odkazů Sledovací parametr dotazu není odstraněn z odkazů - - Zakázat haptiku pro zoom - Haptika je zakázána - Haptika je povolena - Vynutit původní jazyk zvuku Použít původní jazyk zvuku 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 56c523afa..668ea4ce0 100644 --- a/patches/src/main/resources/addresources/values-da-rDK/strings.xml +++ b/patches/src/main/resources/addresources/values-da-rDK/strings.xml @@ -117,6 +117,11 @@ Tap på knappen Fortsæt, og tillad optimeringsændringer." Logprotokolbuffer Fejlfindingslogge inkluderer protobuffer Fejlfindingslogge inkluderer ikke protobuffer + "Aktivering af denne indstilling logger yderligere layoutdata, inklusive tekst på skærmen for nogle UI-komponenter. + +Dette kan hjælpe med at identificere komponenter, når der oprettes brugerdefinerede filtre. + +Aktivering af dette vil dog også logge nogle brugerdata, såsom din IP-adresse." Logstakspor Fejlfindingslogge inkluderer stakspor Fejlfindingslogge inkluderer ikke stakspor @@ -126,6 +131,15 @@ Tap på knappen Fortsæt, og tillad optimeringsændringer." "Hvis du deaktiverer fejl-toasts, skjules alle ReVanced-fejlmeddelelser. Du modtager ikke notifikationer om uventede hændelser." + Eksportér fejlsøgningslogfiler + Kopierer ReVanced-fejlsøgningslogfiler til udklipsholderen + Fejlsøgningslogning er deaktiveret + Ingen logfiler fundet + Logfiler kopieret + Kunne ikke eksportere logfiler: $s + Ryd fejlsøgningslogfiler + Rydder alle gemte ReVanced-fejlsøgningslogfiler + Logfiler ryddet Skjul albumkort @@ -444,9 +458,6 @@ Juster lydstyrken ved at swipe lodret i højre side af skærmen" Baggrundsgennemsigtighed for swipe-overlay Gennemsigtighedsværdi mellem 0-100 Gennemsigtighed for swipe skal være mellem 0-100 - Farve på statuslinje for strygeoverlejring - Farven på statuslinjen for lydstyrke- og lysstyrkeknapper - Ugyldig farve til statuslinjen Tekststørrelse for strygeoverlejring Tekststørrelsen for strygeoverlejring mellem 1-30 Tekststørrelsen skal være mellem 1-30 @@ -1266,6 +1277,22 @@ Aktivering af dette kan låse op for højere videokvalitet" GmsCore Indstillinger Indstillinger for GmsCore + + Haptisk feedback + Skift haptisk feedback + Deaktivér haptics for kapitler + Haptics for kapitler er deaktiveret + Haptics for kapitler er aktiveret + Deaktivér præcis søge-haptics + Præcis søge-haptik er deaktiveret + Præcis søge-haptics er aktiveret + Deaktivér fortryd søge-haptik + Fortryd søge-haptik er deaktiveret + Fortryd søge-haptik er aktiveret + Deaktivér zoom haptics + Zoom haptics er deaktiveret + Zoom haptics er aktiveret + Hvis du for nylig har ændret dine kontooplysninger, skal du afinstallere og geninstallere MicroG. @@ -1284,11 +1311,6 @@ Aktivering af dette kan låse op for højere videokvalitet" Sporingsparameteren er fjernet fra links Sporingsforespørgselsparameteren er ikke fjernet fra links - - Deaktivér zoom haptics - Haptics er deaktiveret - Haptics er aktiveret - Tving originalt lydsprog Bruger originalt lydsprog 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 683669073..ab20ef3b8 100644 --- a/patches/src/main/resources/addresources/values-de-rDE/strings.xml +++ b/patches/src/main/resources/addresources/values-de-rDE/strings.xml @@ -113,6 +113,11 @@ Tippen Sie auf die Schaltfläche \"Fortfahren\" und erlauben Sie die Optimierung Protokollpuffer protokollieren Debug-Protokolle enthalten Protokollpuffer Debug-Protokolle enthalten kein Protokollpuffer + "Wenn Sie diese Einstellung aktivieren, werden zusätzliche Layoutdaten protokolliert, einschließlich Text auf dem Bildschirm für einige UI-Komponenten. + +Dies kann helfen, Komponenten bei der Erstellung benutzerdefinierter Filter zu identifizieren. + +Wenn Sie dies aktivieren, werden jedoch auch einige Benutzerdaten wie Ihre IP-Adresse protokolliert." Stacktraces protokollieren Debug-Protokolle enthalten Stacktrace Debug-Logs enthalten keine Stack-Traces @@ -122,6 +127,15 @@ Tippen Sie auf die Schaltfläche \"Fortfahren\" und erlauben Sie die Optimierung "Das Ausschalten von Fehler-Toasts blendet alle Benachrichtigungen über Fehler in ReVanced aus. Sie werden nicht über unerwartete Ereignisse informiert." + Debug-Protokolle exportieren + Kopiert ReVanced-Debug-Protokolle in die Zwischenablage + Debug-Protokollierung ist deaktiviert + Keine Protokolle gefunden + Protokolle kopiert + Fehler beim Exportieren von Protokollen: $s + Debug-Protokolle löschen + Löscht alle gespeicherten ReVanced-Debug-Protokolle + Protokolle gelöscht Albumkarten ausblenden @@ -470,9 +484,6 @@ Passen Sie die Helligkeit an, indem Sie auf der linken Seite des Bildschirms ver Bildschirmüberlagerung Deckkraft Swipe Deckkraftwert zwischen 0-100 Die Wischdeckkraft muss zwischen 0 und 100 liegen - Farbe des Fortschrittsbalkens für die Wischgesten-Überlagerung - Die Farbe des Fortschrittsbalkens für Lautstärke- und Helligkeitsregler - Ungültige Farbe für den Fortschrittsbalken Textgröße der Wischgesten-Überlagerung Die Textgröße für die Wischgesten-Überlagerung zwischen 1 und 30 Die Textgröße muss zwischen 1 und 30 liegen @@ -1315,6 +1326,22 @@ Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet w GmsCore Einstellungen Einstellungen für GmsCore + + Haptisches Feedback + Haptisches Feedback ändern + Kapitelhaptik deaktivieren + Kapitelhaptik ist deaktiviert + Kapitelhaptik ist aktiviert + Präzise Suchhaptik deaktivieren + Die präzise Suchhaptik ist deaktiviert + Präzise Suchhaptik ist aktiviert + Haptik für das Rückgängigmachen der Suche deaktivieren + Die Haptik für das Rückgängigmachen der Suche ist deaktiviert + Die Haptik für das Rückgängigmachen der Suche ist aktiviert + Zoomhaptik deaktivieren + Zoomhaptik ist deaktiviert + Zoomhaptik ist aktiviert + Wenn Sie kürzlich Ihre Kontoanmeldedaten geändert haben, deinstallieren Sie MicroG und installieren Sie es erneut. @@ -1333,11 +1360,6 @@ Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet w Tracking-Abfrageparameter wird von Links entfernt Tracking-Abfrageparameter wird nicht von Links entfernt - - Zoomhaptik deaktivieren - Haptik ist deaktiviert - Haptik ist aktiviert - Original Audio erzwingen Original-Audiosprache verwenden 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 c39330ae2..473b06f42 100644 --- a/patches/src/main/resources/addresources/values-el-rGR/strings.xml +++ b/patches/src/main/resources/addresources/values-el-rGR/strings.xml @@ -117,6 +117,11 @@ Second \"item\" text" Καταγραφή του buffer πρωτοκόλλου Τα αρχεία καταγραφής σφαλμάτων περιλαμβάνουν το buffer του πρωτοκόλλου Τα αρχεία καταγραφής σφαλμάτων δεν περιλαμβάνουν τον buffer πρωτοκόλλου + "Η ενεργοποίηση αυτής της ρύθμισης θα καταγράψει επιπλέον δεδομένα διάταξης, συμπεριλαμβανομένου του κειμένου στην οθόνη για ορισμένα στοιχεία διεπαφής χρήστη. + +Αυτό μπορεί να βοηθήσει στον εντοπισμό στοιχείων κατά τη δημιουργία προσαρμοσμένων φίλτρων. + +Ωστόσο, η ενεργοποίηση αυτής της ρύθμισης θα καταγράψει επίσης ορισμένα δεδομένα χρήστη, όπως τη διεύθυνση IP σας." Καταγραφή ιχνών στοίβας Τα αρχεία καταγραφής σφαλμάτων περιλαμβάνουν ίχνη στοίβας Τα αρχεία καταγραφής σφαλμάτων δεν περιλαμβάνουν ίχνη στοίβας @@ -126,6 +131,15 @@ Second \"item\" text" "Η απενεργοποίηση των μηνυμάτων σφαλμάτων κρύβει όλες τις ειδοποιήσεις σφαλμάτων που αφορούν το ReVanced. Δεν θα ειδοποιηθείτε για τυχόν απρόβλεπτα γεγονότα." + Εξαγωγή αρχείων καταγραφής εντοπισμού σφαλμάτων + Αντιγραφή των αρχείων καταγραφής εντοπισμού σφαλμάτων ReVanced στο πρόχειρο + Η καταγραφή εντοπισμού σφαλμάτων είναι απενεργοποιημένη + Δεν βρέθηκαν αρχεία καταγραφής + Τα αρχεία καταγραφής αντιγράφηκαν + Αποτυχία εξαγωγής αρχείων καταγραφής: $s + Εκκαθάριση αρχείων καταγραφής εντοπισμού σφαλμάτων + Εκκαθάριση όλων των αποθηκευμένων αρχειών καταγραφής εντοπισμού σφαλμάτων ReVanced + Τα αρχεία καταγραφής εκκαθαρίστηκαν Κάρτες άλμπουμ @@ -479,9 +493,6 @@ Second \"item\" text" Αδιαφάνεια φόντου σάρωσης Τιμή αδιαφάνειας μεταξύ 0-100 Η αδιαφάνεια σάρωσης πρέπει να είναι μεταξύ 0-100 - Χρώμα γραμμής προόδου σάρωσης - Το χρώμα της γραμμής προόδου για τα στοιχεία ελέγχου έντασης ήχου και φωτεινότητας - Μη έγκυρο χρώμα γραμμής προόδου Μέγεθος κειμένου σάρωσης Το μέγεθος κειμένου για τα στοιχεία ελέγχου σάρωσης μεταξύ 1-30 Το μέγεθος κειμένου πρέπει να είναι μεταξύ 1-30 @@ -1321,6 +1332,22 @@ Second \"item\" text" Ρυθμίσεις GmsCore Ρυθμίσεις για το MicroG GmsCore + + Απόκριση δόνησης + Αλλαγή απόκρισης δόνησης + Απενεργοποίηση απόκρισης δόνησης κατά την αλλαγή κεφαλαίων + Η απόκριση δόνησης κατά την αλλαγή κεφαλαίων είναι απενεργοποιημένη + Η απόκριση δόνησης κατά την αλλαγή κεφαλαίων είναι ενεργοποιημένη + Απενεργοποίηση απόκρισης δόνησης κατά τη λειτουργία ακριβής αναζήτησης + Η απόκριση δόνησης κατά τη λειτουργία ακριβής αναζήτησης είναι απενεργοποιημένη + Η απόκριση δόνησης κατά τη λειτουργία ακριβής αναζήτησης είναι ενεργοποιημένη + Απενεργοποίηση απόκρισης δόνησης κατά τη λειτουργία «Αφήστε για ακύρωση» + Η απόκριση δόνησης κατά τη λειτουργία «Αφήστε για ακύρωση» είναι απενεργοποιημένη + Η απόκριση δόνησης κατά τη λειτουργία «Αφήστε για ακύρωση» είναι ενεργοποιημένη + Απενεργοποίηση απόκρισης δόνησης χειρονομίας ζουμ + Η απόκριση δόνησης της χειρονομίας ζουμ είναι απενεργοποιημένη + Η απόκριση δόνησης της χειρονομίας ζουμ είναι ενεργοποιημένη + Εάν αλλάξατε πρόσφατα τα στοιχεία σύνδεσης του λογαριασμού σας, απεγκαταστήστε και εγκαταστήστε ξανά το MicroG. @@ -1339,11 +1366,6 @@ Second \"item\" text" Η παράμετρος παρακολούθησης αφαιρείται από τους συνδέσμους στην κοινοποίηση Η παράμετρος παρακολούθησης δεν αφαιρείται από τους συνδέσμους στην κοινοποίηση - - Απενεργοποίηση απόκρισης δόνησης χειρονομίας ζουμ - Η απόκριση δόνησης είναι απενεργοποιημένη - Η απόκριση δόνησης είναι ενεργοποιημένη - Εξαναγκασμός αρχικής γλώσσας ήχου Χρησιμοποιείται η αρχική γλώσσα ήχου 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 4489dfad8..85e113050 100644 --- a/patches/src/main/resources/addresources/values-es-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-es-rES/strings.xml @@ -116,6 +116,11 @@ Desactivar las optimizaciones de batería para MicroG no afectará negativamente Búfer de protocolo de registro Los registros de depuración incluyen el búfer proto Los registros de depuración no incluyen el búfer proto + "Si activas este ajuste, se registrarán datos de diseño adicionales, incluido el texto en pantalla de algunos componentes de la IU. + +Esto puede ayudar a identificar componentes al crear filtros personalizados. + +Sin embargo, si activas esto, también se registrarán algunos datos del usuario, como tu dirección IP." Registrar stack traces Los registros de depuración incluyen stack trace Los registros de depuración no incluyen stack trace @@ -123,6 +128,15 @@ Desactivar las optimizaciones de batería para MicroG no afectará negativamente Se muestra un toast si se produce un error No se muestra un toast si se produce un error "Desactivar las notificaciones de error oculta todas las notificaciones de error de ReVanced." + Exportar registros de depuración + Copia los registros de depuración de ReVanced al portapapeles + El registro de depuración está desactivado + No se encontraron registros + Registros copiados + Error al exportar los registros: $s + Borrar registros de depuración + Borra todos los registros de depuración de ReVanced almacenados + Registros borrados Ocultar álbumes @@ -474,9 +488,6 @@ Ajusta el volumen deslizando verticalmente en el lado derecho de la pantalla"Opacidad del fondo de la superposición de deslizamiento Valor de opacidad entre 0-100 La opacidad de la superposición de deslizamiento debe estar entre 0 y 100 - Color de la barra de progreso de la superposición de deslizamiento - El color de la barra de progreso para los controles de volumen y brillo - Color de barra de progreso no válido Tamaño del texto de la superposición de deslizamiento El tamaño del texto para la superposición de deslizamiento entre 1 y 30 El tamaño del texto debe estar entre 1 y 30 @@ -1310,6 +1321,22 @@ Habilitar esto puede desbloquear calidades de vídeo más altas" Ajustes de GmsCore Configuración de GmsCore + + Vibración háptica + Cambiar la vibración háptica + Desactivar la respuesta háptica de los capítulos + La respuesta háptica de los capítulos está desactivada + La respuesta háptica de los capítulos está activada + Desactivar la respuesta háptica de la búsqueda precisa + La respuesta háptica de búsqueda precisa está desactivada + La respuesta háptica de la búsqueda precisa está activada + Desactivar la respuesta háptica de deshacer la búsqueda + La respuesta háptica de deshacer la búsqueda está desactivada + La respuesta háptica de deshacer la búsqueda está activada + Desactivar la respuesta háptica del zoom + La respuesta háptica del zoom está desactivada + La respuesta háptica del zoom está activada + Si has cambiado recientemente los datos de inicio de sesión de tu cuenta, desinstala y vuelve a instalar MicroG. @@ -1328,11 +1355,6 @@ Habilitar esto puede desbloquear calidades de vídeo más altas" Parámetro de la consulta de seguimiento se elimina de los enlaces Parámetro de la consulta de seguimiento no se elimina de los enlaces - - Desactivar hápticas al hacer zoom - Hápticas desactivadas - Haptics están habilitados - Forzar idioma de audio original Usar el idioma de audio original 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 280a2ccf3..a5b98c054 100644 --- a/patches/src/main/resources/addresources/values-et-rEE/strings.xml +++ b/patches/src/main/resources/addresources/values-et-rEE/strings.xml @@ -117,6 +117,11 @@ Vajutage jätkamise nuppu ja lubage optimeerimismuutused." Logi protokolipuffari Vea logid sisaldavad protokolipuffari Vea logid ei sisalda protokolipuffari + "Selle sätte lubamine logib täiendavaid paigutuse andmeid, sealhulgas mõne kasutajaliidese komponendi ekraanil kuvatavat teksti. + +See võib aidata komponente tuvastada kohandatud filtrite loomisel. + +Selle lubamine logib aga ka mõningaid kasutajaandmeid, näiteks teie IP-aadressi." Logi stekira jäljed Silumispäevikud sisaldavad virna jäljendamise Silumispäevikud ei sisalda virna jäljendamise @@ -126,6 +131,15 @@ Vajutage jätkamise nuppu ja lubage optimeerimismuutused." "Vea teadete väljalülitamine peidab kõik ReVanced i veateadete märguanded. Teid ei teavitata ühestki ootamatust sündmusest." + Ekspordi silumislogid + Kopeerib ReVanced silumislogid lõikelauale + Silumislogimine on keelatud + Logisid ei leitud + Logid kopeeritud + Logide eksportimine ebaõnnestus: $s + Puhasta silumislogid + Puhastab kõik salvestatud ReVanced silumislogid + Logid puhastatud Peida albumikaardid @@ -477,9 +491,10 @@ Helitugevuse reguleerimiseks pühkige ekraani paremal küljel vertikaalselt"Pühkiva katte tausta läbipaistvus Läbipaistvuse väärtus vahemikus 0-100 Pühkiva katte läbipaistvus peab olema vahemikus 0-100 - Liigutamise ülekatte edenemisriba värv - Helitugevuse ja heleduse juhtnuppude edenemisriba värv - Vigane edenemisriba värv + Pühkige ekraani heleduse värvi + Heleduse juhtnuppude edenemisriba värv + Pühkige ekraani helitugevuse värvi + Helitugevuse juhtnuppude edenemisriba värv Liigutamise ülekatte teksti suurus Liigutamise ülekatte teksti suurus vahemikus 1–30 Teksti suurus peab olema vahemikus 1–30 @@ -1322,6 +1337,22 @@ Selle lubamine võib avada kõrgema video kvaliteedi" GmsCore seaded GmsCore seaded + + Haptiline tagasiside + Muuda haptilist tagasisidet + Keela peatükkide hääled + Peatükkide hääled on keelatud + Peatükkide hääled on lubatud + Keela täpse otsingu hääled + Täpse otsimise haptika on keelatud + Täpse otsingu hääled on lubatud + Keela otsimise tagasivõtmise haptika + Otsimise tagasivõtmise haptika on keelatud + Otsimise tagasivõtmise haptika on lubatud + Keela suumimise hääled + Suumi haptika on keelatud + Suumi haptika on lubatud + Kui sa hiljuti muutsid oma konto sisselogimisandmeid, siis eemalda ja installeeri MicroG uuesti. @@ -1340,11 +1371,6 @@ Selle lubamine võib avada kõrgema video kvaliteedi" Jälgimise päringuparameeter eemaldatakse linkidest Jälgimise päringuparameeter ei eemaldata linkidest - - Keela suumimise hääled - Hääled on keelatud - Hääled on lubatud - Sunni originaalheli keel Algse helikeele kasutamine 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-eu-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-eu-rES/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 7441ceffc..92217d21d 100644 --- a/patches/src/main/resources/addresources/values-fa-rIR/strings.xml +++ b/patches/src/main/resources/addresources/values-fa-rIR/strings.xml @@ -250,6 +250,8 @@ Second \"item\" text" + + @@ -258,8 +260,6 @@ 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 439dc630c..20e669226 100644 --- a/patches/src/main/resources/addresources/values-fi-rFI/strings.xml +++ b/patches/src/main/resources/addresources/values-fi-rFI/strings.xml @@ -471,9 +471,6 @@ Säädä äänenvoimakkuutta pyyhkäisemällä pystysuoraan näytön oikealta pu Pyyhkäisypeittokuvan taustan läpinäkymättömyys Läpinäkymättömyysarvo 0–100 välillä Pyyhkäisypeittokuvan läpinäkymättömyyden tulee olla 0–100 välillä - Pyyhkäisypeittokuvan edistymispalkin väri - Äänenvoimakkuuden ja kirkkauden säätimien edistymispalkin väri - Virheellinen edistymispalkin väri Pyyhkäisypeittokuvan tekstin koko Pyyhkäisypeittokuvan tekstin koko 1–30 välillä Tekstin koon tulee olla 1–30 välillä @@ -1313,6 +1310,9 @@ Tämä voi avata korkealaatuisemmat videot" GmsCore-asetukset GmsCoren asetukset + + Poista zoomaushaptiikka käytöstä + Jos olet äskettäin muuttanut tilisi kirjautumistietoja, poista ja asenna MicroG uudelleen. @@ -1331,11 +1331,6 @@ Tämä voi avata korkealaatuisemmat videot" Seurantakyselyparametrit poistetaan linkeistä Seurantakyselyparametrejä ei poisteta linkeistä - - Poista zoomaushaptiikka käytöstä - Haptiikka ei ole käytössä - Haptiikka on käytössä - Pakota alkuperäinen äänen kieli Käytetään alkuperäistä ääntä 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 70363eec8..6ff3030cf 100644 --- a/patches/src/main/resources/addresources/values-fil-rPH/strings.xml +++ b/patches/src/main/resources/addresources/values-fil-rPH/strings.xml @@ -117,6 +117,11 @@ Tapikin ang pindutan ng pagpapatuloy at payagan ang mga pagbabago sa pag-optimiz Mag-log protocol buffer Kasama sa mga debug log ang proto buffer Ang mga debug log ay hindi kasama ang proto buffer + "Ang pagpapagana sa setting na ito ay magtatala ng karagdagang data ng layout, kabilang ang on-screen na teksto para sa ilang bahagi ng UI. + +Maaaring makatulong ito na matukoy ang mga bahagi kapag lumilikha ng mga custom na filter. + +Gayunpaman, ang pagpapagana nito ay magtatala rin ng ilang data ng user gaya ng iyong IP address." Mga bakas ng stack ng log Kasama sa mga debug log ang stack trace Hindi kasama sa mga debug log ang stack trace @@ -126,6 +131,15 @@ Tapikin ang pindutan ng pagpapatuloy at payagan ang mga pagbabago sa pag-optimiz "Ang pag-off ng mga toast ng error ay nagtatago ng lahat ng mga abiso ng error ng ReVanced. Hindi ka aabisuhan ng anumang hindi inaasahang mga kaganapan." + I-export ang mga debug log + Kinokopya ang mga ReVanced debug log sa clipboard + Hindi pinagana ang pag-log ng debug + Walang nakitang mga log + Nakopya ang mga log + Nabigong i-export ang mga log: $s + I-clear ang mga debug log + Iki-clear ang lahat ng nakaimbak na ReVanced debug log + Na-clear ang mga log Itago ang mga album card @@ -477,9 +491,10 @@ Ayusin ang volume sa pamamagitan ng pag-swipe nang patayo sa kanang bahagi ng sc Transparency ng background ng swipe overlay Halaga ng opacity sa pagitan ng 0-100 Ang opacity ng swipe ay dapat nasa pagitan ng 0-100 - Kulay ng progress bar ng swipe overlay - Ang kulay ng progress bar para sa mga kontrol ng volume at brightness - Hindi wasto ang kulay ng progress bar + Kulay ng liwanag ng swipe overlay + Ang kulay ng progress bar para sa mga kontrol ng liwanag + Kulay ng volume ng swipe overlay + Ang kulay ng progress bar para sa mga kontrol ng volume Laki ng teksto ng swipe overlay Ang laki ng teksto para sa swipe overlay sa pagitan ng 1-30 Ang laki ng teksto ay dapat sa pagitan ng 1-30 @@ -1320,6 +1335,22 @@ Ang pagpapagana nito ay maaaring magbukas ng mas mataas na kalidad ng video"Mga Setting ng GmsCore Mga setting para sa GmsCore + + Haptic feedback + Baguhin ang haptic feedback + Huwag paganahin ang chapters haptics + Hindi pinagana ang Chapters haptics + Pinagana ang Chapters haptics + Huwag paganahin ang tumpak na paghahanap ng haptics + Hindi pinagana ang tumpak na paghahanap ng haptics + Pinagana ang tumpak na paghahanap ng haptics + Huwag paganahin ang seek undo haptics + Hindi pinagana ang seek undo haptics + Pinagana ang seek undo haptics + Huwag paganahin ang zoom haptics + Hindi pinagana ang zoom haptics + Pinagana ang zoom haptics + Kung kamakailan mo lang binago ang mga detalye sa pag-login sa iyong account, i-uninstall at muling i-install ang MicroG. @@ -1338,11 +1369,6 @@ Ang pagpapagana nito ay maaaring magbukas ng mas mataas na kalidad ng video"Ang parameter ng query sa pagsubaybay ay tinanggal mula sa mga link Ang parameter ng query sa pagsubaybay ay hindi inaalis sa mga link - - Huwag paganahin ang zoom haptics - Naka-disable ang Haptics - Pinagana ang Haptics - Pilitin ang orihinal na wika ng audio Ginagamit ang orihinal na wika ng audio 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 83b756f5c..e1bfa05f5 100644 --- a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml +++ b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml @@ -117,6 +117,11 @@ Appuyez sur le bouton Continuer et autorisez les modifications." Journaliser les protobufs Les journaux de débogage incluent les protocol buffers Les journaux de débogage n\'incluent pas les protocol buffers + "En activant cette option, des données supplémentaires relatives à la mise en page seront enregistrées, dont le texte à l'écran de certains composants de l'interface utilisateur. + +Cela peut aider à identifier les composants lors de la création de filtres personnalisés. + +Toutefois, l'activation de cette option entraînera également l'enregistrement de certaines données utilisateur, telles que votre adresse IP." Journaliser les stack traces Les journaux de débogage incluent les stack traces Les journaux de débogage n\'incluent pas les stack traces @@ -126,6 +131,15 @@ Appuyez sur le bouton Continuer et autorisez les modifications." "La désactivation des messages toasts d'erreur masque toutes les notifications d'erreur ReVanced. Vous ne serez pas informé des événements inattendus." + Exporter les journaux de débogage + Copie les journaux de débogage ReVanced dans le presse-papiers + La journalisation de débogage est désactivée + Aucun journal trouvé + Journaux copiés + Échec de l\'exportation des journaux : $s + Effacer les journaux de débogage + Efface tous les journaux de débogage ReVanced stockés + Journaux effacés Masquer les fiches d\'album @@ -477,9 +491,6 @@ Réglez le volume en balayant verticalement sur le côté droit de l'écran"Opacité de l\'arrière-plan de l\'overlay des gestes Valeur de l\'opacité entre 0 et 100 L\'opacité doit être comprise entre 0 et 100 pour les gestes - Couleur de la barre de progression de l\'overlay des gestes - La couleur de la barre de progression pour les commandes de volume et de luminosité - Couleur de barre de progression invalide Taille du texte de l\'overlay des gestes La taille du texte de l\'overlay des gestes comprise entre 1 et 30 La taille du texte doit être comprise entre 1 et 30 @@ -1321,6 +1332,22 @@ Activer cette option peut déverrouiller des qualités vidéo supérieures"Paramètres GmsCore Paramètres relatifs à GmsCore + + Retour haptique + Modifiez les retours haptiques + Désactiver le retour haptique des chapitres + Le retour haptique des chapitres est désactivé + Le retour haptique des chapitres est activé + Désactiver le retour haptique de la recherche précise + Le retour haptique de la recherche précise est désactivé + Le retour haptique de la recherche précise est activé + Désactiver le retour haptique d\'annulation de la recherche + Le retour haptique d\'annulation de la recherche est désactivé + Le retour haptique d\'annulation de la recherche est activé + Désactiver le retour haptique des actions de zoom + Le retour haptique du zoom est désactivé + Le retour haptique du zoom est activé + Si vous avez récemment modifié vos informations de connexion, désinstallez et réinstallez MicroG. @@ -1339,11 +1366,6 @@ Activer cette option peut déverrouiller des qualités vidéo supérieures"Le paramètre de requête destiné au suivi est supprimé des liens Le paramètre de requête destiné au suivi n\'est pas supprimé des liens - - Désactiver le retour haptique des actions de zoom - Le retour haptique est désactivé - Le retour haptique est activé - Forcer la langue audio d\'origine Utilisation de la langue audio d\'origine 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 b8b3f6503..86c69102e 100644 --- a/patches/src/main/resources/addresources/values-ga-rIE/strings.xml +++ b/patches/src/main/resources/addresources/values-ga-rIE/strings.xml @@ -117,6 +117,11 @@ Brúigh an cnaipe leanúnaí agus ligean athruithe optúimíochta." Maolán prótacal logála Cuimsíonn logaí dífhabhtaithe maolán Ní chuimsíonn logaí dífhabhtaithe maolán proto + "Logálfaidh an socrú seo sonraí breise leagain amach, lena n-áirítear téacs ar an scáileán do chomhpháirteanna UI áirithe. + +Is féidir leis seo cabhrú le comhpháirteanna a aithint agus scagairí saincheaptha á gcruthú. + +Mar sin féin, logálfaidh sé seo roinnt sonraí úsáideora freisin, mar shampla do sheoladh IP." Rianta cruach logála Cuimsíonn logaí dífhabhtaithe rian cruach Ní chuimsíonn logaí dífhabhtaithe rian cruach @@ -126,6 +131,15 @@ Brúigh an cnaipe leanúnaí agus ligean athruithe optúimíochta." "Má mhúchtar tóstaí earráide, folaítear gach fógra earráide ReVanced. Ní chuirfear ar an eolas thú faoi aon imeachtaí gan choinne." + Easpórtáil logaí dífhabhtaithe + Cóipeálann sé logaí dífhabhtaithe ReVanced chuig an gearrthaisce + Tá logáil dífhabhtaithe díchumasaithe + Ní bhfuarthas aon loga + Lógaí cóipeáilte + Theip ar lógaí a easpórtáil: $s + Glan logaí dífhabhtaithe + Glanann sé gach loga dífhabhtaithe ReVanced stóráilte + Lógaí glanta Folaigh cártaí albam @@ -477,9 +491,6 @@ Coigeartaigh an toirt trí haisceartán go hingearach ar thaobh deas an scáile Réabhlóid thrasláiteachta na gcúlra léaráidí Luach léaráidí idir 0-100 Caithfidh léaráidí traslaithe a bheith idir 0-100 - Dath an bharra dul chun cinn forleagain swipe - Dath an bharra dul chun cinn le haghaidh rialuithe toirte agus gile - Dath barra dul chun cinn neamhbhailí Méid téacs an fhorleagain swipe Méid téacs an fhorleagain swipe idir 1-30 Caithfidh an méid téacs a bheith idir 1-30 @@ -1322,6 +1333,22 @@ Is féidir le seo caighdeáin físeáin níos airde a dhíghlasáil" Socruithe GmsCore Socruithe le haghaidh GmsCore + + Aiseolas haptach + Athraigh aiseolas haptach + Díchumasaigh haptics caibidlí + Tá haptics caibidlí díchumasaithe + Tá haptics caibidlí cumasaithe + Díchumasaigh haptics beacht cuardaigh + Tá haptics beachtais díchumasaithe + Tá haptics beacht cuardaigh cumasaithe + Díchumasaigh haptics díthurais + Tá haptics díthurais díchumasaithe + Tá haptics díthurais cumasaithe + Díchumasaigh súmáil haptics + Tá súmáil haptics díchumasaithe + Tá súmáil haptics cumasaithe + Má d’athraigh tú sonraí logála isteach do chuntais le déanaí, ansin díshuiteáil agus athshuiteáil MicroG. @@ -1340,11 +1367,6 @@ Is féidir le seo caighdeáin físeáin níos airde a dhíghlasáil" Baintear paraiméadar ceisteanna rianaithe ó naisc Ní bhaintear paraiméadar fiosrúcháin rianaithe ó naisc - - Díchumasaigh súmáil haptics - Tá Haptics díchumasaithe - Tá Haptics cumasaithe - Fórsaigh teanga bhunaidh na fuaime Ag úsáid teanga bhunaidh na fuaime 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-gl-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-gl-rES/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-gu-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-gu-rIN/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-hi-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-hi-rIN/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-hr-rHR/strings.xml +++ b/patches/src/main/resources/addresources/values-hr-rHR/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 4d3970ed0..731c7ab69 100644 --- a/patches/src/main/resources/addresources/values-hu-rHU/strings.xml +++ b/patches/src/main/resources/addresources/values-hu-rHU/strings.xml @@ -117,6 +117,11 @@ Kattintson a folytatás gombra, és engedélyezze az optimalizálási módosít Napló protokoll puffer A hibakeresési naplók protopuffert tartalmaznak A hibakeresési naplók nem tartalmaznak protopuffert + "Ennek a beállításnak az engedélyezése további elrendezési adatokat fog naplózni, beleértve néhány felhasználói felületi komponens képernyőn megjelenő szövegét. + +Ez segíthet azonosítani az összetevőket egyedi szűrők létrehozásakor. + +Ez a funkció azonban néhány felhasználói adatot is naplóz, például az IP-címét." Naplóverem nyomai A hibakeresési naplók tartalmazzák a verem nyomkövetését A hibakeresési naplók nem tartalmazzák a verem nyomkövetését @@ -126,6 +131,15 @@ Kattintson a folytatás gombra, és engedélyezze az optimalizálási módosít "A hibaüzenetek kikapcsolása elrejti az összes ReVanced hibaértesítést. Nem fog értesülni semmilyen váratlan eseményről." + Hibakeresési naplók exportálása + A ReVanced hibakeresési naplóit a vágólapra másolja + A hibakeresési naplózás ki van kapcsolva + Nem találhatók naplók + Naplók másolva + Nem sikerült exportálni a naplókat: $s + Hibakeresési naplók törlése + Törli az összes tárolt ReVanced hibakeresési naplót + Naplók törölve Album kártyák elrejtése @@ -477,9 +491,6 @@ A hangerő a képernyő jobb oldalán függőlegesen húzva állítható be"Az áthúzás átfedésének átlátszósága Az átlátszóság értéke 0-100 között legyen A csúsztatás átlátszóságának 0 és 100 között kell lennie - Áthúzás fedvény folyamatjelző sáv színe - A hangerő és fényerő szabályozók folyamatjelző sávjának színe - Érvénytelen folyamatjelző sávszín Áthúzás fedvény szövegmérete Az áthúzás fedvény szövegmérete 1-30 között A szövegméretnek 1-30 között kell lennie @@ -1319,6 +1330,22 @@ Ez a beállítás lehetővé teszi a magasabb videóminőségek feloldását"GmsCore beállítások A GmsCore beállításai + + Haptikus visszajelzés + Haptikus visszajelzés módosítása + Fejezetek haptikus visszajelzésének letiltása + A fejezetek haptikus visszajelzése le van tiltva + A fejezetek haptikus visszajelzése engedélyezve van + Pontos keresés haptikus visszajelzésének letiltása + A pontos keresés haptikus visszajelzése ki van kapcsolva + A pontos keresés haptikus visszajelzése engedélyezve van + Keresés visszavonása haptikus visszajelzésének letiltása + A keresés visszavonása haptikus visszajelzése ki van kapcsolva + A keresés visszavonása haptikus visszajelzése be van kapcsolva + Haptikus zoom letiltása + Haptikus zoom le van tiltva + Haptikus zoom be van kapcsolva + Ha nemrég módosította a fiókja bejelentkezési adatait, távolítsa el, majd telepítse újra a MicroG-t. @@ -1337,11 +1364,6 @@ Ez a beállítás lehetővé teszi a magasabb videóminőségek feloldását"A nyomkövetési lekérdezési paraméter eltávolítva a linkekből A nyomkövetési lekérdezési paraméter nincs eltávolítva a linkekből - - Haptikus zoom letiltása - A haptikus zoom letiltva - A haptikus zoom engedélyezve - Eredeti hang kikényszerítése Eredeti hang használata a hang nyelvén 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 755f38190..835630853 100644 --- a/patches/src/main/resources/addresources/values-hy-rAM/strings.xml +++ b/patches/src/main/resources/addresources/values-hy-rAM/strings.xml @@ -117,6 +117,11 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել Բուֆերի արձանագրությունը մտնել Մարմնացման առաջնորդման մատնանշումները պարունակում են բուֆերի տարր Մարմնացման առաջնորդման մատնանշումները ներառում են բուֆերի տարր + "Այս կարգավորումը միացնելը կգրանցի լրացուցիչ դասավորության տվյալներ, ներառյալ էկրանի տեքստը որոշ UI բաղադրիչների համար։ + +Սա կարող է օգնել բացահայտել բաղադրիչները՝ հատուկ զտիչներ ստեղծելիս։ + +Այնուամենայնիվ, սա միացնելը կգրանցի նաև օգտատիրոջ որոշ տվյալներ, ինչպիսիք են ձեր IP հասցեն:" Մուտքագրել կուտակային կետերի հետքեր Մարմնացման առաջնորդման մատնանշումները պարունակում են կուտակային կետի հետք Մարմնացման առաջնորդման մատնանշումները չեն պարունակում կուտակային կետի հետք @@ -126,6 +131,15 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել "Սխալների տոաստի անջատումը թաքցնում է ReVanced-ի բոլոր սխալների ծանուցումները։ Դուք չեք ստանա ան予期した出来事ի մասին ծանուցում։" + Արտահանել վրեժխնդրության կարգաբերման մատյանները + Պատճենում է ReVanced-ի կարգաբերման մատյանները սեղմատախտակին + Վրեժխնդրության մատյանների գրանցումն անջատված է + Մատյաններ չեն գտնվել + Մատյանները պատճենված են + Մատյանների արտահանումը ձախողվեց. $s + Մաքրել վրեժխնդրության մատյանները + Մաքրում է բոլոր պահված ReVanced կարգաբերման մատյանները + Մատյանները մաքրվել են Թաքցնել ալբոմի քարտերը @@ -477,9 +491,6 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել Սողացման ծածկույթի ֆոնի անթափանցություն Անթափանցության արժեք 0-100 միջակայքում Սողալու անթափանցությունը պետք է լինի 0-100 միջակայքում - Սահեցրեք շերտի առաջընթացի սանդղակի գույնը - Ձայնի և պայծառության կառավարման համար նախատեսված առաջընթացի սանդղակի գույնը - Առաջընթացի սանդղակի անվավեր գույն Սահեցրեք շերտի տեքստի չափը Սահեցրեք շերտի տեքստի չափը 1-30 միջակայքում Տեքստի չափը պետք է լինի 1-30 միջակայքում @@ -1322,6 +1333,22 @@ Mini-player-ը կարող է գրավվել էկրանից դուրս՝ դեպի GmsCore կարգավորումներ GmsCore-ի կարգավորումներ + + Հպումային արձագանք + Փոխել հպումային արձագանքը + Անջատել գլուխների հպումները + Գլուխների հպումներն անջատված են + Գլուխների հպումները միացված են + Անջատել ճշգրիտ փնտրման հպումները + Ճշգրիտ որոնման հպումն անջատված է + Ճշգրիտ փնտրման հպումները միացված են + Անջատել հետարկել որոնման հպումը + Հետարկել որոնման հպումն անջատված է + Հետարկել որոնման հպումը միացված է + Զուումի հպումների ակտիվացումը անջատել + Զուումի հպումն անջատված է + Զուումի հպումը միացված է + Եթե վերջերս փոխել եք ձեր հաշվի մուտքի տվյալները, ապա ջնջեք և նորից տեղադրեք MicroG-ն: @@ -1340,11 +1367,6 @@ Mini-player-ը կարող է գրավվել էկրանից դուրս՝ դեպի Հետևողականության հարցումի պարամետրը հեռացվում է հղումներից Հետևողականության հարցումի պարամետրը չի հեռացվում հղումներից - - Զուումի հպումների ակտիվացումը անջատել - Հպումները անջատված են - Հպումները ակտիվացված են - Բնօրինակ ձայն օգտագործել լեզուն Օգտագործելով ձայնային օրիգինալ լեզուն 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 ae189d755..8139cf013 100644 --- a/patches/src/main/resources/addresources/values-in-rID/strings.xml +++ b/patches/src/main/resources/addresources/values-in-rID/strings.xml @@ -117,6 +117,11 @@ Ketuk tombol lanjutkan dan izinkan perubahan pengoptimalan." Buffer protokol log Log debug termasuk buffer proto Log debug tidak menyertakan buffer proto + "Mengaktifkan setelan ini akan mencatat data tata letak tambahan, termasuk teks pada layar untuk beberapa komponen UI. + +Ini dapat membantu mengidentifikasi komponen saat membuat filter khusus. + +Namun, mengaktifkan ini juga akan mencatat beberapa data pengguna seperti alamat IP Anda." Jejak log stack Log debug menyertakan jejak stack Log debug tidak menyertakan jejak stack @@ -126,6 +131,15 @@ Ketuk tombol lanjutkan dan izinkan perubahan pengoptimalan." "Mematikan notifikasi kesalahan menyembunyikan semua notifikasi kesalahan ReVanced. Anda tidak akan diberi tahu tentang kejadian yang tidak terduga." + Ekspor catatan debug + Salin catatan debug ReVanced ke papan klip + Pencatatan debug dinonaktifkan + Tidak ditemukan catatan + Catatan disalin + Gagal mengekspor catatan: $s + Bersihkan catatan debug + Menghapus semua catatan debug ReVanced yang tersimpan + Catatan dibersihkan Sembunyikan kartu album @@ -477,9 +491,10 @@ Menyesuaikan volume dengan mengusap secara vertikal di sisi kanan layar"Opasitas latar belakang hamparan geser Nilai opasitas antara 0-100 Opasitas geser harus antara 0-100 - Warna bilah kemajuan lapisan usap - Warna bilah kemajuan untuk kontrol volume dan kecerahan - Warna bilah kemajuan tidak sah + Warna kecerahan lapisan usap + Warna bilah kemajuan untuk kontrol kecerahan + Warna volume lapisan usap + Warna bilah kemajuan untuk kontrol volume Ukuran teks lapisan usap Ukuran teks untuk lapisan usap antara 1-30 Ukuran teks harus antara 1-30 @@ -1321,6 +1336,22 @@ Mengaktifkan ini dapat membuka kualitas video yang lebih tinggi" Pengaturan GmsCore Pengaturan untuk GmsCore + + Umpan balik sentuh getar + Ubah umpan balik sentuh getar + Nonaktifkan sentuh getar bab + Sentuh getar bab dinonaktifkan + Sentuh getar bab diaktifkan + Nonaktifkan sentuh getar pencarian presisi + Sentuh getar pencarian presisi dinonaktifkan + Sentuh getar pencarian presisi diaktifkan + Nonaktifkan sentuh getar urungkan pencarian + Sentuh getar urungkan pencarian dinonaktifkan + Sentuh getar urungkan pencarian diaktifkan + Matikan sentuh getar zoom + Sentuh getar zoom dinonaktifkan + Sentuh getar zoom diaktifkan + Jika Anda baru saja mengubah detail login akun Anda, hapus pemasangan dan ulangi memasang MicroG. @@ -1339,11 +1370,6 @@ Mengaktifkan ini dapat membuka kualitas video yang lebih tinggi" Parameter kueri pelacakan dihapus dari tautan Parameter kueri pelacakan tidak dihapus dari tautan - - Matikan sentuh getar zoom - Sentuh getar dinonaktifkan - Sentuh getar diaktifkan - Paksa bahasa audio asli Menggunakan bahasa audio asli 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-is-rIS/strings.xml +++ b/patches/src/main/resources/addresources/values-is-rIS/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 3bfe9ad12..aa2d83000 100644 --- a/patches/src/main/resources/addresources/values-it-rIT/strings.xml +++ b/patches/src/main/resources/addresources/values-it-rIT/strings.xml @@ -117,6 +117,11 @@ Tocca il pulsante Continua e consenti le modifiche di ottimizzazione." Buffer di protocollo per log I log di debug includono proto buffer I log di debug non includono proto buffer + "L'abilitazione di questa impostazione registrerà dati di layout aggiuntivi, incluso il testo su schermo per alcuni componenti dell'interfaccia utente. + +Questo può aiutare a identificare i componenti durante la creazione di filtri personalizzati. + +Tuttavia, l'abilitazione di questa opzione registrerà anche alcuni dati dell'utente come il tuo indirizzo IP." Registra stack trace I log di debug includono lo stack trace I log di debug non includono lo stack trace @@ -126,6 +131,15 @@ Tocca il pulsante Continua e consenti le modifiche di ottimizzazione." "Disabilitare i toast di errore nasconde tutte le notifiche di errore di ReVanced. Non sarai notificato di eventi imprevisti." + Esporta i log di debug + Copia i log di debug di ReVanced negli Appunti + La registrazione di debug è disabilitata + Nessun log trovato + Log copiati + Esportazione dei log non riuscita: $s + Cancella i log di debug + Cancella tutti i log di debug di ReVanced memorizzati + Log cancellati Nascondi le schede degli album @@ -477,9 +491,6 @@ Regola il volume scorrendo verticalmente sul lato destro dello schermo" Opacità di sfondo della sovrapposizione di scorrimento Valore di opacità tra 0-100 L\'opacità di scorrimento deve essere tra 0-100 - Colore della barra di avanzamento della sovrapposizione a scorrimento - Il colore della barra di avanzamento per i controlli di volume e luminosità - Colore della barra di avanzamento non valido Dimensione del testo della sovrapposizione a scorrimento La dimensione del testo per la sovrapposizione a scorrimento tra 1 e 30 La dimensione del testo deve essere compresa tra 1 e 30 @@ -1321,6 +1332,22 @@ Abilitare questa opzione può sbloccare qualità video più elevate" Impostazioni di GmsCore Impostazioni per GmsCore + + Feedback aptico + Modifica feedback aptico + Disabilita aptica capitoli + Aptica capitoli disabilitata + Aptica capitoli abilitata + Disabilita aptica di ricerca precisa + L\'aptica di ricerca precisa è disabilitata + Aptica di ricerca precisa abilitata + Disabilita l\'aptica di annullamento della ricerca + L\'aptica di annullamento della ricerca è disabilitata + L\'aptica di annullamento della ricerca è abilitata + Disabilita zoom aptico + Lo zoom aptico è disabilitato + Lo zoom aptico è abilitato + Se di recente hai modificato i dettagli di accesso al tuo account, disinstalla e reinstalla MicroG. @@ -1339,11 +1366,6 @@ Abilitare questa opzione può sbloccare qualità video più elevate" Il parametro di tracciamento della query viene rimosso dai link Il parametro di tracciamento della query non viene rimosso dai link - - Disabilita zoom aptico - Il feedback aptico è disabilitato - Il feedback aptico è abilitato - Forza la lingua audio originale Utilizza la lingua audio originale 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 a551848e8..bdc988eaa 100644 --- a/patches/src/main/resources/addresources/values-iw-rIL/strings.xml +++ b/patches/src/main/resources/addresources/values-iw-rIL/strings.xml @@ -36,6 +36,7 @@ Second \"item\" text" האם ברצונך להמשיך? איפוס אפס צבע + צבע לא חוקי רענן והפעל מחדש הפעלה מחדש ייבוא @@ -43,6 +44,8 @@ Second \"item\" text" הגדרות ReVanced אופסו לברירת מחדל %d הגדרות יובאו ייבוא נכשל: %s + חפש בהגדרות + לא נמצאו תוצאות עבור \'%s\' הצג סמלי הגדרות ReVanced סמלי ההגדרות מוצגים סמלי ההגדרות אינם מוצגים @@ -1285,7 +1288,11 @@ Second \"item\" text" הגדרות GmsCore הגדרות עבור GmsCore + + השבת משוב זום ברטט + + אם שיניתם לאחרונה את פרטי הכניסה לחשבון שלכם, הסירו והתקינו מחדש את MicroG. עקוף הפניות מחדש של URL @@ -1302,11 +1309,6 @@ Second \"item\" text" פרמטר מעקב של שאילתה מוסר מקישורים פרמטר מעקב של שאילתה אינו מוסר מקישורים - - השבת משוב זום ברטט - משוב ברטט מושבת - משוב ברטט מופעל - כפה שפת שמע מקורית שימוש בשפת שמע מקורית 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 d152bc2ae..3c85af29a 100644 --- a/patches/src/main/resources/addresources/values-ja-rJP/strings.xml +++ b/patches/src/main/resources/addresources/values-ja-rJP/strings.xml @@ -118,6 +118,11 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ protocol buffer を記録する デバッグ ログに protocol buffer が含まれます デバッグ ログに protocol buffer は含まれません + "この設定を有効にすると、一部のUIコンポーネントの画面上のテキストなど、追加のレイアウトデータが記録されます。 + +これにより、カスタムフィルターを作成するときにコンポーネントを特定できます。 + +ただし、これを有効にすると、IPアドレスなどの一部のユーザーデータも記録されます。" stack trace を記録する デバッグ ログにstack trace が含まれます デバッグ ログにstack trace は含まれません @@ -127,6 +132,15 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ "この機能をオフにすると、すべてのReVanced エラー通知が非表示になります。 あらゆる予期せぬイベントが通知されなくなります。" + デバッグログをエクスポート + ReVancedデバッグログをクリップボードにコピーします + デバッグログは無効です + ログが見つかりませんでした + ログがコピーされました + ログのエクスポートに失敗しました:$s + デバッグログをクリア + 保存されているすべてのReVancedデバッグログをクリアします + ログがクリアされました アルバム情報を非表示 @@ -480,9 +494,6 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ オーバーレイの背景の透明度 透明度の範囲は 0-100 で、0 が透明です スワイプ: 透明度の範囲は 0-100 です - オーバーレイのグラフの色 - スワイプ中の音量や明るさの現在値を視覚的に表示するグラフの色 - グラフの色の値が無効です オーバーレイのテキストサイズ スワイプ オーバーレイのテキストサイズ (1-30) テキストサイズの範囲は 1-30 です @@ -1321,6 +1332,22 @@ Automotive レイアウト GmsCore 設定 GmsCore の設定 + + 触覚フィードバック + 触覚フィードバックを変更 + チャプターの触覚フィードバックを無効にする + チャプターの触覚フィードバックは無効です + チャプターの触覚フィードバックは有効です + 正確なシークの触覚フィードバックを無効にする + 正確なシークの触覚フィードバックは無効になっています + 正確なシークの触覚フィードバックは有効です + シーク取り消しの触覚フィードバックを無効にする + シーク取り消しの触覚フィードバックは無効です + シーク取り消しの触覚フィードバックは有効です + ズームの触覚フィードバックを無効にする + ズームの触覚フィードバックは無効です + ズームの触覚フィードバックは有効です + 最近アカウントのログイン情報を変更した場合は、MicroG をアンインストールして再インストールしてください。 @@ -1339,11 +1366,6 @@ Automotive レイアウト 追跡パラメータはリンクから削除されます 追跡パラメータはリンクから削除されません - - ズームの触覚フィードバックを無効にする - ズームの触覚フィードバックは無効です - ズームの触覚フィードバックは有効です - デフォルトの吹き替えを無効にする デフォルトの吹き替えは無効です 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-ka-rGE/strings.xml +++ b/patches/src/main/resources/addresources/values-ka-rGE/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-kk-rKZ/strings.xml +++ b/patches/src/main/resources/addresources/values-kk-rKZ/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-km-rKH/strings.xml +++ b/patches/src/main/resources/addresources/values-km-rKH/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-kn-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-kn-rIN/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 08bad4695..3c413922c 100644 --- a/patches/src/main/resources/addresources/values-ko-rKR/strings.xml +++ b/patches/src/main/resources/addresources/values-ko-rKR/strings.xml @@ -112,11 +112,16 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배 디버깅 디버깅 옵션을 활성화하거나 비활성화할 수 있습니다 디버그 로깅 - 디버그 로그를 출력합니다 - 디버그 로그를 출력하지 않습니다 + 디버그 로깅을 활성화합니다 + 디버그 로깅을 비활성화합니다 로그 프로토콜 버퍼 디버그 로그에 프로토콜 버퍼를 포함합니다 디버그 로그에 프로토콜 버퍼를 포함하지 않습니다 + "이 설정을 활성화하면 일부 UI 구성 요소에 대한 화면 텍스트를 포함한 추가 레이아웃 데이터가 기록됩니다. + +이 설정은 사용자 정의 필터를 만들 경우에 구성 요소를 식별하는 데 도움이 될 수 있습니다. + +그러나 이 설정을 활성화하면 IP 주소와 같은 일부 사용자 데이터도 기록됩니다." 로그 스택 트레이스 디버그 로그에 로그 스택 트레이스를 포함합니다 디버그 로그에 로그 스택 트레이스를 포함하지 않습니다 @@ -126,6 +131,15 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배 "오류 메시지를 비활성화하면 모든 ReVanced 오류 알림이 숨겨집니다. 예상되지 않은 이벤트에 대한 알림을 받지 못할 수 있습니다." + 디버그 로그 내보내기 + ReVanced 디버그 로그를 클립보드에 복사할 수 있습니다 + 디버그 로깅이 비활성화되어 있습니다 + 디버그 로그를 찾을 수 없습니다 + 디버그 로그를 복사하였습니다 + 디버그 로그를 내보낼 수 없습니다: $s + 디버그 로그 지우기 + 저장된 모든 ReVanced 디버그 로그를 지울 수 있습니다 + 디버그 로그가 지워졌습니다 음악 앨범 카드 숨기기 @@ -442,9 +456,9 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배 %s 는 설치되어 있지 않습니다. 설치하세요 - 세밀하게 보면서 탐색 제스처 비활성화하기 - 세밀하게 보면서 탐색 제스처를 비활성화합니다\n• 필름 스트립 오버레이 - 세밀하게 보면서 탐색 제스처를 활성화합니다\n• 필름 스트립 오버레이 + 세밀한 탐색 제스처 비활성화하기 + 세밀한 탐색 제스처를 비활성화합니다 + 세밀한 탐색 제스처를 활성화합니다 재생바 터치 조작 활성화하기 @@ -476,9 +490,6 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배 스와이프 오버레이 배경 불투명도 스와이프 불투명도 값은 0-100 사이여야 합니다 스와이프 불투명도 값은 0-100 사이여야 합니다 - 스와이프 오버레이 진행바 색상 - 볼륨 및 밝기 조절 진행바 색상의 헥스 코드를 입력하세요 - 잘못된 진행바 헥스 코드입니다 스와이프 오버레이 텍스트 크기 스와이프 오버레이 텍스트 크기를 지정할 수 있습니다 (1-30) 텍스트 크기는 1-30 사이여야 합니다 @@ -1325,6 +1336,22 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요" GmsCore 설정 알림 수신을 위한 클라우드 메시징을 설정할 수 있습니다 + + 진동 피드백 + 진동 피드백을 활성화하거나 비활성화할 수 있습니다 + 챕터 진동 피드백 비활성화하기 + 챕터 진동 피드백을 비활성화합니다 + 챕터 진동 피드백을 활성화합니다 + 세밀한 탐색 진동 피드백 비활성화하기 + 세밀한 탐색 진동 피드백을 비활성화합니다 + 세밀한 탐색 진동 피드백을 활성화합니다 + 탐색 취소 진동 피드백 비활성화하기 + 탐색 취소 진동 피드백을 비활성화합니다 + 탐색 취소 진동 피드백을 활성화합니다 + 동영상 확대 진동 피드백 비활성화하기 + 동영상 확대 진동 피드백을 비활성화합니다 + 동영상 확대 진동 피드백을 활성화합니다 + 최근에 계정 로그인 정보를 변경했다면 MicroG를 삭제하고 다시 설치하세요. @@ -1343,11 +1370,6 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요" 링크를 공유할 때, URL에서 추적 쿼리 매개변수를 삭제합니다 (URL의 뒷부분 \'?si=...\' 이 삭제됨) 링크를 공유할 때, URL에서 추적 쿼리 매개변수를 삭제하지 않습니다 - - 동영상을 확대할 때, 진동 피드백 비활성화하기 - 진동 피드백을 비활성화합니다 - 진동 피드백을 활성화합니다 - 원본 오디오 스트림 언어 강제로 활성화하기 원본 오디오 스트림 언어를 사용 중입니다 @@ -1495,8 +1517,8 @@ AVC의 최대 화질 값은 1080p이고, OPUS 코덱을 사용불가 및 HDR 동 클라이언트 광고 서버 광고 디버그 로깅 - 디버그 로그를 출력합니다 - 디버그 로그를 출력하지 않습니다 + 디버그 로깅을 활성화합니다 + 디버그 로깅을 비활성화합니다 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-ky-rKG/strings.xml +++ b/patches/src/main/resources/addresources/values-ky-rKG/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-lo-rLA/strings.xml +++ b/patches/src/main/resources/addresources/values-lo-rLA/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 6ce0f0767..f2b3c93b9 100644 --- a/patches/src/main/resources/addresources/values-lt-rLT/strings.xml +++ b/patches/src/main/resources/addresources/values-lt-rLT/strings.xml @@ -117,6 +117,11 @@ Palieskite mygtuką Tęsti ir leiskite optimizavimo pakeitimus." Žurnalų protokolo buferis Debugavimo žurnalai apima protokolo buferį Debugavimo žurnalai neapima protokolo buferio + "Įjungus šį nustatymą bus registruojami papildomi išdėstymo duomenys, įskaitant ekrane rodomą tekstą kai kuriems vartotojo sąsajos komponentams. + +Tai gali padėti identifikuoti komponentus kuriant pasirinktinius filtrus. + +Tačiau įjungus šį nustatymą taip pat bus registruojami kai kurie vartotojo duomenys, pvz., jūsų IP adresas." Žurnalų steko pėdsakai Debugavimo žurnalai apima steko pėdsaką Debugavimo žurnalai neapima steko pėdsako @@ -126,6 +131,15 @@ Palieskite mygtuką Tęsti ir leiskite optimizavimo pakeitimus." "Klaidos isjungimas paslepia visus „ReVanced“ klaidu pranesimus. Apie netikėtus įvykius nebus pranešta." + Eksportuoti derinimo žurnalus + Nukopijuoja „ReVanced“ derinimo žurnalus į mainų sritį + Derinimo žurnalų registravimas išjungtas + Žurnalų nerasta + Žurnalai nukopijuoti + Nepavyko eksportuoti žurnalų: $s + Išvalyti derinimo žurnalus + Išvalo visus išsaugotus „ReVanced“ derinimo žurnalus + Žurnalai išvalyti Slėpti albumo korteles @@ -477,9 +491,6 @@ Reguliuokite garsumą braukdami vertikaliai dešinėje ekrano pusėje" Užšliaukite dangos nušveitimo fono permatinumas Permatnumo vertė nuo 0 iki 100 Slinkties permatnumas turi būti nuo 0 iki 100 - Perbraukimo perdangos eigos juostos spalva - Garso ir ryškumo valdiklių eigos juostos spalva - Netinkama eigos juostos spalva Perbraukimo perdangos teksto dydis Perbraukimo perdangos teksto dydis turi būti nuo 1 iki 30 Teksto dydis turi būti nuo 1 iki 30 @@ -1321,6 +1332,22 @@ Gali būti atrakinta aukštesnės vaizdo įrašų kokybės, bet galite patirti v „GmsCore“ nustatymai „GmsCore“ nustatymai + + Vibracijos grįžtamasis ryšys + Keisti vibracijos grįžtamąjį ryšį + Išjungti skyrių vibraciją + Skyrių vibracija išjungta + Skyrių vibracija įjungta + Išjungti tikslaus slinkimo vibraciją + Tikslus ieškojimo vibracijos grįžtamasis ryšys išjungtas + Tikslaus slinkimo vibracija įjungta + Išjungti ieškojimo anuliavimo vibraciją + Ieškojimo anuliavimo vibracijos grįžtamasis ryšys išjungtas + Ieškojimo anuliavimo vibracijos grįžtamasis ryšys įjungtas + Išjungti priartinimo vibraciją + Priartinimo vibracija išjungta + Priartinimo vibracija įjungta + Jei neseniai pakeitėte savo paskyros prisijungimo duomenis, išdiekite ir iš naujo įdiekite „MicroG“. @@ -1339,11 +1366,6 @@ Gali būti atrakinta aukštesnės vaizdo įrašų kokybės, bet galite patirti v Stebėjimo užklausų parametras pašalinamas iš nuorodų Stebėjimo užklausų parametras nėra pašalinamas iš nuorodų - - Išjungti priartinimo vibraciją - Vibracija išjungta - Vibracija įjungta - Priversti originalią garso kalbą Naudojama originali garso kalba 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 3f742ecaa..0c54cf662 100644 --- a/patches/src/main/resources/addresources/values-lv-rLV/strings.xml +++ b/patches/src/main/resources/addresources/values-lv-rLV/strings.xml @@ -117,6 +117,11 @@ Nospiediet turpināt pogu un atļaujiet optimizācijas izmaiņas." Reģistrēt protokola buferi Atkļūdošanas žurnāli ietver protokola buferi Atkļūdošanas žurnāli neietver protokola buferi + "Iespējojot šo iestatījumu, tiks reģistrēti papildu izkārtojuma dati, tostarp teksta attēlojums ekrānā dažiem lietotāja interfeisa komponentiem. + +Tas var palīdzēt identificēt komponentus, veidojot pielāgotus filtrus. + +Tomēr, iespējojot šo iestatījumu, tiks reģistrēti arī daži lietotāja dati, piemēram, jūsu IP adrese." Reģistrēt steka izsekošanu Atkļūdošanas žurnāli ietver steka izsekošanu Atkļūdošanas žurnāli neietver steka izsekošanu @@ -126,6 +131,15 @@ Nospiediet turpināt pogu un atļaujiet optimizācijas izmaiņas." "Kļūdu paziņojumu izslēgšana paslēpj visus ReVanced kļūdu paziņojumus. Jūs netiksit informēts par neparedzētiem notikumiem." + Eksportēt atkļūdošanas žurnālus + Kopē ReVanced atkļūdošanas žurnālus starpliktuvē + Atkļūdošanas žurnālu reģistrēšana ir atspējota + Žurnāli nav atrasti + Žurnāli ir kopēti + Neizdevās eksportēt žurnālus: $s + Notīrīt atkļūdošanas žurnālus + Notīra visus saglabātos ReVanced atkļūdošanas žurnālus + Žurnāli ir notīrīti Paslēpt albumu kartītes @@ -477,9 +491,10 @@ Regulējiet skaļumu, velkot vertikāli ekrāna labajā pusē" Pārvilkšanas pārklājuma fona necaurredzamība Necaurredzamības vērtība no 0 līdz 100 Pārvilkšanas necaurredzamībai jābūt no 0 līdz 100 - Pārvelciet pārklājuma progresa joslas krāsu - Skaļuma un spilgtuma vadīklu progresa joslas krāsa - Nederīga progresa joslas krāsa + Velciet pārklājuma spilgtuma krāsu + Spilgtuma vadīklu progresa joslas krāsa + Velciet pārklājuma skaļuma krāsu + Skaļuma vadīklu progresa joslas krāsa Pārvelciet pārklājuma teksta lielumu Pārvelciet pārklājuma teksta lielumu starp 1–30 Teksta lielumam jābūt starp 1–30 @@ -1321,6 +1336,22 @@ Var tikt atbloķētas augstākas video kvalitātes, taču var rasties video atsk GmsCore iestatījumi GmsCore iestatījumi + + Haptiskā atgriezeniskā saite + Mainīt haptisko atgriezenisko saiti + Atspējot nodaļu haptisko atgriezenisko saiti + Nodaļu haptiskā atgriezeniskā saite ir atspējota + Nodaļu haptiskā atgriezeniskā saite ir iespējota + Atspējot precīzas meklēšanas haptisko atgriezenisko saiti + Precīza meklēšanas haptiskā atgriezeniskā saite ir atspējota + Precīzas meklēšanas haptiskā atgriezeniskā saite ir iespējota + Atspējot meklēšanas atsaukšanas haptisko atgriezenisko saiti + Meklēšanas atsaukšanas haptiskā atgriezeniskā saite ir atspējota + Meklēšanas atsaukšanas haptiskā atgriezeniskā saite ir iespējota + Atspējot tālummaiņas haptisko atgriezenisko saiti + Tālummaiņas haptiskā atgriezeniskā saite ir atspējota + Tālummaiņas haptiskā atgriezeniskā saite ir iespējota + Ja nesen mainījāt sava konta pieteikšanās informāciju, atinstalējiet un atkārtoti instalējiet MicroG. @@ -1339,11 +1370,6 @@ Var tikt atbloķētas augstākas video kvalitātes, taču var rasties video atsk Izsekošanas vaicājuma parametrs tiek noņemts no saitēm Izsekošanas vaicājuma parametrs netiek noņemts no saitēm - - Atspējot tālummaiņas haptisko atgriezenisko saiti - Haptiskā atgriezeniskā saite ir atspējota - Haptiskā atgriezeniskā saite ir iespējota - Piespiest oriģinālo audio valodu Izmantot oriģinālo audio valodu 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-mk-rMK/strings.xml +++ b/patches/src/main/resources/addresources/values-mk-rMK/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-ml-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-ml-rIN/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-mn-rMN/strings.xml +++ b/patches/src/main/resources/addresources/values-mn-rMN/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-mr-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-mr-rIN/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-ms-rMY/strings.xml +++ b/patches/src/main/resources/addresources/values-ms-rMY/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-my-rMM/strings.xml +++ b/patches/src/main/resources/addresources/values-my-rMM/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-nb-rNO/strings.xml +++ b/patches/src/main/resources/addresources/values-nb-rNO/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-ne-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-ne-rIN/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 45d0c65b0..9e7d8fc43 100644 --- a/patches/src/main/resources/addresources/values-nl-rNL/strings.xml +++ b/patches/src/main/resources/addresources/values-nl-rNL/strings.xml @@ -117,6 +117,11 @@ Tik op de knop Doorgaan en sta wijzigingen in de optimalisatie toe." Stamlogboek Debuglogboeken bevatten stamlogboek Debuglogboeken bevatten geen stamlogboek + "Als u deze instelling inschakelt, worden extra lay-outgegevens geregistreerd, waaronder tekst op het scherm voor sommige UI-componenten. + +Dit kan helpen bij het identificeren van componenten bij het maken van aangepaste filters. + +Als u dit inschakelt, worden echter ook bepaalde gebruikersgegevens, zoals uw IP-adres, vastgelegd." Stacktraces loggen Debuglogboeken bevatten stacktrace Debuglogs bevatten geen stacktrace @@ -126,6 +131,15 @@ Tik op de knop Doorgaan en sta wijzigingen in de optimalisatie toe." "Het uitschakelen van foutmeldingen verbergt alle ReVanced-foutmeldingen. U wordt niet op de hoogte gesteld van onverwachte gebeurtenissen." + Foutopsporingslogboeken exporteren + Kopieert ReVanced-foutopsporingslogboeken naar het klembord + Foutopsporing is uitgeschakeld + Geen logboeken gevonden + Logboeken gekopieerd + Kan logboeken niet exporteren: $s + Foutopsporingslogboeken wissen + Wist alle opgeslagen ReVanced-foutopsporingslogboeken + Logboeken gewist Verberg albumkaarten @@ -477,9 +491,6 @@ Pas het volume aan door verticaal over de rechterkant van het scherm te vegen"Dekking van de Swipe overlay Dekking tussen 0-100 Dekking moet tussen 0-100 zijn - Kleur van voortgangsbalk voor swipe-overlay - De kleur van de voortgangsbalk voor volume- en helderheidsbediening - Ongeldige kleur voor de voortgangsbalk Tekengrootte swipe-overlay De tekstgrootte voor swipe-overlay tussen 1-30 De tekstgrootte moet tussen 1-30 liggen @@ -1320,6 +1331,22 @@ Het inschakelen hiervan kan hogere videokwaliteiten ontgrendelen" GmsCore-instellingen Instellingen voor GmsCore + + Haptische feedback + Haptische feedback wijzigen + Hoofdstuk-haptiek uitschakelen + Hoofdstuk-haptiek is uitgeschakeld + Hoofdstuk-haptiek is ingeschakeld + Precisie-zoekhaptiek uitschakelen + Precieze haptiek voor zoeken is uitgeschakeld + Precisie-zoekhaptiek is ingeschakeld + Haptiek voor ongedaan maken van zoeken uitschakelen + Haptiek voor ongedaan maken van zoeken is uitgeschakeld + Haptiek voor ongedaan maken van zoeken is ingeschakeld + Zoom-haptics uitschakelen + Zoom-haptics is uitgeschakeld + Zoom-haptics is ingeschakeld + Als u onlangs de inloggegevens van uw account hebt gewijzigd, verwijder dan MicroG en installeer het opnieuw. @@ -1338,11 +1365,6 @@ Het inschakelen hiervan kan hogere videokwaliteiten ontgrendelen" Tracking-queryparameter wordt verwijderd uit koppelingen Tracking-queryparameter wordt niet verwijderd uit koppelingen - - Zoom-haptics uitschakelen - Haptics zijn uitgeschakeld - Haptics zijn ingeschakeld - Forceer de originele audiotaal De oorspronkelijke audiotaal gebruiken 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-or-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-or-rIN/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-pa-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-pa-rIN/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 99bca3ab8..c886b2ef7 100644 --- a/patches/src/main/resources/addresources/values-pl-rPL/strings.xml +++ b/patches/src/main/resources/addresources/values-pl-rPL/strings.xml @@ -117,6 +117,7 @@ Naciśnij przycisk Kontynuuj i zezwól na zmiany optymalizacji." Logi protokołu bufora Logi do debugowania zawierają bufory Logi do debugowania nie zawierają buforów + "Włączenie tego ustawienia spowoduje rejestrowanie dodatkowych danych układu, w tym tekstu na ekranie dla niektórych komponentów interfejsu użytkownika.\n\nMoże to pomóc w identyfikacji komponentów podczas tworzenia filtrów niestandardowych.\n\nWłączenie tej opcji spowoduje jednak również rejestrowanie niektórych danych użytkownika, takich jak adres IP." Logi śladów stosów Logi do debugowania zawierają ślady stosów Logi do debugowania nie zawierają śladów stosów @@ -126,6 +127,15 @@ Naciśnij przycisk Kontynuuj i zezwól na zmiany optymalizacji." "Wyłączenie notyfikacji błędów ukrywa wszystkie powiadomienia o błędach ReVanced. Nie będziesz informowany o żadnych nieoczekiwanych zdarzeniach." + Eksportuj dzienniki debugowania + Kopiuje dzienniki debugowania ReVanced do schowka + Rejestrowanie debugowania jest wyłączone + Nie znaleziono dzienników + Dzienniki skopiowane + Nie udało się wyeksportować dzienników: $s + Wyczyść dzienniki debugowania + Czyści wszystkie zapisane dzienniki debugowania ReVanced + Dzienniki wyczyszczone Ukryj karty albumów @@ -477,9 +487,6 @@ Dostosuj głośność, przesuwając pionowo po prawej stronie ekranu" Przejrzystość tła nakładki przesuwania Wartość przezroczystości od 0 do 100 Przezroczystość przesuwania musi być między 0 a 100 - Kolor paska postępu nakładki przesunięcia - Kolor paska postępu dla regulacji głośności i jasności - Nieprawidłowy kolor paska postępu Rozmiar tekstu nakładki przesuwania Rozmiar tekstu dla nakładki przesunięcia między 1-30 Rozmiar tekstu musi mieścić się w przedziale 1-30 @@ -1322,6 +1329,22 @@ Włączenie tego może odblokować wyższe jakości wideo" Ustawienia GmsCore Ustawienia GmsCore + + Informacje zwrotne haptyczne + Zmień informacje zwrotne haptyczne + Wyłącz haptykę rozdziałów + Haptyka rozdziałów jest wyłączona + Haptyka rozdziałów jest włączona + Wyłącz haptykę precyzyjnego przewijania + Haptyka precyzyjnego wyszukiwania jest wyłączona + Haptyka precyzyjnego przewijania jest włączona + Wyłącz haptykę cofania wyszukiwania + Haptyka cofania wyszukiwania jest wyłączona + Haptyka cofania wyszukiwania jest włączona + Haptyka przy zoomowaniu + Haptyka przybliżania jest wyłączona + Haptyka przybliżania jest włączona + Jeśli niedawno zmieniono dane logowania do konta, odinstaluj i zainstaluj ponownie MicroG. @@ -1340,11 +1363,6 @@ Włączenie tego może odblokować wyższe jakości wideo" Parametr zapytania śledzenia jest usuwany z linków Parametr zapytania śledzenia nie jest usuwany z linków - - Haptyka przy zoomowaniu - Haptyka jest wyłączona - Haptyka jest włączona - Wymuś język oryginalnego dźwięku Używanie oryginalnego języka audio 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 da61ff455..cfbd90e21 100644 --- a/patches/src/main/resources/addresources/values-pt-rBR/strings.xml +++ b/patches/src/main/resources/addresources/values-pt-rBR/strings.xml @@ -115,6 +115,11 @@ Toque no botão continuar e permita as mudanças de otimização. " Registro de buffer de protocolo Registro de depuração incluem buffer de protocolo Registro de depuração não incluem buffer de protocolo + "Ativar esta configuração registrará dados de layout adicionais, incluindo texto na tela para alguns componentes da IU. + +Isso pode ajudar a identificar componentes ao criar filtros personalizados. + +No entanto, ativar isso também registrará alguns dados do usuário, como seu endereço IP." Registro de rastreamento em pilha Registro de depuração incluem rastreamento em pilha Registro de depuração não incluem rastreamento em pilha @@ -124,6 +129,15 @@ Toque no botão continuar e permita as mudanças de otimização. " "Desligar as notificações de erro oculta todas as notificações de erro do ReVanced. Você não será notificado sobre nenhum evento inesperado." + Exportar registros de depuração + Copia os registros de depuração do ReVanced para a área de transferência + O registro de depuração está desativado + Nenhum registro encontrado + Registros copiados + Falha ao exportar os registros: $s + Limpar registros de depuração + Limpa todos os registros de depuração do ReVanced armazenados + Registros limpos Ocultar cartões de álbum @@ -475,9 +489,10 @@ Ajuste o volume deslizando verticalmente no lado direito da tela" Opacidade do plano de fundo de sobreposição de deslize Valor da opacidade entre 0-100 A opacidade do deslizar deve estar entre 0-100 - Cor da barra de progresso da sobreposição de deslize - A cor da barra de progresso para controles de volume e brilho - Cor da barra de progresso inválida + Cor da barra de brilho da sobreposição de deslize + A cor da barra de progresso para controles de brilho + Cor da barra de volume da sobreposição de deslize + A cor da barra de progresso para controles de volume Tamanho do texto da sobreposição de deslize O tamanho do texto para sobreposição de deslize entre 1 e 30 O tamanho do texto deve estar entre 1 e 30 @@ -1319,6 +1334,22 @@ Habilitar isso pode desbloquear qualidades de vídeo mais altas" Configurações do GmsCore Configurações do GmsCore + + Feedback tátil + Alterar feedback tátil + Desativar haptics de capítulos + Haptics de capítulos desativado + Haptics de capítulos ativado + Desativar haptics de busca precisa + O feedback tátil de busca precisa está desativado + Haptics de busca precisa ativado + Desativar feedback tátil de desfazer busca + O feedback tátil de desfazer busca está desativado + O feedback tátil de desfazer busca está ativado + Desativar zoom tátil + O zoom tátil está desativado + O zoom tátil está ativado + Se você alterou recentemente os detalhes de login da sua conta, desinstale e reinstale o MicroG. @@ -1337,11 +1368,6 @@ Habilitar isso pode desbloquear qualidades de vídeo mais altas" Parâmetro da consulta de rastreamento foi removido dos links Parâmetro da consulta de rastreamento não foi removido dos links - - Desativar zoom tátil - Zoom tátil está ativado - Zoom tátil está desativado - Forçar idioma do áudio original Usar o idioma original do áudio 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 b5171676a..e23c3c303 100644 --- a/patches/src/main/resources/addresources/values-pt-rPT/strings.xml +++ b/patches/src/main/resources/addresources/values-pt-rPT/strings.xml @@ -117,6 +117,11 @@ Toque no botão continuar e permita as alterações de otimização." Registo do buffer de protocolo Registos de depuração incluem buffer de sondagem Os registos da depuração não incluem buffer de perfil + "Ativar esta definição irá registar dados de layout adicionais, incluindo o texto no ecrã para alguns componentes da IU. + +Isto pode ajudar a identificar componentes ao criar filtros personalizados. + +No entanto, ativar isto também irá registar alguns dados do utilizador, como o seu endereço IP." Pilha de registos Os registos da depuração incluem stack trace Os registos da depuração não incluem stack trace @@ -126,6 +131,15 @@ Toque no botão continuar e permita as alterações de otimização." "A desativação dos erros toasts oculta todas as notificações de erro do ReVanced. Não será notificado de quaisquer eventos inesperados." + Exportar registos de depuração + Copia os registos de depuração do ReVanced para a área de transferência + O registo de depuração está desativado + Nenhum registo encontrado + Registos copiados + Falha ao exportar os registos: $s + Limpar registos de depuração + Limpa todos os registos de depuração do ReVanced armazenados + Registos limpos Esconder cartões de álbuns @@ -477,9 +491,6 @@ Ajuste o volume deslizando verticalmente no lado direito da tela" Opacidade do plano de fundo da sobreposição de deslizar Valor de opacidade entre 0-100 A opacidade do deslizar deve estar entre 0-100 - Cor da barra de progresso da sobreposição de deslize - A cor da barra de progresso para os controles de volume e brilho - Cor da barra de progresso inválida Tamanho do texto da sobreposição de deslize O tamanho do texto para a sobreposição de deslize entre 1 e 30 O tamanho do texto deve estar entre 1 e 30 @@ -1322,6 +1333,22 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"Configurações do GmsCore Configurações para GmsCore + + Feedback háptico + Alterar feedback háptico + Desativar haptics dos capítulos + Haptics dos capítulos está desativado + Haptics dos capítulos está ativado + Desativar haptics de busca precisa + Haptics de busca precisa está desativado + Haptics de busca precisa está ativado + Desativar haptics de desfazer busca + Haptics de desfazer busca está desativado + Haptics de desfazer busca está ativado + Desativar zoom haptics + Zoom haptics está desativado + Zoom haptics está ativado + Se você alterou recentemente os detalhes de login da sua conta, desinstale e reinstale o MicroG. @@ -1340,11 +1367,6 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"O parâmetro da consulta de rastreamento é removido dos links O parâmetro da consulta de rastreamento não é removido dos links - - Desativar zoom haptics - Hápticos estão desativados - Hábitos estão ativados - Forçar idioma original do áudio Usando o idioma de áudio original 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 845977c92..bc4171def 100644 --- a/patches/src/main/resources/addresources/values-ro-rRO/strings.xml +++ b/patches/src/main/resources/addresources/values-ro-rRO/strings.xml @@ -117,6 +117,11 @@ Apăsați butonul continuare și permiteți modificările de optimizare."Jurnal protocol buffer Jurnalele de depanare includ bufferul de protocol Jurnalele de depanare nu includ memoria tampon + "Activarea acestei setări va înregistra date suplimentare despre aspect, inclusiv textul de pe ecran pentru unele componente UI. + +Acest lucru poate ajuta la identificarea componentelor atunci când creați filtre personalizate. + +Cu toate acestea, activarea acestei opțiuni va înregistra și unele date ale utilizatorului, cum ar fi adresa dvs. IP." Urme stive de jurnal Jurnalele depanării includ urmărirea stivelor Jurnalele de depanare nu includ urmărirea stivelor @@ -126,6 +131,15 @@ Apăsați butonul continuare și permiteți modificările de optimizare.""Oprirea toasturilor de eroare ascunde toate notificările de eroare ReVanced. Nu veți fi notificat de niciun eveniment neașteptat." + Exportare jurnale de depanare + Copiază jurnalele de depanare ReVanced în clipboard + Înregistrarea în jurnal de depanare este dezactivată + Nu au fost găsite jurnale + Jurnale copiate + Nu s-a putut exporta jurnalele: $s + Șterge jurnalele de depanare + Șterge toate jurnalele de depanare ReVanced stocate + Jurnale șterse Ascundeți cardurile de album @@ -477,9 +491,6 @@ Reglați volumul glisând vertical pe partea dreaptă a ecranului" Opacitate suprapunere glisare Valoare opacitate între 0-100 Opacitatea glisării trebuie să fie între 0-100 - Culoare bară de progres suprapunere glisare - Culoarea barei de progres pentru comenzile de volum și luminozitate - Culoare nevalidă a barei de progres Dimensiune text suprapunere glisare Dimensiunea textului pentru suprapunerea glisării între 1-30 Dimensiunea textului trebuie să fie între 1-30 @@ -1321,6 +1332,22 @@ Activarea acestei opțiuni poate debloca calități video mai mari" Setări GmsCore Setări pentru GmsCore + + Feedback haptic + Schimbă feedback-ul haptic + Dezactivare haptics capitole + Haptics capitole este dezactivat + Haptics capitole este activat + Dezactivare haptics căutare precisă + Haptica precisă de căutare este dezactivată + Haptics căutare precisă este activat + Dezactivare haptics anulare căutare + Haptica de anulare a căutării este dezactivată + Haptica de anulare a căutării este activată + Dezactivare haptics zoom + Haptica zoom este dezactivată + Haptica zoom este activată + Dacă ți-ai schimbat recent detaliile de conectare la cont, dezinstalează și reinstalează MicroG. @@ -1339,11 +1366,6 @@ Activarea acestei opțiuni poate debloca calități video mai mari" Parametrul de urmărire a interogării este eliminat din link-uri Parametrul de urmărire a interogării nu este eliminat din link-uri - - Dezactivare haptics zoom - Hapticele sunt dezactivate - Haptic-urile sunt activate - Forțează limba audio originală Folosind limba audio originală 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 07671b7ad..aba2aad03 100644 --- a/patches/src/main/resources/addresources/values-ru-rRU/strings.xml +++ b/patches/src/main/resources/addresources/values-ru-rRU/strings.xml @@ -117,6 +117,11 @@ Second \"item\" text" Журнал буфера протоколов В журналы отладки включен буфер протоколов В журналы отладки не включен буфер протоколов + "Включение этой настройки позволит регистрировать дополнительные данные макета, включая текст на экране для некоторых компонентов пользовательского интерфейса. + +Это может помочь определить компоненты при создании пользовательских фильтров. + +Однако включение этой функции также приведет к регистрации некоторых пользовательских данных, таких как ваш IP-адрес." Журнал трассировки стека В журналы отладки включена трассировка стека В журналы отладки не включена трассировка стека @@ -126,6 +131,15 @@ Second \"item\" text" "Отключение всплывающих уведомлений об ошибках скроет все сообщения об ошибках ReVanced. Вы не будете уведомлены о каких-либо непредвиденных событиях." + Экспортировать журналы отладки + Копирует журналы отладки ReVanced в буфер обмена + Журналы отладки отключены + Журналы не найдены + Журналы скопированы + Не удалось экспортировать журналы: $s + Очистить журналы отладки + Очищает все сохраненные журналы отладки ReVanced + Журналы очищены Скрыть карточки альбомов @@ -477,9 +491,6 @@ Second \"item\" text" Затемнение фона панели жестов Значение затемнения всплывающей панели при жестах от 0 до 100 Значение затемнения панели жестов должно быть от 0 до 100 - Цвет полосы прогресса при жестах - Цвет полосы прогресса при изменении громкости и яркости жестами - Недопустимый цвет полосы прогресса Размер текста панели жестов Размер текста панели жестов от 1 до 30 Размер текста должен быть в диапазоне от 1 до 30 @@ -1322,6 +1333,22 @@ Second \"item\" text" GmsCore Настройки GmsCore + + Виброотклик + Изменить виброотклик + Отключить виброотклик глав + Виброотклик глав отключен + Виброотклик глав включен + Отключить виброотклик при покадровой перемотке + Виброотклик при точном поиске отключен + Виброотклик при покадровой перемотке включен + Отключить виброотклик отмены поиска + Виброотклик отмены поиска отключен + Виброотклик отмены поиска включен + Отключить виброотклик при масштабировании + Виброотклик при масштабировании отключен + Виброотклик при масштабировании включен + Если Вы недавно изменили данные для входа в свою учетную запись, удалите и переустановите MicroG. @@ -1340,11 +1367,6 @@ Second \"item\" text" Параметр отслеживания запросов из ссылок удален Параметр отслеживания запросов из ссылок не удален - - Отключить виброотклик при масштабировании - Виброотклик при масштабировании отключен - Виброотклик при масштабировании включен - Принудительно оригинальная звуковая дорожка Используется оригинальная звуковая дорожка 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-si-rLK/strings.xml +++ b/patches/src/main/resources/addresources/values-si-rLK/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 91303e7c9..f0aa28b6b 100644 --- a/patches/src/main/resources/addresources/values-sk-rSK/strings.xml +++ b/patches/src/main/resources/addresources/values-sk-rSK/strings.xml @@ -115,6 +115,11 @@ Vypnutie optimalizácie batérie pre MicroG nebude mať negatívny vplyv na spot Vyrovnávacia pamäť protokolu Protokoly ladenia obsahujú proto buffer Protokoly ladenia neobsahujú proto buffer + "Povolením tohto nastavenia sa budú zaznamenávať ďalšie údaje o rozložení, vrátane textu na obrazovke pre niektoré komponenty používateľského rozhrania. + +Toto môže pomôcť identifikovať komponenty pri vytváraní vlastných filtrov. + +Povolením tejto funkcie sa však budú zaznamenávať aj niektoré používateľské údaje, ako napríklad vaša IP adresa." Zaznamenať stopy zásobníka Denníky ladenia obsahujú sledovanie zásobníka Denníky ladenia neobsahujú sledovanie zásobníka @@ -124,6 +129,15 @@ Vypnutie optimalizácie batérie pre MicroG nebude mať negatívny vplyv na spot "Vypnutie upozornení o chybách skryje všetky upozornenia o chybách v ReVanced. Nebudete informovaní o žiadnych nepredvídaných udalostiach." + Exportovať protokoly ladenia + Skopíruje protokoly ladenia ReVanced do schránky + Protokolovanie ladenia je vypnuté + Nenašli sa žiadne protokoly + Protokoly skopírované + Nepodarilo sa exportovať protokoly: $s + Vymazať protokoly ladenia + Vymaže všetky uložené protokoly ladenia ReVanced + Protokoly vymazané Skryť karty albumov @@ -470,9 +484,10 @@ Upravte hlasitosť posúvaním vertikálne na pravej strane obrazovky" Priehľadnosť pozadia prekrytia potiahnutia Hodnota priehľadnosti medzi 0-100 Priehľadnosť prekrytia potiahnutia musí byť medzi 0-100 - Farba panela priebehu prekrytia posunutím - Farba panela priebehu pre ovládanie hlasitosti a jasu - Neplatná farba panela priebehu + Farba prekrytia jasu potiahnutím + Farba panela s indikátorom priebehu pre ovládacie prvky jasu + Farba prekrytia hlasitosti potiahnutím + Farba panela s indikátorom priebehu pre ovládacie prvky hlasitosti Veľkosť textu prekrytia posunutím Veľkosť textu pre prekrytie posunutím medzi 1 – 30 Veľkosť textu musí byť medzi 1 – 30 @@ -1310,6 +1325,22 @@ Povolením tejto možnosti môžete odomknúť vyššie kvality videa" Nastavenia GmsCore Nastavenia pre GmsCore + + Haptická odozva + Zmeniť haptickú odozvu + Zakázať haptiku kapitol + Haptika kapitol je zakázaná + Haptika kapitol je povolená + Zakázať haptiku presného vyhľadávania + Haptika presného vyhľadávania je vypnutá + Haptika presného vyhľadávania je povolená + Vypnúť haptiku vrátenia späť vyhľadávania + Haptika vrátenia späť vyhľadávania je vypnutá + Haptika vrátenia späť vyhľadávania je zapnutá + Zakázať haptiku priblíženia + Haptika priblíženia je vypnutá + Haptika priblíženia je zapnutá + Ak ste nedávno zmenili prihlasovacie údaje svojho účtu, odinštalujte a znova nainštalujte MicroG. @@ -1328,11 +1359,6 @@ Povolením tejto možnosti môžete odomknúť vyššie kvality videa" Parameter dopytu sledovania je odstránený z odkazov Parameter dopytu sledovania nie je odstránený z odkazov - - Zakázať haptiku priblíženia - Haptika je vypnutá - Haptika je povolená - Vynútiť pôvodný jazyk zvuku Používa sa pôvodný jazyk zvuku 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 66ed2e5a8..4715900d5 100644 --- a/patches/src/main/resources/addresources/values-sl-rSI/strings.xml +++ b/patches/src/main/resources/addresources/values-sl-rSI/strings.xml @@ -117,6 +117,11 @@ Tapnite gumb za nadaljevanje in dovolite spremembe optimizacij." Dnevnik protokola pufra Dnevniki napak vključujejo protokol pufra Dnevniki napak ne vključujejo protokola pufra + "Če omogočite to nastavitev, se bodo beležili dodatni podatki o postavitvi, vključno z besedilom na zaslonu za nekatere komponente uporabniškega vmesnika. + +To lahko pomaga prepoznati komponente pri ustvarjanju filtrov po meri. + +Vendar pa bo omogočitev tega beležila tudi nekatere uporabniške podatke, kot je vaš naslov IP." Dnevnik sledov steka Dnevniki napak vključujejo sled sledov Dnevniki napak ne vključujejo sledi sledov @@ -126,6 +131,15 @@ Tapnite gumb za nadaljevanje in dovolite spremembe optimizacij." "Onemogočanje obvestil o napakah skrije vsa obvestila o napakah v ReVancedu. Ne boste obveščeni o nobenih nepričakovanih dogodkih." + Izvozi dnevnike napak + Kopira dnevnike napak ReVanced v odložišče + Beleženje napak je onemogočeno + Dnevnikov ni mogoče najti + Dnevniki so bili kopirani + Izvoz dnevnikov ni uspel: $s + Počisti dnevnike napak + Počisti vse shranjene dnevnike napak ReVanced + Dnevniki so bili izbrisani Skrij kartice albuma @@ -477,9 +491,10 @@ Prilagodite glasnost s potegom navpično na desni strani zaslona" Prosojnost prekrivanja poteze Vrednost prosojnosti med 0 in 100 Prosojnost drsenja mora biti med 0 in 100 - Barva vrstice napredka prekrivnega drsenja - Barva vrstice napredka za upravljanje glasnosti in svetlosti - Neveljavna barva vrstice napredka + Barva svetlosti prekrivnega potega + Barva vrstice napredka za upravljanje svetlosti + Barva glasnosti prekrivnega potega + Barva vrstice napredka za upravljanje glasnosti Velikost besedila prekrivnega drsenja Velikost besedila za prekrivni sloj drsenja med 1 in 30 Velikost besedila mora biti med 1 in 30 @@ -1321,6 +1336,22 @@ Omogočanje tega lahko odklene višje kakovosti videa" Nastavitve GmsCore Nastavitve za GmsCore + + Haptični odziv + Spremeni haptični odziv + Onemogoči haptiko poglavij + Haptika poglavij je onemogočena + Haptika poglavij je omogočena + Onemogoči haptiko natančnega iskanja + Natančna haptika pri iskanju je onemogočena + Haptika natančnega iskanja je omogočena + Onemogoči haptiko za razveljavitev iskanja + Haptika za razveljavitev iskanja je onemogočena + Haptika za razveljavitev iskanja je omogočena + Onemogoči haptiko pri povečavi + Haptika pri povečavi je onemogočena + Haptika pri povečavi je omogočena + Če ste nedavno spremenili podatke za prijavo v račun, odstranite in znova namestite MicroG. @@ -1339,11 +1370,6 @@ Omogočanje tega lahko odklene višje kakovosti videa" Parameter poizvedbe za sledenje je odstranjen iz povezav Parameter poizvedbe za sledenje ni odstranjen iz povezav - - Onemogoči haptiko pri povečavi - Haptika je onemogočena - Haptika je omogočena - Izsili izvirni jezik zvoka Uporabi izvirni jezik zvoka 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 dc0f4037b..6f6c7fc9e 100644 --- a/patches/src/main/resources/addresources/values-sq-rAL/strings.xml +++ b/patches/src/main/resources/addresources/values-sq-rAL/strings.xml @@ -117,6 +117,11 @@ Prekni butonin vazhdo dhe lejoni ndryshimet e optimizimit." Regjistro protokol buffer Regjistrimet e depurimit përfshijnë proto buffer Regjistrimet e depurimit nuk përfshijnë proto buffer + "Aktivizimi i këtij opsioni do të regjistrojë të dhëna shtesë të paraqitjes, duke përfshirë tekstin në ekran për disa komponentë të ndërfaqes përdoruese. + +Kjo mund të ndihmojë në identifikimin e komponentëve kur krijoni filtra të personalizuar. + +Gjithsesi, aktivizimi i këtij opsioni do të regjistrojë edhe disa të dhëna të përdoruesit, siç është adresa juaj IP." Regjistro gjurmët e grumbullimit Regjistrimet e depurimit përfshijnë gjurmë grumbullimi Regjistrimet e depurimit nuk përfshijnë gjurmë grumbullimi @@ -126,6 +131,15 @@ Prekni butonin vazhdo dhe lejoni ndryshimet e optimizimit." "Fshirja e toast-eve të gabimit fsheh të gjitha njoftimet e gabimeve të ReVanced. Ju nuk do të njoftoheni për ndonjë ngjarje të papritur." + Eksporto regjistrat e korrigjimit + Kopjon regjistrat e korrigjimit të ReVanced në kujtesën e shkurtër + Regjistrimi i korrigjimeve është çaktivizuar + Nuk u gjetën regjistra + Regjistrat u kopjuan + Eksportimi i regjistrave dështoi: $s + Pastro regjistrat e korrigjimit + Pastro të gjithë regjistrat e ruajtur të korrigjimit të ReVanced + Regjistrat u pastruan Fshih kartat e albumit @@ -477,9 +491,6 @@ Përshtate shkëlqimin duke rrëshqitur vertikalisht në anën e majtë të ekra Opasiteti i sfondit mbivendosës shtypëse Vlera e opacitetit midis 0-100 Opaciteti i shtypjes duhet të jetë midis 0-100 - Ngjyra e shiritit të progresit të mbivendosjes së rrëshqitjes - Ngjyra e shiritit të progresit për kontrollet e volumit dhe të ndriçimit - Ngjyrë e pavlefshme e shiritit të progresit Madhësia e tekstit të mbivendosjes së rrëshqitjes Madhësia e tekstit për mbivendosjen e rrëshqitjes midis 1-30 Madhësia e tekstit duhet të jetë midis 1-30 @@ -1320,6 +1331,22 @@ Aktivizimi i kësaj mund të zhbllokojë cilësi më të larta video" Cilësimet e GmsCore Cilësimet për GmsCore + + Reagimi haptik + Ndrysho reagimin haptik + Çaktivizo haptikën e kapitujve + Haptika e kapitujve është çaktivizuar + Haptika e kapitujve është aktivizuar + Çaktivizo haptikën e kërkimit të saktë + Haptika e kërkimit të saktë është çaktivizuar + Haptika e saktë e kërkimit është aktivizuar + Çaktivizo haptikën e zhbërjes së kërkimit + Haptika e zhbërjes së kërkimit është çaktivizuar + Haptika e zhbërjes së kërkimit është aktivizuar + Çaktivizo haptikën e zmadhimit + Haptika e zmadhimit është çaktivizuar + Haptika e zmadhimit është aktivizuar + Nëse së fundmi keni ndryshuar detajet e hyrjes në llogarinë tuaj, atëherë çinstaloni dhe riinstaloni MicroG. @@ -1338,11 +1365,6 @@ Aktivizimi i kësaj mund të zhbllokojë cilësi më të larta video" Parametri i gjurmimit të kërkesës hiqet nga linket Parametri i gjurmimit të kërkesës nuk hiqet nga linket - - Çaktivizo haptikën e zmadhimit - Haptikët janë të çaktivizuar - Haptikët janë të aktivizuar - Forco gjuhën origjinale të audios Duke përdorur gjuhën origjinale audio 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 911b27ec0..39ab50440 100644 --- a/patches/src/main/resources/addresources/values-sr-rCS/strings.xml +++ b/patches/src/main/resources/addresources/values-sr-rCS/strings.xml @@ -35,7 +35,7 @@ Second \"item\" text" Podešavanja Želite li da nastavite? Resetuj - Poništi boju + Resetuj boju Nevažeća boja Osvežite i restartujte Restartuj @@ -117,6 +117,11 @@ Dodirnite dugme „Nastavi” i dozvolite promene optimizacije." Evidentiranje bafera protokola Evidencije otklanjanja grešaka sadrže bafer protokola Evidencije otklanjanja grešaka ne sadrže bafer protokola + "Omogućavanjem ove opcije evidentiraće se dodatni podaci o izgledu, uključujući tekst na ekranu za neke komponente korisničkog interfejsa. + +Ovo može pomoći u identifikaciji komponenti prilikom pravljenja prilagođenih filtera. + +Međutim, omogućavanje ovoga će takođe evidentirati neke korisničke podatke, kao što je vaša IP adresa." Evidentiranje praćenja steka Evidencije otklanjanja grešaka sadrže praćenje steka Evidencije otklanjanja grešaka ne sadrže praćenje steka @@ -126,6 +131,15 @@ Dodirnite dugme „Nastavi” i dozvolite promene optimizacije." "Isključivanje iskačućih obaveštenja o greškama sakriva sve obaveštenja o greškama u ReVancedu. Nećete biti obavešteni ni o kakvim neočekivanim događajima." + Izvezi evidencije otklanjanja grešaka + Kopira evidencije otklanjanja grešaka ReVanceda u privremenu memoriju + Evidentiranje otklanjanja grešaka je onemogućeno + Nema pronađenih evidencija + Evidencije su kopirane + Izvoz evidencija nije uspeo: $s + Izbriši evidencije otklanjanja grešaka + Briše sve sačuvane evidencije otklanjanja grešaka ReVanceda + Evidencije su izbrisane Sakrij kartice albuma @@ -477,9 +491,10 @@ Podesite jačinu zvuka prevlačenjem vertikalno na desnoj strani ekrana"Neprozirnost pozadine pokreta prevlačenja Vrednost neprozirnosti između 0 i 100 Neprozirnost pokreta prevlačenja mora biti između 0 i 100 - Boja trake napretka pokreta prevlačenja - Boja trake napretka za kontrolu jačine zvuka i osvetljenosti - Nevažeća boja trake napretka + Boja osvetljenosti trake pokreta prevlačenja + Boja trake napretka za kontrolu osvetljenosti + Boja jačine zvuka trake pokreta prevlačenja + Boja trake napretka za kontrolu jačine zvuka Veličina teksta pokreta prevlačenja Veličina teksta za pokret prevlačenja između 1 i 30 Veličina teksta mora biti između 1 i 30 @@ -1321,6 +1336,22 @@ Ako ovo omogućite, mogu biti otključani viši kvaliteti videa" Podešavanja GmsCorea Podešavanja za GmsCore + + Vibracija pri dodiru + Promeni vibraciju pri dodiru + Onemogući vibraciju poglavlja + Vibracija poglavlja je onemogućena + Vibracija poglavlja je omogućena + Onemogući vibraciju preciznog premotavanja + Vibracija preciznog premotavanja je onemogućena + Vibracija preciznog premotavanja je omogućena + Onemogući vibraciju poništavanja premotavanja + Vibracija poništavanja premotavanja je onemogućena + Vibracija poništavanja premotavanja je omogućena + Onemogući vibraciju pri uveličavanju + Vibracija pri uveličavanju je onemogućena + Vibracija pri uveličavanju je omogućena + Ako ste nedavno promenili podatke za prijavu na nalog, deinstalirajte i ponovo instalirajte MicroG. @@ -1339,11 +1370,6 @@ Ako ovo omogućite, mogu biti otključani viši kvaliteti videa" Parametar upita za praćenje je uklonjen iz linkova Parametar upita za praćenje nije uklonjen iz linkova - - Onemogući vibraciju pri uveličavanju - Vibracija pri uveličavanju je onemogućena - Vibracija pri uveličavanju je omogućena - Prisili originalni jezik zvuka Korišćenje originalnog jezika zvuka 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 2697304ac..feff0cba3 100644 --- a/patches/src/main/resources/addresources/values-sr-rSP/strings.xml +++ b/patches/src/main/resources/addresources/values-sr-rSP/strings.xml @@ -35,8 +35,8 @@ Second \"item\" text" Подешавања Желите ли да наставите? Ресетуј - Врати подразумевану боју - Неисправна боја + Ресетуј боју + Неважећа боја Освежите и рестартујте Рестартуј Увоз @@ -117,6 +117,11 @@ Second \"item\" text" Евидентирање бафера протокола Евиденције отклањања грешака садрже бафер протокола Евиденције отклањања грешака не садрже бафер протокола + "Омогућавањем ове опције ће се евидентирати додатни подаци о изгледу, укључујући текст на екрану за неке компоненте корисничког интерфејса. + +Ово може помоћи у идентификацији компоненти приликом прављења прилагођених филтера. + +Међутим, омогућавање овога ће такође евидентирати неке корисничке податке, као што је ваша IP адреса." Евидентирање праћења стека Евиденције отклањања грешака садрже праћење стека Евиденције отклањања грешака не садрже праћење стека @@ -126,6 +131,15 @@ Second \"item\" text" "Искључивање искачућих обавештења о грешкама сакрива сва обавештења о грешкама у ReVanced-у. Нећете бити обавештени ни о каквим неочекиваним догађајима." + Извези евиденције отклањања грешака + Копира евиденције отклањања грешака ReVanced-а у привремену меморију + Евидентирање отклањања грешака је онемогућено + Нема пронађених евиденција + Евиденције су копиране + Извоз евиденција није успео: $s + Избриши евиденције отклањања грешака + Брише све сачуване евиденције отклањања грешака ReVanced-а + Евиденције су избрисане Сакриј картице албума @@ -477,9 +491,10 @@ Second \"item\" text" Непрозирност позадине покрета превлачења Вредност непрозирности између 0 и 100 Непрозирност покрета превлачења мора бити између 0 и 100 - Боја траке напретка покрета превлачења - Боја траке напретка за контролу јачине звука и осветљености - Неважећа боја траке напретка + Боја осветљености превлачења преко екрана + Боја траке напретка за контроле осветљености + Боја јачине звука превлачења преко екрана + Боја траке напретка за контроле јачине звука Величина текста покрета превлачења Величина текста за покрет превлачења између 1 и 30 Величина текста мора бити између 1 и 30 @@ -1321,6 +1336,22 @@ Second \"item\" text" Подешавања GmsCore-а Подешавања за GmsCore + + Вибрација при додиру + Промени вибрацију при додиру + Онемогући вибрацију поглавља + Вибрација поглавља је онемогућена + Вибрација поглавља је омогућена + Онемогући вибрацију прецизног премотавања + Вибрација прецизног премотавања је онемогућена + Вибрација прецизног премотавања је омогућена + Онемогући вибрацију поништавања премотавања + Вибрација поништавања премотавања је онемогућена + Вибрација поништавања премотавања је омогућена + Онемогући вибрацију при увеличавању + Вибрација при увеличавању је онемогућена + Вибрација при увеличавању је омогућена + Ако сте недавно променили податке за пријаву на налог, деинсталирајте и поново инсталирајте MicroG. @@ -1339,11 +1370,6 @@ Second \"item\" text" Параметар упита за праћење је уклоњен из линкова Параметар упита за праћење није уклоњен из линкова - - Онемогући вибрацију при увеличавању - Вибрација при увеличавању је онемогућена - Вибрација при увеличавању је омогућена - Присили оригинални језик звука Коришћење оригиналног језика звука 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 ebfcc4bf2..792e2247c 100644 --- a/patches/src/main/resources/addresources/values-sv-rSE/strings.xml +++ b/patches/src/main/resources/addresources/values-sv-rSE/strings.xml @@ -117,6 +117,11 @@ Tryck på Fortsätt-knappen och tillåt optimeringsändringar." Logga protokollbuffert Felsökningsloggar inkluderar protobuffert Felsökningsloggar inkluderar inte protobuffert + "Om du aktiverar den här inställningen loggas ytterligare layoutdata, inklusive text på skärmen för vissa UI-komponenter. + +Detta kan hjälpa till att identifiera komponenter när du skapar anpassade filter. + +Men om du aktiverar detta kommer även vissa användardata, t.ex. din IP-adress, att loggas." Logga stackspår Felsökningsloggar inkluderar stackspår Felsökningsloggar inkluderar inte stackspår @@ -126,6 +131,15 @@ Tryck på Fortsätt-knappen och tillåt optimeringsändringar." "Att stänga av felmeddelanden döljer alla ReVanced-felmeddelanden. Du kommer inte att bli meddelad om oväntade händelser." + Exportera felsökningsloggar + Kopierar ReVanced-felsökningsloggar till Urklipp + Felsökningsloggar är inaktiverade + Inga loggar hittades + Loggar kopierade + Det gick inte att exportera loggar: $s + Rensa felsökningsloggar + Rensar alla lagrade ReVanced-felsökningsloggar + Loggar rensade Dölj albumkort @@ -477,9 +491,10 @@ Justera volymen genom att svepa vertikalt på höger sida av skärmen" Överlägg svepbakgrund opacitet Opacitetsvärde mellan 0-100 Överlagrad svepopacitet måste vara mellan 0-100 - Färg på förloppsindikatorn för svepöverlagring - Färgen på förloppsindikatorn för volym- och ljusstyrkekontroller - Ogiltig färg på förloppsindikatorn + Färg för svepgestöverlagringens ljusstyrka + Färgen på förloppsindikatorn för ljusstyrkekontroller + Färg för svepgestöverlagringens volym + Färgen på förloppsindikatorn för volymkontroller Textstorlek för svepöverlagring Textstorleken för svepöverlagring mellan 1 och 30 Textstorleken måste vara mellan 1 och 30 @@ -1321,6 +1336,22 @@ Att aktivera detta kan låsa upp högre videokvalitet" GmsCore inställningar Inställningar för GmsCore + + Haptisk återkoppling + Ändra haptisk återkoppling + Inaktivera haptik för kapitel + Haptik för kapitel är inaktiverad + Haptik för kapitel är aktiverad + Inaktivera exakt sökhaptik + Precisionssökning med haptik är inaktiverad + Exakt sökhaptik är aktiverad + Inaktivera ångra-sökning haptik + Ångra-sökning haptik är inaktiverad + Ångra-sökning haptik är aktiverad + Inaktivera zoomhaptik + Zoomhaptik är inaktiverad + Zoomhaptik är aktiverad + Om du nyligen har ändrat dina inloggningsuppgifter, avinstallera och installera om MicroG. @@ -1339,11 +1370,6 @@ Att aktivera detta kan låsa upp högre videokvalitet" Spårnings frågeparameter har tagits bort från länkar Spårnings frågeparameter har inte tagits bort från länkar - - Inaktivera zoomhaptik - Haptikerna är inaktiverade - Haptikerna är aktiverade - Forcera originalljudspråk Använder originalljudspråk 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-sw-rKE/strings.xml +++ b/patches/src/main/resources/addresources/values-sw-rKE/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-ta-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-ta-rIN/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-te-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-te-rIN/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 a059398c5..0d1e3c828 100644 --- a/patches/src/main/resources/addresources/values-th-rTH/strings.xml +++ b/patches/src/main/resources/addresources/values-th-rTH/strings.xml @@ -117,6 +117,11 @@ Second \"item\" text" บันทึกโปรโตคอลบัฟเฟอร์ การบันทึกการแก้ไขข้อบกพร่องรวมถึงโปรโตคอลบัฟเฟอร์ การบันทึกการแก้ไขข้อบกพร่องไม่รวมโปรโตคอลบัฟเฟอร์ + "การเปิดใช้งานการตั้งค่านี้จะบันทึกข้อมูลเค้าโครงเพิ่มเติม รวมถึงข้อความบนหน้าจอสำหรับส่วนประกอบ UI บางส่วน + +ซึ่งจะช่วยระบุส่วนประกอบเมื่อสร้างตัวกรองที่กำหนดเองได้ + +อย่างไรก็ตาม การเปิดใช้งานนี้จะบันทึกข้อมูลผู้ใช้บางอย่าง เช่น ที่อยู่ IP ของคุณด้วย" บันทึกการติดตามสแต็ก การบันทึกการแก้ไขข้อบกพร่องรวมถึงการติดตามสแต็ก การบันทึกการแก้ไขข้อบกพร่องไม่รวมการติดตามสแต็ก @@ -126,6 +131,15 @@ Second \"item\" text" "การปิดการแจ้งเตือนข้อผิดพลาดจะซ่อนการแจ้งเตือนข้อผิดพลาดของ ReVanced ทั้งหมด คุณจะไม่ได้รับแจ้งเกี่ยวกับเหตุการณ์ที่ไม่คาดคิดใดๆ" + ส่งออกบันทึกการแก้ไขข้อบกพร่อง + คัดลอกบันทึกการแก้ไขข้อบกพร่องของ ReVanced ไปยังคลิปบอร์ด + ปิดใช้งานการบันทึกการแก้ไขข้อบกพร่อง + ไม่พบบันทึก + คัดลอกบันทึกแล้ว + ส่งออกบันทึกล้มเหลว: $s + ล้างบันทึกการแก้ไขข้อบกพร่อง + ล้างบันทึกการแก้ไขข้อบกพร่องของ ReVanced ที่จัดเก็บไว้ทั้งหมด + ล้างบันทึกแล้ว ซ่อนการ์ดอัลบั้ม @@ -475,9 +489,10 @@ Second \"item\" text" ความทึบแสงพื้นหลังของสไลด์โอเวอร์เลย์ ค่าความทึบแสงระหว่าง 0-100 ค่าความทึบแสงของสไลด์ต้องอยู่ระหว่าง 0-100 - สีของแถบความคืบหน้าของการปัด - สีของแถบความคืบหน้าสำหรับการควบคุมระดับเสียงและความสว่าง - สีของแถบความคืบหน้าไม่ถูกต้อง + สีความสว่างของการซ้อนทับการปัด + สีของแถบความคืบหน้าสำหรับตัวควบคุมความสว่าง + สีระดับเสียงของการซ้อนทับการปัด + สีของแถบความคืบหน้าสำหรับตัวควบคุมระดับเสียง ขนาดข้อความของการปัด ขนาดข้อความสำหรับการปัดระหว่าง 1-30 ขนาดข้อความต้องอยู่ระหว่าง 1-30 @@ -1320,6 +1335,22 @@ User id ของคุณเหมือนกับรหัสผ่าน การตั้งค่า GmsCore การตั้งค่าสำหรับ GmsCore + + การตอบสนองแบบสัมผัส + เปลี่ยนการตอบสนองแบบสัมผัส + ปิดใช้งานแฮปติกบท + ปิดใช้งานแฮปติกบทแล้ว + เปิดใช้งานแฮปติกบทแล้ว + ปิดใช้งานแฮปติกการค้นหาแบบแม่นยำ + ปิดใช้งานแฮปติกการค้นหาที่แม่นยำ + เปิดใช้งานแฮปติกการค้นหาแบบแม่นยำแล้ว + ปิดใช้งานแฮปติกยกเลิกการค้นหา + ปิดใช้งานแฮปติกยกเลิกการค้นหา + เปิดใช้งานแฮปติกยกเลิกการค้นหา + ปิดใช้งานแฮปติกซูม + ปิดใช้งานแฮปติกซูม + เปิดใช้งานแฮปติกซูม + หากคุณเพิ่งเปลี่ยนรายละเอียดการเข้าสู่ระบบบัญชีของคุณ ให้ถอนการติดตั้งและติดตั้ง MicroG ใหม่อีกครั้ง @@ -1338,11 +1369,6 @@ User id ของคุณเหมือนกับรหัสผ่าน พารามิเตอร์การติดตามแบบสอบถามถูกลบออกจากลิงก์ พารามิเตอร์การติดตามแบบสอบถามไม่ได้ถูกลบออกจากลิงก์ - - ปิดใช้งานแฮปติกซูม - แฮปติกถูกปิดใช้งาน - แฮปติกเปิดใช้งาน - บังคับใช้ภาษาเสียงต้นฉบับ กำลังใช้ภาษาเสียงต้นฉบับ 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 93560b566..b3b772175 100644 --- a/patches/src/main/resources/addresources/values-tr-rTR/strings.xml +++ b/patches/src/main/resources/addresources/values-tr-rTR/strings.xml @@ -117,6 +117,11 @@ Devam düğmesine dokunun ve optimizasyon değişikliklerine izin verin."Protocol buffer\'ın kaydını tut Hata ayıklama kayıtları proto buffer\'ı içerir Hata ayıklama kayıtları proto buffer\'ı içermez + "Bu ayarın etkinleştirilmesi, bazı kullanıcı arayüzü bileşenleri için ek düzen verilerini, ekran üzerindeki metin dahil olmak üzere günlüğe kaydeder. + +Bu, özel filtreler oluştururken bileşenlerin belirlenmesine yardımcı olabilir. + +Ancak, bunun etkinleştirilmesi IP adresiniz gibi bazı kullanıcı verilerini de günlüğe kaydeder." Stack traces\'in kaydını tut Hata ayıklama kayıtları stack traces\'i içerir Hata ayıklama kayıtları stack traces\'i içermez @@ -126,6 +131,15 @@ Devam düğmesine dokunun ve optimizasyon değişikliklerine izin verin.""Hata bildirimlerini kapatmak, tüm ReVanced hata bildirimlerini gizler. Beklenmedik olaylar hakkında bilgilendirilmeyeceksiniz." + Hata ayıklama günlüklerini dışa aktar + ReVanced hata ayıklama günlüklerini panoya kopyalar + Hata ayıklama kaydı devre dışı + Kayıt bulunamadı + Günlükler kopyalandı + Günlükler dışa aktarılamadı: $s + Hata ayıklama günlüklerini temizle + Kaydedilmiş tüm ReVanced hata ayıklama günlüklerini temizler + Günlükler temizlendi Albüm kartlarını gizle @@ -477,9 +491,10 @@ Ekranın sağ tarafında dikey olarak kaydırarak sesi ayarlayın" Kaydırma paneli arka plan opaklığı 0-100 arasında opaklık değeri Kaydırma opaklığı 0-100 arasında olmalıdır - Kaydırma katmanı ilerleme çubuğu rengi - Ses ve parlaklık kontrolleri için ilerleme çubuğunun rengi - Geçersiz ilerleme çubuğu rengi + Kaydırma katmanı parlaklık rengi + Parlaklık kontrolleri için ilerleme çubuğunun rengi + Kaydırma katmanı ses rengi + Ses kontrolleri için ilerleme çubuğunun rengi Kaydırma katmanı metin boyutu Kaydırma katmanı için 1-30 arası metin boyutu Metin boyutu 1-30 arasında olmalıdır @@ -1322,6 +1337,22 @@ Bunu etkinleştirmek daha yüksek video kalitelerini açabilir" GmsCore Ayarları GmsCore için ayarlar + + Titreşimli geri bildirim + Titreşimli geri bildirimi değiştir + Bölümler titreşimini devre dışı bırak + Bölümler titreşimi devre dışı + Bölümler titreşimi etkin + Hassas sarma titreşimini devre dışı bırak + Hassas sarma titreşimi devre dışı + Hassas sarma titreşimi etkin + Sardırmayı geri alma titreşimini devre dışı bırak + Sardırmayı geri alma titreşimi devre dışı + Sardırmayı geri alma titreşimi etkin + Yakınlaştırma titreşimini devre dışı bırak + Yakınlaştırma titreşimi devre dışı + Yakınlaştırma titreşimi etkin + Yakın zamanda hesap giriş bilgilerinizi değiştirdiyseniz MicroG\'yi kaldırıp yeniden yükleyin. @@ -1340,11 +1371,6 @@ Bunu etkinleştirmek daha yüksek video kalitelerini açabilir" Bağlantılardan izleyici sorgu parametresi kaldırılır Bağlantılardan izleyici sorgu parametresi kaldırılmaz - - Yakınlaştırırken titreşimi devre dışı bırak - Titreşim devre dışı - Titreşim etkin - Orijinal ses dilini zorla Orijinal ses dili kullanılıyor diff --git a/patches/src/main/resources/addresources/values-uk-rUA/strings.xml b/patches/src/main/resources/addresources/values-uk-rUA/strings.xml index cdb579b53..b5db40a5c 100644 --- a/patches/src/main/resources/addresources/values-uk-rUA/strings.xml +++ b/patches/src/main/resources/addresources/values-uk-rUA/strings.xml @@ -117,6 +117,11 @@ Second \"item\" text" Реєструвати буфер протоколу Журнали налагодження містять протобуфер Журнали налагодження не містять протобуфер + "Увімкнення цього налаштування реєструватиме додаткові дані про макет, зокрема текст на екрані для деяких компонентів інтерфейсу. + +Це може допомогти визначити компоненти під час створення користувацьких фільтрів. + +Однак, увімкнувши це, також буде записано деякі дані користувача, наприклад Вашу IP-адресу." Реєструвати трасування стека Журнали налагодження містять трасування стека Журнали налагодження не містять трасування стека @@ -126,6 +131,15 @@ Second \"item\" text" "Вимкнення сповіщень про помилки приховує всі сповіщення про помилки ReVanced. Ви не будете отримувати сповіщення про будь-які непередбачувані події." + Експортувати журнали налагодження + Копіює журнали налагодження ReVanced до буфера обміну + Журнали налагодження вимкнено + Журнали не знайдено + Журнали скопійовано + Не вдалося експортувати журнали: $s + Очистити журнали налагодження + Очищує всі збережені журнали налагодження ReVanced + Журнали очищено Приховати картки альбому @@ -440,9 +454,9 @@ Second \"item\" text" %s не встановлено. Встановіть його. - Вимкнути жест покадрового перемотування - Жест для покадрового перемотування вимкнено - Жест для покадрового перемотування ввімкнено + Вимкнути жест точного перемотування + Жест для точного покадрового перемотування вимкнено + Жест для точного покадрового перемотування ввімкнено Увімкнути перемотку натисканням @@ -478,9 +492,10 @@ Second \"item\" text" Затемнення фону панелі жесту Значення затемнення від 0 до 100 Значення затемнення панелі жесту має бути в межах від 0 до 100 - Колір смуги прогресу панелі жесту - Колір смуги прогресу під час регулювання гучності та яскравості - Недійсний колір смуги прогресу + Колір яскравості смуги жесту + Колір смуги прогресу під час регулювання яскравості + Колір гучності смуги жесту + Колір смуги прогресу під час регулювання гучності Розмір тексту панелі жесту Розмір тексту панелі жесту від 1 до 30 Розмір тексту має бути від 1 до 30 @@ -1322,6 +1337,22 @@ Second \"item\" text" Налаштування GmsCore Відкрити GmsCore для налаштування та входу в обліковий запис Google + + Тактильна віддача + Змінити тактильну віддачу + Вимкнути вібрацію між розділами + Вібрацію між розділами вимкнено + Вібрацію між розділами ввімкнено + Вимкнути вібрацію точного перемотування + Вібрацію точного перемотування вимкнено + Вібрацію точного перемотування ввімкнено + Вимкнути вібрацію скасування перемотування + Вібрацію скасування перемотування вимкнено + Вібрацію скасування перемотування ввімкнено + Вимкнути вібрацію при масштабуванні + Вібрацію при масштабуванні вимкнено + Вібрацію при масштабуванні ввімкнено + Якщо Ви нещодавно змінили дані для входу у свій обліковий запис, видаліть і повторно встановіть MicroG. @@ -1340,11 +1371,6 @@ Second \"item\" text" Параметри запиту відстеження вилучаються з посилань під час поширення посилань Параметри запиту відстеження не вилучаються з посилань під час поширення посилань - - Вимкнути вібрацію при масштабуванні - Вібрації при масштабуванні вимкнено - Вібрації при масштабуванні ввімкнено - Примусово оригінальна мова звукової доріжки Використовується оригінальна мова звукової доріжки 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-ur-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-ur-rIN/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-uz-rUZ/strings.xml +++ b/patches/src/main/resources/addresources/values-uz-rUZ/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ 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 91f1221e3..02402dd31 100644 --- a/patches/src/main/resources/addresources/values-vi-rVN/strings.xml +++ b/patches/src/main/resources/addresources/values-vi-rVN/strings.xml @@ -117,6 +117,11 @@ Nhấn nút tiếp tục và cho phép thay đổi lựa chọn tối ưu hóa." Bộ đệm giao thức nhật ký Ghi nhật ký gỡ lỗi bao gồm thông tin bộ đệm nguyên mẫu Ghi nhật ký gỡ lỗi mà không có thông tin bộ đệm nguyên mẫu + "Bật cài đặt này sẽ ghi lại dữ liệu bố cục bổ sung, bao gồm cả văn bản trên màn hình cho một số thành phần giao diện người dùng. + +Điều này có thể giúp xác định các thành phần khi tạo bộ lọc tùy chỉnh. + +Tuy nhiên, việc bật tính năng này cũng sẽ ghi lại một số dữ liệu người dùng, chẳng hạn như địa chỉ IP của bạn." Ghi nhật ký truy vết stack Nhật ký gỡ lỗi bao gồm truy vết stack Nhật ký gỡ lỗi không bao gồm truy vết stack @@ -126,6 +131,15 @@ Nhấn nút tiếp tục và cho phép thay đổi lựa chọn tối ưu hóa." "Tắt thông báo lỗi sẽ ẩn tất cả thông báo lỗi của ReVanced. Bạn sẽ không được thông báo về bất kỳ sự kiện bất ngờ nào." + Xuất nhật ký gỡ lỗi + Sao chép nhật ký gỡ lỗi ReVanced vào bảng nhớ tạm + Tính năng ghi nhật ký gỡ lỗi bị tắt + Không tìm thấy nhật ký + Đã sao chép nhật ký + Không xuất được nhật ký: $s + Xóa nhật ký gỡ lỗi + Xóa tất cả nhật ký gỡ lỗi ReVanced đã lưu trữ + Đã xóa nhật ký Ẩn các thẻ album @@ -477,9 +491,10 @@ Tính năng này chỉ khả dụng cho các thiết bị cũ hơn" Độ mờ nền phủ vuốt Giá trị độ mờ từ 0-100 Độ mờ vuốt phải nằm trong khoảng từ 0-100 - Màu thanh tiến trình lớp phủ vuốt - Màu của thanh tiến trình cho các điều khiển âm lượng và độ sáng - Màu thanh tiến trình không hợp lệ + Màu độ sáng lớp phủ vuốt + Màu của thanh tiến trình cho điều khiển độ sáng + Màu âm lượng lớp phủ vuốt + Màu của thanh tiến trình cho điều khiển âm lượng Kích thước văn bản lớp phủ vuốt Kích thước văn bản cho lớp phủ vuốt từ 1-30 Kích thước văn bản phải nằm trong khoảng 1-30 @@ -1321,6 +1336,22 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"Cài đặt GmsCore Các cài đặt cho GmsCore + + Phản hồi xúc giác + Thay đổi phản hồi xúc giác + Tắt phản hồi xúc giác chương + Phản hồi xúc giác chương đã tắt + Phản hồi xúc giác chương đã bật + Tắt phản hồi xúc giác khi tua chính xác + Phản hồi xúc giác khi tua chính xác đã tắt + Phản hồi xúc giác khi tua chính xác đã bật + Tắt phản hồi xúc giác khi huỷ tua + Phản hồi xúc giác khi huỷ tua đã tắt + Phản hồi xúc giác khi huỷ tua đã bật + Tắt phản hồi xúc giác khi thu phóng + Phản hồi xúc giác khi thu phóng đã tắt + Phản hồi xúc giác khi thu phóng đã bật + Nếu gần đây bạn đã cập nhật thông tin đăng nhập tài khoản của mình, hãy gỡ và cài đặt lại MicroG. @@ -1339,11 +1370,6 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"Tham số truy vấn theo dõi đã bị loại bỏ khỏi liên kết Tham số truy vấn theo dõi không được loại bỏ khỏi liên kết - - Tắt phản hồi xúc giác khi thu phóng - Phản hồi xúc giác được tắt - Phản hồi xúc giác được bật - Buộc sử dụng ngôn ngữ âm thanh gốc Sử dụng ngôn ngữ âm thanh gốc 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 2939cba96..61a5fd8c0 100644 --- a/patches/src/main/resources/addresources/values-zh-rCN/strings.xml +++ b/patches/src/main/resources/addresources/values-zh-rCN/strings.xml @@ -117,6 +117,11 @@ Second \"item\" text" 记录协议缓冲区 调试日志包括协议缓冲区 调试日志不包括协议缓冲区 + "启用此设置将记录额外的布局数据,包括某些 UI 组件的屏幕文本。 + +这有助于在创建自定义过滤器时识别组件。 + +但是,启用此设置也会记录一些用户数据,例如您的 IP 地址。" 记录堆栈跟踪 调试日志包括堆栈跟踪 调试日志不包括堆栈跟踪 @@ -126,6 +131,15 @@ Second \"item\" text" "关闭错误 Toast 会隐藏所有 ReVanced 错误通知。 您不会收到任何意外事件的通知。" + 导出调试日志 + 将 ReVanced 调试日志复制到剪贴板 + 调试日志记录已禁用 + 未找到日志 + 日志已复制 + 导出日志失败:$s + 清除调试日志 + 清除所有存储的 ReVanced 调试日志 + 日志已清除 隐藏专辑卡片 @@ -477,9 +491,6 @@ Second \"item\" text" 滑动提示层背景的不透明度 不透明度值介于 0-100 之间 滑动不透明度必须介于 0-100 之间 - 滑动提示层进度条颜色 - 音量和亮度控件的进度条颜色 - 无效的进度条颜色 滑动提示层文字大小 滑动提示层的文字大小,范围为 1-30 文字大小必须在 1-30 之间 @@ -1326,6 +1337,22 @@ Second \"item\" text" GmsCore 设置 GmsCore 的设置 + + 触感反馈 + 更改触感反馈 + 禁用章节触感反馈 + 已禁用章节触感反馈 + 已启用章节触感反馈 + 禁用精确搜索触感反馈 + 精确查找触觉反馈已禁用 + 已启用精确搜索触感反馈 + 禁用撤销查找触觉反馈 + 撤销查找触觉反馈已禁用 + 撤销查找触觉反馈已启用 + 禁用缩放触觉反馈 + 缩放触觉反馈已禁用 + 缩放触觉反馈已启用 + 如果您最近更改了帐户登录详细信息,请卸载并重新安装 MicroG。 @@ -1344,11 +1371,6 @@ 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 b64327801..824471bb8 100644 --- a/patches/src/main/resources/addresources/values-zh-rTW/strings.xml +++ b/patches/src/main/resources/addresources/values-zh-rTW/strings.xml @@ -465,7 +465,6 @@ Second \"item\" text" 滑動覆蓋背景透明度 不透明度值介於 0 到 100 之間 滑動透明度必須介於 0 到 100 之間 - 音量和亮度控制的進度列顏色 滑動幅度臨界點 滑動幅度臨界點 音量滑動靈敏度 @@ -1300,6 +1299,9 @@ Second \"item\" text" GmsCore 設定 GmsCore 設定 + + 停用縮放震動 + 如果您最近變更了帳戶登入詳細資訊,請解除安裝並重新安裝 MicroG。 @@ -1318,11 +1320,6 @@ Second \"item\" text" 已從連結移除追蹤查詢參數 未從連結移除追蹤查詢參數 - - 停用縮放震動 - 已停用震動 - 已啟用震動 - 強制使用原始音訊語言 正在使用原始音訊語言 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 24e47c741..c22e2c4a4 100644 --- a/patches/src/main/resources/addresources/values-zu-rZA/strings.xml +++ b/patches/src/main/resources/addresources/values-zu-rZA/strings.xml @@ -199,6 +199,8 @@ Second \"item\" text" + + @@ -207,8 +209,6 @@ Second \"item\" text" - - From 1853c2745ab02e8504927fad85f339c489b3f3c7 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 28 May 2025 10:02:34 +0000 Subject: [PATCH 40/46] chore: Release v5.25.0-dev.12 [skip ci] # [5.25.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.11...v5.25.0-dev.12) (2025-05-28) ### Features * **YouTube - Swipe controls:** Add separate color settings for the brightness and volume bars ([#5043](https://github.com/ReVanced/revanced-patches/issues/5043)) ([80f50e8](https://github.com/ReVanced/revanced-patches/commit/80f50e8c50ca6a8366b7fd7b01459fb16fa1074a)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 213294395..c40adf52d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [5.25.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.11...v5.25.0-dev.12) (2025-05-28) + + +### Features + +* **YouTube - Swipe controls:** Add separate color settings for the brightness and volume bars ([#5043](https://github.com/ReVanced/revanced-patches/issues/5043)) ([80f50e8](https://github.com/ReVanced/revanced-patches/commit/80f50e8c50ca6a8366b7fd7b01459fb16fa1074a)) + # [5.25.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.10...v5.25.0-dev.11) (2025-05-27) diff --git a/gradle.properties b/gradle.properties index 379aedf3d..cc06df32b 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.25.0-dev.11 +version = 5.25.0-dev.12 From a94982b4313fcfcc769c4f7e02faa938522374e1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 28 May 2025 22:37:18 +0200 Subject: [PATCH 41/46] chore: Sync translations (#5061) --- .../addresources/values-ar-rSA/strings.xml | 4 +++ .../addresources/values-be-rBY/strings.xml | 4 +++ .../addresources/values-bg-rBG/strings.xml | 6 +++- .../addresources/values-ca-rES/strings.xml | 4 +++ .../addresources/values-cs-rCZ/strings.xml | 4 +++ .../addresources/values-da-rDK/strings.xml | 4 +++ .../addresources/values-de-rDE/strings.xml | 4 +++ .../addresources/values-el-rGR/strings.xml | 4 +++ .../addresources/values-es-rES/strings.xml | 4 +++ .../addresources/values-fr-rFR/strings.xml | 4 +++ .../addresources/values-ga-rIE/strings.xml | 4 +++ .../addresources/values-hu-rHU/strings.xml | 4 +++ .../addresources/values-hy-rAM/strings.xml | 4 +++ .../addresources/values-it-rIT/strings.xml | 4 +++ .../addresources/values-ja-rJP/strings.xml | 4 +++ .../addresources/values-ko-rKR/strings.xml | 10 ++++-- .../addresources/values-lt-rLT/strings.xml | 4 +++ .../addresources/values-nl-rNL/strings.xml | 4 +++ .../addresources/values-pl-rPL/strings.xml | 4 +++ .../addresources/values-pt-rPT/strings.xml | 4 +++ .../addresources/values-ro-rRO/strings.xml | 4 +++ .../addresources/values-ru-rRU/strings.xml | 4 +++ .../addresources/values-sq-rAL/strings.xml | 4 +++ .../addresources/values-uk-rUA/strings.xml | 22 ++++++------ .../addresources/values-vi-rVN/strings.xml | 34 +++++++++---------- 25 files changed, 124 insertions(+), 32 deletions(-) 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 d4aaf27e5..b79abddd2 100644 --- a/patches/src/main/resources/addresources/values-ar-rSA/strings.xml +++ b/patches/src/main/resources/addresources/values-ar-rSA/strings.xml @@ -491,6 +491,10 @@ Second \"item\" text" تعتيم خلفية واجهة التمرير السريع قيمة التعتيم بين 0-100 يجب أن يكون تعتيم التمرير السريع بين 0-100 + لون سطوع واجهة التمرير + لون شريط التقدم لعناصر التحكم في السطوع + لون مستوى صوت واجهة التمرير + لون شريط التقدم لعناصر التحكم في مستوى الصوت حجم نص واجهة التمرير حجم النص لواجهة التمرير بين 1-30 يجب أن يكون حجم النص بين 1-30 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 7c2bbc58b..0809d922d 100644 --- a/patches/src/main/resources/addresources/values-be-rBY/strings.xml +++ b/patches/src/main/resources/addresources/values-be-rBY/strings.xml @@ -491,6 +491,10 @@ Second \"item\" text" Непразрыстасць фону накладкі пракруткі Значэнне непразрыстасці паміж 0-100 Непразрыстасць пракруткі павінна быць паміж 0-100 + Колер яркасці накладкі правядзення + Колер шкалы прагрэсу для элементаў кіравання яркасцю + Колер гучнасці накладкі правядзення + Колер шкалы прагрэсу для элементаў кіравання гучнасцю Памер тэксту накладкі правядзення Памер тэксту для накладкі правядзення ад 1 да 30 Памер тэксту павінен быць у межах ад 1 да 30 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 669ffec8f..6becb64f3 100644 --- a/patches/src/main/resources/addresources/values-bg-rBG/strings.xml +++ b/patches/src/main/resources/addresources/values-bg-rBG/strings.xml @@ -90,7 +90,7 @@ Second \"item\" text" Реклами Алтернативни миниатюри Поток - Общ + Общи Плеър Лента за прогрес на видеото Контроли с плъзгане @@ -491,6 +491,10 @@ Second \"item\" text" Плъзгане на фона на наслагването непрозрачност Стойност на непрозрачността между 0-100 Непрозрачността на плъзгането трябва да е между 0-100 + Цвят на наслагването за яркост при плъзгане + Цветът на лентата за състояние при контролиране на яркостта + Цвят на наслагването за сила на звука при плъзгане + Цветът на лентата за състояние при контролиране на силата на звука Размер на текста на наслагването при плъзгане Размерът на текста за наслагването при плъзгане между 1-30 Размерът на текста трябва да е между 1-30 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 84113b47c..2f3a35345 100644 --- a/patches/src/main/resources/addresources/values-ca-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-ca-rES/strings.xml @@ -491,6 +491,10 @@ Ajusteu el volum lliscant verticalment a la part dreta de la pantalla" Opacitat del fons de la superposició de lliscament Valor d\'opacitat entre 0 i 100 L\'opacitat de lliscament ha d\'estar entre 0 i 100 + Color de la lluminositat de la superposició de lliscament + El color de la barra de progrés per als controls de brillantor + Color del volum de la superposició de lliscament + El color de la barra de progrés per als controls de volum Mida del text de la superposició lliscant La mida del text per a la superposició lliscant entre 1 i 30 La mida del text ha d\'estar entre 1 i 30 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 c0212969b..763588f8c 100644 --- a/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml +++ b/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml @@ -491,6 +491,10 @@ Hlasitost se upravuje svislým přejetím po pravé straně obrazovky" Průsvitnost pozadí překrytí tažením Hodnota průsvitnosti mezi 0-100 Průsvitnost tažení musí být mezi 0-100 + Barva jasu překryvné vrstvy tažení + Barva ukazatele průběhu pro ovládání jasu + Barva hlasitosti překryvné vrstvy tažení + Barva ukazatele průběhu pro ovládání hlasitosti Velikost textu překrytí přejetím Velikost textu překrytí přejetím mezi 1–30 Velikost textu musí být mezi 1–30 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 668ea4ce0..5ae0ea6af 100644 --- a/patches/src/main/resources/addresources/values-da-rDK/strings.xml +++ b/patches/src/main/resources/addresources/values-da-rDK/strings.xml @@ -458,6 +458,10 @@ Juster lydstyrken ved at swipe lodret i højre side af skærmen" Baggrundsgennemsigtighed for swipe-overlay Gennemsigtighedsværdi mellem 0-100 Gennemsigtighed for swipe skal være mellem 0-100 + Farve på lysstyrke for strygeoverlejring + Farven på statuslinjen for lysstyrkekontroller + Farve på lydstyrke for strygeoverlejring + Farven på statuslinjen for lydstyrkekontroller Tekststørrelse for strygeoverlejring Tekststørrelsen for strygeoverlejring mellem 1-30 Tekststørrelsen skal være mellem 1-30 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 ab20ef3b8..461502e85 100644 --- a/patches/src/main/resources/addresources/values-de-rDE/strings.xml +++ b/patches/src/main/resources/addresources/values-de-rDE/strings.xml @@ -484,6 +484,10 @@ Passen Sie die Helligkeit an, indem Sie auf der linken Seite des Bildschirms ver Bildschirmüberlagerung Deckkraft Swipe Deckkraftwert zwischen 0-100 Die Wischdeckkraft muss zwischen 0 und 100 liegen + Farbe der Helligkeit des Wisch-Overlays + Die Farbe der Fortschrittsanzeige für Helligkeitsregler + Farbe der Lautstärke des Wisch-Overlays + Die Farbe der Fortschrittsanzeige für Lautstärkeregler Textgröße der Wischgesten-Überlagerung Die Textgröße für die Wischgesten-Überlagerung zwischen 1 und 30 Die Textgröße muss zwischen 1 und 30 liegen 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 473b06f42..7a1b5cb81 100644 --- a/patches/src/main/resources/addresources/values-el-rGR/strings.xml +++ b/patches/src/main/resources/addresources/values-el-rGR/strings.xml @@ -493,6 +493,10 @@ Second \"item\" text" Αδιαφάνεια φόντου σάρωσης Τιμή αδιαφάνειας μεταξύ 0-100 Η αδιαφάνεια σάρωσης πρέπει να είναι μεταξύ 0-100 + Χρώμα φωτεινότητας σάρωσης + Το χρώμα της γραμμής προόδου για τα στοιχεία ελέγχου φωτεινότητας + Χρώμα έντασης ήχου σάρωσης + Το χρώμα της γραμμής προόδου για τα στοιχεία ελέγχου έντασης ήχου Μέγεθος κειμένου σάρωσης Το μέγεθος κειμένου για τα στοιχεία ελέγχου σάρωσης μεταξύ 1-30 Το μέγεθος κειμένου πρέπει να είναι μεταξύ 1-30 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 85e113050..2c52ebaea 100644 --- a/patches/src/main/resources/addresources/values-es-rES/strings.xml +++ b/patches/src/main/resources/addresources/values-es-rES/strings.xml @@ -488,6 +488,10 @@ Ajusta el volumen deslizando verticalmente en el lado derecho de la pantalla"Opacidad del fondo de la superposición de deslizamiento Valor de opacidad entre 0-100 La opacidad de la superposición de deslizamiento debe estar entre 0 y 100 + Color del brillo de la superposición de deslizamiento + El color de la barra de progreso para los controles de brillo + Color del volumen de la superposición de deslizamiento + El color de la barra de progreso para los controles de volumen Tamaño del texto de la superposición de deslizamiento El tamaño del texto para la superposición de deslizamiento entre 1 y 30 El tamaño del texto debe estar entre 1 y 30 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 e1bfa05f5..9b138efe8 100644 --- a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml +++ b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml @@ -491,6 +491,10 @@ Réglez le volume en balayant verticalement sur le côté droit de l'écran"Opacité de l\'arrière-plan de l\'overlay des gestes Valeur de l\'opacité entre 0 et 100 L\'opacité doit être comprise entre 0 et 100 pour les gestes + Couleur de l\'overlay des gestes de contrôle de la luminosité + La couleur de la barre de progression des commandes de luminosité + Couleur de l\'overlay des gestes de contrôle du volume + La couleur de la barre de progression des commandes de volume Taille du texte de l\'overlay des gestes La taille du texte de l\'overlay des gestes comprise entre 1 et 30 La taille du texte doit être comprise entre 1 et 30 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 86c69102e..859399956 100644 --- a/patches/src/main/resources/addresources/values-ga-rIE/strings.xml +++ b/patches/src/main/resources/addresources/values-ga-rIE/strings.xml @@ -491,6 +491,10 @@ Coigeartaigh an toirt trí haisceartán go hingearach ar thaobh deas an scáile Réabhlóid thrasláiteachta na gcúlra léaráidí Luach léaráidí idir 0-100 Caithfidh léaráidí traslaithe a bheith idir 0-100 + Dath gile forleagan swipe + Dath an bharra dul chun cinn do rialuithe gile + Dath toirte forleagan swipe + Dath an bharra dul chun cinn do rialuithe toirte Méid téacs an fhorleagain swipe Méid téacs an fhorleagain swipe idir 1-30 Caithfidh an méid téacs a bheith idir 1-30 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 731c7ab69..053bcd907 100644 --- a/patches/src/main/resources/addresources/values-hu-rHU/strings.xml +++ b/patches/src/main/resources/addresources/values-hu-rHU/strings.xml @@ -491,6 +491,10 @@ A hangerő a képernyő jobb oldalán függőlegesen húzva állítható be"Az áthúzás átfedésének átlátszósága Az átlátszóság értéke 0-100 között legyen A csúsztatás átlátszóságának 0 és 100 között kell lennie + A húzással előhívható fedőréteg fényerejének színe + A fényerő-szabályozókhoz tartozó folyamatjelző sáv színe + A húzással előhívható fedőréteg hangerejének színe + A hangerő-szabályozókhoz tartozó folyamatjelző sáv színe Áthúzás fedvény szövegmérete Az áthúzás fedvény szövegmérete 1-30 között A szövegméretnek 1-30 között kell lennie 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 835630853..9ade2d524 100644 --- a/patches/src/main/resources/addresources/values-hy-rAM/strings.xml +++ b/patches/src/main/resources/addresources/values-hy-rAM/strings.xml @@ -491,6 +491,10 @@ MicroG-ի համար մարտկոցի օպտիմալացումը անջատել Սողացման ծածկույթի ֆոնի անթափանցություն Անթափանցության արժեք 0-100 միջակայքում Սողալու անթափանցությունը պետք է լինի 0-100 միջակայքում + Սահեցնել վառության գույնի վրադիրը + Վառության կառավարման առաջընթացի սանդղակի գույնը + Սահեցնել ձայնի գույնի վրադիրը + Ձայնի կառավարման առաջընթացի սանդղակի գույնը Սահեցրեք շերտի տեքստի չափը Սահեցրեք շերտի տեքստի չափը 1-30 միջակայքում Տեքստի չափը պետք է լինի 1-30 միջակայքում 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 aa2d83000..c116844d0 100644 --- a/patches/src/main/resources/addresources/values-it-rIT/strings.xml +++ b/patches/src/main/resources/addresources/values-it-rIT/strings.xml @@ -491,6 +491,10 @@ Regola il volume scorrendo verticalmente sul lato destro dello schermo" Opacità di sfondo della sovrapposizione di scorrimento Valore di opacità tra 0-100 L\'opacità di scorrimento deve essere tra 0-100 + Colore della luminosit dell\'overlay a scorrimento + Il colore della barra di avanzamento per i controlli della luminosit + Colore del volume dell\'overlay a scorrimento + Il colore della barra di avanzamento per i controlli del volume Dimensione del testo della sovrapposizione a scorrimento La dimensione del testo per la sovrapposizione a scorrimento tra 1 e 30 La dimensione del testo deve essere compresa tra 1 e 30 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 3c85af29a..cb1336622 100644 --- a/patches/src/main/resources/addresources/values-ja-rJP/strings.xml +++ b/patches/src/main/resources/addresources/values-ja-rJP/strings.xml @@ -494,6 +494,10 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ オーバーレイの背景の透明度 透明度の範囲は 0-100 で、0 が透明です スワイプ: 透明度の範囲は 0-100 です + スワイプ オーバーレイの明るさの色 + 明るさ調節の進行状況バーの色 + スワイプ オーバーレイの音量 + 音量調節の進行状況バーの色 オーバーレイのテキストサイズ スワイプ オーバーレイのテキストサイズ (1-30) テキストサイズの範囲は 1-30 です 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 3c413922c..6052fa49a 100644 --- a/patches/src/main/resources/addresources/values-ko-rKR/strings.xml +++ b/patches/src/main/resources/addresources/values-ko-rKR/strings.xml @@ -490,6 +490,10 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배 스와이프 오버레이 배경 불투명도 스와이프 불투명도 값은 0-100 사이여야 합니다 스와이프 불투명도 값은 0-100 사이여야 합니다 + 스와이프 오버레이 밝기 조절바 색상 + 스와이프 오버레이 밝기 조절바 색상을 변경할 수 있습니다 + 스와이프 오버레이 볼륨 조절바 색상 + 스와이프 오버레이 볼륨 조절바 색상을 변경할 수 있습니다 스와이프 오버레이 텍스트 크기 스와이프 오버레이 텍스트 크기를 지정할 수 있습니다 (1-30) 텍스트 크기는 1-30 사이여야 합니다 @@ -1256,10 +1260,10 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배 사용자 정의 재생바 색상을 활성화합니다 기본 재생바 색상을 활성화합니다 사용자 정의 재생바 메인 색상 - 사용하고 싶은 재생바 메인 색상의 헥스 코드를 입력하세요 + 재생바 메인 색상을 변경할 수 있습니다 사용자 정의 재생바 보조 색상 - 사용하고 싶은 재생바 보조 색상의 헥스 코드를 입력하세요 - 잘못된 재생바 헥스 코드입니다 + 재생바 보조 색상을 변경할 수 있습니다 + 잘못된 재생바 색상입니다 이미지 표시 제한 국가 우회하기 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 f2b3c93b9..b2c6b9330 100644 --- a/patches/src/main/resources/addresources/values-lt-rLT/strings.xml +++ b/patches/src/main/resources/addresources/values-lt-rLT/strings.xml @@ -491,6 +491,10 @@ Reguliuokite garsumą braukdami vertikaliai dešinėje ekrano pusėje" Užšliaukite dangos nušveitimo fono permatinumas Permatnumo vertė nuo 0 iki 100 Slinkties permatnumas turi būti nuo 0 iki 100 + Perbraukimo perdangos ryškumo spalva + Ryškumo valdiklių eigos juostos spalva + Perbraukimo perdangos garsumo spalva + Garsumo valdiklių eigos juostos spalva Perbraukimo perdangos teksto dydis Perbraukimo perdangos teksto dydis turi būti nuo 1 iki 30 Teksto dydis turi būti nuo 1 iki 30 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 9e7d8fc43..fb2b703ae 100644 --- a/patches/src/main/resources/addresources/values-nl-rNL/strings.xml +++ b/patches/src/main/resources/addresources/values-nl-rNL/strings.xml @@ -491,6 +491,10 @@ Pas het volume aan door verticaal over de rechterkant van het scherm te vegen"Dekking van de Swipe overlay Dekking tussen 0-100 Dekking moet tussen 0-100 zijn + Veeg-overlay helderheidskleur + De kleur van de voortgangsbalk voor helderheidsbediening + Veeg-overlay volumekleur + De kleur van de voortgangsbalk voor volumebediening Tekengrootte swipe-overlay De tekstgrootte voor swipe-overlay tussen 1-30 De tekstgrootte moet tussen 1-30 liggen 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 c886b2ef7..2c46b57ff 100644 --- a/patches/src/main/resources/addresources/values-pl-rPL/strings.xml +++ b/patches/src/main/resources/addresources/values-pl-rPL/strings.xml @@ -487,6 +487,10 @@ Dostosuj głośność, przesuwając pionowo po prawej stronie ekranu" Przejrzystość tła nakładki przesuwania Wartość przezroczystości od 0 do 100 Przezroczystość przesuwania musi być między 0 a 100 + Kolor nakładki przesunięcia dla jasności + Kolor paska postępu dla elementów sterujących jasnością + Kolor nakładki przesunięcia dla głośności + Kolor paska postępu dla elementów sterujących głośnością Rozmiar tekstu nakładki przesuwania Rozmiar tekstu dla nakładki przesunięcia między 1-30 Rozmiar tekstu musi mieścić się w przedziale 1-30 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 e23c3c303..ec8c427c3 100644 --- a/patches/src/main/resources/addresources/values-pt-rPT/strings.xml +++ b/patches/src/main/resources/addresources/values-pt-rPT/strings.xml @@ -491,6 +491,10 @@ Ajuste o volume deslizando verticalmente no lado direito da tela" Opacidade do plano de fundo da sobreposição de deslizar Valor de opacidade entre 0-100 A opacidade do deslizar deve estar entre 0-100 + Cor da cor do brilho da sobreposição de deslizamento + A cor da barra de progresso para controles de brilho + Cor do volume da sobreposição de deslizamento + A cor da barra de progresso para controles de volume Tamanho do texto da sobreposição de deslize O tamanho do texto para a sobreposição de deslize entre 1 e 30 O tamanho do texto deve estar entre 1 e 30 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 bc4171def..0c2735d8f 100644 --- a/patches/src/main/resources/addresources/values-ro-rRO/strings.xml +++ b/patches/src/main/resources/addresources/values-ro-rRO/strings.xml @@ -491,6 +491,10 @@ Reglați volumul glisând vertical pe partea dreaptă a ecranului" Opacitate suprapunere glisare Valoare opacitate între 0-100 Opacitatea glisării trebuie să fie între 0-100 + Culoarea luminozității suprapunerii glisante + Culoarea barei de progres pentru comenzile de luminozitate + Culoarea volumului suprapunerii glisante + Culoarea barei de progres pentru comenzile de volum Dimensiune text suprapunere glisare Dimensiunea textului pentru suprapunerea glisării între 1-30 Dimensiunea textului trebuie să fie între 1-30 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 aba2aad03..86a10fa4a 100644 --- a/patches/src/main/resources/addresources/values-ru-rRU/strings.xml +++ b/patches/src/main/resources/addresources/values-ru-rRU/strings.xml @@ -491,6 +491,10 @@ Second \"item\" text" Затемнение фона панели жестов Значение затемнения всплывающей панели при жестах от 0 до 100 Значение затемнения панели жестов должно быть от 0 до 100 + Цвет наложения жестов для яркости + Цвет полосы прогресса при изменении яркости жестами + Цвет наложения жестов для громкости + Цвет полосы прогресса при изменении громкости жестами Размер текста панели жестов Размер текста панели жестов от 1 до 30 Размер текста должен быть в диапазоне от 1 до 30 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 6f6c7fc9e..9cc7616f1 100644 --- a/patches/src/main/resources/addresources/values-sq-rAL/strings.xml +++ b/patches/src/main/resources/addresources/values-sq-rAL/strings.xml @@ -491,6 +491,10 @@ Përshtate shkëlqimin duke rrëshqitur vertikalisht në anën e majtë të ekra Opasiteti i sfondit mbivendosës shtypëse Vlera e opacitetit midis 0-100 Opaciteti i shtypjes duhet të jetë midis 0-100 + Ngjyra e ndriçimit të mbivendosjes me rrëshqitje + Ngjyra e shiritit të progresit për kontrollet e ndriçimit + Ngjyra e volumit të mbivendosjes me rrëshqitje + Ngjyra e shiritit të progresit për kontrollet e volumit Madhësia e tekstit të mbivendosjes së rrëshqitjes Madhësia e tekstit për mbivendosjen e rrëshqitjes midis 1-30 Madhësia e tekstit duhet të jetë midis 1-30 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 b5db40a5c..e92714e69 100644 --- a/patches/src/main/resources/addresources/values-uk-rUA/strings.xml +++ b/patches/src/main/resources/addresources/values-uk-rUA/strings.xml @@ -460,8 +460,8 @@ Second \"item\" text" Увімкнути перемотку натисканням - Перемотку натисканням на панель прогресу ввімкнено - Перемотку натисканням на панель прогресу вимкнено + Перемотку натисканням на смугу прогресу ввімкнено + Перемотку натисканням на смугу прогресу вимкнено Зміна яскравості жестом @@ -492,9 +492,9 @@ Second \"item\" text" Затемнення фону панелі жесту Значення затемнення від 0 до 100 Значення затемнення панелі жесту має бути в межах від 0 до 100 - Колір яскравості смуги жесту + Колір смуги прогресу яскравості Колір смуги прогресу під час регулювання яскравості - Колір гучності смуги жесту + Колір смуги прогресу гучності Колір смуги прогресу під час регулювання гучності Розмір тексту панелі жесту Розмір тексту панелі жесту від 1 до 30 @@ -1254,13 +1254,13 @@ 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 02402dd31..bc665941f 100644 --- a/patches/src/main/resources/addresources/values-vi-rVN/strings.xml +++ b/patches/src/main/resources/addresources/values-vi-rVN/strings.xml @@ -133,7 +133,7 @@ Tuy nhiên, việc bật tính năng này cũng sẽ ghi lại một số dữ l Bạn sẽ không được thông báo về bất kỳ sự kiện bất ngờ nào." Xuất nhật ký gỡ lỗi Sao chép nhật ký gỡ lỗi ReVanced vào bảng nhớ tạm - Tính năng ghi nhật ký gỡ lỗi bị tắt + Tính năng ghi nhật ký gỡ lỗi đã tắt Không tìm thấy nhật ký Đã sao chép nhật ký Không xuất được nhật ký: $s @@ -459,8 +459,8 @@ Tính năng này chỉ khả dụng cho các thiết bị cũ hơn" Bật nhấn để tua - Nhấn để tua được bật - Nhấn để tua bị tắt + Nhấn để tua đã bật + Nhấn để tua đã tắt Bật cử chỉ độ sáng @@ -491,10 +491,10 @@ Tính năng này chỉ khả dụng cho các thiết bị cũ hơn" Độ mờ nền phủ vuốt Giá trị độ mờ từ 0-100 Độ mờ vuốt phải nằm trong khoảng từ 0-100 - Màu độ sáng lớp phủ vuốt - Màu của thanh tiến trình cho điều khiển độ sáng - Màu âm lượng lớp phủ vuốt - Màu của thanh tiến trình cho điều khiển âm lượng + Màu lớp phủ vuốt độ sáng + Màu của thanh điều chỉnh độ sáng + Màu lớp phủ vuốt âm lượng + Màu của thanh điều chỉnh âm lượng Kích thước văn bản lớp phủ vuốt Kích thước văn bản cho lớp phủ vuốt từ 1-30 Kích thước văn bản phải nằm trong khoảng 1-30 @@ -690,7 +690,7 @@ Nếu việc thay đổi cài đặt này không có hiệu lực, hãy thử ch Tắt Chế độ môi trường khi toàn màn hình Chế độ môi trường đã tắt - Chế độ môi trường được bật + Chế độ môi trường đã bật Ẩn thẻ thông tin @@ -904,8 +904,8 @@ Hạn chế: Số lượt không thích có thể không xuất hiện ở chế Bật thanh tìm kiếm rộng - Thanh tìm kiếm rộng được bật - Thanh tìm kiếm rộng được tắt + Thanh tìm kiếm rộng đã bật + Thanh tìm kiếm rộng đã tắt Bật hình thu nhỏ chất lượng cao @@ -963,8 +963,8 @@ Tính năng này hoạt động tốt nhất với chất lượng video 720p tr Thông báo nổi được hiển thị nếu SponsorBlock không khả dụng Thông báo nổi không được hiển thị nếu SponsorBlock không khả dụng Bật theo dõi số lần bỏ qua - Để bảng xếp hạng SponsorBlock biết đã tiết kiệm bao nhiêu thời gian. Một tin nhắn được gửi đến bảng xếp hạng mỗi khi một phân đoạn được bỏ qua - Theo dõi số lần bỏ qua được bật + Cho phép bảng xếp hạng SponsorBlock biết đã tiết kiệm được bao nhiêu thời gian. Một tin nhắn được gửi đến bảng xếp hạng mỗi khi một phân đoạn bị bỏ qua + Theo dõi số lần bỏ qua không được bật Thời lượng phân đoạn tối thiểu Các phân đoạn ngắn hơn giá trị này (bằng giây) sẽ không được hiển thị hoặc bị bỏ qua Thời lượng không hợp lệ @@ -1431,7 +1431,7 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn" Bật vuốt để tua - Vuốt để tua được bật + Vuốt để tua đã bật Vuốt để tua không được bật @@ -1500,8 +1500,8 @@ AVC có độ phân giải tối đa là 1080p, bộ giải mã âm thanh Opus k Bật chế độ gỡ lỗi Twitch - Chế độ gỡ lỗi Twitch được bật (không khuyến nghị) - Chế độ gỡ lỗi Twitch được tắt + Chế độ gỡ lỗi Twitch đã bật (không khuyến nghị) + Chế độ gỡ lỗi Twitch đã tắt Cài đặt ReVanced @@ -1518,8 +1518,8 @@ AVC có độ phân giải tối đa là 1080p, bộ giải mã âm thanh Opus k Quảng cáo phía máy khách Quảng cáo luồng đảm bảo phía máy khách Nhật ký gỡ lỗi - Nhật ký gỡ lỗi được bật - Nhật ký gỡ lỗi được tắt + Nhật ký gỡ lỗi đã bật + Nhật ký gỡ lỗi đã tắt From 80f1fc629e30e391bd5877f07dbdf4b6613bd1cf Mon Sep 17 00:00:00 2001 From: hoodles <207470673+hoo-dles@users.noreply.github.com> Date: Wed, 28 May 2025 13:38:09 -0700 Subject: [PATCH 42/46] feat(Prime Video): Add `Rename shared permissions` patch (#5049) --- patches/api/patches.api | 4 ++ .../permissions/RenamePermissionsPatch.kt | 44 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 patches/src/main/kotlin/app/revanced/patches/primevideo/misc/permissions/RenamePermissionsPatch.kt diff --git a/patches/api/patches.api b/patches/api/patches.api index 09dbd1698..cb6d96555 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -440,6 +440,10 @@ public final class app/revanced/patches/primevideo/misc/extension/ExtensionPatch public static final fun getSharedExtensionPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } +public final class app/revanced/patches/primevideo/misc/permissions/RenamePermissionsPatchKt { + public static final fun getRenamePermissionsPatch ()Lapp/revanced/patcher/patch/ResourcePatch; +} + public final class app/revanced/patches/protonmail/signature/RemoveSentFromSignaturePatchKt { public static final fun getRemoveSentFromSignaturePatch ()Lapp/revanced/patcher/patch/ResourcePatch; } diff --git a/patches/src/main/kotlin/app/revanced/patches/primevideo/misc/permissions/RenamePermissionsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/primevideo/misc/permissions/RenamePermissionsPatch.kt new file mode 100644 index 000000000..9a671879f --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/primevideo/misc/permissions/RenamePermissionsPatch.kt @@ -0,0 +1,44 @@ +package app.revanced.patches.primevideo.misc.permissions + +import app.revanced.patcher.patch.PatchException +import app.revanced.patcher.patch.resourcePatch +import app.revanced.util.asSequence +import app.revanced.util.getNode +import org.w3c.dom.Element + +@Suppress("unused") +val renamePermissionsPatch = resourcePatch( + name = "Rename shared permissions", + description = "Rename certain permissions shared across Amazon apps. " + + "Applying this patch can fix installation errors, but can also break features in certain apps.", + use = false +) { + compatibleWith("com.amazon.avod.thirdpartyclient") + + val permissionNames = setOf( + "com.amazon.identity.permission.CAN_CALL_MAP_INFORMATION_PROVIDER", + "com.amazon.identity.auth.device.perm.AUTH_SDK", + "com.amazon.dcp.sso.permission.account.changed", + "com.amazon.dcp.sso.permission.AmazonAccountPropertyService.property.changed", + "com.amazon.identity.permission.CALL_AMAZON_DEVICE_INFORMATION_PROVIDER", + "com.amazon.appmanager.preload.permission.READ_PRELOAD_DEVICE_INFO_PROVIDER" + ) + + execute { + document("AndroidManifest.xml").use { document -> + val manifest = document.getNode("manifest") as Element + + val permissions = manifest + .getElementsByTagName("permission") + .asSequence() + .map { Pair(it as Element, it.getAttribute("android:name")) } + .filter { (_, name) -> name in permissionNames } + + if (permissions.none()) throw PatchException("Could not find any permissions to rename") + + permissions.forEach { (element, name) -> + element.setAttribute("android:name", "revanced.$name") + } + } + } +} From 0b9001613ddee4072b49ad22217ce42e1b68276c Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 28 May 2025 20:41:45 +0000 Subject: [PATCH 43/46] chore: Release v5.25.0-dev.13 [skip ci] # [5.25.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.12...v5.25.0-dev.13) (2025-05-28) ### Features * **Prime Video:** Add `Rename shared permissions` patch ([#5049](https://github.com/ReVanced/revanced-patches/issues/5049)) ([80f1fc6](https://github.com/ReVanced/revanced-patches/commit/80f1fc629e30e391bd5877f07dbdf4b6613bd1cf)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c40adf52d..a0caca8ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [5.25.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.12...v5.25.0-dev.13) (2025-05-28) + + +### Features + +* **Prime Video:** Add `Rename shared permissions` patch ([#5049](https://github.com/ReVanced/revanced-patches/issues/5049)) ([80f1fc6](https://github.com/ReVanced/revanced-patches/commit/80f1fc629e30e391bd5877f07dbdf4b6613bd1cf)) + # [5.25.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.11...v5.25.0-dev.12) (2025-05-28) diff --git a/gradle.properties b/gradle.properties index cc06df32b..990bc0903 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.25.0-dev.12 +version = 5.25.0-dev.13 From 3c4cecb966c2f99bfde99552686dda19ade5f67e Mon Sep 17 00:00:00 2001 From: scruz Date: Thu, 29 May 2025 12:44:24 +0530 Subject: [PATCH 44/46] feat(Threads): Hide Ads (#5064) --- patches/api/patches.api | 4 +++ .../patches/instagram/ads/HideAdsPatch.kt | 20 +++----------- .../{instagram => meta}/ads/Fingerprints.kt | 26 +++++++++---------- .../revanced/patches/meta/ads/HideAdsPatch.kt | 21 +++++++++++++++ 4 files changed, 41 insertions(+), 30 deletions(-) rename patches/src/main/kotlin/app/revanced/patches/{instagram => meta}/ads/Fingerprints.kt (85%) create mode 100644 patches/src/main/kotlin/app/revanced/patches/meta/ads/HideAdsPatch.kt diff --git a/patches/api/patches.api b/patches/api/patches.api index cb6d96555..668e1072e 100644 --- a/patches/api/patches.api +++ b/patches/api/patches.api @@ -296,6 +296,10 @@ public final class app/revanced/patches/messenger/navbar/RemoveMetaAITabPatchKt public static final fun getRemoveMetaAITabPatch ()Lapp/revanced/patcher/patch/BytecodePatch; } +public final class app/revanced/patches/meta/ads/HideAdsPatchKt { + public static final fun getHideAdsPatch ()Lapp/revanced/patcher/patch/BytecodePatch; +} + public final class app/revanced/patches/mifitness/misc/locale/ForceEnglishLocalePatchKt { public static final fun getForceEnglishLocalePatch ()Lapp/revanced/patcher/patch/BytecodePatch; } diff --git a/patches/src/main/kotlin/app/revanced/patches/instagram/ads/HideAdsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/instagram/ads/HideAdsPatch.kt index 29aeccc1b..9e80fe416 100644 --- a/patches/src/main/kotlin/app/revanced/patches/instagram/ads/HideAdsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/instagram/ads/HideAdsPatch.kt @@ -1,23 +1,9 @@ package app.revanced.patches.instagram.ads -import app.revanced.patcher.extensions.InstructionExtensions.addInstructions import app.revanced.patcher.patch.bytecodePatch +@Deprecated("Patch was moved to different package: app.revanced.patches.meta.ads.hideAdsPatch") @Suppress("unused") -val hideAdsPatch = bytecodePatch( - name = "Hide ads", - description = "Hides ads in stories, discover, profile, etc. " + - "An ad can still appear once when refreshing the home feed.", -) { - compatibleWith("com.instagram.android") - - execute { - adInjectorFingerprint.method.addInstructions( - 0, - """ - const/4 v0, 0x0 - return v0 - """, - ) - } +val hideAdsPatch = bytecodePatch { + dependsOn(app.revanced.patches.meta.ads.hideAdsPatch) } diff --git a/patches/src/main/kotlin/app/revanced/patches/instagram/ads/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/meta/ads/Fingerprints.kt similarity index 85% rename from patches/src/main/kotlin/app/revanced/patches/instagram/ads/Fingerprints.kt rename to patches/src/main/kotlin/app/revanced/patches/meta/ads/Fingerprints.kt index 1e5eb6d04..d9e1d9e0b 100644 --- a/patches/src/main/kotlin/app/revanced/patches/instagram/ads/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/meta/ads/Fingerprints.kt @@ -1,13 +1,13 @@ -package app.revanced.patches.instagram.ads - -import app.revanced.patcher.fingerprint -import com.android.tools.smali.dexlib2.AccessFlags - -internal val adInjectorFingerprint = fingerprint { - accessFlags(AccessFlags.PRIVATE) - returns("Z") - parameters("L", "L") - strings( - "SponsoredContentController.insertItem", - ) -} +package app.revanced.patches.meta.ads + +import app.revanced.patcher.fingerprint +import com.android.tools.smali.dexlib2.AccessFlags + +internal val adInjectorFingerprint = fingerprint { + accessFlags(AccessFlags.PRIVATE) + returns("Z") + parameters("L", "L") + strings( + "SponsoredContentController.insertItem", + ) +} diff --git a/patches/src/main/kotlin/app/revanced/patches/meta/ads/HideAdsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/meta/ads/HideAdsPatch.kt new file mode 100644 index 000000000..f1fb3d791 --- /dev/null +++ b/patches/src/main/kotlin/app/revanced/patches/meta/ads/HideAdsPatch.kt @@ -0,0 +1,21 @@ +package app.revanced.patches.meta.ads + +import app.revanced.patcher.patch.bytecodePatch +import app.revanced.util.returnEarly + +@Suppress("unused") +val hideAdsPatch = bytecodePatch( + name = "Hide ads", +) { + /** + * Patch is identical for both Instagram and Threads app. + */ + compatibleWith( + "com.instagram.android", + "com.instagram.barcelona", + ) + + execute { + adInjectorFingerprint.method.returnEarly(false) + } +} From d79407e9374cf53907b8225f93ac14a4df1bf60d Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 29 May 2025 07:17:42 +0000 Subject: [PATCH 45/46] chore: Release v5.25.0-dev.14 [skip ci] # [5.25.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.13...v5.25.0-dev.14) (2025-05-29) ### Features * **Threads:** Hide Ads ([#5064](https://github.com/ReVanced/revanced-patches/issues/5064)) ([3c4cecb](https://github.com/ReVanced/revanced-patches/commit/3c4cecb966c2f99bfde99552686dda19ade5f67e)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a0caca8ae..708ddf7b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [5.25.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.13...v5.25.0-dev.14) (2025-05-29) + + +### Features + +* **Threads:** Hide Ads ([#5064](https://github.com/ReVanced/revanced-patches/issues/5064)) ([3c4cecb](https://github.com/ReVanced/revanced-patches/commit/3c4cecb966c2f99bfde99552686dda19ade5f67e)) + # [5.25.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v5.25.0-dev.12...v5.25.0-dev.13) (2025-05-28) diff --git a/gradle.properties b/gradle.properties index 990bc0903..f723ae539 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.25.0-dev.13 +version = 5.25.0-dev.14 From 6ea38f76640bd9053def112f88e2fd5caf41b563 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 29 May 2025 09:20:59 +0200 Subject: [PATCH 46/46] chore: Sync translations (#5066) --- .../addresources/values-ja-rJP/strings.xml | 48 +++++++++---------- .../addresources/values-ko-rKR/strings.xml | 6 +-- 2 files changed, 27 insertions(+), 27 deletions(-) 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 cb1336622..ef7d250c8 100644 --- a/patches/src/main/resources/addresources/values-ja-rJP/strings.xml +++ b/patches/src/main/resources/addresources/values-ja-rJP/strings.xml @@ -118,11 +118,11 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ protocol buffer を記録する デバッグ ログに protocol buffer が含まれます デバッグ ログに protocol buffer は含まれません - "この設定を有効にすると、一部のUIコンポーネントの画面上のテキストなど、追加のレイアウトデータが記録されます。 + "この設定を有効にすると、一部の UI コンポーネントの画面上のテキストなど、追加のレイアウト データがデバッグログに記録されます。 -これにより、カスタムフィルターを作成するときにコンポーネントを特定できます。 +この追加されたデータは、カスタム フィルタを作成する際にコンポーネントを特定するのに役立つ可能性があります。 -ただし、これを有効にすると、IPアドレスなどの一部のユーザーデータも記録されます。" +ただし、IP アドレスなどの一部のユーザーデータもデバッグログに記録されるようになることに注意が必要です。" stack trace を記録する デバッグ ログにstack trace が含まれます デバッグ ログにstack trace は含まれません @@ -133,14 +133,14 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ あらゆる予期せぬイベントが通知されなくなります。" デバッグログをエクスポート - ReVancedデバッグログをクリップボードにコピーします + ReVanced のデバッグログをクリップボードにコピーします デバッグログは無効です ログが見つかりませんでした - ログがコピーされました - ログのエクスポートに失敗しました:$s - デバッグログをクリア - 保存されているすべてのReVancedデバッグログをクリアします - ログがクリアされました + ログをコピーしました + ログのエクスポートに失敗: $s + デバッグログを消去する + 保存されている ReVanced のデバッグログをすべて消去します + ログが消去されました アルバム情報を非表示 @@ -456,9 +456,9 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ %s はインストールされていません。インストールしてください。 - シーク ジェスチャーを無効にする - シークバーを上へスワイプしても、何も起こりません - シークバーを上へスワイプすると、再生位置を細かく調整できます + 精密シークモードを無効にする + シークバーを上へスワイプしても、精密シークモードになりません + シークバーを上へスワイプすると、精密シークモードになります タップによるシークを有効にする @@ -494,10 +494,10 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ オーバーレイの背景の透明度 透明度の範囲は 0-100 で、0 が透明です スワイプ: 透明度の範囲は 0-100 です - スワイプ オーバーレイの明るさの色 - 明るさ調節の進行状況バーの色 - スワイプ オーバーレイの音量 - 音量調節の進行状況バーの色 + 明るさグラフの色 + スワイプ中の明るさの現在値を視覚的に表示するグラフの色 + 音量グラフの色 + スワイプ中の音量の現在値を視覚的に表示するグラフの色 オーバーレイのテキストサイズ スワイプ オーバーレイのテキストサイズ (1-30) テキストサイズの範囲は 1-30 です @@ -717,17 +717,17 @@ MicroG GmsCore に対する電池の最適化を無効にしても、バッテ ショート動画プレーヤー ショート動画プレーヤーの設定 - ホームフィードのショート動画を非表示 + ホームフィードでショート動画を非表示 ショート動画はホームフィードや関連動画に表示されません ショート動画はホームフィードや関連動画に表示されます - 登録チャンネル フィードのショート動画を非表示 + 登録チャンネル フィードでショート動画を非表示 ショート動画は登録チャンネル フィードに表示されません ショート動画は登録チャンネル フィードに表示されます - 検索結果のショート動画を非表示 + 検索結果でショート動画を非表示 ショート動画は検索結果に表示されません ショート動画は検索結果に表示されます - 再生履歴のショート動画を非表示 + 再生履歴でショート動画を非表示 ショート動画は再生履歴に表示されません ショート動画は再生履歴に表示されます @@ -1338,13 +1338,13 @@ Automotive レイアウト 触覚フィードバック - 触覚フィードバックを変更 + 触覚フィードバックの設定 チャプターの触覚フィードバックを無効にする チャプターの触覚フィードバックは無効です チャプターの触覚フィードバックは有効です - 正確なシークの触覚フィードバックを無効にする - 正確なシークの触覚フィードバックは無効になっています - 正確なシークの触覚フィードバックは有効です + 精密シークモードの触覚フィードバックを無効にする + 精密シークモードの触覚フィードバックは無効です + 精密シークモードの触覚フィードバックは有効です シーク取り消しの触覚フィードバックを無効にする シーク取り消しの触覚フィードバックは無効です シーク取り消しの触覚フィードバックは有効です 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 6052fa49a..f7eed3776 100644 --- a/patches/src/main/resources/addresources/values-ko-rKR/strings.xml +++ b/patches/src/main/resources/addresources/values-ko-rKR/strings.xml @@ -896,10 +896,10 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배 네트워크 호출한 적이 없습니다 %d 건의 네트워크 호출이 이루어졌습니다 API 투표 가져오기, 시간 초과 횟수 - 네트워크 호출 시간 초과한 적이 없습니다 + 네트워크 호출이 시간 초과한 적이 없습니다 %d 건의 네트워크 호출이 시간 초과하였습니다 API 클라이언트 비율 제한 - 클라이언트 비율 제한한 적이 없습니다 + 클라이언트 비율을 제한한 적이 없습니다 %d 건의 클라이언트 비율 제한이 발생하였습니다 %d 밀리초 @@ -1409,7 +1409,7 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요" 사용자 정의 동영상 재생 속도를 활성화합니다 사용자 정의 동영상 재생 속도를 비활성화합니다 사용자 정의 동영상 재생 속도 편집하기 - 사용하고 싶은 동영상 재생 속도 값을 추가 또는 변경할 수 있습니다 + 사용자 정의 동영상 재생 속도 값을 추가 또는 변경할 수 있습니다 재생 속도 값은 %s배속보다 작아야 합니다 잘못된 사용자 정의 재생 속도 값입니다 자동