Compare commits

...

415 Commits

Author SHA1 Message Date
semantic-release-bot
49b47fa772 chore(release): 2.195.0-dev.1 [skip ci]
# [2.195.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.194.1-dev.1...v2.195.0-dev.1) (2023-10-13)

### Features

* **YouTube - Theme:** Disable gradient loading screen ([daf125a](daf125a863))
2023-10-13 23:03:12 +00:00
oSumAtrIX
daf125a863 feat(YouTube - Theme): Disable gradient loading screen 2023-10-14 01:00:26 +02:00
oSumAtrIX
9121e0519b refactor: Only check literal instead of additionally the opcode 2023-10-14 00:59:58 +02:00
semantic-release-bot
b352f48cb1 chore(release): 2.194.1-dev.1 [skip ci]
## [2.194.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.194.0...v2.194.1-dev.1) (2023-10-13)

### Bug Fixes

* **YouTube - Hide layout components:** Hide new channel watermark component ([5184422](51844222c8))
2023-10-13 15:16:58 +00:00
oSumAtrIX
51844222c8 fix(YouTube - Hide layout components): Hide new channel watermark component 2023-10-13 17:14:05 +02:00
semantic-release-bot
87877a8f2f chore(release): 2.194.0 [skip ci]
# [2.194.0](https://github.com/ReVanced/revanced-patches/compare/v2.193.0...v2.194.0) (2023-10-12)

### Bug Fixes

