Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(YouTube - Hide layout components): Filter home/search results by keywords #2853

Merged

Conversation

LisoUseInAIKyrios
Copy link
Contributor

@LisoUseInAIKyrios LisoUseInAIKyrios commented Mar 8, 2024

Allows hiding videos from the feed/search based on keywords.

Keywords can be any text that appears in video titles, or the channel title of a YouTube creator.

This patch is not a replacement for hiding individual channels in the home feed, because that can already be done in YouTube (tap three dots on a video, then "Don't recommend channel"). This patch is to hide topics from the home feed and search, and to hide videos from specific channels from the search results.

Spacing and punctuation is important for keywords. If you want to hide Mr Beast from your search, then you need to add both Mr Beast (name used in video titles) and MrBeast (his channel name).

Screenshots

Search results unfiltered

Search results with keyword filters 'MrBeast' and 'Mr Beast'

Limitations

Shorts can still show up in the search results

If using a channel name as a keyword filter, then most Shorts from that channel will still show up in search results. This is because Shorts do not show the channel name, so the filter will not catch them.

Some UI layout residue will remain

Some extra UI components around a search result may not be hidden, such as the video chapter preview that appears below some search results.

Case sensitive keywords

Keywords are case sensitive, so if you use a filter of Mr Beast it will not filter any videos with titles that contain odd casing such as mr BEAst. This patch automatically includes common case variations, and entering Mr Beast automatically filters mr beast and MR BEAST. But if a keyword has unusual casing then you must enter the exact casing (ie: LeBlanc, TikTok).

Searching for a keyword phrase can show no search results

This is because the protobuffer for each search result includes your search text. So if you keyword filter Mr Beast and then search for Mr Beast, the patch will hide every search result. If you still want to search for a specific phrase you can get around this by searching for the same phrase but with odd casing -- ie: search for mr BEAst.

In a similar limitation, certain words cannot be used as filters and adding any of them will always hide all videos. These words includes google, youtube, video, android, avatar, and any other buffer text found in every video. This is because these words are used for layout components or are found in video data (such as googlevideo.com/initplayback used to start video playback). This patch checks for many of these restricted words, but it is not an exhaustive check and some keywords can still hide everything.

@LisoUseInAIKyrios
Copy link
Contributor Author

Closes
#1393
#1104

@LisoUseInAIKyrios
Copy link
Contributor Author

I initially thought performance might be an issue, but it appears performance is just fine.

Searching the protobuffer for each search result takes less than 1ms, which is too insignificant to make any difference.

@MarcaDian
Copy link
Contributor

MarcaDian commented Mar 8, 2024

Hello. Why i cant filter this channel from search?
I see that the channel avatar just disappeared in the search results, but not the video.
the filter only works by keywords, but I can't filter specifically by the channel link.

Screenshot_2024-03-08-13-23-08-945_app revanced android youtube
Screenshot_2024-03-08-13-23-39-615-edit_app revanced android youtube

@LisoUseInAIKyrios
Copy link
Contributor Author

LisoUseInAIKyrios commented Mar 8, 2024

Hello. Why i cant filter this channel from search?

Because you need to use the channel title name, and not the @ name.

channel title

@LisoUseInAIKyrios
Copy link
Contributor Author

Unicode is now supported in both keyword and custom filters.

I realized the byte array comparison is unaffected by unicode hurdles such as surrogate or combining characters. It's just a plain byte to byte comparison and it does not care or is affected by these issues.

@MarcaDian
Copy link
Contributor

MarcaDian commented Mar 8, 2024

can you add sorting = Sorting.UNSORTED, ? same issue like color seekbar

Edit: At first glance, everything works, in Unicode

@Leenkss
Copy link

Leenkss commented Mar 11, 2024

Hi, can you add buttons for automatic hide videos or channels name from searching ?
Pic from pc
���+��12���

@LisoUseInAIKyrios
Copy link
Contributor Author

can you add buttons for automatic hide videos or channels name from searching?

A flyout menu item to hide a chanel would be useful.

But as far as I know, adding layout items to litho has not yet been done by any patch. Someone would need to figure out how to add content to an existing layout and add a callback when the item is tapped.

@oSumAtrIX
Copy link
Member

It looks like, at least for short carousels, if a keyword is matched the entire carousel is blocked (example "beast"):
image
image

@LisoUseInAIKyrios
Copy link
Contributor Author

LisoUseInAIKyrios commented Mar 11, 2024

It looks like, at least for short carousels, if a keyword is matched the entire carousel is blocked

What is the full path for the carousel? Maybe the individual videos in the carousel can be filtered instead of the entire parent component.

Edit: the full path is shorts_shelf.eml|123|CellType|shorts_shelf_carousel.eml|123|CollectionType|shorts_lockup_cell.eml
and it it now filters out the individual Shorts from the carousel.

@LisoUseInAIKyrios
Copy link
Contributor Author

It looks like, at least for short carousels, if a keyword is matched the entire carousel is blocked (example "beast").

The carousel and Shorts shelf as a whole are not hidden if any of the enclosed Short are filtered. In that screenshot I think the entire group of Shorts was filtered away because every short had a title that matched a keyword.

The carousel Shorts path is the same for both search and the subscription feed, and this means it filters carousel Shorts in both search and the subscription tab (which may or may not be what the user wants).

I think the ideal fix is to add hooks to figure out what navigation tab is active, and then add setting switches to filter home/subscription/search items. The same hooks would also be useful for Alternatively thumbnails to do the same (apply only to home/subscriptions/search).

@oSumAtrIX
Copy link
Member

I think the entire group of Shorts was filtered away because every short had a title that matched a keyword.

To note, in the screenshot I added, the title of the first Short did not match the keyword, but likely the buffer string contained it. Nothing that can be done here though.

@LisoUseInAIKyrios LisoUseInAIKyrios force-pushed the filter_keyword_content branch 2 times, most recently from 0534cfc to f0a895d Compare March 21, 2024 12:16
@MarcaDian
Copy link
Contributor

MarcaDian commented Mar 24, 2024

After last commit. Also force pushed from filter_keyword_content branch to my, same error 🙃
Edit: this error maybe apear after 0de51bf

ReVanced Manager: 1.19.4-dev.2
Model: M2004J19C
Android version: 12
Supported architectures: arm64-v8a, armeabi-v7a, armeabi
Root permissions: No

- Patch Info
App: com.google.android.youtube v19.09.38 (Suggested: 19.08.36)
Patches version: test8
Patches added: Default
Patches removed: Announcements, Enable debugging
Default patch options changed: None

- Settings
Allow changing patch selection: true
Version compatibility check: false
Show universal patches: false
Patches source: MarcaDian/revanced-patches-old
Integration source: MarcaDian/revanced-integrations-old

- Logs
Reading APK
Decoding app manifest
Loading patches
Merging integrations
Deleting existing temporary files directory
Decoding resources
Executing patches
Applied 59 patches
Hide layout components failed: app.revanced.patcher.patch.PatchException: 'Hide layout components' depends on 'NavigationBarHookPatch' that raised an exception:
app.revanced.patcher.patch.PatchException: Failed to resolve NavigationBarHookCallbackFingerprint
	at app.revanced.util.BytecodeUtilsKt.getException(BytecodeUtils.kt:27)
	at app.revanced.util.BytecodeUtilsKt.resultOrThrow(BytecodeUtils.kt:19)
	at app.revanced.patches.youtube.misc.navigation.NavigationBarHookPatch.execute(NavigationBarHookPatch.kt:98)
	at app.revanced.patches.youtube.misc.navigation.NavigationBarHookPatch.execute(NavigationBarHookPatch.kt:25)
	at app.revanced.patcher.Patcher$apply$1.invokeSuspend$executePatch(Unknown Source:190)
	at app.revanced.patcher.Patcher$apply$1.invokeSuspend$executePatch(Unknown Source:91)
	at app.revanced.patcher.Patcher$apply$1.invokeSuspend(Unknown Source:292)
	at app.revanced.patcher.Patcher$apply$1.invoke(SourceFile:1)
	at app.revanced.patcher.Patcher$apply$1.invoke(SourceFile:2)
	at b6.f.b(Unknown Source:2)
	at b6.a.a(Unknown Source:71)
	at app.revanced.manager.flutter.MainActivity$runPatcher$1$patcherResult$1$2.invokeSuspend(Unknown Source:76)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(Unknown Source:11)
	at y5.o0.run(Unknown Source:93)
	at y5.u0.P(Unknown Source:46)
	at y5.e.t0(Unknown Source:23)
	at y5.h.a(Unknown Source:73)
	at y5.g.c(Unknown Source:0)
	at y5.h.b(Unknown Source:6)
	at y5.g.d(Unknown Source:0)
	at app.revanced.manager.flutter.MainActivity.runPatcher$lambda$34(Unknown Source:470)
	at app.revanced.manager.flutter.MainActivity.k(Unknown Source:0)
	at app.revanced.manager.flutter.f.run(Unknown Source:20)
	at java.lang.Thread.run(Thread.java:920)

	at app.revanced.patcher.Patcher$apply$1.invokeSuspend$executePatch(Unknown Source:148)
	at app.revanced.patcher.Patcher$apply$1.invokeSuspend(Unknown Source:292)
	at app.revanced.patcher.Patcher$apply$1.invoke(SourceFile:1)
	at app.revanced.patcher.Patcher$apply$1.invoke(SourceFile:2)
	at b6.f.b(Unknown Source:2)
	at b6.a.a(Unknown Source:71)
	at app.revanced.manager.flutter.MainActivity$runPatcher$1$patcherResult$1$2.invokeSuspend(Unknown Source:76)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(Unknown Source:11)
	at y5.o0.run(Unknown Source:93)
	at y5.u0.P(Unknown Source:46)
	at y5.e.t0(Unknown Source:23)
	at y5.h.a(Unknown Source:73)
	at y5.g.c(Unknown Source:0)
	at y5.h.b(Unknown Source:6)
	at y5.g.d(Unknown Source:0)
	at app.revanced.manager.flutter.MainActivity.runPatcher$lambda$34(Unknown Source:470)
	at app.revanced.manager.flutter.MainActivity.k(Unknown Source:0)
	at app.revanced.manager.flutter.f.run(Unknown Source:20)
	at java.lang.Thread.run(Thread.java:920)
