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"
- Побічні ефекти підробки
+ Побічні ефекти підміни
• Експериментальний клієнт, який може припинити працювати будь-якої миті
• Відео може зупинитися на 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"
+
+