* Fix builds ([8c53a6a](8c53a6ab82))
* **YouTube - ReturnYouTubeDislike:** Fix dislikes not showing on Shorts ([#3133](https://github.com/ReVanced/revanced-patches/issues/3133)) ([44e35bf](44e35bf8aa))
* **YouTube - Spoof app version:** Recommend clearing the app data after turning off spoofing ([#3134](https://github.com/ReVanced/revanced-patches/issues/3134)) ([99cf7ca](99cf7ca173))

### Features

* **CieID:** Add `bypass root check` patch ([#3011](https://github.com/ReVanced/revanced-patches/issues/3011)) ([c1df94a](c1df94ae0b))
* Do not support reading options from a properties file ([ab84dc7](ab84dc78b9))
* Improve option descriptions and titles ([be5df4d](be5df4d076))
2023-10-12 21:27:33 +00:00
oSumAtrIX
bff07aa5b8 chore: Merge branch dev to main (#3123) 2023-10-12 23:24:21 +02:00
semantic-release-bot
c575751dd4 chore(release): 2.194.0-dev.3 [skip ci]
# [2.194.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v2.194.0-dev.2...v2.194.0-dev.3) (2023-10-12)

### Bug Fixes

* Fix builds ([8c53a6a](8c53a6ab82))

### Features

* **CieID:** Add `bypass root check` patch ([#3011](https://github.com/ReVanced/revanced-patches/issues/3011)) ([c1df94a](c1df94ae0b))
2023-10-12 19:52:02 +00:00
oSumAtrIX
8c53a6ab82 fix: Fix builds 2023-10-12 21:49:13 +02:00
Gioele Pannetto
c1df94ae0b feat(CieID): Add bypass root check patch (#3011)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-10-12 20:05:27 +02:00
LisoUseInAIKyrios
f8c0286b15 chore(YouTube - ReturnYouTubeDislike): Adjust UI disclaimer from 'will' to 'may' 2023-10-12 14:10:39 +03:00
semantic-release-bot
d59431ed74 chore(release): 2.194.0-dev.2 [skip ci]
# [2.194.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.194.0-dev.1...v2.194.0-dev.2) (2023-10-12)

### Bug Fixes

* **YouTube - ReturnYouTubeDislike:** Fix dislikes not showing on Shorts ([#3133](https://github.com/ReVanced/revanced-patches/issues/3133)) ([44e35bf](44e35bf8aa))
2023-10-12 09:30:40 +00:00
LisoUseInAIKyrios
44e35bf8aa fix(YouTube - ReturnYouTubeDislike): Fix dislikes not showing on Shorts (#3133) 2023-10-12 12:27:49 +03:00
semantic-release-bot
1d90346f19 chore(release): 2.194.0-dev.1 [skip ci]
# [2.194.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.193.1-dev.2...v2.194.0-dev.1) (2023-10-12)

### Features

* Do not support reading options from a properties file ([ab84dc7](ab84dc78b9))
* Improve option descriptions and titles ([be5df4d](be5df4d076))
2023-10-12 00:20:18 +00:00
oSumAtrIX
ab84dc78b9 feat: Do not support reading options from a properties file
Previously needed because patch options could not be used comfortably in ReVanced Manager.
2023-10-12 02:16:34 +02:00
oSumAtrIX
be5df4d076 feat: Improve option descriptions and titles 2023-10-12 02:16:34 +02:00
semantic-release-bot
f73594c7e2 chore(release): 2.193.1-dev.2 [skip ci]
## [2.193.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.193.1-dev.1...v2.193.1-dev.2) (2023-10-11)

### Bug Fixes

* **YouTube - Spoof app version:** Recommend clearing the app data after turning off spoofing ([#3134](https://github.com/ReVanced/revanced-patches/issues/3134)) ([99cf7ca](99cf7ca173))
2023-10-11 20:19:31 +00:00
LisoUseInAIKyrios
99cf7ca173 fix(YouTube - Spoof app version): Recommend clearing the app data after turning off spoofing (#3134) 2023-10-11 23:16:13 +03:00
semantic-release-bot
6ad9225f3e chore(release): 2.193.1-dev.1 [skip ci]
## [2.193.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.193.0...v2.193.1-dev.1) (2023-10-09)
2023-10-09 16:58:22 +00:00
oSumAtrIX
540e6d63d1 build(Needs bump): Use artifacts from Jitpack 2023-10-09 18:54:59 +02:00
semantic-release-bot
a8b0781d76 chore(release): 2.193.0 [skip ci]
# [2.193.0](https://github.com/ReVanced/revanced-patches/compare/v2.192.0...v2.193.0) (2023-10-08)

### Bug Fixes

* **Boost for Reddit - Spoof client:** Set user-agent for OAuth requests to fix login ([07d98ab](07d98ab3f7))
* Consolidate patches ([#3098](https://github.com/ReVanced/revanced-patches/issues/3098)) ([b4d33a1](b4d33a1dcf))
* **Infinity for Reddit - Spoof client:** Set user-agent for OAuth requests to fix login ([caf1e6b](caf1e6b211))
* **Sync for Reddit - Spoof client:** Set user-agent for OAuth requests to fix login ([5bd5f87](5bd5f87315))
* **YouTube:** Sort settings alphabetically despite punctuation ([#3097](https://github.com/ReVanced/revanced-patches/issues/3097)) ([debb07a](debb07ae21))

### Features

* **YouTube - Hide shorts components:** Hide subscribe button when paused separately from subscribe button ([992d85d](992d85ded8))
* **YouTube - Return YouTube Dislike:** Support version `18.37.36` ([#3061](https://github.com/ReVanced/revanced-patches/issues/3061)) ([bd10651](bd10651c3b))
* **YouTube:** Add `Disable fine scrubbing gesture` patch ([0424cea](0424cea8f0))
* **YouTube:** Bump compatibility to `18.38.44` ([#3071](https://github.com/ReVanced/revanced-patches/issues/3071)) ([42aea0c](42aea0c9ca))
2023-10-08 01:46:47 +00:00
oSumAtrIX
e398968762 chore: Merge branch dev to main (#3087) 2023-10-08 03:43:50 +02:00
semantic-release-bot
cf8e8a44e4 chore(release): 2.193.0-dev.7 [skip ci]
# [2.193.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v2.193.0-dev.6...v2.193.0-dev.7) (2023-10-08)

### Features

* **YouTube:** Bump compatibility to `18.38.44` ([#3071](https://github.com/ReVanced/revanced-patches/issues/3071)) ([42aea0c](42aea0c9ca))
2023-10-08 01:40:43 +00:00
LisoUseInAIKyrios
42aea0c9ca feat(YouTube): Bump compatibility to 18.38.44 (#3071) 2023-10-08 03:37:42 +02:00
semantic-release-bot
d735520421 chore(release): 2.193.0-dev.6 [skip ci]
# [2.193.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v2.193.0-dev.5...v2.193.0-dev.6) (2023-10-08)

### Bug Fixes

* **YouTube:** Sort settings alphabetically despite punctuation ([#3097](https://github.com/ReVanced/revanced-patches/issues/3097)) ([debb07a](debb07ae21))
2023-10-08 01:29:00 +00:00
LisoUseInAIKyrios
debb07ae21 fix(YouTube): Sort settings alphabetically despite punctuation (#3097)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-10-08 03:25:27 +02:00
semantic-release-bot
2fe71a18ea chore(release): 2.193.0-dev.5 [skip ci]
# [2.193.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v2.193.0-dev.4...v2.193.0-dev.5) (2023-10-08)

### Bug Fixes

* Consolidate patches ([#3098](https://github.com/ReVanced/revanced-patches/issues/3098)) ([b4d33a1](b4d33a1dcf))
2023-10-08 01:25:15 +00:00
Pun Butrach
5b6e015e64 docs: Update social media links (#3091) 2023-10-08 03:22:17 +02:00
LisoUseInAIKyrios
b4d33a1dcf fix: Consolidate patches (#3098) 2023-10-08 03:21:28 +02:00
semantic-release-bot
ecb92d3f68 chore(release): 2.193.0-dev.4 [skip ci]
# [2.193.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v2.193.0-dev.3...v2.193.0-dev.4) (2023-10-08)

### Bug Fixes

* **Boost for Reddit - Spoof client:** Set user-agent for OAuth requests to fix login ([07d98ab](07d98ab3f7))
* **Infinity for Reddit - Spoof client:** Set user-agent for OAuth requests to fix login ([caf1e6b](caf1e6b211))
* **Sync for Reddit - Spoof client:** Set user-agent for OAuth requests to fix login ([5bd5f87](5bd5f87315))
2023-10-08 01:00:51 +00:00
oSumAtrIX
caf1e6b211 fix(Infinity for Reddit - Spoof client): Set user-agent for OAuth requests to fix login 2023-10-08 02:56:30 +02:00
oSumAtrIX
07d98ab3f7 fix(Boost for Reddit - Spoof client): Set user-agent for OAuth requests to fix login 2023-10-08 02:56:23 +02:00
oSumAtrIX
5bd5f87315 fix(Sync for Reddit - Spoof client): Set user-agent for OAuth requests to fix login 2023-10-08 02:56:08 +02:00
semantic-release-bot
fa0b788111 chore(release): 2.193.0-dev.3 [skip ci]
# [2.193.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v2.193.0-dev.2...v2.193.0-dev.3) (2023-10-07)

### Features

* **YouTube - Return YouTube Dislike:** Support version `18.37.36` ([#3061](https://github.com/ReVanced/revanced-patches/issues/3061)) ([bd10651](bd10651c3b))
2023-10-07 09:35:06 +00:00
oSumAtrIX
bd10651c3b feat(YouTube - Return YouTube Dislike): Support version 18.37.36 (#3061)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2023-10-07 13:31:35 +04:00
semantic-release-bot
2d65ef676d chore(release): 2.193.0-dev.2 [skip ci]
# [2.193.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.193.0-dev.1...v2.193.0-dev.2) (2023-10-07)

### Features

* **YouTube:** Add `Disable fine scrubbing gesture` patch ([0424cea](0424cea8f0))
2023-10-07 01:54:21 +00:00
oSumAtrIX
0424cea8f0 feat(YouTube): Add Disable fine scrubbing gesture patch 2023-10-07 03:50:42 +02:00
semantic-release-bot
f5acbe4315 chore(release): 2.193.0-dev.1 [skip ci]
# [2.193.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.192.0...v2.193.0-dev.1) (2023-10-05)

### Features

* **YouTube - Hide shorts components:** Hide subscribe button when paused separately from subscribe button ([992d85d](992d85ded8))
2023-10-05 16:52:40 +00:00
oSumAtrIX
992d85ded8 feat(YouTube - Hide shorts components): Hide subscribe button when paused separately from subscribe button 2023-10-05 18:49:07 +02:00
semantic-release-bot
f25d085d25 chore(release): 2.192.0 [skip ci]
# [2.192.0](https://github.com/ReVanced/revanced-patches/compare/v2.191.0...v2.192.0) (2023-10-05)

### Bug Fixes

* **Relay for Reddit - Spoof client:** Prevent OAuth login being disabled remotely ([fd2daa3](fd2daa37b1))
* Remove `dependencies` from generated JSON file ([23dec85](23dec85068))

### Features

* **TikTok:** Constrain patches to last working version ([9417b67](9417b67e74))
* **YouTube - Hide "Get YouTube Premium" advertisements:** Name patch correctly ([#3079](https://github.com/ReVanced/revanced-patches/issues/3079)) ([883f69e](883f69ee9a))
2023-10-05 16:18:54 +00:00
oSumAtrIX
002cc9d810 chore: Merge branch dev to main (#3074) 2023-10-05 18:15:56 +02:00
semantic-release-bot
2919eb26e6 chore(release): 2.192.0-dev.3 [skip ci]
# [2.192.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v2.192.0-dev.2...v2.192.0-dev.3) (2023-10-05)

### Bug Fixes

* **Relay for Reddit - Spoof client:** Prevent OAuth login being disabled remotely ([fd2daa3](fd2daa37b1))
2023-10-05 15:36:49 +00:00
oSumAtrIX
3b5141d4b4 build: Bump dependencies 2023-10-05 17:32:57 +02:00
oSumAtrIX
fd2daa37b1 fix(Relay for Reddit - Spoof client): Prevent OAuth login being disabled remotely 2023-10-05 17:28:10 +02:00
semantic-release-bot
9ff6f84642 chore(release): 2.192.0-dev.2 [skip ci]
# [2.192.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.192.0-dev.1...v2.192.0-dev.2) (2023-10-05)

### Features

* **TikTok:** Constrain patches to last working version ([9417b67](9417b67e74))
2023-10-05 14:35:30 +00:00
oSumAtrIX
9417b67e74 feat(TikTok): Constrain patches to last working version 2023-10-05 16:32:31 +02:00
semantic-release-bot
f41e657191 chore(release): 2.192.0-dev.1 [skip ci]
# [2.192.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.191.1-dev.1...v2.192.0-dev.1) (2023-10-05)

### Features

* **YouTube - Hide "Get YouTube Premium" advertisements:** Name patch correctly ([#3079](https://github.com/ReVanced/revanced-patches/issues/3079)) ([883f69e](883f69ee9a))
2023-10-05 03:08:38 +00:00
KobeW50
883f69ee9a feat(YouTube - Hide "Get YouTube Premium" advertisements): Name patch correctly (#3079)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-10-05 05:05:50 +02:00
semantic-release-bot
a7cf7e6d70 chore(release): 2.191.1-dev.1 [skip ci]
## [2.191.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.191.0...v2.191.1-dev.1) (2023-10-05)

### Bug Fixes

* Remove `dependencies` from generated JSON file ([23dec85](23dec85068))
2023-10-05 01:29:50 +00:00
oSumAtrIX
23dec85068 fix: Remove dependencies from generated JSON file
Dependencies have an internal use only.
2023-10-05 03:26:16 +02:00
semantic-release-bot
936c98c709 chore(release): 2.191.0 [skip ci]
# [2.191.0](https://github.com/ReVanced/revanced-patches/compare/v2.190.0...v2.191.0) (2023-10-04)

### Bug Fixes

* Add hooks to existing hook set ([f77d743](f77d743a92))
* **Duolingo - Unlock Super:** Get correct instruction offset ([#3023](https://github.com/ReVanced/revanced-patches/issues/3023)) ([144fabe](144fabe571))
* **Google Recorder - Remove device restrictions:** Clarify limitation ([5138197](5138197358))
* **Infinity for Reddit - Spoof client:** Constrain patch to last working versions ([#2944](https://github.com/ReVanced/revanced-patches/issues/2944)) ([728d49d](728d49ddb5))
* **Relay - Spoof client:** Restore OAuth login ([df43cea](df43cea4f8))
* **Slide - Spoof client:** Use correct patch name ([444b196](444b196f41))
* **Sync for Reddit:** Do not throw an error when not necessary ([cd54466](cd544669b2))
* **TikTok - Hide ads:** Constrain to last working version ([7d9ddc9](7d9ddc9203))
* **Twitch - Audio ads:** Support missing version `16.1.0` ([#2928](https://github.com/ReVanced/revanced-patches/issues/2928)) ([c0163c1](c0163c122c))
* Use consistent toggle description ([#2983](https://github.com/ReVanced/revanced-patches/issues/2983)) ([9470694](9470694cd4))
* Use correct instruction ([ff6daf5](ff6daf55e0))
* **YouTube - Client spoof:** adjust settings text ([#3035](https://github.com/ReVanced/revanced-patches/issues/3035)) ([1818074](18180745bc))
* **YouTube - Client spoof:** Display seekbar thumbnails in high quality ([54aa358](54aa358b9f))
* **YouTube - Client spoof:** Do not record feed videos to history by default ([#3017](https://github.com/ReVanced/revanced-patches/issues/3017)) ([e341191](e34119188a))
* **YouTube - Client spoof:** Removed unused code ([#3030](https://github.com/ReVanced/revanced-patches/issues/3030)) ([1532d89](1532d899b4))
* **YouTube - Client spoof:** Restore seekbar thumbnails ([7d822dd](7d822ddbec))
* **YouTube - Client spoof:** Show seekbar thumbnail for age restricted and paid videos ([287648c](287648cf1e))
* **YouTube - Custom filter:** Use new lines between components instead of commas ([#2952](https://github.com/ReVanced/revanced-patches/issues/2952)) ([6b3bde3](6b3bde3bda))
* **YouTube - Hide "Load more" button:** Use correct names ([be335ad](be335adeb9))
* **YouTube - Hide info cards:** Fix info cards not hiding for some users ([#3039](https://github.com/ReVanced/revanced-patches/issues/3039)) ([32599ab](32599ab13d))
* **YouTube - Hide layout components:** Always hide redundant 'player audio track' button ([#2951](https://github.com/ReVanced/revanced-patches/issues/2951)) ([1f96838](1f9683849f))
* **YouTube - Hide shorts components:** Fix hiding navigation bar ([1d23dcb](1d23dcb3ea))
* **YouTube - Premium heading:** Correct inverted logic ([#3042](https://github.com/ReVanced/revanced-patches/issues/3042)) ([0204ff6](0204ff67a9))
* **YouTube - ReturnYouTubeDislike:** Revert support for 18.37.36 ([#3041](https://github.com/ReVanced/revanced-patches/issues/3041)) ([26e0e4c](26e0e4cd1d))
* **YouTube - SponsorBlock:** Adjust import/export UI text ([#3063](https://github.com/ReVanced/revanced-patches/issues/3063)) ([224142b](224142ba19))
* **YouTube - Video Id:** Fix video id not showing the currently playing video ([#3038](https://github.com/ReVanced/revanced-patches/issues/3038)) ([47c858e](47c858ef4e))
* **YouTube:** Restore functionality of `Old video quality menu` and `Custom speeds` on tablets ([#2999](https://github.com/ReVanced/revanced-patches/issues/2999)) ([2a340d2](2a340d21d7))

### Features

* Add notice for thumbnails for age restricted or paid videos ([fb60603](fb60603782))
* **Duolingo:** Remove `Unlock Duolingo Super` patch ([99bc879](99bc87909e))
* **SPB Serviceportal Bund:** Add `Remove root detection` patch ([#3049](https://github.com/ReVanced/revanced-patches/issues/3049)) ([3e9e1e2](3e9e1e2577))
* **Strava:** Add `Disable subscription suggestions` patch ([#2997](https://github.com/ReVanced/revanced-patches/issues/2997)) ([ef24167](ef241671bd))
* **Sync for Reddit - Client spoof:** Restore upload functionality ([5b09ef7](5b09ef79a8))
* **TikTok - Hide ads:** Constrain to last working version ([d83ef1e](d83ef1ed59))
* **TU Dortmund:** Add `Show on lockscreen` patch ([#2947](https://github.com/ReVanced/revanced-patches/issues/2947)) ([04bc0f5](04bc0f54e3))
* **Tumblr:** Add `Disable blog notification reminder` patch ([74df205](74df205be5))
* **Tumblr:** Add `Disable dashboard ads` patch ([#2979](https://github.com/ReVanced/revanced-patches/issues/2979)) ([c322a9b](c322a9b7aa))
* **Tumblr:** Add `Disable gift message popup` patch ([3fc6453](3fc64530c5))
* **Tumblr:** Add `Disable in-app update` patch ([#3058](https://github.com/ReVanced/revanced-patches/issues/3058)) ([b078878](b07887800b))
* **Tumblr:** Add `Disable Tumblr Live` patch ([#2987](https://github.com/ReVanced/revanced-patches/issues/2987)) ([fd2c4d1](fd2c4d13a6))
* **Twitch - Block embedded ads:** Switch from `ttv.lol` to `luminous.dev` ([2957d37](2957d3791a))
* Use properties file for `Client spoof` patches ([7d50a7b](7d50a7b178))
* **YouTube - Hide layout components:** Hide "Join" button ([9546d12](9546d12218))
* **YouTube - Hide layout components:** Hide "Notify me" button ([b2b5594](b2b5594f6a))
* **YouTube - Hide layout components:** Hide search result shelf header ([2e7ab38](2e7ab38a3d))
* **YouTube - Hide layout components:** Hide timed reactions ([bf628dc](bf628dc0ea))
* **YouTube - Premium heading:** Allow using default heading ([#3029](https://github.com/ReVanced/revanced-patches/issues/3029)) ([acadac3](acadac3049))
* **YouTube - Spoof app version:** add version 18.20.39 ([#3001](https://github.com/ReVanced/revanced-patches/issues/3001)) ([b7b0e07](b7b0e076e7))
* **YouTube:** Add `Bypass URL redirects` patch ([01e3642](01e36428a0))
* **YouTube:** Bump compatibility to `18.37.36` ([#3028](https://github.com/ReVanced/revanced-patches/issues/3028)) ([73e8b3f](73e8b3f81b))
2023-10-04 23:41:17 +00:00
oSumAtrIX
ba92f2e5d9 chore: Merge branch dev to main (#2929) 2023-10-05 01:37:38 +02:00
semantic-release-bot
1f5c1d48a2 chore(release): 2.191.0-dev.33 [skip ci]
# [2.191.0-dev.33](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.32...v2.191.0-dev.33) (2023-10-04)

### Bug Fixes

* **TikTok - Hide ads:** Constrain to last working version ([7d9ddc9](7d9ddc9203))
2023-10-04 15:32:53 +00:00
oSumAtrIX
7d9ddc9203 fix(TikTok - Hide ads): Constrain to last working version 2023-10-04 17:30:00 +02:00
oSumAtrIX
0e0ea5d064 build: Bump dependencies 2023-10-04 04:19:22 +02:00
semantic-release-bot
4ba1ddde8f chore(release): 2.191.0-dev.32 [skip ci]
# [2.191.0-dev.32](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.31...v2.191.0-dev.32) (2023-10-03)

### Bug Fixes

* **Sync for Reddit:** Do not throw an error when not necessary ([cd54466](cd544669b2))

### Features

* **Sync for Reddit - Client spoof:** Restore upload functionality ([5b09ef7](5b09ef79a8))
* Use properties file for `Client spoof` patches ([7d50a7b](7d50a7b178))
2023-10-03 00:20:53 +00:00
oSumAtrIX
5b09ef79a8 feat(Sync for Reddit - Client spoof): Restore upload functionality 2023-10-03 02:14:42 +02:00
oSumAtrIX
cd544669b2 fix(Sync for Reddit): Do not throw an error when not necessary 2023-10-03 01:59:12 +02:00
oSumAtrIX
7d50a7b178 feat: Use properties file for Client spoof patches 2023-10-03 01:59:11 +02:00
semantic-release-bot
e153e97ed2 chore(release): 2.191.0-dev.31 [skip ci]
# [2.191.0-dev.31](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.30...v2.191.0-dev.31) (2023-10-02)

### Bug Fixes

* **YouTube - SponsorBlock:** Adjust import/export UI text ([#3063](https://github.com/ReVanced/revanced-patches/issues/3063)) ([224142b](224142ba19))
2023-10-02 21:30:48 +00:00
LisoUseInAIKyrios
224142ba19 fix(YouTube - SponsorBlock): Adjust import/export UI text (#3063) 2023-10-03 01:27:43 +04:00
oSumAtrIX
8c5239d6b5 build: Bump dependencies 2023-10-02 16:25:13 +02:00
semantic-release-bot
43533f6c09 chore(release): 2.191.0-dev.30 [skip ci]
# [2.191.0-dev.30](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.29...v2.191.0-dev.30) (2023-10-02)

### Bug Fixes

* Add hooks to existing hook set ([f77d743](f77d743a92))
* **Google Recorder - Remove device restrictions:** Clarify limitation ([5138197](5138197358))

### Features

* **YouTube - Hide layout components:** Hide search result shelf header ([2e7ab38](2e7ab38a3d))
2023-10-02 14:24:57 +00:00
oSumAtrIX
f77d743a92 fix: Add hooks to existing hook set
Previously, the hooks were just combined to a new set and returned, without adding them to original mutable set.
2023-10-02 16:21:03 +02:00
oSumAtrIX
27a346d74b refactor: Move classes to correct path 2023-10-02 16:21:03 +02:00
oSumAtrIX
5138197358 fix(Google Recorder - Remove device restrictions): Clarify limitation 2023-10-02 16:21:02 +02:00
oSumAtrIX
2e7ab38a3d feat(YouTube - Hide layout components): Hide search result shelf header 2023-10-02 16:21:02 +02:00
semantic-release-bot
47e1bcbafa chore(release): 2.191.0-dev.29 [skip ci]
# [2.191.0-dev.29](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.28...v2.191.0-dev.29) (2023-10-01)

### Features

* **TikTok - Hide ads:** Constrain to last working version ([d83ef1e](d83ef1ed59))
2023-10-01 22:57:25 +00:00
oSumAtrIX
d83ef1ed59 feat(TikTok - Hide ads): Constrain to last working version 2023-10-02 00:54:29 +02:00
semantic-release-bot
3f397dabf7 chore(release): 2.191.0-dev.28 [skip ci]
# [2.191.0-dev.28](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.27...v2.191.0-dev.28) (2023-10-01)

### Bug Fixes

* **YouTube - Hide "Load more" button:** Use correct names ([be335ad](be335adeb9))
* **YouTube - Hide shorts components:** Fix hiding navigation bar ([1d23dcb](1d23dcb3ea))
2023-10-01 22:45:12 +00:00
oSumAtrIX
1d23dcb3ea fix(YouTube - Hide shorts components): Fix hiding navigation bar 2023-10-02 00:41:51 +02:00
oSumAtrIX
be335adeb9 fix(YouTube - Hide "Load more" button): Use correct names 2023-10-02 00:41:51 +02:00
semantic-release-bot
7422617dc5 chore(release): 2.191.0-dev.27 [skip ci]
# [2.191.0-dev.27](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.26...v2.191.0-dev.27) (2023-10-01)

### Features

* **Tumblr:** Add `Disable in-app update` patch ([#3058](https://github.com/ReVanced/revanced-patches/issues/3058)) ([b078878](b07887800b))
2023-10-01 17:36:51 +00:00
Temm
b07887800b feat(Tumblr): Add Disable in-app update patch (#3058)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-10-01 19:34:03 +02:00
semantic-release-bot
0c5d846192 chore(release): 2.191.0-dev.26 [skip ci]
# [2.191.0-dev.26](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.25...v2.191.0-dev.26) (2023-10-01)

### Bug Fixes

* Use correct instruction ([ff6daf5](ff6daf55e0))
2023-10-01 04:18:55 +00:00
oSumAtrIX
ff6daf55e0 fix: Use correct instruction 2023-10-01 06:15:56 +02:00
Temm
2d33ba68b3 refactor(Tumblr): Use a common filter patch (#3018)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-10-01 05:11:48 +02:00
semantic-release-bot
f703c9ab81 chore(release): 2.191.0-dev.25 [skip ci]
# [2.191.0-dev.25](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.24...v2.191.0-dev.25) (2023-10-01)

### Features

* **YouTube - Hide layout components:** Hide "Join" button ([9546d12](9546d12218))
* **YouTube - Hide layout components:** Hide "Notify me" button ([b2b5594](b2b5594f6a))
* **YouTube - Hide layout components:** Hide timed reactions ([bf628dc](bf628dc0ea))
2023-10-01 03:10:26 +00:00
oSumAtrIX
9546d12218 feat(YouTube - Hide layout components): Hide "Join" button 2023-10-01 05:07:30 +02:00
oSumAtrIX
b2b5594f6a feat(YouTube - Hide layout components): Hide "Notify me" button 2023-10-01 05:04:44 +02:00
oSumAtrIX
bf628dc0ea feat(YouTube - Hide layout components): Hide timed reactions 2023-10-01 05:02:36 +02:00
semantic-release-bot
5f2536814d chore(release): 2.191.0-dev.24 [skip ci]
# [2.191.0-dev.24](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.23...v2.191.0-dev.24) (2023-09-30)

### Features

* **Duolingo:** Remove `Unlock Duolingo Super` patch ([99bc879](99bc87909e))
2023-09-30 20:04:23 +00:00
oSumAtrIX
99bc87909e feat(Duolingo): Remove Unlock Duolingo Super patch
The patch is not functional anymore, and is being removed according to the contribution guidelines
2023-09-30 22:00:50 +02:00
semantic-release-bot
928df2428d chore(release): 2.191.0-dev.23 [skip ci]
# [2.191.0-dev.23](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.22...v2.191.0-dev.23) (2023-09-30)

### Features

* **SPB Serviceportal Bund:** Add `Remove root detection` patch ([#3049](https://github.com/ReVanced/revanced-patches/issues/3049)) ([3e9e1e2](3e9e1e2577))
2023-09-30 17:25:56 +00:00
David Gnedt
3e9e1e2577 feat(SPB Serviceportal Bund): Add Remove root detection patch (#3049) 2023-09-30 19:22:03 +02:00
semantic-release-bot
5ebec9b424 chore(release): 2.191.0-dev.22 [skip ci]
# [2.191.0-dev.22](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.21...v2.191.0-dev.22) (2023-09-28)

### Bug Fixes

* **YouTube - Premium heading:** Correct inverted logic ([#3042](https://github.com/ReVanced/revanced-patches/issues/3042)) ([0204ff6](0204ff67a9))
2023-09-28 16:10:57 +00:00
aliernfrog
0204ff67a9 fix(YouTube - Premium heading): Correct inverted logic (#3042) 2023-09-28 18:07:55 +02:00
semantic-release-bot
7d2a707030 chore(release): 2.191.0-dev.21 [skip ci]
# [2.191.0-dev.21](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.20...v2.191.0-dev.21) (2023-09-28)

### Bug Fixes

* **YouTube - ReturnYouTubeDislike:** Revert support for 18.37.36 ([#3041](https://github.com/ReVanced/revanced-patches/issues/3041)) ([26e0e4c](26e0e4cd1d))
2023-09-28 13:42:22 +00:00
LisoUseInAIKyrios
26e0e4cd1d fix(YouTube - ReturnYouTubeDislike): Revert support for 18.37.36 (#3041) 2023-09-28 17:39:29 +04:00
semantic-release-bot
40f0a8cd0d chore(release): 2.191.0-dev.20 [skip ci]
# [2.191.0-dev.20](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.19...v2.191.0-dev.20) (2023-09-28)

### Bug Fixes

* **YouTube - Video Id:** Fix video id not showing the currently playing video ([#3038](https://github.com/ReVanced/revanced-patches/issues/3038)) ([47c858e](47c858ef4e))
2023-09-28 13:15:01 +00:00
LisoUseInAIKyrios
47c858ef4e fix(YouTube - Video Id): Fix video id not showing the currently playing video (#3038)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-09-28 15:11:58 +02:00
LisoUseInAIKyrios
b17cd14d7d chore: add missing version 2023-09-28 11:42:15 +04:00
semantic-release-bot
c7383bdf67 chore(release): 2.191.0-dev.19 [skip ci]
# [2.191.0-dev.19](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.18...v2.191.0-dev.19) (2023-09-28)

### Features

* **YouTube:** Add `Bypass URL redirects` patch ([01e3642](01e36428a0))
2023-09-28 02:51:14 +00:00
oSumAtrIX
01e36428a0 feat(YouTube): Add Bypass URL redirects patch 2023-09-28 04:47:41 +02:00
semantic-release-bot
187c1eb14a chore(release): 2.191.0-dev.18 [skip ci]
# [2.191.0-dev.18](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.17...v2.191.0-dev.18) (2023-09-28)

### Features

* **YouTube - Premium heading:** Allow using default heading ([#3029](https://github.com/ReVanced/revanced-patches/issues/3029)) ([acadac3](acadac3049))
2023-09-28 01:06:04 +00:00
aliernfrog
acadac3049 feat(YouTube - Premium heading): Allow using default heading (#3029)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-09-28 03:03:07 +02:00
semantic-release-bot
bf5c197eb8 chore(release): 2.191.0-dev.17 [skip ci]
# [2.191.0-dev.17](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.16...v2.191.0-dev.17) (2023-09-27)

### Features

* **YouTube:** Bump compatibility to `18.37.36` ([#3028](https://github.com/ReVanced/revanced-patches/issues/3028)) ([73e8b3f](73e8b3f81b))
2023-09-27 23:32:02 +00:00
oSumAtrIX
73e8b3f81b feat(YouTube): Bump compatibility to 18.37.36 (#3028)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2023-09-28 01:28:25 +02:00
semantic-release-bot
1c2f499b1c chore(release): 2.191.0-dev.16 [skip ci]
# [2.191.0-dev.16](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.15...v2.191.0-dev.16) (2023-09-27)

### Bug Fixes

* **YouTube - Hide info cards:** Fix info cards not hiding for some users ([#3039](https://github.com/ReVanced/revanced-patches/issues/3039)) ([32599ab](32599ab13d))
2023-09-27 20:23:09 +00:00
LisoUseInAIKyrios
32599ab13d fix(YouTube - Hide info cards): Fix info cards not hiding for some users (#3039) 2023-09-28 00:18:31 +04:00
oSumAtrIX
19519d1d06 ci: Bump checkout action 2023-09-27 18:03:12 +02:00
LisoUseInAIKyrios
2ff70e8b8f chore: fix typo 2023-09-27 18:31:27 +04:00
semantic-release-bot
1e21b0b572 chore(release): 2.191.0-dev.15 [skip ci]
# [2.191.0-dev.15](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.14...v2.191.0-dev.15) (2023-09-26)

### Bug Fixes

* **YouTube - Client spoof:** adjust settings text ([#3035](https://github.com/ReVanced/revanced-patches/issues/3035)) ([1818074](18180745bc))
2023-09-26 18:29:52 +00:00
LisoUseInAIKyrios
18180745bc fix(YouTube - Client spoof): adjust settings text (#3035) 2023-09-26 22:27:12 +04:00
semantic-release-bot
aa89b8d20c chore(release): 2.191.0-dev.14 [skip ci]
# [2.191.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.13...v2.191.0-dev.14) (2023-09-26)

### Bug Fixes

* **YouTube - Client spoof:** Show seekbar thumbnail for age restricted and paid videos ([287648c](287648cf1e))
2023-09-26 02:51:39 +00:00
oSumAtrIX
287648cf1e fix(YouTube - Client spoof): Show seekbar thumbnail for age restricted and paid videos 2023-09-26 04:48:37 +02:00
semantic-release-bot
c4554b3564 chore(release): 2.191.0-dev.13 [skip ci]
# [2.191.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.12...v2.191.0-dev.13) (2023-09-25)

### Bug Fixes

* **YouTube - Client spoof:** Removed unused code ([#3030](https://github.com/ReVanced/revanced-patches/issues/3030)) ([1532d89](1532d899b4))
2023-09-25 22:49:26 +00:00
LisoUseInAIKyrios
1532d899b4 fix(YouTube - Client spoof): Removed unused code (#3030)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-09-26 00:46:35 +02:00
semantic-release-bot
8ac18e6e23 chore(release): 2.191.0-dev.12 [skip ci]
# [2.191.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.11...v2.191.0-dev.12) (2023-09-25)

### Bug Fixes

* **YouTube - Client spoof:** Display seekbar thumbnails in high quality ([54aa358](54aa358b9f))
2023-09-25 21:54:35 +00:00
oSumAtrIX
54aa358b9f fix(YouTube - Client spoof): Display seekbar thumbnails in high quality 2023-09-25 23:50:51 +02:00
semantic-release-bot
147d0eef34 chore(release): 2.191.0-dev.11 [skip ci]
# [2.191.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.10...v2.191.0-dev.11) (2023-09-25)

### Features

* Add notice for thumbnails for age restricted or paid videos ([fb60603](fb60603782))
2023-09-25 18:12:05 +00:00
oSumAtrIX
fb60603782 feat: Add notice for thumbnails for age restricted or paid videos 2023-09-25 19:33:53 +02:00
semantic-release-bot
18a2a4ceb4 chore(release): 2.191.0-dev.10 [skip ci]
# [2.191.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.9...v2.191.0-dev.10) (2023-09-25)

### Bug Fixes

* **YouTube - Client spoof:** Restore seekbar thumbnails ([7d822dd](7d822ddbec))
2023-09-25 14:37:23 +00:00
oSumAtrIX
7d822ddbec fix(YouTube - Client spoof): Restore seekbar thumbnails
This works around the issue, but causes seekbar thumbnails to be in low quality.
2023-09-25 16:34:08 +02:00
semantic-release-bot
e74e65364a chore(release): 2.191.0-dev.9 [skip ci]
# [2.191.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.8...v2.191.0-dev.9) (2023-09-25)

### Features

* **Strava:** Add `Disable subscription suggestions` patch ([#2997](https://github.com/ReVanced/revanced-patches/issues/2997)) ([ef24167](ef241671bd))
2023-09-25 14:32:01 +00:00
xehpuk
ef241671bd feat(Strava): Add Disable subscription suggestions patch (#2997)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-09-25 16:29:06 +02:00
LisoUseInAIKyrios
096fc12123 build: fix aapt compilation error 2023-09-25 14:03:48 +04:00
semantic-release-bot
f166bd7ea7 chore(release): 2.191.0-dev.8 [skip ci]
# [2.191.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.7...v2.191.0-dev.8) (2023-09-24)

### Bug Fixes

* **Relay - Spoof client:** Restore OAuth login ([df43cea](df43cea4f8))
* **Slide - Spoof client:** Use correct patch name ([444b196](444b196f41))
2023-09-24 21:57:15 +00:00
oSumAtrIX
df43cea4f8 fix(Relay - Spoof client): Restore OAuth login 2023-09-24 23:54:26 +02:00
oSumAtrIX
444b196f41 fix(Slide - Spoof client): Use correct patch name 2023-09-24 23:52:46 +02:00
semantic-release-bot
884bf29804 chore(release): 2.191.0-dev.7 [skip ci]
# [2.191.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.6...v2.191.0-dev.7) (2023-09-24)

### Bug Fixes

* **Duolingo - Unlock Super:** Get correct instruction offset ([#3023](https://github.com/ReVanced/revanced-patches/issues/3023)) ([144fabe](144fabe571))
2023-09-24 15:10:12 +00:00
Oyssale
144fabe571 fix(Duolingo - Unlock Super): Get correct instruction offset (#3023) 2023-09-24 17:07:10 +02:00
semantic-release-bot
98b7dcc600 chore(release): 2.191.0-dev.6 [skip ci]
# [2.191.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.5...v2.191.0-dev.6) (2023-09-23)

### Bug Fixes

* **YouTube - Client spoof:** Do not record feed videos to history by default ([#3017](https://github.com/ReVanced/revanced-patches/issues/3017)) ([e341191](e34119188a))

### Features

* **Tumblr:** Add `Disable Tumblr Live` patch ([#2987](https://github.com/ReVanced/revanced-patches/issues/2987)) ([fd2c4d1](fd2c4d13a6))
* **YouTube - Spoof app version:** add version 18.20.39 ([#3001](https://github.com/ReVanced/revanced-patches/issues/3001)) ([b7b0e07](b7b0e076e7))
2023-09-23 21:51:42 +00:00
oSumAtrIX
e34119188a fix(YouTube - Client spoof): Do not record feed videos to history by default (#3017) 2023-09-23 23:48:45 +02:00
semantic-release-bot
3433acfb1b chore(release): 2.191.0-dev.6 [skip ci]
# [2.191.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.5...v2.191.0-dev.6) (2023-09-23)

### Features

* **Tumblr:** Add `Disable Tumblr Live` patch ([#2987](https://github.com/ReVanced/revanced-patches/issues/2987)) ([fd2c4d1](fd2c4d13a6))
* **YouTube - Spoof app version:** add version 18.20.39 ([#3001](https://github.com/ReVanced/revanced-patches/issues/3001)) ([b7b0e07](b7b0e076e7))
2023-09-23 16:38:55 +00:00
oSumAtrIX
3f4cfec2ae ci: Use better workflow name and PR message 2023-09-23 18:34:59 +02:00
oSumAtrIX
9ea14935ee chore: Simplify template chooser 2023-09-22 03:35:15 +02:00
oSumAtrIX
7d7f179e76 docs: Fix links and issue templates 2023-09-22 03:35:15 +02:00
oSumAtrIX
f09c35dc3d chore: Simplify issue templates 2023-09-22 03:32:01 +02:00
semantic-release-bot
8e318b81dd chore(release): 2.191.0-dev.6 [skip ci]
# [2.191.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.5...v2.191.0-dev.6) (2023-09-21)

### Features

* **Tumblr:** Add `Disable Tumblr Live` patch ([#2987](https://github.com/ReVanced/revanced-patches/issues/2987)) ([fd2c4d1](fd2c4d13a6))
* **YouTube - Spoof app version:** add version 18.20.39 ([#3001](https://github.com/ReVanced/revanced-patches/issues/3001)) ([b7b0e07](b7b0e076e7))
2023-09-21 23:09:13 +00:00
oSumAtrIX
aaf5b5abe1 chore: Simplify issue templates 2023-09-22 01:06:17 +02:00
semantic-release-bot
0c7c1de164 chore(release): 2.191.0-dev.6 [skip ci]
# [2.191.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.5...v2.191.0-dev.6) (2023-09-20)

### Features

* **Tumblr:** Add `Disable Tumblr Live` patch ([#2987](https://github.com/ReVanced/revanced-patches/issues/2987)) ([fd2c4d1](fd2c4d13a6))
* **YouTube - Spoof app version:** add version 18.20.39 ([#3001](https://github.com/ReVanced/revanced-patches/issues/3001)) ([b7b0e07](b7b0e076e7))
2023-09-20 19:39:26 +00:00
Julienraptor01
b7b0e076e7 feat(YouTube - Spoof app version): add version 18.20.39 (#3001)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-09-20 23:36:35 +04:00
semantic-release-bot
04d42f8d5b chore(release): 2.191.0-dev.6 [skip ci]
# [2.191.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.5...v2.191.0-dev.6) (2023-09-20)

### Features

* **Tumblr:** Add `Disable Tumblr Live` patch ([#2987](https://github.com/ReVanced/revanced-patches/issues/2987)) ([fd2c4d1](fd2c4d13a6))
2023-09-20 16:18:40 +00:00
Temm
fd2c4d13a6 feat(Tumblr): Add Disable Tumblr Live patch (#2987)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-09-20 18:15:23 +02:00
semantic-release-bot
ece4e3ba37 chore(release): 2.191.0-dev.6 [skip ci]
# [2.191.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.5...v2.191.0-dev.6) (2023-09-20)
2023-09-20 06:27:30 +02:00
oSumAtrIX
8c8dff9078 build(Needs bump): Bump dependencies (#2946)
Co-authored-by: Ushie <ushiekane@gmail.com>
Co-authored-by: aAbed <aabedhkhan@gmail.com>
Co-authored-by: CnC-Robert <CnC.Rob3rt@gmail.com>
2023-09-20 06:27:29 +02:00
semantic-release-bot
fe3a6fd4a4 chore(release): 2.191.0-dev.5 [skip ci]
# [2.191.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.4...v2.191.0-dev.5) (2023-09-19)

### Bug Fixes

* **YouTube:** Restore functionality of `Old video quality menu` and `Custom speeds` on tablets ([#2999](https://github.com/ReVanced/revanced-patches/issues/2999)) ([2a340d2](2a340d21d7))
2023-09-19 02:25:21 +00:00
LisoUseInAIKyrios
2a340d21d7 fix(YouTube): Restore functionality of Old video quality menu and Custom speeds on tablets (#2999) 2023-09-19 06:22:38 +04:00
oSumAtrIX
ce6a9fc1ec docs: Update YouTube channel link 2023-09-18 06:04:04 +02:00
semantic-release-bot
632b50e1fe chore(release): 2.191.0-dev.4 [skip ci]
# [2.191.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.3...v2.191.0-dev.4) (2023-09-14)

### Features

* **Twitch - Block embedded ads:** Switch from `ttv.lol` to `luminous.dev` ([2957d37](2957d3791a))
2023-09-14 21:25:36 +00:00
oSumAtrIX
2957d3791a feat(Twitch - Block embedded ads): Switch from ttv.lol to luminous.dev 2023-09-14 23:11:13 +02:00
semantic-release-bot
f894561817 chore(release): 2.191.0-dev.3 [skip ci]
# [2.191.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.2...v2.191.0-dev.3) (2023-09-14)

### Features

* **TU Dortmund:** Add `Show on lockscreen` patch ([#2947](https://github.com/ReVanced/revanced-patches/issues/2947)) ([04bc0f5](04bc0f54e3))
* **Tumblr:** Add `Disable blog notification reminder` patch ([74df205](74df205be5))
* **Tumblr:** Add `Disable gift message popup` patch ([3fc6453](3fc64530c5))
2023-09-14 01:15:14 +00:00
Traktores
04bc0f54e3 feat(TU Dortmund): Add Show on lockscreen patch (#2947)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-09-14 03:12:22 +02:00
Temm
3fc64530c5 feat(Tumblr): Add Disable gift message popup patch 2023-09-14 03:09:04 +02:00
Temm
74df205be5 feat(Tumblr): Add Disable blog notification reminder patch 2023-09-14 03:09:04 +02:00
oSumAtrIX
a09797710e docs: Add readme 2023-09-14 02:53:26 +02:00
oSumAtrIX
5f43afcbaf docs: Add contribution guidelines 2023-09-14 02:52:56 +02:00
semantic-release-bot
a9308d46e2 chore(release): 2.191.0-dev.2 [skip ci]
# [2.191.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.191.0-dev.1...v2.191.0-dev.2) (2023-09-11)

### Bug Fixes

* Use consistent toggle description ([#2983](https://github.com/ReVanced/revanced-patches/issues/2983)) ([9470694](9470694cd4))
2023-09-11 23:39:48 +00:00
KobeW50
9470694cd4 fix: Use consistent toggle description (#2983) 2023-09-12 01:36:20 +02:00
semantic-release-bot
06503e9527 chore(release): 2.191.0-dev.1 [skip ci]
# [2.191.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.190.1-dev.4...v2.191.0-dev.1) (2023-09-11)

### Features

* **Tumblr:** Add `Disable dashboard ads` patch ([#2979](https://github.com/ReVanced/revanced-patches/issues/2979)) ([c322a9b](c322a9b7aa))
2023-09-11 17:34:07 +00:00
Temm
c322a9b7aa feat(Tumblr): Add Disable dashboard ads patch (#2979)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-09-11 19:31:24 +02:00
xehpuk
d18c6cfc3a build: use supported API to get working directory (#2976) 2023-09-11 11:54:06 +02:00
semantic-release-bot
6c8d545c6e chore(release): 2.190.1-dev.4 [skip ci]
## [2.190.1-dev.4](https://github.com/ReVanced/revanced-patches/compare/v2.190.1-dev.3...v2.190.1-dev.4) (2023-09-07)

### Bug Fixes

* **YouTube - Custom filter:** Use new lines between components instead of commas ([#2952](https://github.com/ReVanced/revanced-patches/issues/2952)) ([6b3bde3](6b3bde3bda))
2023-09-07 20:14:34 +00:00
LisoUseInAIKyrios
6b3bde3bda fix(YouTube - Custom filter): Use new lines between components instead of commas (#2952)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-09-08 00:10:57 +04:00
semantic-release-bot
a6e032d447 chore(release): 2.190.1-dev.3 [skip ci]
## [2.190.1-dev.3](https://github.com/ReVanced/revanced-patches/compare/v2.190.1-dev.2...v2.190.1-dev.3) (2023-09-07)

### Bug Fixes

* **Infinity for Reddit - Spoof client:** Constrain patch to last working versions ([#2944](https://github.com/ReVanced/revanced-patches/issues/2944)) ([728d49d](728d49ddb5))
2023-09-07 20:05:09 +00:00
nullptr
728d49ddb5 fix(Infinity for Reddit - Spoof client): Constrain patch to last working versions (#2944) 2023-09-07 22:01:15 +02:00
semantic-release-bot
4dc9a7f6e1 chore(release): 2.190.1-dev.2 [skip ci]
## [2.190.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.190.1-dev.1...v2.190.1-dev.2) (2023-09-07)

### Bug Fixes

* **YouTube - Hide layout components:** Always hide redundant 'player audio track' button ([#2951](https://github.com/ReVanced/revanced-patches/issues/2951)) ([1f96838](1f9683849f))
2023-09-07 06:44:01 +00:00
LisoUseInAIKyrios
1f9683849f fix(YouTube - Hide layout components): Always hide redundant 'player audio track' button (#2951) 2023-09-07 10:41:24 +04:00
semantic-release-bot
4f7506ba21 chore(release): 2.190.1-dev.1 [skip ci]
## [2.190.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.190.0...v2.190.1-dev.1) (2023-09-03)

### Bug Fixes

* **Twitch - Audio ads:** Support missing version `16.1.0` ([#2928](https://github.com/ReVanced/revanced-patches/issues/2928)) ([c0163c1](c0163c122c))
2023-09-03 19:18:07 +00:00
Benjamin
c0163c122c fix(Twitch - Audio ads): Support missing version 16.1.0 (#2928) 2023-09-03 21:14:53 +02:00
semantic-release-bot
b0875a168d chore(release): 2.190.0 [skip ci]
# [2.190.0](https://github.com/ReVanced/revanced-patches/compare/v2.189.0...v2.190.0) (2023-09-03)

### Bug Fixes

* **Infinity for Reddit - Spoof client:** Support latest version ([3d93a9d](3d93a9d851))

### Features

* **Photomath:** Support latest version ([8bcbd84](8bcbd8443d))
* **Twitch:** Support version `16.1.0` ([#2923](https://github.com/ReVanced/revanced-patches/issues/2923)) ([a478db3](a478db3cca))
2023-09-03 03:43:39 +00:00
oSumAtrIX
bb3a32a407 chore: merge branch dev to main (#2893) 2023-09-03 05:40:57 +02:00
semantic-release-bot
f27af6fdfa chore(release): 2.190.0-dev.3 [skip ci]
# [2.190.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v2.190.0-dev.2...v2.190.0-dev.3) (2023-09-02)

### Features

* **Twitch:** Support version `16.1.0` ([#2923](https://github.com/ReVanced/revanced-patches/issues/2923)) ([a478db3](a478db3cca))
2023-09-02 19:13:41 +00:00
Benjamin
a478db3cca feat(Twitch): Support version 16.1.0 (#2923) 2023-09-02 21:09:41 +02:00
semantic-release-bot
dc6fa70d6f chore(release): 2.190.0-dev.2 [skip ci]
# [2.190.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.190.0-dev.1...v2.190.0-dev.2) (2023-08-28)

### Bug Fixes

* **Infinity for Reddit - Spoof client:** Support latest version ([3d93a9d](3d93a9d851))
2023-08-28 18:23:24 +00:00
oSumAtrIX
3d93a9d851 fix(Infinity for Reddit - Spoof client): Support latest version 2023-08-28 20:20:04 +02:00
semantic-release-bot
426c4c2600 chore(release): 2.190.0-dev.1 [skip ci]
# [2.190.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.189.0...v2.190.0-dev.1) (2023-08-28)

### Features

* **Photomath:** Support latest version ([8bcbd84](8bcbd8443d))
2023-08-28 13:48:22 +00:00
badawoll
8bcbd8443d feat(Photomath): Support latest version
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-08-28 15:45:47 +02:00
semantic-release-bot
1d01155b47 chore(release): 2.189.0 [skip ci]
# [2.189.0](https://github.com/ReVanced/revanced-patches/compare/v2.188.1...v2.189.0) (2023-08-27)

### Features

* Restore previous release ([2adfc37](2adfc37a66))
2023-08-27 23:56:04 +00:00
oSumAtrIX
bada0ea50f chore: merge branch dev to main (#2884) 2023-08-28 01:53:14 +02:00
semantic-release-bot
0a9e0982da chore(release): 2.189.0-dev.1 [skip ci]
# [2.189.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.188.1...v2.189.0-dev.1) (2023-08-27)

### Features

* Restore previous release ([2adfc37](2adfc37a66))
2023-08-27 20:29:07 +00:00
oSumAtrIX
078e5d3b88 build: bump dependencies 2023-08-27 22:25:18 +02:00
oSumAtrIX
2adfc37a66 feat: Restore previous release
This reverts commit 3938f2f1b3.
2023-08-27 21:41:04 +02:00
semantic-release-bot
392021124c chore(release): 2.188.1 [skip ci]
## [2.188.1](https://github.com/ReVanced/revanced-patches/compare/v2.188.0...v2.188.1) (2023-08-27)

### Bug Fixes

* Revert previous release ([3938f2f](3938f2f1b3))
2023-08-27 02:44:10 +00:00
oSumAtrIX
d5dd8a22de chore: merge branch dev to main (#2880) 2023-08-27 04:40:34 +02:00
semantic-release-bot
03725b853a chore(release): 2.188.1-dev.1 [skip ci]
## [2.188.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.188.0...v2.188.1-dev.1) (2023-08-27)

### Bug Fixes

* Revert previous release ([3938f2f](3938f2f1b3))
2023-08-27 02:40:19 +00:00
oSumAtrIX
3938f2f1b3 fix: Revert previous release
The previous release depends on a version of ReVanced Patcher which prevents usage of resource patches on lower Android versions. To solve this issue temporarily, until a fix is present, the previous release is reverted.
2023-08-27 04:37:21 +02:00
semantic-release-bot
ce2e46a7cb chore(release): 2.188.0 [skip ci]
# [2.188.0](https://github.com/ReVanced/revanced-patches/compare/v2.187.0...v2.188.0) (2023-08-26)

### Bug Fixes

* allow using `PreferenceScreen` outside of current module ([eb20cc4](eb20cc477f))
* **Client spoof:** Remove exception from option ([8f559ca](8f559ca170))
* **Enable android debugging:** Update patch description ([#2869](https://github.com/ReVanced/revanced-patches/issues/2869)) ([c10de2d](c10de2da22))
* improve wording ([8cd2933](8cd293310a))
* **Reddit is Fun - Spoof client:** Use a more convincing user agent ([1ea6f27](1ea6f27d7d))
* remove newline ([28c5410](28c541078b))
* **Tiktok - Show seekbar:** Bump compatibility ([#2737](https://github.com/ReVanced/revanced-patches/issues/2737)) ([70cffa4](70cffa4466))
* **YouTube - Client spoof:** Adjust spoof signature settings description ([#2760](https://github.com/ReVanced/revanced-patches/issues/2760)) ([d10b5cf](d10b5cf56e))
* **YouTube Music - Remove upgrade button:** Remove the correct navigation bar item ([395cfd2](395cfd2ee2))

### Features

* Add `Override certificate pinning` patch ([#2781](https://github.com/ReVanced/revanced-patches/issues/2781)) ([78d831f](78d831fc63))
* **Change package name:** Append `.revanced` to package name by default ([#2750](https://github.com/ReVanced/revanced-patches/issues/2750)) ([3cd5f57](3cd5f573b1))
* **Duolingo:** Add `Unlock Duolingo Super` patch ([#2862](https://github.com/ReVanced/revanced-patches/issues/2862)) ([1168c0c](1168c0cdf4))
* Exclude `Custom branding` patch by default ([52e7086](52e70866d9))
* **Lightroom:** Add `Disable mandatory login` patch ([#2738](https://github.com/ReVanced/revanced-patches/issues/2738)) ([9e8c4e6](9e8c4e61a5))
* **Lightroom:** Add `Unlock premium` patch ([#2740](https://github.com/ReVanced/revanced-patches/issues/2740)) ([204284f](204284f5d3))
* **Nova Launcher:** Remove `Unlock prime` patch ([dbcff62](dbcff623c8))
* Publicize resource utility functions ([520eb07](520eb07277))
* **Solid Explorer:** Add `Remove file size limit` patch ([a388592](a388592019))
* **Strava:** Add `Subscription features` patch ([#2872](https://github.com/ReVanced/revanced-patches/issues/2872)) ([3d4ef97](3d4ef97c1e))
* **Tasker:** Remove `Unlock trial` patch ([2ff3400](2ff3400ef1))
* Use an extension property to create new exception when failing to resolve a fingerprint ([a471605](a471605db7))
* **YouTube - Debug:** Logging of layout proto buffer strings ([#2759](https://github.com/ReVanced/revanced-patches/issues/2759)) ([d563085](d56308539b))
* **YouTube - External downloads:** Recommend Seal instead of PowerTube ([#2803](https://github.com/ReVanced/revanced-patches/issues/2803)) ([aef6813](aef68134b5))
* **YouTube - Hide video action buttons:** Hide individual action buttons ([#2723](https://github.com/ReVanced/revanced-patches/issues/2723)) ([7c131bf](7c131bfe1b))
* **YouTube Music - Exclusive audio playback:** Support latest version ([a4b33f2](a4b33f2063))
* **YouTube Music:** Add `Permanent repeat` patch ([#2722](https://github.com/ReVanced/revanced-patches/issues/2722)) ([21beefa](21beefa7e6))
* **YouTube Music:** Add `Permanent Shuffle` patch ([#2730](https://github.com/ReVanced/revanced-patches/issues/2730)) ([9725870](9725870e6a))
* **YouTube:** Add `Alternative thumbnails` patch ([#2834](https://github.com/ReVanced/revanced-patches/issues/2834)) ([4f7618c](4f7618c980))
* **YouTube:** Add `Custom player overlay opacity` patch ([#2721](https://github.com/ReVanced/revanced-patches/issues/2721)) ([004aae8](004aae8258))
* **YouTube:** Add `Enable tablet layout` patch ([74ef684](74ef6843cb))
* **YouTube:** Support version `18.29.38` ([52df1e6](52df1e6814))
* **YouTube:** Support version `18.32.39` ([c5ef490](c5ef490eee))
2023-08-26 23:24:31 +00:00
oSumAtrIX
75a113d327 chore: merge branch dev to main (#2732) 2023-08-27 01:21:27 +02:00
semantic-release-bot
9bc4323a80 chore(release): 2.188.0-dev.28 [skip ci]
# [2.188.0-dev.28](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.27...v2.188.0-dev.28) (2023-08-26)

### Features

* **YouTube:** Add `Enable tablet layout` patch ([b9c57db](b9c57db166))
2023-08-26 17:16:03 +02:00
oSumAtrIX
74ef6843cb feat(YouTube): Add Enable tablet layout patch 2023-08-26 17:16:03 +02:00
semantic-release-bot
4318cf7121 chore(release): 2.188.0-dev.27 [skip ci]
# [2.188.0-dev.27](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.26...v2.188.0-dev.27) (2023-08-26)

### Features

* **YouTube Music - Exclusive audio playback:** Support latest version ([65420f1](65420f1833))
2023-08-26 17:16:03 +02:00
oSumAtrIX
a4b33f2063 feat(YouTube Music - Exclusive audio playback): Support latest version 2023-08-26 17:16:02 +02:00
semantic-release-bot
5979230705 chore(release): 2.188.0-dev.26 [skip ci]
# [2.188.0-dev.26](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.25...v2.188.0-dev.26) (2023-08-26)

### Features

* **YouTube:** Support version `18.32.39` ([c5ef490](c5ef490eee))
2023-08-26 17:16:02 +02:00
oSumAtrIX
79b037d044 chore(YouTube): Bump compatibility to 18.32.39 2023-08-26 17:16:00 +02:00
oSumAtrIX
c5ef490eee feat(YouTube): Support version 18.32.39 2023-08-26 14:12:43 +02:00
semantic-release-bot
69092def55 chore(release): 2.188.0-dev.25 [skip ci]
# [2.188.0-dev.25](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.24...v2.188.0-dev.25) (2023-08-26)

### Features

* **YouTube:** Add `Custom player overlay opacity` patch ([#2721](https://github.com/ReVanced/revanced-patches/issues/2721)) ([004aae8](004aae8258))
2023-08-26 00:15:24 +00:00
johnconner122
004aae8258 feat(YouTube): Add Custom player overlay opacity patch (#2721)
This gets rid of the `Hide player overlay` patch.

Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-08-26 02:12:30 +02:00
semantic-release-bot
c378869941 chore(release): 2.188.0-dev.24 [skip ci]
# [2.188.0-dev.24](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.23...v2.188.0-dev.24) (2023-08-25)

### Features

* Exclude `Custom branding` patch by default ([52e7086](52e70866d9))
2023-08-25 15:57:17 +00:00
oSumAtrIX
52e70866d9 feat: Exclude Custom branding patch by default
Due to design complexity of the patch the default branding included with the patch is mistaken as the branding soley meant for YouTube and not understood merely as the default branding.
2023-08-25 17:54:10 +02:00
semantic-release-bot
c7e1dd7563 chore(release): 2.188.0-dev.23 [skip ci]
# [2.188.0-dev.23](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.22...v2.188.0-dev.23) (2023-08-25)

### Features

* **Strava:** Add `Subscription features` patch ([#2872](https://github.com/ReVanced/revanced-patches/issues/2872)) ([3d4ef97](3d4ef97c1e))
2023-08-25 01:19:27 +00:00
xehpuk
3d4ef97c1e feat(Strava): Add Subscription features patch (#2872)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-08-25 03:16:12 +02:00
semantic-release-bot
040f612818 chore(release): 2.188.0-dev.22 [skip ci]
# [2.188.0-dev.22](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.21...v2.188.0-dev.22) (2023-08-24)

### Features

* Publicize resource utility functions ([520eb07](520eb07277))
* Use an extension property to create new exception when failing to resolve a fingerprint ([a471605](a471605db7))
2023-08-24 22:08:30 +00:00
oSumAtrIX
520eb07277 feat: Publicize resource utility functions
This commit adds the functions to the public API
2023-08-25 00:05:32 +02:00
oSumAtrIX
a471605db7 feat: Use an extension property to create new exception when failing to resolve a fingerprint
This commit adds the extension property to the public API
2023-08-25 00:05:30 +02:00
semantic-release-bot
31b5d506a5 chore(release): 2.188.0-dev.21 [skip ci]
# [2.188.0-dev.21](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.20...v2.188.0-dev.21) (2023-08-24)

### Features

* **Duolingo:** Add `Unlock Duolingo Super` patch ([#2862](https://github.com/ReVanced/revanced-patches/issues/2862)) ([1168c0c](1168c0cdf4))
2023-08-24 20:24:14 +00:00
Karol
1168c0cdf4 feat(Duolingo): Add Unlock Duolingo Super patch (#2862) 2023-08-24 22:21:33 +02:00
semantic-release-bot
eeab2fa705 chore(release): 2.188.0-dev.20 [skip ci]
# [2.188.0-dev.20](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.19...v2.188.0-dev.20) (2023-08-24)

### Bug Fixes

* **Enable android debugging:** Update patch description ([#2869](https://github.com/ReVanced/revanced-patches/issues/2869)) ([c10de2d](c10de2da22))
2023-08-24 16:18:34 +00:00
LisoUseInAIKyrios
c10de2da22 fix(Enable android debugging): Update patch description (#2869)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-08-24 20:15:48 +04:00
semantic-release-bot
bae5c8a70d chore(release): 2.188.0-dev.19 [skip ci]
# [2.188.0-dev.19](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.18...v2.188.0-dev.19) (2023-08-24)

### Features

* **Solid Explorer:** Add `Remove file size limit` patch ([a388592](a388592019))
2023-08-24 02:24:21 +00:00
j4k0xb
a388592019 feat(Solid Explorer): Add Remove file size limit patch
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-08-24 04:21:18 +02:00
oSumAtrIX
269fa7fa48 refactor: remove unnecessary annotations 2023-08-23 16:48:03 +02:00
semantic-release-bot
f4c2c19f1d chore(release): 2.188.0-dev.18 [skip ci]
# [2.188.0-dev.18](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.17...v2.188.0-dev.18) (2023-08-23)

### Features

* **YouTube:** Support version `18.29.38` ([52df1e6](52df1e6814))
2023-08-23 03:03:48 +00:00
oSumAtrIX
1817dbd10c build(Needs bump): Bump dependencies 2023-08-23 05:01:09 +02:00
oSumAtrIX
3072412c79 chore(YouTube): Bump compatibility to 18.29.38 2023-08-23 05:01:09 +02:00
oSumAtrIX
52df1e6814 feat(YouTube): Support version 18.29.38 2023-08-23 05:01:09 +02:00
semantic-release-bot
038d6b215a chore(release): 2.188.0-dev.17 [skip ci]
# [2.188.0-dev.17](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.16...v2.188.0-dev.17) (2023-08-21)

### Features

* **YouTube:** Add `Alternative thumbnails` patch ([#2834](https://github.com/ReVanced/revanced-patches/issues/2834)) ([4f7618c](4f7618c980))
2023-08-21 06:31:19 +00:00
LisoUseInAIKyrios
4f7618c980 feat(YouTube): Add Alternative thumbnails patch (#2834)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-08-21 10:28:34 +04:00
Pun Butrach
9893c99009 build: update Gradle to v8.3 (#2843) 2023-08-19 15:37:51 +02:00
semantic-release-bot
30ac1f6954 chore(release): 2.188.0-dev.16 [skip ci]
# [2.188.0-dev.16](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.15...v2.188.0-dev.16) (2023-08-19)

### Bug Fixes

* **YouTube Music - Remove upgrade button:** Remove the correct navigation bar item ([395cfd2](395cfd2ee2))
2023-08-19 00:51:44 +00:00
oSumAtrIX
395cfd2ee2 fix(YouTube Music - Remove upgrade button): Remove the correct navigation bar item
A new item has been added to the list, so the index has to be shifted by one. This is not a final solution and the last index should be removed dynamically
2023-08-19 02:48:21 +02:00
semantic-release-bot
49f778aca1 chore(release): 2.188.0-dev.15 [skip ci]
# [2.188.0-dev.15](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.14...v2.188.0-dev.15) (2023-08-14)
2023-08-14 02:15:25 +00:00
oSumAtrIX
2b14cc6270 build(Needs bump): Bump dependencies 2023-08-14 04:12:09 +02:00
semantic-release-bot
2d20ed857c chore(release): 2.188.0-dev.14 [skip ci]
# [2.188.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.13...v2.188.0-dev.14) (2023-08-13)

### Bug Fixes

* allow using `PreferenceScreen` outside of current module ([eb20cc4](eb20cc477f))
2023-08-13 16:39:06 +00:00
oSumAtrIX
eb20cc477f fix: allow using PreferenceScreen outside of current module 2023-08-13 18:36:07 +02:00
semantic-release-bot
d002eaaca6 chore(release): 2.188.0-dev.13 [skip ci]
# [2.188.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.12...v2.188.0-dev.13) (2023-08-13)

### Features

* **YouTube - External downloads:** Recommend Seal instead of PowerTube ([#2803](https://github.com/ReVanced/revanced-patches/issues/2803)) ([aef6813](aef68134b5))
2023-08-13 11:42:46 +00:00
KAZI MMT
aef68134b5 feat(YouTube - External downloads): Recommend Seal instead of PowerTube (#2803) 2023-08-13 13:40:01 +02:00
semantic-release-bot
5deaa6476f chore(release): 2.188.0-dev.12 [skip ci]
# [2.188.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.11...v2.188.0-dev.12) (2023-08-10)

### Features

* Add `Override certificate pinning` patch ([#2781](https://github.com/ReVanced/revanced-patches/issues/2781)) ([78d831f](78d831fc63))
2023-08-10 18:44:34 +00:00
Aunali321
78d831fc63 feat: Add Override certificate pinning patch (#2781)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-08-10 20:41:31 +02:00
semantic-release-bot
46809c3819 chore(release): 2.188.0-dev.11 [skip ci]
# [2.188.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.10...v2.188.0-dev.11) (2023-08-09)

### Bug Fixes

* **Client spoof:** Remove exception from option ([8f559ca](8f559ca170))
2023-08-09 15:58:17 +00:00
oSumAtrIX
8f559ca170 fix(Client spoof): Remove exception from option
Turning off will cause playback issues even when being subscribed to YouTube Premium
2023-08-09 17:55:18 +02:00
semantic-release-bot
48ea11f571 chore(release): 2.188.0-dev.10 [skip ci]
# [2.188.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.9...v2.188.0-dev.10) (2023-08-09)

### Features

* **Tasker:** Remove `Unlock trial` patch ([2ff3400](2ff3400ef1))
2023-08-09 10:26:50 +00:00
oSumAtrIX
2ff3400ef1 feat(Tasker): Remove Unlock trial patch 2023-08-09 12:23:56 +02:00
semantic-release-bot
bc8ce81bbc chore(release): 2.188.0-dev.9 [skip ci]
# [2.188.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.8...v2.188.0-dev.9) (2023-08-07)

### Features

* **YouTube - Hide video action buttons:** Hide individual action buttons ([#2723](https://github.com/ReVanced/revanced-patches/issues/2723)) ([7c131bf](7c131bfe1b))
2023-08-07 14:37:51 +00:00
LisoUseInAIKyrios
7c131bfe1b feat(YouTube - Hide video action buttons): Hide individual action buttons (#2723) 2023-08-07 18:34:53 +04:00
semantic-release-bot
f1e063ee76 chore(release): 2.188.0-dev.8 [skip ci]
# [2.188.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.7...v2.188.0-dev.8) (2023-08-07)

### Features

* **Change package name:** Append `.revanced` to package name by default ([#2750](https://github.com/ReVanced/revanced-patches/issues/2750)) ([3cd5f57](3cd5f573b1))
2023-08-07 14:10:41 +00:00
Pro-Tweaker
3cd5f573b1 feat(Change package name): Append .revanced to package name by default (#2750)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-08-07 16:07:22 +02:00
semantic-release-bot
9eaf98e4a1 chore(release): 2.188.0-dev.7 [skip ci]
# [2.188.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.6...v2.188.0-dev.7) (2023-08-07)

### Features

* **YouTube - Debug:** Logging of layout proto buffer strings ([#2759](https://github.com/ReVanced/revanced-patches/issues/2759)) ([d563085](d56308539b))
2023-08-07 07:53:51 +00:00
LisoUseInAIKyrios
d56308539b feat(YouTube - Debug): Logging of layout proto buffer strings (#2759) 2023-08-07 11:50:42 +04:00
semantic-release-bot
68c4d965cd chore(release): 2.188.0-dev.6 [skip ci]
# [2.188.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.5...v2.188.0-dev.6) (2023-08-06)

### Bug Fixes

* **YouTube - Client spoof:** Adjust spoof signature settings description ([#2760](https://github.com/ReVanced/revanced-patches/issues/2760)) ([d10b5cf](d10b5cf56e))
2023-08-06 15:44:55 +00:00
LisoUseInAIKyrios
d10b5cf56e fix(YouTube - Client spoof): Adjust spoof signature settings description (#2760) 2023-08-06 19:42:13 +04:00
semantic-release-bot
92223607fe chore(release): 2.188.0-dev.5 [skip ci]
# [2.188.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.4...v2.188.0-dev.5) (2023-08-04)

### Features

* **YouTube Music:** Add `Permanent repeat` patch ([#2722](https://github.com/ReVanced/revanced-patches/issues/2722)) ([21beefa](21beefa7e6))
2023-08-04 13:49:05 +00:00
Matthew
21beefa7e6 feat(YouTube Music): Add Permanent repeat patch (#2722)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-08-04 15:45:59 +02:00
semantic-release-bot
fec613eb13 chore(release): 2.188.0-dev.4 [skip ci]
# [2.188.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.3...v2.188.0-dev.4) (2023-08-03)

### Bug Fixes

* improve wording ([8cd2933](8cd293310a))
* **Tiktok - Show seekbar:** Bump compatibility ([#2737](https://github.com/ReVanced/revanced-patches/issues/2737)) ([70cffa4](70cffa4466))

### Features

* **Lightroom:** Add `Disable mandatory login` patch ([#2738](https://github.com/ReVanced/revanced-patches/issues/2738)) ([9e8c4e6](9e8c4e61a5))
* **Lightroom:** Add `Unlock premium` patch ([#2740](https://github.com/ReVanced/revanced-patches/issues/2740)) ([204284f](204284f5d3))
* **YouTube Music:** Add `Permanent Shuffle` patch ([#2730](https://github.com/ReVanced/revanced-patches/issues/2730)) ([9725870](9725870e6a))
2023-08-03 18:41:28 +00:00
oSumAtrIX
b007aa3827 build(Needs bump): Bump compatibility 2023-08-03 20:37:47 +02:00
oSumAtrIX
8cd293310a fix: improve wording 2023-08-03 18:34:40 +02:00
Aunali321
9e8c4e61a5 feat(Lightroom): Add Disable mandatory login patch (#2738)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-08-03 18:24:28 +02:00
Matthew
9725870e6a feat(YouTube Music): Add Permanent Shuffle patch (#2730)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-08-03 18:22:13 +02:00
Aunali321
204284f5d3 feat(Lightroom): Add Unlock premium patch (#2740)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-08-03 18:16:30 +02:00
d4rkk3y
70cffa4466 fix(Tiktok - Show seekbar): Bump compatibility (#2737) 2023-08-03 18:12:45 +02:00
semantic-release-bot
4f885b15c0 chore(release): 2.188.0-dev.3 [skip ci]
# [2.188.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.2...v2.188.0-dev.3) (2023-08-03)

### Bug Fixes

* remove newline ([28c5410](28c541078b))
2023-08-03 14:43:30 +00:00
oSumAtrIX
28c541078b fix: remove newline 2023-08-03 16:39:59 +02:00
semantic-release-bot
4d031cb029 chore(release): 2.188.0-dev.2 [skip ci]
# [2.188.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.188.0-dev.1...v2.188.0-dev.2) (2023-08-03)

### Bug Fixes

* **Reddit is Fun - Spoof client:** Use a more convincing user agent ([1ea6f27](1ea6f27d7d))
2023-08-03 14:26:21 +00:00
oSumAtrIX
1ea6f27d7d fix(Reddit is Fun - Spoof client): Use a more convincing user agent 2023-08-03 16:22:57 +02:00
semantic-release-bot
636e9dc446 chore(release): 2.188.0-dev.1 [skip ci]
# [2.188.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.187.0...v2.188.0-dev.1) (2023-08-03)

### Features

* **Nova Launcher:** Remove `Unlock prime` patch ([dbcff62](dbcff623c8))
2023-08-03 02:09:26 +00:00
oSumAtrIX
dbcff623c8 feat(Nova Launcher): Remove Unlock prime patch 2023-08-03 04:06:28 +02:00
semantic-release-bot
e93adc15c2 chore(release): 2.187.0 [skip ci]
# [2.187.0](https://github.com/ReVanced/revanced-patches/compare/v2.186.0...v2.187.0) (2023-08-02)

### Bug Fixes

* Remove version numbers from individual patches ([#2709](https://github.com/ReVanced/revanced-patches/issues/2709)) ([d97f399](d97f3990c9))
* **Sync for Reddit - Change OAuth client id:** Disable piracy detection ([d442aca](d442acaac8))
* Use clearer descriptions ([146b213](146b213b4a))
* **YouTube - Spoof app version:** Fix grammar in description ([#2711](https://github.com/ReVanced/revanced-patches/issues/2711)) ([7cf79ab](7cf79ab856))
* **YouTube - Spoof App Version:** Remove 17.30.35 target (version no longer works correctly) ([#2703](https://github.com/ReVanced/revanced-patches/issues/2703)) ([936ac47](936ac475d2))
* **YouTube - Theme:** only set splash screen color if background colors are set ([c14a7fb](c14a7fb66f))

### Features

* **Joey for Reddit:** Add `Change OAuth client id` patch ([a00eab6](a00eab6744))
* **Joey for Reddit:** Add `Disable ads` patch ([e7b2bfb](e7b2bfbde3))
* **Reddit is Fun - Spoof client:** Spoof the user agent ([9ac0ed4](9ac0ed477a))
* **Sync for Reddit:** add `Disable Sync for Lemmy bottom sheet` patch ([70da6d8](70da6d8971))
* **YouTube - Hide layout components:** Hide `chips shelf` ([#2699](https://github.com/ReVanced/revanced-patches/issues/2699)) ([44107c2](44107c2b07))
* **YouTube:** add `Player Flyout Menu` patch ([#2295](https://github.com/ReVanced/revanced-patches/issues/2295)) ([bb90012](bb9001283a))
2023-08-02 23:38:38 +00:00
oSumAtrIX
244473cd4f chore: merge branch dev to main (#2679) 2023-08-03 01:35:52 +02:00
semantic-release-bot
efe7cbc78c chore(release): 2.187.0-dev.10 [skip ci]
# [2.187.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v2.187.0-dev.9...v2.187.0-dev.10) (2023-08-02)

### Features

* **Reddit is Fun - Spoof client:** Spoof the user agent ([9ac0ed4](9ac0ed477a))
2023-08-02 23:00:51 +00:00
oSumAtrIX
9ac0ed477a feat(Reddit is Fun - Spoof client): Spoof the user agent 2023-08-03 00:58:11 +02:00
semantic-release-bot
9426b28dcc chore(release): 2.187.0-dev.9 [skip ci]
# [2.187.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v2.187.0-dev.8...v2.187.0-dev.9) (2023-07-30)

### Bug Fixes

* Use clearer descriptions ([146b213](146b213b4a))
2023-07-30 17:05:55 +00:00
oSumAtrIX
146b213b4a fix: Use clearer descriptions 2023-07-30 19:03:12 +02:00
semantic-release-bot
557a9f7418 chore(release): 2.187.0-dev.8 [skip ci]
# [2.187.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v2.187.0-dev.7...v2.187.0-dev.8) (2023-07-30)

### Bug Fixes

* **Sync for Reddit - Change OAuth client id:** Disable piracy detection ([d442aca](d442acaac8))

### Features

* **Joey for Reddit:** Add `Change OAuth client id` patch ([a00eab6](a00eab6744))
* **Joey for Reddit:** Add `Disable ads` patch ([e7b2bfb](e7b2bfbde3))
2023-07-30 17:02:08 +00:00
oSumAtrIX
e7b2bfbde3 feat(Joey for Reddit): Add Disable ads patch 2023-07-30 18:59:40 +02:00
oSumAtrIX
d442acaac8 fix(Sync for Reddit - Change OAuth client id): Disable piracy detection 2023-07-30 18:59:40 +02:00
Barncastle
a00eab6744 feat(Joey for Reddit): Add Change OAuth client id patch 2023-07-30 18:59:40 +02:00
LisoUseInAIKyrios
87f2f90fc5 chore: remove deprecated version annotation 2023-07-30 14:23:40 +04:00
semantic-release-bot
04c8c48df7 chore(release): 2.187.0-dev.7 [skip ci]
# [2.187.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v2.187.0-dev.6...v2.187.0-dev.7) (2023-07-30)

### Features

* **YouTube:** add `Player Flyout Menu` patch ([#2295](https://github.com/ReVanced/revanced-patches/issues/2295)) ([bb90012](bb9001283a))
2023-07-30 09:54:23 +00:00
johnconner122
bb9001283a feat(YouTube): add Player Flyout Menu patch (#2295)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2023-07-30 13:51:50 +04:00
semantic-release-bot
b7f0c13443 chore(release): 2.187.0-dev.6 [skip ci]
# [2.187.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v2.187.0-dev.5...v2.187.0-dev.6) (2023-07-30)
2023-07-30 00:53:14 +00:00
oSumAtrIX
942fe7f870 build(Needs bump): Bump dependencies 2023-07-30 02:50:17 +02:00
oSumAtrIX
c224c16f50 ci: Change bumping commit scope 2023-07-30 02:49:19 +02:00
semantic-release-bot
45c2751f70 chore(release): 2.187.0-dev.5 [skip ci]
# [2.187.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v2.187.0-dev.4...v2.187.0-dev.5) (2023-07-28)

### Bug Fixes

* **YouTube - Spoof app version:** Fix grammar in description ([#2711](https://github.com/ReVanced/revanced-patches/issues/2711)) ([7cf79ab](7cf79ab856))
2023-07-28 22:25:04 +00:00
Benjamin
7cf79ab856 fix(YouTube - Spoof app version): Fix grammar in description (#2711) 2023-07-29 00:21:45 +02:00
semantic-release-bot
9696775cc2 chore(release): 2.187.0-dev.4 [skip ci]
# [2.187.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v2.187.0-dev.3...v2.187.0-dev.4) (2023-07-28)

### Bug Fixes

* Remove version numbers from individual patches ([#2709](https://github.com/ReVanced/revanced-patches/issues/2709)) ([d97f399](d97f3990c9))
2023-07-28 18:13:54 +00:00
LisoUseInAIKyrios
d97f3990c9 fix: Remove version numbers from individual patches (#2709) 2023-07-28 22:11:23 +04:00
LisoUseInAIKyrios
d1ccf093cc chore(YouTube - Spoof App Version): Adjust target version 2023-07-27 09:20:05 +04:00
semantic-release-bot
148900f47d chore(release): 2.187.0-dev.3 [skip ci]
# [2.187.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v2.187.0-dev.2...v2.187.0-dev.3) (2023-07-26)

### Bug Fixes

* **YouTube - Spoof App Version:** Remove 17.30.35 target (version no longer works correctly) ([#2703](https://github.com/ReVanced/revanced-patches/issues/2703)) ([936ac47](936ac475d2))
2023-07-26 21:19:08 +00:00
LisoUseInAIKyrios
936ac475d2 fix(YouTube - Spoof App Version): Remove 17.30.35 target (version no longer works correctly) (#2703) 2023-07-27 01:15:58 +04:00
semantic-release-bot
df57b1acdd chore(release): 2.187.0-dev.2 [skip ci]
# [2.187.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.187.0-dev.1...v2.187.0-dev.2) (2023-07-26)

### Features

* **YouTube - Hide layout components:** Hide `chips shelf` ([#2699](https://github.com/ReVanced/revanced-patches/issues/2699)) ([44107c2](44107c2b07))
2023-07-26 13:50:42 +00:00
johnconner122
44107c2b07 feat(YouTube - Hide layout components): Hide chips shelf (#2699) 2023-07-26 15:48:04 +02:00
semantic-release-bot
4680f1dc61 chore(release): 2.187.0-dev.1 [skip ci]
# [2.187.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.186.1-dev.1...v2.187.0-dev.1) (2023-07-24)

### Features

* **Sync for Reddit:** add `Disable Sync for Lemmy bottom sheet` patch ([70da6d8](70da6d8971))
2023-07-24 23:41:28 +00:00
oSumAtrIX
70da6d8971 feat(Sync for Reddit): add Disable Sync for Lemmy bottom sheet patch 2023-07-25 01:36:28 +02:00
semantic-release-bot
1df7df2841 chore(release): 2.186.1-dev.1 [skip ci]
## [2.186.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.186.0...v2.186.1-dev.1) (2023-07-21)

### Bug Fixes

* **YouTube - Theme:** only set splash screen color if background colors are set ([c14a7fb](c14a7fb66f))
2023-07-21 22:11:35 +00:00
oSumAtrIX
c14a7fb66f fix(YouTube - Theme): only set splash screen color if background colors are set 2023-07-22 00:08:25 +02:00
oSumAtrIX
6af4e47947 ci: clean after building 2023-07-21 19:17:06 +02:00
semantic-release-bot
ef704fcf7a chore(release): 2.186.0 [skip ci]
# [2.186.0](https://github.com/ReVanced/revanced-patches/compare/v2.185.0...v2.186.0) (2023-07-21)

### Bug Fixes

* **Tiktok - Settings:** get instruction registers dynamically ([#2676](https://github.com/ReVanced/revanced-patches/issues/2676)) ([b3ff7ef](b3ff7efdb2))
* **YouTube - Spoof app version:** update target app version description ([#2666](https://github.com/ReVanced/revanced-patches/issues/2666)) ([ae990ea](ae990eac6a))
* **YouTube - Theme:** allow setting no background color ([82e3ebe](82e3ebeeff))
* **YouTube - Theme:** apply custom seekbar color to shorts ([#2670](https://github.com/ReVanced/revanced-patches/issues/2670)) ([a19fa4e](a19fa4e087))

### Features

* **Twitter:** remove `Hide view stats` patch ([4e1c9b9](4e1c9b9ec2))
* **Youtube - Theme:** add a switch to enable/disable custom seekbar color ([#2663](https://github.com/ReVanced/revanced-patches/issues/2663)) ([dd7c663](dd7c663df6))
2023-07-21 15:08:14 +00:00
oSumAtrIX
eefa677b1a chore: merge branch dev to main (#2674) 2023-07-21 17:04:32 +02:00
oSumAtrIX
2bf6d693ec ci: do not cache build directory 2023-07-21 16:57:20 +02:00
semantic-release-bot
acc55fff89 chore(release): 2.186.0-dev.5 [skip ci]
# [2.186.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v2.186.0-dev.4...v2.186.0-dev.5) (2023-07-20)

### Bug Fixes

* **YouTube - Theme:** allow setting no background color ([82e3ebe](82e3ebeeff))
2023-07-20 22:13:30 +00:00
oSumAtrIX
82e3ebeeff fix(YouTube - Theme): allow setting no background color 2023-07-21 00:10:48 +02:00
semantic-release-bot
47d096399a chore(release): 2.186.0-dev.4 [skip ci]
# [2.186.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v2.186.0-dev.3...v2.186.0-dev.4) (2023-07-20)

### Bug Fixes

* **YouTube - Spoof app version:** update target app version description ([#2666](https://github.com/ReVanced/revanced-patches/issues/2666)) ([ae990ea](ae990eac6a))
2023-07-20 20:37:36 +00:00
LisoUseInAIKyrios
ae990eac6a fix(YouTube - Spoof app version): update target app version description (#2666) 2023-07-21 00:34:17 +04:00
LisoUseInAIKyrios
b7f40c3955 chore: delete empty file 2023-07-20 23:09:44 +04:00
semantic-release-bot
807a7b01d3 chore(release): 2.186.0-dev.3 [skip ci]
# [2.186.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v2.186.0-dev.2...v2.186.0-dev.3) (2023-07-20)

### Bug Fixes

* **Tiktok - Settings:** get instruction registers dynamically ([#2676](https://github.com/ReVanced/revanced-patches/issues/2676)) ([b3ff7ef](b3ff7efdb2))
2023-07-20 17:39:14 +00:00
Vu Hoan Huy
b3ff7efdb2 fix(Tiktok - Settings): get instruction registers dynamically (#2676) 2023-07-20 19:36:41 +02:00
semantic-release-bot
098162173f chore(release): 2.186.0-dev.2 [skip ci]
# [2.186.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.186.0-dev.1...v2.186.0-dev.2) (2023-07-20)

### Bug Fixes

* **YouTube - Theme:** apply custom seekbar color to shorts ([#2670](https://github.com/ReVanced/revanced-patches/issues/2670)) ([a19fa4e](a19fa4e087))

### Features

* **Youtube - Theme:** add a switch to enable/disable custom seekbar color ([#2663](https://github.com/ReVanced/revanced-patches/issues/2663)) ([dd7c663](dd7c663df6))
2023-07-20 17:31:06 +00:00
LisoUseInAIKyrios
a19fa4e087 fix(YouTube - Theme): apply custom seekbar color to shorts (#2670) 2023-07-20 21:28:22 +04:00
LisoUseInAIKyrios
dd7c663df6 feat(Youtube - Theme): add a switch to enable/disable custom seekbar color (#2663) 2023-07-20 21:27:44 +04:00
semantic-release-bot
9bd7773af2 chore(release): 2.186.0-dev.1 [skip ci]
# [2.186.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.185.0...v2.186.0-dev.1) (2023-07-20)

### Features

* **Twitter:** remove `Hide view stats` patch ([4e1c9b9](4e1c9b9ec2))
2023-07-20 16:47:25 +00:00
oSumAtrIX
4e1c9b9ec2 feat(Twitter): remove Hide view stats patch
The patch is constrained on a version that is not working properly anymore.
2023-07-20 18:44:08 +02:00
semantic-release-bot
96a6f3f93e chore(release): 2.185.0 [skip ci]
# [2.185.0](https://github.com/ReVanced/revanced-patches/compare/v2.184.0...v2.185.0) (2023-07-20)

### Bug Fixes

* allocate for more than eight `LithoFilter` array items ([#2643](https://github.com/ReVanced/revanced-patches/issues/2643)) ([5de8ee5](5de8ee51c1))
* **Sync for Reddit - Disable ads:** fix compatibility with latest version ([6b2f786](6b2f7862d1))
* **Tiktok - Settings:** bump compatibility ([#2656](https://github.com/ReVanced/revanced-patches/issues/2656)) ([90e32ea](90e32eac54))
* **TikTok - Show seekbar:** fix seekbar not always showing ([#2660](https://github.com/ReVanced/revanced-patches/issues/2660)) ([e4adaeb](e4adaebad4))
* **Trakt - Unlock pro:** constraint to last known working version ([#2662](https://github.com/ReVanced/revanced-patches/issues/2662)) ([9da2bc3](9da2bc32a1))
* **YouTube - Spoof client:** show video time and chapters while using seekbar ([#2607](https://github.com/ReVanced/revanced-patches/issues/2607)) ([7fdc0d2](7fdc0d2a70))
* **youtube/sponsorblock:** fix some segments skipping slightly too late ([#2634](https://github.com/ReVanced/revanced-patches/issues/2634)) ([180c777](180c7775e6))

### Features

* **youtube:** rename `video-speed` to `playback-speed` ([#2642](https://github.com/ReVanced/revanced-patches/issues/2642)) ([75fd96f](75fd96f4c3))
2023-07-20 00:04:46 +00:00
oSumAtrIX
b74611a6ae chore: merge branch dev to main (#2641) 2023-07-20 02:02:15 +02:00
semantic-release-bot
ae40d87bb3 chore(release): 2.185.0-dev.7 [skip ci]
# [2.185.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v2.185.0-dev.6...v2.185.0-dev.7) (2023-07-19)

### Bug Fixes

* **YouTube - Spoof client:** show video time and chapters while using seekbar ([#2607](https://github.com/ReVanced/revanced-patches/issues/2607)) ([7fdc0d2](7fdc0d2a70))
2023-07-19 23:20:29 +00:00
LisoUseInAIKyrios
7fdc0d2a70 fix(YouTube - Spoof client): show video time and chapters while using seekbar (#2607) 2023-07-20 01:17:47 +02:00
semantic-release-bot
1fade09694 chore(release): 2.185.0-dev.6 [skip ci]
# [2.185.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v2.185.0-dev.5...v2.185.0-dev.6) (2023-07-19)

### Bug Fixes

* **Tiktok - Settings:** bump compatibility ([#2656](https://github.com/ReVanced/revanced-patches/issues/2656)) ([90e32ea](90e32eac54))
2023-07-19 23:16:57 +00:00
Vu Hoan Huy
90e32eac54 fix(Tiktok - Settings): bump compatibility (#2656) 2023-07-20 01:13:33 +02:00
semantic-release-bot
a0632c8a92 chore(release): 2.185.0-dev.5 [skip ci]
# [2.185.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v2.185.0-dev.4...v2.185.0-dev.5) (2023-07-19)

### Bug Fixes

* **Trakt - Unlock pro:** constraint to last known working version ([#2662](https://github.com/ReVanced/revanced-patches/issues/2662)) ([9da2bc3](9da2bc32a1))
2023-07-19 22:52:54 +00:00
johnconner122
9da2bc32a1 fix(Trakt - Unlock pro): constraint to last known working version (#2662) 2023-07-20 00:50:16 +02:00
semantic-release-bot
89fed3874f chore(release): 2.185.0-dev.4 [skip ci]
# [2.185.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v2.185.0-dev.3...v2.185.0-dev.4) (2023-07-19)

### Bug Fixes

* **TikTok - Show seekbar:** fix seekbar not always showing ([#2660](https://github.com/ReVanced/revanced-patches/issues/2660)) ([e4adaeb](e4adaebad4))
2023-07-19 12:58:39 +00:00
Vu Hoan Huy
e4adaebad4 fix(TikTok - Show seekbar): fix seekbar not always showing (#2660) 2023-07-19 14:55:17 +02:00
semantic-release-bot
0b78e8377b chore(release): 2.185.0-dev.3 [skip ci]
# [2.185.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v2.185.0-dev.2...v2.185.0-dev.3) (2023-07-17)

### Bug Fixes

* **Sync for Reddit - Disable ads:** fix compatibility with latest version ([6b2f786](6b2f7862d1))
2023-07-17 22:39:26 +00:00
oSumAtrIX
6b2f7862d1 fix(Sync for Reddit - Disable ads): fix compatibility with latest version 2023-07-18 00:36:37 +02:00
Aaronjamt
4668861d65 chore: fix typos (fingereprints -> fingerprints) (#2650) 2023-07-17 15:21:07 +04:00
semantic-release-bot
c5c63537ff chore(release): 2.185.0-dev.2 [skip ci]
# [2.185.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.185.0-dev.1...v2.185.0-dev.2) (2023-07-15)

### Bug Fixes

* allocate for more than eight `LithoFilter` array items ([#2643](https://github.com/ReVanced/revanced-patches/issues/2643)) ([5de8ee5](5de8ee51c1))
2023-07-15 21:27:19 +00:00
johnconner122
5de8ee51c1 fix: allocate for more than eight LithoFilter array items (#2643) 2023-07-15 23:24:34 +02:00
semantic-release-bot
65087833b0 chore(release): 2.185.0-dev.1 [skip ci]
# [2.185.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.184.1-dev.1...v2.185.0-dev.1) (2023-07-15)

### Features

* **youtube:** rename `video-speed` to `playback-speed` ([#2642](https://github.com/revanced/revanced-patches/issues/2642)) ([75fd96f](75fd96f4c3))
2023-07-15 12:36:34 +00:00
KAZI MMT
75fd96f4c3 feat(youtube): rename video-speed to playback-speed (#2642) 2023-07-15 16:32:39 +04:00
semantic-release-bot
2cac5b1b74 chore(release): 2.184.1-dev.1 [skip ci]
## [2.184.1-dev.1](https://github.com/revanced/revanced-patches/compare/v2.184.0...v2.184.1-dev.1) (2023-07-14)

### Bug Fixes

* **youtube/sponsorblock:** fix some segments skipping slightly too late ([#2634](https://github.com/revanced/revanced-patches/issues/2634)) ([180c777](180c7775e6))
2023-07-14 08:39:40 +00:00
LisoUseInAIKyrios
180c7775e6 fix(youtube/sponsorblock): fix some segments skipping slightly too late (#2634) 2023-07-14 12:35:49 +04:00
semantic-release-bot
d0440c17f6 chore(release): 2.184.0 [skip ci]
# [2.184.0](https://github.com/revanced/revanced-patches/compare/v2.183.1...v2.184.0) (2023-07-11)

### Features

* **youtube/custom-branding:** update logo ([801584b](801584b78c))
2023-07-11 00:56:29 +00:00
oSumAtrIX
c6f4497031 chore: merge branch dev to main (#2615) 2023-07-11 02:54:05 +02:00
semantic-release-bot
20f24513d5 chore(release): 2.184.0-dev.1 [skip ci]
# [2.184.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.183.1...v2.184.0-dev.1) (2023-07-11)

### Features

* **youtube/custom-branding:** update logo ([801584b](801584b78c))
2023-07-11 00:48:58 +00:00
oSumAtrIX
db2fd097f6 refactor: remove unnecessary annotations 2023-07-11 02:45:56 +02:00
oSumAtrIX
801584b78c feat(youtube/custom-branding): update logo 2023-07-11 02:45:15 +02:00
semantic-release-bot
8c23fddcca chore(release): 2.183.1 [skip ci]
## [2.183.1](https://github.com/revanced/revanced-patches/compare/v2.183.0...v2.183.1) (2023-07-10)

### Bug Fixes

* find resource by correct name ([3113bb6](3113bb6599))
* use correct patch naming convention ([668d1fd](668d1fda49))
2023-07-10 18:38:38 +00:00
oSumAtrIX
eeca09ac78 chore: merge branch dev to main (#2613) 2023-07-10 20:36:12 +02:00
semantic-release-bot
8f22663a7c chore(release): 2.183.1-dev.1 [skip ci]
## [2.183.1-dev.1](https://github.com/revanced/revanced-patches/compare/v2.183.0...v2.183.1-dev.1) (2023-07-10)

### Bug Fixes

* find resource by correct name ([3113bb6](3113bb6599))
* use correct patch naming convention ([668d1fd](668d1fda49))
2023-07-10 18:34:54 +00:00
oSumAtrIX
3113bb6599 fix: find resource by correct name 2023-07-10 20:31:36 +02:00
oSumAtrIX
668d1fda49 fix: use correct patch naming convention 2023-07-10 20:28:50 +02:00
semantic-release-bot
6d474fb083 chore(release): 2.183.0 [skip ci]
# [2.183.0](https://github.com/revanced/revanced-patches/compare/v2.182.0...v2.183.0) (2023-07-10)

### Bug Fixes

* **youtube/custom-video-buffer:** remove non functional deprecated patch ([e5abe4f](e5abe4f0e5))
* **youtube/custom-video-speed:** don not implicitly depend on `old-video-quality-menu` patch ([9b2d89c](9b2d89cda5))

### Features

* change patches naming convention ([#2612](https://github.com/revanced/revanced-patches/issues/2612)) ([5e4c054](5e4c054834))
2023-07-10 18:17:02 +00:00
oSumAtrIX
1d6baa1228 chore: merge branch dev to main (#2598) 2023-07-10 20:14:36 +02:00
semantic-release-bot
d763ffda55 chore(release): 2.183.0-dev.1 [skip ci]
# [2.183.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.182.1-dev.2...v2.183.0-dev.1) (2023-07-10)

### Features

* change patches naming convention ([#2612](https://github.com/revanced/revanced-patches/issues/2612)) ([5e4c054](5e4c054834))
2023-07-10 18:05:19 +00:00
Ushie
5e4c054834 feat: change patches naming convention (#2612) 2023-07-10 20:02:05 +02:00
semantic-release-bot
c0f11e7848 chore(release): 2.182.1-dev.2 [skip ci]
## [2.182.1-dev.2](https://github.com/revanced/revanced-patches/compare/v2.182.1-dev.1...v2.182.1-dev.2) (2023-07-09)

### Bug Fixes

* **youtube/custom-video-speed:** don not implicitly depend on `old-video-quality-menu` patch ([9b2d89c](9b2d89cda5))
2023-07-09 14:18:55 +00:00
oSumAtrIX
9b2d89cda5 fix(youtube/custom-video-speed): don not implicitly depend on old-video-quality-menu patch 2023-07-09 16:15:55 +02:00
semantic-release-bot
0d96921226 chore(release): 2.182.1-dev.1 [skip ci]
## [2.182.1-dev.1](https://github.com/revanced/revanced-patches/compare/v2.182.0...v2.182.1-dev.1) (2023-07-08)

### Bug Fixes

* **youtube/custom-video-buffer:** remove non functional deprecated patch ([e5abe4f](e5abe4f0e5))
2023-07-08 18:37:45 +00:00
LisoUseInAIKyrios
e5abe4f0e5 fix(youtube/custom-video-buffer): remove non functional deprecated patch 2023-07-08 22:34:41 +04:00
semantic-release-bot
114cdf5571 chore(release): 2.182.0 [skip ci]
# [2.182.0](https://github.com/revanced/revanced-patches/compare/v2.181.0...v2.182.0) (2023-07-08)

### Bug Fixes

* **youtube/hide-layout-components:**  hide mix playlists ([4af3c46](4af3c462e3))

### Features

* **pixiv:** add `hide-ads` patch ([#2578](https://github.com/revanced/revanced-patches/issues/2578)) ([6c55d13](6c55d13c80))
* remove unnecessary notice ([1efe5de](1efe5de0ac))
* **slideforreddit:** add `change-oauth-client-id` patch ([#2571](https://github.com/revanced/revanced-patches/issues/2571)) ([f8f5326](f8f5326670))
* **youtube:** support version `18.23.35` ([#2461](https://github.com/revanced/revanced-patches/issues/2461)) ([34514b0](34514b04f1))
2023-07-08 02:36:59 +00:00
oSumAtrIX
31b61f5d70 chore: merge branch dev to main (#2582) 2023-07-08 04:32:55 +02:00
semantic-release-bot
438cd97278 chore(release): 2.182.0-dev.5 [skip ci]
# [2.182.0-dev.5](https://github.com/revanced/revanced-patches/compare/v2.182.0-dev.4...v2.182.0-dev.5) (2023-07-08)

### Bug Fixes

* **youtube/hide-layout-components:**  hide mix playlists ([4af3c46](4af3c462e3))
2023-07-08 02:32:31 +00:00
oSumAtrIX
4af3c462e3 fix(youtube/hide-layout-components): hide mix playlists 2023-07-08 04:27:45 +02:00
semantic-release-bot
996e6134b8 chore(release): 2.182.0-dev.4 [skip ci]
# [2.182.0-dev.4](https://github.com/revanced/revanced-patches/compare/v2.182.0-dev.3...v2.182.0-dev.4) (2023-07-07)

### Features

* **youtube:** support version `18.23.35` ([#2461](https://github.com/revanced/revanced-patches/issues/2461)) ([34514b0](34514b04f1))
2023-07-07 23:06:05 +00:00
LisoUseInAIKyrios
34514b04f1 feat(youtube): support version 18.23.35 (#2461)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-07-08 01:02:32 +02:00
oSumAtrIX
67294c76cd chore: remove ReadmeGenerator
This is not necessary anymore because the list of patches is now parsed and displayed by revanced/revanced-website
2023-07-06 20:19:10 +02:00
semantic-release-bot
ff26938651 chore(release): 2.182.0-dev.3 [skip ci]
# [2.182.0-dev.3](https://github.com/revanced/revanced-patches/compare/v2.182.0-dev.2...v2.182.0-dev.3) (2023-07-05)

### Features

* **pixiv:** add `hide-ads` patch ([#2578](https://github.com/revanced/revanced-patches/issues/2578)) ([6c55d13](6c55d13c80))
2023-07-05 21:04:56 +00:00
Sculas
6c55d13c80 feat(pixiv): add hide-ads patch (#2578)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-07-05 23:01:27 +02:00
Pun
04bac73a18 build: update gradle (#2583)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-07-05 22:38:39 +02:00
semantic-release-bot
a9d9fc64d4 chore(release): 2.182.0-dev.2 [skip ci]
# [2.182.0-dev.2](https://github.com/revanced/revanced-patches/compare/v2.182.0-dev.1...v2.182.0-dev.2) (2023-07-05)

### Features

* **slideforreddit:** add `change-oauth-client-id` patch ([#2571](https://github.com/revanced/revanced-patches/issues/2571)) ([f8f5326](f8f5326670))
2023-07-05 20:22:07 +00:00
Valerio Mazza
f8f5326670 feat(slideforreddit): add change-oauth-client-id patch (#2571) 2023-07-05 22:19:44 +02:00
semantic-release-bot
1f490d3fe7 chore(release): 2.182.0-dev.1 [skip ci]
# [2.182.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.181.0...v2.182.0-dev.1) (2023-07-05)

### Features

* remove unnecessary notice ([1efe5de](1efe5de0ac))
2023-07-05 13:57:34 +00:00
oSumAtrIX
1efe5de0ac feat: remove unnecessary notice 2023-07-05 15:54:41 +02:00
semantic-release-bot
e7f623a734 chore(release): 2.181.0 [skip ci]
# [2.181.0](https://github.com/revanced/revanced-patches/compare/v2.180.0...v2.181.0) (2023-07-03)

### Bug Fixes

* **infinityforreddit/change-oauth-client-id:** patch correct method ([#2564](https://github.com/revanced/revanced-patches/issues/2564)) ([1e40f37](1e40f37ff3))
* **reddit/hide-comment-ads:** do not require integrations ([ba260c9](ba260c9589))
* **reddit/sanitize-sharing-links:** update patch to support latest app version ([#2575](https://github.com/revanced/revanced-patches/issues/2575)) ([269a694](269a694a82))
* **trakt:** bump compatibility to newer version ([#2554](https://github.com/revanced/revanced-patches/issues/2554)) ([288b1eb](288b1ebe7b))
* **youtube-music/bypass-certificate-checks:** fix fingerprint for the latest target app ([#2567](https://github.com/revanced/revanced-patches/issues/2567)) ([24715a7](24715a76c9))
* **youtube/spoof-signature-verification:** remove auto re-enable functionality ([#2556](https://github.com/revanced/revanced-patches/issues/2556)) ([1f26cee](1f26ceeed8))

### Features

* **baconreader/change-oauth-client-id:** add compatibility for premium package ([#2550](https://github.com/revanced/revanced-patches/issues/2550)) ([fb16f7a](fb16f7a65d))
2023-07-03 21:37:27 +00:00
oSumAtrIX
3bd32bd0fc chore: merge branch dev to main (#2553) 2023-07-03 23:35:19 +02:00
semantic-release-bot
8228a4c16c chore(release): 2.181.0-dev.7 [skip ci]
# [2.181.0-dev.7](https://github.com/revanced/revanced-patches/compare/v2.181.0-dev.6...v2.181.0-dev.7) (2023-07-03)

### Bug Fixes

* **reddit/sanitize-sharing-links:** update patch to support latest app version ([#2575](https://github.com/revanced/revanced-patches/issues/2575)) ([269a694](269a694a82))
2023-07-03 19:32:34 +00:00
LisoUseInAIKyrios
269a694a82 fix(reddit/sanitize-sharing-links): update patch to support latest app version (#2575) 2023-07-03 23:29:14 +04:00
LisoUseInAIKyrios
352c183e39 refactor(youtube-music/bypass-certificate-checks): use simpler patch 2023-07-02 17:37:16 +04:00
semantic-release-bot
3bb86c16be chore(release): 2.181.0-dev.6 [skip ci]
# [2.181.0-dev.6](https://github.com/revanced/revanced-patches/compare/v2.181.0-dev.5...v2.181.0-dev.6) (2023-07-02)

### Bug Fixes

* **reddit/hide-comment-ads:** do not require integrations ([ba260c9](ba260c9589))
2023-07-02 11:38:24 +00:00
oSumAtrIX
ba260c9589 fix(reddit/hide-comment-ads): do not require integrations 2023-07-02 13:36:07 +02:00
semantic-release-bot
021f9bd49f chore(release): 2.181.0-dev.5 [skip ci]
# [2.181.0-dev.5](https://github.com/revanced/revanced-patches/compare/v2.181.0-dev.4...v2.181.0-dev.5) (2023-07-02)

### Bug Fixes

* **infinityforreddit/change-oauth-client-id:** patch correct method ([#2564](https://github.com/revanced/revanced-patches/issues/2564)) ([1e40f37](1e40f37ff3))
2023-07-02 11:32:02 +00:00
johnconner122
1e40f37ff3 fix(infinityforreddit/change-oauth-client-id): patch correct method (#2564) 2023-07-02 13:29:55 +02:00
semantic-release-bot
ddbdd0eb9a chore(release): 2.181.0-dev.4 [skip ci]
# [2.181.0-dev.4](https://github.com/revanced/revanced-patches/compare/v2.181.0-dev.3...v2.181.0-dev.4) (2023-07-02)

### Bug Fixes

* **youtube-music/bypass-certificate-checks:** fix fingerprint for the latest target app ([#2567](https://github.com/revanced/revanced-patches/issues/2567)) ([24715a7](24715a76c9))
2023-07-02 08:41:06 +00:00
LisoUseInAIKyrios
24715a76c9 fix(youtube-music/bypass-certificate-checks): fix fingerprint for the latest target app (#2567) 2023-07-02 12:39:06 +04:00
semantic-release-bot
7aff30c010 chore(release): 2.181.0-dev.3 [skip ci]
# [2.181.0-dev.3](https://github.com/revanced/revanced-patches/compare/v2.181.0-dev.2...v2.181.0-dev.3) (2023-07-02)

### Bug Fixes

* **youtube/spoof-signature-verification:** remove auto re-enable functionality ([#2556](https://github.com/revanced/revanced-patches/issues/2556)) ([1f26cee](1f26ceeed8))
2023-07-02 08:28:01 +00:00
LisoUseInAIKyrios
1f26ceeed8 fix(youtube/spoof-signature-verification): remove auto re-enable functionality (#2556) 2023-07-02 12:25:59 +04:00
semantic-release-bot
503b000e79 chore(release): 2.181.0-dev.2 [skip ci]
# [2.181.0-dev.2](https://github.com/revanced/revanced-patches/compare/v2.181.0-dev.1...v2.181.0-dev.2) (2023-07-01)

### Bug Fixes

* **trakt:** bump compatibility to newer version ([#2554](https://github.com/revanced/revanced-patches/issues/2554)) ([288b1eb](288b1ebe7b))
2023-07-01 14:46:51 +00:00
johnconner122
288b1ebe7b fix(trakt): bump compatibility to newer version (#2554) 2023-07-01 16:44:45 +02:00
semantic-release-bot
2ed95497bb chore(release): 2.181.0-dev.1 [skip ci]
# [2.181.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.180.0...v2.181.0-dev.1) (2023-07-01)

### Features

* **baconreader/change-oauth-client-id:** add compatibility for premium package ([#2550](https://github.com/revanced/revanced-patches/issues/2550)) ([fb16f7a](fb16f7a65d))
2023-07-01 12:48:21 +00:00
Aunali321
fb16f7a65d feat(baconreader/change-oauth-client-id): add compatibility for premium package (#2550) 2023-07-01 14:46:17 +02:00
semantic-release-bot
926f38055a chore(release): 2.180.0 [skip ci]
# [2.180.0](https://github.com/revanced/revanced-patches/compare/v2.179.0...v2.180.0) (2023-07-01)

### Features

* use clearer descriptions for patches ([7814e46](7814e464e1))
2023-07-01 01:12:52 +00:00
oSumAtrIX
8e32956dd6 chore: merge branch dev to main (#2542) 2023-07-01 03:10:51 +02:00
semantic-release-bot
914ccaee5c chore(release): 2.180.0-dev.1 [skip ci]
# [2.180.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.179.0...v2.180.0-dev.1) (2023-07-01)

### Features

* use clearer descriptions for patches ([7814e46](7814e464e1))
2023-07-01 01:07:20 +00:00
oSumAtrIX
7814e464e1 feat: use clearer descriptions for patches 2023-07-01 03:05:16 +02:00
semantic-release-bot
7fd75ef337 chore(release): 2.179.0 [skip ci]
# [2.179.0](https://github.com/revanced/revanced-patches/compare/v2.178.0...v2.179.0) (2023-07-01)

### Bug Fixes

* **enable-android-debugging:** remove json options ([#2497](https://github.com/revanced/revanced-patches/issues/2497)) ([514aafa](514aafabe8))
* **relayforreddit/change-oauth-client-id:** change client id instead of developer key ([#2508](https://github.com/revanced/revanced-patches/issues/2508)) ([b6c2757](b6c2757a7d))
* **syncforreddit/change-oauth-client-id:** add dev edition ([#2516](https://github.com/revanced/revanced-patches/issues/2516)) ([81dbd1d](81dbd1dd9f))
* **syncforreddit:** use correct overriding method signature ([#2483](https://github.com/revanced/revanced-patches/issues/2483)) ([5d6cd7d](5d6cd7de55))
* **youtube/client-spoof:** update settings text for known side effects of spoof signature ([#2476](https://github.com/revanced/revanced-patches/issues/2476)) ([1ef8c43](1ef8c435b4))
* **youtube:** improve patching speed ([#2514](https://github.com/revanced/revanced-patches/issues/2514)) ([38dda93](38dda9346b))

### Features

* **baconreader:** add `change-oauth-client-id` patch ([#2535](https://github.com/revanced/revanced-patches/issues/2535)) ([b15002e](b15002e318))
* **infinityforreddit:** add `change-oauth-client-id` patch ([#2452](https://github.com/revanced/revanced-patches/issues/2452)) ([488b073](488b0731fa))
* **reddit:** add `disable-screenshot-popup` patch ([#2387](https://github.com/revanced/revanced-patches/issues/2387)) ([183f25d](183f25d17c))
* **redditisfun/change-oauth-client-id:** add compatibility for paid versions ([#2536](https://github.com/revanced/revanced-patches/issues/2536)) ([d293524](d29352418c))
* **redditisfun:** add `change-oauth-client-id` patch ([e06f786](e06f7863b0))
* **relayforreddit:** add `change-oauth-client-id` patch ([#2491](https://github.com/revanced/revanced-patches/issues/2491)) ([2b502d6](2b502d601b))
2023-07-01 00:40:13 +00:00
oSumAtrIX
db219afd38 chore: merge branch dev to main (#2480) 2023-07-01 02:36:56 +02:00
semantic-release-bot
b49cf77343 chore(release): 2.179.0-dev.12 [skip ci]
# [2.179.0-dev.12](https://github.com/revanced/revanced-patches/compare/v2.179.0-dev.11...v2.179.0-dev.12) (2023-07-01)

### Features

* **baconreader:** add `change-oauth-client-id` patch ([#2535](https://github.com/revanced/revanced-patches/issues/2535)) ([b15002e](b15002e318))
2023-07-01 00:25:16 +00:00
Aunali321
b15002e318 feat(baconreader): add change-oauth-client-id patch (#2535)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-07-01 02:22:42 +02:00
semantic-release-bot
e181e2eac2 chore(release): 2.179.0-dev.11 [skip ci]
# [2.179.0-dev.11](https://github.com/revanced/revanced-patches/compare/v2.179.0-dev.10...v2.179.0-dev.11) (2023-07-01)
2023-07-01 00:01:31 +00:00
oSumAtrIX
def58af25e build(revanced-patcher): bump version 2023-07-01 01:58:27 +02:00
semantic-release-bot
15a53dab2b chore(release): 2.179.0-dev.10 [skip ci]
# [2.179.0-dev.10](https://github.com/revanced/revanced-patches/compare/v2.179.0-dev.9...v2.179.0-dev.10) (2023-06-30)

### Features

* **redditisfun/change-oauth-client-id:** add compatibility for paid versions ([#2536](https://github.com/revanced/revanced-patches/issues/2536)) ([d293524](d29352418c))
2023-06-30 11:09:20 +00:00
Dan C
d29352418c feat(redditisfun/change-oauth-client-id): add compatibility for paid versions (#2536) 2023-06-30 13:06:57 +02:00
semantic-release-bot
e9ed39cd62 chore(release): 2.179.0-dev.9 [skip ci]
# [2.179.0-dev.9](https://github.com/revanced/revanced-patches/compare/v2.179.0-dev.8...v2.179.0-dev.9) (2023-06-30)

### Features

* **redditisfun:** add `change-oauth-client-id` patch ([e06f786](e06f7863b0))
2023-06-30 00:32:50 +00:00
oSumAtrIX
e06f7863b0 feat(redditisfun): add change-oauth-client-id patch 2023-06-30 02:30:41 +02:00
semantic-release-bot
969f37f60e chore(release): 2.179.0-dev.8 [skip ci]
# [2.179.0-dev.8](https://github.com/revanced/revanced-patches/compare/v2.179.0-dev.7...v2.179.0-dev.8) (2023-06-29)

### Features

* **reddit:** add `disable-screenshot-popup` patch ([#2387](https://github.com/revanced/revanced-patches/issues/2387)) ([183f25d](183f25d17c))
2023-06-29 01:09:46 +00:00
Aunali321
183f25d17c feat(reddit): add disable-screenshot-popup patch (#2387)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-06-29 03:07:03 +02:00
semantic-release-bot
323c80f085 chore(release): 2.179.0-dev.7 [skip ci]
# [2.179.0-dev.7](https://github.com/revanced/revanced-patches/compare/v2.179.0-dev.6...v2.179.0-dev.7) (2023-06-28)

### Bug Fixes

* **youtube:** improve patching speed ([#2514](https://github.com/revanced/revanced-patches/issues/2514)) ([38dda93](38dda9346b))
2023-06-28 13:46:14 +00:00
LisoUseInAIKyrios
38dda9346b fix(youtube): improve patching speed (#2514) 2023-06-28 17:43:45 +04:00
kitadai31
23537557b5 refactor: use method to add instructions without labels (#2518) 2023-06-27 19:03:25 +02:00
semantic-release-bot
3f13f796c7 chore(release): 2.179.0-dev.6 [skip ci]
# [2.179.0-dev.6](https://github.com/revanced/revanced-patches/compare/v2.179.0-dev.5...v2.179.0-dev.6) (2023-06-27)

### Bug Fixes

* **syncforreddit/change-oauth-client-id:** add dev edition ([#2516](https://github.com/revanced/revanced-patches/issues/2516)) ([81dbd1d](81dbd1dd9f))
2023-06-27 11:05:12 +00:00
LisoUseInAIKyrios
81dbd1dd9f fix(syncforreddit/change-oauth-client-id): add dev edition (#2516) 2023-06-27 15:02:41 +04:00
semantic-release-bot
381b4e6e10 chore(release): 2.179.0-dev.5 [skip ci]
# [2.179.0-dev.5](https://github.com/revanced/revanced-patches/compare/v2.179.0-dev.4...v2.179.0-dev.5) (2023-06-27)

### Bug Fixes

* **relayforreddit/change-oauth-client-id:** change client id instead of developer key ([#2508](https://github.com/revanced/revanced-patches/issues/2508)) ([b6c2757](b6c2757a7d))
2023-06-27 02:53:24 +00:00
Guðmundur Óli
b6c2757a7d fix(relayforreddit/change-oauth-client-id): change client id instead of developer key (#2508)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-06-27 04:50:48 +02:00
semantic-release-bot
a80ecfc631 chore(release): 2.179.0-dev.4 [skip ci]
# [2.179.0-dev.4](https://github.com/revanced/revanced-patches/compare/v2.179.0-dev.3...v2.179.0-dev.4) (2023-06-27)
2023-06-27 02:37:45 +00:00
oSumAtrIX
c334dc768f build(revanced-patcher): bump version 2023-06-27 04:10:33 +02:00
semantic-release-bot
3adf51ad4f chore(release): 2.179.0-dev.3 [skip ci]
# [2.179.0-dev.3](https://github.com/revanced/revanced-patches/compare/v2.179.0-dev.2...v2.179.0-dev.3) (2023-06-26)

### Bug Fixes

* **enable-android-debugging:** remove json options ([#2497](https://github.com/revanced/revanced-patches/issues/2497)) ([514aafa](514aafabe8))
2023-06-26 19:04:14 +00:00
LisoUseInAIKyrios
514aafabe8 fix(enable-android-debugging): remove json options (#2497) 2023-06-26 23:01:34 +04:00
semantic-release-bot
e5c05b889f chore(release): 2.179.0-dev.2 [skip ci]
# [2.179.0-dev.2](https://github.com/revanced/revanced-patches/compare/v2.179.0-dev.1...v2.179.0-dev.2) (2023-06-25)

### Features

* **relayforreddit:** add `change-oauth-client-id` patch ([#2491](https://github.com/revanced/revanced-patches/issues/2491)) ([2b502d6](2b502d601b))
2023-06-25 03:16:19 +00:00
Guðmundur Óli
2b502d601b feat(relayforreddit): add change-oauth-client-id patch (#2491)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-06-25 05:13:34 +02:00
semantic-release-bot
927a02586a chore(release): 2.179.0-dev.1 [skip ci]
# [2.179.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.178.1-dev.1...v2.179.0-dev.1) (2023-06-24)

### Bug Fixes

* **syncforreddit:** use correct overriding method signature ([#2483](https://github.com/revanced/revanced-patches/issues/2483)) ([5d6cd7d](5d6cd7de55))

### Features

* **infinityforreddit:** add `change-oauth-client-id` patch ([#2452](https://github.com/revanced/revanced-patches/issues/2452)) ([488b073](488b0731fa))
2023-06-24 11:40:44 +00:00
johnconner122
5d6cd7de55 fix(syncforreddit): use correct overriding method signature (#2483) 2023-06-24 13:37:49 +02:00
johnconner122
488b0731fa feat(infinityforreddit): add change-oauth-client-id patch (#2452)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-06-24 02:55:46 +02:00
semantic-release-bot
cac3bd75b2 chore(release): 2.178.1-dev.1 [skip ci]
## [2.178.1-dev.1](https://github.com/revanced/revanced-patches/compare/v2.178.0...v2.178.1-dev.1) (2023-06-23)

### Bug Fixes

* **youtube/client-spoof:** update settings text for known side effects of spoof signature ([#2476](https://github.com/revanced/revanced-patches/issues/2476)) ([1ef8c43](1ef8c435b4))
2023-06-23 13:49:07 +00:00
LisoUseInAIKyrios
1ef8c435b4 fix(youtube/client-spoof): update settings text for known side effects of spoof signature (#2476) 2023-06-23 17:46:27 +04:00
semantic-release-bot
baeed05fbc chore(release): 2.178.0 [skip ci]
# [2.178.0](https://github.com/revanced/revanced-patches/compare/v2.177.0...v2.178.0) (2023-06-21)

### Bug Fixes

* **boostforreddit:** use correct options ([8233c30](8233c30fc9))
* don't include all Litho patches, when not included ([ccc369a](ccc369a2a8))
* **googlerecorder/remove-device-restrictions:** add missing app constraint ([#2438](https://github.com/revanced/revanced-patches/issues/2438)) ([7d85d2a](7d85d2ad91))
* **youtube/comments:** add missing filter ([#2423](https://github.com/revanced/revanced-patches/issues/2423)) ([d30797f](d30797f9b8))
* **youtube/hide-album-cards:** call correct integrations method ([08cfd81](08cfd81362))
* **youtube:** separate `hide-ads` to `hide-layout-components` patch ([6611882](66118829b3))

### Features

* **boostforreddit:** add `change-oauth-client-id` patch ([1c95e0f](1c95e0fcad))
* **google-recorder:** add `remove-device-restrictions` patch ([2e7e231](2e7e231e7d))
* **twitch:** 15.4.1 support ([#2462](https://github.com/revanced/revanced-patches/issues/2462)) ([ed28862](ed28862733))
* **youtube-music:** remove version compatibility constraints ([f038278](f038278c05))
* **youtube/hide-layout-components:** separate hiding expandable chips and chapters ([fc7db5c](fc7db5c672))
2023-06-21 23:32:55 +00:00
oSumAtrIX
badcadb8e6 chore: merge branch dev to main (#2421) 2023-06-22 01:29:50 +02:00
semantic-release-bot
e8f8746fce chore(release): 2.178.0-dev.9 [skip ci]
# [2.178.0-dev.9](https://github.com/revanced/revanced-patches/compare/v2.178.0-dev.8...v2.178.0-dev.9) (2023-06-21)

### Features

* **twitch:** 15.4.1 support ([#2462](https://github.com/revanced/revanced-patches/issues/2462)) ([ed28862](ed28862733))
2023-06-21 18:06:41 +00:00
LisoUseInAIKyrios
ed28862733 feat(twitch): 15.4.1 support (#2462) 2023-06-21 22:04:00 +04:00
semantic-release-bot
36e08dbe46 chore(release): 2.178.0-dev.8 [skip ci]
# [2.178.0-dev.8](https://github.com/revanced/revanced-patches/compare/v2.178.0-dev.7...v2.178.0-dev.8) (2023-06-20)

### Bug Fixes

* **boostforreddit:** use correct options ([8233c30](8233c30fc9))
2023-06-20 02:08:00 +00:00
oSumAtrIX
8233c30fc9 fix(boostforreddit): use correct options 2023-06-20 04:04:04 +02:00
semantic-release-bot
21e96aff19 chore(release): 2.178.0-dev.7 [skip ci]
# [2.178.0-dev.7](https://github.com/revanced/revanced-patches/compare/v2.178.0-dev.6...v2.178.0-dev.7) (2023-06-19)

### Features

* **youtube-music:** remove version compatibility constraints ([f038278](f038278c05))
2023-06-19 01:18:37 +00:00
oSumAtrIX
f038278c05 feat(youtube-music): remove version compatibility constraints 2023-06-19 03:14:48 +02:00
semantic-release-bot
46f2ca230b chore(release): 2.178.0-dev.6 [skip ci]
# [2.178.0-dev.6](https://github.com/revanced/revanced-patches/compare/v2.178.0-dev.5...v2.178.0-dev.6) (2023-06-18)

### Bug Fixes

* **youtube/hide-album-cards:** call correct integrations method ([08cfd81](08cfd81362))
2023-06-18 20:40:32 +00:00
oSumAtrIX
08cfd81362 fix(youtube/hide-album-cards): call correct integrations method 2023-06-18 22:37:51 +02:00
semantic-release-bot
e23ce108f0 chore(release): 2.178.0-dev.5 [skip ci]
# [2.178.0-dev.5](https://github.com/revanced/revanced-patches/compare/v2.178.0-dev.4...v2.178.0-dev.5) (2023-06-18)

### Features

* **youtube/hide-layout-components:** separate hiding expandable chips and chapters ([fc7db5c](fc7db5c672))
2023-06-18 16:51:21 +00:00
oSumAtrIX
fc7db5c672 feat(youtube/hide-layout-components): separate hiding expandable chips and chapters 2023-06-18 18:48:30 +02:00
semantic-release-bot
920bfea952 chore(release): 2.178.0-dev.4 [skip ci]
# [2.178.0-dev.4](https://github.com/revanced/revanced-patches/compare/v2.178.0-dev.3...v2.178.0-dev.4) (2023-06-18)

### Features

* **boostforreddit:** add `change-oauth-client-id` patch ([1c95e0f](1c95e0fcad))
2023-06-18 00:21:44 +00:00
oSumAtrIX
1c95e0fcad feat(boostforreddit): add change-oauth-client-id patch 2023-06-18 02:19:08 +02:00
semantic-release-bot
7f1b70e625 chore(release): 2.178.0-dev.3 [skip ci]
# [2.178.0-dev.3](https://github.com/revanced/revanced-patches/compare/v2.178.0-dev.2...v2.178.0-dev.3) (2023-06-17)

### Bug Fixes

* **youtube/comments:** add missing filter ([#2423](https://github.com/revanced/revanced-patches/issues/2423)) ([d30797f](d30797f9b8))
2023-06-17 23:50:15 +00:00
johnconner122
d30797f9b8 fix(youtube/comments): add missing filter (#2423) 2023-06-18 01:47:31 +02:00
semantic-release-bot
d5609f65ca chore(release): 2.178.0-dev.2 [skip ci]
# [2.178.0-dev.2](https://github.com/revanced/revanced-patches/compare/v2.178.0-dev.1...v2.178.0-dev.2) (2023-06-16)

### Bug Fixes

* **googlerecorder/remove-device-restrictions:** add missing app constraint ([#2438](https://github.com/revanced/revanced-patches/issues/2438)) ([7d85d2a](7d85d2ad91))
2023-06-16 19:31:02 +00:00
LisoUseInAIKyrios
88e6ab2d07 chore: fixing build 2023-06-16 23:28:22 +04:00
johnconner122
7d85d2ad91 fix(googlerecorder/remove-device-restrictions): add missing app constraint (#2438) 2023-06-16 13:09:40 +02:00
semantic-release-bot
21adab5ef3 chore(release): 2.178.0-dev.1 [skip ci]
# [2.178.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.177.1-dev.2...v2.178.0-dev.1) (2023-06-16)

### Features

* **google-recorder:** add `remove-device-restrictions` patch ([2e7e231](2e7e231e7d))
2023-06-16 02:09:45 +00:00
oSumAtrIX
2e7e231e7d feat(google-recorder): add remove-device-restrictions patch 2023-06-16 04:06:53 +02:00
847 changed files with 13279 additions and 11830 deletions

9
.gitattributes vendored Normal file
View File

@@ -0,0 +1,9 @@
#
# https://help.github.com/articles/dealing-with-line-endings/
#
# Linux start script should use lf
/gradlew text eol=lf
# These are Windows script files and should use crlf
*.bat text eol=crlf

View File

@@ -1,73 +0,0 @@
name: 🐞 Bug report
description: Report a very clearly broken issue.
title: 'bug: '
labels: [bug]
body:
- type: markdown
attributes:
value: |
# ReVanced bug report
Important to note that your issue may have already been reported before. Please check for existing issues [here](https://github.com/revanced/revanced-patches/labels/bug).
- type: dropdown
attributes:
label: Type
options:
- Error while patching
- Error at runtime
- Cosmetic
- Other
validations:
required: true
- type: textarea
attributes:
label: Bug description
description: How did you find the bug? Any additional details that might help?
validations:
required: true
- type: textarea
attributes:
label: Steps to reproduce
description: Add the steps to reproduce this bug including your environment.
placeholder: Step 1. Download some files. Step 2. ...
validations:
required: true
- type: textarea
attributes:
label: Relevant log output
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. Capture crash logs by running `logcat | grep AndroidRuntime`.
render: shell
validations:
required: true
- type: textarea
attributes:
label: Screenshots or videos
description: Add screenshots or videos that show the bug here.
placeholder: Drag and drop the screenshots/videos into this box.
validations:
required: false
- type: textarea
attributes:
label: Solution
description: If applicable, add a possible solution.
validations:
required: false
- type: textarea
attributes:
label: Additional context
description: Add additional context here.
validations:
required: false
- type: checkboxes
id: acknowledgements
attributes:
label: Acknowledgements
description: Your issue will be closed if you haven't done these steps.
options:
- label: I have searched the existing issues and this is a new and no duplicate or related to another open issue.
required: true
- label: I have written a short but informative title.
required: true
- label: I filled out all of the requested information in this issue properly.
required: true

49
.github/ISSUE_TEMPLATE/bug-report.yml vendored Normal file
View File

@@ -0,0 +1,49 @@
name: 🐞 Bug report
description: Report a bug or an issue.
title: 'bug: '
labels: ['Bug report']
body:
- type: markdown
attributes:
value: |
# ReVanced Patches bug report
Please check for existing bug reports
[here](https://github.com/ReVanced/revanced-patches/labels/Bug%20report)
before creating a new one.
- type: textarea
attributes:
label: Bug description
description: |
- Describe your bug in detail
- Add steps to reproduce the bug if possible (Step 1. ... Step 2. ...)
- Add images and videos if possible
- List used patches if applicable
validations:
required: true
- type: textarea
attributes:
label: Error logs
description: Exceptions can be captured by running `logcat | grep AndroidRuntime` in a shell.
render: shell
- type: textarea
attributes:
label: Solution
description: If applicable, add a possible solution to the bug.
- type: textarea
attributes:
label: Additional context
description: Add additional context here.
- type: checkboxes
id: acknowledgements
attributes:
label: Acknowledgements
description: Your issue will be closed if you don't follow the checklist below.
options:
- label: This request is not a duplicate of an existing issue.
required: true
- label: I have chosen an appropriate title.
required: true
- label: All requested information has been provided properly.
required: true

View File

@@ -1,8 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: 📃 Documentation
url: https://github.com/revanced/revanced-documentation/
about: Don't know how or where to start? Check out our documentation!
- name: 🗨 Discussions
url: https://github.com/revanced/revanced-suggestions/discussions
about: Got something you think should change or be added? Search for or start a new discussion!
about: Have something unspecific to ReVanced Patches in mind? Search for or start a new discussion!

View File

@@ -0,0 +1,44 @@
name: ⭐ Feature request
description: Create a detailed request for a new feature.
title: 'feat: '
labels: ['Feature request']
body:
- type: markdown
attributes:
value: |
# ReVanced Patches feature request
Please check for existing feature requests
[here](https://github.com/ReVanced/revanced-patches/labels/Feature%20request)
before creating a new one.
- type: textarea
attributes:
label: Feature description
description: |
- Describe your feature in detail
- Add images, videos, links, examples, references, etc. if possible
- Add the target application name in case you request a new patch
- type: textarea
attributes:
label: Motivation
description: |
A strong motivation is necessary for a feature request to be considered.
- Why should this feature be implemented?
- What is the explicit use case?
- What are the benefits?
- What makes this feature important?
validations:
required: true
- type: checkboxes
id: acknowledgements
attributes:
label: Acknowledgements
description: Your issue will be closed if you don't follow the checklist below.
options:
- label: This request is not a duplicate of an existing issue.
required: true
- label: I have chosen an appropriate title.
required: true
- label: All requested information has been provided properly.
required: true

View File

@@ -1,41 +0,0 @@
name: ⭐ Patch Request
description: Create a detailed patch request.
title: 'feat: '
labels: [patch-request]
body:
- type: textarea
attributes:
label: Application
description: Which application is this patch for?
validations:
required: true
- type: textarea
attributes:
label: Issue
description: What is the issue this patch should solve?
validations:
required: true
- type: textarea
attributes:
label: Patch
description: "Describe the patch you'd like to see in detail."
validations:
required: true
- type: textarea
attributes:
label: Motivation
description: Why should your patch request be considered? What makes it valuable to the community?
validations:
required: true
- type: checkboxes
id: acknowledgements
attributes:
label: Acknowledgements
description: Your issue will be closed if you haven't done these steps.
options:
- label: I have searched the existing issues and this is a new and no duplicate or related to another open issue.
required: true
- label: I have written a short but informative title.
required: true
- label: I filled out all of the requested information in this issue properly.
required: true

View File

@@ -1,4 +1,4 @@
name: PR to main
name: Open a PR to main
on:
push:
@@ -7,7 +7,7 @@ on:
workflow_dispatch:
env:
MESSAGE: merge branch `${{ github.head_ref || github.ref_name }}` to `main`
MESSAGE: Merge branch `${{ github.head_ref || github.ref_name }}` to `main`
jobs:
pull-request:
@@ -15,7 +15,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Open pull request
uses: repo-sync/pull-request@v2
with:

View File

@@ -17,7 +17,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
# Make sure the release step uses its own credentials:
# https://github.com/cycjimmy/semantic-release-action#private-packages
@@ -30,13 +30,12 @@ jobs:
${{ runner.home }}/.gradle/caches
${{ runner.home }}/.gradle/wrapper
.gradle
build
node_modules
key: ${{ runner.os }}-gradle-npm-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties', 'package-lock.json') }}
- name: Build with Gradle
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./gradlew generateMeta clean --no-daemon
run: ./gradlew generateMeta clean
- name: Setup semantic-release
run: npm install
- name: Release

2
.idea/misc.xml generated
View File

@@ -4,5 +4,5 @@
<component name="FrameworkDetectionExcludesConfiguration">
<file type="web" url="file://$PROJECT_DIR$" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="azul-17" project-jdk-type="JavaSDK" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="azul-17" project-jdk-type="JavaSDK" />
</project>

View File

@@ -10,7 +10,7 @@
[
"@semantic-release/commit-analyzer", {
"releaseRules": [
{ "type": "build", "scope": "revanced-patcher", "release": "patch" }
{ "type": "build", "scope": "Needs bump", "release": "patch" }
]
}
],

File diff suppressed because it is too large Load Diff

109
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,109 @@
<p align="center">
<picture>
<source
width="256px"
media="(prefers-color-scheme: dark)"
srcset="assets/revanced-headline/revanced-headline-vertical-dark.svg"
>
<img
src="assets/revanced-headline/revanced-headline-vertical-light.svg"
>
</picture>
<br>
<a href="https://revanced.app/">
<img height="24px" src="assets/revanced-logo/revanced-logo-round.svg" />
</a>&nbsp;&nbsp;&nbsp;
<a href="https://github.com/revanced">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://i.ibb.co/dMMmCrW/Git-Hub-Mark.png" />
<img height="24px" src="https://i.ibb.co/9wV3HGF/Git-Hub-Mark-Light.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="http://revanced.app/discord">
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032563-d4e084b7-244e-4358-af50-26bde6dd4996.png" />
</a>&nbsp;&nbsp;&nbsp;
<a href="https://reddit.com/r/revancedapp">
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032351-9d9d5619-8ef7-470a-9eec-2744ece54553.png" />
</a>&nbsp;&nbsp;&nbsp;
<a href="https://t.me/app_revanced">
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032213-faf25ab8-0bc3-4a94-a730-b524c96df124.png" />
</a>&nbsp;&nbsp;&nbsp;
<a href="https://x.com/revancedapp">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/93124920/270180600-7c1b38bf-889b-4d68-bd5e-b9d86f91421a.png">
<img height="24px" src="https://user-images.githubusercontent.com/93124920/270108715-d80743fa-b330-4809-b1e6-79fbdc60d09c.png" />
<picture/>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://www.youtube.com/@ReVanced">
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032714-c51c7492-0666-44ac-99c2-f003a695ab50.png" />
</a>
<br>
<br>
Continuing the legacy of Vanced
</p>
# 📙 ReVanced Patches contribution guidelines
This document describes how to contribute to ReVanced Patches.
## 📖 Resources to help you get started
* The [documentation](https://github.com/ReVanced/revanced-patches/tree/docs/docs) provides the fundamentals of patches
and everything necessary to create your own patch from scratch
* [Our backlog](https://github.com/orgs/ReVanced/projects/12) is where we keep track of what we're working on
* [Issues](https://github.com/ReVanced/revanced-patches/issues) are where we keep track of bugs and feature requests
## 🙏 Submitting a feature request
Features can be requested by opening an issue using the
[Feature request issue template](https://github.com/ReVanced/revanced-patches/issues/new?assignees=&labels=Feature+request&projects=&template=feature-request.yml&title=feat%3A+).
> **Note**
> Requests can be accepted or rejected at the discretion of maintainers of ReVanced Patches.
> Good motivation has to be provided for a request to be accepted.
## 🐞 Submitting a bug report
If you encounter a bug while using ReVanced Patches, open an issue using the
[Bug report issue template](https://github.com/ReVanced/revanced-patches/issues/new?assignees=&labels=Bug+report&projects=&template=bug-report.yml&title=bug%3A+).
## 🧑‍⚖️ Guidelines for requesting or contributing patches
To maintain a high-quality and ethical collection of patches, the following guidelines for requesting
or contributing patches are effective as of September 14, 2023. Any patches present prior to this date
are unaffected by this change.
> **Note**
> We generally adhere to the guidelines outlined below. However, we may make exceptions
> in specific cases based on our discretion. Pull requests for patches that deviate from the guidelines
> will be evaluated individually. While a patch may not align with our general guidelines,
> we will consider its acceptance on a case-by-case basis, taking into account its impact on user experience
> and ethical considerations. We reserve the right to make exceptions for patches that provide significant value.
✅ Examples for acceptable patches include:
* Customizations: Feel free to contribute patches that allow users to personalize their experience
* Ad-Blocking: Patches aimed at enhancing user privacy and blocking intrusive advertisements are appreciated
* Feature additions: Patches that add new features or change behaviour to the app are welcome
❌ Examples for unacceptable patches include:
* Payment circumvention: We do not accept patches that exist solely to bypass payment for the app or any of its features
* Malicious patches: Patches that are malicious in nature are not allowed
## 📝 How to contribute
1. Before contributing, it is recommended to open an issue to discuss your change
with the maintainers of ReVanced Patches. This will help you determine whether your change is acceptable
and whether it is worth your time to implement it
2. Development happens on the `dev` branch. Fork the repository and create your branch from `dev`
3. Commit your changes. In case you are contributing a new patch, make sure to follow the conventions for patches
described in the [documentation](https://github.com/ReVanced/revanced-patches/tree/docs/docs)
4. Submit a pull request to the `dev` branch of the repository and reference issues
that your pull request closes in the description of your pull request
5. Our team will review your pull request and provide feedback. Once your pull request is approved,
it will be merged into the `dev` branch and will be included in the next release of ReVanced Patches
❤️ Thank you for considering contributing to ReVanced Patches,
ReVanced

View File

@@ -1,122 +0,0 @@
## 🧩 ReVanced Patches
The official ReVanced Patches.
## 📋 List of patches in this repository
{{ table }}
> Looking for the JSON variant of this? [Click here](patches.json).
## 📝 JSON Format
This section explains the JSON format for the [patches.json](patches.json) file.
The file contains an array of objects, each object representing a patch. The object contains the following properties:
| key | description |
|-------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `name` | The name of the patch. |
| `description` | The description of the patch. |
| `version` | The version of the patch. |
| `excluded` | Whether the patch is excluded by default. If `true`, the patch must never be included by default. |
| `options` | An array of options for this patch. |
| `options.key` | The key of the option. |
| `options.title` | The title of the option. |
| `options.description` | The description of the option. |
| `options.required` | Whether the option is required. |
| `options.choices?` | An array of choices of the option. This may be `null` if this option has no choices. The element type of this array may be any type. It can be a `String`, `Int` or something else. |
| `dependencies` | An array of dependencies, which are patch names. |
| `compatiblePackages` | An array of packages compatible with this patch. |
| `compatiblePackages.name` | The name of the package. |
| `compatiblePackages.versions` | An array of versions of the package compatible with this patch. If empty, all versions are seemingly compatible. |
Example:
```json
[
{
"name": "remember-video-quality",
"description": "Adds the ability to remember the video quality you chose in the video quality flyout.",
"version": "0.0.1",
"excluded": false,
"options": [],
"dependencies": [
"integrations",
"video-id-hook"
],
"compatiblePackages": [
{
"name": "com.google.android.youtube",
"versions": [
"17.22.36",
"17.24.35",
"17.26.35",
"17.27.39",
"17.28.34",
"17.29.34",
"17.32.35",
"17.33.42"
]
}
]
},
{
"name": "theme",
"description": "Enables a custom theme.",
"version": "0.0.1",
"excluded": false,
"options": [
{
"key": "theme",
"title": "Theme",
"description": "Select a theme.",
"required": true,
"choices": [
"Amoled"
]
}
],
"dependencies": [
"locale-config-fix"
],
"compatiblePackages": [
{
"name": "com.google.android.youtube",
"versions": []
}
]
},
{
"name": "custom-branding",
"description": "Changes the YouTube launcher icon and name to your choice (defaults to ReVanced).",
"version": "0.0.1",
"excluded": false,
"options": [
{
"key": "appName",
"title": "Application Name",
"description": "The name of the application it will show on your home screen.",
"required": true,
"choices": null
},
{
"key": "appIconPath",
"title": "Application Icon Path",
"description": "A path to the icon of the application.",
"required": false,
"choices": null
}
],
"dependencies": [
"locale-config-fix"
],
"compatiblePackages": [
{
"name": "com.google.android.youtube",
"versions": []
}
]
}
]
```

632
README.md
View File

@@ -1,539 +1,93 @@
## 🧩 ReVanced Patches
The official ReVanced Patches.
## 📋 List of patches in this repository
### [📦 `com.google.android.youtube`](https://play.google.com/store/apps/details?id=com.google.android.youtube)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `always-autorepeat` | Always repeats the playing video again. | 18.19.35 |
| `client-spoof` | Spoofs a patched client to allow playback. | 18.19.35 |
| `comments` | Hides components related to comments. | 18.19.35 |
| `copy-video-url` | Adds buttons in player to copy video links. | 18.19.35 |
| `custom-branding` | Changes the YouTube launcher icon and name to your choice (defaults to ReVanced). | all |
| `custom-video-buffer` | Lets you change the buffers of videos. | 18.19.35 |
| `disable-auto-captions` | Disable forced captions from being automatically enabled. | 18.19.35 |
| `disable-fullscreen-panels` | Disables video description and comments panel in fullscreen view. | 18.19.35 |
| `disable-player-popup-panels` | Disables panels from appearing automatically when going into fullscreen (playlist or live chat). | 18.19.35 |
| `disable-shorts-on-startup` | Disables playing YouTube Shorts when launching YouTube. | 18.19.35 |
| `disable-zoom-haptics` | Disables haptics when zooming. | all |
| `enable-debugging` | Adds debugging options. | all |
| `external-downloads` | Adds support to download and save YouTube videos using an external app. | 18.19.35 |
| `hdr-auto-brightness` | Makes the brightness of HDR videos follow the system default. | 18.19.35 |
| `hide-ads` | Removes general ads. | 18.19.35 |
| `hide-album-cards` | Hides the album cards below the artist description. | 18.19.35 |
| `hide-autoplay-button` | Hides the autoplay button in the video player. | 18.19.35 |
| `hide-breaking-news-shelf` | Hides the breaking news shelf on the homepage tab. | 18.19.35 |
| `hide-captions-button` | Hides the captions button on video player. | 18.19.35 |
| `hide-cast-button` | Hides the cast button in the video player. | all |
| `hide-crowdfunding-box` | Hides the crowdfunding box between the player and video description. | 18.19.35 |
| `hide-email-address` | Hides the email address in the account switcher. | 18.19.35 |
| `hide-endscreen-cards` | Hides the suggested video cards at the end of a video in fullscreen. | 18.19.35 |
| `hide-filter-bar` | Hides the filter bar in video feeds. | 18.19.35 |
| `hide-floating-microphone-button` | Hides the floating microphone button which appears in search. | 18.19.35 |
| `hide-info-cards` | Hides info cards in videos. | 18.19.35 |
| `hide-layout-components` | Hides general layout components. | 18.19.35 |
| `hide-load-more-button` | Hides the button under videos that loads similar videos. | 18.19.35 |
| `hide-player-buttons` | Adds the option to hide video player previous and next buttons. | 18.19.35 |
| `hide-player-overlay` | Hides the dark background overlay from the player when player controls are visible. | all |
| `hide-seekbar` | Hides the seekbar. | 18.19.35 |
| `hide-shorts-components` | Hides components from YouTube Shorts. | 18.19.35 |
| `hide-timestamp` | Hides timestamp in video player. | 18.19.35 |
| `hide-video-action-buttons` | Adds the options to hide action buttons under a video. | 18.19.35 |
| `hide-watch-in-vr` | Hides the option to watch in VR from the player settings flyout panel. | 18.19.35 |
| `hide-watermark` | Hides creator's watermarks on videos. | 18.19.35 |
| `minimized-playback` | Enables minimized and background playback. | 18.19.35 |
| `navigation-buttons` | Adds options to hide or change navigation buttons. | 18.19.35 |
| `old-quality-layout` | Enables the original video quality flyout in the video player settings. | 18.19.35 |
| `open-links-externally` | Open links outside of the app directly in your browser. | 18.19.35 |
| `premium-heading` | Shows premium branding on the home screen. | all |
| `remember-video-quality` | Adds the ability to remember the video quality you chose in the video quality flyout. | 18.19.35 |
| `remove-player-controls-background` | Removes the background from the video player controls. | 18.19.35 |
| `return-youtube-dislike` | Shows the dislike count of videos using the Return YouTube Dislike API. | 18.19.35 |
| `seekbar-tapping` | Enables tap-to-seek on the seekbar of the video player. | 18.19.35 |
| `sponsorblock` | Integrates SponsorBlock which allows skipping video segments such as sponsored content. | 18.19.35 |
| `spoof-app-version` | Tricks YouTube into thinking, you are running an older version of the app. One of the side effects also includes restoring the old UI. | 18.19.35 |
| `swipe-controls` | Adds volume and brightness swipe controls. | 18.19.35 |
| `tablet-mini-player` | Enables the tablet mini player layout. | 18.19.35 |
| `theme` | Applies a custom theme. | all |
| `vanced-microg-support` | Allows YouTube ReVanced to run without root and under a different package name with Vanced MicroG. | 18.19.35 |
| `video-ads` | Removes ads in the video player. | 18.19.35 |
| `video-speed` | Adds custom video speeds and ability to remember the playback speed you chose in the video playback speed flyout. | 18.19.35 |
| `wide-searchbar` | Replaces the search icon with a wide search bar. This will hide the YouTube logo when active. | 18.19.35 |
</details>
### [📦 `com.google.android.apps.youtube.music`](https://play.google.com/store/apps/details?id=com.google.android.apps.youtube.music)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `background-play` | Enables playing music in the background. | all |
| `bypass-certificate-checks` | Bypasses certificate checks which prevent YouTube Music from working on Android Auto. | 5.39.52 |
| `codecs-unlock` | Adds more audio codec options. The new audio codecs usually result in better audio quality. | all |
| `compact-header` | Hides the music category bar at the top of the homepage. | all |
| `exclusive-audio-playback` | Enables the option to play music without video. | all |
| `hide-get-premium` | Removes all "Get Premium" evidences from the avatar menu. | 5.39.52 |
| `minimized-playback-music` | Enables minimized playback on Kids music. | all |
| `music-microg-support` | Allows YouTube Music ReVanced to run without root and under a different package name. | all |
| `music-video-ads` | Removes ads in the music player. | all |
| `tasteBuilder-remover` | Removes the "Tell us which artists you like" card from the home screen. | all |
| `upgrade-button-remover` | Removes the upgrade tab from the pivot bar. | all |
</details>
### [📦 `com.ss.android.ugc.trill`](https://play.google.com/store/apps/details?id=com.ss.android.ugc.trill)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `disable-login-requirement` | Do not force login. | all |
| `downloads` | Removes download restrictions and changes the default path to download to. | all |
| `feed-filter` | Filters tiktok videos: removing ads, removing livestreams. | all |
| `fix-google-login` | Allows logging in with a Google account. | all |
| `hide-ads` | Removes ads from TikTok. | all |
| `playback-speed` | Enables the playback speed option for all videos. | all |
| `settings` | Adds ReVanced settings to TikTok. | all |
| `show-seekbar` | Shows progress bar for all video. | all |
| `sim-spoof` | Spoofs the information which is retrieved from the sim-card. | all |
</details>
### [📦 `com.zhiliaoapp.musically`](https://play.google.com/store/apps/details?id=com.zhiliaoapp.musically)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `disable-login-requirement` | Do not force login. | all |
| `downloads` | Removes download restrictions and changes the default path to download to. | all |
| `feed-filter` | Filters tiktok videos: removing ads, removing livestreams. | all |
| `fix-google-login` | Allows logging in with a Google account. | all |
| `hide-ads` | Removes ads from TikTok. | all |
| `playback-speed` | Enables the playback speed option for all videos. | all |
| `settings` | Adds ReVanced settings to TikTok. | all |
| `show-seekbar` | Shows progress bar for all video. | all |
| `sim-spoof` | Spoofs the information which is retrieved from the sim-card. | all |
</details>
### [📦 `tv.twitch.android.app`](https://play.google.com/store/apps/details?id=tv.twitch.android.app)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `auto-claim-channel-points` | Automatically claim Channel Points. | all |
| `block-audio-ads` | Blocks audio ads in streams and VODs. | 14.6.1 |
| `block-embedded-ads` | Blocks embedded stream ads using services like TTV.lol or PurpleAdBlocker. | 14.6.1 |
| `block-video-ads` | Blocks video ads in streams and VODs. | 14.6.1 |
| `debug-mode` | Enables Twitch's internal debugging mode. | all |
| `settings` | Adds settings menu to Twitch. | all |
| `show-deleted-messages` | Shows deleted chat messages behind a clickable spoiler. | all |
</details>
### [📦 `com.twitter.android`](https://play.google.com/store/apps/details?id=com.twitter.android)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `dynamic-color` | Replaces the default Twitter Blue with the users Material You palette. | all |
| `hide-ads` | Hides ads. | all |
| `hide-recommended-users` | Hides recommended users. | all |
| `hide-views-stats` | Hides the view stats under tweets. | 9.71.0-release.0 |
</details>
### [📦 `com.facebook.orca`](https://play.google.com/store/apps/details?id=com.facebook.orca)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `disable-switching-emoji-to-sticker-in-message-input-field` | Disables switching from emoji to sticker search mode in message input field | all |
| `disable-typing-indicator` | Disables the indicator while typing a message | all |
| `hide-inbox-ads` | Hides ads in inbox. | all |
</details>
### [📦 `com.reddit.frontpage`](https://play.google.com/store/apps/details?id=com.reddit.frontpage)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `hide-ads` | Removes ads from the Reddit. | all |
| `premium-icon-reddit` | Unlocks premium Reddit app icons. | all |
| `sanitize-sharing-links` | Removes (tracking) query parameters from the URLs when sharing links. | all |
</details>
### [📦 `com.laurencedawson.reddit_sync`](https://play.google.com/store/apps/details?id=com.laurencedawson.reddit_sync)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `change-oauth-client-id` | Changes the OAuth client ID. | all |
| `disable-ads` | Disables ads. | all |
</details>
### [📦 `com.spotify.music`](https://play.google.com/store/apps/details?id=com.spotify.music)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `hide-premium-navbar` | Removes the premium tab from the navbar. | all |
| `spotify-theme` | Applies a custom theme. | all |
</details>
### [📦 `com.sony.songpal.mdr`](https://play.google.com/store/apps/details?id=com.sony.songpal.mdr)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `remove-badge-tab` | Removes the badge tab from the activity tab. | all |
| `remove-notification-badge` | Removes the red notification badge from the activity tab. | all |
</details>
### [📦 `at.gv.bmf.bmf2go`](https://play.google.com/store/apps/details?id=at.gv.bmf.bmf2go)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `remove-bootloader-detection` | Removes the check for an unlocked bootloader. | all |
| `remove-root-detection` | Removes the check for root permissions. | all |
</details>
### [📦 `at.gv.oe.app`](https://play.google.com/store/apps/details?id=at.gv.oe.app)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `remove-root-detection` | Removes the check for root permissions and unlocked bootloader. | all |
| `spoof-signature` | Spoofs the signature of the app. | all |
</details>
### [📦 `com.laurencedawson.reddit_sync.pro`](https://play.google.com/store/apps/details?id=com.laurencedawson.reddit_sync.pro)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `change-oauth-client-id` | Changes the OAuth client ID. | all |
</details>
### [📦 `com.myprog.hexedit`](https://play.google.com/store/apps/details?id=com.myprog.hexedit)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `disable-ads` | Disables ads in HexEditor. | all |
</details>
### [📦 `com.spotify.lite`](https://play.google.com/store/apps/details?id=com.spotify.lite)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `enable-on-demand` | Enables listening to songs on-demand, allowing to play any song from playlists, albums or artists without limitations. This does not remove ads. | all |
</details>
### [📦 `com.vanced.android.youtube`](https://play.google.com/store/apps/details?id=com.vanced.android.youtube)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `hide-ads` | Removes general ads. | all |
</details>
### [📦 `com.nis.app`](https://play.google.com/store/apps/details?id=com.nis.app)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `hide-ads` | Removes ads from Inshorts. | all |
</details>
### [📦 `com.instagram.android`](https://play.google.com/store/apps/details?id=com.instagram.android)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `hide-timeline-ads` | Removes ads from the timeline. | 275.0.0.27.98 |
</details>
### [📦 `com.backdrops.wallpapers`](https://play.google.com/store/apps/details?id=com.backdrops.wallpapers)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `pro-unlock` | Unlocks pro-only functions. | 4.52 |
</details>
### [📦 `de.dwd.warnapp`](https://play.google.com/store/apps/details?id=de.dwd.warnapp)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `promo-code-unlock` | Disables the validation of promo code. Any code will work to unlock all features. | all |
</details>
### [📦 `net.binarymode.android.irplus`](https://play.google.com/store/apps/details?id=net.binarymode.android.irplus)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `remove-ads` | Removes all ads from the app. | all |
</details>
### [📦 `eu.faircode.netguard`](https://play.google.com/store/apps/details?id=eu.faircode.netguard)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `remove-broadcasts-restriction` | Enables starting/stopping NetGuard via broadcasts. | all |
</details>
### [📦 `com.scb.phone`](https://play.google.com/store/apps/details?id=com.scb.phone)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `remove-debugging-detection` | Removes the USB and wireless debugging checks. | all |
</details>
### [📦 `com.dci.dev.androidtwelvewidgets`](https://play.google.com/store/apps/details?id=com.dci.dev.androidtwelvewidgets)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `unlock-paid-widgets` | Unlocks paid widgets of the app | all |
</details>
### [📦 `com.microblink.photomath`](https://play.google.com/store/apps/details?id=com.microblink.photomath)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `unlock-plus` | Unlocks plus features. | 8.20.0 |
</details>
### [📦 `io.yuka.android`](https://play.google.com/store/apps/details?id=io.yuka.android)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `unlock-premium` | Unlocks premium features. | all |
</details>
### [📦 `com.teslacoilsw.launcher`](https://play.google.com/store/apps/details?id=com.teslacoilsw.launcher)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `unlock-prime` | Unlocks Nova Prime and all functions of the app. | all |
</details>
### [📦 `com.vsco.cam`](https://play.google.com/store/apps/details?id=com.vsco.cam)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `unlock-pro` | Unlocks pro features. | all |
</details>
### [📦 `com.awedea.nyx`](https://play.google.com/store/apps/details?id=com.awedea.nyx)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `unlock-pro` | Unlocks all pro features. | all |
</details>
### [📦 `com.candylink.openvpn`](https://play.google.com/store/apps/details?id=com.candylink.openvpn)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `unlock-pro` | Unlocks premium features. | all |
</details>
### [📦 `com.ithebk.expensemanager`](https://play.google.com/store/apps/details?id=com.ithebk.expensemanager)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `unlock-pro` | Unlocks pro features. | all |
</details>
### [📦 `ginlemon.iconpackstudio`](https://play.google.com/store/apps/details?id=ginlemon.iconpackstudio)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `unlock-pro` | Unlocks all pro features. | all |
</details>
### [📦 `com.zombodroid.MemeGenerator`](https://play.google.com/store/apps/details?id=com.zombodroid.MemeGenerator)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `unlock-pro` | Unlocks pro features. | 4.6377 |
</details>
### [📦 `co.windyapp.android`](https://play.google.com/store/apps/details?id=co.windyapp.android)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `unlock-pro` | Unlocks all pro features. | all |
</details>
### [📦 `org.totschnig.myexpenses`](https://play.google.com/store/apps/details?id=org.totschnig.myexpenses)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `unlock-pro` | Unlocks all professional features. | 3.4.9 |
</details>
### [📦 `tv.trakt.trakt`](https://play.google.com/store/apps/details?id=tv.trakt.trakt)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `unlock-pro` | Unlocks pro features. | all |
</details>
### [📦 `com.wakdev.apps.nfctools.se`](https://play.google.com/store/apps/details?id=com.wakdev.apps.nfctools.se)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `unlock-pro` | Unlocks all pro features. | all |
</details>
### [📦 `com.ticktick.task`](https://play.google.com/store/apps/details?id=com.ticktick.task)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `unlock-themes` | Unlocks all themes that are inaccessible until a certain level is reached. | all |
</details>
### [📦 `net.dinglisch.android.taskerm`](https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `unlock-trial` | Unlocks the trial version. | all |
</details>
> Looking for the JSON variant of this? [Click here](patches.json).
## 📝 JSON Format
This section explains the JSON format for the [patches.json](patches.json) file.
The file contains an array of objects, each object representing a patch. The object contains the following properties:
| key | description |
|-------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `name` | The name of the patch. |
| `description` | The description of the patch. |
| `version` | The version of the patch. |
| `excluded` | Whether the patch is excluded by default. If `true`, the patch must never be included by default. |
| `options` | An array of options for this patch. |
| `options.key` | The key of the option. |
| `options.title` | The title of the option. |
| `options.description` | The description of the option. |
| `options.required` | Whether the option is required. |
| `options.choices?` | An array of choices of the option. This may be `null` if this option has no choices. The element type of this array may be any type. It can be a `String`, `Int` or something else. |
| `dependencies` | An array of dependencies, which are patch names. |
| `compatiblePackages` | An array of packages compatible with this patch. |
| `compatiblePackages.name` | The name of the package. |
| `compatiblePackages.versions` | An array of versions of the package compatible with this patch. If empty, all versions are seemingly compatible. |
Example:
```json
[
{
"name": "remember-video-quality",
"description": "Adds the ability to remember the video quality you chose in the video quality flyout.",
"version": "0.0.1",
"excluded": false,
"options": [],
"dependencies": [
"integrations",
"video-id-hook"
],
"compatiblePackages": [
{
"name": "com.google.android.youtube",
"versions": [
"17.22.36",
"17.24.35",
"17.26.35",
"17.27.39",
"17.28.34",
"17.29.34",
"17.32.35",
"17.33.42"
]
}
]
},
{
"name": "theme",
"description": "Enables a custom theme.",
"version": "0.0.1",
"excluded": false,
"options": [
{
"key": "theme",
"title": "Theme",
"description": "Select a theme.",
"required": true,
"choices": [
"Amoled"
]
}
],
"dependencies": [
"locale-config-fix"
],
"compatiblePackages": [
{
"name": "com.google.android.youtube",
"versions": []
}
]
},
{
"name": "custom-branding",
"description": "Changes the YouTube launcher icon and name to your choice (defaults to ReVanced).",
"version": "0.0.1",
"excluded": false,
"options": [
{
"key": "appName",
"title": "Application Name",
"description": "The name of the application it will show on your home screen.",
"required": true,
"choices": null
},
{
"key": "appIconPath",
"title": "Application Icon Path",
"description": "A path to the icon of the application.",
"required": false,
"choices": null
}
],
"dependencies": [
"locale-config-fix"
],
"compatiblePackages": [
{
"name": "com.google.android.youtube",
"versions": []
}
]
}
]
```
<p align="center">
<picture>
<source
width="256px"
media="(prefers-color-scheme: dark)"
srcset="assets/revanced-headline/revanced-headline-vertical-dark.svg"
>
<img
src="assets/revanced-headline/revanced-headline-vertical-light.svg"
>
</picture>
<br>
<a href="https://revanced.app/">
<img height="24px" src="assets/revanced-logo/revanced-logo-round.svg" />
</a>&nbsp;&nbsp;&nbsp;
<a href="https://github.com/revanced">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://i.ibb.co/dMMmCrW/Git-Hub-Mark.png" />
<img height="24px" src="https://i.ibb.co/9wV3HGF/Git-Hub-Mark-Light.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="http://revanced.app/discord">
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032563-d4e084b7-244e-4358-af50-26bde6dd4996.png" />
</a>&nbsp;&nbsp;&nbsp;
<a href="https://reddit.com/r/revancedapp">
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032351-9d9d5619-8ef7-470a-9eec-2744ece54553.png" />
</a>&nbsp;&nbsp;&nbsp;
<a href="https://t.me/app_revanced">
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032213-faf25ab8-0bc3-4a94-a730-b524c96df124.png" />
</a>&nbsp;&nbsp;&nbsp;
<a href="https://x.com/revancedapp">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/93124920/270180600-7c1b38bf-889b-4d68-bd5e-b9d86f91421a.png">
<img height="24px" src="https://user-images.githubusercontent.com/93124920/270108715-d80743fa-b330-4809-b1e6-79fbdc60d09c.png" />
<picture/>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://www.youtube.com/@ReVanced">
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032714-c51c7492-0666-44ac-99c2-f003a695ab50.png" />
</a>
<br>
<br>
Continuing the legacy of Vanced
</p>
# 🧩 ReVanced Patches
![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/ReVanced/revanced-patches/release.yml)
![GPLv3 License](https://img.shields.io/badge/License-GPL%20v3-yellow.svg)
This repository contains a collection of ReVanced Patches.
## ❓ About
Patches are small modifications to Android apps that allow you to change the behaviour of or add new features,
block ads, customize the appearance, and much more.
## 💪 Features
Some of the features the patches provide are:
* 🚫 **Block ads**: Say goodbye to ads
***Customize your app**: Personalize the appearance of apps with various layouts and themes
* 🪄 **Add new features**: Extend the functionality of apps with lots of new features
* ⚙️ **Miscellaneous and general purpose**: Rename packages, enable debugging, disable screen capture restrictions,
export activities, etc.
***And much more!**
For a full list of all available patches, visit [revanced.app/patches](https://revanced.app/patches).
## 🚀 How to get started
You can use [ReVanced CLI](https://github.com/ReVanced/revanced-cli) or [ReVanced Manager](https://github.com/ReVanced/revanced-manager) to use ReVanced Patches.
## 📚 Everything else
### 📙 Contributing
Thank you for considering contributing to ReVanced Patches. You can find the contribution guidelines [here](CONTRIBUTING.md).
### 📃 Documentation
The documentation provides the fundamentals of patches and everything necessary to create your own patch from scratch.
You can find it [here](https://github.com/ReVanced/revanced-patches/tree/docs/docs).
### 🛠️ Building
In order to build ReVanced Patches, you can follow the [ReVanced documentation](https://github.com/ReVanced/revanced-documentation).
## 📜 Licence
ReVanced Patches is licensed under the GPLv3 licence. Please see the [licence file](LICENSE) for more information.
[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.
Any modifications to ReVanced Patches must also be made available under the GPL along with build & install instructions.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 800 800" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><g id="Logo"><g id="Ring"><circle id="Ring-Background" serif:id="Ring Background" cx="400" cy="400" r="400" style="fill:#1b1b1b;"/><path id="Ring1" serif:id="Ring" d="M400,0c220.766,0 400,179.234 400,400c-0,220.766 -179.234,400 -400,400c-220.766,-0 -400,-179.234 -400,-400c0,-220.766 179.234,-400 400,-400Zm-0,36c200.897,-0 364,163.103 364,364c0,200.897 -163.103,364 -364,364c-200.897,0 -364,-163.103 -364,-364c-0,-200.897 163.103,-364 364,-364Z" style="fill:url(#_Linear1);"/></g><g id="Shape"><path id="V-Shape" serif:id="V Shape" d="M538.74,269.872c1.481,-3.382 1.157,-7.283 -0.863,-10.373c-2.021,-3.091 -5.464,-4.954 -9.156,-4.954c-5.148,0 -10.435,0 -14.165,0c-3.1,0 -5.907,1.834 -7.153,4.672c-12.468,28.396 -78.273,178.273 -100.25,228.328c-1.246,2.838 -4.053,4.671 -7.154,4.671c-3.1,0 -5.907,-1.833 -7.153,-4.671c-21.977,-50.055 -87.782,-199.932 -100.25,-228.328c-1.246,-2.838 -4.053,-4.672 -7.153,-4.672c-3.73,0 -9.017,0 -14.164,0c-3.693,0 -7.135,1.863 -9.156,4.954c-2.02,3.09 -2.344,6.991 -0.863,10.373c23.557,53.766 101.872,232.519 117.871,269.034c1.743,3.979 5.674,6.549 10.018,6.549c6.293,-0 15.408,-0 21.701,-0c4.344,-0 8.275,-2.57 10.018,-6.549c15.999,-36.515 94.315,-215.268 117.872,-269.034Z" style="fill:#fff;"/><path id="Diamond" d="M408.119,395.312c-1.675,2.901 -4.77,4.688 -8.119,4.688c-3.349,-0 -6.444,-1.787 -8.119,-4.688c-16.997,-29.44 -56.156,-97.264 -73.153,-126.704c-1.675,-2.901 -1.675,-6.474 0,-9.375c1.675,-2.901 4.77,-4.688 8.119,-4.688c33.995,0 112.311,0 146.306,0c3.349,0 6.444,1.787 8.119,4.688c1.675,2.901 1.675,6.474 -0,9.375c-16.997,29.44 -56.156,97.264 -73.153,126.704Z" style="fill:url(#_Linear2);"/></g></g><defs><linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(4.89859e-14,800,-800,4.89859e-14,400.001,3.31681e-10)"><stop offset="0" style="stop-color:#f04e98;stop-opacity:1"/><stop offset="0.5" style="stop-color:#5f65d4;stop-opacity:1"/><stop offset="1" style="stop-color:#4e98f0;stop-opacity:1"/></linearGradient><linearGradient id="_Linear2" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.77155e-14,289.317,-282.535,1.73003e-14,400,254.545)"><stop offset="0" style="stop-color:#f04e98;stop-opacity:1"/><stop offset="0.5" style="stop-color:#5f65d4;stop-opacity:1"/><stop offset="1" style="stop-color:#4e98f0;stop-opacity:1"/></linearGradient></defs></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -1,22 +1,15 @@
plugins {
kotlin("jvm") version "1.8.10"
kotlin("jvm") version "1.8.20"
alias(libs.plugins.ksp)
}
group = "app.revanced"
val githubUsername: String = project.findProperty("gpr.user") as? String ?: System.getenv("GITHUB_ACTOR")
val githubPassword: String = project.findProperty("gpr.key") as? String ?: System.getenv("GITHUB_TOKEN")
repositories {
mavenCentral()
mavenLocal()
maven {
url = uri("https://maven.pkg.github.com/revanced/revanced-patcher")
credentials {
username = githubUsername
password = githubPassword
}
}
google()
maven { url = uri("https://jitpack.io") }
// Required for FlexVer-Java
maven {
url = uri("https://repo.sleeping.town")
@@ -27,16 +20,17 @@ repositories {
}
dependencies {
implementation("app.revanced:revanced-patcher:11.0.0")
implementation("app.revanced:multidexlib2:2.5.3-a3836654")
// Required for meta
implementation("com.google.code.gson:gson:2.10.1")
// Required for FlexVer-Java
implementation("com.unascribed:flexver-java:1.0.2")
// A dependency to the Android library unfortunately fails the build,
// which is why this is required for the patch change-oauth-client-id
implementation(libs.revanced.patcher)
implementation(libs.smali)
implementation(libs.revanced.patch.annotation.processor)
// TODO: Required because build fails without it. Find a way to remove this dependency.
implementation(libs.guava)
// Used in JsonGenerator.
implementation(libs.gson)
// A dependency to the Android library unfortunately fails the build, which is why this is required.
compileOnly(project("dummy"))
ksp(libs.revanced.patch.annotation.processor)
}
kotlin {
@@ -52,7 +46,7 @@ tasks {
val androidHome = System.getenv("ANDROID_HOME") ?: throw GradleException("ANDROID_HOME not found")
val d8 = "${androidHome}/build-tools/33.0.1/d8"
val input = configurations.archives.get().allArtifacts.files.files.first().absolutePath
val work = File("${buildDir}/libs")
val work = layout.buildDirectory.dir("libs").get().asFile
exec {
workingDir = work
@@ -65,6 +59,7 @@ tasks {
}
}
}
register<JavaExec>("generateMeta") {
description = "Generate metadata for this bundle"
dependsOn(build)
@@ -72,6 +67,7 @@ tasks {
classpath = sourceSets["main"].runtimeClasspath
mainClass.set("app.revanced.meta.PatchesFileGenerator")
}
// Dummy task to fix the Gradle semantic-release plugin.
// Remove this if you forked it to support building only.
// Tracking issue: https://github.com/KengoTODA/gradle-semantic-release-plugin/issues/435

View File

@@ -1,2 +1,4 @@
org.gradle.parallel = true
org.gradle.caching = true
kotlin.code.style = official
version = 2.177.1-dev.2
version = 2.195.0-dev.1

17
gradle/libs.versions.toml Normal file
View File

@@ -0,0 +1,17 @@
[versions]
revanced-patcher = "17.0.0"
revanced-patch-annotation-processor = "17.0.0"
ksp = "1.9.0-1.0.11"
smali = "3.0.3"
guava = "32.1.2-jre"
gson = "2.10.1"
[libraries]
revanced-patcher = { module = "app.revanced.revanced-patcher:revanced-patcher", version.ref = "revanced-patcher" }
revanced-patch-annotation-processor = { module = "app.revanced.revanced-patcher:revanced-patch-annotation-processor", version.ref = "revanced-patch-annotation-processor" }
smali = { module = "com.android.tools.smali:smali", version.ref = "smali" }
guava = { module = "com.google.guava:guava", version.ref = "guava" }
gson = { module = "com.google.code.gson:gson", version.ref = "gson" }
[plugins]
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }

Binary file not shown.

View File

@@ -1,7 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionSha256Sum=e111cb9948407e26351227dabce49822fb88c37ee72f1d1582a69c68af2e702f
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

5
gradlew vendored
View File

@@ -130,10 +130,13 @@ location of your Java installation."
fi
else
JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.

File diff suppressed because one or more lines are too long

View File

@@ -1,25 +1,24 @@
package app.revanced.extensions
import app.revanced.patcher.extensions.MethodFingerprintExtensions.name
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import app.revanced.patcher.patch.PatchResultError
import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.util.proxy.mutableTypes.MutableClass
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
import app.revanced.patches.shared.mapping.misc.patch.ResourceMappingPatch
import org.jf.dexlib2.Opcode
import org.jf.dexlib2.iface.Method
import org.jf.dexlib2.iface.instruction.WideLiteralInstruction
import org.jf.dexlib2.util.MethodUtil
import app.revanced.patches.shared.mapping.misc.ResourceMappingPatch
import com.android.tools.smali.dexlib2.iface.Method
import com.android.tools.smali.dexlib2.iface.instruction.WideLiteralInstruction
import com.android.tools.smali.dexlib2.util.MethodUtil
import org.w3c.dom.Node
// TODO: populate this to all patches
/**
* Convert a [MethodFingerprint] to a [PatchResultError].
* The [PatchException] of failing to resolve a [MethodFingerprint].
*
* @return A [PatchResultError] for the [MethodFingerprint].
* @return The [PatchException].
*/
internal fun MethodFingerprint.toErrorResult() = PatchResultError("Failed to resolve $name")
val MethodFingerprint.exception
get() = PatchException("Failed to resolve ${this.javaClass.simpleName}")
/**
* Find the [MutableMethod] from a given [Method] in a [MutableClass].
@@ -27,27 +26,27 @@ internal fun MethodFingerprint.toErrorResult() = PatchResultError("Failed to res
* @param method The [Method] to find.
* @return The [MutableMethod].
*/
internal fun MutableClass.findMutableMethodOf(method: Method) = this.methods.first {
fun MutableClass.findMutableMethodOf(method: Method) = this.methods.first {
MethodUtil.methodSignaturesMatch(it, method)
}
/**
* apply a transform to all methods of the class
* apply a transform to all methods of the class.
*
* @param transform the transformation function. original method goes in, transformed method goes out
* @param transform the transformation function. original method goes in, transformed method goes out.
*/
internal fun MutableClass.transformMethods(transform: MutableMethod.() -> MutableMethod) {
fun MutableClass.transformMethods(transform: MutableMethod.() -> MutableMethod) {
val transformedMethods = methods.map { it.transform() }
methods.clear()
methods.addAll(transformedMethods)
}
internal fun Node.doRecursively(action: (Node) -> Unit) {
fun Node.doRecursively(action: (Node) -> Unit) {
action(this)
for (i in 0 until this.childNodes.length) this.childNodes.item(i).doRecursively(action)
}
internal fun MutableMethod.injectHideViewCall(
fun MutableMethod.injectHideViewCall(
insertIndex: Int,
viewRegister: Int,
classDescriptor: String,
@@ -57,17 +56,50 @@ internal fun MutableMethod.injectHideViewCall(
"invoke-static { v$viewRegister }, $classDescriptor->$targetMethod(Landroid/view/View;)V"
)
internal fun MutableMethod.findIndexForIdResource(resourceName: String): Int {
/**
* Find the index of the first instruction with the id of the given resource name.
*
* @param resourceName the name of the resource to find the id for.
* @return the index of the first instruction with the id of the given resource name, or -1 if not found.
*/
fun Method.findIndexForIdResource(resourceName: String): Int {
fun getIdResourceId(resourceName: String) = ResourceMappingPatch.resourceMappings.single {
it.type == "id" && it.name == resourceName
}.id
val resourceId = getIdResourceId(resourceName)
return implementation!!.instructions.indexOfFirst {
if (it.opcode != Opcode.CONST) return@indexOfFirst false
return indexOfFirstWideLiteralInstructionValue(getIdResourceId(resourceName))
}
val literal = (it as WideLiteralInstruction).wideLiteral
/**
* Find the index of the first wide literal instruction with the given value.
*
* @return the first literal instruction with the value, or -1 if not found.
*/
fun Method.indexOfFirstWideLiteralInstructionValue(literal: Long) = implementation?.let {
it.instructions.indexOfFirst { instruction ->
(instruction as? WideLiteralInstruction)?.wideLiteral == literal
}
} ?: -1
return@indexOfFirst resourceId == literal
/**
* Check if the method contains a literal with the given value.
*
* @return if the method contains a literal with the given value.
*/
fun Method.containsWideLiteralInstructionValue(literal: Long) =
indexOfFirstWideLiteralInstructionValue(literal) >= 0
/**
* Traverse the class hierarchy starting from the given root class.
*
* @param targetClass the class to start traversing the class hierarchy from.
* @param callback function that is called for every class in the hierarchy.
*/
fun BytecodeContext.traverseClassHierarchy(targetClass: MutableClass, callback: MutableClass.() -> Unit) {
callback(targetClass)
this.findClass(targetClass.superclass ?: return)?.mutableClass?.let {
traverseClassHierarchy(it, callback)
}
}

View File

@@ -1,70 +1,41 @@
package app.revanced.meta
import app.revanced.patcher.extensions.PatchExtensions.compatiblePackages
import app.revanced.patcher.extensions.PatchExtensions.dependencies
import app.revanced.patcher.extensions.PatchExtensions.description
import app.revanced.patcher.extensions.PatchExtensions.include
import app.revanced.patcher.extensions.PatchExtensions.options
import app.revanced.patcher.extensions.PatchExtensions.patchName
import app.revanced.patcher.extensions.PatchExtensions.version
import app.revanced.patcher.patch.PatchOption
import app.revanced.patcher.PatchSet
import app.revanced.patcher.patch.Patch
import com.google.gson.GsonBuilder
import java.io.File
internal class JsonGenerator : PatchesFileGenerator {
override fun generate(bundle: PatchBundlePatches) {
val patches = bundle.map {
JsonPatch(
it.patchName,
it.description ?: "This patch has no description.",
it.version ?: "0.0.0",
!it.include,
it.options?.map { option ->
JsonPatch.Option(
option.key,
option.title,
option.description,
option.required,
option.let { listOption ->
if (listOption is PatchOption.ListOption<*>) {
listOption.options.toMutableList().toTypedArray()
} else null
}
)
}?.toTypedArray() ?: emptyArray(),
it.dependencies?.map { dep ->
dep.java.patchName
}?.toTypedArray() ?: emptyArray(),
it.compatiblePackages?.map { pkg ->
JsonPatch.CompatiblePackage(pkg.name, pkg.versions)
}?.toTypedArray() ?: emptyArray()
)
}
val json = File("patches.json")
json.writeText(GsonBuilder().serializeNulls().create().toJson(patches))
override fun generate(patches: PatchSet) = patches.map {
JsonPatch(
it.name!!,
it.description,
it.compatiblePackages,
it.use,
it.requiresIntegrations,
it.options.values.map { option ->
JsonPatch.Option(option.key, option.value, option.title, option.description, option.required)
}
)
}.let {
File("patches.json").writeText(GsonBuilder().serializeNulls().create().toJson(it))
}
@Suppress("unused")
private class JsonPatch(
val name: String,
val description: String,
val version: String,
val excluded: Boolean,
val options: Array<Option>,
val dependencies: Array<String>,
val compatiblePackages: Array<CompatiblePackage>,
val name: String? = null,
val description: String? = null,
val compatiblePackages: Set<Patch.CompatiblePackage>? = null,
val use: Boolean = true,
val requiresIntegrations: Boolean = false,
val options: List<Option>
) {
class CompatiblePackage(
val name: String,
val versions: Array<String>,
)
class Option(
val key: String,
val title: String,
val description: String,
val default: Any?,
val title: String?,
val description: String?,
val required: Boolean,
val choices: Array<*>?,
)
}
}

View File

@@ -1,25 +1,20 @@
package app.revanced.meta
import app.revanced.patcher.data.Context
import app.revanced.patcher.patch.Patch
import app.revanced.patcher.util.patch.PatchBundle
import app.revanced.patcher.PatchBundleLoader
import app.revanced.patcher.PatchSet
import java.io.File
internal typealias PatchBundlePatches = List<Class<out Patch<Context>>>
internal interface PatchesFileGenerator {
fun generate(bundle: PatchBundlePatches)
fun generate(patches: PatchSet)
private companion object {
@JvmStatic
fun main(args: Array<String>) = PatchBundle.Jar(
File("build/libs/").listFiles()!!.first {
it.name.startsWith("revanced-patches-") && it.name.endsWith(".jar")
}.absolutePath
).loadPatches().also {
if (it.isEmpty()) throw IllegalStateException("No patches found")
fun main(args: Array<String>) = PatchBundleLoader.Jar(
File("build/libs/").listFiles { it -> it.name.endsWith(".jar") }!!.first()
).also { loader ->
if (loader.isEmpty()) throw IllegalStateException("No patches found")
}.let { bundle ->
arrayOf(JsonGenerator(), ReadmeGenerator()).forEach { it.generate(bundle) }
arrayOf(JsonGenerator()).forEach { generator -> generator.generate(bundle) }
}
}
}

View File

@@ -1,69 +0,0 @@
package app.revanced.meta
import app.revanced.patcher.data.Context
import app.revanced.patcher.extensions.PatchExtensions.compatiblePackages
import app.revanced.patcher.extensions.PatchExtensions.description
import app.revanced.patcher.extensions.PatchExtensions.patchName
import app.revanced.patcher.patch.Patch
import com.unascribed.flexver.FlexVerComparator
import java.io.File
internal class ReadmeGenerator : PatchesFileGenerator {
private companion object {
private const val TABLE_HEADER =
"| \uD83D\uDC8A Patch | \uD83D\uDCDC Description | \uD83C\uDFF9 Target Version |\n" +
"|:--------:|:--------------:|:-----------------:|"
}
override fun generate(bundle: PatchBundlePatches) {
val output = StringBuilder()
mutableMapOf<String, MutableList<Class<out Patch<Context>>>>()
.apply {
for (patch in bundle) {
patch.compatiblePackages?.forEach { pkg ->
if (!contains(pkg.name)) put(pkg.name, mutableListOf())
this[pkg.name]!!.add(patch)
}
}
}
.entries
.sortedByDescending { it.value.size }
.forEach { (`package`, patches) ->
val mostCommonVersion = buildMap {
patches.forEach { patch ->
patch.compatiblePackages?.single { compatiblePackage -> compatiblePackage.name == `package` }?.versions?.let {
it.forEach { version -> merge(version, 1, Integer::sum) }
}
}
}.let { commonMap ->
commonMap.maxByOrNull { it.value }?.value?.let {
commonMap.entries.filter { mostCommon -> mostCommon.value == it }
.maxOfWith(FlexVerComparator::compare, Map.Entry<String, Int>::key)
} ?: "all"
}
output.apply {
appendLine("### [\uD83D\uDCE6 `${`package`}`](https://play.google.com/store/apps/details?id=${`package`})")
appendLine("<details>\n")
appendLine(TABLE_HEADER)
patches.forEach { patch ->
val recommendedPatchVersion = if (
patch.compatiblePackages?.single { it.name == `package` }?.versions?.isNotEmpty() == true
) mostCommonVersion else "all"
appendLine(
"| `${patch.patchName}` " +
"| ${patch.description} " +
"| $recommendedPatchVersion |"
)
}
appendLine("</details>\n")
}
}
StringBuilder(File("README-template.md").readText())
.replace(Regex("\\{\\{\\s?table\\s?}}"), output.toString())
.let(File("README.md")::writeText)
}
}

View File

@@ -1,20 +1,18 @@
package app.revanced.patches.all.activity.exportAll.patch
package app.revanced.patches.all.activity.exportall
import app.revanced.patcher.annotation.Description
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.data.ResourceContext
import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patcher.patch.ResourcePatch
import app.revanced.patcher.patch.annotations.Patch
import app.revanced.patcher.patch.annotation.Patch
@Patch(false)
@Name("export-all-activities")
@Description("Makes all app activities exportable.")
@Version("0.0.1")
class ExportAllActivitiesPatch : ResourcePatch {
override fun execute(context: ResourceContext): PatchResult {
@Patch(
name = "Export all activities",
description = "Makes all app activities exportable.",
use = false
)
@Suppress("unused")
object ExportAllActivitiesPatch : ResourcePatch() {
private const val EXPORTED_FLAG = "android:exported"
override fun execute(context: ResourceContext) {
context.xmlEditor["AndroidManifest.xml"].use { editor ->
val document = editor.file
val activities = document.getElementsByTagName("activity")
@@ -35,11 +33,5 @@ class ExportAllActivitiesPatch : ResourcePatch {
}
}
}
return PatchResultSuccess()
}
private companion object {
const val EXPORTED_FLAG = "android:exported"
}
}

View File

@@ -1,29 +1,44 @@
package app.revanced.patches.all.connectivity.wifi.spoof.patch
package app.revanced.patches.all.connectivity.wifi.spoof
import app.revanced.patcher.annotation.Description
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.patch.annotations.Patch
import app.revanced.patcher.patch.annotations.RequiresIntegrations
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
import app.revanced.util.patch.*
import org.jf.dexlib2.iface.ClassDef
import org.jf.dexlib2.iface.Method
import org.jf.dexlib2.iface.instruction.Instruction
import java.util.*
import app.revanced.util.patch.AbstractTransformInstructionsPatch
import app.revanced.util.patch.IMethodCall
import app.revanced.util.patch.Instruction35cInfo
import app.revanced.util.patch.filterMapInstruction35c
import com.android.tools.smali.dexlib2.iface.ClassDef
import com.android.tools.smali.dexlib2.iface.Method
import com.android.tools.smali.dexlib2.iface.instruction.Instruction
@Patch(false)
@Name("spoof-wifi-connection")
@Description("Spoofs an existing Wi-Fi connection.")
@Version("0.0.1")
@RequiresIntegrations
internal class SpoofWifiPatch : AbstractTransformInstructionsPatch<Instruction35cInfo>() {
@Patch(
name = "Spoof Wi-Fi connection",
description = "Spoofs an existing Wi-Fi connection.",
use = false,
requiresIntegrations = true
)
@Suppress("unused")
object SpoofWifiPatch : AbstractTransformInstructionsPatch<Instruction35cInfo>() {
private const val INTEGRATIONS_CLASS_DESCRIPTOR_PREFIX = "Lapp/revanced/all/connectivity/wifi/spoof/SpoofWifiPatch"
private const val INTEGRATIONS_CLASS_DESCRIPTOR = "$INTEGRATIONS_CLASS_DESCRIPTOR_PREFIX;"
private companion object {
const val INTEGRATIONS_CLASS_DESCRIPTOR_PREFIX = "Lapp/revanced/all/connectivity/wifi/spoof/SpoofWifiPatch"
const val INTEGRATIONS_CLASS_DESCRIPTOR = "${INTEGRATIONS_CLASS_DESCRIPTOR_PREFIX};"
override fun filterMap(
classDef: ClassDef,
method: Method,
instruction: Instruction,
instructionIndex: Int
) = filterMapInstruction35c<MethodCall>(
INTEGRATIONS_CLASS_DESCRIPTOR_PREFIX,
classDef,
instruction,
instructionIndex
)
override fun transform(mutableMethod: MutableMethod, entry: Instruction35cInfo) {
val (methodType, instruction, instructionIndex) = entry
methodType.replaceInvokeVirtualWithIntegrations(INTEGRATIONS_CLASS_DESCRIPTOR, mutableMethod, instruction, instructionIndex)
}
// Information about method calls we want to replace
enum class MethodCall(
override val definedClassName: String,
@@ -188,21 +203,4 @@ internal class SpoofWifiPatch : AbstractTransformInstructionsPatch<Instruction35
"V",
);
}
override fun filterMap(
classDef: ClassDef,
method: Method,
instruction: Instruction,
instructionIndex: Int
) = filterMapInstruction35c<MethodCall>(
INTEGRATIONS_CLASS_DESCRIPTOR_PREFIX,
classDef,
instruction,
instructionIndex
)
override fun transform(mutableMethod: MutableMethod, entry: Instruction35cInfo) {
val (methodType, instruction, instructionIndex) = entry
methodType.replaceInvokeVirtualWithIntegrations(INTEGRATIONS_CLASS_DESCRIPTOR, mutableMethod, instruction, instructionIndex)
}
}

View File

@@ -0,0 +1,29 @@
package app.revanced.patches.all.interaction.gestures
import app.revanced.patcher.data.ResourceContext
import app.revanced.patcher.patch.ResourcePatch
import app.revanced.patcher.patch.annotation.Patch
@Patch(
name = "Predictive back gesture",
description = "Enables the predictive back gesture introduced on Android 13.",
use = false
)
@Suppress("unused")
object PredictiveBackGesturePatch : ResourcePatch() {
private const val FLAG = "android:enableOnBackInvokedCallback"
override fun execute(context: ResourceContext) {
context.xmlEditor["AndroidManifest.xml"].use { editor ->
val document = editor.file
with(document.getElementsByTagName("application").item(0)) {
if (attributes.getNamedItem(FLAG) != null) return@with
document.createAttribute(FLAG)
.apply { value = "true" }
.let(attributes::setNamedItem)
}
}
}
}

View File

@@ -1,37 +0,0 @@
package app.revanced.patches.all.interaction.gestures.patch
import app.revanced.patcher.annotation.Description
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.data.ResourceContext
import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patcher.patch.ResourcePatch
import app.revanced.patcher.patch.annotations.Patch
@Patch(false)
@Name("predictive-back-gesture")
@Description("Enables the predictive back gesture introduced on Android 13.")
@Version("0.0.1")
class PredictiveBackGesturePatch : ResourcePatch {
override fun execute(context: ResourceContext): PatchResult {
context.xmlEditor["AndroidManifest.xml"].use { editor ->
val document = editor.file
with(document.getElementsByTagName("application").item(0)) {
if (attributes.getNamedItem(FLAG) != null) return@with
document.createAttribute(FLAG)
.apply { value = "true" }
.let(attributes::setNamedItem)
}
}
return PatchResultSuccess()
}
private companion object {
const val FLAG = "android:enableOnBackInvokedCallback"
}
}

View File

@@ -0,0 +1,26 @@
package app.revanced.patches.all.misc.debugging
import app.revanced.patcher.data.ResourceContext
import app.revanced.patcher.patch.ResourcePatch
import app.revanced.patcher.patch.annotation.Patch
import org.w3c.dom.Element
@Patch(
name = "Enable Android debugging",
description = "Enables Android debugging capabilities. This can slow down the app.",
use = false
)
@Suppress("unused")
object EnableAndroidDebuggingPatch : ResourcePatch() {
override fun execute(context: ResourceContext) {
context.xmlEditor["AndroidManifest.xml"].use { dom ->
val applicationNode = dom
.file
.getElementsByTagName("application")
.item(0) as Element
// set application as debuggable
applicationNode.setAttribute("android:debuggable", "true")
}
}
}

View File

@@ -1,42 +0,0 @@
package app.revanced.patches.all.misc.debugging.patch
import app.revanced.patcher.annotation.Description
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.data.ResourceContext
import app.revanced.patcher.patch.*
import app.revanced.patcher.patch.annotations.Patch
import org.w3c.dom.Element
@Patch(false)
@Name("enable-android-debugging")
@Description("Enables Android debugging capabilities.")
@Version("0.0.1")
class EnableAndroidDebuggingPatch : ResourcePatch {
override fun execute(context: ResourceContext): PatchResult {
if (debuggable == true) {
context.xmlEditor["AndroidManifest.xml"].use { dom ->
val applicationNode = dom
.file
.getElementsByTagName("application")
.item(0) as Element
// set application as debuggable
applicationNode.setAttribute("android:debuggable", "true")
}
}
return PatchResultSuccess()
}
companion object : OptionsContainer() {
var debuggable: Boolean? by option(
PatchOption.BooleanOption(
key = "debuggable",
default = false,
title = "App debugging",
description = "Whether to make the app debuggable on Android.",
)
)
}
}

View File

@@ -0,0 +1,75 @@
package app.revanced.patches.all.misc.network
import app.revanced.patcher.data.ResourceContext
import app.revanced.patcher.patch.ResourcePatch
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.all.misc.debugging.EnableAndroidDebuggingPatch
import org.w3c.dom.Element
import java.io.File
@Patch(
name = "Override certificate pinning",
description = "Overrides certificate pinning, allowing to inspect traffic via a proxy.",
dependencies = [EnableAndroidDebuggingPatch::class],
use = false
)
@Suppress("unused")
object OverrideCertificatePinningPatch : ResourcePatch() {
override fun execute(context: ResourceContext) {
val resXmlDirectory = context["res/xml"]
// Add android:networkSecurityConfig="@xml/network_security_config" and the "networkSecurityConfig" attribute if it does not exist.
context.xmlEditor["AndroidManifest.xml"].use { editor ->
val document = editor.file
val applicationNode = document.getElementsByTagName("application").item(0) as Element
if (!applicationNode.hasAttribute("networkSecurityConfig")) {
document.createAttribute("android:networkSecurityConfig")
.apply { value = "@xml/network_security_config" }.let(applicationNode.attributes::setNamedItem)
}
}
// In case the file does not exist create the "network_security_config.xml" file.
File(resXmlDirectory, "network_security_config.xml").apply {
if (!exists()) {
createNewFile()
writeText(
"""
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
<certificates
src="user"
overridePins="true" />
</trust-anchors>
</base-config>
<debug-overrides>
<trust-anchors>
<certificates src="system" />
<certificates
src="user"
overridePins="true" />
</trust-anchors>
</debug-overrides>
</network-security-config>
"""
)
} else {
// If the file already exists.
readText().let { text ->
if (!text.contains("<certificates src=\"user\" />")) {
writeText(
text.replace(
"<trust-anchors>",
"<trust-anchors>\n<certificates src=\"user\" overridePins=\"true\" />\n<certificates src=\"system\" />"
)
)
}
}
}
}
}
}

View File

@@ -0,0 +1,49 @@
package app.revanced.patches.all.misc.packagename
import app.revanced.patcher.data.ResourceContext
import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.patch.ResourcePatch
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.patch.options.types.StringPatchOption.Companion.stringPatchOption
import org.w3c.dom.Element
@Patch(
name = "Change package name",
description = "Appends \".revanced\" to the package name by default.",
use = false
)
@Suppress("unused")
object ChangePackageNamePatch : ResourcePatch() {
private var packageName by stringPatchOption(
key = "packageName",
default = null,
title = "Package name",
description = "The name of the package to rename the app to.",
)
override fun execute(context: ResourceContext) {
val packageNameToUse = packageName ?: getDefaultPackageName(context)
val packageNameRegex = Regex("^[a-z]\\w*(\\.[a-z]\\w*)+\$")
if (!packageNameToUse.matches(packageNameRegex))
throw PatchException("Invalid package name")
val originalPackageName = getOriginalPackageName(context)
context["AndroidManifest.xml"].apply {
readText().replace(originalPackageName, packageNameToUse).let(::writeText)
}
}
private fun getDefaultPackageName(context: ResourceContext): String {
val originalPackageName = getOriginalPackageName(context)
return "$originalPackageName.revanced"
}
private fun getOriginalPackageName(context: ResourceContext): String {
context.xmlEditor["AndroidManifest.xml"].use { editor ->
val manifest = editor.file.getElementsByTagName("manifest").item(0) as Element
return manifest.getAttribute("package")
}
}
}

View File

@@ -1,50 +0,0 @@
package app.revanced.patches.all.misc.packagename.patch
import app.revanced.patcher.annotation.Description
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.data.ResourceContext
import app.revanced.patcher.patch.*
import app.revanced.patcher.patch.annotations.Patch
import org.w3c.dom.Element
@Patch(false)
@Name("change-package-name")
@Description("Changes the package name.")
@Version("0.0.1")
class ChangePackageNamePatch : ResourcePatch {
override fun execute(context: ResourceContext): PatchResult {
packageName?.let { packageName ->
val packageNameRegex = Regex("^[a-z]\\w*(\\.[a-z]\\w*)+\$")
if (!packageName.matches(packageNameRegex))
return PatchResultError("Invalid package name")
var originalPackageName: String
context.xmlEditor["AndroidManifest.xml"].use { editor ->
val manifest = editor.file.getElementsByTagName("manifest").item(0) as Element
originalPackageName = manifest.getAttribute("package")
}
if (!originalPackageName.matches(packageNameRegex))
return PatchResultError("Failed to get the original package name")
context["AndroidManifest.xml"].apply {
readText().replace(originalPackageName, packageName).let(::writeText)
}
} ?: return PatchResultError("No package name provided")
return PatchResultSuccess()
}
companion object : OptionsContainer() {
var packageName: String? by option(
PatchOption.StringOption(
key = "packageName",
default = null,
title = "Package name",
description = "The name of the package to rename of the app.",
)
)
}
}

View File

@@ -1,25 +1,27 @@
package app.revanced.patches.all.screencapture.removerestriction.bytecode.patch
package app.revanced.patches.all.screencapture.removerestriction
import app.revanced.patcher.annotation.Description
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.patch.annotations.DependsOn
import app.revanced.patcher.patch.annotations.Patch
import app.revanced.patcher.patch.annotations.RequiresIntegrations
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
import app.revanced.patches.all.screencapture.removerestriction.resource.patch.RemoveCaptureRestrictionResourcePatch
import app.revanced.util.patch.*
import org.jf.dexlib2.iface.ClassDef
import org.jf.dexlib2.iface.Method
import org.jf.dexlib2.iface.instruction.Instruction
import app.revanced.util.patch.AbstractTransformInstructionsPatch
import app.revanced.util.patch.IMethodCall
import app.revanced.util.patch.Instruction35cInfo
import app.revanced.util.patch.filterMapInstruction35c
import com.android.tools.smali.dexlib2.iface.ClassDef
import com.android.tools.smali.dexlib2.iface.Method
import com.android.tools.smali.dexlib2.iface.instruction.Instruction
@Patch(false)
@Name("remove-screen-capture-restriction")
@Description("Removes the restriction of capturing audio from apps that normally wouldn't allow it.")
@Version("0.0.1")
@DependsOn([RemoveCaptureRestrictionResourcePatch::class])
@RequiresIntegrations
internal class RemoveCaptureRestrictionPatch : AbstractTransformInstructionsPatch<Instruction35cInfo>() {
@Patch(
name = "Remove screen capture restriction",
description = "Removes the restriction of capturing audio from apps that normally wouldn't allow it.",
dependencies = [RemoveCaptureRestrictionResourcePatch::class],
use = false,
requiresIntegrations = true
)
@Suppress("unused")
object RemoveCaptureRestrictionPatch : AbstractTransformInstructionsPatch<Instruction35cInfo>() {
private const val INTEGRATIONS_CLASS_DESCRIPTOR_PREFIX =
"Lapp/revanced/all/screencapture/removerestriction/RemoveScreencaptureRestrictionPatch"
private const val INTEGRATIONS_CLASS_DESCRIPTOR = "$INTEGRATIONS_CLASS_DESCRIPTOR_PREFIX;"
// Information about method calls we want to replace
enum class MethodCall(
override val definedClassName: String,
@@ -57,10 +59,4 @@ internal class RemoveCaptureRestrictionPatch : AbstractTransformInstructionsPatc
val (methodType, instruction, instructionIndex) = entry
methodType.replaceInvokeVirtualWithIntegrations(INTEGRATIONS_CLASS_DESCRIPTOR, mutableMethod, instruction, instructionIndex)
}
private companion object {
const val INTEGRATIONS_CLASS_DESCRIPTOR_PREFIX =
"Lapp/revanced/all/screencapture/removerestriction/RemoveScreencaptureRestrictionPatch"
const val INTEGRATIONS_CLASS_DESCRIPTOR = "$INTEGRATIONS_CLASS_DESCRIPTOR_PREFIX;"
}
}

View File

@@ -1,19 +1,13 @@
package app.revanced.patches.all.screencapture.removerestriction.resource.patch
package app.revanced.patches.all.screencapture.removerestriction
import app.revanced.patcher.annotation.Description
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.data.ResourceContext
import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patcher.patch.ResourcePatch
import app.revanced.patcher.patch.annotation.Patch
import org.w3c.dom.Element
@Name("remove-screen-capture-restriction-resource-patch")
@Description("Sets allowAudioPlaybackCapture in manifest to true.")
@Version("0.0.1")
internal class RemoveCaptureRestrictionResourcePatch : ResourcePatch {
override fun execute(context: ResourceContext): PatchResult {
@Patch(description = "Sets allowAudioPlaybackCapture in manifest to true.")
internal object RemoveCaptureRestrictionResourcePatch : ResourcePatch() {
override fun execute(context: ResourceContext) {
// create an xml editor instance
context.xmlEditor["AndroidManifest.xml"].use { dom ->
// get the application node
@@ -25,7 +19,5 @@ internal class RemoveCaptureRestrictionResourcePatch : ResourcePatch {
// set allowAudioPlaybackCapture attribute to true
applicationNode.setAttribute("android:allowAudioPlaybackCapture", "true")
}
return PatchResultSuccess()
}
}

View File

@@ -1,44 +1,26 @@
package app.revanced.patches.all.screenshot.removerestriction.patch
package app.revanced.patches.all.screenshot.removerestriction
import app.revanced.patcher.annotation.Description
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.patch.annotations.Patch
import app.revanced.patcher.patch.annotations.RequiresIntegrations
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
import app.revanced.util.patch.*
import org.jf.dexlib2.iface.ClassDef
import org.jf.dexlib2.iface.Method
import org.jf.dexlib2.iface.instruction.Instruction
import java.util.*
import app.revanced.util.patch.AbstractTransformInstructionsPatch
import app.revanced.util.patch.IMethodCall
import app.revanced.util.patch.Instruction35cInfo
import app.revanced.util.patch.filterMapInstruction35c
import com.android.tools.smali.dexlib2.iface.ClassDef
import com.android.tools.smali.dexlib2.iface.Method
import com.android.tools.smali.dexlib2.iface.instruction.Instruction
@Patch(false)
@Name("remove-screenshot-restriction")
@Description("Removes the restriction of taking screenshots in apps that normally wouldn't allow it.")
@Version("0.0.1")
@RequiresIntegrations
internal class RemoveScreenshotRestrictionPatch : AbstractTransformInstructionsPatch<Instruction35cInfo>() {
private companion object {
const val INTEGRATIONS_CLASS_DESCRIPTOR_PREFIX =
@Patch(
name = "Remove screenshot restriction",
description = "Removes the restriction of taking screenshots in apps that normally wouldn't allow it.",
use = false,
requiresIntegrations = true,
)
@Suppress("unused")
object RemoveScreenshotRestrictionPatch : AbstractTransformInstructionsPatch<Instruction35cInfo>() {
private const val INTEGRATIONS_CLASS_DESCRIPTOR_PREFIX =
"Lapp/revanced/all/screenshot/removerestriction/RemoveScreenshotRestrictionPatch"
const val INTEGRATIONS_CLASS_DESCRIPTOR = "$INTEGRATIONS_CLASS_DESCRIPTOR_PREFIX;"
}
// Information about method calls we want to replace
enum class MethodCall(
override val definedClassName: String,
override val methodName: String,
override val methodParams: Array<String>,
override val returnType: String
): IMethodCall {
SetFlags(
"Landroid/view/Window;",
"setFlags",
arrayOf("I", "I"),
"V",
);
}
private const val INTEGRATIONS_CLASS_DESCRIPTOR = "$INTEGRATIONS_CLASS_DESCRIPTOR_PREFIX;"
override fun filterMap(
classDef: ClassDef,
@@ -56,4 +38,19 @@ internal class RemoveScreenshotRestrictionPatch : AbstractTransformInstructionsP
val (methodType, instruction, instructionIndex) = entry
methodType.replaceInvokeVirtualWithIntegrations(INTEGRATIONS_CLASS_DESCRIPTOR, mutableMethod, instruction, instructionIndex)
}
// Information about method calls we want to replace
enum class MethodCall(
override val definedClassName: String,
override val methodName: String,
override val methodParams: Array<String>,
override val returnType: String
): IMethodCall {
SetFlags(
"Landroid/view/Window;",
"setFlags",
arrayOf("I", "I"),
"V",
);
}
}

View File

@@ -0,0 +1,37 @@
package app.revanced.patches.backdrops.misc.pro
import app.revanced.extensions.exception
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.backdrops.misc.pro.fingerprints.ProUnlockFingerprint
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Patch(
name = "Pro unlock",
compatiblePackages = [CompatiblePackage("com.backdrops.wallpapers", ["4.52"])]
)
@Suppress("unused")
object ProUnlockPatch : BytecodePatch(
setOf(ProUnlockFingerprint)
) {
override fun execute(context: BytecodeContext) {
ProUnlockFingerprint.result?.let { result ->
val registerIndex = result.scanResult.patternScanResult!!.endIndex - 1
result.mutableMethod.apply {
val register = getInstruction<OneRegisterInstruction>(registerIndex).registerA
addInstruction(
result.scanResult.patternScanResult!!.endIndex,
"""
const/4 v$register, 0x1
"""
)
}
} ?: throw ProUnlockFingerprint.exception
}
}

View File

@@ -1,7 +0,0 @@
package app.revanced.patches.backdrops.misc.pro.annotations
import app.revanced.patcher.annotation.Compatibility
import app.revanced.patcher.annotation.Package
@Compatibility([Package("com.backdrops.wallpapers", arrayOf("4.52"))])
internal annotation class ProUnlockCompatibility

View File

@@ -1,7 +1,7 @@
package app.revanced.patches.backdrops.misc.pro.fingerprints
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import org.jf.dexlib2.Opcode
import com.android.tools.smali.dexlib2.Opcode
object ProUnlockFingerprint : MethodFingerprint(
opcodes = listOf(

View File

@@ -1,44 +0,0 @@
package app.revanced.patches.backdrops.misc.pro.patch
import app.revanced.extensions.toErrorResult
import app.revanced.patcher.annotation.Description
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patcher.patch.annotations.Patch
import app.revanced.patches.backdrops.misc.pro.annotations.ProUnlockCompatibility
import app.revanced.patches.backdrops.misc.pro.fingerprints.ProUnlockFingerprint
import org.jf.dexlib2.iface.instruction.OneRegisterInstruction
@Patch
@Name("pro-unlock")
@Description("Unlocks pro-only functions.")
@ProUnlockCompatibility
@Version("0.0.1")
class ProUnlockPatch : BytecodePatch(
listOf(ProUnlockFingerprint)
) {
override fun execute(context: BytecodeContext): PatchResult {
ProUnlockFingerprint.result?.let { result ->
val registerIndex = result.scanResult.patternScanResult!!.endIndex - 1
result.mutableMethod.apply {
val register = getInstruction<OneRegisterInstruction>(registerIndex).registerA
addInstruction(
result.scanResult.patternScanResult!!.endIndex,
"""
const/4 v$register, 0x1
"""
)
}
} ?: return ProUnlockFingerprint.toErrorResult()
return PatchResultSuccess()
}
}

View File

@@ -0,0 +1,28 @@
package app.revanced.patches.candylinkvpn
import app.revanced.extensions.exception
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.candylinkvpn.fingerprints.IsPremiumPurchasedFingerprint
@Patch(
name = "Unlock pro",
compatiblePackages = [CompatiblePackage("com.candylink.openvpn")]
)
@Suppress("unused")
object UnlockProPatch : BytecodePatch(
setOf(IsPremiumPurchasedFingerprint)
) {
override fun execute(context: BytecodeContext) {
IsPremiumPurchasedFingerprint.result?.mutableMethod?.addInstructions(
0,
"""
const/4 v0, 0x1
return v0
"""
) ?: throw IsPremiumPurchasedFingerprint.exception
}
}

View File

@@ -1,8 +0,0 @@
package app.revanced.patches.candylinkvpn.annotations
import app.revanced.patcher.annotation.Compatibility
import app.revanced.patcher.annotation.Package
@Compatibility([Package("com.candylink.openvpn")])
@Target(AnnotationTarget.CLASS)
internal annotation class UnlockProCompatibility

View File

@@ -1,4 +1,4 @@
package app.revanced.patches.candylinkvpn.fingereprints
package app.revanced.patches.candylinkvpn.fingerprints
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
@@ -7,5 +7,4 @@ object IsPremiumPurchasedFingerprint : MethodFingerprint(
methodDef.definingClass.endsWith("PreferenceProvider;") &&
methodDef.name == "isPremiumPurchased"
}
) {
}
)

View File

@@ -1,35 +0,0 @@
package app.revanced.patches.candylinkvpn.patch
import app.revanced.extensions.toErrorResult
import app.revanced.patcher.annotation.Description
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patcher.patch.annotations.Patch
import app.revanced.patches.candylinkvpn.annotations.UnlockProCompatibility
import app.revanced.patches.candylinkvpn.fingereprints.IsPremiumPurchasedFingerprint
@Patch
@Name("unlock-pro")
@Description("Unlocks premium features.")
@UnlockProCompatibility
@Version("0.0.1")
class UnlockProPatch : BytecodePatch(
listOf(IsPremiumPurchasedFingerprint)
) {
override fun execute(context: BytecodeContext): PatchResult {
IsPremiumPurchasedFingerprint.result?.mutableMethod?.addInstructions(
0,
"""
const/4 v0, 0x1
return v0
"""
) ?: return IsPremiumPurchasedFingerprint.toErrorResult()
return PatchResultSuccess()
}
}

View File

@@ -0,0 +1,24 @@
package app.revanced.patches.cieid.restrictions.root
import app.revanced.extensions.exception
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.cieid.restrictions.root.fingerprints.CheckRootFingerprint
@Patch(
name = "Bypass root checks",
description = "Removes the restriction to use the app with root permissions or on a custom ROM.",
compatiblePackages = [CompatiblePackage("it.ipzs.cieid")]
)
@Suppress("unused")
object BypassRootChecksPatch : BytecodePatch(
setOf(CheckRootFingerprint)
) {
override fun execute(context: BytecodeContext) {
CheckRootFingerprint.result?.mutableMethod?.addInstruction(1, "return-void")
?: throw CheckRootFingerprint.exception
}
}

View File

@@ -0,0 +1,9 @@
package app.revanced.patches.cieid.restrictions.root.fingerprints
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
object CheckRootFingerprint : MethodFingerprint(
customFingerprint = { methodDef, _ ->
methodDef.definingClass == "Lit/ipzs/cieid/BaseActivity;" && methodDef.name == "onResume"
}
)

View File

@@ -0,0 +1,33 @@
package app.revanced.patches.finanzonline.detection.bootloader
import app.revanced.extensions.exception
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.finanzonline.detection.bootloader.fingerprints.BootStateFingerprint
import app.revanced.patches.finanzonline.detection.bootloader.fingerprints.CreateKeyFingerprint
@Patch(
name = "Remove bootloader detection",
description = "Removes the check for an unlocked bootloader.",
compatiblePackages = [CompatiblePackage("at.gv.bmf.bmf2go")]
)
@Suppress("unused")
object BootloaderDetectionPatch : BytecodePatch(
setOf(CreateKeyFingerprint, BootStateFingerprint)
) {
override fun execute(context: BytecodeContext) {
arrayOf(CreateKeyFingerprint, BootStateFingerprint).forEach { fingerprint ->
fingerprint.result?.mutableMethod?.addInstructions(
0,
"""
const/4 v0, 0x1
return v0
"""
) ?: throw fingerprint.exception
}
}
}

View File

@@ -1,8 +1,8 @@
package app.revanced.patches.finanzonline.detection.bootloader.fingerprints
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import org.jf.dexlib2.AccessFlags
import org.jf.dexlib2.Opcode
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
// Located @ at.gv.bmf.bmf2go.taxequalization.tools.utils.AttestationHelper#isBootStateOk (3.0.1)
object BootStateFingerprint : MethodFingerprint(

View File

@@ -1,7 +1,7 @@
package app.revanced.patches.finanzonline.detection.bootloader.fingerprints
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import org.jf.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.AccessFlags
// Located @ at.gv.bmf.bmf2go.taxequalization.tools.utils.AttestationHelper#createKey (3.0.1)
object CreateKeyFingerprint : MethodFingerprint(

View File

@@ -1,39 +0,0 @@
package app.revanced.patches.finanzonline.detection.bootloader.patch
import app.revanced.extensions.toErrorResult
import app.revanced.patcher.annotation.Description
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patcher.patch.annotations.Patch
import app.revanced.patches.finanzonline.detection.bootloader.fingerprints.BootStateFingerprint
import app.revanced.patches.finanzonline.detection.bootloader.fingerprints.CreateKeyFingerprint
import app.revanced.patches.finanzonline.detection.shared.annotations.DetectionCompatibility
@Patch
@Name("remove-bootloader-detection")
@Description("Removes the check for an unlocked bootloader.")
@DetectionCompatibility
@Version("0.0.1")
class BootloaderDetectionPatch : BytecodePatch(
listOf(CreateKeyFingerprint, BootStateFingerprint)
) {
override fun execute(context: BytecodeContext): PatchResult {
arrayOf(CreateKeyFingerprint, BootStateFingerprint).forEach { fingerprint ->
fingerprint.result?.mutableMethod?.addInstructions(
0,
"""
const/4 v0, 0x1
return v0
"""
) ?: return fingerprint.toErrorResult()
}
return PatchResultSuccess()
}
}

View File

@@ -0,0 +1,29 @@
package app.revanced.patches.finanzonline.detection.root
import app.revanced.extensions.exception
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.finanzonline.detection.root.fingerprints.RootDetectionFingerprint
@Patch(
name = "Remove root detection",
description = "Removes the check for root permissions.",
compatiblePackages = [CompatiblePackage("at.gv.bmf.bmf2go")]
)
@Suppress("unused")
object RootDetectionPatch : BytecodePatch(
setOf(RootDetectionFingerprint)
) {
override fun execute(context: BytecodeContext) {
RootDetectionFingerprint.result?.mutableMethod?.addInstructions(
0,
"""
sget-object v0, Ljava/lang/Boolean;->FALSE:Ljava/lang/Boolean;
return-object v0
"""
) ?: throw RootDetectionFingerprint.exception
}
}

View File

@@ -2,8 +2,8 @@ package app.revanced.patches.finanzonline.detection.root.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import org.jf.dexlib2.AccessFlags
import org.jf.dexlib2.Opcode
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
// Located @ at.gv.bmf.bmf2go.taxequalization.tools.utils.RootDetection#isRooted (3.0.1)
object RootDetectionFingerprint : MethodFingerprint(

View File

@@ -1,35 +0,0 @@
package app.revanced.patches.finanzonline.detection.root.patch
import app.revanced.extensions.toErrorResult
import app.revanced.patcher.annotation.Description
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patcher.patch.annotations.Patch
import app.revanced.patches.finanzonline.detection.root.fingerprints.RootDetectionFingerprint
import app.revanced.patches.finanzonline.detection.shared.annotations.DetectionCompatibility
@Patch
@Name("remove-root-detection")
@Description("Removes the check for root permissions.")
@DetectionCompatibility
@Version("0.0.1")
class RootDetectionPatch : BytecodePatch(
listOf(RootDetectionFingerprint)
) {
override fun execute(context: BytecodeContext): PatchResult {
RootDetectionFingerprint.result?.mutableMethod?.addInstructions(
0,
"""
sget-object v0, Ljava/lang/Boolean;->FALSE:Ljava/lang/Boolean;
return-object v0
"""
) ?: return RootDetectionFingerprint.toErrorResult()
return PatchResultSuccess()
}
}

View File

@@ -1,8 +0,0 @@
package app.revanced.patches.finanzonline.detection.shared.annotations
import app.revanced.patcher.annotation.Compatibility
import app.revanced.patcher.annotation.Package
@Compatibility([Package("at.gv.bmf.bmf2go")])
@Target(AnnotationTarget.CLASS)
internal annotation class DetectionCompatibility

View File

@@ -0,0 +1,38 @@
package app.revanced.patches.googlerecorder.restrictions
import app.revanced.extensions.exception
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.extensions.InstructionExtensions.removeInstructions
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.googlerecorder.restrictions.fingerprints.OnApplicationCreateFingerprint
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Patch(
name = "Remove device restrictions",
description = "Removes restrictions from using the app on any device. Requires mounting patched app over original.",
compatiblePackages = [CompatiblePackage("com.google.android.apps.recorder")]
)
@Suppress("unused")
object RemoveDeviceRestrictions : BytecodePatch(
setOf(OnApplicationCreateFingerprint)
) {
override fun execute(context: BytecodeContext) {
OnApplicationCreateFingerprint.result?.let {
val featureStringIndex = it.scanResult.stringsScanResult!!.matches.first().index
it.mutableMethod.apply {
// Remove check for device restrictions.
removeInstructions(featureStringIndex - 2, 5)
val featureAvailableRegister = getInstruction<OneRegisterInstruction>(featureStringIndex).registerA
// Override "isPixelDevice()" to return true.
addInstruction(featureStringIndex, "const/4 v$featureAvailableRegister, 0x1")
}
} ?: throw OnApplicationCreateFingerprint.exception
}
}

View File

@@ -0,0 +1,12 @@
package app.revanced.patches.googlerecorder.restrictions.fingerprints
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
object OnApplicationCreateFingerprint : MethodFingerprint(
strings = listOf("com.google.android.feature.PIXEL_2017_EXPERIENCE"),
customFingerprint = custom@{ methodDef, classDef ->
if (methodDef.name != "onCreate") return@custom false
classDef.type.endsWith("RecorderApplication;")
}
)

View File

@@ -0,0 +1,26 @@
package app.revanced.patches.hexeditor.ad
import app.revanced.extensions.exception
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstructions
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.hexeditor.ad.fingerprints.PrimaryAdsFingerprint
@Patch(
name = "Disable ads",
compatiblePackages = [CompatiblePackage("com.myprog.hexedit")]
)
@Suppress("unused")
object DisableAdsPatch : BytecodePatch(
setOf(PrimaryAdsFingerprint)
) {
override fun execute(context: BytecodeContext) = PrimaryAdsFingerprint.result?.mutableMethod?.replaceInstructions(
0,
"""
const/4 v0, 0x1
return v0
"""
) ?: throw PrimaryAdsFingerprint.exception
}

View File

@@ -1,12 +0,0 @@
package app.revanced.patches.hexeditor.ad.annotations
import app.revanced.patcher.annotation.Compatibility
import app.revanced.patcher.annotation.Package
@Compatibility(
[
Package("com.myprog.hexedit")
]
)
@Target(AnnotationTarget.CLASS)
internal annotation class HexEditorAdsCompatibility

View File

@@ -1,39 +0,0 @@
package app.revanced.patches.hexeditor.ad.patch
import app.revanced.patcher.annotation.Description
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstructions
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patcher.patch.annotations.Patch
import app.revanced.patches.hexeditor.ad.annotations.HexEditorAdsCompatibility
import app.revanced.patches.hexeditor.ad.fingerprints.PrimaryAdsFingerprint
@Patch
@Name("disable-ads")
@Description("Disables ads in HexEditor.")
@HexEditorAdsCompatibility
@Version("0.0.1")
class HexEditorAdsPatch : BytecodePatch(
listOf(
PrimaryAdsFingerprint
)
) {
override fun execute(context: BytecodeContext): PatchResult {
val method = PrimaryAdsFingerprint.result!!.mutableMethod
method.replaceInstructions(
0,
"""
const/4 v0, 0x1
return v0
"""
)
return PatchResultSuccess()
}
}

View File

@@ -0,0 +1,28 @@
package app.revanced.patches.iconpackstudio.misc.pro
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.iconpackstudio.misc.pro.fingerprints.CheckProFingerprint
@Patch(
name = "Unlock pro",
compatiblePackages = [CompatiblePackage("ginlemon.iconpackstudio")]
)
@Suppress("unused")
object UnlockProPatch : BytecodePatch(
setOf(CheckProFingerprint)
) {
override fun execute(context: BytecodeContext) {
val method = CheckProFingerprint.result!!.mutableMethod
method.addInstructions(
0,
"""
const/4 v0, 0x1
return v0
"""
)
}
}

View File

@@ -1,8 +0,0 @@
package app.revanced.patches.iconpackstudio.misc.pro.annotations
import app.revanced.patcher.annotation.Compatibility
import app.revanced.patcher.annotation.Package
@Compatibility([Package("ginlemon.iconpackstudio")])
@Target(AnnotationTarget.CLASS)
internal annotation class UnlockProCompatibility

View File

@@ -1,37 +0,0 @@
package app.revanced.patches.iconpackstudio.misc.pro.patch
import app.revanced.patcher.annotation.Description
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patcher.patch.annotations.Patch
import app.revanced.patches.iconpackstudio.misc.pro.annotations.UnlockProCompatibility
import app.revanced.patches.iconpackstudio.misc.pro.fingerprints.CheckProFingerprint
@Patch
@Name("unlock-pro")
@Description("Unlocks all pro features.")
@UnlockProCompatibility
@Version("0.0.1")
class UnlockProPatch : BytecodePatch(
listOf(
CheckProFingerprint
)
) {
override fun execute(context: BytecodeContext): PatchResult {
val method = CheckProFingerprint.result!!.mutableMethod
method.addInstructions(
0,
"""
const/4 v0, 0x1
return v0
"""
)
return PatchResultSuccess()
}
}

View File

@@ -0,0 +1,21 @@
package app.revanced.patches.idaustria.detection.root
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.idaustria.detection.root.fingerprints.RootDetectionFingerprint
@Patch(
name = "Remove root detection",
description = "Removes the check for root permissions and unlocked bootloader.",
compatiblePackages = [CompatiblePackage("at.gv.oe.app")]
)
@Suppress("unused")
object RootDetectionPatch : BytecodePatch(
setOf(RootDetectionFingerprint)
) {
override fun execute(context: BytecodeContext) =
RootDetectionFingerprint.result!!.mutableMethod.addInstruction(0, "return-void")
}

View File

@@ -1,7 +1,7 @@
package app.revanced.patches.idaustria.detection.root.fingerprints
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import org.jf.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.AccessFlags
object RootDetectionFingerprint : MethodFingerprint(
"V",

View File

@@ -1,27 +0,0 @@
package app.revanced.patches.idaustria.detection.root.patch
import app.revanced.patcher.annotation.Description
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patcher.patch.annotations.Patch
import app.revanced.patches.idaustria.detection.root.fingerprints.RootDetectionFingerprint
import app.revanced.patches.idaustria.detection.shared.annotations.DetectionCompatibility
@Patch
@Name("remove-root-detection")
@Description("Removes the check for root permissions and unlocked bootloader.")
@DetectionCompatibility
@Version("0.0.1")
class RootDetectionPatch : BytecodePatch(
listOf(RootDetectionFingerprint)
) {
override fun execute(context: BytecodeContext): PatchResult {
RootDetectionFingerprint.result!!.mutableMethod.addInstruction(0, "return-void")
return PatchResultSuccess()
}
}

View File

@@ -1,8 +0,0 @@
package app.revanced.patches.idaustria.detection.shared.annotations
import app.revanced.patcher.annotation.Compatibility
import app.revanced.patcher.annotation.Package
@Compatibility([Package("at.gv.oe.app")])
@Target(AnnotationTarget.CLASS)
internal annotation class DetectionCompatibility

View File

@@ -1,27 +1,23 @@
package app.revanced.patches.idaustria.detection.signature.patch
package app.revanced.patches.idaustria.detection.signature
import app.revanced.patcher.annotation.Description
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patcher.patch.annotations.Patch
import app.revanced.patches.idaustria.detection.shared.annotations.DetectionCompatibility
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.idaustria.detection.signature.fingerprints.SpoofSignatureFingerprint
@Patch
@Name("spoof-signature")
@Description("Spoofs the signature of the app.")
@DetectionCompatibility
@Version("0.0.1")
class SpoofSignaturePatch : BytecodePatch(
listOf(SpoofSignatureFingerprint)
@Patch(
name = "Spoof signature",
description = "Spoofs the signature of the app.",
compatiblePackages = [CompatiblePackage("at.gv.oe.app")]
)
@Suppress("unused")
object SpoofSignaturePatch : BytecodePatch(
setOf(SpoofSignatureFingerprint)
) {
companion object {
const val EXPECTED_SIGNATURE = "OpenSSLRSAPublicKey{modulus=ac3e6fd6050aa7e0d6010ae58190404cd89a56935b44f6fee" +
private const val EXPECTED_SIGNATURE =
"OpenSSLRSAPublicKey{modulus=ac3e6fd6050aa7e0d6010ae58190404cd89a56935b44f6fee" +
"067c149768320026e10b24799a1339e414605e448e3f264444a327b9ae292be2b62ad567dd1800dbed4a88f718a33dc6db6b" +
"f5178aa41aa0efff8a3409f5ca95dbfccd92c7b4298966df806ea7a0204a00f0e745f6d9f13bdf24f3df715d7b62c1600906" +
"15de1c8a956b9286764985a3b3c060963c435fb9481a5543aaf0671fc2dba6c5c2b17d1ef1d85137f14dc9bbdf3490288087" +
@@ -32,9 +28,8 @@ class SpoofSignaturePatch : BytecodePatch(
"0def55be2c1f6f9c72c92fb45d7e0a9ac571cb38f0a9a37bb33ea06f223fde8c7a92e8c47769e386f9799776e8f110c21df2" +
"77ef1be61b2c01ebdabddcbf53cc4b6fd9a3c445606ee77b3758162c80ad8f8137b3c6864e92db904807dcb2be9d7717dd21" +
"bf42c121d620ddfb7914f7a95c713d9e1c1b7bdb4a03d618e40cf7e9e235c0b5687e03b7ab3,publicExponent=10001}"
}
override fun execute(context: BytecodeContext): PatchResult {
override fun execute(context: BytecodeContext) {
SpoofSignatureFingerprint.result!!.mutableMethod.addInstructions(
0,
"""
@@ -42,6 +37,5 @@ class SpoofSignaturePatch : BytecodePatch(
return-object v0
"""
)
return PatchResultSuccess()
}
}

View File

@@ -1,7 +1,7 @@
package app.revanced.patches.idaustria.detection.signature.fingerprints
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import org.jf.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.AccessFlags
object SpoofSignatureFingerprint : MethodFingerprint(
"L",

View File

@@ -0,0 +1,31 @@
package app.revanced.patches.inshorts.ad
import app.revanced.extensions.exception
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.inshorts.ad.fingerprints.InshortsAdsFingerprint
@Patch(
name = "Hide ads",
compatiblePackages = [CompatiblePackage("com.nis.app")]
)
@Suppress("unused")
object HideAdsPatch : BytecodePatch(
setOf(InshortsAdsFingerprint)
) {
override fun execute(context: BytecodeContext) {
InshortsAdsFingerprint.result?.let { result ->
result.apply {
mutableMethod.addInstruction(
0,
"""
return-void
"""
)
}
} ?: throw InshortsAdsFingerprint.exception
}
}

View File

@@ -1,9 +0,0 @@
package app.revanced.patches.inshorts.ad.annotations
import app.revanced.patcher.annotation.Compatibility
import app.revanced.patcher.annotation.Package
@Compatibility([Package("com.nis.app")])
@Target(AnnotationTarget.CLASS)
internal annotation class HideAdsCompatibility

View File

@@ -1,38 +0,0 @@
package app.revanced.patches.inshorts.ad.patch
import app.revanced.extensions.toErrorResult
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.annotation.Description
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patcher.patch.annotations.Patch
import app.revanced.patches.inshorts.ad.annotations.HideAdsCompatibility
import app.revanced.patches.inshorts.ad.fingerprints.InshortsAdsFingerprint
@Patch
@Name("hide-ads")
@Description("Removes ads from Inshorts.")
@HideAdsCompatibility
@Version("0.0.1")
class HideAdsPatch : BytecodePatch(
listOf(InshortsAdsFingerprint)
) {
override fun execute(context: BytecodeContext): PatchResult {
InshortsAdsFingerprint.result?.let { result ->
result.apply {
mutableMethod.addInstruction(
0,
"""
return-void
"""
)
}
} ?: return InshortsAdsFingerprint.toErrorResult()
return PatchResultSuccess()
}
}

View File

@@ -1,16 +1,14 @@
package app.revanced.patches.instagram.patches.ads.timeline.patch
package app.revanced.patches.instagram.patches.ads.timeline
import app.revanced.extensions.toErrorResult
import app.revanced.patcher.annotation.*
import app.revanced.extensions.exception
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint.Companion.resolve
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patcher.patch.annotations.Patch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.util.smali.ExternalLabel
import app.revanced.patches.instagram.patches.ads.timeline.fingerprints.MediaFingerprint
import app.revanced.patches.instagram.patches.ads.timeline.fingerprints.ShowAdFingerprint
@@ -18,34 +16,35 @@ import app.revanced.patches.instagram.patches.ads.timeline.fingerprints.ads.Gene
import app.revanced.patches.instagram.patches.ads.timeline.fingerprints.ads.MediaAdFingerprint
import app.revanced.patches.instagram.patches.ads.timeline.fingerprints.ads.PaidPartnershipAdFingerprint
import app.revanced.patches.instagram.patches.ads.timeline.fingerprints.ads.ShoppingAdFingerprint
import org.jf.dexlib2.iface.instruction.FiveRegisterInstruction
import org.jf.dexlib2.iface.instruction.OneRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Patch
@Name("hide-timeline-ads")
@Description("Removes ads from the timeline.")
@Compatibility([Package("com.instagram.android", arrayOf("275.0.0.27.98"))])
@Version("0.0.1")
class HideTimelineAdsPatch : BytecodePatch(
listOf(
@Patch(
name = "Hide timeline ads",
description = "Removes ads from the timeline.",
compatiblePackages = [CompatiblePackage("com.instagram.android", ["275.0.0.27.98"])]
)
@Suppress("unused")
object HideTimelineAdsPatch : BytecodePatch(
setOf(
ShowAdFingerprint,
MediaFingerprint,
PaidPartnershipAdFingerprint // Unlike the other ads this one is resolved from all classes.
)
) {
override fun execute(context: BytecodeContext): PatchResult {
override fun execute(context: BytecodeContext) {
// region Resolve required methods to check for ads.
ShowAdFingerprint.result ?: return ShowAdFingerprint.toErrorResult()
ShowAdFingerprint.result ?: throw ShowAdFingerprint.exception
PaidPartnershipAdFingerprint.result ?: return PaidPartnershipAdFingerprint.toErrorResult()
PaidPartnershipAdFingerprint.result ?: throw PaidPartnershipAdFingerprint.exception
MediaFingerprint.result?.let {
GenericMediaAdFingerprint.resolve(context, it.classDef)
ShoppingAdFingerprint.resolve(context, it.classDef)
return@let
} ?: return MediaFingerprint.toErrorResult()
} ?: throw MediaFingerprint.exception
// endregion
@@ -100,7 +99,5 @@ class HideTimelineAdsPatch : BytecodePatch(
// endregion
}
return PatchResultSuccess()
}
}

View File

@@ -2,8 +2,8 @@ package app.revanced.patches.instagram.patches.ads.timeline.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import org.jf.dexlib2.AccessFlags
import org.jf.dexlib2.Opcode
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
object ShowAdFingerprint : MethodFingerprint(
"Z",

View File

@@ -1,6 +1,6 @@
package app.revanced.patches.instagram.patches.ads.timeline.fingerprints.ads
import org.jf.dexlib2.Opcode
import com.android.tools.smali.dexlib2.Opcode
object GenericMediaAdFingerprint : MediaAdFingerprint(
opcodes = listOf(

View File

@@ -2,10 +2,10 @@ package app.revanced.patches.instagram.patches.ads.timeline.fingerprints.ads
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import org.jf.dexlib2.AccessFlags
import org.jf.dexlib2.Opcode
import org.jf.dexlib2.iface.ClassDef
import org.jf.dexlib2.iface.Method
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.ClassDef
import com.android.tools.smali.dexlib2.iface.Method
abstract class MediaAdFingerprint(
returnType: String? = "Z",

View File

@@ -1,8 +1,8 @@
package app.revanced.patches.instagram.patches.ads.timeline.fingerprints.ads
import org.jf.dexlib2.Opcode
import org.jf.dexlib2.iface.instruction.ReferenceInstruction
import org.jf.dexlib2.iface.reference.MethodReference
import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
object PaidPartnershipAdFingerprint : MediaAdFingerprint(
"V",

View File

@@ -1,6 +1,6 @@
package app.revanced.patches.instagram.patches.ads.timeline.fingerprints.ads
import org.jf.dexlib2.Opcode
import com.android.tools.smali.dexlib2.Opcode
object ShoppingAdFingerprint : MediaAdFingerprint(
opcodes = listOf(

View File

@@ -0,0 +1,26 @@
package app.revanced.patches.irplus.ad
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.irplus.ad.fingerprints.IrplusAdsFingerprint
@Patch(
name = "Remove ads",
compatiblePackages = [CompatiblePackage("net.binarymode.android.irplus")]
)
@Suppress("unused")
object RemoveAdsPatch : BytecodePatch(
setOf(IrplusAdsFingerprint)
) {
override fun execute(context: BytecodeContext) {
val method = IrplusAdsFingerprint.result!!.mutableMethod
// By overwriting the second parameter of the method,
// the view which holds the advertisement is removed.
method.addInstruction(0, "const/4 p2, 0x0")
}
}

View File

@@ -1,8 +0,0 @@
package app.revanced.patches.irplus.ad.annotations
import app.revanced.patcher.annotation.Compatibility
import app.revanced.patcher.annotation.Package
@Compatibility([Package("net.binarymode.android.irplus")])
@Target(AnnotationTarget.CLASS)
internal annotation class IrplusAdsCompatibility

View File

@@ -2,7 +2,7 @@ package app.revanced.patches.irplus.ad.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import org.jf.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.AccessFlags
object IrplusAdsFingerprint : MethodFingerprint(
"V",

View File

@@ -1,33 +0,0 @@
package app.revanced.patches.irplus.ad.patch
import app.revanced.patcher.annotation.Description
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patcher.patch.annotations.Patch
import app.revanced.patches.irplus.ad.annotations.IrplusAdsCompatibility
import app.revanced.patches.irplus.ad.fingerprints.IrplusAdsFingerprint
@Patch
@Name("remove-ads")
@Description("Removes all ads from the app.")
@IrplusAdsCompatibility
@Version("0.0.1")
class IrplusAdsPatch : BytecodePatch(
listOf(IrplusAdsFingerprint)
) {
override fun execute(context: BytecodeContext): PatchResult {
val method = IrplusAdsFingerprint.result!!.mutableMethod
// By overwriting the second parameter of the method,
// the view which holds the advertisement is removed.
method.addInstruction(0, "const/4 p2, 0x0")
return PatchResultSuccess()
}
}

View File

@@ -0,0 +1,26 @@
package app.revanced.patches.lightroom.misc.login
import app.revanced.extensions.exception
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.lightroom.misc.login.fingerprints.IsLoggedInFingerprint
@Patch(
name = "Disable mandatory login",
compatiblePackages = [CompatiblePackage("com.adobe.lrmobile")]
)
@Suppress("unused")
object DisableMandatoryLoginPatch : BytecodePatch(
setOf(IsLoggedInFingerprint)
) {
override fun execute(context: BytecodeContext) {
IsLoggedInFingerprint.result?.mutableMethod?.apply {
val index = implementation!!.instructions.lastIndex - 1
// Set isLoggedIn = true.
replaceInstruction(index, "const/4 v0, 0x1")
} ?: throw IsLoggedInFingerprint.exception
}
}

View File

@@ -0,0 +1,19 @@
package app.revanced.patches.lightroom.misc.login.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
object IsLoggedInFingerprint : MethodFingerprint(
returnType = "Z",
accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC or AccessFlags.FINAL,
opcodes = listOf(
Opcode.INVOKE_STATIC,
Opcode.MOVE_RESULT_OBJECT,
Opcode.SGET_OBJECT,
Opcode.IF_NE,
Opcode.CONST_4,
Opcode.GOTO
)
)

View File

@@ -0,0 +1,24 @@
package app.revanced.patches.lightroom.misc.premium
import app.revanced.extensions.exception
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.lightroom.misc.premium.fingerprints.HasPurchasedFingerprint
@Patch(
name = "Unlock premium",
compatiblePackages = [CompatiblePackage("com.adobe.lrmobile")]
)
@Suppress("unused")
object UnlockPremiumPatch : BytecodePatch(
setOf(HasPurchasedFingerprint)
){
override fun execute(context: BytecodeContext) {
// Set hasPremium = true.
HasPurchasedFingerprint.result?.mutableMethod?.replaceInstruction(2, "const/4 v2, 0x1")
?: throw HasPurchasedFingerprint.exception
}
}

View File

@@ -0,0 +1,18 @@
package app.revanced.patches.lightroom.misc.premium.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
object HasPurchasedFingerprint : MethodFingerprint(
returnType = "Z",
accessFlags = AccessFlags.PRIVATE or AccessFlags.FINAL,
strings = listOf("isPurchaseDoneRecently = true, access platform profile present? = "),
opcodes = listOf(
Opcode.SGET_OBJECT,
Opcode.CONST_4,
Opcode.CONST_4,
Opcode.CONST_4,
)
)

View File

@@ -0,0 +1,25 @@
package app.revanced.patches.memegenerator.detection.license
import app.revanced.extensions.exception
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstructions
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.memegenerator.detection.license.fingerprints.LicenseValidationFingerprint
@Patch(description = "Disables Firebase license validation.")
object LicenseValidationPatch : BytecodePatch(
setOf(LicenseValidationFingerprint)
) {
override fun execute(context: BytecodeContext) {
LicenseValidationFingerprint.result?.apply {
mutableMethod.replaceInstructions(
0,
"""
const/4 p0, 0x1
return p0
"""
)
} ?: throw LicenseValidationFingerprint.exception
}
}

View File

@@ -1,9 +1,9 @@
package app.revanced.patches.memegenerator.detection.license.fingerprint
package app.revanced.patches.memegenerator.detection.license.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import org.jf.dexlib2.AccessFlags
import org.jf.dexlib2.Opcode
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
object LicenseValidationFingerprint : MethodFingerprint(
returnType = "Z",

View File

@@ -1,31 +0,0 @@
package app.revanced.patches.memegenerator.detection.license.patch
import app.revanced.extensions.toErrorResult
import app.revanced.patcher.annotation.Description
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstructions
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patches.memegenerator.detection.license.fingerprint.LicenseValidationFingerprint
@Description("Disables Firebase license validation.")
@Version("0.0.1")
class LicenseValidationPatch : BytecodePatch(
listOf(LicenseValidationFingerprint)
) {
override fun execute(context: BytecodeContext): PatchResult {
LicenseValidationFingerprint.result?.apply {
mutableMethod.replaceInstructions(
0,
"""
const/4 p0, 0x1
return p0
"""
)
} ?: throw LicenseValidationFingerprint.toErrorResult()
return PatchResultSuccess()
}
}

View File

@@ -0,0 +1,25 @@
package app.revanced.patches.memegenerator.detection.signature
import app.revanced.extensions.exception
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstructions
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.memegenerator.detection.signature.fingerprints.VerifySignatureFingerprint
@Patch(description = "Disables detection of incorrect signature.")
object SignatureVerificationPatch : BytecodePatch(
setOf(VerifySignatureFingerprint)
) {
override fun execute(context: BytecodeContext) {
VerifySignatureFingerprint.result?.apply {
mutableMethod.replaceInstructions(
0,
"""
const/4 p0, 0x1
return p0
"""
)
} ?: throw VerifySignatureFingerprint.exception
}
}

View File

@@ -1,10 +1,10 @@
package app.revanced.patches.memegenerator.detection.signature.fingerprint
package app.revanced.patches.memegenerator.detection.signature.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.annotation.FuzzyPatternScanMethod
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import org.jf.dexlib2.AccessFlags
import org.jf.dexlib2.Opcode
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
@FuzzyPatternScanMethod(2)
object VerifySignatureFingerprint : MethodFingerprint(

View File

@@ -1,31 +0,0 @@
package app.revanced.patches.memegenerator.detection.signature.patch
import app.revanced.extensions.toErrorResult
import app.revanced.patcher.annotation.Description
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstructions
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patches.memegenerator.detection.signature.fingerprint.VerifySignatureFingerprint
@Description("Disables detection of incorrect signature.")
@Version("0.0.1")
class SignatureVerificationPatch : BytecodePatch(
listOf(VerifySignatureFingerprint)
) {
override fun execute(context: BytecodeContext): PatchResult {
VerifySignatureFingerprint.result?.apply {
mutableMethod.replaceInstructions(
0,
"""
const/4 p0, 0x1
return p0
"""
)
} ?: throw VerifySignatureFingerprint.toErrorResult()
return PatchResultSuccess()
}
}

View File

@@ -0,0 +1,44 @@
package app.revanced.patches.memegenerator.misc.pro
import app.revanced.extensions.exception
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstructions
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.memegenerator.detection.license.LicenseValidationPatch
import app.revanced.patches.memegenerator.detection.signature.SignatureVerificationPatch
import app.revanced.patches.memegenerator.misc.pro.fingerprints.IsFreeVersionFingerprint
@Patch(
name = "Unlock pro",
dependencies = [
SignatureVerificationPatch::class,
LicenseValidationPatch::class
],
compatiblePackages = [
CompatiblePackage(
"com.zombodroid.MemeGenerator", [
"4.6364",
"4.6370",
"4.6375",
"4.6377"
]
)
]
)
@Suppress("unused")
object UnlockProVersionPatch : BytecodePatch(
setOf(IsFreeVersionFingerprint)
) {
override fun execute(context: BytecodeContext) {
IsFreeVersionFingerprint.result?.apply {
mutableMethod.replaceInstructions(0,
"""
sget-object p0, Ljava/lang/Boolean;->FALSE:Ljava/lang/Boolean;
return-object p0
"""
)
} ?: throw IsFreeVersionFingerprint.exception
}
}

View File

@@ -1,17 +0,0 @@
package app.revanced.patches.memegenerator.misc.pro.annotations
import app.revanced.patcher.annotation.Compatibility
import app.revanced.patcher.annotation.Package
@Compatibility(
[Package(
"com.zombodroid.MemeGenerator", arrayOf(
"4.6364",
"4.6370",
"4.6375",
"4.6377",
)
)]
)
@Target(AnnotationTarget.CLASS)
internal annotation class UnlockProCompatibility

View File

@@ -1,9 +1,9 @@
package app.revanced.patches.memegenerator.misc.pro.fingerprint
package app.revanced.patches.memegenerator.misc.pro.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import org.jf.dexlib2.AccessFlags
import org.jf.dexlib2.Opcode
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
object IsFreeVersionFingerprint : MethodFingerprint(
returnType = "Ljava/lang/Boolean;",

View File

@@ -1,45 +0,0 @@
package app.revanced.patches.memegenerator.misc.pro.patch
import app.revanced.extensions.toErrorResult
import app.revanced.patcher.annotation.Description
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstructions
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patcher.patch.annotations.DependsOn
import app.revanced.patcher.patch.annotations.Patch
import app.revanced.patches.memegenerator.detection.license.patch.LicenseValidationPatch
import app.revanced.patches.memegenerator.detection.signature.patch.SignatureVerificationPatch
import app.revanced.patches.memegenerator.misc.pro.annotations.UnlockProCompatibility
import app.revanced.patches.memegenerator.misc.pro.fingerprint.IsFreeVersionFingerprint
@Patch
@Name("unlock-pro")
@Description("Unlocks pro features.")
@DependsOn([
SignatureVerificationPatch::class,
LicenseValidationPatch::class
])
@UnlockProCompatibility
@Version("0.0.1")
class UnlockProVersionPatch : BytecodePatch(
listOf(
IsFreeVersionFingerprint
)
) {
override fun execute(context: BytecodeContext): PatchResult {
IsFreeVersionFingerprint.result?.apply {
mutableMethod.replaceInstructions(0,
"""
sget-object p0, Ljava/lang/Boolean;->FALSE:Ljava/lang/Boolean;
return-object p0
"""
)
} ?: throw IsFreeVersionFingerprint.toErrorResult()
return PatchResultSuccess()
}
}

View File

@@ -2,7 +2,7 @@ package app.revanced.patches.messenger.ads.inbox.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import org.jf.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.AccessFlags
object LoadInboxAdsFingerprint : MethodFingerprint(
returnType = "V",

Some files were not shown because too many files have changed in this diff Show More