Navigation buttons failed: app.revanced.patcher.patch.PatchException: 'Navigation buttons' depends on 'NavigationBarHookPatch' that raised an exception:
app.revanced.patcher.patch.PatchException: 'NavigationBarHookPatch' did not succeed previously
	at app.revanced.patcher.Patcher$apply$1.invokeSuspend$executePatch(Unknown Source:45)
	at app.revanced.patcher.Patcher$apply$1.invokeSuspend$executePatch(Unknown Source:91)
	at app.revanced.patcher.Patcher$apply$1.invokeSuspend(Unknown Source:292)
	at app.revanced.patcher.Patcher$apply$1.invoke(SourceFile:1)
	at app.revanced.patcher.Patcher$apply$1.invoke(SourceFile:2)
	at b6.f.b(Unknown Source:2)
	at b6.a.a(Unknown Source:71)
	at app.revanced.manager.flutter.MainActivity$runPatcher$1$patcherResult$1$2.invokeSuspend(Unknown Source:76)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(Unknown Source:11)
	at y5.o0.run(Unknown Source:93)
	at y5.u0.P(Unknown Source:46)
	at y5.e.t0(Unknown Source:23)
	at y5.h.a(Unknown Source:73)
	at y5.g.c(Unknown Source:0)
	at y5.h.b(Unknown Source:6)
	at y5.g.d(Unknown Source:0)
	at app.revanced.manager.flutter.MainActivity.runPatcher$lambda$34(Unknown Source:470)
	at app.revanced.manager.flutter.MainActivity.k(Unknown Source:0)
	at app.revanced.manager.flutter.f.run(Unknown Source:20)
	at java.lang.Thread.run(Thread.java:920)

	at app.revanced.patcher.Patcher$apply$1.invokeSuspend$executePatch(Unknown Source:148)
	at app.revanced.patcher.Patcher$apply$1.invokeSuspend(Unknown Source:292)
	at app.revanced.patcher.Patcher$apply$1.invoke(SourceFile:1)
	at app.revanced.patcher.Patcher$apply$1.invoke(SourceFile:2)
	at b6.f.b(Unknown Source:2)
	at b6.a.a(Unknown Source:71)
	at app.revanced.manager.flutter.MainActivity$runPatcher$1$patcherResult$1$2.invokeSuspend(Unknown Source:76)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(Unknown Source:11)
	at y5.o0.run(Unknown Source:93)
	at y5.u0.P(Unknown Source:46)
	at y5.e.t0(Unknown Source:23)
	at y5.h.a(Unknown Source:73)
	at y5.g.c(Unknown Source:0)
	at y5.h.b(Unknown Source:6)
	at y5.g.d(Unknown Source:0)
	at app.revanced.manager.flutter.MainActivity.runPatcher$lambda$34(Unknown Source:470)
	at app.revanced.manager.flutter.MainActivity.k(Unknown Source:0)
	at app.revanced.manager.flutter.f.run(Unknown Source:20)
	at java.lang.Thread.run(Thread.java:920)
Compiling patched dex files
Compiled 8 dex files
Compiling modified resources
Aligning APK
Signing APK
Patched APK

@oSumAtrIX
Copy link
Member

Nothing that can cause your exception has been changed

@LisoUseInAIKyrios
Copy link
Contributor Author

After last commit. Also force pushed from filter_keyword_content branch to my, same error

It is patching correctly for me. The failing fingerprint is for an Integrations method.

Verify you are building with the integrations branch for this PR.

@oSumAtrIX oSumAtrIX self-requested a review March 26, 2024 03:55
@LisoUseInAIKyrios LisoUseInAIKyrios merged commit 5916204 into ReVanced:dev Mar 27, 2024
2 checks passed
@LisoUseInAIKyrios LisoUseInAIKyrios deleted the filter_keyword_content branch March 27, 2024 07:27
revanced-bot pushed a commit that referenced this pull request Mar 27, 2024
# [4.4.0-dev.14](v4.4.0-dev.13...v4.4.0-dev.14) (2024-03-27)

### Features

