mirror of
https://github.com/ReVanced/revanced-patches.git
synced 2026-01-15 15:33:13 +00:00
Compare commits
10 Commits
v5.15.0-de
...
v5.16.0-de
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d9ccd73b5f | ||
|
|
5c5a1e4b8b | ||
|
|
66a2ee2416 | ||
|
|
d8c276cf96 | ||
|
|
d5845abd08 | ||
|
|
54eef22ce7 | ||
|
|
e287bdc59d | ||
|
|
20a82ef956 | ||
|
|
1e29da9e06 | ||
|
|
56e6a90a90 |
34
CHANGELOG.md
34
CHANGELOG.md
@@ -1,3 +1,37 @@
|
||||
# [5.16.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.16.0-dev.1...v5.16.0-dev.2) (2025-03-26)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **Spotify:** Add `Unlock premium` patch ([#4644](https://github.com/ReVanced/revanced-patches/issues/4644)) ([f048c50](https://github.com/ReVanced/revanced-patches/commit/f048c50e56fc1f5a5c607860be4206ef83b528fe))
|
||||
|
||||
# [5.16.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.15.0...v5.16.0-dev.1) (2025-03-24)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Settings:** System navigation bar is located above the settings ui on Android 15+ ([f7497be](https://github.com/ReVanced/revanced-patches/commit/f7497be2c5e4abcde6eb55b84955124a28f55cae))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - Comments:** Add `Hide AI Comments summary` ([#4634](https://github.com/ReVanced/revanced-patches/issues/4634)) ([e9b7f26](https://github.com/ReVanced/revanced-patches/commit/e9b7f263f739bd130f6ea79913851a52355977c5))
|
||||
* **YouTube - Video description:** Add `Hide AI-generated video summary` ([#4636](https://github.com/ReVanced/revanced-patches/issues/4636)) ([521fd48](https://github.com/ReVanced/revanced-patches/commit/521fd48602432ab436d8711c19d7130b2b05af12))
|
||||
|
||||
# [5.15.0](https://github.com/ReVanced/revanced-patches/compare/v5.14.0...v5.15.0) (2025-03-21)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **YouTube - Spoof app version:** Change oldest spoof target to 19.01.34 ([5012439](https://github.com/ReVanced/revanced-patches/commit/5012439a8e53b2a4ab5e85c47976e1ab28a51208))
|
||||
* **YouTube - Spoof app version:** Remove broken spoof targets that YouTube no longer supports ([#4610](https://github.com/ReVanced/revanced-patches/issues/4610)) ([883fbe7](https://github.com/ReVanced/revanced-patches/commit/883fbe71233c57cb1241e57c122b43f40722acc7))
|
||||
* **YouTube:** Do not show restart prompt more than once if setting change is canceled ([49797fe](https://github.com/ReVanced/revanced-patches/commit/49797fe8d0c4a0981ef621a31356c4315ae3777b))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **YouTube - SponsorBlock:** Add opacity setting to category segment colors ([#4582](https://github.com/ReVanced/revanced-patches/issues/4582)) ([6e8ffba](https://github.com/ReVanced/revanced-patches/commit/6e8ffbade9e03658f725622631e44dabf2995861))
|
||||
|
||||
# [5.15.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.15.0-dev.3...v5.15.0-dev.4) (2025-03-21)
|
||||
|
||||
|
||||
|
||||
3
extensions/spotify/build.gradle.kts
Normal file
3
extensions/spotify/build.gradle.kts
Normal file
@@ -0,0 +1,3 @@
|
||||
dependencies {
|
||||
compileOnly(project(":extensions:spotify:stub"))
|
||||
}
|
||||
1
extensions/spotify/src/main/AndroidManifest.xml
Normal file
1
extensions/spotify/src/main/AndroidManifest.xml
Normal file
@@ -0,0 +1 @@
|
||||
<manifest/>
|
||||
17
extensions/spotify/stub/build.gradle.kts
Normal file
17
extensions/spotify/stub/build.gradle.kts
Normal file
@@ -0,0 +1,17 @@
|
||||
plugins {
|
||||
id(libs.plugins.android.library.get().pluginId)
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "app.revanced.extension"
|
||||
compileSdk = 34
|
||||
|
||||
defaultConfig {
|
||||
minSdk = 26
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_17
|
||||
targetCompatibility = JavaVersion.VERSION_17
|
||||
}
|
||||
}
|
||||
1
extensions/spotify/stub/src/main/AndroidManifest.xml
Normal file
1
extensions/spotify/stub/src/main/AndroidManifest.xml
Normal file
@@ -0,0 +1 @@
|
||||
<manifest/>
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.spotify.remoteconfig.internal;
|
||||
|
||||
public final class AccountAttribute {
|
||||
public Object value_;
|
||||
}
|
||||
@@ -12,10 +12,12 @@ final class CommentsFilter extends Filter {
|
||||
|
||||
private final StringFilterGroup commentComposer;
|
||||
private final ByteArrayFilterGroup emojiPickerBufferGroup;
|
||||
private final StringFilterGroup filterChipBar;
|
||||
private final ByteArrayFilterGroup aiCommentsSummary;
|
||||
|
||||
public CommentsFilter() {
|
||||
var chatSummary = new StringFilterGroup(
|
||||
Settings.HIDE_COMMENTS_CHAT_SUMMARY,
|
||||
Settings.HIDE_COMMENTS_AI_CHAT_SUMMARY,
|
||||
"live_chat_summary_banner.eml"
|
||||
);
|
||||
|
||||
@@ -58,6 +60,16 @@ final class CommentsFilter extends Filter {
|
||||
"id.comment.quick_emoji.button"
|
||||
);
|
||||
|
||||
filterChipBar = new StringFilterGroup(
|
||||
Settings.HIDE_COMMENTS_AI_SUMMARY,
|
||||
"filter_chip_bar.eml"
|
||||
);
|
||||
|
||||
aiCommentsSummary = new ByteArrayFilterGroup(
|
||||
null,
|
||||
"yt_fill_spark_"
|
||||
);
|
||||
|
||||
addPathCallbacks(
|
||||
chatSummary,
|
||||
commentsByMembers,
|
||||
@@ -65,7 +77,8 @@ final class CommentsFilter extends Filter {
|
||||
createAShort,
|
||||
previewComment,
|
||||
thanksButton,
|
||||
commentComposer
|
||||
commentComposer,
|
||||
filterChipBar
|
||||
);
|
||||
}
|
||||
|
||||
@@ -84,6 +97,13 @@ final class CommentsFilter extends Filter {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (matchedGroup == filterChipBar) {
|
||||
if (aiCommentsSummary.check(protobufBufferArray).isFiltered()) {
|
||||
return super.isFiltered(identifier, path, protobufBufferArray, matchedGroup, contentType, contentIndex);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
return super.isFiltered(identifier, path, protobufBufferArray, matchedGroup, contentType, contentIndex);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,11 @@ final class DescriptionComponentsFilter extends Filter {
|
||||
"metadata"
|
||||
);
|
||||
|
||||
final StringFilterGroup aiGeneratedVideoSummarySection = new StringFilterGroup(
|
||||
Settings.HIDE_AI_GENERATED_VIDEO_SUMMARY_SECTION,
|
||||
"cell_expandable_metadata.eml"
|
||||
);
|
||||
|
||||
final StringFilterGroup attributesSection = new StringFilterGroup(
|
||||
Settings.HIDE_ATTRIBUTES_SECTION,
|
||||
"gaming_section",
|
||||
@@ -67,6 +72,7 @@ final class DescriptionComponentsFilter extends Filter {
|
||||
);
|
||||
|
||||
addPathCallbacks(
|
||||
aiGeneratedVideoSummarySection,
|
||||
attributesSection,
|
||||
infoCardsSection,
|
||||
howThisWasMadeSection,
|
||||
|
||||
@@ -168,7 +168,8 @@ public class Settings extends BaseSettings {
|
||||
public static final StringSetting EXTERNAL_DOWNLOADER_PACKAGE_NAME = new StringSetting("revanced_external_downloader_name",
|
||||
"org.schabi.newpipe" /* NewPipe */, parentsAny(EXTERNAL_DOWNLOADER, EXTERNAL_DOWNLOADER_ACTION_BUTTON));
|
||||
// Comments
|
||||
public static final BooleanSetting HIDE_COMMENTS_CHAT_SUMMARY = new BooleanSetting("revanced_hide_comments_chat_summary", FALSE);
|
||||
public static final BooleanSetting HIDE_COMMENTS_AI_CHAT_SUMMARY = new BooleanSetting("revanced_hide_comments_ai_chat_summary", FALSE);
|
||||
public static final BooleanSetting HIDE_COMMENTS_AI_SUMMARY = new BooleanSetting("revanced_hide_comments_ai_summary", FALSE);
|
||||
public static final BooleanSetting HIDE_COMMENTS_BY_MEMBERS_HEADER = new BooleanSetting("revanced_hide_comments_by_members_header", FALSE);
|
||||
public static final BooleanSetting HIDE_COMMENTS_CREATE_A_SHORT_BUTTON = new BooleanSetting("revanced_hide_comments_create_a_short_button", TRUE);
|
||||
public static final BooleanSetting HIDE_COMMENTS_TIMESTAMP_AND_EMOJI_BUTTONS = new BooleanSetting("revanced_hide_comments_timestamp_and_emoji_buttons", TRUE);
|
||||
@@ -176,6 +177,7 @@ public class Settings extends BaseSettings {
|
||||
public static final BooleanSetting HIDE_COMMENTS_SECTION = new BooleanSetting("revanced_hide_comments_section", FALSE);
|
||||
public static final BooleanSetting HIDE_COMMENTS_THANKS_BUTTON = new BooleanSetting("revanced_hide_comments_thanks_button", TRUE);
|
||||
// Description
|
||||
public static final BooleanSetting HIDE_AI_GENERATED_VIDEO_SUMMARY_SECTION = new BooleanSetting("revanced_hide_ai_generated_video_summary_section", FALSE);
|
||||
public static final BooleanSetting HIDE_ATTRIBUTES_SECTION = new BooleanSetting("revanced_hide_attributes_section", FALSE);
|
||||
public static final BooleanSetting HIDE_CHAPTERS_SECTION = new BooleanSetting("revanced_hide_chapters_section", TRUE);
|
||||
public static final BooleanSetting HIDE_HOW_THIS_WAS_MADE_SECTION = new BooleanSetting("revanced_hide_how_this_was_made_section", FALSE);
|
||||
|
||||
@@ -19,7 +19,6 @@ import android.widget.Toolbar;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.Utils;
|
||||
@@ -139,11 +138,13 @@ public class ReVancedPreferenceFragment extends AbstractPreferenceFragment {
|
||||
.findViewById(android.R.id.content)
|
||||
.getParent();
|
||||
|
||||
// Fix required for Android 15 and YT 19.45+
|
||||
// Fix edge-to-edge screen with Android 15 and YT 19.45+
|
||||
// https://developer.android.com/develop/ui/views/layout/edge-to-edge#system-bars-insets
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||
rootView.setOnApplyWindowInsetsListener((v, insets) -> {
|
||||
Insets statusInsets = insets.getInsets(WindowInsets.Type.statusBars());
|
||||
v.setPadding(0, statusInsets.top, 0, 0);
|
||||
Insets navInsets = insets.getInsets(WindowInsets.Type.navigationBars());
|
||||
v.setPadding(0, statusInsets.top, 0, navInsets.bottom);
|
||||
return insets;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M
|
||||
org.gradle.parallel = true
|
||||
android.useAndroidX = true
|
||||
kotlin.code.style = official
|
||||
version = 5.15.0-dev.4
|
||||
version = 5.16.0-dev.2
|
||||
|
||||
@@ -816,6 +816,10 @@ public final class app/revanced/patches/spotify/lite/ondemand/OnDemandPatchKt {
|
||||
public static final fun getOnDemandPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/spotify/misc/UnlockPremiumPatchKt {
|
||||
public static final fun getUnlockPremiumPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
public final class app/revanced/patches/spotify/misc/fix/SpoofSignaturePatchKt {
|
||||
public static final fun getSpoofSignaturePatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package app.revanced.patches.spotify.misc
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
|
||||
internal val accountAttributeFingerprint = fingerprint {
|
||||
custom { _, c -> c.endsWith("internal/AccountAttribute;") }
|
||||
}
|
||||
|
||||
internal val productStateProtoFingerprint = fingerprint {
|
||||
returns("Ljava/util/Map;")
|
||||
custom { _, classDef ->
|
||||
classDef.endsWith("ProductStateProto;")
|
||||
}
|
||||
}
|
||||
|
||||
internal val buildQueryParametersFingerprint = fingerprint {
|
||||
strings("trackRows", "device_type:tablet")
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
package app.revanced.patches.spotify.navbar
|
||||
|
||||
import app.revanced.patcher.fingerprint
|
||||
import app.revanced.util.literal
|
||||
import com.android.tools.smali.dexlib2.AccessFlags
|
||||
|
||||
internal val addNavBarItemFingerprint = fingerprint {
|
||||
accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL)
|
||||
returns("V")
|
||||
literal { showBottomNavigationItemsTextId }
|
||||
}
|
||||
@@ -1,50 +1,12 @@
|
||||
package app.revanced.patches.spotify.navbar
|
||||
|
||||
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
|
||||
import app.revanced.patcher.patch.bytecodePatch
|
||||
import app.revanced.patcher.patch.resourcePatch
|
||||
import app.revanced.patches.shared.misc.mapping.get
|
||||
import app.revanced.patches.shared.misc.mapping.resourceMappingPatch
|
||||
import app.revanced.patches.shared.misc.mapping.resourceMappings
|
||||
|
||||
internal var showBottomNavigationItemsTextId = -1L
|
||||
private set
|
||||
internal var premiumTabId = -1L
|
||||
private set
|
||||
|
||||
private val premiumNavbarTabResourcePatch = resourcePatch {
|
||||
dependsOn(resourceMappingPatch)
|
||||
|
||||
execute {
|
||||
premiumTabId = resourceMappings["id", "premium_tab"]
|
||||
|
||||
showBottomNavigationItemsTextId = resourceMappings[
|
||||
"bool",
|
||||
"show_bottom_navigation_items_text",
|
||||
]
|
||||
}
|
||||
}
|
||||
import app.revanced.patches.spotify.misc.unlockPremiumPatch
|
||||
|
||||
@Deprecated("Superseded by unlockPremiumPatch", ReplaceWith("unlockPremiumPatch"))
|
||||
@Suppress("unused")
|
||||
val premiumNavbarTabPatch = bytecodePatch(
|
||||
name = "Premium navbar tab",
|
||||
description = "Hides the premium tab from the navigation bar.",
|
||||
) {
|
||||
dependsOn(premiumNavbarTabResourcePatch)
|
||||
|
||||
compatibleWith("com.spotify.music")
|
||||
|
||||
// If the navigation bar item is the premium tab, do not add it.
|
||||
execute {
|
||||
addNavBarItemFingerprint.method.addInstructions(
|
||||
0,
|
||||
"""
|
||||
const v1, $premiumTabId
|
||||
if-ne p5, v1, :continue
|
||||
return-void
|
||||
:continue
|
||||
nop
|
||||
""",
|
||||
)
|
||||
}
|
||||
dependsOn(unlockPremiumPatch)
|
||||
}
|
||||
|
||||
@@ -142,6 +142,7 @@ val hideLayoutComponentsPatch = bytecodePatch(
|
||||
PreferenceScreenPreference(
|
||||
key = "revanced_hide_description_components_screen",
|
||||
preferences = setOf(
|
||||
SwitchPreference("revanced_hide_ai_generated_video_summary_section"),
|
||||
SwitchPreference("revanced_hide_attributes_section"),
|
||||
SwitchPreference("revanced_hide_chapters_section"),
|
||||
SwitchPreference("revanced_hide_info_cards_section"),
|
||||
@@ -154,7 +155,8 @@ val hideLayoutComponentsPatch = bytecodePatch(
|
||||
PreferenceScreenPreference(
|
||||
"revanced_comments_screen",
|
||||
preferences = setOf(
|
||||
SwitchPreference("revanced_hide_comments_chat_summary"),
|
||||
SwitchPreference("revanced_hide_comments_ai_chat_summary"),
|
||||
SwitchPreference("revanced_hide_comments_ai_summary"),
|
||||
SwitchPreference("revanced_hide_comments_by_members_header"),
|
||||
SwitchPreference("revanced_hide_comments_section"),
|
||||
SwitchPreference("revanced_hide_comments_create_a_short_button"),
|
||||
|
||||
@@ -18,7 +18,7 @@ private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||
"Lapp/revanced/extension/youtube/patches/WideSearchbarPatch;"
|
||||
|
||||
val wideSearchbarPatch = bytecodePatch(
|
||||
name = "Wide searchbar",
|
||||
name = "Wide search bar",
|
||||
description = "Adds an option to replace the search icon with a wide search bar. This will hide the YouTube logo when active.",
|
||||
) {
|
||||
dependsOn(
|
||||
|
||||
@@ -41,7 +41,6 @@
|
||||
<item>@string/revanced_language_NL</item>
|
||||
<item>@string/revanced_language_OR</item>
|
||||
<item>@string/revanced_language_PA</item>
|
||||
<item>@string/revanced_language_PA</item>
|
||||
<item>@string/revanced_language_PL</item>
|
||||
<item>@string/revanced_language_PT</item>
|
||||
<item>@string/revanced_language_RO</item>
|
||||
@@ -101,7 +100,6 @@
|
||||
<item>NL</item>
|
||||
<item>OR</item>
|
||||
<item>PA</item>
|
||||
<item>PA</item>
|
||||
<item>PL</item>
|
||||
<item>PT</item>
|
||||
<item>RO</item>
|
||||
|
||||
@@ -283,6 +283,9 @@ You will not be notified of any unexpected events."</string>
|
||||
<string name="revanced_hide_artist_cards_title">Hide artist cards</string>
|
||||
<string name="revanced_hide_artist_cards_summary_on">Artist cards are hidden</string>
|
||||
<string name="revanced_hide_artist_cards_summary_off">Artist cards are shown</string>
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_title">Hide \'AI-generated video summary\'</string>
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_summary_on">Video summary section is hidden</string>
|
||||
<string name="revanced_hide_ai_generated_video_summary_section_summary_off">Video summary section is shown</string>
|
||||
<string name="revanced_hide_attributes_section_title">Hide Attributes</string>
|
||||
<string name="revanced_hide_attributes_section_summary_on">Featured places, Games, Music, and People mentioned sections are hidden</string>
|
||||
<string name="revanced_hide_attributes_section_summary_off">Featured places, Games, Music, and People mentioned sections are shown</string>
|
||||
@@ -321,9 +324,12 @@ You will not be notified of any unexpected events."</string>
|
||||
|
||||
<string name="revanced_comments_screen_title">Comments</string>
|
||||
<string name="revanced_comments_screen_summary">Hide or show comments section components</string>
|
||||
<string name="revanced_hide_comments_chat_summary_title">Hide \'Chat summary\'</string>
|
||||
<string name="revanced_hide_comments_chat_summary_summary_on">Chat summary is hidden</string>
|
||||
<string name="revanced_hide_comments_chat_summary_summary_off">Chat summary is shown</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_title">Hide AI Chat summary</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_summary_on">Chat summary is hidden</string>
|
||||
<string name="revanced_hide_comments_ai_chat_summary_summary_off">Chat summary is shown</string>
|
||||
<string name="revanced_hide_comments_ai_summary_title">Hide AI Comments summary</string>
|
||||
<string name="revanced_hide_comments_ai_summary_summary_on">Comments summary is hidden</string>
|
||||
<string name="revanced_hide_comments_ai_summary_summary_off">Comments summary is shown</string>
|
||||
<string name="revanced_hide_comments_by_members_header_title">Hide \'Comments by members\' header</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_on">Comments by members header is hidden</string>
|
||||
<string name="revanced_hide_comments_by_members_header_summary_off">Comments by members header is shown</string>
|
||||
@@ -372,7 +378,7 @@ If a Doodle is currently showing in your region and this hide setting is on, the
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_on">Videos in the subscriptions tab are filtered by keywords</string>
|
||||
<string name="revanced_hide_keyword_content_subscriptions_summary_off">Videos in the subscriptions tab are not filtered by keywords</string>
|
||||
<string name="revanced_hide_keyword_content_phrases_title">Keywords to hide</string>
|
||||
<!-- For localization it is preferred, but not required, if 'LeBlanc' is replaced with a localized name or a familiar word that has upper case letters in the middle of the word.
|
||||
<!-- For localization, it is preferred, but not required, if 'LeBlanc' is replaced with a localized name or a familiar word that has upper case letters in the middle of the word.
|
||||
This is because keywords can be in any language, and showing an example in the localized script helps convey this. -->
|
||||
<string name="revanced_hide_keyword_content_phrases_summary">"Keywords and phrases to hide, separated by new lines
|
||||
|
||||
@@ -387,7 +393,7 @@ Limitations
|
||||
• Some UI components may not be hidden
|
||||
• Searching for a keyword may show no results"</string>
|
||||
<string name="revanced_hide_keyword_content_about_whole_words_title">Match whole words</string>
|
||||
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
|
||||
<!-- Translations _must_ use a localized example. For languages that do not use spaces between words (Chinese, Japanese, etc.) the English AI example should be used since no localized examples exist. Or if using machine translations, or if nobody wants to think of a localized example, then the English 'ai' example should be left as-is. -->
|
||||
<string name="revanced_hide_keyword_content_about_whole_words_summary">Surrounding a keyword/phrase with double-quotes will prevent partial matches of video titles and channel names<br><br>For example,<br><b>\"ai\"</b> will hide the video: <b>How does AI work?</b><br>but will not hide: <b>What does fair use mean?</b></string>
|
||||
<!-- Translations of this should not be longer than the original English text, otherwise the text can be clipped and not entirely shown. -->
|
||||
<string name="revanced_hide_keyword_toast_invalid_common">Cannot use keyword: %s</string>
|
||||
@@ -485,9 +491,9 @@ This feature is only available for older devices"</string>
|
||||
<string name="revanced_disable_precise_seeking_gesture_summary_off">Gesture is enabled</string>
|
||||
</patch>
|
||||
<patch id="interaction.seekbar.enableSeekbarTappingPatch">
|
||||
<string name="revanced_seekbar_tapping_title">Enable seekbar tapping</string>
|
||||
<string name="revanced_seekbar_tapping_summary_on">Seekbar tapping is enabled</string>
|
||||
<string name="revanced_seekbar_tapping_summary_off">Seekbar tapping is disabled</string>
|
||||
<string name="revanced_seekbar_tapping_title">Enable tap to seek</string>
|
||||
<string name="revanced_seekbar_tapping_summary_on">Tap to seek is enabled</string>
|
||||
<string name="revanced_seekbar_tapping_summary_off">Tap to seek is disabled</string>
|
||||
</patch>
|
||||
<patch id="interaction.swipecontrols.swipeControlsResourcePatch">
|
||||
<string name="revanced_swipe_brightness_title">Enable brightness gesture</string>
|
||||
@@ -500,9 +506,9 @@ Adjust brightness by swiping vertically on the left side of the screen"</string>
|
||||
|
||||
Adjust volume by swiping vertically on the right side of the screen"</string>
|
||||
<string name="revanced_swipe_volume_summary_off">Fullscreen volume swipe is disabled</string>
|
||||
<string name="revanced_swipe_press_to_engage_title">Enable press-to-swipe gesture</string>
|
||||
<string name="revanced_swipe_press_to_engage_summary_on">Press-to-swipe is enabled</string>
|
||||
<string name="revanced_swipe_press_to_engage_summary_off">Press-to-swipe is disabled</string>
|
||||
<string name="revanced_swipe_press_to_engage_title">Enable press to swipe gesture</string>
|
||||
<string name="revanced_swipe_press_to_engage_summary_on">Press to swipe is enabled</string>
|
||||
<string name="revanced_swipe_press_to_engage_summary_off">Press to swipe is disabled</string>
|
||||
<string name="revanced_swipe_haptic_feedback_title">Enable haptic feedback</string>
|
||||
<string name="revanced_swipe_haptic_feedback_summary_on">Haptic feedback is enabled</string>
|
||||
<string name="revanced_swipe_haptic_feedback_summary_off">Haptic feedback is disabled</string>
|
||||
@@ -981,10 +987,10 @@ This feature works best with a video quality of 720p or lower and when using a v
|
||||
<string name="revanced_sb_api_url_reset">API URL reset</string>
|
||||
<string name="revanced_sb_api_url_invalid">API URL is invalid</string>
|
||||
<string name="revanced_sb_api_url_changed">API URL changed</string>
|
||||
<string name="revanced_sb_settings_ie">Import/Export settings</string>
|
||||
<string name="revanced_sb_settings_ie">Import / Export settings</string>
|
||||
<string name="revanced_sb_settings_copy">Copy</string>
|
||||
<string name="revanced_sb_settings_ie_sum">Your SponsorBlock JSON configuration that can be imported/exported to ReVanced and other SponsorBlock platforms</string>
|
||||
<string name="revanced_sb_settings_ie_sum_warning">Your SponsorBlock JSON configuration that can be imported/exported to ReVanced and other SponsorBlock platforms. This includes your private user id. Be sure to share this wisely</string>
|
||||
<string name="revanced_sb_settings_ie_sum">Your SponsorBlock JSON configuration that can be imported / exported to ReVanced and other SponsorBlock platforms</string>
|
||||
<string name="revanced_sb_settings_ie_sum_warning">Your SponsorBlock JSON configuration that can be imported / exported to ReVanced and other SponsorBlock platforms. This includes your private user id. Be sure to share this wisely</string>
|
||||
<string name="revanced_sb_settings_import_successful">Settings imported successfully</string>
|
||||
<string name="revanced_sb_settings_import_failed">Failed to import: %s</string>
|
||||
<string name="revanced_sb_settings_export_failed">Failed to export: %s</string>
|
||||
@@ -996,19 +1002,19 @@ Your user id is like a password and it should never be shared.
|
||||
<string name="revanced_sb_diff_segments">Change segment behavior</string>
|
||||
<string name="revanced_sb_segments_sponsor">Sponsor</string>
|
||||
<string name="revanced_sb_segments_sponsor_sum">Paid promotion, paid referrals and direct advertisements. Not for self-promotion or free shout-outs to causes/creators/websites/products they like</string>
|
||||
<string name="revanced_sb_segments_selfpromo">Unpaid/Self Promotion</string>
|
||||
<string name="revanced_sb_segments_selfpromo">Unpaid / Self Promotion</string>
|
||||
<string name="revanced_sb_segments_selfpromo_sum">Similar to Sponsor except for unpaid or self promotion. Includes sections about merchandise, donations, or information about who they collaborated with</string>
|
||||
<string name="revanced_sb_segments_interaction">Interaction Reminder (Subscribe)</string>
|
||||
<string name="revanced_sb_segments_interaction_sum">A short reminder to like, subscribe or follow them in the middle of content. If it is long or about something specific, it should instead be under self promotion</string>
|
||||
<string name="revanced_sb_segments_highlight">Highlight</string>
|
||||
<string name="revanced_sb_segments_highlight_sum">The part of the video that most people are looking for</string>
|
||||
<string name="revanced_sb_segments_intro">Intermission/Intro Animation</string>
|
||||
<string name="revanced_sb_segments_intro">Intermission / Intro Animation</string>
|
||||
<string name="revanced_sb_segments_intro_sum">An interval without actual content. Could be a pause, static frame, or repeating animation. Does not include transitions containing information</string>
|
||||
<string name="revanced_sb_segments_outro">Endcards/Credits</string>
|
||||
<string name="revanced_sb_segments_outro_sum">Credits or when the YouTube endcards appear. Not for conclusions with information</string>
|
||||
<string name="revanced_sb_segments_preview">Preview/Recap/Hook</string>
|
||||
<string name="revanced_sb_segments_preview">Preview / Recap / Hook</string>
|
||||
<string name="revanced_sb_segments_preview_sum">Collection of clips that show what is coming up or what happened in the video or in other videos of a series, where all information is repeated elsewhere</string>
|
||||
<string name="revanced_sb_segments_filler">Filler Tangent/Jokes</string>
|
||||
<string name="revanced_sb_segments_filler">Filler Tangent / Jokes</string>
|
||||
<string name="revanced_sb_segments_filler_sum">Tangential scenes added only for filler or humor that are not required to understand the main content of the video. Does not include segments providing context or background details</string>
|
||||
<string name="revanced_sb_segments_nomusic">Music: Non-Music Section</string>
|
||||
<string name="revanced_sb_segments_nomusic_sum">Only for use in music videos. Sections of music videos without music, that aren\'t already covered by another category</string>
|
||||
@@ -1232,7 +1238,7 @@ Miniplayer can be dragged to any corner of the screen"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_title">Enable horizontal drag gesture</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_on">"Horizontal drag gesture enabled
|
||||
|
||||
Miniplayer can be dragged off screen to the left or right"</string>
|
||||
Miniplayer can be dragged off-screen to the left or right"</string>
|
||||
<string name="revanced_miniplayer_horizontal_drag_summary_off">Horizontal drag gesture disabled</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_title">Hide close button</string>
|
||||
<string name="revanced_miniplayer_hide_expand_close_summary_on">Close button is hidden</string>
|
||||
@@ -1289,7 +1295,7 @@ Enabling this can fix missing images that are blocked in some regions"</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_3">DeArrow & Still captures</string>
|
||||
<string name="revanced_alt_thumbnail_options_entry_4">Still captures</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_title" translatable="false">DeArrow</string>
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">"DeArrow provides crowd-sourced thumbnails for YouTube videos. These thumbnails are often more relevant than those provided by YouTube
|
||||
<string name="revanced_alt_thumbnail_dearrow_about_summary">"DeArrow provides crowdsourced thumbnails for YouTube videos. These thumbnails are often more relevant than those provided by YouTube
|
||||
|
||||
If enabled, video URLs will be sent to the API server and no other data is sent. If a video does not have DeArrow thumbnails, then the original or still captures are shown
|
||||
|
||||
|
||||
Reference in New Issue
Block a user