diff --git a/CHANGELOG.md b/CHANGELOG.md index 5728a55aa..5f9270d65 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,31 @@ +# [5.41.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.13...v5.41.0-dev.14) (2025-09-24) + + +### Features + +* **YouTube - Hide layout components:** Add "Hide Emoji and Timestamp buttons" setting ([#5992](https://github.com/ReVanced/revanced-patches/issues/5992)) ([2b555f6](https://github.com/ReVanced/revanced-patches/commit/2b555f67f07e0de5703c630888ce2fbba3145192)) + +# [5.41.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.12...v5.41.0-dev.13) (2025-09-24) + + +### Bug Fixes + +* **YouTube - Hide Shorts components:** Fix "Hide preview comment" ([#5990](https://github.com/ReVanced/revanced-patches/issues/5990)) ([dd4e2cd](https://github.com/ReVanced/revanced-patches/commit/dd4e2cd0855ccc51b94593004fdd8150ac3b41cc)) + +# [5.41.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.11...v5.41.0-dev.12) (2025-09-24) + + +### Bug Fixes + +* **YouTube - SponsorBlock:** Show category color in create new segment menu ([#5987](https://github.com/ReVanced/revanced-patches/issues/5987)) ([ffd933c](https://github.com/ReVanced/revanced-patches/commit/ffd933c6734274cdde5aaec0159b67f173f9228c)) + +# [5.41.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.10...v5.41.0-dev.11) (2025-09-23) + + +### Features + +* **YouTube:** Add `Disable video codecs` patch ([#5981](https://github.com/ReVanced/revanced-patches/issues/5981)) ([bfbffbd](https://github.com/ReVanced/revanced-patches/commit/bfbffbd1f5aa867027053e25b343a51a606216a3)) + # [5.41.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.41.0-dev.9...v5.41.0-dev.10) (2025-09-23) diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/CommentsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/CommentsFilter.java index 5fc04bc74..6264b2ab2 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/CommentsFilter.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/CommentsFilter.java @@ -6,8 +6,11 @@ import app.revanced.extension.youtube.shared.PlayerType; @SuppressWarnings("unused") final class CommentsFilter extends Filter { + private static final String COMMENT_COMPOSER_PATH = "comment_composer.eml"; + private final StringFilterGroup chipBar; private final ByteArrayFilterGroup aiCommentsSummary; + private final StringFilterGroup emojiAndTimestampButtons; public CommentsFilter() { var chatSummary = new StringFilterGroup( @@ -52,6 +55,11 @@ final class CommentsFilter extends Filter { "composer_short_creation_button.eml" ); + emojiAndTimestampButtons = new StringFilterGroup( + Settings.HIDE_COMMENTS_EMOJI_AND_TIMESTAMP_BUTTONS, + "|CellType|ContainerType|ContainerType|ContainerType|ContainerType|ContainerType|" + ); + var previewComment = new StringFilterGroup( Settings.HIDE_COMMENTS_PREVIEW_COMMENT, "|carousel_item", @@ -64,11 +72,6 @@ final class CommentsFilter extends Filter { "super_thanks_button.eml" ); - StringFilterGroup timestampButton = new StringFilterGroup( - Settings.HIDE_COMMENTS_TIMESTAMP_BUTTON, - "composer_timestamp_button.eml" - ); - addPathCallbacks( channelGuidelines, chatSummary, @@ -77,9 +80,9 @@ final class CommentsFilter extends Filter { comments, communityGuidelines, createAShort, + emojiAndTimestampButtons, previewComment, - thanksButton, - timestampButton + thanksButton ); } @@ -93,6 +96,10 @@ final class CommentsFilter extends Filter { && aiCommentsSummary.check(buffer).isFiltered(); } + if (matchedGroup == emojiAndTimestampButtons) { + return path.startsWith(COMMENT_COMPOSER_PATH); + } + return true; } } diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ShortsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ShortsFilter.java index 291577302..3ff711728 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ShortsFilter.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ShortsFilter.java @@ -155,6 +155,13 @@ public final class ShortsFilter extends Filter { "reel_dislike_button.eml" ); + StringFilterGroup previewComment = new StringFilterGroup( + Settings.HIDE_SHORTS_PREVIEW_COMMENT, + // Preview comment that can popup while a Short is playing. + // Uses no bundled icons, and instead the users profile photo is shown. + "participation_bar.eml" + ); + joinButton = new StringFilterGroup( Settings.HIDE_SHORTS_JOIN_BUTTON, "sponsor_button" @@ -218,7 +225,7 @@ public final class ShortsFilter extends Filter { addPathCallbacks( shortsCompactFeedVideo, joinButton, subscribeButton, paidPromotionButton, - suggestedAction, pausedOverlayButtons, channelBar, + suggestedAction, pausedOverlayButtons, channelBar, previewComment, fullVideoLinkLabel, videoTitle, useSoundButton, reelSoundMetadata, soundButton, infoPanel, stickers, likeFountain, likeButton, dislikeButton ); @@ -254,12 +261,6 @@ public final class ShortsFilter extends Filter { // Suggested actions. // suggestedActionsBuffer.addAll( - new ByteArrayFilterGroup( - Settings.HIDE_SHORTS_PREVIEW_COMMENT, - // Preview comment that can popup while a Short is playing. - // Uses no bundled icons, and instead the users profile photo is shown. - "shorts-comments-panel" - ), new ByteArrayFilterGroup( Settings.HIDE_SHORTS_SHOP_BUTTON, "yt_outline_bag_" diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java index 404c015a7..d7cc6032a 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java @@ -204,9 +204,9 @@ public class Settings extends BaseSettings { public static final BooleanSetting HIDE_COMMENTS_COMMUNITY_GUIDELINES = new BooleanSetting("revanced_hide_comments_community_guidelines", TRUE); 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_PREVIEW_COMMENT = new BooleanSetting("revanced_hide_comments_preview_comment", FALSE); + public static final BooleanSetting HIDE_COMMENTS_EMOJI_AND_TIMESTAMP_BUTTONS = new BooleanSetting("revanced_hide_comments_emoji_and_timestamp_buttons", FALSE); 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); - public static final BooleanSetting HIDE_COMMENTS_TIMESTAMP_BUTTON = new BooleanSetting("revanced_hide_comments_timestamp_button", FALSE); // Description public static final BooleanSetting HIDE_AI_GENERATED_VIDEO_SUMMARY_SECTION = new BooleanSetting("revanced_hide_ai_generated_video_summary_section", FALSE); diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/SponsorBlockUtils.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/SponsorBlockUtils.java index cf74549e4..0cd58eb97 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/SponsorBlockUtils.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/SponsorBlockUtils.java @@ -96,7 +96,7 @@ public class SponsorBlockUtils { SegmentCategory[] categories = SegmentCategory.categoriesWithoutHighlights(); CharSequence[] titles = new CharSequence[categories.length]; for (int i = 0, length = categories.length; i < length; i++) { - titles[i] = categories[i].getTitle().toString(); + titles[i] = categories[i].getTitleWithColorDot(); } newUserCreatedSegmentCategory = null; @@ -336,8 +336,8 @@ public class SponsorBlockUtils { Utils.verifyOnMainThread(); final SegmentCategory[] values = SegmentCategory.categoriesWithoutHighlights(); CharSequence[] titles = new CharSequence[values.length]; - for (int i = 0, length = values.length; i < length; i++) { - titles[i] = values[i].getTitle().toString(); + for (int i = 0; i < values.length; i++) { + titles[i] = values[i].getTitleWithColorDot(); } new AlertDialog.Builder(context) diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/SegmentCategory.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/SegmentCategory.java index ce7ef84ed..a5adc9c10 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/SegmentCategory.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/sponsorblock/objects/SegmentCategory.java @@ -5,8 +5,12 @@ import static app.revanced.extension.youtube.settings.Settings.*; import android.graphics.Color; import android.graphics.Paint; +import android.text.Spannable; +import android.text.SpannableString; import android.text.TextUtils; +import android.text.style.ForegroundColorSpan; +import android.text.style.RelativeSizeSpan; import androidx.annotation.ColorInt; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -83,6 +87,8 @@ public enum SegmentCategory { MUSIC_OFFTOPIC, }; + public static final String COLOR_DOT_STRING = "⬤"; + public static final float CATEGORY_DEFAULT_OPACITY = 0.7f; private static final Map mValuesMap = new HashMap<>(2 * categoriesWithoutUnsubmitted.length); @@ -324,6 +330,32 @@ public enum SegmentCategory { return title; } + /** + * Creates a {@link SpannableString} that starts with a colored dot followed by the provided text. + */ + private static SpannableString getCategoryColorDotSpan(String text, @ColorInt int color) { + SpannableString dotSpan = new SpannableString(COLOR_DOT_STRING + text); + dotSpan.setSpan(new ForegroundColorSpan(color), 0, 1, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + dotSpan.setSpan(new RelativeSizeSpan(1.5f), 0, 1, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + return dotSpan; + } + + /** + * Returns the category title with a colored dot. + */ + public SpannableString getTitleWithColorDot(@ColorInt int categoryColor) { + return getCategoryColorDotSpan(" " + title, categoryColor); + } + + /** + * Returns the category title with a colored dot. + */ + public SpannableString getTitleWithColorDot() { + return getTitleWithColorDot(color); + } + /** * Gets the skip button text based on segment position. * diff --git a/gradle.properties b/gradle.properties index 0e2be7f81..f6c06f0db 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,4 +3,4 @@ org.gradle.jvmargs = -Xms512M -Xmx2048M org.gradle.parallel = true android.useAndroidX = true kotlin.code.style = official -version = 5.41.0-dev.10 +version = 5.41.0-dev.14 diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/privacy/SanitizeSharingLinksPatch.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/privacy/SanitizeSharingLinksPatch.kt index e0d91a472..616410687 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/privacy/SanitizeSharingLinksPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/privacy/SanitizeSharingLinksPatch.kt @@ -26,7 +26,7 @@ internal fun sanitizeSharingLinksPatch( replaceMusicLinksWithYouTube: Boolean = false ) = bytecodePatch( name = "Sanitize sharing links", - description = "Adds an option to remove the tracking parameter from links you share.", + description = "Adds an option to remove the tracking query parameter from shared links.", ) { block() diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatch.kt index 90ab6f583..104b7b08e 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/HideLayoutComponentsPatch.kt @@ -144,9 +144,9 @@ val hideLayoutComponentsPatch = bytecodePatch( SwitchPreference("revanced_hide_comments_section"), SwitchPreference("revanced_hide_comments_community_guidelines"), SwitchPreference("revanced_hide_comments_create_a_short_button"), + SwitchPreference("revanced_hide_comments_emoji_and_timestamp_buttons"), SwitchPreference("revanced_hide_comments_preview_comment"), SwitchPreference("revanced_hide_comments_thanks_button"), - SwitchPreference("revanced_hide_comments_timestamp_button"), ), sorting = PreferenceScreenPreference.Sorting.UNSORTED, ), diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/video/codecs/DisableVideoCodecsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/video/codecs/DisableVideoCodecsPatch.kt index fd509f573..c5790d148 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/video/codecs/DisableVideoCodecsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/video/codecs/DisableVideoCodecsPatch.kt @@ -19,7 +19,7 @@ private const val EXTENSION_CLASS_DESCRIPTOR = @Suppress("unused") val disableVideoCodecsPatch = bytecodePatch( - name = "disable video codecs", + name = "Disable video codecs", description = "Adds options to disable HDR and VP9 codecs.", ) { dependsOn( diff --git a/patches/src/main/resources/addresources/values-af-rZA/strings.xml b/patches/src/main/resources/addresources/values-af-rZA/strings.xml index 67bf7dc15..6caae78d0 100644 --- a/patches/src/main/resources/addresources/values-af-rZA/strings.xml +++ b/patches/src/main/resources/addresources/values-af-rZA/strings.xml @@ -22,6 +22,8 @@ Second \"item\" text" + + - Dölj kommentarer + Dölj Kommentarer Knappen Kommentarer är dold Knappen Kommentarer visas • Tvinga ursprungligt ljud är inte tillgängligt @@ -1591,7 +1603,7 @@ Om du aktiverar detta kan högre videokvaliteter låsas upp" Klienten är dold i Statistik för nördar Ljudströmmens språk - För att välja ett specifikt ljudspråk, inaktivera \"Tvinga originalspråk för ljud\" + Om du vill välja ett specifikt ljudspråk inaktiverar du \"Tvinga ursprungligt ljudspråk\" Val av strömspråk är inte tillgängligt med Android Studio @@ -1624,28 +1636,28 @@ Om du aktiverar detta kan högre videokvaliteter låsas upp" Kategorifältet visas - Navigationsfältet + Navigeringsfält Dölj eller ändra knappar i navigeringsfältet Dölj Hem Knappen Hem är dold Knappen Hem visas - Dölj Kortfilmer - Klipp-knappen är dold - Klipp-knappen visas + Dölj Samples + Knappen Samples är dold + Knappen Samples visas Dölj Utforska - Utforska-knappen är dold - Utforska-knappen visas + Knappen Utforska är dold + Knappen Utforska visas Dölj Bibliotek - Bibliotek-knappen är dold - Bibliotek-knappen visas + Knappen Bibliotek är dold + Knappen Bibliotek visas Dölj Uppgradera - Uppgradera-knappen är dold - Uppgradera-knappen visas + Knappen Uppgradera är dold + Knappen Uppgradera visas Dölj navigeringsfältet Navigeringsfältet är dolt Navigeringsfältet visas diff --git a/patches/src/main/resources/addresources/values-sw-rKE/strings.xml b/patches/src/main/resources/addresources/values-sw-rKE/strings.xml index 67bf7dc15..6caae78d0 100644 --- a/patches/src/main/resources/addresources/values-sw-rKE/strings.xml +++ b/patches/src/main/resources/addresources/values-sw-rKE/strings.xml @@ -22,6 +22,8 @@ Second \"item\" text" + + "Пункт меню \"Звукова доріжка\" приховано -Для того, щоб пункт меню \"Звукова доріжка\" показувався, змініть клієнт \"Підробки відеопотоків\" на iPadOS" +Для того, щоб пункт меню \"Звукова доріжка\" показувався, змініть клієнт \"Підміни відеопотоків\" на iPadOS" Приховати \"Дивитись у VR\" Пункт меню \"Дивитись у VR\" приховано @@ -1255,19 +1260,19 @@ Second \"item\" text" • Стрічка впорядкована за темами та каналами" - Підробити версію програми - Версію підроблено - Версію не підроблено - "Версія застосунку підробиться на старішу версію YouTube. + Підміна версії застосунку + Версію підмінено + Версію не підмінено + "Версія застосунку буде підмінена на старішу версію YouTube. -Це змінить вигляд і функції додатку, але можуть трапитися невідомі побічні ефекти. +Це змінить вигляд і функції застосунку, але можуть виникнути невідомі побічні ефекти. -Якщо пізніше вимкнути, рекомендується очистити дані застосунку, щоб запобігти помилкам інтерфейсу." - Підробити версію програми на - 20.13.41 - Відновити незгорнуту панель дій відео - 20.05.46 - Відновлення функціональності стенограми - 19.35.36 - Відновлення старих іконок плеєра Shorts - 19.01.34 - Відновлення старих іконок панелі навігації +Якщо пізніше вимкнути цю опцію, рекомендується очистити дані застосунку, щоб уникнути помилок інтерфейсу." + Підмінити версію застосунку на + 20.13.41 - Відновити розгорнуту панель дій відео + 20.05.46 - Відновити функціональність транскрипції + 19.35.36 - Відновити старі іконки плеєра Shorts + 19.01.34 - Відновити старі іконки панелі навігації Змінити початкову сторінку @@ -1442,11 +1447,6 @@ Second \"item\" text" Не вдалося підключитися до постачальника оголошень Закрити - - Увага - Ваша історія переглядів не зберігається.<br><br>Швидше за все, це спричинено блокувальником реклами DNS або мережевим проксі.<br><br>Щоб це виправити, додайте <b>s.youtube.com</b> у білий список блокувальника або вимкніть усі DNS блокувальники та проксі. - Більше не показувати - Увімкнути повторення відео Відео буде повторюватися @@ -1460,14 +1460,14 @@ Second \"item\" text" Повторення відео вимкнено - Підробити розміри пристрою - "Розміри пристрою підроблено + Підміняти розміри пристрою + "Розміри пристрою підмінено -Більш високі якості відео може бути розблоковано, але можуть спостерігатися затримки під час відтворення відео, підвищене споживання енергії та невідомі побічні ефекти" - "Розміри пристрою не підроблено +Можуть стати доступні вищі якості відео, але можлива затримка відтворення, швидше розряджання батареї та інші невідомі побічні ефекти" + "Розміри пристрою не підмінено Ввімкнення цієї опції може розблокувати вищі якості відео" - Увімкнення цієї опції може викликати затримки під час відтворення відео, підвищене споживання акумулятора та невідомі побічні ефекти. + Увімкнення цієї опції може спричинити затримки відтворення відео, швидше розряджання батареї та інші невідомі побічні ефекти. Тактильна віддача @@ -1503,7 +1503,7 @@ Second \"item\" text" Використовується оригінальна мова звукової доріжки Використовується стандартна (регіональна) мова звукової доріжки - Щоб використовувати цю функцію, змініть клієнт \"Підробки відеопотоків\" на будь-який клієнт, окрім Android Studio + Щоб використовувати цю функцію, змініть клієнт \"Підміни відеопотоків\" на будь-який клієнт, окрім Android Studio @@ -1561,10 +1561,22 @@ Second \"item\" text" Стандартна швидкість відтворення Швидкість змінена на %s - + Вимкнути HDR відео HDR відео вимкнено HDR відео увімкнено + Примусово AVC (H.264) + Відеокодек примусово встановлено на AVC (H.264) + Відеокодек визначається автоматично + "Переваги: +• Може покращити час роботи батареї +• Може відновити відсутні роздільності відео на старих пристроях + +Обмеження: +• Максимальна роздільність – 1080p +• Відтворення відео буде використовувати більше інтернет-даних, ніж VP9 або AV1 +• HDR-відео не використовуватимуть AVC +• Деякі пристрої не можуть примусово використовувати AVC" Показувати розширене меню якості відео @@ -1577,15 +1589,15 @@ Second \"item\" text" Перемотку пересуванням вимкнено\n\nУвімкнено поведінку нового інтерфейсу прискорення \"2х >>\" при утриманні на екрані - Побічні ефекти підробки + Побічні ефекти підміни • Експериментальний клієнт, який може припинити працювати будь-якої миті • Відео може зупинитися на 1:00, або може бути недоступним у деяких регіонах • Пункт меню \"Звукова доріжка\" відсутній - • Відсутній відеокодек AV1 + • Відеокодек AV1 відсутній • Пункт меню \"Стабілізувати гучність\" недоступний • Відео для дітей можуть не відтворюватися, якщо вийти з облікового запису або перейти в анонімний режим - • \"Примусово оригінальна мова звукової доріжки\" недоступна + • Примусово оригінальна мова звукової доріжки\" недоступна Показувати у \"Статистиці для сисадмінів\" Тип клієнта відображається у вікні \"Статистика для сисадмінів\" Тип клієнта приховано у вікні \"Статистика для сисадмінів\" diff --git a/patches/src/main/resources/addresources/values-ur-rIN/strings.xml b/patches/src/main/resources/addresources/values-ur-rIN/strings.xml index 67bf7dc15..6caae78d0 100644 --- a/patches/src/main/resources/addresources/values-ur-rIN/strings.xml +++ b/patches/src/main/resources/addresources/values-ur-rIN/strings.xml @@ -22,6 +22,8 @@ Second \"item\" text" + +