Skip to content

Commit 918f047

Browse files
authored
chore: Merge branch dev to main (#6282)
2 parents b9bc7e3 + f1a9537 commit 918f047

File tree

120 files changed

+3424
-1790
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

120 files changed

+3424
-1790
lines changed

CHANGELOG.md

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,135 @@
1+
# [5.47.0-dev.18](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.17...v5.47.0-dev.18) (2025-12-18)
2+
3+
4+
### Features
5+
6+
* **Disney+ - SkipAds:** Add other package names the patch is compatible with ([#6372](https://github.com/ReVanced/revanced-patches/issues/6372)) ([1f4f252](https://github.com/ReVanced/revanced-patches/commit/1f4f252c81e9a89267f6e37548e66027b1bc1a1a))
7+
8+
# [5.47.0-dev.17](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.16...v5.47.0-dev.17) (2025-12-18)
9+
10+
11+
### Bug Fixes
12+
13+
* **Reddit - Hide ads:** Update patch for new versions of Reddit ([#6342](https://github.com/ReVanced/revanced-patches/issues/6342)) ([f8bd123](https://github.com/ReVanced/revanced-patches/commit/f8bd1239cc0f0bd1c2dca39f846951bf512891e3))
14+
15+
# [5.47.0-dev.16](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.15...v5.47.0-dev.16) (2025-12-15)
16+
17+
18+
### Bug Fixes
19+
20+
* **Lightroom:** Add `Disable version check` patch to fix opening the app ([#6315](https://github.com/ReVanced/revanced-patches/issues/6315)) ([018d176](https://github.com/ReVanced/revanced-patches/commit/018d176914a06a30e9007a3eb2e6b0f459078413))
21+
22+
23+
### Features
24+
25+
* **IdAustria - Remove device integrity check:** Update patch to work with latest version ([#6360](https://github.com/ReVanced/revanced-patches/issues/6360)) ([0ea3491](https://github.com/ReVanced/revanced-patches/commit/0ea3491227fc50c03555d43d3fec78eb82906b26))
26+
27+
# [5.47.0-dev.15](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.14...v5.47.0-dev.15) (2025-12-13)
28+
29+
30+
### Bug Fixes
31+
32+
* **YouTube - Hide layout components:** Fix "Hide Subscribe button" in channel page not working ([#6363](https://github.com/ReVanced/revanced-patches/issues/6363)) ([ded8370](https://github.com/ReVanced/revanced-patches/commit/ded83702077701aac8a8749d71bf7376427f37d6))
33+
34+
# [5.47.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.13...v5.47.0-dev.14) (2025-12-13)
35+
36+
37+
### Bug Fixes
38+
39+
* **Spotify:** Make patches work with latest versions again ([#6359](https://github.com/ReVanced/revanced-patches/issues/6359)) ([34830ba](https://github.com/ReVanced/revanced-patches/commit/34830ba63b436146064f0f89f948d51cd0cb9146))
40+
41+
# [5.47.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.12...v5.47.0-dev.13) (2025-12-10)
42+
43+
44+
### Features
45+
46+
* **Peacock TV:** Add `Hide ads` patch ([#6348](https://github.com/ReVanced/revanced-patches/issues/6348)) ([847ee18](https://github.com/ReVanced/revanced-patches/commit/847ee189a971e6d4a99823998569f8e561b8319c))
47+
48+
# [5.47.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.11...v5.47.0-dev.12) (2025-12-08)
49+
50+
51+
### Features
52+
53+
* **YouTube - Hide layout components:** Add "Hide Join button" and "Hide Subscribe button" options for channel page ([#6345](https://github.com/ReVanced/revanced-patches/issues/6345)) ([02831a6](https://github.com/ReVanced/revanced-patches/commit/02831a6069fc30ffa3a87f8e4de653d003a2187e))
54+
55+
# [5.47.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.10...v5.47.0-dev.11) (2025-12-08)
56+
57+
58+
### Features
59+
60+
* **Disney+:** Add `Skip ads` patch ([#6343](https://github.com/ReVanced/revanced-patches/issues/6343)) ([6bd7dca](https://github.com/ReVanced/revanced-patches/commit/6bd7dca75bd2ea335a596aa93a8b767d39be5f83))
61+
62+
# [5.47.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.9...v5.47.0-dev.10) (2025-12-08)
63+
64+
65+
### Features
66+
67+
* **YouTube - Hide Shorts components:** Add "Hide auto-dubbed label" and "Hide live preview" options ([#6334](https://github.com/ReVanced/revanced-patches/issues/6334)) ([a7c220a](https://github.com/ReVanced/revanced-patches/commit/a7c220a4aea93ea7ae7005b5760443d7571c4228))
68+
69+
# [5.47.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.8...v5.47.0-dev.9) (2025-12-08)
70+
71+
72+
### Features
73+
74+
* **YouTube - Hide layout components:** Add "Hide cell divider", "Hide featured links", and "Hide featured videos" options ([#6335](https://github.com/ReVanced/revanced-patches/issues/6335)) ([a5d197b](https://github.com/ReVanced/revanced-patches/commit/a5d197b9775b98d7a37bfdee9e5f726d5e04d8cf))
75+
76+
# [5.47.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.7...v5.47.0-dev.8) (2025-12-08)
77+
78+
79+
### Features
80+
81+
* **Instagram:** Add `Disable Reels scrolling` patch ([#6317](https://github.com/ReVanced/revanced-patches/issues/6317)) ([0928dcd](https://github.com/ReVanced/revanced-patches/commit/0928dcd00dc2a9c1eef9a23c1e26ff5dc9ee670a))
82+
* **ProtonVPN:** Add `Remove delay` patch ([#6326](https://github.com/ReVanced/revanced-patches/issues/6326)) ([bbd8932](https://github.com/ReVanced/revanced-patches/commit/bbd8932b2e740aff96ba047332e541bff3e09436))
83+
84+
# [5.47.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.6...v5.47.0-dev.7) (2025-12-03)
85+
86+
87+
### Features
88+
89+
* **Spoof SIM provider:** Spoof additional TelephonyManager methods ([#6293](https://github.com/ReVanced/revanced-patches/issues/6293)) ([ac583d4](https://github.com/ReVanced/revanced-patches/commit/ac583d40d0f4c0e6544e3661ff3e82a25912f2b0))
90+
91+
# [5.47.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.5...v5.47.0-dev.6) (2025-11-24)
92+
93+
94+
### Features
95+
96+
* **Letterboxd:** Add `Hide ads` patch ([#6309](https://github.com/ReVanced/revanced-patches/issues/6309)) ([0af0ee9](https://github.com/ReVanced/revanced-patches/commit/0af0ee92c48bb2ffc332197e05439e20c5c05d83))
97+
98+
# [5.47.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.4...v5.47.0-dev.5) (2025-11-13)
99+
100+
101+
### Bug Fixes
102+
103+
* **YouTube - Hide player flyout menu items:** Allow hiding audio menu with 'Android No SDK' client type ([9495cf4](https://github.com/ReVanced/revanced-patches/commit/9495cf49ef8a872be64de6c971c1919b4b9a8720))
104+
105+
# [5.47.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.3...v5.47.0-dev.4) (2025-11-12)
106+
107+
108+
### Bug Fixes
109+
110+
* **YouTube - Sanitize sharing links:** Handle non hierarchical urls ([654d091](https://github.com/ReVanced/revanced-patches/commit/654d091e650cda37650b57cbf3ba6f1cdd6d47d3))
111+
112+
# [5.47.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.2...v5.47.0-dev.3) (2025-11-12)
113+
114+
115+
### Features
116+
117+
* **Instagram:** Add `Disable auto story flipping` patch ([#6262](https://github.com/ReVanced/revanced-patches/issues/6262)) ([2f0de15](https://github.com/ReVanced/revanced-patches/commit/2f0de15e67e4f99ed6ecdc136d04cceb23b0d069))
118+
119+
# [5.47.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.47.0-dev.1...v5.47.0-dev.2) (2025-11-12)
120+
121+
122+
### Bug Fixes
123+
124+
* **Instagram - Disable signature check:** Change patch to default excluded ([#6283](https://github.com/ReVanced/revanced-patches/issues/6283)) ([bb745b5](https://github.com/ReVanced/revanced-patches/commit/bb745b555b3808b7679c5995319aa365630fbd76))
125+
126+
# [5.47.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.46.0...v5.47.0-dev.1) (2025-11-12)
127+
128+
129+
### Features
130+
131+
* **Instagram:** Add `Anonymous story viewing` patch ([#6263](https://github.com/ReVanced/revanced-patches/issues/6263)) ([94ae84a](https://github.com/ReVanced/revanced-patches/commit/94ae84ad0fc3a9197c82d5356301d464730c3b17))
132+
1133
# [5.46.0](https://github.com/ReVanced/revanced-patches/compare/v5.45.0...v5.46.0) (2025-11-10)
2134

3135

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,9 @@ Thank you for considering contributing to ReVanced Patches. You can find the con
9797

9898
To build ReVanced Patches, you can follow the [ReVanced documentation](https://github.com/ReVanced/revanced-documentation).
9999

100-
## 📜 Licence
100+
## 📜 License
101101

102102
ReVanced Patches is licensed under the GPLv3 license. Please see the [license file](LICENSE) for more information.
103103
[tl;dr](https://www.tldrlegal.com/license/gnu-general-public-license-v3-gpl-3) you may copy, distribute and modify ReVanced Patches as long as you track changes/dates in source files.
104104
Any modifications to ReVanced Patches must also be made available under the GPL,
105-
along with build & install instructions.
105+
along with build & install instructions.

extensions/shared/library/src/main/java/app/revanced/extension/shared/privacy/LinkSanitizer.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,15 @@ public String sanitizeUrlString(String url) {
3535

3636
public Uri sanitizeUri(Uri uri) {
3737
try {
38+
String scheme = uri.getScheme();
39+
if (scheme == null || !(scheme.equals("http") || scheme.equals("https"))) {
40+
// Opening YouTube share sheet 'other' option passes the video title as a URI.
41+
// Checking !uri.isHierarchical() works for all cases, except if the
42+
// video title starts with / and then it's hierarchical but still an invalid URI.
43+
Logger.printDebug(() -> "Ignoring uri: " + uri);
44+
return uri;
45+
}
46+
3847
Uri.Builder builder = uri.buildUpon().clearQuery();
3948

4049
if (!parametersToRemove.isEmpty()) {

extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/Setting.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,23 @@ public List<Setting<?>> getParentSettings() {
5858
};
5959
}
6060

61+
/**
62+
* Availability based on a single parent setting being disabled.
63+
*/
64+
public static Availability parentNot(BooleanSetting parent) {
65+
return new Availability() {
66+
@Override
67+
public boolean isAvailable() {
68+
return !parent.get();
69+
}
70+
71+
@Override
72+
public List<Setting<?>> getParentSettings() {
73+
return Collections.singletonList(parent);
74+
}
75+
};
76+
}
77+
6178
/**
6279
* Availability based on all parents being enabled.
6380
*/

extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/SpoofVideoStreamsPatch.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public static ClientType getPreferredClient() {
7272
public static boolean spoofingToClientWithNoMultiAudioStreams() {
7373
return isPatchIncluded()
7474
&& SPOOF_STREAMING_DATA
75-
&& preferredClient != ClientType.IPADOS;
75+
&& !preferredClient.supportsMultiAudioTracks;
7676
}
7777

7878
/**

extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/DescriptionComponentsFilter.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,14 @@ public DescriptionComponentsFilter() {
4444
"video_attributes_section"
4545
);
4646

47-
final StringFilterGroup featuredSection = new StringFilterGroup(
48-
Settings.HIDE_FEATURED_SECTION,
49-
// "media_lockup", "structured_description_video_lockup"
50-
"compact_infocard"
47+
final StringFilterGroup featuredLinksSection = new StringFilterGroup(
48+
Settings.HIDE_FEATURED_LINKS_SECTION,
49+
"media_lockup"
50+
);
51+
52+
final StringFilterGroup featuredVideosSection = new StringFilterGroup(
53+
Settings.HIDE_FEATURED_VIDEOS_SECTION,
54+
"structured_description_video_lockup"
5155
);
5256

5357
final StringFilterGroup podcastSection = new StringFilterGroup(
@@ -76,7 +80,7 @@ public DescriptionComponentsFilter() {
7680
);
7781

7882
subscribeButton = new StringFilterGroup(
79-
Settings.HIDE_DESCRIPTION_SUBSCRIBE_BUTTON,
83+
Settings.HIDE_SUBSCRIBE_BUTTON,
8084
"subscribe_button"
8185
);
8286

@@ -110,7 +114,8 @@ public DescriptionComponentsFilter() {
110114
aiGeneratedVideoSummarySection,
111115
askSection,
112116
attributesSection,
113-
featuredSection,
117+
featuredLinksSection,
118+
featuredVideosSection,
114119
horizontalShelf,
115120
howThisWasMadeSection,
116121
hypePoints,

extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LayoutComponentsFilter.java

Lines changed: 41 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,26 @@
2121

2222
@SuppressWarnings("unused")
2323
public final class LayoutComponentsFilter extends Filter {
24-
private static final StringTrieSearch mixPlaylistsExceptions = new StringTrieSearch(
24+
private static final StringTrieSearch mixPlaylistsContextExceptions = new StringTrieSearch(
2525
"V.ED", // Playlist browse id.
2626
"java.lang.ref.WeakReference"
2727
);
28-
private static final ByteArrayFilterGroup mixPlaylistsExceptions2 = new ByteArrayFilterGroup(
28+
private static final ByteArrayFilterGroup mixPlaylistsBufferExceptions = new ByteArrayFilterGroup(
2929
null,
30-
"cell_description_body"
30+
"cell_description_body",
31+
"channel_profile"
3132
);
3233
private static final ByteArrayFilterGroup mixPlaylists = new ByteArrayFilterGroup(
3334
null,
3435
"&list="
3536
);
3637

38+
private static final String PAGE_HEADER_PATH = "page_header.e";
39+
3740
private final StringTrieSearch exceptions = new StringTrieSearch();
3841
private final StringFilterGroup communityPosts;
3942
private final StringFilterGroup surveys;
43+
private final StringFilterGroup subscribeButton;
4044
private final StringFilterGroup notifyMe;
4145
private final StringFilterGroup singleItemInformationPanel;
4246
private final StringFilterGroup expandableMetadata;
@@ -67,8 +71,14 @@ public LayoutComponentsFilter() {
6771
"chips_shelf"
6872
);
6973

74+
final var visualSpacer = new StringFilterGroup(
75+
Settings.HIDE_VISUAL_SPACER,
76+
"cell_divider"
77+
);
78+
7079
addIdentifierCallbacks(
71-
chipsShelf
80+
chipsShelf,
81+
visualSpacer
7282
);
7383

7484
// Paths.
@@ -255,19 +265,28 @@ public LayoutComponentsFilter() {
255265
channelProfile = new StringFilterGroup(
256266
null,
257267
"channel_profile.e",
258-
"page_header.e"
268+
PAGE_HEADER_PATH
259269
);
260270
channelProfileBuffer = new ByteArrayFilterGroupList();
261271
channelProfileBuffer.addAll(new ByteArrayFilterGroup(
262-
Settings.HIDE_VISIT_STORE_BUTTON,
263-
"header_store_button"
272+
Settings.HIDE_STORE_BUTTON,
273+
"store_button"
264274
),
265275
new ByteArrayFilterGroup(
266-
Settings.HIDE_VISIT_COMMUNITY_BUTTON,
276+
Settings.HIDE_COMMUNITY_BUTTON,
267277
"community_button"
278+
),
279+
new ByteArrayFilterGroup(
280+
Settings.HIDE_JOIN_BUTTON,
281+
"sponsor_button"
268282
)
269283
);
270284

285+
subscribeButton = new StringFilterGroup(
286+
Settings.HIDE_SUBSCRIBE_BUTTON_IN_CHANNEL_PAGE,
287+
"subscribe_button"
288+
);
289+
271290
horizontalShelves = new StringFilterGroup(
272291
Settings.HIDE_HORIZONTAL_SHELVES,
273292
"horizontal_video_shelf.e",
@@ -307,6 +326,7 @@ public LayoutComponentsFilter() {
307326
quickActions,
308327
relatedVideos,
309328
singleItemInformationPanel,
329+
subscribeButton,
310330
subscribersCommunityGuidelines,
311331
subscriptionsChipBar,
312332
surveys,
@@ -337,6 +357,10 @@ boolean isFiltered(String identifier, String path, byte[] buffer,
337357
return channelProfileBuffer.check(buffer).isFiltered();
338358
}
339359

360+
if (matchedGroup == subscribeButton) {
361+
return path.startsWith(PAGE_HEADER_PATH);
362+
}
363+
340364
if (matchedGroup == communityPosts && NavigationBar.isBackButtonVisible()) {
341365
// Allow community posts on channel profile page,
342366
// or if viewing an individual channel in the feed.
@@ -380,17 +404,15 @@ public static boolean filterMixPlaylists(Object conversionContext, @Nullable fin
380404
return false;
381405
}
382406

383-
// Prevent playlist items being hidden, if a mix playlist is present in it.
384-
if (mixPlaylistsExceptions.matches(conversionContext.toString())) {
385-
return false;
386-
}
387-
388-
// Prevent hiding the description of some videos accidentally.
389-
if (mixPlaylistsExceptions2.check(bytes).isFiltered()) {
390-
return false;
391-
}
392-
393-
if (mixPlaylists.check(bytes).isFiltered()) {
407+
if (mixPlaylists.check(bytes).isFiltered()
408+
// Prevent hiding the description of some videos accidentally.
409+
&& !mixPlaylistsBufferExceptions.check(bytes).isFiltered()
410+
// Prevent playlist items being hidden, if a mix playlist is present in it.
411+
// Check last since it requires creating a context string.
412+
//
413+
// FIXME: The conversion context passed in does not always generate a valid toString.
414+
// This string check may no longer be needed, or the patch may be broken.
415+
&& !mixPlaylistsContextExceptions.matches(conversionContext.toString())) {
394416
Logger.printDebug(() -> "Filtered mix playlist");
395417
return true;
396418
}

extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlayerFlyoutMenuItemsFilter.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,9 @@
1212
public class PlayerFlyoutMenuItemsFilter extends Filter {
1313

1414
public static final class HideAudioFlyoutMenuAvailability implements Setting.Availability {
15-
private static final boolean AVAILABLE_ON_LAUNCH = !SpoofVideoStreamsPatch.spoofingToClientWithNoMultiAudioStreams();
16-
1715
@Override
1816
public boolean isAvailable() {
19-
// Check conditions of launch and now. Otherwise if spoofing is changed
20-
// without a restart the setting will show as available when it's not.
21-
return AVAILABLE_ON_LAUNCH && !SpoofVideoStreamsPatch.spoofingToClientWithNoMultiAudioStreams();
17+
return !SpoofVideoStreamsPatch.spoofingToClientWithNoMultiAudioStreams();
2218
}
2319

2420
@Override

0 commit comments

Comments
 (0)