* **YouTube - Hide layout components:** Filter home/search results by keywords ([#2853](#2853)) ([5916204](5916204))
@MarcaDian

This comment was marked as resolved.

@LisoUseInAIKyrios

This comment was marked as resolved.

revanced-bot pushed a commit that referenced this pull request Mar 27, 2024
# [4.4.0](v4.3.0...v4.4.0) (2024-03-27)

### Bug Fixes

* **TikTok:** Hook application context earlier to prevent crash ([#2893](#2893)) ([395ccda](395ccda))
* **YouTube - Client spoof:** Spoof all user agents ([44a8a13](44a8a13))
* **YouTube - Downloads:** Use new task context ([#2841](#2841)) ([6d88cb4](6d88cb4))
* **YouTube - Hide ads:** Prevent app crash if hiding fullscreen ads is not possible ([#2910](#2910)) ([9f50470](9f50470))
* **YouTube Music:** Fix compatibility with latest versions ([#2924](#2924)) ([8378c84](8378c84))
* **YouTube:** Fix video playback by switching to ReVanced GmsCore vendor ([#2907](#2907)) ([33ea122](33ea122))
* **YouTube:** Move setting to correct screen ([a16eda8](a16eda8))

### Features

* **Instagram - Hide timeline ads:** Make compatible with latest versions ([a212f29](a212f29))
* **Mi Fitness:** Add `Force English locale` and `Fix login` patch ([#2734](#2734)) ([7a25791](7a25791))
* **Sync for Lemmy:** Add `Disable ads` patch ([#2872](#2872)) ([0785819](0785819))
* **YouTube - Downloads:** Use external downloader when selecting 'Download' in home feed flyout menu ([#2881](#2881)) ([10afc8c](10afc8c))
* **YouTube - External downloader:** Add ability to use in-app download button ([d900011](d900011))
* **YouTube - Hide layout components:** Filter home/search results by keywords ([#2853](#2853)) ([5916204](5916204))
* **YouTube - Hide Shorts components:** Hide like and dislike buttons ([2df0892](2df0892))
* **YouTube - Hide Shorts components:** Hide sound metadata label ([ea7d1e0](ea7d1e0))
* **YouTube - Hide Shorts components:** Hide title and full video link label ([e7b64e1](e7b64e1))
* **YouTube - Hide Shorts components:** Selectively hide Shorts for home / subscription / search ([#2925](#2925)) ([497c067](497c067))
* **YouTube :** Remove `HDR auto brightness` patch ([#2863](#2863)) ([b4c7bf4](b4c7bf4))
* **YouTube Vanced:** Remove `Hide ads` patch ([87887e4](87887e4))
* **YouTube:** Support version `19.05`, `19.06`, `19.07`, `19.08` and `19.09` ([#2862](#2862)) ([f044dde](f044dde))
E85Addict pushed a commit to E85Addict/revanced-patches that referenced this pull request Mar 27, 2024
# [4.4.0](v4.3.0...v4.4.0) (2024-03-27)

### Bug Fixes

* **TikTok:** Hook application context earlier to prevent crash ([ReVanced#2893](https://github.com/E85Addict/revanced-patches/issues/2893)) ([395ccda](395ccda))
* **YouTube - Client spoof:** Spoof all user agents ([44a8a13](44a8a13))
* **YouTube - Downloads:** Use new task context ([ReVanced#2841](https://github.com/E85Addict/revanced-patches/issues/2841)) ([6d88cb4](6d88cb4))
* **YouTube - Hide ads:** Prevent app crash if hiding fullscreen ads is not possible ([ReVanced#2910](https://github.com/E85Addict/revanced-patches/issues/2910)) ([9f50470](9f50470))
* **YouTube Music:** Fix compatibility with latest versions ([ReVanced#2924](https://github.com/E85Addict/revanced-patches/issues/2924)) ([8378c84](8378c84))
* **YouTube:** Fix video playback by switching to ReVanced GmsCore vendor ([ReVanced#2907](https://github.com/E85Addict/revanced-patches/issues/2907)) ([33ea122](33ea122))
* **YouTube:** Move setting to correct screen ([a16eda8](a16eda8))

### Features

* **Instagram - Hide timeline ads:** Make compatible with latest versions ([a212f29](a212f29))
* **Mi Fitness:** Add `Force English locale` and `Fix login` patch ([ReVanced#2734](https://github.com/E85Addict/revanced-patches/issues/2734)) ([7a25791](7a25791))
* **Sync for Lemmy:** Add `Disable ads` patch ([ReVanced#2872](https://github.com/E85Addict/revanced-patches/issues/2872)) ([0785819](0785819))
* **YouTube - Downloads:** Use external downloader when selecting 'Download' in home feed flyout menu ([ReVanced#2881](https://github.com/E85Addict/revanced-patches/issues/2881)) ([10afc8c](10afc8c))
* **YouTube - External downloader:** Add ability to use in-app download button ([d900011](d900011))
* **YouTube - Hide layout components:** Filter home/search results by keywords ([ReVanced#2853](https://github.com/E85Addict/revanced-patches/issues/2853)) ([5916204](5916204))
* **YouTube - Hide Shorts components:** Hide like and dislike buttons ([2df0892](2df0892))
* **YouTube - Hide Shorts components:** Hide sound metadata label ([ea7d1e0](ea7d1e0))
* **YouTube - Hide Shorts components:** Hide title and full video link label ([e7b64e1](e7b64e1))
* **YouTube - Hide Shorts components:** Selectively hide Shorts for home / subscription / search ([ReVanced#2925](https://github.com/E85Addict/revanced-patches/issues/2925)) ([497c067](497c067))
* **YouTube :** Remove `HDR auto brightness` patch ([ReVanced#2863](https://github.com/E85Addict/revanced-patches/issues/2863)) ([b4c7bf4](b4c7bf4))
* **YouTube Vanced:** Remove `Hide ads` patch ([87887e4](87887e4))
* **YouTube:** Support version `19.05`, `19.06`, `19.07`, `19.08` and `19.09` ([ReVanced#2862](https://github.com/E85Addict/revanced-patches/issues/2862)) ([f044dde](f044dde))

### Performance Improvements

* Personal Logo && Add upstream sync ([5022724](5022724))
n-34 pushed a commit to n-34/revanced-patches that referenced this pull request May 22, 2024
# [4.0.0](v3.1.0...v4.0.0) (2024-05-22)

### Bug Fixes

* Case patch option title correctly ([259c8b4](259c8b4))
* Compile DEX without debugging information ([f5df957](f5df957))
* Correctly handle patches jar path if it contains exclamation marks ([056e2d7](056e2d7))
* Indent patch option description correctly ([bd86ef6](bd86ef6))
* **Infinity for Reddit - Unlock subscription:** Do not crash by patching billing client ([7d76e2e](7d76e2e))
* **Infinity for Reddit - Unlock subscription:** Restore functionality on v7.0.0 ([bf19af9](bf19af9))
* **Mi Fitness - Fix login:** Patch correct register ([ReVanced#2942](https://github.com/n-34/revanced-patches/issues/2942)) ([dc96942](dc96942))
* Only set Android key if not null to prevent build errors ([1181b0b](1181b0b))
* **Override certificate pinning:** Always overwrite with a generic network security configuration ([2a842a1](2a842a1))
* Publicize abstract property ([b7c108e](b7c108e))
* **Reddit is Fun - Spoof client:** Fix login by updating the authorization subdomain from "old" to "ssl" ([b156cb1](b156cb1))
* Remove extra space from patch description ([ReVanced#2780](https://github.com/n-34/revanced-patches/issues/2780)) ([96a3f35](96a3f35))
* **Spoof SIM country:** Validate patch option value correctly ([8105463](8105463))
* **Tiktok - Remember clear display:** Use correct name ([d7e44cb](d7e44cb))
* **TikTok:** Hook application context earlier to prevent crash ([ReVanced#2893](https://github.com/n-34/revanced-patches/issues/2893)) ([395ccda](395ccda))
* **Tumblr - Fix old versions:** Improve reliability by removing remnances of Tumblr Live  ([ReVanced#2988](https://github.com/n-34/revanced-patches/issues/2988)) ([897b4db](897b4db))
* **Tumblr:** Restore compatibility with latest versions ([ReVanced#2955](https://github.com/n-34/revanced-patches/issues/2955)) ([2954ba7](2954ba7))
* **Twitch:** Correct patch resources to fix build ([1b63898](1b63898))
* URL decode path to JAR containing spaces to get JAR manifest ([ReVanced#3079](https://github.com/n-34/revanced-patches/issues/3079)) ([e1bbcb3](e1bbcb3))
* Use correct preference key ([3732b2c](3732b2c))
* Use deprecated members to ensure backwards compatibility ([083bd40](083bd40))
* Use new integrations patch path ([51e2f3b](51e2f3b))
* Use UrlDecoder API available in older Android versions ([d42fbb1](d42fbb1))
* **YouTube - Alternative thumbnails:** Clarify DeArrow support is for thumbnails ([ReVanced#2531](https://github.com/n-34/revanced-patches/issues/2531)) ([828abb0](828abb0))
* **YouTube - Change header:** Improve patch descriptions ([ReVanced#2581](https://github.com/n-34/revanced-patches/issues/2581)) ([43a5677](43a5677))
* **YouTube - Client spoof:** Spoof all user agents ([44a8a13](44a8a13))
* **YouTube - Client spoof:** Spoof client to fix playback ([ReVanced#3199](https://github.com/n-34/revanced-patches/issues/3199)) ([bec1eef](bec1eef))
* **YouTube - Downloads:** Use new task context ([ReVanced#2841](https://github.com/n-34/revanced-patches/issues/2841)) ([6d88cb4](6d88cb4))
* **YouTube - Enable slide to seek:** Change patch default to excluded and add description disclaimer ([ReVanced#2610](https://github.com/n-34/revanced-patches/issues/2610)) ([2fdc4c2](2fdc4c2))
* **YouTube - GmsCore support:** Prompt to disable battery optimizations, if not done already ([ReVanced#2958](https://github.com/n-34/revanced-patches/issues/2958)) ([82acb84](82acb84))
* **YouTube - Hide ads:** Fix string typo ([ecc56d6](ecc56d6))
* **YouTube - Hide ads:** Prevent app crash if hiding fullscreen ads is not possible ([ReVanced#2910](https://github.com/n-34/revanced-patches/issues/2910)) ([9f50470](9f50470))
* **YouTube - Hide ads:** rename `Hide paid content` to `Hide paid promotion label` ([ReVanced#3026](https://github.com/n-34/revanced-patches/issues/3026)) ([17e4ac9](17e4ac9))
* **YouTube - Hide load more button:** Include patch with `Hide layout components`, and hide button only in search feed  ([ReVanced#2959](https://github.com/n-34/revanced-patches/issues/2959)) ([b007e8e](b007e8e))
* **YouTube - Hide Shorts components:** Correctly hide Shorts if navigation tab is changed using device back button ([ReVanced#3007](https://github.com/n-34/revanced-patches/issues/3007)) ([e5848e9](e5848e9))
* **YouTube - Hide Shorts components:** Rename option title to make it consistent ([4d6e34b](4d6e34b))
* **YouTube - Hide video action buttons:** Remove obsolete `hide Shop button` ([ReVanced#3057](https://github.com/n-34/revanced-patches/issues/3057)) ([b5e34f3](b5e34f3))
* **YouTube - Navigation buttons:** Adjust summary text of switch notification button ([ReVanced#3130](https://github.com/n-34/revanced-patches/issues/3130)) ([cc8b4c9](cc8b4c9))
* **YouTube - Player flyout menu:** Add hide Lock screen menu ([ReVanced#2985](https://github.com/n-34/revanced-patches/issues/2985)) ([308de4a](308de4a))
* **YouTube - Player flyout menu:** Remove obsolete `Hide report menu` ([d627d44](d627d44))
* **YouTube - Restore old video quality menu:** Show advanced quality menu in Shorts quality flyout ([ReVanced#3155](https://github.com/n-34/revanced-patches/issues/3155)) ([c2b5bb7](c2b5bb7))
* **YouTube - SponsorBlock:** Export local statistics with saved settings ([f8365b4](f8365b4))
* **YouTube - SponsorBlock:** Show correct segment times if video is over 24 hours in length ([ReVanced#3138](https://github.com/n-34/revanced-patches/issues/3138)) ([6cdf697](6cdf697))
* **YouTube - Spoof app version:** Remove broken versions ([ReVanced#2776](https://github.com/n-34/revanced-patches/issues/2776)) ([9466d97](9466d97))
* **YouTube - Spoof device dimensions:** Warn about potential performance issues ([ReVanced#3039](https://github.com/n-34/revanced-patches/issues/3039)) ([9d6f305](9d6f305))
* **YouTube - Spoof signature:** Fix tracking such as history or watch time ([bcd8b48](bcd8b48))
* **YouTube Music - Remove upgrade button:** Fix compatibility with latest versions ([ReVanced#3045](https://github.com/n-34/revanced-patches/issues/3045)) ([80de996](80de996))
* **YouTube Music:** Fix compatibility with latest versions ([ReVanced#2924](https://github.com/n-34/revanced-patches/issues/2924)) ([8378c84](8378c84))
* **YouTube Music:** Make `Hide 'Get Music Premium' label` and `Remove upgrade button` compatible with latest version ([ReVanced#3164](https://github.com/n-34/revanced-patches/issues/3164)) ([3ff20de](3ff20de))
* **YouTube:** Correctly show channel page on tablet devices ([ReVanced#2656](https://github.com/n-34/revanced-patches/issues/2656)) ([c7c9700](c7c9700))
* **YouTube:** Do not crash on startup for root installs ([ReVanced#2655](https://github.com/n-34/revanced-patches/issues/2655)) ([02abace](02abace))
* **YouTube:** Fix grammer mistakes in patch descriptions ([ReVanced#2543](https://github.com/n-34/revanced-patches/issues/2543)) ([ebf5993](ebf5993))
* **YouTube:** Fix video playback by switching to ReVanced GmsCore vendor ([ReVanced#2907](https://github.com/n-34/revanced-patches/issues/2907)) ([33ea122](33ea122))
* **YouTube:** Move setting to correct screen ([a16eda8](a16eda8))
* **YouTube:** Shorten setting titles to fit on screen ([ReVanced#2579](https://github.com/n-34/revanced-patches/issues/2579)) ([b2a5dd3](b2a5dd3))

### Code Refactoring

* Fix package and code structure ([ReVanced#2541](https://github.com/n-34/revanced-patches/issues/2541)) ([a08457e](a08457e))

### Features

* Add `Hex` patch ([ReVanced#3034](https://github.com/n-34/revanced-patches/issues/3034)) ([3c95aac](3c95aac))
* **Amazon:** Add `Always allow deep-linking` patch ([ReVanced#3000](https://github.com/n-34/revanced-patches/issues/3000)) ([a92b7fb](a92b7fb))
* **Change package name:** Mention caveat of the patch in the description ([427b81a](427b81a))
* **ID Austria:** Remove constraint on any version ([ReVanced#2526](https://github.com/n-34/revanced-patches/issues/2526)) ([de2cb88](de2cb88))
* **Instagram - Hide timeline ads:** Make compatible with latest versions ([a212f29](a212f29))
* **Mi Fitness:** Add `Force English locale` and `Fix login` patch ([ReVanced#2734](https://github.com/n-34/revanced-patches/issues/2734)) ([7a25791](7a25791))
* Move strings to resources for localization ([ReVanced#2440](https://github.com/n-34/revanced-patches/issues/2440)) ([060ab8f](060ab8f))
* **MyFitnessPal:** Add `Hide ads` patch ([ReVanced#2594](https://github.com/n-34/revanced-patches/issues/2594)) ([fd4b3c7](fd4b3c7))
* **OpeningHours:** Add `Fix crash` patch ([ReVanced#2697](https://github.com/n-34/revanced-patches/issues/2697)) ([0d011b8](0d011b8))
* **Photomath:** Add `Hide update popup` patch ([ReVanced#2637](https://github.com/n-34/revanced-patches/issues/2637)) ([fbbecd3](fbbecd3))
* **Photomath:** Support version `8.37.0` ([ReVanced#3109](https://github.com/n-34/revanced-patches/issues/3109)) ([fb02b48](fb02b48))
* **Piccoma:** Add `Disable tracking` patch ([ReVanced#3143](https://github.com/n-34/revanced-patches/issues/3143)) ([8ab9e8f](8ab9e8f))
* **Piccoma:** Add `Spoof Android device ID` patch ([ReVanced#3145](https://github.com/n-34/revanced-patches/issues/3145)) ([d953c6b](d953c6b))
* **Public API:** Deprecate `HideEmailAddressPatch` ([866bceb](866bceb))
* **Public API:** Make `BottomControlsResource#addControls` public ([ReVanced#2514](https://github.com/n-34/revanced-patches/issues/2514)) ([f4e2257](f4e2257))
* Remove unnecessary description from patch ([1a89dd9](1a89dd9))
* **Strava - Unlock subscription:** Remove compatible version constraint ([80a5599](80a5599))
* **Sync for Lemmy:** Add `Disable ads` patch ([ReVanced#2872](https://github.com/n-34/revanced-patches/issues/2872)) ([0785819](0785819))
* **Sync for Reddit:** Add `Fix /s/ links` patch ([f15ef3f](f15ef3f))
* **Tiktok - Playback speed:** Remember playback speed ([ReVanced#2506](https://github.com/n-34/revanced-patches/issues/2506)) ([d2970e5](d2970e5))
* **Tiktok:** Add `Remember clear mode` patch ([ReVanced#2509](https://github.com/n-34/revanced-patches/issues/2509)) ([048bf59](048bf59))
* **Tumblr:** Add `Disable Ad-Free Banner` patch ([ReVanced#3091](https://github.com/n-34/revanced-patches/issues/3091)) ([54baf08](54baf08))
* **Tumblr:** Add `Fix old versions` patch ([ReVanced#2954](https://github.com/n-34/revanced-patches/issues/2954)) ([2fde60e](2fde60e))
* **Twitter - Unlock downloads:** Unlock GIF downloads ([d0f91c8](d0f91c8))
* **Twitter:** Add `Sanitize sharing links` patch ([ReVanced#3003](https://github.com/n-34/revanced-patches/issues/3003)) ([186b887](186b887))
* **VSCO - Unlock pro:** Constrain to last working version ([6dd4a7c](6dd4a7c))
* **WarnWetter - Promo code unlock:** Constrain to last working version ([ReVanced#3110](https://github.com/n-34/revanced-patches/issues/3110)) ([92fc8aa](92fc8aa))
* **X:** Add `Hide view count` patch ([bf064ec](bf064ec))
* **X:** Add `Open links as query` patch ([ReVanced#2730](https://github.com/n-34/revanced-patches/issues/2730)) ([ba75a51](ba75a51))
* **X:** Add `Unlock downloads` patch ([2c20844](2c20844))
* **YouTube - Alternative thumbnails:** Selectively enable for home / subscription / search ([ReVanced#2926](https://github.com/n-34/revanced-patches/issues/2926)) ([8549e1b](8549e1b))
* **YouTube - Change header:** Change to ReVanced borderless logo header by default ([ReVanced#2512](https://github.com/n-34/revanced-patches/issues/2512)) ([75f785d](75f785d))
* **YouTube - Change header:** Improve patch option description ([3b8bc08](3b8bc08))
* **YouTube - Change start page:** Add more start pages ([cc1d9b7](cc1d9b7))
* **YouTube - Comments:** Add option to hide timestamp and emoji buttons ([ReVanced#3076](https://github.com/n-34/revanced-patches/issues/3076)) ([7efe5ae](7efe5ae))
* **YouTube - Custom branding:** Improve patch option description ([e27f56c](e27f56c))
* **YouTube - Custom filter:** Custom filtering of the protocol buffer ([ReVanced#2682](https://github.com/n-34/revanced-patches/issues/2682)) ([872a5b6](872a5b6))
* **YouTube - Downloads:** Use external downloader when selecting 'Download' in home feed flyout menu ([ReVanced#2881](https://github.com/n-34/revanced-patches/issues/2881)) ([10afc8c](10afc8c))
* **YouTube - External downloader:** Add ability to use in-app download button ([d900011](d900011))
* **YouTube - GmsCore:** Require ignoring battery optimizations ([ReVanced#2952](https://github.com/n-34/revanced-patches/issues/2952)) ([c0bef25](c0bef25))
* **YouTube - Hide ads:** Add option to hide the 'Visit store' button on channel pages ([ReVanced#3077](https://github.com/n-34/revanced-patches/issues/3077)) ([03d2cfa](03d2cfa))
* **YouTube - Hide ads:** Hide fullscreen ads ([bdc9a12](bdc9a12))
* **YouTube - Hide layout components:** Add option to hide horizontal shelves ([ReVanced#2951](https://github.com/n-34/revanced-patches/issues/2951)) ([9ae0650](9ae0650))
* **YouTube - Hide layout components:** Filter home/search results by keywords ([ReVanced#2853](https://github.com/n-34/revanced-patches/issues/2853)) ([5916204](5916204))
* **YouTube - Hide layout components:** Hide playables ([8423515](8423515))
* **YouTube - Hide layout components:** Hide search result recommendations ([55cc7f1](55cc7f1))
* **YouTube - Hide Shorts components:** Hide 'Buy super thanks' button ([ReVanced#3176](https://github.com/n-34/revanced-patches/issues/3176)) ([89c1548](89c1548))
* **YouTube - Hide Shorts components:** Hide `Shop`, `Location` and `Save sound to playlist` buttons ([ReVanced#3018](https://github.com/n-34/revanced-patches/issues/3018)) ([5210ac4](5210ac4))
* **YouTube - Hide Shorts components:** Hide like / dislike button in video ads ([ReVanced#3062](https://github.com/n-34/revanced-patches/issues/3062)) ([1296985](1296985))
* **YouTube - Hide Shorts components:** Hide like and dislike buttons ([2df0892](2df0892))
* **YouTube - Hide Shorts components:** Hide sound metadata label ([ea7d1e0](ea7d1e0))
* **YouTube - Hide Shorts components:** Hide tagged products, hide search suggestions ([ReVanced#3019](https://github.com/n-34/revanced-patches/issues/3019)) ([e0d2fe5](e0d2fe5))
* **YouTube - Hide Shorts components:** Hide title and full video link label ([e7b64e1](e7b64e1))
* **YouTube - Hide Shorts components:** Selectively hide Shorts for home / subscription / search ([ReVanced#2925](https://github.com/n-34/revanced-patches/issues/2925)) ([497c067](497c067))
* **YouTube - Navigation buttons:** Add option to hide navigation button labels ([ReVanced#3189](https://github.com/n-34/revanced-patches/issues/3189)) ([f9dc705](f9dc705))
* **YouTube - Spoof app version:** Add `18.09.39` to restore library tab ([ReVanced#2643](https://github.com/n-34/revanced-patches/issues/2643)) ([dd108ff](dd108ff))
* **YouTube - Spoof app version:** Add target versions ([ReVanced#2787](https://github.com/n-34/revanced-patches/issues/2787)) ([83a7bd8](83a7bd8))
* **YouTube - Swipe controls:** Save and restore brightness and add auto-brightness toggle ([ReVanced#2996](https://github.com/n-34/revanced-patches/issues/2996)) ([f6c3bc4](f6c3bc4))
* **YouTube - Theme:** Add classic dark color to presets ([ReVanced#2542](https://github.com/n-34/revanced-patches/issues/2542)) ([4e1dc00](4e1dc00))
* **YouTube :** Remove `HDR auto brightness` patch ([ReVanced#2863](https://github.com/n-34/revanced-patches/issues/2863)) ([b4c7bf4](b4c7bf4))
* **YouTube Vanced:** Remove `Hide ads` patch ([87887e4](87887e4))
* **YouTube:** Add 'About' preference to settings menu ([ReVanced#2981](https://github.com/n-34/revanced-patches/issues/2981)) ([5abf894](5abf894))
* **YouTube:** Add `Remove viewer discretion dialog` patch ([a07f83f](a07f83f))
* **YouTube:** Improve patch descriptions ([ReVanced#2519](https://github.com/n-34/revanced-patches/issues/2519)) ([e8d1389](e8d1389))
* **YouTube:** Match overlay icons style to YouTube ([ReVanced#3023](https://github.com/n-34/revanced-patches/issues/3023)) ([6849393](6849393))
* **YouTube:** Remove `Hide email address` patch ([3b84305](3b84305))
* **YouTube:** Reorganize settings menu ([ReVanced#2737](https://github.com/n-34/revanced-patches/issues/2737)) ([36132df](36132df))
* **YouTube:** Support version `19.02.34` ([ReVanced#2627](https://github.com/n-34/revanced-patches/issues/2627)) ([94e08b7](94e08b7))
* **YouTube:** Support version `19.03.35` ([ReVanced#2640](https://github.com/n-34/revanced-patches/issues/2640)) ([ff08f58](ff08f58))
* **YouTube:** Support version `19.04.37` ([ReVanced#2687](https://github.com/n-34/revanced-patches/issues/2687)) ([c23e023](c23e023))
* **YouTube:** Support version `19.05`, `19.06`, `19.07`, `19.08` and `19.09` ([ReVanced#2862](https://github.com/n-34/revanced-patches/issues/2862)) ([f044dde](f044dde))
* **YouTube:** Support version `19.09.38`, `19.10.39` and `19.11.43` ([ReVanced#2971](https://github.com/n-34/revanced-patches/issues/2971)) ([730f3e3](730f3e3))
* **YouTube:** Support versions `18.48.39`, `18.49.37` and `19.01.34` ([ReVanced#2551](https://github.com/n-34/revanced-patches/issues/2551)) ([a938e73](a938e73))
* **YT Music - Hide 'Get Music Premium' label:** Remove occurences of label in settings ([ReVanced#3046](https://github.com/n-34/revanced-patches/issues/3046)) ([10e170a](10e170a))
* **YT Music:** Add support for `7.01.52` ([ReVanced#3177](https://github.com/n-34/revanced-patches/issues/3177)) ([e9bfb25](e9bfb25))

### BREAKING CHANGES

* **Photomath:** Some packages have changed locations.
* Various APIs have been changed.
* Various public APIs have changed names and packages or were removed entirely
n-34 pushed a commit to n-34/revanced-patches that referenced this pull request May 22, 2024
# [4.0.0](v3.1.0...v4.0.0) (2024-05-22)

### Bug Fixes

* Case patch option title correctly ([259c8b4](259c8b4))
* Compile DEX without debugging information ([f5df957](f5df957))
* Correctly handle patches jar path if it contains exclamation marks ([056e2d7](056e2d7))
* Indent patch option description correctly ([bd86ef6](bd86ef6))
* **Infinity for Reddit - Unlock subscription:** Do not crash by patching billing client ([7d76e2e](7d76e2e))
* **Infinity for Reddit - Unlock subscription:** Restore functionality on v7.0.0 ([bf19af9](bf19af9))
* **Mi Fitness - Fix login:** Patch correct register ([ReVanced#2942](https://github.com/n-34/revanced-patches/issues/2942)) ([dc96942](dc96942))
* Only set Android key if not null to prevent build errors ([1181b0b](1181b0b))
* **Override certificate pinning:** Always overwrite with a generic network security configuration ([2a842a1](2a842a1))
* Publicize abstract property ([b7c108e](b7c108e))
* **Reddit is Fun - Spoof client:** Fix login by updating the authorization subdomain from "old" to "ssl" ([b156cb1](b156cb1))
* Remove extra space from patch description ([ReVanced#2780](https://github.com/n-34/revanced-patches/issues/2780)) ([96a3f35](96a3f35))
* **Spoof SIM country:** Validate patch option value correctly ([8105463](8105463))
* **Tiktok - Remember clear display:** Use correct name ([d7e44cb](d7e44cb))
* **TikTok:** Hook application context earlier to prevent crash ([ReVanced#2893](https://github.com/n-34/revanced-patches/issues/2893)) ([395ccda](395ccda))
* **Tumblr - Fix old versions:** Improve reliability by removing remnances of Tumblr Live  ([ReVanced#2988](https://github.com/n-34/revanced-patches/issues/2988)) ([897b4db](897b4db))
* **Tumblr:** Restore compatibility with latest versions ([ReVanced#2955](https://github.com/n-34/revanced-patches/issues/2955)) ([2954ba7](2954ba7))
* **Twitch:** Correct patch resources to fix build ([1b63898](1b63898))
* URL decode path to JAR containing spaces to get JAR manifest ([ReVanced#3079](https://github.com/n-34/revanced-patches/issues/3079)) ([e1bbcb3](e1bbcb3))
* Use correct preference key ([3732b2c](3732b2c))
* Use deprecated members to ensure backwards compatibility ([083bd40](083bd40))
* Use new integrations patch path ([51e2f3b](51e2f3b))
* Use UrlDecoder API available in older Android versions ([d42fbb1](d42fbb1))
* **YouTube - Alternative thumbnails:** Clarify DeArrow support is for thumbnails ([ReVanced#2531](https://github.com/n-34/revanced-patches/issues/2531)) ([828abb0](828abb0))
* **YouTube - Change header:** Improve patch descriptions ([ReVanced#2581](https://github.com/n-34/revanced-patches/issues/2581)) ([43a5677](43a5677))
* **YouTube - Client spoof:** Spoof all user agents ([44a8a13](44a8a13))
* **YouTube - Client spoof:** Spoof client to fix playback ([ReVanced#3199](https://github.com/n-34/revanced-patches/issues/3199)) ([bec1eef](bec1eef))
* **YouTube - Downloads:** Use new task context ([ReVanced#2841](https://github.com/n-34/revanced-patches/issues/2841)) ([6d88cb4](6d88cb4))
* **YouTube - Enable slide to seek:** Change patch default to excluded and add description disclaimer ([ReVanced#2610](https://github.com/n-34/revanced-patches/issues/2610)) ([2fdc4c2](2fdc4c2))
* **YouTube - GmsCore support:** Prompt to disable battery optimizations, if not done already ([ReVanced#2958](https://github.com/n-34/revanced-patches/issues/2958)) ([82acb84](82acb84))
* **YouTube - Hide ads:** Fix string typo ([ecc56d6](ecc56d6))
* **YouTube - Hide ads:** Prevent app crash if hiding fullscreen ads is not possible ([ReVanced#2910](https://github.com/n-34/revanced-patches/issues/2910)) ([9f50470](9f50470))
* **YouTube - Hide ads:** rename `Hide paid content` to `Hide paid promotion label` ([ReVanced#3026](https://github.com/n-34/revanced-patches/issues/3026)) ([17e4ac9](17e4ac9))
* **YouTube - Hide load more button:** Include patch with `Hide layout components`, and hide button only in search feed  ([ReVanced#2959](https://github.com/n-34/revanced-patches/issues/2959)) ([b007e8e](b007e8e))
* **YouTube - Hide Shorts components:** Correctly hide Shorts if navigation tab is changed using device back button ([ReVanced#3007](https://github.com/n-34/revanced-patches/issues/3007)) ([e5848e9](e5848e9))
* **YouTube - Hide Shorts components:** Rename option title to make it consistent ([4d6e34b](4d6e34b))
* **YouTube - Hide video action buttons:** Remove obsolete `hide Shop button` ([ReVanced#3057](https://github.com/n-34/revanced-patches/issues/3057)) ([b5e34f3](b5e34f3))
* **YouTube - Navigation buttons:** Adjust summary text of switch notification button ([ReVanced#3130](https://github.com/n-34/revanced-patches/issues/3130)) ([cc8b4c9](cc8b4c9))
* **YouTube - Player flyout menu:** Add hide Lock screen menu ([ReVanced#2985](https://github.com/n-34/revanced-patches/issues/2985)) ([308de4a](308de4a))
* **YouTube - Player flyout menu:** Remove obsolete `Hide report menu` ([d627d44](d627d44))
* **YouTube - Restore old video quality menu:** Show advanced quality menu in Shorts quality flyout ([ReVanced#3155](https://github.com/n-34/revanced-patches/issues/3155)) ([c2b5bb7](c2b5bb7))
* **YouTube - SponsorBlock:** Export local statistics with saved settings ([f8365b4](f8365b4))
* **YouTube - SponsorBlock:** Show correct segment times if video is over 24 hours in length ([ReVanced#3138](https://github.com/n-34/revanced-patches/issues/3138)) ([6cdf697](6cdf697))
* **YouTube - Spoof app version:** Remove broken versions ([ReVanced#2776](https://github.com/n-34/revanced-patches/issues/2776)) ([9466d97](9466d97))
* **YouTube - Spoof device dimensions:** Warn about potential performance issues ([ReVanced#3039](https://github.com/n-34/revanced-patches/issues/3039)) ([9d6f305](9d6f305))
* **YouTube - Spoof signature:** Fix tracking such as history or watch time ([bcd8b48](bcd8b48))
* **YouTube Music - Remove upgrade button:** Fix compatibility with latest versions ([ReVanced#3045](https://github.com/n-34/revanced-patches/issues/3045)) ([80de996](80de996))
* **YouTube Music:** Fix compatibility with latest versions ([ReVanced#2924](https://github.com/n-34/revanced-patches/issues/2924)) ([8378c84](8378c84))
* **YouTube Music:** Make `Hide 'Get Music Premium' label` and `Remove upgrade button` compatible with latest version ([ReVanced#3164](https://github.com/n-34/revanced-patches/issues/3164)) ([3ff20de](3ff20de))
* **YouTube:** Correctly show channel page on tablet devices ([ReVanced#2656](https://github.com/n-34/revanced-patches/issues/2656)) ([c7c9700](c7c9700))
* **YouTube:** Do not crash on startup for root installs ([ReVanced#2655](https://github.com/n-34/revanced-patches/issues/2655)) ([02abace](02abace))
* **YouTube:** Fix grammer mistakes in patch descriptions ([ReVanced#2543](https://github.com/n-34/revanced-patches/issues/2543)) ([ebf5993](ebf5993))
* **YouTube:** Fix video playback by switching to ReVanced GmsCore vendor ([ReVanced#2907](https://github.com/n-34/revanced-patches/issues/2907)) ([33ea122](33ea122))
* **YouTube:** Move setting to correct screen ([a16eda8](a16eda8))
* **YouTube:** Shorten setting titles to fit on screen ([ReVanced#2579](https://github.com/n-34/revanced-patches/issues/2579)) ([b2a5dd3](b2a5dd3))

### Code Refactoring

* Fix package and code structure ([ReVanced#2541](https://github.com/n-34/revanced-patches/issues/2541)) ([a08457e](a08457e))

### Features

* Add `Hex` patch ([ReVanced#3034](https://github.com/n-34/revanced-patches/issues/3034)) ([3c95aac](3c95aac))
* **Amazon:** Add `Always allow deep-linking` patch ([ReVanced#3000](https://github.com/n-34/revanced-patches/issues/3000)) ([a92b7fb](a92b7fb))
* **Change package name:** Mention caveat of the patch in the description ([427b81a](427b81a))
* **ID Austria:** Remove constraint on any version ([ReVanced#2526](https://github.com/n-34/revanced-patches/issues/2526)) ([de2cb88](de2cb88))
* **Instagram - Hide timeline ads:** Make compatible with latest versions ([a212f29](a212f29))
* **Mi Fitness:** Add `Force English locale` and `Fix login` patch ([ReVanced#2734](https://github.com/n-34/revanced-patches/issues/2734)) ([7a25791](7a25791))
* Move strings to resources for localization ([ReVanced#2440](https://github.com/n-34/revanced-patches/issues/2440)) ([060ab8f](060ab8f))
* **MyFitnessPal:** Add `Hide ads` patch ([ReVanced#2594](https://github.com/n-34/revanced-patches/issues/2594)) ([fd4b3c7](fd4b3c7))
* **OpeningHours:** Add `Fix crash` patch ([ReVanced#2697](https://github.com/n-34/revanced-patches/issues/2697)) ([0d011b8](0d011b8))
* **Photomath:** Add `Hide update popup` patch ([ReVanced#2637](https://github.com/n-34/revanced-patches/issues/2637)) ([fbbecd3](fbbecd3))
* **Photomath:** Support version `8.37.0` ([ReVanced#3109](https://github.com/n-34/revanced-patches/issues/3109)) ([fb02b48](fb02b48))
* **Piccoma:** Add `Disable tracking` patch ([ReVanced#3143](https://github.com/n-34/revanced-patches/issues/3143)) ([8ab9e8f](8ab9e8f))
* **Piccoma:** Add `Spoof Android device ID` patch ([ReVanced#3145](https://github.com/n-34/revanced-patches/issues/3145)) ([d953c6b](d953c6b))
* **Public API:** Deprecate `HideEmailAddressPatch` ([866bceb](866bceb))
* **Public API:** Make `BottomControlsResource#addControls` public ([ReVanced#2514](https://github.com/n-34/revanced-patches/issues/2514)) ([f4e2257](f4e2257))
* Remove unnecessary description from patch ([1a89dd9](1a89dd9))
* **Strava - Unlock subscription:** Remove compatible version constraint ([80a5599](80a5599))
* **Sync for Lemmy:** Add `Disable ads` patch ([ReVanced#2872](https://github.com/n-34/revanced-patches/issues/2872)) ([0785819](0785819))
* **Sync for Reddit:** Add `Fix /s/ links` patch ([f15ef3f](f15ef3f))
* **Tiktok - Playback speed:** Remember playback speed ([ReVanced#2506](https://github.com/n-34/revanced-patches/issues/2506)) ([d2970e5](d2970e5))
* **Tiktok:** Add `Remember clear mode` patch ([ReVanced#2509](https://github.com/n-34/revanced-patches/issues/2509)) ([048bf59](048bf59))
* **Tumblr:** Add `Disable Ad-Free Banner` patch ([ReVanced#3091](https://github.com/n-34/revanced-patches/issues/3091)) ([54baf08](54baf08))
* **Tumblr:** Add `Fix old versions` patch ([ReVanced#2954](https://github.com/n-34/revanced-patches/issues/2954)) ([2fde60e](2fde60e))
* **Twitter - Unlock downloads:** Unlock GIF downloads ([d0f91c8](d0f91c8))
* **Twitter:** Add `Sanitize sharing links` patch ([ReVanced#3003](https://github.com/n-34/revanced-patches/issues/3003)) ([186b887](186b887))
* **VSCO - Unlock pro:** Constrain to last working version ([6dd4a7c](6dd4a7c))
* **WarnWetter - Promo code unlock:** Constrain to last working version ([ReVanced#3110](https://github.com/n-34/revanced-patches/issues/3110)) ([92fc8aa](92fc8aa))
* **X:** Add `Hide view count` patch ([bf064ec](bf064ec))
* **X:** Add `Open links as query` patch ([ReVanced#2730](https://github.com/n-34/revanced-patches/issues/2730)) ([ba75a51](ba75a51))
* **X:** Add `Unlock downloads` patch ([2c20844](2c20844))
* **YouTube - Alternative thumbnails:** Selectively enable for home / subscription / search ([ReVanced#2926](https://github.com/n-34/revanced-patches/issues/2926)) ([8549e1b](8549e1b))
* **YouTube - Change header:** Change to ReVanced borderless logo header by default ([ReVanced#2512](https://github.com/n-34/revanced-patches/issues/2512)) ([75f785d](75f785d))
* **YouTube - Change header:** Improve patch option description ([3b8bc08](3b8bc08))
* **YouTube - Change start page:** Add more start pages ([cc1d9b7](cc1d9b7))
* **YouTube - Comments:** Add option to hide timestamp and emoji buttons ([ReVanced#3076](https://github.com/n-34/revanced-patches/issues/3076)) ([7efe5ae](7efe5ae))
* **YouTube - Custom branding:** Improve patch option description ([e27f56c](e27f56c))
* **YouTube - Custom filter:** Custom filtering of the protocol buffer ([ReVanced#2682](https://github.com/n-34/revanced-patches/issues/2682)) ([872a5b6](872a5b6))
* **YouTube - Downloads:** Use external downloader when selecting 'Download' in home feed flyout menu ([ReVanced#2881](https://github.com/n-34/revanced-patches/issues/2881)) ([10afc8c](10afc8c))
* **YouTube - External downloader:** Add ability to use in-app download button ([d900011](d900011))
* **YouTube - GmsCore:** Require ignoring battery optimizations ([ReVanced#2952](https://github.com/n-34/revanced-patches/issues/2952)) ([c0bef25](c0bef25))
* **YouTube - Hide ads:** Add option to hide the 'Visit store' button on channel pages ([ReVanced#3077](https://github.com/n-34/revanced-patches/issues/3077)) ([03d2cfa](03d2cfa))
* **YouTube - Hide ads:** Hide fullscreen ads ([bdc9a12](bdc9a12))
* **YouTube - Hide layout components:** Add option to hide horizontal shelves ([ReVanced#2951](https://github.com/n-34/revanced-patches/issues/2951)) ([9ae0650](9ae0650))
* **YouTube - Hide layout components:** Filter home/search results by keywords ([ReVanced#2853](https://github.com/n-34/revanced-patches/issues/2853)) ([5916204](5916204))
* **YouTube - Hide layout components:** Hide playables ([8423515](8423515))
* **YouTube - Hide layout components:** Hide search result recommendations ([55cc7f1](55cc7f1))
* **YouTube - Hide Shorts components:** Hide 'Buy super thanks' button ([ReVanced#3176](https://github.com/n-34/revanced-patches/issues/3176)) ([89c1548](89c1548))
* **YouTube - Hide Shorts components:** Hide `Shop`, `Location` and `Save sound to playlist` buttons ([ReVanced#3018](https://github.com/n-34/revanced-patches/issues/3018)) ([5210ac4](5210ac4))
* **YouTube - Hide Shorts components:** Hide like / dislike button in video ads ([ReVanced#3062](https://github.com/n-34/revanced-patches/issues/3062)) ([1296985](1296985))
* **YouTube - Hide Shorts components:** Hide like and dislike buttons ([2df0892](2df0892))
* **YouTube - Hide Shorts components:** Hide sound metadata label ([ea7d1e0](ea7d1e0))
* **YouTube - Hide Shorts components:** Hide tagged products, hide search suggestions ([ReVanced#3019](https://github.com/n-34/revanced-patches/issues/3019)) ([e0d2fe5](e0d2fe5))
* **YouTube - Hide Shorts components:** Hide title and full video link label ([e7b64e1](e7b64e1))
* **YouTube - Hide Shorts components:** Selectively hide Shorts for home / subscription / search ([ReVanced#2925](https://github.com/n-34/revanced-patches/issues/2925)) ([497c067](497c067))
* **YouTube - Navigation buttons:** Add option to hide navigation button labels ([ReVanced#3189](https://github.com/n-34/revanced-patches/issues/3189)) ([f9dc705](f9dc705))
* **YouTube - Spoof app version:** Add `18.09.39` to restore library tab ([ReVanced#2643](https://github.com/n-34/revanced-patches/issues/2643)) ([dd108ff](dd108ff))
* **YouTube - Spoof app version:** Add target versions ([ReVanced#2787](https://github.com/n-34/revanced-patches/issues/2787)) ([83a7bd8](83a7bd8))
* **YouTube - Swipe controls:** Save and restore brightness and add auto-brightness toggle ([ReVanced#2996](https://github.com/n-34/revanced-patches/issues/2996)) ([f6c3bc4](f6c3bc4))
* **YouTube - Theme:** Add classic dark color to presets ([ReVanced#2542](https://github.com/n-34/revanced-patches/issues/2542)) ([4e1dc00](4e1dc00))
* **YouTube :** Remove `HDR auto brightness` patch ([ReVanced#2863](https://github.com/n-34/revanced-patches/issues/2863)) ([b4c7bf4](b4c7bf4))
* **YouTube Vanced:** Remove `Hide ads` patch ([87887e4](87887e4))
* **YouTube:** Add 'About' preference to settings menu ([ReVanced#2981](https://github.com/n-34/revanced-patches/issues/2981)) ([5abf894](5abf894))
* **YouTube:** Add `Remove viewer discretion dialog` patch ([a07f83f](a07f83f))
* **YouTube:** Improve patch descriptions ([ReVanced#2519](https://github.com/n-34/revanced-patches/issues/2519)) ([e8d1389](e8d1389))
* **YouTube:** Match overlay icons style to YouTube ([ReVanced#3023](https://github.com/n-34/revanced-patches/issues/3023)) ([6849393](6849393))
* **YouTube:** Remove `Hide email address` patch ([3b84305](3b84305))
* **YouTube:** Reorganize settings menu ([ReVanced#2737](https://github.com/n-34/revanced-patches/issues/2737)) ([36132df](36132df))
* **YouTube:** Support version `19.02.34` ([ReVanced#2627](https://github.com/n-34/revanced-patches/issues/2627)) ([94e08b7](94e08b7))
* **YouTube:** Support version `19.03.35` ([ReVanced#2640](https://github.com/n-34/revanced-patches/issues/2640)) ([ff08f58](ff08f58))
* **YouTube:** Support version `19.04.37` ([ReVanced#2687](https://github.com/n-34/revanced-patches/issues/2687)) ([c23e023](c23e023))
* **YouTube:** Support version `19.05`, `19.06`, `19.07`, `19.08` and `19.09` ([ReVanced#2862](https://github.com/n-34/revanced-patches/issues/2862)) ([f044dde](f044dde))
* **YouTube:** Support version `19.09.38`, `19.10.39` and `19.11.43` ([ReVanced#2971](https://github.com/n-34/revanced-patches/issues/2971)) ([730f3e3](730f3e3))
* **YouTube:** Support versions `18.48.39`, `18.49.37` and `19.01.34` ([ReVanced#2551](https://github.com/n-34/revanced-patches/issues/2551)) ([a938e73](a938e73))
* **YT Music - Hide 'Get Music Premium' label:** Remove occurences of label in settings ([ReVanced#3046](https://github.com/n-34/revanced-patches/issues/3046)) ([10e170a](10e170a))
* **YT Music:** Add support for `7.01.52` ([ReVanced#3177](https://github.com/n-34/revanced-patches/issues/3177)) ([e9bfb25](e9bfb25))

### BREAKING CHANGES

* **Photomath:** Some packages have changed locations.
* Various APIs have been changed.
* Various public APIs have changed names and packages or were removed entirely
n-34 pushed a commit to n-34/revanced-patches that referenced this pull request May 22, 2024
# [4.0.0](v3.1.0...v4.0.0) (2024-05-22)

### Bug Fixes

* Case patch option title correctly ([259c8b4](259c8b4))
* Compile DEX without debugging information ([f5df957](f5df957))
* Correctly handle patches jar path if it contains exclamation marks ([056e2d7](056e2d7))
* Indent patch option description correctly ([bd86ef6](bd86ef6))
* **Infinity for Reddit - Unlock subscription:** Do not crash by patching billing client ([7d76e2e](7d76e2e))
* **Infinity for Reddit - Unlock subscription:** Restore functionality on v7.0.0 ([bf19af9](bf19af9))
* **Mi Fitness - Fix login:** Patch correct register ([ReVanced#2942](https://github.com/n-34/revanced-patches/issues/2942)) ([dc96942](dc96942))
* Only set Android key if not null to prevent build errors ([1181b0b](1181b0b))
* **Override certificate pinning:** Always overwrite with a generic network security configuration ([2a842a1](2a842a1))
* Publicize abstract property ([b7c108e](b7c108e))
* **Reddit is Fun - Spoof client:** Fix login by updating the authorization subdomain from "old" to "ssl" ([b156cb1](b156cb1))
* Remove extra space from patch description ([ReVanced#2780](https://github.com/n-34/revanced-patches/issues/2780)) ([96a3f35](96a3f35))
* **Spoof SIM country:** Validate patch option value correctly ([8105463](8105463))
* **Tiktok - Remember clear display:** Use correct name ([d7e44cb](d7e44cb))
* **TikTok:** Hook application context earlier to prevent crash ([ReVanced#2893](https://github.com/n-34/revanced-patches/issues/2893)) ([395ccda](395ccda))
* **Tumblr - Fix old versions:** Improve reliability by removing remnances of Tumblr Live  ([ReVanced#2988](https://github.com/n-34/revanced-patches/issues/2988)) ([897b4db](897b4db))
* **Tumblr:** Restore compatibility with latest versions ([ReVanced#2955](https://github.com/n-34/revanced-patches/issues/2955)) ([2954ba7](2954ba7))
* **Twitch:** Correct patch resources to fix build ([1b63898](1b63898))
* URL decode path to JAR containing spaces to get JAR manifest ([ReVanced#3079](https://github.com/n-34/revanced-patches/issues/3079)) ([e1bbcb3](e1bbcb3))
* Use correct preference key ([3732b2c](3732b2c))
* Use deprecated members to ensure backwards compatibility ([083bd40](083bd40))
* Use new integrations patch path ([51e2f3b](51e2f3b))
* Use UrlDecoder API available in older Android versions ([d42fbb1](d42fbb1))
* **YouTube - Alternative thumbnails:** Clarify DeArrow support is for thumbnails ([ReVanced#2531](https://github.com/n-34/revanced-patches/issues/2531)) ([828abb0](828abb0))
* **YouTube - Change header:** Improve patch descriptions ([ReVanced#2581](https://github.com/n-34/revanced-patches/issues/2581)) ([43a5677](43a5677))
* **YouTube - Client spoof:** Spoof all user agents ([44a8a13](44a8a13))
* **YouTube - Client spoof:** Spoof client to fix playback ([ReVanced#3199](https://github.com/n-34/revanced-patches/issues/3199)) ([bec1eef](bec1eef))
* **YouTube - Downloads:** Use new task context ([ReVanced#2841](https://github.com/n-34/revanced-patches/issues/2841)) ([6d88cb4](6d88cb4))
* **YouTube - Enable slide to seek:** Change patch default to excluded and add description disclaimer ([ReVanced#2610](https://github.com/n-34/revanced-patches/issues/2610)) ([2fdc4c2](2fdc4c2))
* **YouTube - GmsCore support:** Prompt to disable battery optimizations, if not done already ([ReVanced#2958](https://github.com/n-34/revanced-patches/issues/2958)) ([82acb84](82acb84))
* **YouTube - Hide ads:** Fix string typo ([ecc56d6](ecc56d6))
* **YouTube - Hide ads:** Prevent app crash if hiding fullscreen ads is not possible ([ReVanced#2910](https://github.com/n-34/revanced-patches/issues/2910)) ([9f50470](9f50470))
* **YouTube - Hide ads:** rename `Hide paid content` to `Hide paid promotion label` ([ReVanced#3026](https://github.com/n-34/revanced-patches/issues/3026)) ([17e4ac9](17e4ac9))
* **YouTube - Hide load more button:** Include patch with `Hide layout components`, and hide button only in search feed  ([ReVanced#2959](https://github.com/n-34/revanced-patches/issues/2959)) ([b007e8e](b007e8e))
* **YouTube - Hide Shorts components:** Correctly hide Shorts if navigation tab is changed using device back button ([ReVanced#3007](https://github.com/n-34/revanced-patches/issues/3007)) ([e5848e9](e5848e9))
* **YouTube - Hide Shorts components:** Rename option title to make it consistent ([4d6e34b](4d6e34b))
* **YouTube - Hide video action buttons:** Remove obsolete `hide Shop button` ([ReVanced#3057](https://github.com/n-34/revanced-patches/issues/3057)) ([b5e34f3](b5e34f3))
* **YouTube - Navigation buttons:** Adjust summary text of switch notification button ([ReVanced#3130](https://github.com/n-34/revanced-patches/issues/3130)) ([cc8b4c9](cc8b4c9))
* **YouTube - Player flyout menu:** Add hide Lock screen menu ([ReVanced#2985](https://github.com/n-34/revanced-patches/issues/2985)) ([308de4a](308de4a))
* **YouTube - Player flyout menu:** Remove obsolete `Hide report menu` ([d627d44](d627d44))
* **YouTube - Restore old video quality menu:** Show advanced quality menu in Shorts quality flyout ([ReVanced#3155](https://github.com/n-34/revanced-patches/issues/3155)) ([c2b5bb7](c2b5bb7))
* **YouTube - SponsorBlock:** Export local statistics with saved settings ([f8365b4](f8365b4))
* **YouTube - SponsorBlock:** Show correct segment times if video is over 24 hours in length ([ReVanced#3138](https://github.com/n-34/revanced-patches/issues/3138)) ([6cdf697](6cdf697))
* **YouTube - Spoof app version:** Remove broken versions ([ReVanced#2776](https://github.com/n-34/revanced-patches/issues/2776)) ([9466d97](9466d97))
* **YouTube - Spoof device dimensions:** Warn about potential performance issues ([ReVanced#3039](https://github.com/n-34/revanced-patches/issues/3039)) ([9d6f305](9d6f305))
* **YouTube - Spoof signature:** Fix tracking such as history or watch time ([bcd8b48](bcd8b48))
* **YouTube Music - Remove upgrade button:** Fix compatibility with latest versions ([ReVanced#3045](https://github.com/n-34/revanced-patches/issues/3045)) ([80de996](80de996))
* **YouTube Music:** Fix compatibility with latest versions ([ReVanced#2924](https://github.com/n-34/revanced-patches/issues/2924)) ([8378c84](8378c84))
* **YouTube Music:** Make `Hide 'Get Music Premium' label` and `Remove upgrade button` compatible with latest version ([ReVanced#3164](https://github.com/n-34/revanced-patches/issues/3164)) ([3ff20de](3ff20de))
* **YouTube:** Correctly show channel page on tablet devices ([ReVanced#2656](https://github.com/n-34/revanced-patches/issues/2656)) ([c7c9700](c7c9700))
* **YouTube:** Do not crash on startup for root installs ([ReVanced#2655](https://github.com/n-34/revanced-patches/issues/2655)) ([02abace](02abace))
* **YouTube:** Fix grammer mistakes in patch descriptions ([ReVanced#2543](https://github.com/n-34/revanced-patches/issues/2543)) ([ebf5993](ebf5993))
* **YouTube:** Fix video playback by switching to ReVanced GmsCore vendor ([ReVanced#2907](https://github.com/n-34/revanced-patches/issues/2907)) ([33ea122](33ea122))
* **YouTube:** Move setting to correct screen ([a16eda8](a16eda8))
* **YouTube:** Shorten setting titles to fit on screen ([ReVanced#2579](https://github.com/n-34/revanced-patches/issues/2579)) ([b2a5dd3](b2a5dd3))

### Code Refactoring

* Fix package and code structure ([ReVanced#2541](https://github.com/n-34/revanced-patches/issues/2541)) ([a08457e](a08457e))

### Features

* Add `Hex` patch ([ReVanced#3034](https://github.com/n-34/revanced-patches/issues/3034)) ([3c95aac](3c95aac))
* **Amazon:** Add `Always allow deep-linking` patch ([ReVanced#3000](https://github.com/n-34/revanced-patches/issues/3000)) ([a92b7fb](a92b7fb))
* **Change package name:** Mention caveat of the patch in the description ([427b81a](427b81a))
* **ID Austria:** Remove constraint on any version ([ReVanced#2526](https://github.com/n-34/revanced-patches/issues/2526)) ([de2cb88](de2cb88))
* **Instagram - Hide timeline ads:** Make compatible with latest versions ([a212f29](a212f29))
* **Mi Fitness:** Add `Force English locale` and `Fix login` patch ([ReVanced#2734](https://github.com/n-34/revanced-patches/issues/2734)) ([7a25791](7a25791))
* Move strings to resources for localization ([ReVanced#2440](https://github.com/n-34/revanced-patches/issues/2440)) ([060ab8f](060ab8f))
* **MyFitnessPal:** Add `Hide ads` patch ([ReVanced#2594](https://github.com/n-34/revanced-patches/issues/2594)) ([fd4b3c7](fd4b3c7))
* **OpeningHours:** Add `Fix crash` patch ([ReVanced#2697](https://github.com/n-34/revanced-patches/issues/2697)) ([0d011b8](0d011b8))
* **Photomath:** Add `Hide update popup` patch ([ReVanced#2637](https://github.com/n-34/revanced-patches/issues/2637)) ([fbbecd3](fbbecd3))
* **Photomath:** Support version `8.37.0` ([ReVanced#3109](https://github.com/n-34/revanced-patches/issues/3109)) ([fb02b48](fb02b48))
* **Piccoma:** Add `Disable tracking` patch ([ReVanced#3143](https://github.com/n-34/revanced-patches/issues/3143)) ([8ab9e8f](8ab9e8f))
* **Piccoma:** Add `Spoof Android device ID` patch ([ReVanced#3145](https://github.com/n-34/revanced-patches/issues/3145)) ([d953c6b](d953c6b))
* **Public API:** Deprecate `HideEmailAddressPatch` ([866bceb](866bceb))
* **Public API:** Make `BottomControlsResource#addControls` public ([ReVanced#2514](https://github.com/n-34/revanced-patches/issues/2514)) ([f4e2257](f4e2257))
* Remove unnecessary description from patch ([1a89dd9](1a89dd9))
* **Strava - Unlock subscription:** Remove compatible version constraint ([80a5599](80a5599))
* **Sync for Lemmy:** Add `Disable ads` patch ([ReVanced#2872](https://github.com/n-34/revanced-patches/issues/2872)) ([0785819](0785819))
* **Sync for Reddit:** Add `Fix /s/ links` patch ([f15ef3f](f15ef3f))
* **Tiktok - Playback speed:** Remember playback speed ([ReVanced#2506](https://github.com/n-34/revanced-patches/issues/2506)) ([d2970e5](d2970e5))
* **Tiktok:** Add `Remember clear mode` patch ([ReVanced#2509](https://github.com/n-34/revanced-patches/issues/2509)) ([048bf59](048bf59))
* **Tumblr:** Add `Disable Ad-Free Banner` patch ([ReVanced#3091](https://github.com/n-34/revanced-patches/issues/3091)) ([54baf08](54baf08))
* **Tumblr:** Add `Fix old versions` patch ([ReVanced#2954](https://github.com/n-34/revanced-patches/issues/2954)) ([2fde60e](2fde60e))
* **Twitter - Unlock downloads:** Unlock GIF downloads ([d0f91c8](d0f91c8))
* **Twitter:** Add `Sanitize sharing links` patch ([ReVanced#3003](https://github.com/n-34/revanced-patches/issues/3003)) ([186b887](186b887))
* **VSCO - Unlock pro:** Constrain to last working version ([6dd4a7c](6dd4a7c))
* **WarnWetter - Promo code unlock:** Constrain to last working version ([ReVanced#3110](https://github.com/n-34/revanced-patches/issues/3110)) ([92fc8aa](92fc8aa))
* **X:** Add `Hide view count` patch ([bf064ec](bf064ec))
* **X:** Add `Open links as query` patch ([ReVanced#2730](https://github.com/n-34/revanced-patches/issues/2730)) ([ba75a51](ba75a51))
* **X:** Add `Unlock downloads` patch ([2c20844](2c20844))
* **YouTube - Alternative thumbnails:** Selectively enable for home / subscription / search ([ReVanced#2926](https://github.com/n-34/revanced-patches/issues/2926)) ([8549e1b](8549e1b))
* **YouTube - Change header:** Change to ReVanced borderless logo header by default ([ReVanced#2512](https://github.com/n-34/revanced-patches/issues/2512)) ([75f785d](75f785d))
* **YouTube - Change header:** Improve patch option description ([3b8bc08](3b8bc08))
* **YouTube - Change start page:** Add more start pages ([cc1d9b7](cc1d9b7))
* **YouTube - Comments:** Add option to hide timestamp and emoji buttons ([ReVanced#3076](https://github.com/n-34/revanced-patches/issues/3076)) ([7efe5ae](7efe5ae))
* **YouTube - Custom branding:** Improve patch option description ([e27f56c](e27f56c))
* **YouTube - Custom filter:** Custom filtering of the protocol buffer ([ReVanced#2682](https://github.com/n-34/revanced-patches/issues/2682)) ([872a5b6](872a5b6))
* **YouTube - Downloads:** Use external downloader when selecting 'Download' in home feed flyout menu ([ReVanced#2881](https://github.com/n-34/revanced-patches/issues/2881)) ([10afc8c](10afc8c))
* **YouTube - External downloader:** Add ability to use in-app download button ([d900011](d900011))
* **YouTube - GmsCore:** Require ignoring battery optimizations ([ReVanced#2952](https://github.com/n-34/revanced-patches/issues/2952)) ([c0bef25](c0bef25))
* **YouTube - Hide ads:** Add option to hide the 'Visit store' button on channel pages ([ReVanced#3077](https://github.com/n-34/revanced-patches/issues/3077)) ([03d2cfa](03d2cfa))
* **YouTube - Hide ads:** Hide fullscreen ads ([bdc9a12](bdc9a12))
* **YouTube - Hide layout components:** Add option to hide horizontal shelves ([ReVanced#2951](https://github.com/n-34/revanced-patches/issues/2951)) ([9ae0650](9ae0650))
* **YouTube - Hide layout components:** Filter home/search results by keywords ([ReVanced#2853](https://github.com/n-34/revanced-patches/issues/2853)) ([5916204](5916204))
* **YouTube - Hide layout components:** Hide playables ([8423515](8423515))
* **YouTube - Hide layout components:** Hide search result recommendations ([55cc7f1](55cc7f1))
* **YouTube - Hide Shorts components:** Hide 'Buy super thanks' button ([ReVanced#3176](https://github.com/n-34/revanced-patches/issues/3176)) ([89c1548](89c1548))
* **YouTube - Hide Shorts components:** Hide `Shop`, `Location` and `Save sound to playlist` buttons ([ReVanced#3018](https://github.com/n-34/revanced-patches/issues/3018)) ([5210ac4](5210ac4))
* **YouTube - Hide Shorts components:** Hide like / dislike button in video ads ([ReVanced#3062](https://github.com/n-34/revanced-patches/issues/3062)) ([1296985](1296985))
* **YouTube - Hide Shorts components:** Hide like and dislike buttons ([2df0892](2df0892))
* **YouTube - Hide Shorts components:** Hide sound metadata label ([ea7d1e0](ea7d1e0))
* **YouTube - Hide Shorts components:** Hide tagged products, hide search suggestions ([ReVanced#3019](https://github.com/n-34/revanced-patches/issues/3019)) ([e0d2fe5](e0d2fe5))
* **YouTube - Hide Shorts components:** Hide title and full video link label ([e7b64e1](e7b64e1))
* **YouTube - Hide Shorts components:** Selectively hide Shorts for home / subscription / search ([ReVanced#2925](https://github.com/n-34/revanced-patches/issues/2925)) ([497c067](497c067))
* **YouTube - Navigation buttons:** Add option to hide navigation button labels ([ReVanced#3189](https://github.com/n-34/revanced-patches/issues/3189)) ([f9dc705](f9dc705))
* **YouTube - Spoof app version:** Add `18.09.39` to restore library tab ([ReVanced#2643](https://github.com/n-34/revanced-patches/issues/2643)) ([dd108ff](dd108ff))
* **YouTube - Spoof app version:** Add target versions ([ReVanced#2787](https://github.com/n-34/revanced-patches/issues/2787)) ([83a7bd8](83a7bd8))
* **YouTube - Swipe controls:** Save and restore brightness and add auto-brightness toggle ([ReVanced#2996](https://github.com/n-34/revanced-patches/issues/2996)) ([f6c3bc4](f6c3bc4))
* **YouTube - Theme:** Add classic dark color to presets ([ReVanced#2542](https://github.com/n-34/revanced-patches/issues/2542)) ([4e1dc00](4e1dc00))
* **YouTube :** Remove `HDR auto brightness` patch ([ReVanced#2863](https://github.com/n-34/revanced-patches/issues/2863)) ([b4c7bf4](b4c7bf4))
* **YouTube Vanced:** Remove `Hide ads` patch ([87887e4](87887e4))
* **YouTube:** Add 'About' preference to settings menu ([ReVanced#2981](https://github.com/n-34/revanced-patches/issues/2981)) ([5abf894](5abf894))
* **YouTube:** Add `Remove viewer discretion dialog` patch ([a07f83f](a07f83f))
* **YouTube:** Improve patch descriptions ([ReVanced#2519](https://github.com/n-34/revanced-patches/issues/2519)) ([e8d1389](e8d1389))
* **YouTube:** Match overlay icons style to YouTube ([ReVanced#3023](https://github.com/n-34/revanced-patches/issues/3023)) ([6849393](6849393))
* **YouTube:** Remove `Hide email address` patch ([3b84305](3b84305))
* **YouTube:** Reorganize settings menu ([ReVanced#2737](https://github.com/n-34/revanced-patches/issues/2737)) ([36132df](36132df))
* **YouTube:** Support version `19.02.34` ([ReVanced#2627](https://github.com/n-34/revanced-patches/issues/2627)) ([94e08b7](94e08b7))
* **YouTube:** Support version `19.03.35` ([ReVanced#2640](https://github.com/n-34/revanced-patches/issues/2640)) ([ff08f58](ff08f58))
* **YouTube:** Support version `19.04.37` ([ReVanced#2687](https://github.com/n-34/revanced-patches/issues/2687)) ([c23e023](c23e023))
* **YouTube:** Support version `19.05`, `19.06`, `19.07`, `19.08` and `19.09` ([ReVanced#2862](https://github.com/n-34/revanced-patches/issues/2862)) ([f044dde](f044dde))
* **YouTube:** Support version `19.09.38`, `19.10.39` and `19.11.43` ([ReVanced#2971](https://github.com/n-34/revanced-patches/issues/2971)) ([730f3e3](730f3e3))
* **YouTube:** Support versions `18.48.39`, `18.49.37` and `19.01.34` ([ReVanced#2551](https://github.com/n-34/revanced-patches/issues/2551)) ([a938e73](a938e73))
* **YT Music - Hide 'Get Music Premium' label:** Remove occurences of label in settings ([ReVanced#3046](https://github.com/n-34/revanced-patches/issues/3046)) ([10e170a](10e170a))
* **YT Music:** Add support for `7.01.52` ([ReVanced#3177](https://github.com/n-34/revanced-patches/issues/3177)) ([e9bfb25](e9bfb25))

### BREAKING CHANGES

* **Photomath:** Some packages have changed locations.
* Various APIs have been changed.
* Various public APIs have changed names and packages or were removed entirely
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants