From 10747f54cf2fe6319a7218f3bc6a4d2ed5d6df6c Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sun, 22 Dec 2024 19:45:55 +0900 Subject: [PATCH] chore(JsonPatchesFileGenerator): Match patch list format with ReVanced API 4 --- patches.json | 907 ++++++++++++++---- .../generator/JsonPatchesFileGenerator.kt | 12 +- 2 files changed, 747 insertions(+), 172 deletions(-) diff --git a/patches.json b/patches.json index bbbd7243b..eac961c94 100644 --- a/patches.json +++ b/patches.json @@ -3,6 +3,12 @@ "name": "Alternative thumbnails", "description": "Adds options to replace video thumbnails using the DeArrow API or image captures from the video.", "use": true, + "dependencies": [ + "BytecodePatch", + "BytecodePatch", + "BytecodePatch", + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -20,6 +26,10 @@ "name": "Ambient mode control", "description": "Adds options to disable Ambient mode and to bypass Ambient mode restrictions.", "use": true, + "dependencies": [ + "Settings for YouTube", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -37,6 +47,10 @@ "name": "Amoled", "description": "Applies a pure black theme to some components.", "use": true, + "dependencies": [ + "BytecodePatch", + "Settings for YouTube Music" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -53,6 +67,9 @@ "name": "Bitrate default value", "description": "Sets the audio quality to \u0027Always High\u0027 when you first install the app.", "use": true, + "dependencies": [ + "Settings for YouTube Music" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -69,6 +86,10 @@ "name": "Bypass image region restrictions", "description": "Adds an option to use a different host for static images, so that images blocked in some countries can be received.", "use": true, + "dependencies": [ + "Settings for YouTube Music", + "BytecodePatch" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -85,6 +106,10 @@ "name": "Bypass image region restrictions", "description": "Adds an option to use a different host for static images, so that images blocked in some countries can be received.", "use": true, + "dependencies": [ + "BytecodePatch", + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -102,6 +127,7 @@ "name": "Certificate spoof", "description": "Enables YouTube Music to work with Android Auto by spoofing the YouTube Music certificate.", "use": true, + "dependencies": [], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -118,21 +144,23 @@ "name": "Change package name", "description": "Changes the package name for Reddit to the name specified in patch options.", "use": false, + "dependencies": [], "compatiblePackages": { "com.reddit.frontpage": null }, "options": [ { "key": "packageNameReddit", + "title": "Package name of Reddit", + "description": "The name of the package to rename the app to.", + "required": true, + "type": "kotlin.String", "default": "com.reddit.frontpage", "values": { "Clone": "com.reddit.frontpage.revanced", "Default": "com.reddit.frontpage.rvx", "Original": "com.reddit.frontpage" - }, - "title": "Package name of Reddit", - "description": "The name of the package to rename the app to.", - "required": true + } } ] }, @@ -140,6 +168,9 @@ "name": "Change player flyout menu toggles", "description": "Adds an option to use text toggles instead of switch toggles within the additional settings menu.", "use": true, + "dependencies": [ + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -157,6 +188,11 @@ "name": "Change share sheet", "description": "Add option to change from in-app share sheet to system share sheet.", "use": true, + "dependencies": [ + "Settings for YouTube Music", + "BytecodePatch", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -173,6 +209,11 @@ "name": "Change share sheet", "description": "Add option to change from in-app share sheet to system share sheet.", "use": true, + "dependencies": [ + "Settings for YouTube", + "BytecodePatch", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -190,6 +231,9 @@ "name": "Change start page", "description": "Adds an option to set which page the app opens in instead of the homepage.", "use": true, + "dependencies": [ + "Settings for YouTube Music" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -206,6 +250,9 @@ "name": "Change start page", "description": "Adds an option to set which page the app opens in instead of the homepage.", "use": true, + "dependencies": [ + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -223,18 +270,20 @@ "name": "Change version code", "description": "Changes the version code of the app to the value specified in patch options. Except when mounting, this can prevent app stores from updating the app and allow the app to be installed over an existing installation that has a higher version code. By default, the highest version code is set.", "use": false, + "dependencies": [], "compatiblePackages": null, "options": [ { "key": "versionCode", + "title": "Version code", + "description": "The version code to use. (1 ~ 2147483647)", + "required": true, + "type": "kotlin.String", "default": "2147483647", "values": { "Lowest": "1", "Highest": "2147483647" - }, - "title": "Version code", - "description": "The version code to use. (1 ~ 2147483647)", - "required": true + } } ] }, @@ -242,6 +291,10 @@ "name": "Custom Shorts action buttons", "description": "Changes, at compile time, the icon of the action buttons of the Shorts player.", "use": true, + "dependencies": [ + "Settings for YouTube", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -256,6 +309,10 @@ "options": [ { "key": "iconType", + "title": "Shorts icon style ", + "description": "The style of the icons for the action buttons in the Shorts player.", + "required": true, + "type": "kotlin.String", "default": "cairo", "values": { "Cairo": "cairo", @@ -264,10 +321,7 @@ "Round": "round", "YoutubeOutline": "youtubeoutline", "YouTube": "youtube" - }, - "title": "Shorts icon style ", - "description": "The style of the icons for the action buttons in the Shorts player.", - "required": true + } } ] }, @@ -275,6 +329,10 @@ "name": "Custom branding icon for YouTube", "description": "Changes the YouTube app icon to the icon specified in patch options.", "use": true, + "dependencies": [ + "Settings for YouTube", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -289,6 +347,10 @@ "options": [ { "key": "appIcon", + "title": "App icon", + "description": "The icon to apply to the app.\n\nIf a path to a folder is provided, the folder must contain the following folders:\n\n- mipmap-xxxhdpi\n- mipmap-xxhdpi\n- mipmap-xhdpi\n- mipmap-hdpi\n- mipmap-mdpi\n\nEach of these folders must contain the following files:\n\n- adaptiveproduct_youtube_background_color_108.png\n- adaptiveproduct_youtube_foreground_color_108.png\n- ic_launcher.png\n- ic_launcher_round.png", + "required": true, + "type": "kotlin.String", "default": "revancify_blue", "values": { "AFN Blue": "afn_blue", @@ -297,26 +359,25 @@ "Revancify Blue": "revancify_blue", "Revancify Red": "revancify_red", "YouTube": "youtube" - }, - "title": "App icon", - "description": "The icon to apply to the app.\n\nIf a path to a folder is provided, the folder must contain the following folders:\n\n- mipmap-xxxhdpi\n- mipmap-xxhdpi\n- mipmap-xhdpi\n- mipmap-hdpi\n- mipmap-mdpi\n\nEach of these folders must contain the following files:\n\n- adaptiveproduct_youtube_background_color_108.png\n- adaptiveproduct_youtube_foreground_color_108.png\n- ic_launcher.png\n- ic_launcher_round.png", - "required": true + } }, { "key": "changeSplashIcon", - "default": true, - "values": null, "title": "Change splash icons", "description": "Apply the custom branding icon to the splash screen.", - "required": true + "required": true, + "type": "kotlin.Boolean", + "default": true, + "values": null }, { "key": "restoreOldSplashAnimation", - "default": true, - "values": null, "title": "Restore old splash animation", "description": "Restore the old style splash animation.", - "required": true + "required": true, + "type": "kotlin.Boolean", + "default": true, + "values": null } ] }, @@ -324,6 +385,10 @@ "name": "Custom branding icon for YouTube Music", "description": "Changes the YouTube Music app icon to the icon specified in patch options.", "use": true, + "dependencies": [ + "Settings for YouTube Music", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -337,6 +402,10 @@ "options": [ { "key": "appIcon", + "title": "App icon", + "description": "The icon to apply to the app.\n\nIf a path to a folder is provided, the folder must contain the following folders:\n\n- mipmap-xxxhdpi\n- mipmap-xxhdpi\n- mipmap-xhdpi\n- mipmap-hdpi\n- mipmap-mdpi\n\nEach of these folders must contain the following files:\n\n- adaptiveproduct_youtube_music_background_color_108.png\n- adaptiveproduct_youtube_music_foreground_color_108.png\n- ic_launcher_release.png", + "required": true, + "type": "kotlin.String", "default": "revancify_blue", "values": { "AFN Blue": "afn_blue", @@ -345,26 +414,25 @@ "Revancify Blue": "revancify_blue", "Revancify Red": "revancify_red", "YouTube Music": "youtube_music" - }, - "title": "App icon", - "description": "The icon to apply to the app.\n\nIf a path to a folder is provided, the folder must contain the following folders:\n\n- mipmap-xxxhdpi\n- mipmap-xxhdpi\n- mipmap-xhdpi\n- mipmap-hdpi\n- mipmap-mdpi\n\nEach of these folders must contain the following files:\n\n- adaptiveproduct_youtube_music_background_color_108.png\n- adaptiveproduct_youtube_music_foreground_color_108.png\n- ic_launcher_release.png", - "required": true + } }, { "key": "changeSplashIcon", - "default": true, - "values": null, "title": "Change splash icons", "description": "Apply the custom branding icon to the splash screen.", - "required": true + "required": true, + "type": "kotlin.Boolean", + "default": true, + "values": null }, { "key": "restoreOldSplashIcon", - "default": false, - "values": null, "title": "Restore old splash icon", "description": "Restore the old style splash icon.\n\nIf you enable both the old style splash icon and the Cairo splash animation,\n\nOld style splash icon will appear first and then the Cairo splash animation will start.", - "required": true + "required": true, + "type": "kotlin.Boolean", + "default": false, + "values": null } ] }, @@ -372,20 +440,22 @@ "name": "Custom branding name for Reddit", "description": "Renames the Reddit app to the name specified in patch options.", "use": false, + "dependencies": [], "compatiblePackages": { "com.reddit.frontpage": null }, "options": [ { "key": "appName", + "title": "App name", + "description": "The name of the app.", + "required": true, + "type": "kotlin.String", "default": "Reddit", "values": { "Default": "RVX Reddit", "Original": "Reddit" - }, - "title": "App name", - "description": "The name of the app.", - "required": true + } } ] }, @@ -393,6 +463,9 @@ "name": "Custom branding name for YouTube", "description": "Renames the YouTube app to the name specified in patch options.", "use": true, + "dependencies": [ + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -407,16 +480,17 @@ "options": [ { "key": "appName", + "title": "App name", + "description": "The name of the app.", + "required": true, + "type": "kotlin.String", "default": "RVX", "values": { "ReVanced Extended": "ReVanced Extended", "RVX": "RVX", "YouTube RVX": "YouTube RVX", "YouTube": "YouTube" - }, - "title": "App name", - "description": "The name of the app.", - "required": true + } } ] }, @@ -424,6 +498,9 @@ "name": "Custom branding name for YouTube Music", "description": "Renames the YouTube Music app to the name specified in patch options.", "use": true, + "dependencies": [ + "Settings for YouTube Music" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -437,29 +514,31 @@ "options": [ { "key": "appNameNotification", + "title": "App name in notification panel", + "description": "The name of the app as it appears in the notification panel.", + "required": true, + "type": "kotlin.String", "default": "RVX Music", "values": { "ReVanced Extended Music": "ReVanced Extended Music", "RVX Music": "RVX Music", "YouTube Music": "YouTube Music", "YT Music": "YT Music" - }, - "title": "App name in notification panel", - "description": "The name of the app as it appears in the notification panel.", - "required": true + } }, { "key": "appNameLauncher", + "title": "App name in launcher", + "description": "The name of the app as it appears in the launcher.", + "required": true, + "type": "kotlin.String", "default": "RVX Music", "values": { "ReVanced Extended Music": "ReVanced Extended Music", "RVX Music": "RVX Music", "YouTube Music": "YouTube Music", "YT Music": "YT Music" - }, - "title": "App name in launcher", - "description": "The name of the app as it appears in the launcher.", - "required": true + } } ] }, @@ -467,6 +546,9 @@ "name": "Custom double tap length", "description": "Adds Double-tap to seek values that are specified in patch options.", "use": true, + "dependencies": [ + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -481,11 +563,12 @@ "options": [ { "key": "doubleTapLengthArrays", - "default": "3, 5, 10, 15, 20, 30, 60, 120, 180", - "values": null, "title": "Double-tap to seek values", "description": "A list of custom Double-tap to seek lengths to be added, separated by commas.", - "required": true + "required": true, + "type": "kotlin.String", + "default": "3, 5, 10, 15, 20, 30, 60, 120, 180", + "values": null } ] }, @@ -493,6 +576,9 @@ "name": "Custom header for YouTube", "description": "Applies a custom header in the top left corner within the app.", "use": false, + "dependencies": [ + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -507,13 +593,14 @@ "options": [ { "key": "customHeader", + "title": "Custom header", + "description": "The header to apply to the app.\n\nPatch option \u0027Custom branding icon\u0027 applies only when:\n\n1. Patch \u0027Custom branding icon for YouTube\u0027 is included.\n2. Patch option for \u0027Custom branding icon for YouTube\u0027 is selected from the preset.\n\nIf a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:\n\n- drawable-xxxhdpi\n- drawable-xxhdpi\n- drawable-xhdpi\n- drawable-hdpi\n- drawable-mdpi\n\nEach of the folders must contain all of the following files:\n\n[Generic header]\n\n- yt_wordmark_header_light.png\n- yt_wordmark_header_dark.png\n\nThe image dimensions must be as follows:\n\n- drawable-xxxhdpi: 488px x 192px\n- drawable-xxhdpi: 366px x 144px\n- drawable-xhdpi: 244px x 96px\n- drawable-hdpi: 184px x 72px\n- drawable-mdpi: 122px x 48px\n\n[Premium header]\n\n- yt_premium_wordmark_header_light.png\n- yt_premium_wordmark_header_dark.png\n\nThe image dimensions must be as follows:\n- drawable-xxxhdpi: 516px x 192px\n- drawable-xxhdpi: 387px x 144px\n- drawable-xhdpi: 258px x 96px\n- drawable-hdpi: 194px x 72px\n- drawable-mdpi: 129px x 48px", + "required": true, + "type": "kotlin.String", "default": "custom_branding_icon", "values": { "Custom branding icon": "custom_branding_icon" - }, - "title": "Custom header", - "description": "The header to apply to the app.\n\nPatch option \u0027Custom branding icon\u0027 applies only when:\n\n1. Patch \u0027Custom branding icon for YouTube\u0027 is included.\n2. Patch option for \u0027Custom branding icon for YouTube\u0027 is selected from the preset.\n\nIf a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:\n\n- drawable-xxxhdpi\n- drawable-xxhdpi\n- drawable-xhdpi\n- drawable-hdpi\n- drawable-mdpi\n\nEach of the folders must contain all of the following files:\n\n[Generic header]\n\n- yt_wordmark_header_light.png\n- yt_wordmark_header_dark.png\n\nThe image dimensions must be as follows:\n\n- drawable-xxxhdpi: 488px x 192px\n- drawable-xxhdpi: 366px x 144px\n- drawable-xhdpi: 244px x 96px\n- drawable-hdpi: 184px x 72px\n- drawable-mdpi: 122px x 48px\n\n[Premium header]\n\n- yt_premium_wordmark_header_light.png\n- yt_premium_wordmark_header_dark.png\n\nThe image dimensions must be as follows:\n- drawable-xxxhdpi: 516px x 192px\n- drawable-xxhdpi: 387px x 144px\n- drawable-xhdpi: 258px x 96px\n- drawable-hdpi: 194px x 72px\n- drawable-mdpi: 129px x 48px", - "required": true + } } ] }, @@ -521,6 +608,10 @@ "name": "Custom header for YouTube Music", "description": "Applies a custom header in the top left corner within the app.", "use": false, + "dependencies": [ + "BytecodePatch", + "Settings for YouTube Music" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -534,13 +625,14 @@ "options": [ { "key": "customHeader", + "title": "Custom header", + "description": "The header to apply to the app.\n\nPatch option \u0027Custom branding icon\u0027 applies only when:\n\n1. Patch \u0027Custom branding icon for YouTube Music\u0027 is included.\n2. Patch option for \u0027Custom branding icon for YouTube Music\u0027 is selected from the preset.\n\nIf a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:\n\n- drawable-xxxhdpi\n- drawable-xxhdpi\n- drawable-xhdpi\n- drawable-hdpi\n- drawable-mdpi\n\nEach of the folders must contain all of the following files:\n\n- action_bar_logo.png\n- logo_music.png\n- ytm_logo.png\n\nThe image \u0027action_bar_logo.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 320px x 96px\n- drawable-xxhdpi: 240px x 72px\n- drawable-xhdpi: 160px x 48px\n- drawable-hdpi: 121px x 36px\n- drawable-mdpi: 80px x 24px\n\nThe image \u0027logo_music.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 576px x 200px\n- drawable-xxhdpi: 432px x 150px\n- drawable-xhdpi: 288px x 100px\n- drawable-hdpi: 217px x 76px\n- drawable-mdpi: 144px x 50px\n\nThe image \u0027ytm_logo.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 412px x 144px\n- drawable-xxhdpi: 309px x 108px\n- drawable-xhdpi: 206px x 72px\n- drawable-hdpi: 155px x 54px\n- drawable-mdpi: 103px x 36px", + "required": true, + "type": "kotlin.String", "default": "custom_branding_icon", "values": { "Custom branding icon": "custom_branding_icon" - }, - "title": "Custom header", - "description": "The header to apply to the app.\n\nPatch option \u0027Custom branding icon\u0027 applies only when:\n\n1. Patch \u0027Custom branding icon for YouTube Music\u0027 is included.\n2. Patch option for \u0027Custom branding icon for YouTube Music\u0027 is selected from the preset.\n\nIf a path to a folder is provided, the folder must contain one or more of the following folders, depending on the DPI of the device:\n\n- drawable-xxxhdpi\n- drawable-xxhdpi\n- drawable-xhdpi\n- drawable-hdpi\n- drawable-mdpi\n\nEach of the folders must contain all of the following files:\n\n- action_bar_logo.png\n- logo_music.png\n- ytm_logo.png\n\nThe image \u0027action_bar_logo.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 320px x 96px\n- drawable-xxhdpi: 240px x 72px\n- drawable-xhdpi: 160px x 48px\n- drawable-hdpi: 121px x 36px\n- drawable-mdpi: 80px x 24px\n\nThe image \u0027logo_music.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 576px x 200px\n- drawable-xxhdpi: 432px x 150px\n- drawable-xhdpi: 288px x 100px\n- drawable-hdpi: 217px x 76px\n- drawable-mdpi: 144px x 50px\n\nThe image \u0027ytm_logo.png\u0027 dimensions must be as follows:\n\n- drawable-xxxhdpi: 412px x 144px\n- drawable-xxhdpi: 309px x 108px\n- drawable-xhdpi: 206px x 72px\n- drawable-hdpi: 155px x 54px\n- drawable-mdpi: 103px x 36px", - "required": true + } } ] }, @@ -548,6 +640,14 @@ "name": "Description components", "description": "Adds options to hide and disable description components.", "use": true, + "dependencies": [ + "Settings for YouTube", + "BytecodePatch", + "BytecodePatch", + "BytecodePatch", + "ResourcePatch", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -565,6 +665,11 @@ "name": "Disable Cairo splash animation", "description": "Adds an option to disable Cairo splash animation.", "use": true, + "dependencies": [ + "Settings for YouTube Music", + "ResourcePatch", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "7.06.54", @@ -578,6 +683,10 @@ "name": "Disable DRC audio", "description": "Adds an option to disable DRC (Dynamic Range Compression) audio.", "use": true, + "dependencies": [ + "Settings for YouTube Music", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -594,6 +703,9 @@ "name": "Disable QUIC protocol", "description": "Adds an option to disable CronetEngine\u0027s QUIC protocol.", "use": true, + "dependencies": [ + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -611,6 +723,9 @@ "name": "Disable auto audio tracks", "description": "Adds an option to disable audio tracks from being automatically enabled.", "use": true, + "dependencies": [ + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -628,6 +743,10 @@ "name": "Disable auto captions", "description": "Adds an option to disable captions from being automatically enabled.", "use": true, + "dependencies": [ + "BytecodePatch", + "Settings for YouTube Music" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -644,6 +763,10 @@ "name": "Disable auto captions", "description": "Adds an option to disable captions from being automatically enabled.", "use": true, + "dependencies": [ + "BytecodePatch", + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -661,6 +784,9 @@ "name": "Disable dislike redirection", "description": "Adds an option to disable redirection to the next track when clicking the Dislike button.", "use": true, + "dependencies": [ + "Settings for YouTube Music" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -677,6 +803,9 @@ "name": "Disable haptic feedback", "description": "Adds options to disable haptic feedback when swiping in the video player.", "use": true, + "dependencies": [ + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -694,6 +823,9 @@ "name": "Disable resuming Shorts on startup", "description": "Adds an option to disable the Shorts player from resuming on app startup when Shorts were last being watched.", "use": true, + "dependencies": [ + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -711,6 +843,9 @@ "name": "Disable screenshot popup", "description": "Adds an option to disable the popup that appears when taking a screenshot.", "use": true, + "dependencies": [ + "Settings for Reddit" + ], "compatiblePackages": { "com.reddit.frontpage": null }, @@ -720,6 +855,10 @@ "name": "Disable splash animation", "description": "Adds an option to disable the splash animation on app startup.", "use": true, + "dependencies": [ + "ResourcePatch", + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -737,6 +876,10 @@ "name": "Enable OPUS codec", "description": "Adds an options to enable the OPUS audio codec if the player response includes.", "use": true, + "dependencies": [ + "BytecodePatch", + "Settings for YouTube Music" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -753,6 +896,10 @@ "name": "Enable OPUS codec", "description": "Adds an options to enable the OPUS audio codec if the player response includes.", "use": true, + "dependencies": [ + "BytecodePatch", + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -770,6 +917,9 @@ "name": "Enable debug logging", "description": "Adds an option to enable debug logging.", "use": true, + "dependencies": [ + "Settings for YouTube Music" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -786,6 +936,9 @@ "name": "Enable debug logging", "description": "Adds an option to enable debug logging.", "use": true, + "dependencies": [ + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -803,6 +956,10 @@ "name": "Enable external browser", "description": "Adds an option to always open links in your browser instead of in the in-app-browser.", "use": true, + "dependencies": [ + "BytecodePatch", + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -820,6 +977,9 @@ "name": "Enable gradient loading screen", "description": "Adds an option to enable the gradient loading screen.", "use": true, + "dependencies": [ + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -837,6 +997,10 @@ "name": "Enable landscape mode", "description": "Adds an option to enable landscape mode when rotating the screen on phones.", "use": true, + "dependencies": [ + "ResourcePatch", + "Settings for YouTube Music" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -853,6 +1017,9 @@ "name": "Enable open links directly", "description": "Adds an option to skip over redirection URLs in external links.", "use": true, + "dependencies": [ + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -870,6 +1037,16 @@ "name": "Flyout menu components", "description": "Adds options to hide or change flyout menu components.", "use": true, + "dependencies": [ + "Settings for YouTube Music", + "ResourcePatch", + "BytecodePatch", + "BytecodePatch", + "ResourcePatch", + "ResourcePatch", + "BytecodePatch", + "BytecodePatch" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -886,6 +1063,9 @@ "name": "Force hide player buttons background", "description": "Removes, at compile time, the dark background surrounding the video player controls.", "use": false, + "dependencies": [ + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -903,6 +1083,13 @@ "name": "Fullscreen components", "description": "Adds options to hide or change components related to fullscreen.", "use": true, + "dependencies": [ + "Settings for YouTube", + "BytecodePatch", + "BytecodePatch", + "ResourcePatch", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -920,6 +1107,10 @@ "name": "GmsCore support", "description": "Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services.", "use": true, + "dependencies": [ + "ResourcePatch", + "BytecodePatch" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -933,43 +1124,47 @@ "options": [ { "key": "gmsCoreVendorGroupId", + "title": "GmsCore vendor group ID", + "description": "The vendor\u0027s group ID for GmsCore.", + "required": true, + "type": "kotlin.String", "default": "app.revanced", "values": { "ReVanced": "app.revanced" - }, - "title": "GmsCore vendor group ID", - "description": "The vendor\u0027s group ID for GmsCore.", - "required": true + } }, { "key": "checkGmsCore", - "default": true, - "values": null, "title": "Check GmsCore", "description": "Check if GmsCore is installed on the device and has battery optimizations disabled when the app starts. \n\nIf GmsCore is not installed the app will not work, so disabling this is not recommended.", - "required": true + "required": true, + "type": "kotlin.Boolean", + "default": true, + "values": null }, { "key": "packageNameYouTube", + "title": "Package name of YouTube", + "description": "The name of the package to use in GmsCore support.", + "required": true, + "type": "kotlin.String", "default": "app.rvx.android.youtube", "values": { "Clone": "com.rvx.android.youtube", "Default": "app.rvx.android.youtube" - }, - "title": "Package name of YouTube", - "description": "The name of the package to use in GmsCore support.", - "required": true + } }, { "key": "packageNameYouTubeMusic", + "title": "Package name of YouTube Music", + "description": "The name of the package to use in GmsCore support.", + "required": true, + "type": "kotlin.String", "default": "app.rvx.android.apps.youtube.music", "values": { "Clone": "com.rvx.android.apps.youtube.music", "Default": "app.rvx.android.apps.youtube.music" - }, - "title": "Package name of YouTube Music", - "description": "The name of the package to use in GmsCore support.", - "required": true + } } ] }, @@ -977,6 +1172,10 @@ "name": "GmsCore support", "description": "Allows patched Google apps to run without root and under a different package name by using GmsCore instead of Google Play Services.", "use": true, + "dependencies": [ + "ResourcePatch", + "BytecodePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -991,43 +1190,47 @@ "options": [ { "key": "gmsCoreVendorGroupId", + "title": "GmsCore vendor group ID", + "description": "The vendor\u0027s group ID for GmsCore.", + "required": true, + "type": "kotlin.String", "default": "app.revanced", "values": { "ReVanced": "app.revanced" - }, - "title": "GmsCore vendor group ID", - "description": "The vendor\u0027s group ID for GmsCore.", - "required": true + } }, { "key": "checkGmsCore", - "default": true, - "values": null, "title": "Check GmsCore", "description": "Check if GmsCore is installed on the device and has battery optimizations disabled when the app starts. \n\nIf GmsCore is not installed the app will not work, so disabling this is not recommended.", - "required": true + "required": true, + "type": "kotlin.Boolean", + "default": true, + "values": null }, { "key": "packageNameYouTube", + "title": "Package name of YouTube", + "description": "The name of the package to use in GmsCore support.", + "required": true, + "type": "kotlin.String", "default": "app.rvx.android.youtube", "values": { "Clone": "com.rvx.android.youtube", "Default": "app.rvx.android.youtube" - }, - "title": "Package name of YouTube", - "description": "The name of the package to use in GmsCore support.", - "required": true + } }, { "key": "packageNameYouTubeMusic", + "title": "Package name of YouTube Music", + "description": "The name of the package to use in GmsCore support.", + "required": true, + "type": "kotlin.String", "default": "app.rvx.android.apps.youtube.music", "values": { "Clone": "com.rvx.android.apps.youtube.music", "Default": "app.rvx.android.apps.youtube.music" - }, - "title": "Package name of YouTube Music", - "description": "The name of the package to use in GmsCore support.", - "required": true + } } ] }, @@ -1035,6 +1238,9 @@ "name": "Hide Recently Visited shelf", "description": "Adds an option to hide the Recently Visited shelf in the sidebar.", "use": true, + "dependencies": [ + "Settings for Reddit" + ], "compatiblePackages": { "com.reddit.frontpage": null }, @@ -1044,6 +1250,9 @@ "name": "Hide Shorts dimming", "description": "Removes, at compile time, the dimming effect at the top and bottom of Shorts videos.", "use": false, + "dependencies": [ + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1061,6 +1270,10 @@ "name": "Hide account components", "description": "Adds options to hide components related to the account menu.", "use": true, + "dependencies": [ + "ResourcePatch", + "Settings for YouTube Music" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -1077,6 +1290,13 @@ "name": "Hide action bar components", "description": "Adds options to hide action bar components and replace the offline download button with an external download button.", "use": true, + "dependencies": [ + "Settings for YouTube Music", + "BytecodePatch", + "ResourcePatch", + "BytecodePatch", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -1093,6 +1313,10 @@ "name": "Hide action buttons", "description": "Adds options to hide action buttons under videos.", "use": true, + "dependencies": [ + "Settings for YouTube", + "BytecodePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1110,6 +1334,13 @@ "name": "Hide ads", "description": "Adds options to hide ads.", "use": true, + "dependencies": [ + "Settings for YouTube Music", + "BytecodePatch", + "BytecodePatch", + "Navigation bar components", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -1126,6 +1357,11 @@ "name": "Hide ads", "description": "Adds options to hide ads.", "use": true, + "dependencies": [ + "Settings for Reddit", + "ResourcePatch", + "BytecodePatch" + ], "compatiblePackages": { "com.reddit.frontpage": null }, @@ -1135,6 +1371,14 @@ "name": "Hide ads", "description": "Adds options to hide ads.", "use": true, + "dependencies": [ + "Settings for YouTube", + "BytecodePatch", + "BytecodePatch", + "BytecodePatch", + "ResourcePatch", + "BytecodePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1152,6 +1396,12 @@ "name": "Hide comments components", "description": "Adds options to hide components related to comments.", "use": true, + "dependencies": [ + "Settings for YouTube", + "BytecodePatch", + "BytecodePatch", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1169,6 +1419,14 @@ "name": "Hide feed components", "description": "Adds options to hide components related to feeds.", "use": true, + "dependencies": [ + "BytecodePatch", + "BytecodePatch", + "BytecodePatch", + "ResourcePatch", + "Settings for YouTube", + "BytecodePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1186,6 +1444,10 @@ "name": "Hide feed flyout menu", "description": "Adds the ability to hide feed flyout menu components using a custom filter.", "use": true, + "dependencies": [ + "ResourcePatch", + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1203,6 +1465,13 @@ "name": "Hide layout components", "description": "Adds options to hide general layout components.", "use": true, + "dependencies": [ + "Settings for YouTube Music", + "BytecodePatch", + "ResourcePatch", + "BytecodePatch", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -1219,6 +1488,13 @@ "name": "Hide layout components", "description": "Adds options to hide general layout components.", "use": true, + "dependencies": [ + "Settings for YouTube", + "BytecodePatch", + "ResourcePatch", + "BytecodePatch", + "BytecodePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1236,6 +1512,9 @@ "name": "Hide navigation buttons", "description": "Adds options to hide buttons in the navigation bar.", "use": false, + "dependencies": [ + "Settings for Reddit" + ], "compatiblePackages": { "com.reddit.frontpage": null }, @@ -1245,6 +1524,10 @@ "name": "Hide overlay filter", "description": "Removes, at compile time, the dark overlay that appears when player flyout menus are open.", "use": false, + "dependencies": [ + "Settings for YouTube Music", + "BytecodePatch" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -1261,6 +1544,13 @@ "name": "Hide player buttons", "description": "Adds options to hide buttons in the video player.", "use": true, + "dependencies": [ + "BytecodePatch", + "BytecodePatch", + "ResourcePatch", + "Settings for YouTube", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1278,6 +1568,13 @@ "name": "Hide player flyout menu", "description": "Adds options to hide player flyout menu components.", "use": true, + "dependencies": [ + "Settings for YouTube", + "BytecodePatch", + "BytecodePatch", + "ResourcePatch", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1295,6 +1592,7 @@ "name": "Hide player overlay filter", "description": "Removes, at compile time, the dark overlay that appears when single-tapping in the player.", "use": false, + "dependencies": [], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -1311,6 +1609,9 @@ "name": "Hide recommended communities shelf", "description": "Adds an option to hide the recommended communities shelves in subreddits.", "use": true, + "dependencies": [ + "Settings for Reddit" + ], "compatiblePackages": { "com.reddit.frontpage": null }, @@ -1320,6 +1621,10 @@ "name": "Hide shortcuts", "description": "Remove, at compile time, the app shortcuts that appears when app icon is long pressed.", "use": false, + "dependencies": [ + "Settings for YouTube", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1334,35 +1639,39 @@ "options": [ { "key": "explore", - "default": false, - "values": null, "title": "Hide Explore", "description": "Hide Explore from shortcuts.", - "required": true + "required": true, + "type": "kotlin.Boolean", + "default": false, + "values": null }, { "key": "subscriptions", - "default": false, - "values": null, "title": "Hide Subscriptions", "description": "Hide Subscriptions from shortcuts.", - "required": true + "required": true, + "type": "kotlin.Boolean", + "default": false, + "values": null }, { "key": "search", - "default": false, - "values": null, "title": "Hide Search", "description": "Hide Search from shortcuts.", - "required": true + "required": true, + "type": "kotlin.Boolean", + "default": false, + "values": null }, { "key": "shorts", - "default": true, - "values": null, "title": "Hide Shorts", "description": "Hide Shorts from shortcuts.", - "required": true + "required": true, + "type": "kotlin.Boolean", + "default": true, + "values": null } ] }, @@ -1370,6 +1679,9 @@ "name": "Hook YouTube Music actions", "description": "Adds support for opening music in RVX Music using the in-app YouTube Music button.", "use": true, + "dependencies": [ + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1387,6 +1699,11 @@ "name": "Hook download actions", "description": "Adds support to download videos with an external downloader app using the in-app download button.", "use": true, + "dependencies": [ + "BytecodePatch", + "ResourcePatch", + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1404,6 +1721,9 @@ "name": "Layout switch", "description": "Adds an option to spoof the dpi in order to use a tablet or phone layout.", "use": true, + "dependencies": [ + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1421,6 +1741,10 @@ "name": "MaterialYou", "description": "Applies the MaterialYou theme for Android 12+ devices.", "use": false, + "dependencies": [ + "ResourcePatch", + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1438,6 +1762,11 @@ "name": "Miniplayer", "description": "Adds options to change the in app minimized player, and if patching target 19.16+ adds options to use modern miniplayers.", "use": true, + "dependencies": [ + "ResourcePatch", + "Settings for YouTube", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1455,6 +1784,11 @@ "name": "Navigation bar components", "description": "Adds options to hide or change components related to the navigation bar.", "use": true, + "dependencies": [ + "ResourcePatch", + "ResourcePatch", + "Settings for YouTube Music" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -1471,6 +1805,13 @@ "name": "Navigation bar components", "description": "Adds options to hide or change components related to the navigation bar.", "use": true, + "dependencies": [ + "ResourcePatch", + "Settings for YouTube", + "ResourcePatch", + "BytecodePatch", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1488,6 +1829,10 @@ "name": "Open links directly", "description": "Adds an option to skip over redirection URLs in external links.", "use": true, + "dependencies": [ + "Settings for Reddit", + "BytecodePatch" + ], "compatiblePackages": { "com.reddit.frontpage": null }, @@ -1497,6 +1842,10 @@ "name": "Open links externally", "description": "Adds an option to always open links in your browser instead of in the in-app-browser.", "use": true, + "dependencies": [ + "Settings for Reddit", + "BytecodePatch" + ], "compatiblePackages": { "com.reddit.frontpage": null }, @@ -1506,6 +1855,14 @@ "name": "Overlay buttons", "description": "Adds options to display overlay buttons in the video player.", "use": true, + "dependencies": [ + "BytecodePatch", + "BytecodePatch", + "BytecodePatch", + "ResourcePatch", + "ResourcePatch", + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1520,43 +1877,47 @@ "options": [ { "key": "iconType", + "title": "Icon type", + "description": "The icon type.", + "required": true, + "type": "kotlin.String", "default": "bold", "values": { "Bold": "bold", "Rounded": "rounded", "Thin": "thin" - }, - "title": "Icon type", - "description": "The icon type.", - "required": true + } }, { "key": "bottomMargin", + "title": "Bottom margin", + "description": "The bottom margin for the overlay buttons and timestamp.", + "required": true, + "type": "kotlin.String", "default": "2.5dip", "values": { "Default": "2.5dip", "None": "0.0dip", "Wider": "5.0dip" - }, - "title": "Bottom margin", - "description": "The bottom margin for the overlay buttons and timestamp.", - "required": true + } }, { "key": "widerButtonsSpace", - "default": false, - "values": null, "title": "Wider between-buttons space", "description": "Prevent adjacent button presses by increasing the horizontal spacing between buttons.", - "required": true + "required": true, + "type": "kotlin.Boolean", + "default": false, + "values": null }, { "key": "changeTopButtons", - "default": false, - "values": null, "title": "Change top buttons", "description": "Change the icons at the top of the player.", - "required": true + "required": true, + "type": "kotlin.Boolean", + "default": false, + "values": null } ] }, @@ -1564,6 +1925,14 @@ "name": "Player components", "description": "Adds options to hide or change components related to the player.", "use": true, + "dependencies": [ + "Settings for YouTube Music", + "ResourcePatch", + "ResourcePatch", + "BytecodePatch", + "BytecodePatch", + "BytecodePatch" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -1580,6 +1949,17 @@ "name": "Player components", "description": "Adds options to hide or change components related to the video player.", "use": true, + "dependencies": [ + "Settings for YouTube", + "BytecodePatch", + "BytecodePatch", + "BytecodePatch", + "BytecodePatch", + "ResourcePatch", + "BytecodePatch", + "BytecodePatch", + "BytecodePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1597,6 +1977,7 @@ "name": "Premium icon", "description": "Unlocks premium app icons.", "use": true, + "dependencies": [], "compatiblePackages": { "com.reddit.frontpage": null }, @@ -1606,6 +1987,9 @@ "name": "Remove background playback restrictions", "description": "Removes restrictions on background playback, including for kids videos.", "use": true, + "dependencies": [ + "Settings for YouTube Music" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -1622,6 +2006,10 @@ "name": "Remove background playback restrictions", "description": "Removes restrictions on background playback, including for music and kids videos.", "use": true, + "dependencies": [ + "BytecodePatch", + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1639,6 +2027,9 @@ "name": "Remove subreddit dialog", "description": "Adds options to remove the NSFW community warning and notifications suggestion dialogs by dismissing them automatically.", "use": true, + "dependencies": [ + "Settings for Reddit" + ], "compatiblePackages": { "com.reddit.frontpage": null }, @@ -1648,6 +2039,10 @@ "name": "Remove viewer discretion dialog", "description": "Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction.", "use": true, + "dependencies": [ + "BytecodePatch", + "Settings for YouTube Music" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -1664,6 +2059,10 @@ "name": "Remove viewer discretion dialog", "description": "Adds an option to remove the dialog that appears when opening a video that has been age-restricted by accepting it automatically. This does not bypass the age restriction.", "use": true, + "dependencies": [ + "BytecodePatch", + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1681,6 +2080,9 @@ "name": "Restore old style library shelf", "description": "Adds an option to return the Library tab to the old style.", "use": true, + "dependencies": [ + "Settings for YouTube Music" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -1697,6 +2099,10 @@ "name": "Return YouTube Dislike", "description": "Adds an option to show the dislike count of songs using the Return YouTube Dislike API.", "use": true, + "dependencies": [ + "BytecodePatch", + "Settings for YouTube Music" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -1713,6 +2119,13 @@ "name": "Return YouTube Dislike", "description": "Adds an option to show the dislike count of videos using the Return YouTube Dislike API.", "use": true, + "dependencies": [ + "Settings for YouTube", + "BytecodePatch", + "BytecodePatch", + "BytecodePatch", + "BytecodePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1730,6 +2143,11 @@ "name": "Return YouTube Username", "description": "Adds an option to replace YouTube handles with usernames in comments using YouTube Data API v3.", "use": false, + "dependencies": [ + "BytecodePatch", + "Settings for YouTube Music", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -1746,6 +2164,10 @@ "name": "Return YouTube Username", "description": "Adds an option to replace YouTube handles with usernames in comments using YouTube Data API v3.", "use": false, + "dependencies": [ + "BytecodePatch", + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1763,6 +2185,10 @@ "name": "Sanitize sharing links", "description": "Adds an option to remove tracking query parameters from URLs when sharing links.", "use": true, + "dependencies": [ + "BytecodePatch", + "Settings for YouTube Music" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -1779,6 +2205,9 @@ "name": "Sanitize sharing links", "description": "Adds an option to remove tracking query parameters from URLs when sharing links.", "use": true, + "dependencies": [ + "Settings for Reddit" + ], "compatiblePackages": { "com.reddit.frontpage": null }, @@ -1788,6 +2217,10 @@ "name": "Sanitize sharing links", "description": "Adds an option to remove tracking query parameters from URLs when sharing links.", "use": true, + "dependencies": [ + "BytecodePatch", + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1805,6 +2238,15 @@ "name": "Seekbar components", "description": "Adds options to hide or change components related to the seekbar.", "use": true, + "dependencies": [ + "BytecodePatch", + "BytecodePatch", + "BytecodePatch", + "ResourcePatch", + "Settings for YouTube", + "BytecodePatch", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1822,17 +2264,22 @@ "name": "Settings for Reddit", "description": "Applies mandatory patches to implement ReVanced Extended settings into the application.", "use": true, + "dependencies": [ + "BytecodePatch", + "BytecodePatch" + ], "compatiblePackages": { "com.reddit.frontpage": null }, "options": [ { "key": "settingsLabel", - "default": "ReVanced Extended", - "values": null, "title": "RVX settings menu name", "description": "The name of the RVX settings menu.", - "required": true + "required": true, + "type": "kotlin.String", + "default": "ReVanced Extended", + "values": null } ] }, @@ -1840,6 +2287,12 @@ "name": "Settings for YouTube", "description": "Applies mandatory patches to implement ReVanced Extended settings into the application.", "use": true, + "dependencies": [ + "BytecodePatch", + "BytecodePatch", + "ResourcePatch", + "BytecodePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1854,6 +2307,10 @@ "options": [ { "key": "insertPosition", + "title": "Insert position", + "description": "The settings menu name that the RVX settings menu should be above.", + "required": true, + "type": "kotlin.String", "default": "@string/about_key", "values": { "Parent settings": "@string/parent_tools_key", @@ -1878,18 +2335,16 @@ "Captions": "@string/captions_key", "Accessibility": "@string/accessibility_settings_key", "About": "@string/about_key" - }, - "title": "Insert position", - "description": "The settings menu name that the RVX settings menu should be above.", - "required": true + } }, { "key": "settingsLabel", - "default": "ReVanced Extended", - "values": null, "title": "RVX settings label", "description": "The name of the RVX settings menu.", - "required": true + "required": true, + "type": "kotlin.String", + "default": "ReVanced Extended", + "values": null } ] }, @@ -1897,6 +2352,9 @@ "name": "Settings for YouTube Music", "description": "Applies mandatory patches to implement ReVanced Extended settings into the application.", "use": true, + "dependencies": [ + "BytecodePatch" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -1910,11 +2368,12 @@ "options": [ { "key": "settingsLabel", - "default": "ReVanced Extended", - "values": null, "title": "RVX settings label", "description": "The name of the RVX settings menu.", - "required": true + "required": true, + "type": "kotlin.String", + "default": "ReVanced Extended", + "values": null } ] }, @@ -1922,6 +2381,21 @@ "name": "Shorts components", "description": "Adds options to hide or change components related to YouTube Shorts.", "use": true, + "dependencies": [ + "Settings for YouTube", + "BytecodePatch", + "BytecodePatch", + "BytecodePatch", + "BytecodePatch", + "BytecodePatch", + "BytecodePatch", + "BytecodePatch", + "BytecodePatch", + "ResourcePatch", + "BytecodePatch", + "ResourcePatch", + "BytecodePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1939,6 +2413,10 @@ "name": "SponsorBlock", "description": "Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as non-music sections.", "use": true, + "dependencies": [ + "BytecodePatch", + "Settings for YouTube Music" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -1955,6 +2433,11 @@ "name": "SponsorBlock", "description": "Adds options to enable and configure SponsorBlock, which can skip undesired video segments, such as sponsored content.", "use": true, + "dependencies": [ + "ResourcePatch", + "BytecodePatch", + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -1969,11 +2452,12 @@ "options": [ { "key": "outlineIcon", - "default": false, - "values": null, "title": "Outline icons", "description": "Apply the outline icon.", - "required": true + "required": true, + "type": "kotlin.Boolean", + "default": false, + "values": null } ] }, @@ -1981,6 +2465,12 @@ "name": "Spoof app version", "description": "Adds options to spoof the YouTube Music client version. This can remove the radio mode restriction in Canadian regions or disable real-time lyrics.", "use": true, + "dependencies": [ + "BytecodePatch", + "Restore old style library shelf", + "Settings for YouTube Music", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -1996,6 +2486,12 @@ "name": "Spoof app version", "description": "Adds options to spoof the YouTube client version. This can be used to restore old UI elements and features.", "use": true, + "dependencies": [ + "BytecodePatch", + "BytecodePatch", + "Settings for YouTube", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -2013,6 +2509,10 @@ "name": "Spoof client", "description": "Adds options to spoof the client to allow playback.", "use": false, + "dependencies": [ + "Settings for YouTube Music", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -2028,6 +2528,10 @@ "name": "Spoof streaming data", "description": "Adds options to spoof the streaming data to allow playback.", "use": true, + "dependencies": [ + "BytecodePatch", + "Settings for YouTube Music" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -2044,6 +2548,10 @@ "name": "Spoof streaming data", "description": "Adds options to spoof the streaming data to allow playback.", "use": true, + "dependencies": [ + "BytecodePatch", + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -2061,6 +2569,14 @@ "name": "Swipe controls", "description": "Adds options for controlling volume and brightness with swiping, and whether to enter fullscreen when swiping down below the player.", "use": true, + "dependencies": [ + "BytecodePatch", + "BytecodePatch", + "BytecodePatch", + "ResourcePatch", + "Settings for YouTube", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -2078,6 +2594,10 @@ "name": "Theme", "description": "Changes the app\u0027s theme to the values specified in patch options.", "use": true, + "dependencies": [ + "ResourcePatch", + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -2092,6 +2612,10 @@ "options": [ { "key": "darkThemeBackgroundColor", + "title": "Dark theme background color", + "description": "Can be a hex color (#AARRGGBB) or a color resource reference.", + "required": false, + "type": "kotlin.String", "default": "@android:color/black", "values": { "Amoled Black": "@android:color/black", @@ -2103,13 +2627,14 @@ "Dark Yellow": "#FF282900", "Dark Orange": "#FF291800", "Dark Red": "#FF290000" - }, - "title": "Dark theme background color", - "description": "Can be a hex color (#AARRGGBB) or a color resource reference.", - "required": false + } }, { "key": "lightThemeBackgroundColor", + "title": "Light theme background color", + "description": "Can be a hex color (#AARRGGBB) or a color resource reference.", + "required": false, + "type": "kotlin.String", "default": "@android:color/white", "values": { "White": "@android:color/white", @@ -2120,10 +2645,7 @@ "Light Yellow": "#FFFDFFCC", "Light Orange": "#FFFFE6CC", "Light Red": "#FFFFD6D6" - }, - "title": "Light theme background color", - "description": "Can be a hex color (#AARRGGBB) or a color resource reference.", - "required": false + } } ] }, @@ -2131,6 +2653,13 @@ "name": "Toolbar components", "description": "Adds options to hide or change components located on the toolbar, such as toolbar buttons, search bar, and header.", "use": true, + "dependencies": [ + "BytecodePatch", + "ResourcePatch", + "Settings for YouTube", + "BytecodePatch", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -2148,6 +2677,9 @@ "name": "Translations for YouTube", "description": "Add translations or remove string resources.", "use": true, + "dependencies": [ + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -2162,27 +2694,30 @@ "options": [ { "key": "customTranslations", - "default": "", - "values": null, "title": "Custom translations", "description": "The path to the \u0027strings.xml\u0027 file.\nPlease note that applying the \u0027strings.xml\u0027 file will overwrite all existing translations.", - "required": true + "required": true, + "type": "kotlin.String", + "default": "", + "values": null }, { "key": "selectedTranslations", - "default": "ar, bg-rBG, de-rDE, el-rGR, es-rES, fr-rFR, hu-rHU, it-rIT, ja-rJP, ko-rKR, pl-rPL, pt-rBR, ru-rRU, tr-rTR, uk-rUA, vi-rVN, zh-rCN, zh-rTW", - "values": null, "title": "Translations to add", "description": "A list of translations to be added for the RVX settings, separated by commas.", - "required": true + "required": true, + "type": "kotlin.String", + "default": "ar, bg-rBG, de-rDE, el-rGR, es-rES, fr-rFR, hu-rHU, it-rIT, ja-rJP, ko-rKR, pl-rPL, pt-rBR, ru-rRU, tr-rTR, uk-rUA, vi-rVN, zh-rCN, zh-rTW", + "values": null }, { "key": "selectedStringResources", - "default": "af, am, ar, ar-rXB, as, az, b+es+419, b+sr+Latn, be, bg, bn, bs, ca, cs, da, de, el, en-rAU, en-rCA, en-rGB, en-rIN, en-rXA, en-rXC, es, es-rUS, et, eu, fa, fi, fr, fr-rCA, gl, gu, hi, hr, hu, hy, id, in, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, nb, ne, nl, no, or, pa, pl, pt, pt-rBR, pt-rPT, ro, ru, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, uk, ur, uz, vi, zh, zh-rCN, zh-rHK, zh-rTW, zu", - "values": null, "title": "String resources to keep", "description": "A list of string resources to be kept, separated by commas.\nString resources not in the list will be removed from the app.\n\nDefault string resource, English, is not removed.", - "required": true + "required": true, + "type": "kotlin.String", + "default": "af, am, ar, ar-rXB, as, az, b+es+419, b+sr+Latn, be, bg, bn, bs, ca, cs, da, de, el, en-rAU, en-rCA, en-rGB, en-rIN, en-rXA, en-rXC, es, es-rUS, et, eu, fa, fi, fr, fr-rCA, gl, gu, hi, hr, hu, hy, id, in, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, nb, ne, nl, no, or, pa, pl, pt, pt-rBR, pt-rPT, ro, ru, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, uk, ur, uz, vi, zh, zh-rCN, zh-rHK, zh-rTW, zu", + "values": null } ] }, @@ -2190,6 +2725,9 @@ "name": "Translations for YouTube Music", "description": "Add translations or remove string resources.", "use": true, + "dependencies": [ + "Settings for YouTube Music" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -2203,27 +2741,30 @@ "options": [ { "key": "customTranslations", - "default": "", - "values": null, "title": "Custom translations", "description": "The path to the \u0027strings.xml\u0027 file.\nPlease note that applying the \u0027strings.xml\u0027 file will overwrite all existing translations.", - "required": true + "required": true, + "type": "kotlin.String", + "default": "", + "values": null }, { "key": "selectedTranslations", - "default": "bg-rBG, bn, cs-rCZ, el-rGR, es-rES, fr-rFR, hu-rHU, id-rID, in, it-rIT, ja-rJP, ko-rKR, nl-rNL, pl-rPL, pt-rBR, ro-rRO, ru-rRU, tr-rTR, uk-rUA, vi-rVN, zh-rCN, zh-rTW", - "values": null, "title": "Translations to add", "description": "A list of translations to be added for the RVX settings, separated by commas.", - "required": true + "required": true, + "type": "kotlin.String", + "default": "bg-rBG, bn, cs-rCZ, el-rGR, es-rES, fr-rFR, hu-rHU, id-rID, in, it-rIT, ja-rJP, ko-rKR, nl-rNL, pl-rPL, pt-rBR, ro-rRO, ru-rRU, tr-rTR, uk-rUA, vi-rVN, zh-rCN, zh-rTW", + "values": null }, { "key": "selectedStringResources", - "default": "af, am, ar, ar-rXB, as, az, b+es+419, b+sr+Latn, be, bg, bn, bs, ca, cs, da, de, el, en-rAU, en-rCA, en-rGB, en-rIN, en-rXA, en-rXC, es, es-rUS, et, eu, fa, fi, fr, fr-rCA, gl, gu, hi, hr, hu, hy, id, in, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, nb, ne, nl, no, or, pa, pl, pt, pt-rBR, pt-rPT, ro, ru, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, uk, ur, uz, vi, zh, zh-rCN, zh-rHK, zh-rTW, zu", - "values": null, "title": "String resources to keep", "description": "A list of string resources to be kept, separated by commas.\nString resources not in the list will be removed from the app.\n\nDefault string resource, English, is not removed.", - "required": true + "required": true, + "type": "kotlin.String", + "default": "af, am, ar, ar-rXB, as, az, b+es+419, b+sr+Latn, be, bg, bn, bs, ca, cs, da, de, el, en-rAU, en-rCA, en-rGB, en-rIN, en-rXA, en-rXC, es, es-rUS, et, eu, fa, fi, fr, fr-rCA, gl, gu, hi, hr, hu, hy, id, in, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, nb, ne, nl, no, or, pa, pl, pt, pt-rBR, pt-rPT, ro, ru, si, sk, sl, sq, sr, sv, sw, ta, te, th, tl, tr, uk, ur, uz, vi, zh, zh-rCN, zh-rHK, zh-rTW, zu", + "values": null } ] }, @@ -2231,6 +2772,11 @@ "name": "Video playback", "description": "Adds options to customize settings related to video playback, such as default video quality and playback speed.", "use": true, + "dependencies": [ + "BytecodePatch", + "Settings for YouTube Music", + "BytecodePatch" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -2247,6 +2793,18 @@ "name": "Video playback", "description": "Adds options to customize settings related to video playback, such as default video quality and playback speed.", "use": true, + "dependencies": [ + "Settings for YouTube", + "BytecodePatch", + "BytecodePatch", + "BytecodePatch", + "BytecodePatch", + "BytecodePatch", + "BytecodePatch", + "BytecodePatch", + "BytecodePatch", + "ResourcePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -2264,6 +2822,9 @@ "name": "Visual preferences icons for YouTube", "description": "Adds icons to specific preferences in the settings.", "use": true, + "dependencies": [ + "Settings for YouTube" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", @@ -2278,6 +2839,10 @@ "options": [ { "key": "settingsMenuIcon", + "title": "RVX settings menu icon", + "description": "The icon for the RVX settings menu.", + "required": true, + "type": "kotlin.String", "default": "extension", "values": { "Custom branding icon": "custom_branding_icon", @@ -2286,18 +2851,16 @@ "YT alt": "yt_alt", "ReVanced": "revanced", "ReVanced Colored": "revanced_colored" - }, - "title": "RVX settings menu icon", - "description": "The icon for the RVX settings menu.", - "required": true + } }, { "key": "applyToAll", - "default": false, - "values": null, "title": "Apply to all settings menu", "description": "Whether to apply Visual preferences icons to all settings menus.\n\nIf true: icons are applied to the parent PreferenceScreen of YouTube settings, the parent PreferenceScreen of RVX settings and the RVX sub-settings (if supported).\n\nIf false: icons are applied only to the parent PreferenceScreen of YouTube settings and RVX settings.", - "required": true + "required": true, + "type": "kotlin.Boolean", + "default": false, + "values": null } ] }, @@ -2305,6 +2868,9 @@ "name": "Visual preferences icons for YouTube Music", "description": "Adds icons to specific preferences in the settings.", "use": true, + "dependencies": [ + "Settings for YouTube Music" + ], "compatiblePackages": { "com.google.android.apps.youtube.music": [ "6.20.51", @@ -2318,6 +2884,10 @@ "options": [ { "key": "settingsMenuIcon", + "title": "RVX settings menu icon", + "description": "The icon for the RVX settings menu.", + "required": true, + "type": "kotlin.String", "default": "extension", "values": { "Custom branding icon": "custom_branding_icon", @@ -2325,10 +2895,7 @@ "Gear": "gear", "ReVanced": "revanced", "ReVanced Colored": "revanced_colored" - }, - "title": "RVX settings menu icon", - "description": "The icon for the RVX settings menu.", - "required": true + } } ] }, @@ -2336,6 +2903,10 @@ "name": "Watch history", "description": "Adds an option to change the domain of the watch history or check its status.", "use": true, + "dependencies": [ + "Settings for YouTube", + "BytecodePatch" + ], "compatiblePackages": { "com.google.android.youtube": [ "18.29.38", diff --git a/patches/src/main/kotlin/app/revanced/generator/JsonPatchesFileGenerator.kt b/patches/src/main/kotlin/app/revanced/generator/JsonPatchesFileGenerator.kt index 8fcc2d203..2e916af51 100644 --- a/patches/src/main/kotlin/app/revanced/generator/JsonPatchesFileGenerator.kt +++ b/patches/src/main/kotlin/app/revanced/generator/JsonPatchesFileGenerator.kt @@ -15,15 +15,17 @@ internal class JsonPatchesFileGenerator : PatchesFileGenerator { it.name!!, it.description, it.use, + it.dependencies.map { dependency -> dependency.name ?: dependency.toString() }, it.compatiblePackages?.associate { (packageName, versions) -> packageName to versions }, it.options.values.map { option -> JsonPatch.Option( option.key, - option.default, - option.values, option.title, option.description, option.required, + option.type.toString(), + option.default, + option.values, ) }, ) @@ -37,16 +39,18 @@ internal class JsonPatchesFileGenerator : PatchesFileGenerator { val name: String? = null, val description: String? = null, val use: Boolean = true, + val dependencies: List, val compatiblePackages: Map?>? = null, val options: List