Compare commits

...

450 Commits

Author SHA1 Message Date
semantic-release-bot
274b6959f7 chore(release): 2.169.1-dev.4 [skip ci]
## [2.169.1-dev.4](https://github.com/revanced/revanced-patches/compare/v2.169.1-dev.3...v2.169.1-dev.4) (2023-04-23)

### Bug Fixes

* **twitch/block-embedded-ads:** correct spelling mistake ([#1962](https://github.com/revanced/revanced-patches/issues/1962)) ([936d9f6](936d9f61a3))
2023-04-23 03:05:18 +00:00
parknich081
936d9f61a3 fix(twitch/block-embedded-ads): correct spelling mistake (#1962) 2023-04-23 05:03:33 +02:00
semantic-release-bot
6c62db8019 chore(release): 2.169.1-dev.3 [skip ci]
## [2.169.1-dev.3](https://github.com/revanced/revanced-patches/compare/v2.169.1-dev.2...v2.169.1-dev.3) (2023-04-23)

### Bug Fixes

* **youtube/hide-video-action-buttons:** fix hide action buttons not working for some users ([#1959](https://github.com/revanced/revanced-patches/issues/1959)) ([064557c](064557c0c8))
2023-04-23 02:17:52 +00:00
LisoUseInAIKyrios
064557c0c8 fix(youtube/hide-video-action-buttons): fix hide action buttons not working for some users (#1959)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-04-23 06:16:10 +04:00
semantic-release-bot
85a32e833e chore(release): 2.169.1-dev.2 [skip ci]
## [2.169.1-dev.2](https://github.com/revanced/revanced-patches/compare/v2.169.1-dev.1...v2.169.1-dev.2) (2023-04-21)

### Bug Fixes

* **"enable-android-debugging:** don't include by default ([5614651](5614651d34))
2023-04-21 16:50:56 +00:00
oSumAtrIX
5614651d34 fix("enable-android-debugging): don't include by default 2023-04-21 18:49:10 +02:00
semantic-release-bot
dacadc1aa7 chore(release): 2.169.1-dev.1 [skip ci]
## [2.169.1-dev.1](https://github.com/revanced/revanced-patches/compare/v2.169.0...v2.169.1-dev.1) (2023-04-21)

### Bug Fixes

* **youtube/sponsorblock:** correct spelling mistake ([#1941](https://github.com/revanced/revanced-patches/issues/1941)) ([2138915](21389156c0))
* **youtube/sponsorblock:** use lowercase letters for URL string ([#1942](https://github.com/revanced/revanced-patches/issues/1942)) ([3b8c13c](3b8c13cc69))
2023-04-21 16:29:39 +00:00
cane
3b8c13cc69 fix(youtube/sponsorblock): use lowercase letters for URL string (#1942) 2023-04-21 18:27:22 +02:00
cane
21389156c0 fix(youtube/sponsorblock): correct spelling mistake (#1941) 2023-04-21 18:26:23 +02:00
semantic-release-bot
ac5acc2602 chore(release): 2.169.0 [skip ci]
# [2.169.0](https://github.com/revanced/revanced-patches/compare/v2.168.0...v2.169.0) (2023-04-21)

### Bug Fixes

* add missing annotation to patches ([#1882](https://github.com/revanced/revanced-patches/issues/1882)) ([a6654c0](a6654c08f7))
* **youtube/hide-video-action-buttons:** change 'Hide create, clip and thanks buttons' to default off ([#1923](https://github.com/revanced/revanced-patches/issues/1923)) ([ce6a6cd](ce6a6cd3d0))
* **youtube/hide-video-action-buttons:** fix 'hide share button' ([#1924](https://github.com/revanced/revanced-patches/issues/1924)) ([328aad9](328aad9d6a))
* **youtube/microg-support:** remove incorrect patch dependency ([8470e1b](8470e1b9c6))
* **youtube/microg-support:** rename patch correctly ([d3b8b37](d3b8b37b02))
* **youtube/return-youtube-dislike:** render dislikes when scrolling into the screen ([#1873](https://github.com/revanced/revanced-patches/issues/1873)) ([2c1329d](2c1329dc54))
* **youtube/sponsorblock:** do not depend on `remember-playback-speed` patch ([6f66cca](6f66ccaaac))
* **youtube/sponsorblock:** fix autorepeat button layout ([#1868](https://github.com/revanced/revanced-patches/issues/1868)) ([24c42c1](24c42c1881))
* **youtube/spoof-signature-verification:** depend on `client-spoof` patch ([11b4ca8](11b4ca8740))
* **youtubevanced/hide-ads:** hide more types of ads ([#1781](https://github.com/revanced/revanced-patches/issues/1781)) ([e47f4a4](e47f4a47b7))
* **youtubevanced/hide-ads:** remove broken ad filter ([#1881](https://github.com/revanced/revanced-patches/issues/1881)) ([4a04e81](4a04e81688))

### Features

* `change-package-name` patch ([#1864](https://github.com/revanced/revanced-patches/issues/1864)) ([020991e](020991ed2e))
* `enable-android-debugging` patch ([#1876](https://github.com/revanced/revanced-patches/issues/1876)) ([ee15123](ee15123466))
* **facebook:** `hide-inbox-ads` patch ([#1893](https://github.com/revanced/revanced-patches/issues/1893)) ([40571f2](40571f2676))
* **id-austria:** bump compatibility to `2.6.0` ([#1827](https://github.com/revanced/revanced-patches/issues/1827)) ([82294a7](82294a7ab2))
* **inshorts:** `hide-ads` patch ([#1828](https://github.com/revanced/revanced-patches/issues/1828)) ([32d73cb](32d73cb446))
* **memegenerator:** `unlock-pro` patch ([#1902](https://github.com/revanced/revanced-patches/issues/1902)) ([5180bc6](5180bc660d))
* **photomath/unlock-plus:** bump compatibility to `8.21.1` ([#1926](https://github.com/revanced/revanced-patches/issues/1926)) ([879a01b](879a01b4c5))
* **photomath:** bump compatibility up to `8.21.0` ([#1886](https://github.com/revanced/revanced-patches/issues/1886)) ([e24403e](e24403e02d))
* **reddit:** bump compatibility to `2023.12.0` ([#1825](https://github.com/revanced/revanced-patches/issues/1825)) ([c7b21d7](c7b21d75b7))
* use better patch description ([7437c77](7437c7731a))
* **youtube-music:** `bypass-certificate-checks` patch ([#1810](https://github.com/revanced/revanced-patches/issues/1810)) ([fd46009](fd46009ec2))
* **youtube/settings:** disable preferences and add dialog messages to preferences ([#1801](https://github.com/revanced/revanced-patches/issues/1801)) ([d45158c](d45158ca92))
* **youtube/sponsorblock:** skip to video highlight ([#1874](https://github.com/revanced/revanced-patches/issues/1874)) ([f71fa48](f71fa48966))
* **youtube:** bump compatibility to `18.08.37` ([aade87e](aade87e981))
* **youtube:** change default video speed and quality inside the settings menu ([#1880](https://github.com/revanced/revanced-patches/issues/1880)) ([6c02bef](6c02bef427))
* **youtube:** constrain compatibility to `18.08.37` ([435a4a9](435a4a9f39))
* **youtube:** sponsorblock improvements ([#1557](https://github.com/revanced/revanced-patches/issues/1557)) ([f0cbcc6](f0cbcc6886))
* **youtube:** support version `18.08.37` ([f1c9793](f1c9793a3e))
2023-04-21 13:50:28 +00:00
oSumAtrIX
e87ee6c04f chore: merge branch dev to main (#1938) 2023-04-21 15:47:33 +02:00
semantic-release-bot
11b642d36a chore(release): 2.169.0-dev.1 [skip ci]
# [2.169.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.168.0...v2.169.0-dev.1) (2023-04-21)

### Bug Fixes

* add missing annotation to patches ([#1882](https://github.com/revanced/revanced-patches/issues/1882)) ([a6654c0](a6654c08f7))
* **youtube/hide-video-action-buttons:** change 'Hide create, clip and thanks buttons' to default off ([#1923](https://github.com/revanced/revanced-patches/issues/1923)) ([ce6a6cd](ce6a6cd3d0))
* **youtube/hide-video-action-buttons:** fix 'hide share button' ([#1924](https://github.com/revanced/revanced-patches/issues/1924)) ([328aad9](328aad9d6a))
* **youtube/microg-support:** remove incorrect patch dependency ([8470e1b](8470e1b9c6))
* **youtube/microg-support:** rename patch correctly ([d3b8b37](d3b8b37b02))
* **youtube/return-youtube-dislike:** render dislikes when scrolling into the screen ([#1873](https://github.com/revanced/revanced-patches/issues/1873)) ([2c1329d](2c1329dc54))
* **youtube/sponsorblock:** do not depend on `remember-playback-speed` patch ([6f66cca](6f66ccaaac))
* **youtube/sponsorblock:** fix autorepeat button layout ([#1868](https://github.com/revanced/revanced-patches/issues/1868)) ([24c42c1](24c42c1881))
* **youtube/spoof-signature-verification:** depend on `client-spoof` patch ([11b4ca8](11b4ca8740))
* **youtubevanced/hide-ads:** hide more types of ads ([#1781](https://github.com/revanced/revanced-patches/issues/1781)) ([e47f4a4](e47f4a47b7))
* **youtubevanced/hide-ads:** remove broken ad filter ([#1881](https://github.com/revanced/revanced-patches/issues/1881)) ([4a04e81](4a04e81688))

### Features

* `change-package-name` patch ([#1864](https://github.com/revanced/revanced-patches/issues/1864)) ([020991e](020991ed2e))
* `enable-android-debugging` patch ([#1876](https://github.com/revanced/revanced-patches/issues/1876)) ([ee15123](ee15123466))
* **facebook:** `hide-inbox-ads` patch ([#1893](https://github.com/revanced/revanced-patches/issues/1893)) ([40571f2](40571f2676))
* **id-austria:** bump compatibility to `2.6.0` ([#1827](https://github.com/revanced/revanced-patches/issues/1827)) ([82294a7](82294a7ab2))
* **inshorts:** `hide-ads` patch ([#1828](https://github.com/revanced/revanced-patches/issues/1828)) ([32d73cb](32d73cb446))
* **memegenerator:** `unlock-pro` patch ([#1902](https://github.com/revanced/revanced-patches/issues/1902)) ([5180bc6](5180bc660d))
* **photomath/unlock-plus:** bump compatibility to `8.21.1` ([#1926](https://github.com/revanced/revanced-patches/issues/1926)) ([879a01b](879a01b4c5))
* **photomath:** bump compatibility up to `8.21.0` ([#1886](https://github.com/revanced/revanced-patches/issues/1886)) ([e24403e](e24403e02d))
* **reddit:** bump compatibility to `2023.12.0` ([#1825](https://github.com/revanced/revanced-patches/issues/1825)) ([c7b21d7](c7b21d75b7))
* use better patch description ([7437c77](7437c7731a))
* **youtube-music:** `bypass-certificate-checks` patch ([#1810](https://github.com/revanced/revanced-patches/issues/1810)) ([fd46009](fd46009ec2))
* **youtube/settings:** disable preferences and add dialog messages to preferences ([#1801](https://github.com/revanced/revanced-patches/issues/1801)) ([d45158c](d45158ca92))
* **youtube/sponsorblock:** skip to video highlight ([#1874](https://github.com/revanced/revanced-patches/issues/1874)) ([f71fa48](f71fa48966))
* **youtube:** bump compatibility to `18.08.37` ([aade87e](aade87e981))
* **youtube:** change default video speed and quality inside the settings menu ([#1880](https://github.com/revanced/revanced-patches/issues/1880)) ([6c02bef](6c02bef427))
* **youtube:** constrain compatibility to `18.08.37` ([435a4a9](435a4a9f39))
* **youtube:** sponsorblock improvements ([#1557](https://github.com/revanced/revanced-patches/issues/1557)) ([f0cbcc6](f0cbcc6886))
* **youtube:** support version `18.08.37` ([f1c9793](f1c9793a3e))
2023-04-21 13:43:16 +00:00
LisoUseInAIKyrios
328aad9d6a fix(youtube/hide-video-action-buttons): fix 'hide share button' (#1924) 2023-04-21 15:23:41 +02:00
oSumAtrIX
11b4ca8740 fix(youtube/spoof-signature-verification): depend on client-spoof patch 2023-04-21 15:23:41 +02:00
oSumAtrIX
7437c7731a feat: use better patch description 2023-04-21 15:23:40 +02:00
oSumAtrIX
d3b8b37b02 fix(youtube/microg-support): rename patch correctly 2023-04-21 15:23:40 +02:00
oSumAtrIX
8470e1b9c6 fix(youtube/microg-support): remove incorrect patch dependency 2023-04-21 15:23:40 +02:00
oSumAtrIX
e3aebb3ea8 refactor: apply Kotlin coding conventions 2023-04-21 15:23:39 +02:00
badawoll
879a01b4c5 feat(photomath/unlock-plus): bump compatibility to 8.21.1 (#1926) 2023-04-21 15:23:39 +02:00
LisoUseInAIKyrios
ce6a6cd3d0 fix(youtube/hide-video-action-buttons): change 'Hide create, clip and thanks buttons' to default off (#1923) 2023-04-21 15:23:39 +02:00
LisoUseInAIKyrios
2c1329dc54 fix(youtube/return-youtube-dislike): render dislikes when scrolling into the screen (#1873)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-04-21 15:23:39 +02:00
badawoll
5180bc660d feat(memegenerator): unlock-pro patch (#1902)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-04-21 15:23:38 +02:00
johnconner122
4a04e81688 fix(youtubevanced/hide-ads): remove broken ad filter (#1881) 2023-04-21 15:23:38 +02:00
LisoUseInAIKyrios
f71fa48966 feat(youtube/sponsorblock): skip to video highlight (#1874) 2023-04-21 15:23:38 +02:00
LisoUseInAIKyrios
6c02bef427 feat(youtube): change default video speed and quality inside the settings menu (#1880)
Co-authored-by: johnconner122 <107796137+johnconner122@users.noreply.github.com>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-04-16 19:21:32 +02:00
Sebok Andras
ee15123466 feat: enable-android-debugging patch (#1876) 2023-04-16 19:21:32 +02:00
badawoll
40571f2676 feat(facebook): hide-inbox-ads patch (#1893)
Signed-off-by: badawoll <129878899+badawoll@users.noreply.github.com>
2023-04-16 19:21:31 +02:00
badawoll
e24403e02d feat(photomath): bump compatibility up to 8.21.0 (#1886) 2023-04-16 19:21:31 +02:00
Linus
a6654c08f7 fix: add missing annotation to patches (#1882)
Co-authored-by: Linus789 <Linus789@users.noreply.github.com>
2023-04-16 19:21:30 +02:00
LisoUseInAIKyrios
24c42c1881 fix(youtube/sponsorblock): fix autorepeat button layout (#1868) 2023-04-16 19:21:30 +02:00
Sebok Andras
020991ed2e feat: change-package-name patch (#1864)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-04-16 19:21:29 +02:00
oSumAtrIX
115ced5321 ci: use correct checkmark syntax in PR body 2023-04-16 19:21:29 +02:00
EvadeMaster
c7b21d75b7 feat(reddit): bump compatibility to 2023.12.0 (#1825)
(cherry picked from commit 02ece35fadd1288c36adea502363a7284552e6f6)
2023-04-16 19:21:28 +02:00
LisoUseInAIKyrios
d45158ca92 feat(youtube/settings): disable preferences and add dialog messages to preferences (#1801)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-04-16 19:21:28 +02:00
LisoUseInAIKyrios
050fa7e778 refactor(youtube/video-information): include video speed (#1843)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-04-16 19:21:27 +02:00
oSumAtrIX
435a4a9f39 feat(youtube): constrain compatibility to 18.08.37 2023-04-16 19:21:26 +02:00
oSumAtrIX
aade87e981 feat(youtube): bump compatibility to 18.08.37 2023-04-16 19:21:26 +02:00
oSumAtrIX
f1c9793a3e feat(youtube): support version 18.08.37 2023-04-16 19:21:25 +02:00
oSumAtrIX
6f66ccaaac fix(youtube/sponsorblock): do not depend on remember-playback-speed patch 2023-04-16 19:21:25 +02:00
LisoUseInAIKyrios
f0cbcc6886 feat(youtube): sponsorblock improvements (#1557)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-04-16 19:21:24 +02:00
Aunali321
32d73cb446 feat(inshorts): hide-ads patch (#1828) 2023-04-16 19:21:23 +02:00
johnconner122
e47f4a47b7 fix(youtubevanced/hide-ads): hide more types of ads (#1781) 2023-04-16 19:21:23 +02:00
morpheus133
fd46009ec2 feat(youtube-music): bypass-certificate-checks patch (#1810)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-04-16 19:21:22 +02:00
fe
82294a7ab2 feat(id-austria): bump compatibility to 2.6.0 (#1827)
Co-authored-by: Your Name <you@example.com>
2023-04-16 19:21:22 +02:00
EvadeMaster
b67f9f5e92 build: update Kotlin to 1.8.10 (#1824) 2023-04-16 19:21:22 +02:00
semantic-release-bot
1fcf1ea86a chore(release): 2.168.0 [skip ci]
# [2.168.0](https://github.com/revanced/revanced-patches/compare/v2.167.1...v2.168.0) (2023-04-13)

### Features

* **youtube/spoof-signature-verification:** enable by default ([#1896](https://github.com/revanced/revanced-patches/issues/1896)) ([774e45e](774e45ed50))
2023-04-16 19:18:21 +02:00
Robert
0a5fedb746 feat(youtube/spoof-signature-verification): enable by default (#1896) 2023-04-16 19:05:21 +02:00
semantic-release-bot
c4b2e54b1e chore(release): 2.167.1 [skip ci]
## [2.167.1](https://github.com/revanced/revanced-patches/compare/v2.167.0...v2.167.1) (2023-04-13)

### Bug Fixes

* **youtube/spoof-signature-verification:** fixed subtitles in wrong location ([#1833](https://github.com/revanced/revanced-patches/issues/1833)) ([fb5380a](fb5380a03e))
* **youtube/spoof-signature-verification:** spoof videos in playlists ([8e59165](8e59165ad1))
2023-04-13 04:15:49 +00:00
LisoUseInAIKyrios
fb5380a03e fix(youtube/spoof-signature-verification): fixed subtitles in wrong location (#1833) 2023-04-13 06:11:48 +02:00
oSumAtrIX
8e59165ad1 fix(youtube/spoof-signature-verification): spoof videos in playlists 2023-04-13 06:11:46 +02:00
semantic-release-bot
b0ee6ebb99 chore(release): 2.167.0 [skip ci]
# [2.167.0](https://github.com/revanced/revanced-patches/compare/v2.166.0...v2.167.0) (2023-03-29)

### Bug Fixes

* **youtube/remember-playback-speed:**  allow to not remember playback speed ([#1762](https://github.com/revanced/revanced-patches/issues/1762)) ([708582f](708582ff03))
* **youtube/sponsorblock:** fix segments not skipping during background play ([#1765](https://github.com/revanced/revanced-patches/issues/1765)) ([45904f4](45904f4895))
* **youtube/spoof-signature-verification:** fix audio during home feed video playback ([#1754](https://github.com/revanced/revanced-patches/issues/1754)) ([c2dd63e](c2dd63e338))

### Features

* `export-all-activities` patch ([#1751](https://github.com/revanced/revanced-patches/issues/1751)) ([2e43d6f](2e43d6fcc1))
* **reddit:** bump compatibility to `2023.10.0` ([#1772](https://github.com/revanced/revanced-patches/issues/1772)) ([70d2d00](70d2d00b07))
* **twitter:** remove `monochrome-icon` patch ([#1786](https://github.com/revanced/revanced-patches/issues/1786)) ([45b2861](45b28613d3))
* **youtube/microg-support:** do not depend on `spoof-signature-verification` patch ([ce5bc27](ce5bc272bf))
* **youtube/spoof-signature-verification:** automatic signature spoofing ([025092a](025092a2ff))
2023-03-29 04:28:23 +00:00
oSumAtrIX
8950648370 chore: merge branch dev to main (#1755) 2023-03-29 06:26:07 +02:00
semantic-release-bot
e3eafd9fbb chore(release): 2.167.0-dev.6 [skip ci]
# [2.167.0-dev.6](https://github.com/revanced/revanced-patches/compare/v2.167.0-dev.5...v2.167.0-dev.6) (2023-03-22)

### Features

* **twitter:** remove `monochrome-icon` patch ([#1786](https://github.com/revanced/revanced-patches/issues/1786)) ([45b2861](45b28613d3))
2023-03-22 20:36:40 +00:00
Ax333l
45b28613d3 feat(twitter): remove monochrome-icon patch (#1786) 2023-03-22 21:33:43 +01:00
semantic-release-bot
a3b8fb5c11 chore(release): 2.167.0-dev.5 [skip ci]
# [2.167.0-dev.5](https://github.com/revanced/revanced-patches/compare/v2.167.0-dev.4...v2.167.0-dev.5) (2023-03-20)

### Features

* **reddit:** bump compatibility to `2023.10.0` ([#1772](https://github.com/revanced/revanced-patches/issues/1772)) ([70d2d00](70d2d00b07))
2023-03-20 15:41:18 +00:00
EvadeMaster
65ace4b47a refactor(ticktick): clarify unlock-themes description (#1773) 2023-03-20 16:37:41 +01:00
EvadeMaster
70d2d00b07 feat(reddit): bump compatibility to 2023.10.0 (#1772) 2023-03-20 16:36:00 +01:00
semantic-release-bot
096d0d516f chore(release): 2.167.0-dev.4 [skip ci]
# [2.167.0-dev.4](https://github.com/revanced/revanced-patches/compare/v2.167.0-dev.3...v2.167.0-dev.4) (2023-03-19)

### Bug Fixes

* **youtube/sponsorblock:** fix segments not skipping during background play ([#1765](https://github.com/revanced/revanced-patches/issues/1765)) ([45904f4](45904f4895))

### Features

* `export-all-activities` patch ([#1751](https://github.com/revanced/revanced-patches/issues/1751)) ([2e43d6f](2e43d6fcc1))
2023-03-19 22:23:15 +00:00
LisoUseInAIKyrios
45904f4895 fix(youtube/sponsorblock): fix segments not skipping during background play (#1765)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-03-20 02:21:34 +04:00
Bennett
2e43d6fcc1 feat: export-all-activities patch (#1751)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-03-19 23:20:49 +01:00
semantic-release-bot
86fe827c29 chore(release): 2.167.0-dev.3 [skip ci]
# [2.167.0-dev.3](https://github.com/revanced/revanced-patches/compare/v2.167.0-dev.2...v2.167.0-dev.3) (2023-03-19)

### Bug Fixes

* **youtube/remember-playback-speed:**  allow to not remember playback speed ([#1762](https://github.com/revanced/revanced-patches/issues/1762)) ([708582f](708582ff03))
2023-03-19 22:02:37 +00:00
LisoUseInAIKyrios
708582ff03 fix(youtube/remember-playback-speed): allow to not remember playback speed (#1762) 2023-03-19 23:00:21 +01:00
oSumAtrIX
24133ea1bb ci: add dependency section when opening a PR 2023-03-19 22:58:16 +01:00
semantic-release-bot
d825b37559 chore(release): 2.167.0-dev.2 [skip ci]
# [2.167.0-dev.2](https://github.com/revanced/revanced-patches/compare/v2.167.0-dev.1...v2.167.0-dev.2) (2023-03-19)

### Features

* **youtube/microg-support:** do not depend on `spoof-signature-verification` patch ([ce5bc27](ce5bc272bf))
2023-03-19 21:54:23 +00:00
oSumAtrIX
ce5bc272bf feat(youtube/microg-support): do not depend on spoof-signature-verification patch
The patch `spoof-signature-verification` is currently causing many side effects. Tracking https://github.com/revanced/revanced-patches/issues/1752.
2023-03-19 22:52:37 +01:00
LisoUseInAIKyrios
7f0c9c40a6 chore: delete empty file 2023-03-19 20:51:37 +04:00
semantic-release-bot
bfcead18a5 chore(release): 2.167.0-dev.1 [skip ci]
# [2.167.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.166.1-dev.1...v2.167.0-dev.1) (2023-03-17)

### Features

* **youtube/spoof-signature-verification:** automatic signature spoofing ([025092a](025092a2ff))
2023-03-17 18:00:49 +00:00
LisoUseInAIKyrios
025092a2ff feat(youtube/spoof-signature-verification): automatic signature spoofing
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-03-17 21:58:41 +04:00
semantic-release-bot
685544e603 chore(release): 2.166.1-dev.1 [skip ci]
## [2.166.1-dev.1](https://github.com/revanced/revanced-patches/compare/v2.166.0...v2.166.1-dev.1) (2023-03-15)

### Bug Fixes

* **youtube/spoof-signature-verification:** fix audio during home feed video playback ([#1754](https://github.com/revanced/revanced-patches/issues/1754)) ([c2dd63e](c2dd63e338))
2023-03-15 17:40:49 +00:00
LisoUseInAIKyrios
c2dd63e338 fix(youtube/spoof-signature-verification): fix audio during home feed video playback (#1754) 2023-03-15 21:39:03 +04:00
semantic-release-bot
5e167d59e1 chore(release): 2.166.0 [skip ci]
# [2.166.0](https://github.com/revanced/revanced-patches/compare/v2.165.1...v2.166.0) (2023-03-14)

### Bug Fixes

* **backdrops/pro-unlock:** constrain to most recent working app version ([#1677](https://github.com/revanced/revanced-patches/issues/1677)) ([41da430](41da430e16))
* **instagram/hide-timeline-ads:** fix compatibility with newer versions ([#1672](https://github.com/revanced/revanced-patches/issues/1672)) ([2789266](278926634b))
* **twitch:** misspelling annotations ([3c4956c](3c4956c05a))
* **youtube/general-ads:** remove duplicate preference ([33a81fc](33a81fc7a3))
* **youtube/return-youtube-dislike:** add missing strings ([e9b5ffd](e9b5ffd615))

### Features

* **myexpenses/unlock-pro:** constrain to last working version ([92e0202](92e0202d8d))
* **reddit:** add more compatibility constraints ([caa91de](caa91de921))
* **reddit:** bump compatibility to `2023.09.1` ([#1729](https://github.com/revanced/revanced-patches/issues/1729)) ([6361d1f](6361d1f056))
* **twitch:** constraint compatibility to `14.6.1` ([#1736](https://github.com/revanced/revanced-patches/issues/1736)) ([714070d](714070d860))
* **youtube/custom-video-buffer:** replace patch with removal notice ([#1718](https://github.com/revanced/revanced-patches/issues/1718)) ([9ffcb97](9ffcb97a90))
* **youtube/disable-player-popup-panels:** use better patch description ([ef8b06e](ef8b06ea89))
* **youtube/general-ads:** do not hide components in library tab ([f81c7c7](f81c7c77f9))
* **youtube/general-ads:** hide image shelf from search results ([31cfaa7](31cfaa7bf9))
* **youtube/hide-autoplay-button:** do not disable autoplay button when hidden ([0aae171](0aae1713f9))
* **youtube:** `hide-floating-microphone-button` patch ([ce75a98](ce75a98659))
* **youtube:** bump compatibility to `18.05.40` ([#1704](https://github.com/revanced/revanced-patches/issues/1704)) ([b6167ef](b6167ef1e0))
* **youtube:** bump compatibility to `18.05.40` ([#1743](https://github.com/revanced/revanced-patches/issues/1743)) ([98bd250](98bd25044e))
* **youtubevanced:** `general-ads` patch ([#1693](https://github.com/revanced/revanced-patches/issues/1693)) ([4d97ead](4d97ead9b7))
2023-03-14 15:02:00 +00:00
oSumAtrIX
378a50fe0b chore: merge branch dev to main (#1664) 2023-03-14 15:59:03 +01:00
semantic-release-bot
b8f650232c chore(release): 2.166.0-dev.1 [skip ci]
# [2.166.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.165.1...v2.166.0-dev.1) (2023-03-14)

### Bug Fixes

* **backdrops/pro-unlock:** constrain to most recent working app version ([#1677](https://github.com/revanced/revanced-patches/issues/1677)) ([41da430](41da430e16))
* **instagram/hide-timeline-ads:** fix compatibility with newer versions ([#1672](https://github.com/revanced/revanced-patches/issues/1672)) ([2789266](278926634b))
* **twitch:** misspelling annotations ([3c4956c](3c4956c05a))
* **youtube/general-ads:** remove duplicate preference ([33a81fc](33a81fc7a3))
* **youtube/return-youtube-dislike:** add missing strings ([e9b5ffd](e9b5ffd615))

### Features

* **myexpenses/unlock-pro:** constrain to last working version ([92e0202](92e0202d8d))
* **reddit:** add more compatibility constraints ([caa91de](caa91de921))
* **reddit:** bump compatibility to `2023.09.1` ([#1729](https://github.com/revanced/revanced-patches/issues/1729)) ([6361d1f](6361d1f056))
* **twitch:** constraint compatibility to `14.6.1` ([#1736](https://github.com/revanced/revanced-patches/issues/1736)) ([714070d](714070d860))
* **youtube/custom-video-buffer:** replace patch with removal notice ([#1718](https://github.com/revanced/revanced-patches/issues/1718)) ([9ffcb97](9ffcb97a90))
* **youtube/disable-player-popup-panels:** use better patch description ([ef8b06e](ef8b06ea89))
* **youtube/general-ads:** do not hide components in library tab ([f81c7c7](f81c7c77f9))
* **youtube/general-ads:** hide image shelf from search results ([31cfaa7](31cfaa7bf9))
* **youtube/hide-autoplay-button:** do not disable autoplay button when hidden ([0aae171](0aae1713f9))
* **youtube:** `hide-floating-microphone-button` patch ([ce75a98](ce75a98659))
* **youtube:** bump compatibility to `18.05.40` ([#1704](https://github.com/revanced/revanced-patches/issues/1704)) ([b6167ef](b6167ef1e0))
* **youtube:** bump compatibility to `18.05.40` ([#1743](https://github.com/revanced/revanced-patches/issues/1743)) ([98bd250](98bd25044e))
* **youtubevanced:** `general-ads` patch ([#1693](https://github.com/revanced/revanced-patches/issues/1693)) ([4d97ead](4d97ead9b7))
2023-03-14 14:12:11 +00:00
LisoUseInAIKyrios
98bd25044e feat(youtube): bump compatibility to 18.05.40 (#1743) 2023-03-14 15:09:13 +01:00
johnconner122
4d97ead9b7 feat(youtubevanced): general-ads patch (#1693) 2023-03-14 15:09:10 +01:00
LisoUseInAIKyrios
9ffcb97a90 feat(youtube/custom-video-buffer): replace patch with removal notice (#1718)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-03-14 15:08:44 +01:00
EvadeMaster
3c4956c05a fix(twitch): misspelling annotations 2023-03-14 15:08:44 +01:00
EvadeMaster
714070d860 feat(twitch): constraint compatibility to 14.6.1 (#1736) 2023-03-14 15:08:43 +01:00
EvadeMaster
5210bc65b1 chore(gradle): bump wrapper to 8.0.2 (#1737) 2023-03-14 15:08:43 +01:00
EvadeMaster
6361d1f056 feat(reddit): bump compatibility to 2023.09.1 (#1729) 2023-03-14 15:08:43 +01:00
EvadeMaster
b6167ef1e0 feat(youtube): bump compatibility to 18.05.40 (#1704) 2023-03-14 15:08:42 +01:00
LisoUseInAIKyrios
92e0202d8d feat(myexpenses/unlock-pro): constrain to last working version 2023-03-14 15:08:42 +01:00
LisousEinaiKyrios
caa91de921 feat(reddit): add more compatibility constraints 2023-03-14 15:08:42 +01:00
LisousEinaiKyrios
e9b5ffd615 fix(youtube/return-youtube-dislike): add missing strings 2023-03-14 15:08:41 +01:00
Javier Flores
03fffa7b91 chore: update gradle wrapper to 8.0.1 (#1680) 2023-03-14 15:08:41 +01:00
oSumAtrIX
c80d222730 build: update dependencies
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-03-14 15:08:41 +01:00
oSumAtrIX
dd324cd161 refactor: remove unnecessary annotations
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-03-14 15:08:41 +01:00
oSumAtrIX
f8f085b822 refactor(youtube/hide-timestamp): use better descriptions
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-03-14 15:08:40 +01:00
oSumAtrIX
ce75a98659 feat(youtube): hide-floating-microphone-button patch
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-03-14 15:08:40 +01:00
oSumAtrIX
0aae1713f9 feat(youtube/hide-autoplay-button): do not disable autoplay button when hidden
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-03-14 15:08:40 +01:00
KAZI MMT
41da430e16 fix(backdrops/pro-unlock): constrain to most recent working app version (#1677) 2023-03-14 15:08:39 +01:00
oSumAtrIX
f81c7c77f9 feat(youtube/general-ads): do not hide components in library tab
This reverts commit 5a62eb1a28.

Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-03-14 15:08:39 +01:00
oSumAtrIX
ef8b06ea89 feat(youtube/disable-player-popup-panels): use better patch description
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-03-14 15:08:39 +01:00
falafelp
278926634b fix(instagram/hide-timeline-ads): fix compatibility with newer versions (#1672)
Co-authored-by: BuildTools <unconfigured@null.spigotmc.org>
2023-03-14 15:08:38 +01:00
oSumAtrIX
33a81fc7a3 fix(youtube/general-ads): remove duplicate preference 2023-03-14 15:08:38 +01:00
oSumAtrIX
31cfaa7bf9 feat(youtube/general-ads): hide image shelf from search results
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-03-14 15:08:38 +01:00
semantic-release-bot
c845b2878c chore(release): 2.165.1 [skip ci]
## [2.165.1](https://github.com/revanced/revanced-patches/compare/v2.165.0...v2.165.1) (2023-03-14)

### Bug Fixes

* **youtube/spoof-signature-verification:** use correct fingerprint ([e36902a](e36902a530))
2023-03-14 13:18:00 +00:00
oSumAtrIX
e36902a530 fix(youtube/spoof-signature-verification): use correct fingerprint 2023-03-14 13:49:48 +01:00
semantic-release-bot
452c8eea96 chore(release): 2.165.0 [skip ci]
# [2.165.0](https://github.com/revanced/revanced-patches/compare/v2.164.0...v2.165.0) (2023-03-14)

### Features

* **youtube:** `spoof-signature-verification` patch ([#1745](https://github.com/revanced/revanced-patches/issues/1745)) ([713f9db](713f9db31c))
2023-03-14 12:23:25 +00:00
LisoUseInAIKyrios
713f9db31c feat(youtube): spoof-signature-verification patch (#1745)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-03-14 13:19:00 +01:00
semantic-release-bot
40a2b078a4 chore(release): 2.164.0 [skip ci]
# [2.164.0](https://github.com/revanced/revanced-patches/compare/v2.163.0...v2.164.0) (2023-02-24)

### Features

* **photomath:** `unlock-plus` patch ([#1633](https://github.com/revanced/revanced-patches/issues/1633)) ([8158388](81583886b6))
* **youtube/general-ads:** hide quick actions in fullscreen ([1148648](1148648465))
* **youtube/general-ads:** hide related videos in quick action ([2a80ab1](2a80ab17cb))
* **youtube/return-youtube-dislike:** support for shorts ([#1596](https://github.com/revanced/revanced-patches/issues/1596)) ([c36a12b](c36a12bd42))
* **youtube:** remove patch `open-links-directly` ([725ff39](725ff39997))
2023-02-24 02:49:26 +00:00
oSumAtrIX
6e6e386ac8 chore: merge branch dev to main (#1659) 2023-02-24 03:47:29 +01:00
semantic-release-bot
249fac1a32 chore(release): 2.164.0-dev.3 [skip ci]
# [2.164.0-dev.3](https://github.com/revanced/revanced-patches/compare/v2.164.0-dev.2...v2.164.0-dev.3) (2023-02-24)

### Features

* **youtube/return-youtube-dislike:** support for shorts ([#1596](https://github.com/revanced/revanced-patches/issues/1596)) ([c36a12b](c36a12bd42))
2023-02-24 02:00:55 +00:00
LisoUseInAIKyrios
c36a12bd42 feat(youtube/return-youtube-dislike): support for shorts (#1596)
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-24 02:59:07 +01:00
semantic-release-bot
dc3c6993e8 chore(release): 2.164.0-dev.2 [skip ci]
# [2.164.0-dev.2](https://github.com/revanced/revanced-patches/compare/v2.164.0-dev.1...v2.164.0-dev.2) (2023-02-23)

### Features

* **youtube/general-ads:** hide quick actions in fullscreen ([1148648](1148648465))
* **youtube/general-ads:** hide related videos in quick action ([2a80ab1](2a80ab17cb))
2023-02-23 12:33:16 +00:00
oSumAtrIX
2a80ab17cb feat(youtube/general-ads): hide related videos in quick action
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-23 13:31:16 +01:00
oSumAtrIX
1148648465 feat(youtube/general-ads): hide quick actions in fullscreen
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-23 13:30:50 +01:00
oSumAtrIX
e336836d07 ci: fix backmerge direction
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-22 16:40:06 +01:00
semantic-release-bot
cc197735fe chore(release): 2.164.0-dev.1 [skip ci]
# [2.164.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.163.0...v2.164.0-dev.1) (2023-02-22)

### Features

* **photomath:** `unlock-plus` patch ([#1633](https://github.com/revanced/revanced-patches/issues/1633)) ([8158388](81583886b6))
* **youtube:** remove patch `open-links-directly` ([725ff39](725ff39997))
2023-02-22 15:36:55 +00:00
oSumAtrIX
725ff39997 feat(youtube): remove patch open-links-directly
The patch did not serve any real purpose

Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-22 16:23:07 +01:00
nik2143
81583886b6 feat(photomath): unlock-plus patch (#1633)
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-22 16:23:07 +01:00
semantic-release-bot
37d22d8dc7 chore(release): 2.163.0 [skip ci]
# [2.163.0](https://github.com/revanced/revanced-patches/compare/v2.162.0...v2.163.0) (2023-02-22)

### Bug Fixes

* **tiktok/show-seekbar:** fix crash when showing seekbar ([#1643](https://github.com/revanced/revanced-patches/issues/1643)) ([1e2b0cd](1e2b0cd8c4))
* **twitter:** make `hide-promoted-ads` patch compatible with any version ([531d491](531d4913ab))
* use correct fingerprint ([b2e4691](b2e4691e88))
* **youtube/disable-fullscreen-panels-auto-popup:** use proper descriptions ([115025f](115025f5d0))
* **youtube/general-ads:** fix switch description wording ([9ac0977](9ac0977427))
* **youtube/hide-time:** use correct integrations class ([5a7ce48](5a7ce48847))
* **youtube/hide-watch-in-vr:** fix descriptions ([fd62566](fd62566cbf))
* **youtube/open-links-directly:** reference correct integrations method ([98df006](98df006527))

### Features

* **androidtwelvewidgets:** `unlock-paid-widgets` patch ([#1641](https://github.com/revanced/revanced-patches/issues/1641)) ([942b424](942b424fc9))
* **music:** remove patches constraint on app version ([#1638](https://github.com/revanced/revanced-patches/issues/1638)) ([3c37ccc](3c37ccce87))
* **twitter:** `hide-recommended-users` patch ([72d8316](72d8316ed2))
* **twitter:** constrain patches compatibility to working versions ([#1646](https://github.com/revanced/revanced-patches/issues/1646)) ([4fd1487](4fd1487469))
* use better patch descriptions ([3153f73](3153f73ceb))
* **youtube/general-ads:** hide channel bar ([d8d24a8](d8d24a8dd1))
* **youtube/general-ads:** hide horizontal video shelf ([5a62eb1](5a62eb1a28))
* **youtube/open-links-directly:** skip every redirect url ([547e7cc](547e7cc119))
2023-02-22 05:52:10 +00:00
oSumAtrIX
b7ccf85a2f chore: merge branch dev to main (#1639) 2023-02-22 06:49:34 +01:00
oSumAtrIX
154dcf6cb4 ci: add backmerge target branch
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-22 06:45:15 +01:00
semantic-release-bot
b110348af0 chore(release): 2.163.0-dev.5 [skip ci]
# [2.163.0-dev.5](https://github.com/revanced/revanced-patches/compare/v2.163.0-dev.4...v2.163.0-dev.5) (2023-02-22)

### Bug Fixes

* use correct fingerprint ([b2e4691](b2e4691e88))
* **youtube/hide-time:** use correct integrations class ([5a7ce48](5a7ce48847))

### Features

* use better patch descriptions ([3153f73](3153f73ceb))
2023-02-22 05:11:10 +00:00
oSumAtrIX
3153f73ceb feat: use better patch descriptions
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-22 06:08:57 +01:00
oSumAtrIX
5ca5d4c64a refactor(youtube/hide-info-cards): fix casing
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-22 06:06:00 +01:00
oSumAtrIX
5a7ce48847 fix(youtube/hide-time): use correct integrations class
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-22 05:59:15 +01:00
oSumAtrIX
dfccd1cc0a refactor(youtube/hide-time): use correct label name
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-22 05:59:00 +01:00
oSumAtrIX
0606f3a9be refactor(youtube/hide-seekbar): use correct label name
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-22 05:58:48 +01:00
oSumAtrIX
b2e4691e88 fix: use correct fingerprint
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-22 05:55:29 +01:00
semantic-release-bot
6d20931db7 chore(release): 2.163.0-dev.4 [skip ci]
# [2.163.0-dev.4](https://github.com/revanced/revanced-patches/compare/v2.163.0-dev.3...v2.163.0-dev.4) (2023-02-22)

### Bug Fixes

* **twitter:** make `hide-promoted-ads` patch compatible with any version ([531d491](531d4913ab))
* **youtube/open-links-directly:** reference correct integrations method ([98df006](98df006527))

### Features

* **twitter:** `hide-recommended-users` patch ([72d8316](72d8316ed2))
2023-02-22 04:40:29 +00:00
oSumAtrIX
72d8316ed2 feat(twitter): hide-recommended-users patch
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-22 05:38:14 +01:00
oSumAtrIX
531d4913ab fix(twitter): make hide-promoted-ads patch compatible with any version
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-22 05:37:52 +01:00
oSumAtrIX
98df006527 fix(youtube/open-links-directly): reference correct integrations method
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-20 19:13:55 +01:00
semantic-release-bot
344f138c3b chore(release): 2.163.0-dev.3 [skip ci]
# [2.163.0-dev.3](https://github.com/revanced/revanced-patches/compare/v2.163.0-dev.2...v2.163.0-dev.3) (2023-02-20)

### Bug Fixes

* **youtube/disable-fullscreen-panels-auto-popup:** use proper descriptions ([115025f](115025f5d0))
* **youtube/general-ads:** fix switch description wording ([9ac0977](9ac0977427))
* **youtube/hide-watch-in-vr:** fix descriptions ([fd62566](fd62566cbf))

### Features

* **youtube/general-ads:** hide channel bar ([d8d24a8](d8d24a8dd1))
* **youtube/general-ads:** hide horizontal video shelf ([5a62eb1](5a62eb1a28))
2023-02-20 04:17:59 +00:00
oSumAtrIX
41d96ac62b refactor(youtube/hide-reels): remove dead code
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-20 05:15:02 +01:00
oSumAtrIX
d8d24a8dd1 feat(youtube/general-ads): hide channel bar
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-20 05:15:01 +01:00
oSumAtrIX
5a62eb1a28 feat(youtube/general-ads): hide horizontal video shelf
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-20 05:15:01 +01:00
oSumAtrIX
9ac0977427 fix(youtube/general-ads): fix switch description wording
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-20 05:15:00 +01:00
oSumAtrIX
115025f5d0 fix(youtube/disable-fullscreen-panels-auto-popup): use proper descriptions
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-20 05:15:00 +01:00
oSumAtrIX
939f8b531a refactor(youtube): move to correct package
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-20 05:14:59 +01:00
oSumAtrIX
fd62566cbf fix(youtube/hide-watch-in-vr): fix descriptions
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-20 05:14:58 +01:00
semantic-release-bot
48456e5c10 chore(release): 2.163.0-dev.2 [skip ci]
# [2.163.0-dev.2](https://github.com/revanced/revanced-patches/compare/v2.163.0-dev.1...v2.163.0-dev.2) (2023-02-19)

### Features

* **twitter:** constrain patches compatibility to working versions ([#1646](https://github.com/revanced/revanced-patches/issues/1646)) ([4fd1487](4fd1487469))
2023-02-19 22:16:56 +00:00
LisoUseInAIKyrios
4fd1487469 feat(twitter): constrain patches compatibility to working versions (#1646) 2023-02-19 23:15:12 +01:00
semantic-release-bot
58c4328485 chore(release): 2.163.0-dev.1 [skip ci]
# [2.163.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.162.0...v2.163.0-dev.1) (2023-02-18)

### Bug Fixes

* **tiktok/show-seekbar:** fix crash when showing seekbar ([#1643](https://github.com/revanced/revanced-patches/issues/1643)) ([1e2b0cd](1e2b0cd8c4))

### Features

* **androidtwelvewidgets:** `unlock-paid-widgets` patch ([#1641](https://github.com/revanced/revanced-patches/issues/1641)) ([942b424](942b424fc9))
* **music:** remove patches constraint on app version ([#1638](https://github.com/revanced/revanced-patches/issues/1638)) ([3c37ccc](3c37ccce87))
* **youtube/open-links-directly:** skip every redirect url ([547e7cc](547e7cc119))
2023-02-18 21:09:59 +00:00
oSumAtrIX
57951b3a8d chore: merge branch main to dev 2023-02-18 22:06:47 +01:00
oSumAtrIX
980812e4cd ci: use new semantic-release-backmerge option
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-18 22:01:23 +01:00
oSumAtrIX
547e7cc119 feat(youtube/open-links-directly): skip every redirect url
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-18 22:01:23 +01:00
oSumAtrIX
6f3f63267f refactor(youtube/open-links-directly): apply naming convention to fingerprints
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-18 22:01:23 +01:00
oSumAtrIX
ad72826f07 refactor(youtube/open-links-directly): remove unused annotation from fingerprints
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-18 22:01:22 +01:00
oSumAtrIX
5c4b2e69da chore: add todo
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-18 22:01:22 +01:00
d4rkk3y
1e2b0cd8c4 fix(tiktok/show-seekbar): fix crash when showing seekbar (#1643) 2023-02-18 22:01:22 +01:00
fe
942b424fc9 feat(androidtwelvewidgets): unlock-paid-widgets patch (#1641) 2023-02-18 22:01:21 +01:00
EvadeMaster
3c37ccce87 feat(music): remove patches constraint on app version (#1638) 2023-02-17 16:06:14 +01:00
semantic-release-bot
efd0a8b6c6 chore(release): 2.162.0 [skip ci]
# [2.162.0](https://github.com/revanced/revanced-patches/compare/v2.161.1...v2.162.0) (2023-02-14)

### Bug Fixes

* **youtube/general-ads:** use better description for switch ([95be457](95be457590))

### Features

* **youtube/general-ads:** hide web search results ([d2142af](d2142af788))
* **yuka:** `unlock-premium` patch ([#1608](https://github.com/revanced/revanced-patches/issues/1608)) ([daa7e52](daa7e5270c))
2023-02-14 14:02:23 +00:00
oSumAtrIX
1e216bcebd chore: merge branch dev to main (#1609) 2023-02-14 15:00:31 +01:00
semantic-release-bot
143ed96d2b chore(release): 2.162.0-dev.3 [skip ci]
# [2.162.0-dev.3](https://github.com/revanced/revanced-patches/compare/v2.162.0-dev.2...v2.162.0-dev.3) (2023-02-14)

### Features

* **youtube/general-ads:** hide web search results ([d2142af](d2142af788))
2023-02-14 13:58:33 +00:00
oSumAtrIX
d2142af788 feat(youtube/general-ads): hide web search results
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-14 14:56:09 +01:00
oSumAtrIX
609f7d8422 ci: update dependencies and target node version (#1624) 2023-02-13 04:23:26 +01:00
Palm
55e202ab54 ci: target specific node version 2023-02-13 08:45:55 +07:00
Palm
037aaefbcd ci: update dependencies 2023-02-13 08:44:54 +07:00
Palm
f2ceab26d5 ci: only install dependencies listed 2023-02-13 08:44:34 +07:00
Palm
da2d467324 ci: do not override dependency versions on install 2023-02-13 08:41:02 +07:00
semantic-release-bot
1aa056d53f chore(release): 2.162.0-dev.2 [skip ci]
# [2.162.0-dev.2](https://github.com/revanced/revanced-patches/compare/v2.162.0-dev.1...v2.162.0-dev.2) (2023-02-11)

### Bug Fixes

* **youtube/general-ads:** use better description for switch ([95be457](95be457590))
2023-02-11 15:29:54 +00:00
oSumAtrIX
95be457590 fix(youtube/general-ads): use better description for switch
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-11 16:28:10 +01:00
semantic-release-bot
42bd205e30 chore(release): 2.162.0-dev.1 [skip ci]
# [2.162.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.161.1...v2.162.0-dev.1) (2023-02-11)

### Features

* **yuka:** `unlock-premium` patch ([#1608](https://github.com/revanced/revanced-patches/issues/1608)) ([daa7e52](daa7e5270c))
2023-02-11 00:46:53 +00:00
nik2143
daa7e5270c feat(yuka): unlock-premium patch (#1608)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-11 01:44:47 +01:00
semantic-release-bot
9d0e8c18f0 chore(release): 2.161.1 [skip ci]
## [2.161.1](https://github.com/revanced/revanced-patches/compare/v2.161.0...v2.161.1) (2023-02-11)

### Bug Fixes

* **youtube/minimized-playback:** disable when playing shorts ([36bfe60](36bfe60850))
2023-02-11 00:36:39 +00:00
oSumAtrIX
6fef48141c chore: merge branch dev to main (#1607) 2023-02-11 01:34:49 +01:00
semantic-release-bot
7b7a98679b chore(release): 2.161.1-dev.1 [skip ci]
## [2.161.1-dev.1](https://github.com/revanced/revanced-patches/compare/v2.161.0...v2.161.1-dev.1) (2023-02-11)

### Bug Fixes

* **youtube/minimized-playback:** disable when playing shorts ([36bfe60](36bfe60850))
2023-02-11 00:27:37 +00:00
oSumAtrIX
36bfe60850 fix(youtube/minimized-playback): disable when playing shorts
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-11 01:25:50 +01:00
semantic-release-bot
75861fd225 chore(release): 2.161.0 [skip ci]
# [2.161.0](https://github.com/revanced/revanced-patches/compare/v2.160.0...v2.161.0) (2023-02-10)

### Bug Fixes

* **instagram/hide-timeline-ads:** fix compatibility with newer versions ([aeff72d](aeff72d5af))

### Features

* **youtube/general-ads:** hide pill to view products ([3abd5d4](3abd5d46de))
2023-02-10 22:28:02 +00:00
oSumAtrIX
d743d4c3ba chore: merge branch dev to main (#1606) 2023-02-10 23:26:13 +01:00
semantic-release-bot
f975f2dbc5 chore(release): 2.161.0-dev.2 [skip ci]
# [2.161.0-dev.2](https://github.com/revanced/revanced-patches/compare/v2.161.0-dev.1...v2.161.0-dev.2) (2023-02-10)

### Bug Fixes

* **instagram/hide-timeline-ads:** fix compatibility with newer versions ([aeff72d](aeff72d5af))
2023-02-10 22:00:47 +00:00
oSumAtrIX
aeff72d5af fix(instagram/hide-timeline-ads): fix compatibility with newer versions
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-10 22:59:03 +01:00
semantic-release-bot
da39f81887 chore(release): 2.161.0-dev.1 [skip ci]
# [2.161.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.160.0...v2.161.0-dev.1) (2023-02-10)

### Features

* **youtube/general-ads:** hide pill to view products ([3abd5d4](3abd5d46de))
2023-02-10 18:43:24 +00:00
oSumAtrIX
3abd5d46de feat(youtube/general-ads): hide pill to view products
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-10 19:41:22 +01:00
semantic-release-bot
6699cf1a07 chore(release): 2.160.0 [skip ci]
# [2.160.0](https://github.com/revanced/revanced-patches/compare/v2.159.0...v2.160.0) (2023-02-10)

### Features

* **instagram:** `hide-timeline-ads` patch ([499961b](499961ba05))
* **reddit:** `hide-subreddit-banner` patch ([707e615](707e61574f))
* **reddit:** bump patches compatibility to `v2023.05.0` ([3e08ce4](3e08ce4275))
2023-02-10 05:09:26 +00:00
oSumAtrIX
fc92fb20b2 chore: merge branch dev to main (#1600) 2023-02-10 06:06:48 +01:00
semantic-release-bot
085039ed9e chore(release): 2.160.0-dev.2 [skip ci]
# [2.160.0-dev.2](https://github.com/revanced/revanced-patches/compare/v2.160.0-dev.1...v2.160.0-dev.2) (2023-02-10)

### Features

* **reddit:** `hide-subreddit-banner` patch ([707e615](707e61574f))
* **reddit:** bump patches compatibility to `v2023.05.0` ([3e08ce4](3e08ce4275))
2023-02-10 05:06:19 +00:00
KAZI MMT
3e08ce4275 feat(reddit): bump patches compatibility to v2023.05.0 2023-02-10 06:04:39 +01:00
KAZI MMT
707e61574f feat(reddit): hide-subreddit-banner patch 2023-02-10 06:04:39 +01:00
semantic-release-bot
361e010f3c chore(release): 2.160.0-dev.1 [skip ci]
# [2.160.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.159.0...v2.160.0-dev.1) (2023-02-10)

### Features

* **instagram:** `hide-timeline-ads` patch ([499961b](499961ba05))
2023-02-10 04:32:59 +00:00
oSumAtrIX
c5064a4d62 build: bump patcher dependency version
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-10 05:28:35 +01:00
oSumAtrIX
499961ba05 feat(instagram): hide-timeline-ads patch
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-10 05:23:48 +01:00
oSumAtrIX
a11d6fffd7 refactor(youtube/microg-support): internalize Constants object
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-06 23:08:14 +01:00
semantic-release-bot
d33a55d784 chore(release): 2.159.0 [skip ci]
# [2.159.0](https://github.com/revanced/revanced-patches/compare/v2.158.0...v2.159.0) (2023-02-03)

### Bug Fixes

* **youtube/custom-branding:** correct scaling, margin and images ([#1580](https://github.com/revanced/revanced-patches/issues/1580)) ([aefc1f0](aefc1f02a4))

### Features

* `spoof-wifi-connection` patch ([#1527](https://github.com/revanced/revanced-patches/issues/1527)) ([2223b07](2223b07dbe))
* **music:** bump patches compatibility to v5.41.50 ([#1551](https://github.com/revanced/revanced-patches/issues/1551)) ([17b046d](17b046df60))
* **netguard:** `remove-broadcasts-restriction` patch ([#1581](https://github.com/revanced/revanced-patches/issues/1581)) ([6f7e887](6f7e887a69))
* **spotify-lite:** enable on-demand patch ([8d57c55](8d57c555a0))
* **youtube:** `hide-player-buttons` patch ([9804aee](9804aee8d1))
2023-02-03 03:58:20 +00:00
oSumAtrIX
ed9671575b chore: merge branch dev to main (#1582) 2023-02-03 04:56:14 +01:00
semantic-release-bot
af8772fdd6 chore(release): 2.159.0-dev.4 [skip ci]
# [2.159.0-dev.4](https://github.com/revanced/revanced-patches/compare/v2.159.0-dev.3...v2.159.0-dev.4) (2023-02-03)

### Features

* **netguard:** `remove-broadcasts-restriction` patch ([#1581](https://github.com/revanced/revanced-patches/issues/1581)) ([6f7e887](6f7e887a69))
2023-02-03 03:50:26 +00:00
Linus
6f7e887a69 feat(netguard): remove-broadcasts-restriction patch (#1581)
Co-authored-by: Linus789 <Linus789@users.noreply.github.com>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-03 04:48:28 +01:00
oSumAtrIX
005dd099f7 chore(youtube/hide-video-action-buttons): use proper name and description
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-03 04:45:06 +01:00
semantic-release-bot
86738c66a1 chore(release): 2.159.0-dev.3 [skip ci]
# [2.159.0-dev.3](https://github.com/revanced/revanced-patches/compare/v2.159.0-dev.2...v2.159.0-dev.3) (2023-02-03)

### Features

* **youtube:** `hide-player-buttons` patch ([9804aee](9804aee8d1))
2023-02-03 03:42:10 +00:00
oSumAtrIX
9804aee8d1 feat(youtube): hide-player-buttons patch
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-03 04:39:40 +01:00
manatails
f5080e8a51 refactor: remove unnecessary locale-config-fix patch (#1578)
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-01 21:49:10 +01:00
semantic-release-bot
e67d27c4b0 chore(release): 2.159.0-dev.2 [skip ci]
# [2.159.0-dev.2](https://github.com/revanced/revanced-patches/compare/v2.159.0-dev.1...v2.159.0-dev.2) (2023-02-01)

### Features

* `spoof-wifi-connection` patch ([#1527](https://github.com/revanced/revanced-patches/issues/1527)) ([2223b07](2223b07dbe))
2023-02-01 19:54:19 +00:00
Linus
2223b07dbe feat: spoof-wifi-connection patch (#1527)
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: Linus789 <Linus789@users.noreply.github.com>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-01 20:52:41 +01:00
semantic-release-bot
4e3c06684a chore(release): 2.159.0-dev.1 [skip ci]
# [2.159.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.158.0...v2.159.0-dev.1) (2023-02-01)

### Bug Fixes

* **youtube/custom-branding:** correct scaling, margin and images ([#1580](https://github.com/revanced/revanced-patches/issues/1580)) ([aefc1f0](aefc1f02a4))

### Features

* **music:** bump patches compatibility to v5.41.50 ([#1551](https://github.com/revanced/revanced-patches/issues/1551)) ([17b046d](17b046df60))
* **spotify-lite:** enable on-demand patch ([8d57c55](8d57c555a0))
2023-02-01 19:29:44 +00:00
LisoUseInAIKyrios
aefc1f02a4 fix(youtube/custom-branding): correct scaling, margin and images (#1580) 2023-02-01 20:26:32 +01:00
EvadeMaster
762e290658 chore(youtube): word patch descriptions clearly (#1571)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-01 20:24:23 +01:00
EvadeMaster
17b046df60 feat(music): bump patches compatibility to v5.41.50 (#1551)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-01 20:24:12 +01:00
illerokcob
8d57c555a0 feat(spotify-lite): enable on-demand patch 2023-01-30 01:56:12 +01:00
semantic-release-bot
8e4235af16 chore(release): 2.158.0 [skip ci]
# [2.158.0](https://github.com/revanced/revanced-patches/compare/v2.157.0...v2.158.0) (2023-01-29)

### Bug Fixes

* **youtube/microg-support:** replace new permission ([d3bd5f6](d3bd5f65ef))
* **youtube:** resolve duplicate preference keys ([#1550](https://github.com/revanced/revanced-patches/issues/1550)) ([5324d47](5324d471c9))

### Features

* **irplus:** `remove-ads` patch ([#1554](https://github.com/revanced/revanced-patches/issues/1554)) ([86e28ac](86e28acd2f))
2023-01-29 10:01:44 +00:00
oSumAtrIX
b3f9858402 chore: merge branch dev to main (#1559) 2023-01-29 10:59:48 +01:00
github-actions[bot]
bd9c89cdcc chore: merge branch dev to main (#1553)
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
Co-authored-by: illerokcob <113302047+illerokcob@users.noreply.github.com>
2023-01-28 20:07:06 +01:00
semantic-release-bot
963089d866 chore(release): 2.158.0-dev.1 [skip ci]
# [2.158.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.157.1-dev.2...v2.158.0-dev.1) (2023-01-28)

### Features

* **irplus:** `remove-ads` patch ([#1554](https://github.com/revanced/revanced-patches/issues/1554)) ([86e28ac](86e28acd2f))
2023-01-28 19:06:12 +00:00
illerokcob
86e28acd2f feat(irplus): remove-ads patch (#1554)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-28 20:04:29 +01:00
semantic-release-bot
cc86f4ead3 chore(release): 2.157.1-dev.2 [skip ci]
## [2.157.1-dev.2](https://github.com/revanced/revanced-patches/compare/v2.157.1-dev.1...v2.157.1-dev.2) (2023-01-28)

### Bug Fixes

* **youtube:** resolve duplicate preference keys ([#1550](https://github.com/revanced/revanced-patches/issues/1550)) ([5324d47](5324d471c9))
2023-01-28 16:23:20 +00:00
LisoUseInAIKyrios
5324d471c9 fix(youtube): resolve duplicate preference keys (#1550) 2023-01-28 17:21:05 +01:00
semantic-release-bot
8ee531f816 chore(release): 2.157.1-dev.1 [skip ci]
## [2.157.1-dev.1](https://github.com/revanced/revanced-patches/compare/v2.157.0...v2.157.1-dev.1) (2023-01-28)

### Bug Fixes

* **youtube/microg-support:** replace new permission ([d3bd5f6](d3bd5f65ef))
2023-01-28 15:57:22 +00:00
oSumAtrIX
d3bd5f65ef fix(youtube/microg-support): replace new permission
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-28 16:55:21 +01:00
semantic-release-bot
d5fff653d5 chore(release): 2.157.0 [skip ci]
# [2.157.0](https://github.com/revanced/revanced-patches/compare/v2.156.0...v2.157.0) (2023-01-28)

### Bug Fixes

* parse any kind of patch version ([bc06b4d](bc06b4dfda))
* **twitter/hide-views-stats:** constrain to last working version ([#1522](https://github.com/revanced/revanced-patches/issues/1522)) ([068f18c](068f18cd5b))
* **youtube/return-youtube-dislike:** do not fetch voting stats when watching shorts ([#1532](https://github.com/revanced/revanced-patches/issues/1532)) ([dd3a9a4](dd3a9a4f38))
* **youtube/settings:** resolve fingerprints robustly ([3bf8d1d](3bf8d1d3cb))
* **youtube/sponsorblock:** replace missing strings ([69394a6](69394a60b2))
* **youtube:** reliably resolve fingerprints ([57e13cf](57e13cf8a8))

### Features

* **finanzonline:** `remove-bootloader-detection` patch ([c30bf18](c30bf18745))
* **finanzonline:** `remove-root-detection` patch ([1a94209](1a94209bfb))
* **music:** update patches compatibility to v5.40.51 ([#1541](https://github.com/revanced/revanced-patches/issues/1541)) ([225726f](225726feeb))
* **youtube/general-ads:** remove hiding video shelf ([e4fa523](e4fa523b15))
* **youtube/microg-support:** check if Vanced MicroG is running in the background ([#1531](https://github.com/revanced/revanced-patches/issues/1531)) ([c6e0e79](c6e0e79cd5))
* **youtube:** `open-links-externally` patch ([#1524](https://github.com/revanced/revanced-patches/issues/1524)) ([53ab837](53ab837489))
* **youtube:** show toasts along exceptions ([#1511](https://github.com/revanced/revanced-patches/issues/1511)) ([46effd3](46effd337f))
2023-01-28 08:04:57 +00:00
oSumAtrIX
3cf86bd1e9 chore: merge branch dev to main (#1523) 2023-01-28 09:02:34 +01:00
semantic-release-bot
f24a7c3ca9 chore(release): 2.157.0-dev.6 [skip ci]
# [2.157.0-dev.6](https://github.com/revanced/revanced-patches/compare/v2.157.0-dev.5...v2.157.0-dev.6) (2023-01-28)

### Bug Fixes

* **youtube/sponsorblock:** replace missing strings ([69394a6](69394a60b2))
2023-01-28 08:01:36 +00:00
oSumAtrIX
69394a60b2 fix(youtube/sponsorblock): replace missing strings
This partially reverts commit 52287003

Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-28 08:56:07 +01:00
semantic-release-bot
9ff595d5df chore(release): 2.157.0-dev.5 [skip ci]
# [2.157.0-dev.5](https://github.com/revanced/revanced-patches/compare/v2.157.0-dev.4...v2.157.0-dev.5) (2023-01-28)

### Features

* **youtube:** show toasts along exceptions ([#1511](https://github.com/revanced/revanced-patches/issues/1511)) ([46effd3](46effd337f))
2023-01-28 07:40:38 +00:00
LisoUseInAIKyrios
46effd337f feat(youtube): show toasts along exceptions (#1511)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-28 08:38:39 +01:00
semantic-release-bot
06a981a317 chore(release): 2.157.0-dev.4 [skip ci]
# [2.157.0-dev.4](https://github.com/revanced/revanced-patches/compare/v2.157.0-dev.3...v2.157.0-dev.4) (2023-01-28)

### Bug Fixes

* **youtube/return-youtube-dislike:** do not fetch voting stats when watching shorts ([#1532](https://github.com/revanced/revanced-patches/issues/1532)) ([dd3a9a4](dd3a9a4f38))
2023-01-28 07:30:33 +00:00
LisoUseInAIKyrios
dd3a9a4f38 fix(youtube/return-youtube-dislike): do not fetch voting stats when watching shorts (#1532)
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-28 08:28:48 +01:00
oSumAtrIX
5228700317 refactor(youtube/sponsorblock): remove dead code
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-28 08:11:52 +01:00
semantic-release-bot
e68a65c950 chore(release): 2.157.0-dev.3 [skip ci]
# [2.157.0-dev.3](https://github.com/revanced/revanced-patches/compare/v2.157.0-dev.2...v2.157.0-dev.3) (2023-01-28)

### Bug Fixes

* **youtube/settings:** resolve fingerprints robustly ([3bf8d1d](3bf8d1d3cb))
* **youtube:** reliably resolve fingerprints ([57e13cf](57e13cf8a8))

### Features

* **youtube/general-ads:** remove hiding video shelf ([e4fa523](e4fa523b15))
2023-01-28 07:06:55 +00:00
oSumAtrIX
817ad0b9f2 chore(youtube): bump patches compatibility to v18.03.36
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-28 08:00:30 +01:00
oSumAtrIX
57e13cf8a8 fix(youtube): reliably resolve fingerprints
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-28 07:58:58 +01:00
oSumAtrIX
e4fa523b15 feat(youtube/general-ads): remove hiding video shelf
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-28 06:00:36 +01:00
oSumAtrIX
440278be33 refactor(youtube/custom-video-buffer): apply Kotlin idioms
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-28 05:30:44 +01:00
oSumAtrIX
3bf8d1d3cb fix(youtube/settings): resolve fingerprints robustly
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-28 03:55:20 +01:00
semantic-release-bot
246a6ce927 chore(release): 2.157.0-dev.2 [skip ci]
# [2.157.0-dev.2](https://github.com/revanced/revanced-patches/compare/v2.157.0-dev.1...v2.157.0-dev.2) (2023-01-24)

### Features

* **music:** update patches compatibility to v5.40.51 ([#1541](https://github.com/revanced/revanced-patches/issues/1541)) ([225726f](225726feeb))
2023-01-24 12:32:28 +00:00
FineFindus
225726feeb feat(music): update patches compatibility to v5.40.51 (#1541) 2023-01-24 13:30:23 +01:00
oSumAtrIX
f0b384bbfe refactor: move classes to correct places and fix their access
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-23 02:30:43 +01:00
semantic-release-bot
160191b5cb chore(release): 2.157.0-dev.1 [skip ci]
# [2.157.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.156.0...v2.157.0-dev.1) (2023-01-23)

### Bug Fixes

* parse any kind of patch version ([bc06b4d](bc06b4dfda))
* **twitter/hide-views-stats:** constrain to last working version ([#1522](https://github.com/revanced/revanced-patches/issues/1522)) ([068f18c](068f18cd5b))

### Features

* **finanzonline:** `remove-bootloader-detection` patch ([c30bf18](c30bf18745))
* **finanzonline:** `remove-root-detection` patch ([1a94209](1a94209bfb))
* **youtube/microg-support:** check if Vanced MicroG is running in the background ([#1531](https://github.com/revanced/revanced-patches/issues/1531)) ([c6e0e79](c6e0e79cd5))
* **youtube:** `open-links-externally` patch ([#1524](https://github.com/revanced/revanced-patches/issues/1524)) ([53ab837](53ab837489))
2023-01-23 01:28:58 +00:00
oSumAtrIX
bc06b4dfda fix: parse any kind of patch version
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-23 02:26:12 +01:00
reis
c6e0e79cd5 feat(youtube/microg-support): check if Vanced MicroG is running in the background (#1531)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-22 17:28:46 +01:00
johnconner122
53ab837489 feat(youtube): open-links-externally patch (#1524)
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-22 15:43:55 +01:00
oSumAtrIX
1a94209bfb feat(finanzonline): remove-root-detection patch
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-21 05:52:50 +01:00
1fexd
c30bf18745 feat(finanzonline): remove-bootloader-detection patch
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-21 05:52:50 +01:00
LisoUseInAIKyrios
068f18cd5b fix(twitter/hide-views-stats): constrain to last working version (#1522) 2023-01-19 20:53:10 +01:00
semantic-release-bot
06105f4c87 chore(release): 2.156.0 [skip ci]
# [2.156.0](https://github.com/revanced/revanced-patches/compare/v2.155.0...v2.156.0) (2023-01-17)

### Bug Fixes

* **reddit/general-reddit-ads:** specify last version that works correctly ([#1495](https://github.com/revanced/revanced-patches/issues/1495)) ([1f1519c](1f1519ca33))

### Features

* explain how to capture crash logs [skip ci] ([68f941d](68f941deda))
* **id-austria:** `remove-root-detection` patch ([b888eaf](b888eafce1))
* **id-austria:** `spoof-signature` patch ([df3316b](df3316b804))
* **nova-launcher:** `unlock-prime` patch ([#1463](https://github.com/revanced/revanced-patches/issues/1463)) ([939c084](939c084e31))
2023-01-17 23:41:30 +00:00
oSumAtrIX
5359965a0b chore: merge branch dev to main (#1496) 2023-01-18 00:38:58 +01:00
semantic-release-bot
3881fda3f4 chore(release): 2.156.0-dev.1 [skip ci]
# [2.156.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.155.1-dev.1...v2.156.0-dev.1) (2023-01-17)

### Features

* explain how to capture crash logs [skip ci] ([68f941d](68f941deda))
* **id-austria:** `remove-root-detection` patch ([b888eaf](b888eafce1))
* **id-austria:** `spoof-signature` patch ([df3316b](df3316b804))
* **nova-launcher:** `unlock-prime` patch ([#1463](https://github.com/revanced/revanced-patches/issues/1463)) ([939c084](939c084e31))
2023-01-17 23:37:40 +00:00
oSumAtrIX
cc43f356b5 build: update dependencies
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-18 00:34:55 +01:00
illerokcob
939c084e31 feat(nova-launcher): unlock-prime patch (#1463)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-17 22:50:04 +01:00
1fexd
b888eafce1 feat(id-austria): remove-root-detection patch
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-17 22:44:19 +01:00
1fexd
df3316b804 feat(id-austria): spoof-signature patch 2023-01-17 22:44:19 +01:00
oSumAtrIX
68f941deda feat: explain how to capture crash logs [skip ci] 2023-01-16 17:34:13 +01:00
semantic-release-bot
0b18ed8f7f chore(release): 2.155.1-dev.1 [skip ci]
## [2.155.1-dev.1](https://github.com/revanced/revanced-patches/compare/v2.155.0...v2.155.1-dev.1) (2023-01-15)

### Bug Fixes

* **reddit/general-reddit-ads:** specify last version that works correctly ([#1495](https://github.com/revanced/revanced-patches/issues/1495)) ([1f1519c](1f1519ca33))
2023-01-15 14:01:12 +00:00
LisoUseInAIKyrios
1f1519ca33 fix(reddit/general-reddit-ads): specify last version that works correctly (#1495) 2023-01-15 14:59:27 +01:00
semantic-release-bot
6bc5025e1f chore(release): 2.155.0 [skip ci]
# [2.155.0](https://github.com/revanced/revanced-patches/compare/v2.154.0...v2.155.0) (2023-01-15)

### Bug Fixes

* bump patcher dependency version ([9c3a8aa](9c3a8aad83))
* **youtube/open-links-directly:** use better titles and correct descriptions ([#1488](https://github.com/revanced/revanced-patches/issues/1488)) ([34c1b4a](34c1b4a871))

### Features

* **youtube:** remove `fix-playback` patch ([474cc4d](474cc4d5e6))
2023-01-15 05:19:12 +00:00
oSumAtrIX
94f7897a34 chore: merge branch dev to main (#1492) 2023-01-15 06:16:42 +01:00
oSumAtrIX
9c3a8aad83 fix: bump patcher dependency version
This commit addresses https://github.com/revanced/multidexlib2/issues/2.
2023-01-15 05:34:51 +01:00
semantic-release-bot
44451c9b95 chore(release): 2.155.0-dev.1 [skip ci]
# [2.155.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.154.1-dev.1...v2.155.0-dev.1) (2023-01-15)

### Features

* **youtube:** remove `fix-playback` patch ([474cc4d](474cc4d5e6))
2023-01-15 04:26:36 +00:00
oSumAtrIX
474cc4d5e6 feat(youtube): remove fix-playback patch 2023-01-15 05:24:15 +01:00
semantic-release-bot
d492ff23af chore(release): 2.154.1-dev.1 [skip ci]
## [2.154.1-dev.1](https://github.com/revanced/revanced-patches/compare/v2.154.0...v2.154.1-dev.1) (2023-01-15)

### Bug Fixes

* **youtube/open-links-directly:** use better titles and correct descriptions ([#1488](https://github.com/revanced/revanced-patches/issues/1488)) ([34c1b4a](34c1b4a871))
2023-01-15 02:59:27 +00:00
johnconner122
34c1b4a871 fix(youtube/open-links-directly): use better titles and correct descriptions (#1488) 2023-01-15 03:57:42 +01:00
semantic-release-bot
e6360285eb chore(release): 2.154.0 [skip ci]
# [2.154.0](https://github.com/revanced/revanced-patches/compare/v2.153.0...v2.154.0) (2023-01-13)

### Bug Fixes

* **youtube/hide-info-cards:** allow toggling visibility of info-cards ([#1464](https://github.com/revanced/revanced-patches/issues/1464)) ([3789a20](3789a205cb))

### Features

* `remove-screenshot-restriction` patch ([#1455](https://github.com/revanced/revanced-patches/issues/1455)) ([efe814f](efe814f2e1))
* **music:** update patches compatibility to v5.38.53 ([#1453](https://github.com/revanced/revanced-patches/issues/1453)) ([e13db69](e13db6934f))
* **music:** update patches compatibility to v5.39.52 ([#1484](https://github.com/revanced/revanced-patches/issues/1484)) ([772d3ae](772d3ae073))
* **tiktok:** update patches compatibility to v27.8.3 ([#1483](https://github.com/revanced/revanced-patches/issues/1483)) ([1e728b4](1e728b4ecf))
* **youtube/return-youtube-dislike:** style for minimum width ([#1454](https://github.com/revanced/revanced-patches/issues/1454)) ([e4cc17e](e4cc17e6ef))
* **youtube:** `spoof-app-version` patch ([#1449](https://github.com/revanced/revanced-patches/issues/1449)) ([b57eee8](b57eee8582))
2023-01-13 21:28:57 +00:00
oSumAtrIX
7814ce9a5d chore: merge branch dev to main (#1486) 2023-01-13 22:26:23 +01:00
oSumAtrIX
9013eea406 ci: use PAT in step Release 2023-01-13 22:25:48 +01:00
oSumAtrIX
5240e749e1 chore: merge branch dev to main (#1452) 2023-01-13 16:03:22 +01:00
semantic-release-bot
0310fa434c chore(release): 2.154.0-dev.3 [skip ci]
# [2.154.0-dev.3](https://github.com/revanced/revanced-patches/compare/v2.154.0-dev.2...v2.154.0-dev.3) (2023-01-13)

### Features

* **tiktok:** update patches compatibility to v27.8.3 ([#1483](https://github.com/revanced/revanced-patches/issues/1483)) ([1e728b4](1e728b4ecf))
2023-01-13 15:02:40 +00:00
d4rkk3y
1e728b4ecf feat(tiktok): update patches compatibility to v27.8.3 (#1483) 2023-01-13 16:00:45 +01:00
semantic-release-bot
b285183554 chore(release): 2.154.0-dev.2 [skip ci]
# [2.154.0-dev.2](https://github.com/revanced/revanced-patches/compare/v2.154.0-dev.1...v2.154.0-dev.2) (2023-01-13)

### Features

* **music:** update patches compatibility to v5.39.52 ([#1484](https://github.com/revanced/revanced-patches/issues/1484)) ([772d3ae](772d3ae073))
2023-01-13 14:45:02 +00:00
FineFindus
772d3ae073 feat(music): update patches compatibility to v5.39.52 (#1484) 2023-01-13 15:43:06 +01:00
oSumAtrIX
b7390de6bf refactor: fix formatting 2023-01-13 14:41:37 +01:00
oSumAtrIX
8ac6ab6a9c ci: give jobs names 2023-01-13 14:41:17 +01:00
Titoot
67bf5a0d16 chore: fix typo in comment (#1472) 2023-01-11 13:31:46 +01:00
oSumAtrIX
4ce31eedd7 ci: bypass push permission on protected branches with owner PAT
RE: https://github.com/semantic-release/github/issues/175#issuecomment-484964034
2023-01-10 21:53:34 +01:00
semantic-release-bot
270916bb43 chore(release): 2.154.0-dev.1 [skip ci]
# [2.154.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.153.0...v2.154.0-dev.1) (2023-01-10)

### Bug Fixes

* **youtube/hide-info-cards:** allow toggling visibility of info-cards ([#1464](https://github.com/revanced/revanced-patches/issues/1464)) ([3789a20](3789a205cb))

### Features

* `remove-screenshot-restriction` patch ([#1455](https://github.com/revanced/revanced-patches/issues/1455)) ([efe814f](efe814f2e1))
* **music:** update patches compatibility to v5.38.53 ([#1453](https://github.com/revanced/revanced-patches/issues/1453)) ([e13db69](e13db6934f))
* **youtube/return-youtube-dislike:** style for minimum width ([#1454](https://github.com/revanced/revanced-patches/issues/1454)) ([e4cc17e](e4cc17e6ef))
* **youtube:** `spoof-app-version` patch ([#1449](https://github.com/revanced/revanced-patches/issues/1449)) ([b57eee8](b57eee8582))
2023-01-10 20:10:36 +00:00
oSumAtrIX
3944521a01 ci: downgrade semantic release and plugins to v19 (#1467) 2023-01-10 21:08:42 +01:00
LisoUseInAIKyrios
b57eee8582 feat(youtube): spoof-app-version patch (#1449)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-10 19:27:53 +01:00
LisoUseInAIKyrios
e4cc17e6ef feat(youtube/return-youtube-dislike): style for minimum width (#1454) 2023-01-10 19:01:29 +01:00
LisoUseInAIKyrios
3789a205cb fix(youtube/hide-info-cards): allow toggling visibility of info-cards (#1464) 2023-01-10 10:53:57 +01:00
Linus
efe814f2e1 feat: remove-screenshot-restriction patch (#1455)
Co-authored-by: Linus789 <Linus789@users.noreply.github.com>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-08 22:23:54 +01:00
FineFindus
e13db6934f feat(music): update patches compatibility to v5.38.53 (#1453) 2023-01-08 16:42:46 +01:00
LisoUseInAIKyrios
7e8c544d42 fix:(youtube/return-youtube-dislike): always modify span content of the like button (#1448) 2023-01-08 08:14:40 +01:00
semantic-release-bot
8a3c0e1bcb chore(release): 2.153.0 [skip ci]
# [2.153.0](https://github.com/revanced/revanced-patches/compare/v2.152.0...v2.153.0) (2023-01-07)

### Bug Fixes

* **youtube/general-ads:** move settings to correct preference screens ([b885bf8](b885bf82cd))

### Features

* **youtube/remember-video-quality:** simplify settings switch state description ([6b35ffc](6b35ffc5b8))
* **youtube:** `remember-playback-rate` patch ([f0b0017](f0b0017ff1))
2023-01-07 08:50:06 +00:00
oSumAtrIX
ce0158db3a chore: merge branch dev to main (#1441) 2023-01-07 09:47:33 +01:00
semantic-release-bot
2c8550c7e7 chore(release): 2.153.0-dev.1 [skip ci]
# [2.153.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.152.1-dev.1...v2.153.0-dev.1) (2023-01-07)

### Features

* **youtube/remember-video-quality:** simplify settings switch state description ([6b35ffc](6b35ffc5b8))
* **youtube:** `remember-playback-rate` patch ([f0b0017](f0b0017ff1))
2023-01-07 08:45:47 +00:00
oSumAtrIX
6b35ffc5b8 feat(youtube/remember-video-quality): simplify settings switch state description 2023-01-07 09:43:56 +01:00
oSumAtrIX
f0b0017ff1 feat(youtube): remember-playback-rate patch 2023-01-07 09:43:56 +01:00
semantic-release-bot
a3e7ee6454 chore(release): 2.152.1-dev.1 [skip ci]
## [2.152.1-dev.1](https://github.com/revanced/revanced-patches/compare/v2.152.0...v2.152.1-dev.1) (2023-01-07)

### Bug Fixes

* **youtube/general-ads:** move settings to correct preference screens ([b885bf8](b885bf82cd))
2023-01-07 03:05:12 +00:00
oSumAtrIX
b885bf82cd fix(youtube/general-ads): move settings to correct preference screens 2023-01-07 04:03:14 +01:00
semantic-release-bot
09ea24938c chore(release): 2.152.0 [skip ci]
# [2.152.0](https://github.com/revanced/revanced-patches/compare/v2.151.0...v2.152.0) (2023-01-04)

### Features

* **youtube/copy-video-url:** match icon style with native icon ([#1419](https://github.com/revanced/revanced-patches/issues/1419)) ([62a8ac4](62a8ac4f9b))
2023-01-04 15:51:55 +00:00
oSumAtrIX
58994b14f8 chore: merge branch dev to main (#1420) 2023-01-04 16:50:04 +01:00
semantic-release-bot
370067266c chore(release): 2.152.0-dev.1 [skip ci]
# [2.152.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.151.0...v2.152.0-dev.1) (2023-01-02)

### Features

* **youtube/copy-video-url:** match icon style with native icon ([#1419](https://github.com/revanced/revanced-patches/issues/1419)) ([62a8ac4](62a8ac4f9b))
2023-01-02 18:45:45 +00:00
KAZI MMT
62a8ac4f9b feat(youtube/copy-video-url): match icon style with native icon (#1419)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-02 19:43:35 +01:00
oSumAtrIX
4d74458023 chore: merge branch dev to main (#1416) 2023-01-02 09:14:53 +01:00
oSumAtrIX
37cfb6900c build: bump patcher dependency version (#1415) 2023-01-02 09:11:16 +01:00
semantic-release-bot
c0bc6fe658 chore(release): 2.151.0 [skip ci]
# [2.151.0](https://github.com/revanced/revanced-patches/compare/v2.150.0...v2.151.0) (2022-12-31)

### Bug Fixes

* **youtube/general-ads:** restore swipe back to exit gesture ([#1405](https://github.com/revanced/revanced-patches/issues/1405)) ([47dce0d](47dce0d01e))

### Features

* **youtube:** `copy-video-url` patch ([#1402](https://github.com/revanced/revanced-patches/issues/1402)) ([b777d2e](b777d2e230))
2022-12-31 20:22:21 +00:00
oSumAtrIX
ec64b8d1ff chore: merge branch dev to main (#1409) 2022-12-31 21:20:25 +01:00
semantic-release-bot
a52a692062 chore(release): 2.151.0-dev.1 [skip ci]
# [2.151.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.150.0...v2.151.0-dev.1) (2022-12-31)

### Bug Fixes

* **youtube/general-ads:** restore swipe back to exit gesture ([#1405](https://github.com/revanced/revanced-patches/issues/1405)) ([47dce0d](47dce0d01e))

### Features

* **youtube:** `copy-video-url` patch ([#1402](https://github.com/revanced/revanced-patches/issues/1402)) ([b777d2e](b777d2e230))
2022-12-31 20:16:54 +00:00
oSumAtrIX
c372d7823c build: do not comment on successful releases 2022-12-31 21:14:58 +01:00
0xrxL
47dce0d01e fix(youtube/general-ads): restore swipe back to exit gesture (#1405)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2022-12-31 21:14:58 +01:00
aliernfrog
b777d2e230 feat(youtube): copy-video-url patch (#1402) 2022-12-31 21:13:47 +01:00
semantic-release-bot
c98baf93fc chore(release): 2.150.0 [skip ci]
# [2.150.0](https://github.com/revanced/revanced-patches/compare/v2.149.0...v2.150.0) (2022-12-31)

### Bug Fixes

* **youtube/bottom-controls-resource-patch:** use correct length for `nameSpaceLength` ([#1401](https://github.com/revanced/revanced-patches/issues/1401)) ([7966be8](7966be827f))
* **youtube/general-ads:** resolve fingerprint to correct method ([#1404](https://github.com/revanced/revanced-patches/issues/1404)) ([50e210d](50e210d94f))

### Features

* **youtube/return-youtube-dislike:** better formatting and LTR support  ([#1370](https://github.com/revanced/revanced-patches/issues/1370)) ([e8391b3](e8391b3e93))
2022-12-31 06:42:46 +00:00
oSumAtrIX
4e4b0ecb0d chore: merge branch dev to main (#1403) 2022-12-31 07:41:02 +01:00
LisoUseInAIKyrios
e8391b3e93 feat(youtube/return-youtube-dislike): better formatting and LTR support (#1370) 2022-12-31 07:39:37 +01:00
semantic-release-bot
1db7eebeaa chore(release): 2.149.1-dev.2 [skip ci]
## [2.149.1-dev.2](https://github.com/revanced/revanced-patches/compare/v2.149.1-dev.1...v2.149.1-dev.2) (2022-12-31)

### Bug Fixes

* **youtube/general-ads:** resolve fingerprint to correct method ([#1404](https://github.com/revanced/revanced-patches/issues/1404)) ([50e210d](50e210d94f))
2022-12-31 02:50:40 +00:00
0xrxL
50e210d94f fix(youtube/general-ads): resolve fingerprint to correct method (#1404) 2022-12-31 03:48:57 +01:00
semantic-release-bot
ad6fab930d chore(release): 2.149.1-dev.1 [skip ci]
## [2.149.1-dev.1](https://github.com/revanced/revanced-patches/compare/v2.149.0...v2.149.1-dev.1) (2022-12-30)

### Bug Fixes

* **youtube/bottom-controls-resource-patch:** use correct length for `nameSpaceLength` ([#1401](https://github.com/revanced/revanced-patches/issues/1401)) ([7966be8](7966be827f))
2022-12-30 21:11:17 +00:00
aliernfrog
7966be827f fix(youtube/bottom-controls-resource-patch): use correct length for nameSpaceLength (#1401) 2022-12-30 22:09:29 +01:00
semantic-release-bot
6a6f05e2cb chore(release): 2.149.0 [skip ci]
# [2.149.0](https://github.com/revanced/revanced-patches/compare/v2.148.0...v2.149.0) (2022-12-30)

### Bug Fixes

* **tasker/unlock-license:** resolve fingerprint correctly ([9158fd5](9158fd5054))

### Features

* **youtube/general-ads-patch:** hide channel member shelf ([#1380](https://github.com/revanced/revanced-patches/issues/1380)) ([6441b03](6441b031e3))
2022-12-30 04:22:43 +00:00
oSumAtrIX
752b12b66d chore: merge branch dev to main (#1391) 2022-12-30 05:20:53 +01:00
semantic-release-bot
623a9bce98 chore(release): 2.149.0-dev.1 [skip ci]
# [2.149.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.148.0...v2.149.0-dev.1) (2022-12-30)

### Bug Fixes

* **tasker/unlock-license:** resolve fingerprint correctly ([9158fd5](9158fd5054))

### Features

* **youtube/general-ads-patch:** hide channel member shelf ([#1380](https://github.com/revanced/revanced-patches/issues/1380)) ([6441b03](6441b031e3))
2022-12-30 04:18:42 +00:00
0xrxL
6441b031e3 feat(youtube/general-ads-patch): hide channel member shelf (#1380)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2022-12-30 05:16:28 +01:00
oSumAtrIX
4227ffa40f refactor(tasker/unlock-trial): rename patch to unlock-trial 2022-12-30 05:14:30 +01:00
oSumAtrIX
9158fd5054 fix(tasker/unlock-license): resolve fingerprint correctly 2022-12-30 05:13:28 +01:00
oSumAtrIX
7f529d1038 ci: do not escape in environment variable MESSAGE 2022-12-29 19:07:32 +01:00
semantic-release-bot
bb38c02b51 chore(release): 2.148.0 [skip ci]
# [2.148.0](https://github.com/revanced/revanced-patches/compare/v2.147.0...v2.148.0) (2022-12-29)

### Bug Fixes

* **youtube/general-ads:** don't early return when not necessary ([#1353](https://github.com/revanced/revanced-patches/issues/1353)) ([3227d66](3227d66dc2))

### Features

* **tasker:** `unlock-license` patch ([#1339](https://github.com/revanced/revanced-patches/issues/1339)) ([e60173a](e60173addf))
* **twitter:** `hide-views-stats` patch ([#1371](https://github.com/revanced/revanced-patches/issues/1371)) ([63f5af5](63f5af5c3b))
* **youtube/general-ads-patch:** hide guidelines for subscriber ([#1352](https://github.com/revanced/revanced-patches/issues/1352)) ([adc2f73](adc2f738c0))
* **youtube/theme:** add option to color the seekbar ([2374af6](2374af6f82))
* **youtube/theme:** include the patch by default ([4da3e4f](4da3e4f369))
* **youtube:** `hide-breaking-news-shelf` patch ([#1381](https://github.com/revanced/revanced-patches/issues/1381)) ([7e3184b](7e3184b5f7))
2022-12-29 18:01:13 +00:00
oSumAtrIX
b927e8b93f chore: merge branch dev to main (#1389) 2022-12-29 18:59:20 +01:00
semantic-release-bot
ba4676d500 chore(release): 2.148.0-dev.6 [skip ci]
# [2.148.0-dev.6](https://github.com/revanced/revanced-patches/compare/v2.148.0-dev.5...v2.148.0-dev.6) (2022-12-29)

### Features

* **youtube/theme:** add option to color the seekbar ([2374af6](2374af6f82))
* **youtube/theme:** include the patch by default ([4da3e4f](4da3e4f369))
2022-12-29 17:42:40 +00:00
oSumAtrIX
1af1bf8342 refactor(youtube/theme): apply default formatting 2022-12-29 18:40:28 +01:00
oSumAtrIX
2374af6f82 feat(youtube/theme): add option to color the seekbar 2022-12-29 18:39:54 +01:00
oSumAtrIX
4da3e4f369 feat(youtube/theme): include the patch by default 2022-12-29 18:22:25 +01:00
semantic-release-bot
f89027609f chore(release): 2.148.0-dev.5 [skip ci]
# [2.148.0-dev.5](https://github.com/revanced/revanced-patches/compare/v2.148.0-dev.4...v2.148.0-dev.5) (2022-12-29)

### Features

* **youtube:** `hide-breaking-news-shelf` patch ([#1381](https://github.com/revanced/revanced-patches/issues/1381)) ([7e3184b](7e3184b5f7))
2022-12-29 16:44:25 +00:00
0xrxL
7e3184b5f7 feat(youtube): hide-breaking-news-shelf patch (#1381)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2022-12-29 17:42:33 +01:00
semantic-release-bot
49cca5a258 chore(release): 2.148.0-dev.4 [skip ci]
# [2.148.0-dev.4](https://github.com/revanced/revanced-patches/compare/v2.148.0-dev.3...v2.148.0-dev.4) (2022-12-29)

### Features

* **twitter:** `hide-views-stats` patch ([#1371](https://github.com/revanced/revanced-patches/issues/1371)) ([63f5af5](63f5af5c3b))
2022-12-29 02:11:55 +00:00
Franck V
63f5af5c3b feat(twitter): hide-views-stats patch (#1371)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2022-12-29 03:10:04 +01:00
semantic-release-bot
82df77460f chore(release): 2.148.0-dev.3 [skip ci]
# [2.148.0-dev.3](https://github.com/revanced/revanced-patches/compare/v2.148.0-dev.2...v2.148.0-dev.3) (2022-12-26)

### Bug Fixes

* **youtube/general-ads:** don't early return when not necessary ([#1353](https://github.com/revanced/revanced-patches/issues/1353)) ([3227d66](3227d66dc2))
2022-12-26 17:35:06 +00:00
0xrxL
3227d66dc2 fix(youtube/general-ads): don't early return when not necessary (#1353) 2022-12-26 18:33:18 +01:00
semantic-release-bot
62102c9543 chore(release): 2.148.0-dev.2 [skip ci]
# [2.148.0-dev.2](https://github.com/revanced/revanced-patches/compare/v2.148.0-dev.1...v2.148.0-dev.2) (2022-12-26)

### Features

* **youtube/general-ads-patch:** hide guidelines for subscriber ([#1352](https://github.com/revanced/revanced-patches/issues/1352)) ([adc2f73](adc2f738c0))
2022-12-26 17:30:22 +00:00
0xrxL
adc2f738c0 feat(youtube/general-ads-patch): hide guidelines for subscriber (#1352) 2022-12-26 18:28:10 +01:00
semantic-release-bot
a3b3b613e2 chore(release): 2.148.0-dev.1 [skip ci]
# [2.148.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.147.0...v2.148.0-dev.1) (2022-12-21)

### Features

* **tasker:** `unlock-license` patch ([#1339](https://github.com/revanced/revanced-patches/issues/1339)) ([e60173a](e60173addf))
2022-12-21 23:39:59 +00:00
oSumAtrIX
e60173addf feat(tasker): unlock-license patch (#1339) 2022-12-22 00:38:16 +01:00
semantic-release-bot
be80837218 chore(release): 2.147.0 [skip ci]
# [2.147.0](https://github.com/revanced/revanced-patches/compare/v2.146.0...v2.147.0) (2022-12-21)

### Features

* **youtube/return-youtube-dislike:** debug connection statistics, toast on error, high priority background threads ([#1320](https://github.com/revanced/revanced-patches/issues/1320)) ([7f1f317](7f1f317c08))
2022-12-21 21:36:07 +00:00
oSumAtrIX
528cbfc171 chore: merge branch dev to main (#1338) 2022-12-21 22:34:32 +01:00
semantic-release-bot
dc055a0b20 chore(release): 2.147.0-dev.1 [skip ci]
# [2.147.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.146.0...v2.147.0-dev.1) (2022-12-21)

### Features

* **youtube/return-youtube-dislike:** debug connection statistics, toast on error, high priority background threads ([#1320](https://github.com/revanced/revanced-patches/issues/1320)) ([7f1f317](7f1f317c08))
2022-12-21 21:21:16 +00:00
LisoUseInAIKyrios
7f1f317c08 feat(youtube/return-youtube-dislike): debug connection statistics, toast on error, high priority background threads (#1320) 2022-12-21 22:19:19 +01:00
0xrxL
b18256a2a2 refactor(youtube/theme): remove unnecessary attributes (#1303) 2022-12-18 23:26:10 +01:00
oSumAtrIX
a3ece1e154 ci: stash before rebasing 2022-12-18 23:25:20 +01:00
semantic-release-bot
5ead461caf chore(release): 2.146.0 [skip ci]
# [2.146.0](https://github.com/revanced/revanced-patches/compare/v2.145.0...v2.146.0) (2022-12-18)

### Features

* **predictive-back-gesture:** exclude by default ([e67f18b](e67f18b9c2))
* **twitter/timeline-ads:** add clarifying notice to description ([89215d6](89215d6513))
* **youtube:** bump patches compatibility to v17.49.37 ([6e08309](6e0830929c))
2022-12-18 21:33:25 +00:00
oSumAtrIX
66c582795e chore: merge branch dev to main (#1300) 2022-12-18 22:30:27 +01:00
semantic-release-bot
c3641d90dd chore(release): 2.146.0-dev.1 [skip ci]
# [2.146.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.145.0...v2.146.0-dev.1) (2022-12-18)

### Features

* **predictive-back-gesture:** exclude by default ([e67f18b](e67f18b9c2))
* **twitter/timeline-ads:** add clarifying notice to description ([89215d6](89215d6513))
* **youtube:** bump patches compatibility to v17.49.37 ([6e08309](6e0830929c))
2022-12-18 21:29:55 +00:00
oSumAtrIX
da108ca9bb chore: bump patcher dependency version 2022-12-18 22:28:07 +01:00
oSumAtrIX
96d88ae0fb chore(youtube): remove compatibility for v17.45.36 in favour of v17.49.37 2022-12-18 22:28:06 +01:00
oSumAtrIX
6e0830929c feat(youtube): bump patches compatibility to v17.49.37 2022-12-18 22:28:06 +01:00
oSumAtrIX
e67f18b9c2 feat(predictive-back-gesture): exclude by default 2022-12-18 22:28:06 +01:00
Palm
b2b1108c47 ci: fix invalid syntax in .releaserc 2022-12-18 22:28:05 +01:00
oSumAtrIX
89215d6513 feat(twitter/timeline-ads): add clarifying notice to description 2022-12-18 22:26:33 +01:00
semantic-release-bot
ce4d144910 chore(release): 2.145.0 [skip ci]
# [2.145.0](https://github.com/revanced/revanced-patches/compare/v2.144.0...v2.145.0) (2022-12-18)

### Bug Fixes

* **tiktok/settings:** make compatible with newer versions ([c90069f](c90069f9c5))

### Features

* **crunchyroll:** remove `enable-downloads` patch ([df2a051](df2a051724))
* **youtube-music:** bump compatibility to 5.36.51 ([6831b3c](6831b3ce25))
2022-12-18 01:46:16 +00:00
oSumAtrIX
dbd2f5b7da chore: merge branch dev to main (#1286) 2022-12-18 02:44:33 +01:00
semantic-release-bot
ed7b86072c chore(release): 2.145.0-dev.1 [skip ci]
# [2.145.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.144.0...v2.145.0-dev.1) (2022-12-18)

### Bug Fixes

* **tiktok/settings:** make compatible with newer versions ([c90069f](c90069f9c5))

### Features

* **crunchyroll:** remove `enable-downloads` patch ([df2a051](df2a051724))
* **youtube-music:** bump compatibility to 5.36.51 ([6831b3c](6831b3ce25))
2022-12-18 01:42:41 +00:00
oSumAtrIX
c90069f9c5 fix(tiktok/settings): make compatible with newer versions 2022-12-18 02:39:54 +01:00
oSumAtrIX
df2a051724 feat(crunchyroll): remove enable-downloads patch 2022-12-18 02:39:54 +01:00
FineFindus
6831b3ce25 feat(youtube-music): bump compatibility to 5.36.51 2022-12-18 02:39:28 +01:00
oSumAtrIX
c201f6dc2c chore: merge branch dev to main (#1276) 2022-12-15 23:43:43 +01:00
oSumAtrIX
9849df5814 ci: clean after running task generateMeta 2022-12-15 23:40:39 +01:00
semantic-release-bot
677fd639b7 chore(release): 2.144.0 [skip ci]
# [2.144.0](https://github.com/revanced/revanced-patches/compare/v2.143.0...v2.144.0) (2022-12-15)

### Features

* **citra:** add compatibility for canary package ([#1256](https://github.com/revanced/revanced-patches/issues/1256)) ([76b6c15](76b6c1561a))
* link packages to Google PlayStore ([#1272](https://github.com/revanced/revanced-patches/issues/1272)) ([2ef3625](2ef3625cac))
2022-12-15 20:56:43 +00:00
oSumAtrIX
63b63a394d chore: merge branch dev to main (#1268) 2022-12-15 21:53:26 +01:00
oSumAtrIX
936780038b ci: do not release on build commit type 2022-12-15 19:47:31 +01:00
semantic-release-bot
6c4c834587 chore(release): 2.144.0-dev.2 [skip ci]
# [2.144.0-dev.2](https://github.com/revanced/revanced-patches/compare/v2.144.0-dev.1...v2.144.0-dev.2) (2022-12-15)

### Features

* link packages to Google PlayStore ([#1272](https://github.com/revanced/revanced-patches/issues/1272)) ([2ef3625](2ef3625cac))
2022-12-15 14:08:49 +00:00
afn
2ef3625cac feat: link packages to Google PlayStore (#1272) 2022-12-15 15:06:55 +01:00
semantic-release-bot
10107919bd chore(release): 2.144.0-dev.1 [skip ci]
# [2.144.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.143.0...v2.144.0-dev.1) (2022-12-15)

### Features

* **citra:** add compatibility for canary package ([#1256](https://github.com/revanced/revanced-patches/issues/1256)) ([76b6c15](76b6c1561a))
2022-12-15 00:21:41 +00:00
FineFindus
76b6c1561a feat(citra): add compatibility for canary package (#1256) 2022-12-15 01:15:08 +01:00
semantic-release-bot
73023cd45e chore(release): 2.143.0 [skip ci]
# [2.143.0](https://github.com/revanced/revanced-patches/compare/v2.142.0...v2.143.0) (2022-12-14)

### Bug Fixes

* **predictive-back-gesture:** create attribute, if it does not exist ([e6e5864](e6e5864450))

### Features

* **sleepasandroid:** remove `unlock-premium` patch ([#1253](https://github.com/revanced/revanced-patches/issues/1253)) ([9432211](943221173e))
2022-12-14 00:06:53 +00:00
oSumAtrIX
456c6ce2bf chore: merge branch dev to main (#1254)
chore: merge branch `dev` to `main`
2022-12-14 01:04:17 +01:00
semantic-release-bot
d32782962f chore(release): 2.143.0-dev.2 [skip ci]
# [2.143.0-dev.2](https://github.com/revanced/revanced-patches/compare/v2.143.0-dev.1...v2.143.0-dev.2) (2022-12-14)

### Bug Fixes

* **predictive-back-gesture:** create attribute, if it does not exist ([e6e5864](e6e5864450))
2022-12-14 00:01:51 +00:00
oSumAtrIX
0fe7cacb31 ci: only back-merge from main branch to dev 2022-12-14 00:59:12 +01:00
oSumAtrIX
e6e5864450 fix(predictive-back-gesture): create attribute, if it does not exist 2022-12-14 00:47:03 +01:00
semantic-release-bot
a767f77b72 chore(release): 2.143.0-dev.1 [skip ci]
# [2.143.0-dev.1](https://github.com/revanced/revanced-patches/compare/v2.142.0...v2.143.0-dev.1) (2022-12-13)

### Features

* **sleepasandroid:** remove `unlock-premium` patch ([#1253](https://github.com/revanced/revanced-patches/issues/1253)) ([9432211](943221173e))
2022-12-13 23:31:44 +00:00
oSumAtrIX
3dc88e2578 ci: back-merge releases back into dev branch 2022-12-14 00:28:02 +01:00
oSumAtrIX
2df07cad36 chore: bump patcher dependency version 2022-12-14 00:25:33 +01:00
Jiří Richter
943221173e feat(sleepasandroid): remove unlock-premium patch (#1253) 2022-12-14 00:25:17 +01:00
semantic-release-bot
6ff3f3c974 chore(release): 2.142.0 [skip ci]
# [2.142.0](https://github.com/revanced/revanced-patches/compare/v2.141.0...v2.142.0) (2022-12-11)

### Features

* `predictive-back-gesture` patch ([#1236](https://github.com/revanced/revanced-patches/issues/1236)) ([170c5da](170c5daa33))
* **twitch/block-embedded-ads:** `block-embedded-ads` patch ([#1166](https://github.com/revanced/revanced-patches/issues/1166)) ([9af1fef](9af1fef0b7))
2022-12-11 04:11:04 +00:00
oSumAtrIX
e4c2bb9d39 chore: merge branch dev to main (#1235) 2022-12-11 05:08:31 +01:00
oSumAtrIX
67e2e00cdc ci: open pull requests to merge dev to main 2022-12-11 04:53:14 +01:00
bennett-sh
170c5daa33 feat: predictive-back-gesture patch (#1236)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2022-12-11 04:52:31 +01:00
oSumAtrIX
ce1099cd9c refactor: move ResourceUtils.mergeStrings to correct class 2022-12-11 04:52:30 +01:00
Ushie
9af1fef0b7 feat(twitch/block-embedded-ads): block-embedded-ads patch (#1166)
Co-authored-by: Tim Schneeberger <tim.schneeberger@outlook.de>
2022-12-11 04:52:19 +01:00
oSumAtrIX
a421da53f3 ci: refactor release workflow 2022-12-11 04:52:19 +01:00
semantic-release-bot
6a49b617fd chore(release): 2.141.0 [skip ci]
# [2.141.0](https://github.com/revanced/revanced-patches/compare/v2.140.0...v2.141.0) (2022-12-09)

### Bug Fixes

* inconsistencies in preference switches ([#1207](https://github.com/revanced/revanced-patches/issues/1207)) ([d5bff77](d5bff774ed))

### Features

* **youtube/return-youtube-dislike:** simplify preference descriptions ([#1216](https://github.com/revanced/revanced-patches/issues/1216)) ([72dacd7](72dacd7c9d))
2022-12-09 17:37:35 +00:00
Lisouseinaikyrios
d5bff774ed fix: inconsistencies in preference switches (#1207)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2022-12-09 18:11:16 +01:00
Lisouseinaikyrios
72dacd7c9d feat(youtube/return-youtube-dislike): simplify preference descriptions (#1216) 2022-12-06 23:30:15 +01:00
semantic-release-bot
2afdb1a70d chore(release): 2.140.0 [skip ci]
# [2.140.0](https://github.com/revanced/revanced-patches/compare/v2.139.0...v2.140.0) (2022-12-05)

### Features

* **music:** bump compatibility to v5.34.51 ([9a7e36c](127ab85d5e))
2022-12-05 20:46:00 +00:00
oSumAtrIX
127ab85d5e feat(music): bump compatibility to v5.34.51 2022-12-05 21:43:49 +01:00
semantic-release-bot
817a6a9f87 chore(release): 2.139.0 [skip ci]
# [2.139.0](https://github.com/revanced/revanced-patches/compare/v2.138.0...v2.139.0) (2022-12-05)

### Features

* **youtube/return-youtube-dislike:** improve settings labels ([#1203](https://github.com/revanced/revanced-patches/issues/1203)) ([7913046](18b39a448e))
2022-12-05 12:53:00 +00:00
LisousEinaiKyrios
18b39a448e feat(youtube/return-youtube-dislike): improve settings labels (#1203) 2022-12-05 13:50:49 +01:00
semantic-release-bot
13e74c9946 chore(release): 2.138.0 [skip ci]
# [2.138.0](https://github.com/revanced/revanced-patches/compare/v2.137.0...v2.138.0) (2022-12-05)

### Features

* **youtube/debugging:** print stack traces ([4289a49](d77c9fec15))
2022-12-05 05:36:21 +00:00
oSumAtrIX
d77c9fec15 feat(youtube/debugging): print stack traces 2022-12-05 06:34:01 +01:00
semantic-release-bot
27c66f7d12 chore(release): 2.137.0 [skip ci]
# [2.137.0](https://github.com/revanced/revanced-patches/compare/v2.136.0...v2.137.0) (2022-12-03)

### Features

* **youtube/return-youtube-dislike:** show dislike as a percentage ([#1185](https://github.com/revanced/revanced-patches/issues/1185)) ([e5cb571](ad3041635f))
2022-12-03 16:25:19 +00:00
LisousEinaiKyrios
ad3041635f feat(youtube/return-youtube-dislike): show dislike as a percentage (#1185)
Co-authored-by: LisousEinaiKyrios <>
2022-12-03 17:23:28 +01:00
semantic-release-bot
8ff56f557c chore(release): 2.136.0 [skip ci]
# [2.136.0](https://github.com/revanced/revanced-patches/compare/v2.135.0...v2.136.0) (2022-12-02)

### Bug Fixes

* syntax error in compatiblity annotation ([#1181](https://github.com/revanced/revanced-patches/issues/1181)) ([23bf905](6369b24f64))

### Features

* **youtube:** drop support for compatibility of old versions ([2e3d004](f1960310b6))
2022-12-02 14:20:41 +00:00
Robert
6369b24f64 fix: syntax error in compatiblity annotation (#1181) 2022-12-02 15:19:16 +01:00
oSumAtrIX
f1960310b6 feat(youtube): drop support for compatibility of old versions 2022-12-02 05:07:41 +01:00
semantic-release-bot
0aaa2a40ec chore(release): 2.135.0 [skip ci]
# [2.135.0](https://github.com/revanced/revanced-patches/compare/v2.134.1...v2.135.0) (2022-12-02)

### Features

* sort README patch table by amount of patches per package ([791dcb5](9d6c99930b))
2022-12-02 03:36:42 +00:00
oSumAtrIX
9d6c99930b feat: sort README patch table by amount of patches per package 2022-12-02 04:35:06 +01:00
semantic-release-bot
d50a58900c chore(release): 2.134.1 [skip ci]
## [2.134.1](https://github.com/revanced/revanced-patches/compare/v2.134.0...v2.134.1) (2022-12-02)

### Bug Fixes

* **youtube:** swipe gesture on home screen ([f7644ae](f057ba8eab)), closes [#610](https://github.com/revanced/revanced-patches/issues/610)
2022-12-02 03:07:15 +00:00
oSumAtrIX
139f9a88eb chore: bump patcher dependency version 2022-12-02 04:04:49 +01:00
oSumAtrIX
f057ba8eab fix(youtube): swipe gesture on home screen
Fixes #610
2022-12-02 04:04:49 +01:00
semantic-release-bot
7bd544e171 refactor: move patches to correct package 2022-12-02 04:04:48 +01:00
semantic-release-bot
796d4dc407 chore(release): 2.134.0 [skip ci]
# [2.134.0](https://github.com/revanced/revanced-patches/compare/v2.133.0...v2.134.0) (2022-12-02)

### Bug Fixes

* **anytracker:** syntax error in fingerprint ([#1165](https://github.com/revanced/revanced-patches/issues/1165)) ([4f757ac](f63cfb52b0))

### Features

* **anytracker:** `unlock-premium` patch ([#1165](https://github.com/revanced/revanced-patches/issues/1165)) ([041fb72](583ec5d8e3))
2022-12-02 01:38:22 +00:00
oSumAtrIX
99f6363606 chore: bump patcher dependency version 2022-12-02 02:35:34 +01:00
oSumAtrIX
f63cfb52b0 fix(anytracker): syntax error in fingerprint (#1165) 2022-12-02 02:19:04 +01:00
oSumAtrIX
583ec5d8e3 feat(anytracker): unlock-premium patch (#1165)
Co-authored-by: FineFindus <63370021+FineFindus@users.noreply.github.com>
2022-12-01 22:48:33 +01:00
semantic-release-bot
b675adef30 chore(release): 2.133.0 [skip ci]
# [2.133.0](https://github.com/revanced/revanced-patches/compare/v2.132.0...v2.133.0) (2022-12-01)

### Features

* **moneymanager:** `unlock-premium` patch ([#1173](https://github.com/revanced/revanced-patches/issues/1173)) ([4da1d53](a08fe535b1))
2022-12-01 17:51:15 +00:00
johnconner122
a08fe535b1 feat(moneymanager): unlock-premium patch (#1173)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2022-12-01 18:49:40 +01:00
semantic-release-bot
7e5c963e36 chore(release): 2.132.0 [skip ci]
# [2.132.0](https://github.com/revanced/revanced-patches/compare/v2.131.0...v2.132.0) (2022-12-01)

### Features

* **sleepasandroid:** `unlock-premium` patch ([#1172](https://github.com/revanced/revanced-patches/issues/1172)) ([9d9d938](05ea840b8f))
* **twitch:** remove `block-embedded-ads` patch ([#1164](https://github.com/revanced/revanced-patches/issues/1164)) ([403e887](da4b80c5dd))
2022-12-01 17:20:22 +00:00
aliveoutside
05ea840b8f feat(sleepasandroid): unlock-premium patch (#1172)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2022-12-01 18:18:43 +01:00
Ushie
da4b80c5dd feat(twitch): remove block-embedded-ads patch (#1164) 2022-11-30 22:36:21 +01:00
semantic-release-bot
4ca19b7fd2 chore(release): 2.131.0 [skip ci]
# [2.131.0](https://github.com/revanced/revanced-patches/compare/v2.130.0...v2.131.0) (2022-11-30)

### Features

* **twitch/block-embedded-ads:** `block-embedded-ads` patch support ([#1160](https://github.com/revanced/revanced-patches/issues/1160)) ([69590fd](260b395426))
2022-11-30 14:11:58 +00:00
Tim Schneeberger
260b395426 feat(twitch/block-embedded-ads): block-embedded-ads patch support (#1160) 2022-11-30 15:10:07 +01:00
semantic-release-bot
b4d8dbcc3d chore(release): 2.130.0 [skip ci]
# [2.130.0](https://github.com/revanced/revanced-patches/compare/v2.129.0...v2.130.0) (2022-11-29)

### Features

* **youtube/enable-wide-searchbar:** bump compatibility to v17.45.36 ([5451a52](7180914df1))
2022-11-29 00:46:01 +00:00
oSumAtrIX
7180914df1 feat(youtube/enable-wide-searchbar): bump compatibility to v17.45.36 2022-11-29 01:44:18 +01:00
semantic-release-bot
748b14d547 chore(release): 2.129.0 [skip ci]
# [2.129.0](https://github.com/revanced/revanced-patches/compare/v2.128.0...v2.129.0) (2022-11-28)

### Features

* **youtube/hide-create-button:** bump compatibility to v17.45.36 ([37e9df2](d9d4d1f38c))
* **youtube/hide-shorts-button:** bump compatibility to v17.45.36 ([e5e33f2](0f73a9dd5e))
2022-11-28 23:57:26 +00:00
oSumAtrIX
d9d4d1f38c feat(youtube/hide-create-button): bump compatibility to v17.45.36 2022-11-29 00:55:34 +01:00
oSumAtrIX
0f73a9dd5e feat(youtube/hide-shorts-button): bump compatibility to v17.45.36 2022-11-29 00:55:31 +01:00
semantic-release-bot
fafcd751b2 chore(release): 2.128.0 [skip ci]
# [2.128.0](https://github.com/revanced/revanced-patches/compare/v2.127.0...v2.128.0) (2022-11-28)

### Features

* **twitch:** settings for patches ([#1142](https://github.com/revanced/revanced-patches/issues/1142)) ([02bb641](ea7b3f5529))
2022-11-28 23:22:34 +00:00
Tim Schneeberger
ea7b3f5529 feat(twitch): settings for patches (#1142) 2022-11-29 00:20:58 +01:00
semantic-release-bot
4935c00aa5 chore(release): 2.127.0 [skip ci]
# [2.127.0](https://github.com/revanced/revanced-patches/compare/v2.126.1...v2.127.0) (2022-11-28)

### Features

* **twitch:** `settings` patch ([#1075](https://github.com/revanced/revanced-patches/issues/1075)) ([632a083](06098713bb))
2022-11-28 22:52:01 +00:00
Tim Schneeberger
06098713bb feat(twitch): settings patch (#1075)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2022-11-28 23:50:04 +01:00
Tim Schneeberger
eb505d802a refactor: abstract settings patch (#1109)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2022-11-28 20:13:34 +01:00
semantic-release-bot
e8b7cdfa35 chore(release): 2.126.1 [skip ci]
## [2.126.1](https://github.com/revanced/revanced-patches/compare/v2.126.0...v2.126.1) (2022-11-28)

### Bug Fixes

* **youtube/custom-video-speed:** fuzzy scan on fingerprint  ([#1135](https://github.com/revanced/revanced-patches/issues/1135)) ([920e72a](986951dc8a))
2022-11-28 10:58:11 +00:00
FineFindus
986951dc8a fix(youtube/custom-video-speed): fuzzy scan on fingerprint (#1135) 2022-11-28 11:56:12 +01:00
d4rkk3y
b88fda959c refactor(tiktok): simplify names (#1085) 2022-11-28 03:11:32 +01:00
semantic-release-bot
96c36dca74 chore(release): 2.126.0 [skip ci]
# [2.126.0](https://github.com/revanced/revanced-patches/compare/v2.125.0...v2.126.0) (2022-11-28)

### Features

* **backdrops:** `pro-unlock` patch ([#1121](https://github.com/revanced/revanced-patches/issues/1121)) ([285169e](4ce3fd4ff7))
2022-11-28 01:38:21 +00:00
josesilveiraa
4ce3fd4ff7 feat(backdrops): pro-unlock patch (#1121) 2022-11-28 02:36:39 +01:00
semantic-release-bot
81c5c3870c chore(release): 2.125.0 [skip ci]
# [2.125.0](https://github.com/revanced/revanced-patches/compare/v2.124.0...v2.125.0) (2022-11-26)

### Features

* **myexpenses:** `unlock-pro` patch ([#1120](https://github.com/revanced/revanced-patches/issues/1120)) ([b3796d6](30aeaf70d8))
2022-11-26 14:44:43 +00:00
Jonathan
30aeaf70d8 feat(myexpenses): unlock-pro patch (#1120) 2022-11-26 15:43:04 +01:00
semantic-release-bot
712423789e chore(release): 2.124.0 [skip ci]
# [2.124.0](https://github.com/revanced/revanced-patches/compare/v2.123.0...v2.124.0) (2022-11-26)

### Features

* **citra:** `premium-unlock` patch ([#1115](https://github.com/revanced/revanced-patches/issues/1115)) ([7a07f57](1ad2db1ca4))
* **crunchyroll:** `enable-downloads` patch ([#1119](https://github.com/revanced/revanced-patches/issues/1119)) ([e6e8f5d](16b4e78d79))
2022-11-26 14:11:37 +00:00
josesilveiraa
1ad2db1ca4 feat(citra): premium-unlock patch (#1115)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2022-11-26 15:10:09 +01:00
johnconner122
16b4e78d79 feat(crunchyroll): enable-downloads patch (#1119)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2022-11-26 15:08:28 +01:00
semantic-release-bot
f57c555395 chore(release): 2.123.0 [skip ci]
# [2.123.0](https://github.com/revanced/revanced-patches/compare/v2.122.0...v2.123.0) (2022-11-26)

### Features

* **windyapp:** `unlock-pro` patch ([#1118](https://github.com/revanced/revanced-patches/issues/1118)) ([20a7edf](53f1f6fc96))
2022-11-26 14:07:55 +00:00
Jonathan
53f1f6fc96 feat(windyapp): unlock-pro patch (#1118) 2022-11-26 15:06:15 +01:00
semantic-release-bot
b4b8f62c7b chore(release): 2.122.0 [skip ci]
# [2.122.0](https://github.com/revanced/revanced-patches/compare/v2.121.0...v2.122.0) (2022-11-25)

### Features

* **tiktok:** `sim-spoof` patch ([#1088](https://github.com/revanced/revanced-patches/issues/1088)) ([526b312](8b2703273a))
2022-11-25 10:21:36 +00:00
d4rkk3y
8b2703273a feat(tiktok): sim-spoof patch (#1088)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2022-11-25 11:20:04 +01:00
oSumAtrIX
9e2a6eead1 refactor: remove unused extension methods 2022-11-25 00:30:35 +01:00
Tim Schneeberger
5afd49a111 refactor: abstract settings patch away from YouTube (#1103)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2022-11-25 00:05:54 +01:00
oSumAtrIX
e79ad750d4 refactor(youtube/hide-cast-button): quality of life changes 2022-11-24 23:14:16 +01:00
semantic-release-bot
97ea238520 chore(release): 2.121.0 [skip ci]
# [2.121.0](https://github.com/revanced/revanced-patches/compare/v2.120.0...v2.121.0) (2022-11-23)

### Features

* **anytracker:** remove `unlock-premium` patch ([#1094](https://github.com/revanced/revanced-patches/issues/1094)) ([7f9fb09](700ca5b543))
2022-11-23 16:21:42 +00:00
Shervin Koushan
700ca5b543 feat(anytracker): remove unlock-premium patch (#1094) 2022-11-23 17:19:48 +01:00
semantic-release-bot
b792be5b78 chore(release): 2.120.0 [skip ci]
# [2.120.0](https://github.com/revanced/revanced-patches/compare/v2.119.0...v2.120.0) (2022-11-23)

### Features

* **youtube:** `remove-player-button-background` patch ([#855](https://github.com/revanced/revanced-patches/issues/855)) ([5988f63](025b480175))
2022-11-23 06:36:16 +00:00
johnconner122
025b480175 feat(youtube): remove-player-button-background patch (#855)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2022-11-23 07:34:39 +01:00
semantic-release-bot
e1b53b214f chore(release): 2.119.0 [skip ci]
# [2.119.0](https://github.com/revanced/revanced-patches/compare/v2.118.1...v2.119.0) (2022-11-23)

### Features

* **twitch:** ˋintegrationsˋ  dependency patch ([#1074](https://github.com/revanced/revanced-patches/issues/1074)) ([8196f26](30939e5efe))
2022-11-23 06:32:04 +00:00
Tim Schneeberger
30939e5efe feat(twitch): ˋintegrationsˋ dependency patch (#1074) 2022-11-23 07:30:11 +01:00
semantic-release-bot
4d9c41488d chore(release): 2.118.1 [skip ci]
## [2.118.1](https://github.com/revanced/revanced-patches/compare/v2.118.0...v2.118.1) (2022-11-22)
2022-11-22 23:37:23 +00:00
oSumAtrIX
2fffcde357 build: bump dependencies 2022-11-23 00:35:08 +01:00
oSumAtrIX
7af08e0ba7 feat!: apply changes from ReVanced Patcher 2022-11-23 00:35:07 +01:00
semantic-release-bot
228834fda8 chore(release): 2.118.0 [skip ci]
# [2.118.0](https://github.com/revanced/revanced-patches/compare/v2.117.1...v2.118.0) (2022-11-22)

### Features

* **youtube:** bump patches compatibility to v17.45.36 ([5ee123f](7466aecc5b))
2022-11-22 22:56:01 +00:00
oSumAtrIX
7466aecc5b feat(youtube): bump patches compatibility to v17.45.36 2022-11-22 23:54:07 +01:00
semantic-release-bot
8ee36541b4 chore(release): 2.117.1 [skip ci]
## [2.117.1](https://github.com/revanced/revanced-patches/compare/v2.117.0...v2.117.1) (2022-11-22)

### Bug Fixes

* **youtube/general-ads:** hide reels shelf ([2f8b911](a4fd6603fe))
2022-11-22 22:43:58 +00:00
oSumAtrIX
a4fd6603fe fix(youtube/general-ads): hide reels shelf 2022-11-22 23:41:53 +01:00
oSumAtrIX
510cb8f590 refactor: apply auto-refactor 2022-11-22 20:18:29 +01:00
Sculas
c02ebd752c refactor(integrations): merge integrations code (#1052)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2022-11-21 22:26:43 +01:00
semantic-release-bot
b4d7eca5fa chore(release): 2.117.0 [skip ci]
# [2.117.0](https://github.com/revanced/revanced-patches/compare/v2.116.0...v2.117.0) (2022-11-21)

### Features

* **tiktok:** `tiktok-web-login` patch ([#593](https://github.com/revanced/revanced-patches/issues/593)) ([879f9c5](c6125c071b))
2022-11-21 15:16:45 +00:00
d4rkk3y
c6125c071b feat(tiktok): tiktok-web-login patch (#593) 2022-11-21 16:14:58 +01:00
d4rkk3y
478de297f9 frat(tiktok/settings): make patch name unique (#1082) 2022-11-21 16:12:44 +01:00
semantic-release-bot
ebc4a12cd7 chore(release): 2.116.0 [skip ci]
# [2.116.0](https://github.com/revanced/revanced-patches/compare/v2.115.0...v2.116.0) (2022-11-21)

### Features

* **youtube/theme:** make amoled the default color for dark theme background" ([5a904ce](b3c0291e70))
2022-11-21 02:55:24 +00:00
oSumAtrIX
b3c0291e70 feat(youtube/theme): make amoled the default color for dark theme background"
This reverts commit 91ae954210.
2022-11-21 03:53:18 +01:00
semantic-release-bot
c43588ee40 chore(release): 2.115.0 [skip ci]
# [2.115.0](https://github.com/revanced/revanced-patches/compare/v2.114.2...v2.115.0) (2022-11-21)

### Features

* **youtube/general-ads:** normalize switch names ([e9d5a5e](c2122494bc))
* **youtube/theme:** exclude the patch by default ([bfda80c](c74b5d4e47))
* **youtube/theme:** make dark the default color for dark theme background ([b099d8b](91ae954210))
2022-11-21 00:00:19 +00:00
oSumAtrIX
c74b5d4e47 feat(youtube/theme): exclude the patch by default 2022-11-21 00:58:56 +01:00
oSumAtrIX
91ae954210 feat(youtube/theme): make dark the default color for dark theme background 2022-11-21 00:58:56 +01:00
oSumAtrIX
65172cad4f refactor(youtube/general-ads): apply auto-refactor 2022-11-21 00:58:55 +01:00
oSumAtrIX
c2122494bc feat(youtube/general-ads): normalize switch names 2022-11-21 00:58:55 +01:00
semantic-release-bot
6ed94935ca chore(release): 2.114.2 [skip ci]
## [2.114.2](https://github.com/revanced/revanced-patches/compare/v2.114.1...v2.114.2) (2022-11-20)

### Bug Fixes

* **youtube/general-ads:** hide bytecode home ad view ([a2717d1](f3785c4e47))
* **youtube/general-ads:** remove unused switch ([e05dd02](a934821fa7))
2022-11-20 23:27:07 +00:00
oSumAtrIX
a934821fa7 fix(youtube/general-ads): remove unused switch 2022-11-21 00:25:31 +01:00
oSumAtrIX
f3785c4e47 fix(youtube/general-ads): hide bytecode home ad view 2022-11-21 00:25:30 +01:00
oSumAtrIX
67e0db5ac9 refactor(youtube/resource-mapping): move to appropriate package 2022-11-21 00:25:30 +01:00
oSumAtrIX
aaa820430b style(youtube/resource-mapping): use shorter name for class 2022-11-21 00:25:29 +01:00
semantic-release-bot
cf5ed1baea chore(release): 2.114.1 [skip ci]
## [2.114.1](https://github.com/revanced/revanced-patches/compare/v2.114.0...v2.114.1) (2022-11-20)

### Bug Fixes

* **tiktok/settings:** make compatible with newer versions ([#1057](https://github.com/revanced/revanced-patches/issues/1057)) ([79e6fcb](206341cec4))
2022-11-20 16:12:02 +00:00
d4rkk3y
206341cec4 fix(tiktok/settings): make compatible with newer versions (#1057)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2022-11-20 17:09:59 +01:00
semantic-release-bot
e8f4890edd chore(release): 2.114.0 [skip ci]
# [2.114.0](https://github.com/revanced/revanced-patches/compare/v2.113.0...v2.114.0) (2022-11-20)

### Features

* **youtube:** `disable-zoom-haptics` patch ([#1079](https://github.com/revanced/revanced-patches/issues/1079)) ([974a042](9463f11dbf))
2022-11-20 13:26:23 +00:00
aliernfrog
9463f11dbf feat(youtube): disable-zoom-haptics patch (#1079) 2022-11-20 14:24:41 +01:00
661 changed files with 18607 additions and 5273 deletions

View File

@@ -36,7 +36,7 @@ body:
- 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.
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
@@ -70,4 +70,4 @@ body:
- 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
required: true

30
.github/workflows/pull_request.yml vendored Normal file
View File

@@ -0,0 +1,30 @@
name: PR to main
on:
push:
branches:
- dev
workflow_dispatch:
env:
MESSAGE: merge branch `${{ github.head_ref || github.ref_name }}` to `main`
jobs:
pull-request:
name: Open pull request
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Open pull request
uses: repo-sync/pull-request@v2
with:
destination_branch: 'main'
pr_title: 'chore: ${{ env.MESSAGE }}'
pr_body: |
This pull request will ${{ env.MESSAGE }}.
## Dependencies before merge
- [ ] https://github.com/revanced/revanced-integrations
pr_draft: true

View File

@@ -1,4 +1,5 @@
name: Release
on:
workflow_dispatch:
push:
@@ -9,32 +10,43 @@ on:
branches:
- main
- dev
jobs:
release:
name: Release
runs-on: ubuntu-18.04
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
# Make sure the release step uses its own credentials:
# https://github.com/cycjimmy/semantic-release-action#private-packages
persist-credentials: false
fetch-depth: 0
- name: Setup JDK
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
distribution: 'zulu'
cache: gradle
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
cache: 'npm'
- name: Setup Android SDK
uses: android-actions/setup-android@v2
uses: amyu/setup-android@v2
with:
cache-disabled: false
sdk-version: '33'
build-tools-version: '33.0.1'
- name: Build with Gradle
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./gradlew build clean generateMeta
- name: Install Android build-tools
run: sdkmanager "build-tools;32.0.0"
run: ./gradlew generateMeta clean --no-daemon
- name: Setup semantic-release
run: npm install -g semantic-release @semantic-release/git @semantic-release/changelog gradle-semantic-release-plugin -D
run: npm install
- name: Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: npx semantic-release
GITHUB_TOKEN: ${{ secrets.REPOSITORY_PUSH_ACCESS }}
run: npm exec semantic-release

6
.gitignore vendored
View File

@@ -118,3 +118,9 @@ gradle-app.setting
# Ignore vscode config
.vscode/
# Dependency directories
node_modules/
# gradle properties, due to Github token
./gradle.properties

View File

@@ -7,11 +7,7 @@
}
],
"plugins": [
["@semantic-release/commit-analyzer", {
"releaseRules": [
{"type": "build", "release": "patch"}
]
}],
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/changelog",
"gradle-semantic-release-plugin",
@@ -36,7 +32,15 @@
{
"path": "patches.json"
}
]
],
successComment: false
}
],
[
"@saithodev/semantic-release-backmerge",
{
backmergeBranches: [{"from": "main", "to": "dev"}],
clearWorkspace: true
}
]
]

File diff suppressed because it is too large Load Diff

View File

@@ -18,7 +18,6 @@ The file contains an array of objects, each object representing a patch. The obj
| `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. |
| `deprecated` | Whether the patch is deprecated. |
| `options` | An array of options for this patch. |
| `options.key` | The key of the option. |
| `options.title` | The title of the option. |
@@ -39,7 +38,6 @@ Example:
"description": "Adds the ability to remember the video quality you chose in the video quality flyout.",
"version": "0.0.1",
"excluded": false,
"deprecated": false,
"options": [],
"dependencies": [
"integrations",

371
README.md
View File

@@ -4,61 +4,189 @@ The official Patch bundle provided by ReVanced and the community.
> Looking for the JSON variant of this? [Click here](patches.json).
### 📦 `ginlemon.iconpackstudio`
### [📦 `com.google.android.youtube`](https://play.google.com/store/apps/details?id=com.google.android.youtube)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `unlock-pro` | Unlocks all pro features. | all |
| `always-autorepeat` | Always repeats the playing video again. | 18.08.37 |
| `client-spoof` | Spoofs a patched client to allow playback. | all |
| `comments` | Hides components related to comments. | 18.08.37 |
| `copy-video-url` | Adds buttons in player to copy video links. | 18.08.37 |
| `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.08.37 |
| `custom-video-speed` | Adds more video speed options. | 18.08.37 |
| `disable-auto-captions` | Disable forced captions from being automatically enabled. | 18.08.37 |
| `disable-fullscreen-panels` | Disables video description and comments panel in fullscreen view. | 18.08.37 |
| `disable-player-popup-panels` | Disables panels from appearing automatically when going into fullscreen (playlist or live chat). | 18.08.37 |
| `disable-shorts-on-startup` | Disables playing YouTube Shorts when launching YouTube. | 18.08.37 |
| `disable-zoom-haptics` | Disables haptics when zooming. | all |
| `downloads` | Enables downloading music and videos from YouTube. | 18.08.37 |
| `enable-debugging` | Adds debugging options. | all |
| `enable-wide-searchbar` | Replaces the search icon with a wide search bar. This will hide the YouTube logo when active. | 18.08.37 |
| `general-ads` | Removes general ads. | 18.08.37 |
| `hdr-auto-brightness` | Makes the brightness of HDR videos follow the system default. | 18.08.37 |
| `hide-album-cards` | Hides the album cards below the artist description. | 18.08.37 |
| `hide-artist-card` | Hides the artist card below the searchbar. | 18.08.37 |
| `hide-autoplay-button` | Hides the autoplay button in the video player. | 18.08.37 |
| `hide-breaking-news-shelf` | Hides the breaking news shelf on the homepage tab. | 18.08.37 |
| `hide-captions-button` | Hides the captions button on video player. | 18.08.37 |
| `hide-cast-button` | Hides the cast button in the video player. | all |
| `hide-create-button` | Hides the create button in the navigation bar. | 18.08.37 |
| `hide-crowdfunding-box` | Hides the crowdfunding box between the player and video description. | 18.08.37 |
| `hide-email-address` | Hides the email address in the account switcher. | 18.08.37 |
| `hide-endscreen-cards` | Hides the suggested video cards at the end of a video in fullscreen. | 18.08.37 |
| `hide-floating-microphone-button` | Hides the floating microphone button which appears in search. | 18.08.37 |
| `hide-info-cards` | Hides info cards in videos. | 18.08.37 |
| `hide-my-mix` | Hides mix playlists. | 18.08.37 |
| `hide-player-buttons` | Adds the option to hide video player previous and next buttons. | all |
| `hide-seekbar` | Hides the seekbar. | 18.08.37 |
| `hide-shorts-button` | Hides the shorts button on the navigation bar. | 18.08.37 |
| `hide-timestamp` | Hides timestamp in video player. | 18.08.37 |
| `hide-video-action-buttons` | Adds the options to hide action buttons under a video. | 18.08.37 |
| `hide-watch-in-vr` | Hides the option to watch in VR from the player settings flyout panel. | 18.08.37 |
| `hide-watermark` | Hides creator's watermarks on videos. | 18.08.37 |
| `minimized-playback` | Enables minimized and background playback. | 18.08.37 |
| `old-quality-layout` | Enables the original video quality flyout in the video player settings | 18.08.37 |
| `open-links-externally` | Open links outside of the app directly in your browser. | 18.08.37 |
| `premium-heading` | Shows premium branding on the home screen. | all |
| `remember-playback-speed` | Adds the ability to remember the playback speed you chose in the video playback speed flyout. | 18.08.37 |
| `remember-video-quality` | Adds the ability to remember the video quality you chose in the video quality flyout. | 18.08.37 |
| `remove-player-button-background` | Removes the background from the video player buttons. | 18.08.37 |
| `return-youtube-dislike` | Shows the dislike count of videos using the Return YouTube Dislike API. | 18.08.37 |
| `seekbar-tapping` | Enables tap-to-seek on the seekbar of the video player. | 18.08.37 |
| `sponsorblock` | Integrates SponsorBlock which allows skipping video segments such as sponsored content. | 18.08.37 |
| `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.08.37 |
| `spoof-signature-verification` | Spoofs a patched client to prevent playback issues. | 18.08.37 |
| `swipe-controls` | Adds volume and brightness swipe controls. | 18.08.37 |
| `tablet-mini-player` | Enables the tablet mini player layout. | 18.08.37 |
| `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.08.37 |
| `video-ads` | Removes ads in the video player. | 18.08.37 |
</details>
### 📦 `com.ss.android.ugc.trill`
### [📦 `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 |
|:--------:|:--------------:|:-----------------:|
| `tiktok-ads` | Removes ads from TikTok. | all |
| `tiktok-speed` | Enables the playback speed option for all videos. | all |
| `tiktok-download` | Removes download restrictions and changes the default path to download to. | all |
| `tiktok-seekbar` | Show progress bar for all video. | all |
| `tiktok-settings` | Add settings menu to TikTok. | all |
| `tiktok-force-login` | Do not force login. | all |
| `tiktok-feed-filter` | Filters tiktok videos: removing ads, removing livestreams. | all |
| `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.zhiliaoapp.musically`
### [📦 `com.ss.android.ugc.trill`](https://play.google.com/store/apps/details?id=com.ss.android.ugc.trill)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `tiktok-ads` | Removes ads from TikTok. | all |
| `tiktok-speed` | Enables the playback speed option for all videos. | all |
| `tiktok-download` | Removes download restrictions and changes the default path to download to. | all |
| `tiktok-seekbar` | Show progress bar for all video. | all |
| `tiktok-settings` | Add settings menu to TikTok. | all |
| `tiktok-force-login` | Do not force login. | all |
| `tiktok-feed-filter` | Filters tiktok videos: removing ads, removing livestreams. | all |
| `disable-login-requirement` | Do not force login. | all |
| `downloads` | Removes download restrictions and changes the default path to download to. | 27.8.3 |
| `feed-filter` | Filters tiktok videos: removing ads, removing livestreams. | 27.8.3 |
| `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. | 27.8.3 |
| `show-seekbar` | Shows progress bar for all video. | all |
| `sim-spoof` | Spoofs the information which is retrieved from the sim-card. | 27.8.3 |
</details>
### 📦 `com.twitter.android`
### [📦 `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. | 27.8.3 |
| `feed-filter` | Filters tiktok videos: removing ads, removing livestreams. | 27.8.3 |
| `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. | 27.8.3 |
| `show-seekbar` | Shows progress bar for all video. | all |
| `sim-spoof` | Spoofs the information which is retrieved from the sim-card. | 27.8.3 |
</details>
### [📦 `tv.twitch.android.app`](https://play.google.com/store/apps/details?id=tv.twitch.android.app)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `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 |
|:--------:|:--------------:|:-----------------:|
| `timeline-ads` | Removes ads from the Twitter timeline. | all |
| `dynamic-color` | Replaces the default Twitter Blue with the users Material You palette. | all |
| `monochrome-icon` | Adds a monochrome icon. | 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>
### 📦 `de.dwd.warnapp`
### [📦 `com.spotify.music`](https://play.google.com/store/apps/details?id=com.spotify.music)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `promo-code-unlock` | Disables the validation of promo code. Any code will work to unlock all features. | all |
| `disable-capture-restriction` | Allows capturing Spotify's audio output while screen sharing or screen recording. | all |
| `hide-premium-navbar` | Removes the premium tab from the navbar. | all |
| `spotify-theme` | Applies a custom theme. | all |
</details>
### 📦 `com.myprog.hexedit`
### [📦 `com.reddit.frontpage`](https://play.google.com/store/apps/details?id=com.reddit.frontpage)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `general-reddit-ads` | Removes general ads from the Reddit frontpage and subreddits. | 2023.12.0 |
| `hide-subreddit-banner` | Hides banner ads from comments on subreddits. | 2023.12.0 |
| `premium-icon-reddit` | Unlocks premium Reddit app icons. | all |
</details>
### [📦 `com.vanced.android.youtube`](https://play.google.com/store/apps/details?id=com.vanced.android.youtube)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `client-spoof` | Spoofs a patched client to allow playback. | all |
| `hide-ads` | Removes general ads. | 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. | 2.2.0 |
| `remove-root-detection` | Removes the check for root permissions. | 2.2.0 |
</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. | 2.6.0 |
| `spoof-signature` | Spoofs the signature of the app. | 2.6.0 |
</details>
### [📦 `com.myprog.hexedit`](https://play.google.com/store/apps/details?id=com.myprog.hexedit)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
@@ -66,138 +194,119 @@ The official Patch bundle provided by ReVanced and the community.
| `disable-ads` | Disables ads in HexEditor. | all |
</details>
### 📦 `com.spotify.music`
### [📦 `com.spotify.lite`](https://play.google.com/store/apps/details?id=com.spotify.lite)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `spotify-theme` | Applies a custom theme. | all |
| `disable-capture-restriction` | Allows capturing Spotify's audio output while screen sharing or screen recording. | all |
| `hide-premium-navbar` | Removes the premium tab from the navbar. | all |
| `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.google.android.youtube`
### [📦 `com.nis.app`](https://play.google.com/store/apps/details?id=com.nis.app)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `hide-crowdfunding-box` | Hides the crowdfunding box between the player and video description. | 17.43.36 |
| `hide-time-and-seekbar` | Hides progress bar and time counter on videos. | 17.43.36 |
| `hide-video-buttons` | Adds options to hide action buttons under a video. | 17.43.36 |
| `enable-wide-searchbar` | Replaces the search icon with a wide search bar. This will hide the YouTube logo when active. | 17.43.36 |
| `hide-captions-button` | Hides the captions button on video player. | 17.43.36 |
| `hide-shorts-button` | Hides the shorts button on the navigation bar. | 17.43.36 |
| `hide-create-button` | Hides the create button in the navigation bar. | 17.43.36 |
| `disable-startup-shorts-player` | Disables playing YouTube Shorts when launching YouTube. | 17.43.36 |
| `hide-endscreen-cards` | Hides the suggested video cards at the end of a video in fullscreen. | 17.43.36 |
| `hide-cast-button` | Hides the cast button in the video player. | all |
| `sponsorblock` | Integrate SponsorBlock. | 17.43.36 |
| `hide-autoplay-button` | Hides the autoplay button in the video player. | 17.43.36 |
| `hide-watch-in-vr` | Hides the Watch in VR option from the player settings flyout panel. | 17.43.36 |
| `hide-album-cards` | Hides the album cards below the artist description. | 17.43.36 |
| `disable-auto-player-popup-panels` | Disable automatic popup panels (playlist or live chat) on video player. | 17.43.36 |
| `disable-auto-captions` | Disable forced captions from being automatically enabled. | 17.43.36 |
| `disable-fullscreen-panels` | Disables video description and comments panel in fullscreen view. | 17.43.36 |
| `hide-artist-card` | Hides the artist card below the searchbar. | 17.43.36 |
| `return-youtube-dislike` | Shows the dislike count of videos using the Return YouTube Dislike API. | 17.43.36 |
| `comments` | Hides components related to comments. | 17.43.36 |
| `theme` | Applies a custom theme. | all |
| `hide-email-address` | Hides the email address in the account switcher. | 17.43.36 |
| `tablet-mini-player` | Enables the tablet mini player layout. | 17.43.36 |
| `hide-watermark` | Hides creator's watermarks on videos. | 17.43.36 |
| `hide-info-cards` | Hides info-cards in videos. | 17.43.36 |
| `hide-my-mix` | Hides mix playlists. | 17.43.36 |
| `custom-branding` | Changes the YouTube launcher icon and name to your choice (defaults to ReVanced). | all |
| `premium-heading` | Shows premium branding on the home screen. | all |
| `old-quality-layout` | Enables the original quality flyout menu. | 17.43.36 |
| `general-ads` | Removes general ads. | 17.43.36 |
| `video-ads` | Removes ads in the video player. | 17.43.36 |
| `swipe-controls` | Adds volume and brightness swipe controls. | 17.43.36 |
| `downloads` | Enables downloading music and videos from YouTube. | 17.43.36 |
| `seekbar-tapping` | Enables tap-to-seek on the seekbar of the video player. | 17.43.36 |
| `settings` | Adds settings for ReVanced to YouTube. | all |
| `open-links-directly` | Bypasses redirect links and allows opening links directly. | 17.43.36 |
| `microg-support` | Allows YouTube ReVanced to run without root and under a different package name with Vanced MicroG. | 17.43.36 |
| `custom-video-buffer` | Lets you change the buffers of videos. | 17.43.36 |
| `debugging` | Adds debugging options. | all |
| `client-spoof` | Spoofs the YouTube or Vanced client to prevent playback issues. | all |
| `always-autorepeat` | Always repeats the playing video again. | 17.43.36 |
| `minimized-playback` | Enables minimized and background playback. | 17.43.36 |
| `custom-video-speed` | Adds more video speed options. | 17.43.36 |
| `remember-video-quality` | Adds the ability to remember the video quality you chose in the video quality flyout. | 17.43.36 |
| `hdr-auto-brightness` | Makes the brightness of HDR videos follow the system default. | 17.43.36 |
| `hide-ads` | Removes ads from Inshorts. | all |
</details>
### 📦 `com.vanced.android.youtube`
### [📦 `com.facebook.orca`](https://play.google.com/store/apps/details?id=com.facebook.orca)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `client-spoof` | Spoofs the YouTube or Vanced client to prevent playback issues. | all |
| `hide-inbox-ads` | Hides ads in inbox. | all |
</details>
### 📦 `com.ticktick.task`
### [📦 `com.instagram.android`](https://play.google.com/store/apps/details?id=com.instagram.android)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `unlock-themes` | Unlocks all themes. | all |
| `hide-timeline-ads` | Removes ads from the timeline. | all |
</details>
### 📦 `com.shervinkoushan.anyTracker`
### [📦 `org.citra.citra_emu`](https://play.google.com/store/apps/details?id=org.citra.citra_emu)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `unlock-premium` | Unlocks all premium features. | all |
| `premium-unlock` | Unlocks premium functions. | all |
</details>
### 📦 `tv.twitch.android.app`
### [📦 `org.citra.citra_emu.canary`](https://play.google.com/store/apps/details?id=org.citra.citra_emu.canary)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `debug-mode` | Enables Twitch's internal debugging mode. | all |
| `block-audio-ads` | Blocks audio ads in streams and VODs. | all |
| `block-video-ads` | Blocks video ads in streams and VODs. | all |
| `show-deleted-messages` | Shows deleted chat messages behind a clickable spoiler. | all |
| `premium-unlock` | Unlocks premium functions. | all |
</details>
### 📦 `com.garzotto.pflotsh.ecmwf_a`
### [📦 `com.backdrops.wallpapers`](https://play.google.com/store/apps/details?id=com.backdrops.wallpapers)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `pflotsh-ecmwf-subscription-unlock` | Unlocks all subscription features. | 3.5.4 |
| `pro-unlock` | Unlocks pro-only functions. | 4.52 |
</details>
### 📦 `com.google.android.apps.youtube.music`
### [📦 `de.dwd.warnapp`](https://play.google.com/store/apps/details?id=de.dwd.warnapp)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `tasteBuilder-remover` | Removes the "Tell us which artists you like" card from the home screen. | 5.31.50 |
| `hide-get-premium` | Removes all "Get Premium" evidences from the avatar menu. | 5.31.50 |
| `minimized-playback-music` | Enables minimized playback on Kids music. | 5.31.50 |
| `compact-header` | Hides the music category bar at the top of the homepage. | 5.31.50 |
| `upgrade-button-remover` | Removes the upgrade tab from the pivot bar. | 5.31.50 |
| `music-video-ads` | Removes ads in the music player. | 5.31.50 |
| `background-play` | Enables playing music in the background. | 5.31.50 |
| `exclusive-audio-playback` | Enables the option to play music without video. | 5.31.50 |
| `codecs-unlock` | Adds more audio codec options. The new audio codecs usually result in better audio quality. | 5.31.50 |
| `music-microg-support` | Allows YouTube Music ReVanced to run without root and under a different package name. | 5.31.50 |
| `promo-code-unlock` | Disables the validation of promo code. Any code will work to unlock all features. | all |
</details>
### 📦 `com.reddit.frontpage`
### [📦 `net.binarymode.android.irplus`](https://play.google.com/store/apps/details?id=net.binarymode.android.irplus)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
|:--------:|:--------------:|:-----------------:|
| `premium-icon-reddit` | Unlocks premium Reddit app icons. | all |
| `general-reddit-ads` | Removes general ads from the Reddit frontpage and subreddits. | all |
| `remove-ads` | Removes all ads from the app. | all |
</details>
### 📦 `com.awedea.nyx`
### [📦 `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.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.9.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>
### [📦 `ginlemon.iconpackstudio`](https://play.google.com/store/apps/details?id=ginlemon.iconpackstudio)
<details>
| 💊 Patch | 📜 Description | 🏹 Target Version |
@@ -205,6 +314,62 @@ The official Patch bundle provided by ReVanced and the community.
| `unlock-pro` | Unlocks all pro features. | all |
</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>
### [📦 `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>
### [📦 `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>
### [📦 `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.6364 |
</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.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>
## 📝 JSON Format
@@ -219,7 +384,6 @@ The file contains an array of objects, each object representing a patch. The obj
| `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. |
| `deprecated` | Whether the patch is deprecated. |
| `options` | An array of options for this patch. |
| `options.key` | The key of the option. |
| `options.title` | The title of the option. |
@@ -240,7 +404,6 @@ Example:
"description": "Adds the ability to remember the video quality you chose in the video quality flyout.",
"version": "0.0.1",
"excluded": false,
"deprecated": false,
"options": [],
"dependencies": [
"integrations",

View File

@@ -1,5 +1,5 @@
plugins {
kotlin("jvm") version "1.7.0"
kotlin("jvm") version "1.8.10"
}
group = "app.revanced"
@@ -20,10 +20,10 @@ repositories {
}
dependencies {
implementation("app.revanced:revanced-patcher:6.0.2")
implementation("app.revanced:multidexlib2:2.5.2.r2")
implementation("app.revanced:revanced-patcher:7.0.0")
implementation("app.revanced:multidexlib2:2.5.3-a3836654")
// Required for meta
implementation("com.google.code.gson:gson:2.9.1")
implementation("com.google.code.gson:gson:2.10.1")
}
tasks {
@@ -33,7 +33,7 @@ tasks {
doLast {
val androidHome = System.getenv("ANDROID_HOME") ?: throw GradleException("ANDROID_HOME not found")
val d8 = "${androidHome}/build-tools/32.0.0/d8"
val d8 = "${androidHome}/build-tools/33.0.1/d8"
val input = configurations.archives.get().allArtifacts.files.files.first().absolutePath
val work = File("${buildDir}/libs")
@@ -53,7 +53,7 @@ tasks {
dependsOn(build)
classpath = sourceSets["main"].runtimeClasspath
mainClass.set("app.revanced.meta.Meta")
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.

View File

@@ -1,2 +1,2 @@
kotlin.code.style = official
version = 2.113.0
version = 2.169.1-dev.4

Binary file not shown.

View File

@@ -1,5 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip
networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

285
gradlew vendored
View File

@@ -1,7 +1,7 @@
#!/usr/bin/env sh
#!/bin/sh
#
# Copyright 2015 the original author or authors.
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -17,67 +17,101 @@
#
##############################################################################
##
## Gradle start up script for UN*X
##
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
MAX_FD=maximum
warn () {
echo "$*"
}
} >&2
die () {
echo
echo "$*"
echo
exit 1
}
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MSYS* | MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
@@ -87,9 +121,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD="$JAVA_HOME/bin/java"
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@@ -98,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
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.
Please set the JAVA_HOME variable in your environment to match the
@@ -106,80 +140,105 @@ location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=`expr $i + 1`
done
case $i in
0) set -- ;;
1) set -- "$args0" ;;
2) set -- "$args0" "$args1" ;;
3) set -- "$args0" "$args1" "$args2" ;;
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=`save "$@"`
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"

15
gradlew.bat vendored
View File

@@ -14,7 +14,7 @@
@rem limitations under the License.
@rem
@if "%DEBUG%" == "" @echo off
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@@ -25,7 +25,8 @@
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto execute
if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal

6580
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

9
package.json Normal file
View File

@@ -0,0 +1,9 @@
{
"devDependencies": {
"@saithodev/semantic-release-backmerge": "^3.1.0",
"@semantic-release/changelog": "^6.0.2",
"@semantic-release/git": "^10.0.1",
"gradle-semantic-release-plugin": "^1.7.6",
"semantic-release": "^20.1.0"
}
}

File diff suppressed because one or more lines are too long

View File

@@ -1,34 +1,30 @@
package app.revanced.extensions
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.data.ResourceContext
import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.extensions.MethodFingerprintExtensions.name
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import app.revanced.patcher.patch.PatchResultError
import app.revanced.patcher.util.proxy.mutableTypes.MutableClass
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
import app.revanced.patcher.util.smali.toInstruction
import org.jf.dexlib2.AccessFlags
import org.jf.dexlib2.Opcode
import org.jf.dexlib2.builder.MutableMethodImplementation
import org.jf.dexlib2.builder.instruction.BuilderInstruction11n
import org.jf.dexlib2.builder.instruction.BuilderInstruction11x
import org.jf.dexlib2.builder.instruction.BuilderInstruction21t
import org.jf.dexlib2.builder.instruction.BuilderInstruction35c
import org.jf.dexlib2.immutable.reference.ImmutableMethodReference
import org.jf.dexlib2.iface.Method
import org.jf.dexlib2.util.MethodUtil
import org.w3c.dom.Node
import java.nio.file.Files
// TODO: populate this to all patches
/**
* Convert a [MethodFingerprint] to a [PatchResultError].
*
* @return A [PatchResultError] for the [MethodFingerprint].
*/
fun MethodFingerprint.toErrorResult() = PatchResultError("Failed to resolve $name")
/**
* traverse the class hierarchy starting from the given root class
* Find the [MutableMethod] from a given [Method] in a [MutableClass].
*
* @param targetClass the class to start traversing the class hierarchy from
* @param callback function that is called for every class in the hierarchy
* @param method The [Method] to find.
* @return The [MutableMethod].
*/
fun BytecodeContext.traverseClassHierarchy(targetClass: MutableClass, callback: MutableClass.() -> Unit) {
callback(targetClass)
this.findClass(targetClass.superclass ?: return)?.mutableClass?.let {
traverseClassHierarchy(it, callback)
}
fun MutableClass.findMutableMethodOf(method: Method) = this.methods.first {
MethodUtil.methodSignaturesMatch(it, method)
}
/**
@@ -42,160 +38,7 @@ fun MutableClass.transformMethods(transform: MutableMethod.() -> MutableMethod)
methods.addAll(transformedMethods)
}
/**
* Insert an event hook at the top of the method. If the hook returns true, the event is consumed and the method will return with true
*
* the hook method MUST return a boolean and MUST take two parameters, like so:
* fun hook(thisRef: Object, eventData: Object): Boolean {}
*
* The final injected code will resemble the following logic:
* if( YouHook(this, event) ) { return true; }
* ...
*
* @param hookRef reference to the hook method
*/
internal fun MutableMethod.injectConsumableEventHook(hookRef: ImmutableMethodReference) {
val isStaticMethod = AccessFlags.STATIC.isSet(this.accessFlags)
this.implementation?.let { impl ->
// create label to index 0 to continue to the normal program flow
val lblContinueNormalFlow = impl.newLabelForIndex(0)
// define registers
/** V0 */
val regV0 = 0
/** this */
val regP0 = impl.registerCount - this.parameters.size - (if (isStaticMethod) 0 else 1)
/** motionEvent */
val regP1 = regP0 + 1
// insert instructions at the start of the method:
// if( Hook(this, event) ) { return true; }
impl.addInstructions(
0, listOf(
// invoke-static { p0, p1 } <hook>
BuilderInstruction35c(
Opcode.INVOKE_STATIC,
2,
regP0,
regP1,
0, 0, 0,
hookRef
),
// move-result v0
BuilderInstruction11x(
Opcode.MOVE_RESULT,
regV0
),
// if-eqz v0, :continue_normal_flow
BuilderInstruction21t(
Opcode.IF_EQZ,
regV0,
lblContinueNormalFlow
),
// const/4 v0, 0x1
BuilderInstruction11n(
Opcode.CONST_4,
regV0,
0x1
),
// return v0
BuilderInstruction11x(
Opcode.RETURN,
regV0
)
// :continue_normal_flow
)
)
}
}
/**
* inject resources into the patched app
*
* @param classLoader classloader to use for loading the resources
* @param patchDirectoryPath path to the files. this will be the directory you created under the 'resources' source folder
* @param resourceType the resource type, for example 'drawable'. this has to match both the source and the target
* @param resourceFileNames names of all resources of this type to inject
*/
fun ResourceContext.injectResources(
classLoader: ClassLoader,
patchDirectoryPath: String,
resourceType: String,
resourceFileNames: List<String>
) {
resourceFileNames.forEach { name ->
val relativePath = "$resourceType/$name"
val sourceRes = classLoader.getResourceAsStream("$patchDirectoryPath/$relativePath")
?: throw PatchResultError("could not open resource '$patchDirectoryPath/$relativePath'")
Files.copy(
sourceRes,
this["res"].resolve(relativePath).toPath()
)
}
}
/**
* inject strings into the patched app
*
* @param classLoader classloader to use for loading the resources
* @param patchDirectoryPath path to the files. this will be the directory you created under the 'resources' source folder
* @param languageIdentifier ISO 639-2 two- letter language code identifier (aka the one android uses for values directory)
*/
fun ResourceContext.injectStrings(
classLoader: ClassLoader,
patchDirectoryPath: String,
languageIdentifier: String? = null,
) {
val relativePath =
if (languageIdentifier.isNullOrBlank()) "values/strings.xml" else "values/strings-$languageIdentifier.xml"
// open source strings.xml
val sourceInputStream = classLoader.getResourceAsStream("$patchDirectoryPath/$relativePath")
?: throw PatchResultError("failed to open '$patchDirectoryPath/$relativePath'")
xmlEditor[sourceInputStream].use { sourceStringsXml ->
val strings = sourceStringsXml.file.getElementsByTagName("resources").item(0).childNodes
// open target strings.xml
xmlEditor["res/$relativePath"].use { targetStringsXml ->
val targetFile = targetStringsXml.file
val targetRootNode = targetFile.getElementsByTagName("resources").item(0)
// process all children strings in the source
for (i in 0 until strings.length) {
// clone the node from source to target
val node = strings.item(i).cloneNode(true)
targetFile.adoptNode(node)
targetRootNode.appendChild(node)
}
}
}
}
internal fun Node.doRecursively(action: (Node) -> Unit) {
action(this)
for (i in 0 until this.childNodes.length) this.childNodes.item(i).doRecursively(action)
}
internal fun String.startsWithAny(vararg prefixes: String): Boolean {
for (prefix in prefixes)
if (this.startsWith(prefix))
return true
return false
}
internal fun String.equalsAny(vararg other: String): Boolean {
for (_other in other)
if (this == _other)
return true
return false
}
}

View File

@@ -0,0 +1,70 @@
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 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))
}
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>,
) {
class CompatiblePackage(
val name: String,
val versions: Array<String>,
)
class Option(
val key: String,
val title: String,
val description: String,
val required: Boolean,
val choices: Array<*>?,
)
}
}

View File

@@ -1,27 +0,0 @@
package app.revanced.meta
import app.revanced.meta.json.generateJson
import app.revanced.meta.readme.generateText
import app.revanced.patcher.data.Context
import app.revanced.patcher.patch.Patch
import app.revanced.patcher.util.patch.PatchBundle
import java.io.File
typealias Bundle = List<Class<out Patch<Context>>>
object Meta {
@JvmStatic
fun main(args: Array<String>) {
val patches = accumulatePatches()
if (patches.isEmpty()) throw IllegalStateException("No patches found")
generateText(patches)
generateJson(patches)
}
}
fun accumulatePatches() = PatchBundle.Jar(
File("build/libs/").listFiles()!!.first {
it.name.startsWith("revanced-patches-") && it.name.endsWith(".jar")
}.absolutePath
).loadPatches()

View File

@@ -0,0 +1,25 @@
package app.revanced.meta
import app.revanced.patcher.data.Context
import app.revanced.patcher.patch.Patch
import app.revanced.patcher.util.patch.PatchBundle
import java.io.File
typealias PatchBundlePatches = List<Class<out Patch<Context>>>
internal interface PatchesFileGenerator {
fun generate(bundle: PatchBundlePatches)
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")
}.let { bundle ->
arrayOf(JsonGenerator(), ReadmeGenerator()).forEach { it.generate(bundle) }
}
}
}

View File

@@ -0,0 +1,69 @@
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 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 {
// This is not foolproof, because for example v1.0.0-dev.0 will be returned instead of v1.0.0-release.
// Unfortunately this can not be solved easily because versioning can be complex.
commonMap.entries.filter { mostCommon -> mostCommon.value == it }.maxBy { it.key }.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,50 +0,0 @@
package app.revanced.meta.json
import app.revanced.meta.Bundle
import app.revanced.patcher.extensions.PatchExtensions.compatiblePackages
import app.revanced.patcher.extensions.PatchExtensions.dependencies
import app.revanced.patcher.extensions.PatchExtensions.deprecated
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 com.google.gson.GsonBuilder
import java.io.File
private val gson = GsonBuilder().serializeNulls().create()
fun generateJson(bundle: Bundle) {
val patches = bundle.map {
JsonPatch(
it.patchName,
it.description ?: "This patch has no description.",
it.version ?: "0.0.0",
!it.include,
it.deprecated != null,
it.options?.map { option ->
Option(
option.key,
option.title,
option.description,
option.required,
option.let { lo ->
if (lo is PatchOption.ListOption<*>) {
lo.options.toMutableList().toTypedArray()
} else null
}
)
}?.toTypedArray() ?: emptyArray(),
it.dependencies?.map { dep ->
dep.java.patchName
}?.toTypedArray() ?: emptyArray(),
it.compatiblePackages?.map { pkg ->
CompatiblePackage(pkg.name, pkg.versions)
}?.toTypedArray() ?: emptyArray()
)
}
val json = File("patches.json")
json.writeText(gson.toJson(patches))
}

View File

@@ -1,27 +0,0 @@
@file:Suppress("ArrayInDataClass") // We don't need it here.
package app.revanced.meta.json
data class JsonPatch(
val name: String,
val description: String,
val version: String,
val excluded: Boolean,
val deprecated: Boolean,
val options: Array<Option>,
val dependencies: Array<String>,
val compatiblePackages: Array<CompatiblePackage>,
)
data class CompatiblePackage(
val name: String,
val versions: Array<String>,
)
data class Option(
val key: String,
val title: String,
val description: String,
val required: Boolean,
val choices: Array<*>?,
)

View File

@@ -1,10 +0,0 @@
package app.revanced.meta.readme
import app.revanced.patcher.data.Context
import app.revanced.patcher.extensions.PatchExtensions.compatiblePackages
import app.revanced.patcher.patch.Patch
internal fun Class<out Patch<Context>>.getLatestVersion() =
this.compatiblePackages?.first()?.versions?.map {
SemanticVersion.fromString(it)
}?.maxWithOrNull(SemanticVersionComparator)

View File

@@ -1,42 +0,0 @@
package app.revanced.meta.readme
import app.revanced.meta.Bundle
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 java.io.File
private const val TABLE_HEADER =
"| \uD83D\uDC8A Patch | \uD83D\uDCDC Description | \uD83C\uDFF9 Target Version |\n" + "|:--------:|:--------------:|:-----------------:|"
private val TABLE_REGEX = Regex("\\{\\{\\s?table\\s?}}")
fun generateText(bundle: Bundle) {
val output = StringBuilder()
val packages = mutableMapOf<String, MutableList<Class<out Patch<Context>>>>()
for (patch in bundle) {
patch.compatiblePackages?.forEach { pkg ->
if (!packages.contains(pkg.name)) packages[pkg.name] = mutableListOf()
packages[pkg.name]!!.add(patch)
}
}
for (pkg in packages) {
output.appendLine("### \uD83D\uDCE6 `${pkg.key}`")
output.appendLine("<details>\n")
output.appendLine(TABLE_HEADER)
pkg.value.forEach { output.appendLine("| `${it.patchName}` | ${it.description} | ${it.getLatestVersion() ?: "all"} |") }
output.appendLine("</details>\n")
}
val readmeTemplate = Template(File("README-template.md").readText())
readmeTemplate.replaceVariable(TABLE_REGEX, output.toString())
val readme = File("README.md")
readme.writeText(readmeTemplate.toString())
}

View File

@@ -1,22 +0,0 @@
package app.revanced.meta.readme
data class SemanticVersion(val major: Int, val minor: Int, val patch: Int) {
companion object {
fun fromString(version: String): SemanticVersion {
val parts = version.split(".")
if (parts.count() != 3) throw IllegalArgumentException("Invalid semantic version")
val versionNumbers = parts.map { it.toInt() }
return SemanticVersion(versionNumbers[0], versionNumbers[1], versionNumbers[2])
}
}
override fun toString(): String = "$major.$minor.$patch"
}
object SemanticVersionComparator : Comparator<SemanticVersion> {
override fun compare(a: SemanticVersion, b: SemanticVersion): Int = when {
a.major != b.major -> a.major - b.major
a.minor != b.minor -> a.minor - b.minor
else -> a.patch - b.patch
}
}

View File

@@ -1,12 +0,0 @@
package app.revanced.meta.readme
class Template(template: String) {
val result = StringBuilder(template)
fun replaceVariable(regex: Regex, value: String) {
val range = regex.find(result)!!.range
result.replace(range.first, range.last + 1, value)
}
override fun toString(): String = result.toString()
}

View File

@@ -0,0 +1,45 @@
package app.revanced.patches.all.activity.exportAll.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("export-all-activities")
@Description("Makes all app activities exportable.")
@Version("0.0.1")
class ExportAllActivitiesPatch : ResourcePatch {
override fun execute(context: ResourceContext): PatchResult {
context.xmlEditor["AndroidManifest.xml"].use { editor ->
val document = editor.file
val activities = document.getElementsByTagName("activity")
for(i in 0..activities.length) {
activities.item(i)?.apply {
val exportedAttribute = attributes.getNamedItem(EXPORTED_FLAG)
if (exportedAttribute != null) {
if (exportedAttribute.nodeValue != "true")
exportedAttribute.nodeValue = "true"
}
// Reason why the attribute is added in the case it does not exist:
// https://github.com/revanced/revanced-patches/pull/1751/files#r1141481604
else document.createAttribute(EXPORTED_FLAG)
.apply { value = "true" }
.let(attributes::setNamedItem)
}
}
}
return PatchResultSuccess()
}
private companion object {
const val EXPORTED_FLAG = "android:exported"
}
}

View File

@@ -0,0 +1,208 @@
package app.revanced.patches.all.connectivity.wifi.spoof.patch
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.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.*
@Patch(false)
@Name("spoof-wifi-connection")
@Description("Spoofs an existing Wi-Fi connection.")
@Version("0.0.1")
@RequiresIntegrations
internal class SpoofWifiPatch : AbstractTransformInstructionsPatch<Instruction35cInfo>() {
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};"
}
// 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 {
GetSystemService1(
"Landroid/content/Context;",
"getSystemService",
arrayOf("Ljava/lang/String;"),
"Ljava/lang/Object;",
),
GetSystemService2(
"Landroid/content/Context;",
"getSystemService",
arrayOf("Ljava/lang/Class;"),
"Ljava/lang/Object;",
),
GetActiveNetworkInfo(
"Landroid/net/ConnectivityManager;",
"getActiveNetworkInfo",
arrayOf(),
"Landroid/net/NetworkInfo;",
),
IsConnected(
"Landroid/net/NetworkInfo;",
"isConnected",
arrayOf(),
"Z",
),
IsConnectedOrConnecting(
"Landroid/net/NetworkInfo;",
"isConnectedOrConnecting",
arrayOf(),
"Z",
),
IsAvailable(
"Landroid/net/NetworkInfo;",
"isAvailable",
arrayOf(),
"Z",
),
GetState(
"Landroid/net/NetworkInfo;",
"getState",
arrayOf(),
"Landroid/net/NetworkInfo\$State;",
),
GetDetailedState(
"Landroid/net/NetworkInfo;",
"getDetailedState",
arrayOf(),
"Landroid/net/NetworkInfo\$DetailedState;",
),
IsActiveNetworkMetered(
"Landroid/net/ConnectivityManager;",
"isActiveNetworkMetered",
arrayOf(),
"Z",
),
GetActiveNetwork(
"Landroid/net/ConnectivityManager;",
"getActiveNetwork",
arrayOf(),
"Landroid/net/Network;",
),
GetNetworkInfo(
"Landroid/net/ConnectivityManager;",
"getNetworkInfo",
arrayOf("Landroid/net/Network;"),
"Landroid/net/NetworkInfo;",
),
HasTransport(
"Landroid/net/NetworkCapabilities;",
"hasTransport",
arrayOf("I"),
"Z",
),
HasCapability(
"Landroid/net/NetworkCapabilities;",
"hasCapability",
arrayOf("I"),
"Z",
),
RegisterBestMatchingNetworkCallback(
"Landroid/net/ConnectivityManager;",
"registerBestMatchingNetworkCallback",
arrayOf("Landroid/net/NetworkRequest;", "Landroid/net/ConnectivityManager\$NetworkCallback;", "Landroid/os/Handler;"),
"V",
),
RegisterDefaultNetworkCallback1(
"Landroid/net/ConnectivityManager;",
"registerDefaultNetworkCallback",
arrayOf("Landroid/net/ConnectivityManager\$NetworkCallback;"),
"V",
),
RegisterDefaultNetworkCallback2(
"Landroid/net/ConnectivityManager;",
"registerDefaultNetworkCallback",
arrayOf("Landroid/net/ConnectivityManager\$NetworkCallback;", "Landroid/os/Handler;"),
"V",
),
RegisterNetworkCallback1(
"Landroid/net/ConnectivityManager;",
"registerNetworkCallback",
arrayOf("Landroid/net/NetworkRequest;", "Landroid/net/ConnectivityManager\$NetworkCallback;"),
"V",
),
RegisterNetworkCallback2(
"Landroid/net/ConnectivityManager;",
"registerNetworkCallback",
arrayOf("Landroid/net/NetworkRequest;", "Landroid/app/PendingIntent;"),
"V",
),
RegisterNetworkCallback3(
"Landroid/net/ConnectivityManager;",
"registerNetworkCallback",
arrayOf("Landroid/net/NetworkRequest;", "Landroid/net/ConnectivityManager\$NetworkCallback;", "Landroid/os/Handler;"),
"V",
),
RequestNetwork1(
"Landroid/net/ConnectivityManager;",
"requestNetwork",
arrayOf("Landroid/net/NetworkRequest;", "Landroid/net/ConnectivityManager\$NetworkCallback;"),
"V",
),
RequestNetwork2(
"Landroid/net/ConnectivityManager;",
"requestNetwork",
arrayOf("Landroid/net/NetworkRequest;", "Landroid/net/ConnectivityManager\$NetworkCallback;", "I"),
"V",
),
RequestNetwork3(
"Landroid/net/ConnectivityManager;",
"requestNetwork",
arrayOf("Landroid/net/NetworkRequest;", "Landroid/net/ConnectivityManager\$NetworkCallback;", "Landroid/os/Handler;"),
"V",
),
RequestNetwork4(
"Landroid/net/ConnectivityManager;",
"requestNetwork",
arrayOf("Landroid/net/NetworkRequest;", "Landroid/app/PendingIntent;"),
"V",
),
RequestNetwork5(
"Landroid/net/ConnectivityManager;",
"requestNetwork",
arrayOf("Landroid/net/NetworkRequest;", "Landroid/net/ConnectivityManager\$NetworkCallback;", "Landroid/os/Handler;", "I"),
"V",
),
UnregisterNetworkCallback1(
"Landroid/net/ConnectivityManager;",
"unregisterNetworkCallback",
arrayOf("Landroid/net/ConnectivityManager\$NetworkCallback;"),
"V",
),
UnregisterNetworkCallback2(
"Landroid/net/ConnectivityManager;",
"unregisterNetworkCallback",
arrayOf("Landroid/app/PendingIntent;"),
"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,37 @@
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,43 @@
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.DependsOn
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 = true,
title = "App debugging",
description = "Whether to make the app debuggable on Android.",
)
)
}
}

View File

@@ -0,0 +1,50 @@
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 = ""
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 = "",
title = "Package name",
description = "The name of the package to rename of the app.",
)
)
}
}

View File

@@ -0,0 +1,59 @@
package app.revanced.patches.all.screenshot.removerestriction.patch
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.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.*
@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 =
"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",
);
}
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,7 @@
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

@@ -0,0 +1,15 @@
package app.revanced.patches.backdrops.misc.pro.fingerprints
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import org.jf.dexlib2.Opcode
object ProUnlockFingerprint : MethodFingerprint(
opcodes = listOf(
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT_OBJECT,
Opcode.INVOKE_INTERFACE,
Opcode.MOVE_RESULT,
Opcode.IF_EQZ
),
customFingerprint = { it.definingClass == "Lcom/backdrops/wallpapers/data/local/DatabaseHandlerIAB;" && it.name == "lambda\$existPurchase\$0" }
)

View File

@@ -0,0 +1,42 @@
package app.revanced.patches.backdrops.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.MethodFingerprintExtensions.name
import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.extensions.instruction
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultError
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 {
val result = ProUnlockFingerprint.result ?: return PatchResultError("${ProUnlockFingerprint.name} not found")
val moveRegisterInstruction = result.mutableMethod.instruction(result.scanResult.patternScanResult!!.endIndex - 1)
val register = (moveRegisterInstruction as OneRegisterInstruction).registerA
result.mutableMethod.addInstructions(
result.scanResult.patternScanResult!!.endIndex,
"""
const/4 v$register, 0x1
"""
)
return PatchResultSuccess()
}
}

View File

@@ -0,0 +1,7 @@
package app.revanced.patches.citra.misc.premium.annotations
import app.revanced.patcher.annotation.Compatibility
import app.revanced.patcher.annotation.Package
@Compatibility([Package("org.citra.citra_emu"), Package("org.citra.citra_emu.canary")])
internal annotation class PremiumUnlockCompatbility

View File

@@ -0,0 +1,7 @@
package app.revanced.patches.citra.misc.premium.fingerprints
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
object PremiumUnlockFingerprint : MethodFingerprint(
customFingerprint = { it.definingClass == "Lorg/citra/citra_emu/ui/main/MainActivity;" && it.name == "isPremiumActive" }
)

View File

@@ -0,0 +1,37 @@
package app.revanced.patches.citra.misc.premium.patch
import app.revanced.patcher.annotation.Description
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotations.Patch
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.MethodFingerprintExtensions.name
import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.patch.PatchResult
import app.revanced.patcher.patch.PatchResultError
import app.revanced.patcher.patch.PatchResultSuccess
import app.revanced.patches.citra.misc.premium.annotations.PremiumUnlockCompatbility
import app.revanced.patches.citra.misc.premium.fingerprints.PremiumUnlockFingerprint
@Patch
@Name("premium-unlock")
@Description("Unlocks premium functions.")
@PremiumUnlockCompatbility
@Version("0.0.1")
class PremiumUnlockPatch : BytecodePatch(
listOf(PremiumUnlockFingerprint)
) {
override fun execute(context: BytecodeContext): PatchResult {
val result = PremiumUnlockFingerprint.result ?: return PatchResultError("${PremiumUnlockFingerprint.name} not found")
result.mutableMethod.addInstructions(
0,
"""
const v0, 0x1
return v0
"""
)
return PatchResultSuccess()
}
}

View File

@@ -0,0 +1,13 @@
package app.revanced.patches.finanzonline.detection.bootloader.fingerprints
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import org.jf.dexlib2.AccessFlags
object BootStateFingerprint : MethodFingerprint(
"Z",
access = AccessFlags.PUBLIC.value,
strings = listOf("Boot state of device: %s"),
customFingerprint = { methodDef ->
methodDef.definingClass.endsWith("/AttestationHelper;")
}
)

View File

@@ -0,0 +1,13 @@
package app.revanced.patches.finanzonline.detection.bootloader.fingerprints
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import org.jf.dexlib2.AccessFlags
object BootloaderDetectionFingerprint : MethodFingerprint(
"Z",
access = AccessFlags.PUBLIC.value,
strings = listOf("Creation of attestation key succeeded", "Creation of attestation key failed"),
customFingerprint = { methodDef ->
methodDef.definingClass.endsWith("/AttestationHelper;")
}
)

View File

@@ -0,0 +1,38 @@
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.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.finanzonline.detection.bootloader.fingerprints.BootStateFingerprint
import app.revanced.patches.finanzonline.detection.bootloader.fingerprints.BootloaderDetectionFingerprint
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(BootloaderDetectionFingerprint, BootStateFingerprint)
) {
override fun execute(context: BytecodeContext): PatchResult {
arrayOf(BootloaderDetectionFingerprint, BootStateFingerprint).forEach { fingerprint ->
fingerprint.result?.mutableMethod?.addInstruction(
0,
"""
const/4 v0, 0x1
return v0
"""
) ?: return fingerprint.toErrorResult()
}
return PatchResultSuccess()
}
}

View File

@@ -0,0 +1,10 @@
package app.revanced.patches.finanzonline.detection.root.fingerprints
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
object RootDetectionFingerprint : MethodFingerprint(
"L",
customFingerprint = { methodDef ->
methodDef.definingClass == "Lat/gv/bmf/bmf2go/tools/utils/z;"
}
)

View File

@@ -0,0 +1,34 @@
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.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

@@ -0,0 +1,8 @@
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", arrayOf("2.2.0"))])
@Target(AnnotationTarget.CLASS)
internal annotation class DetectionCompatibility

View File

@@ -9,5 +9,4 @@ import app.revanced.patcher.annotation.Package
]
)
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
internal annotation class HexEditorAdsCompatibility

View File

@@ -1,13 +1,7 @@
package app.revanced.patches.hexeditor.ad.fingerprints
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import app.revanced.patches.hexeditor.ad.annotations.HexEditorAdsCompatibility
@Name("ads-fingerprint-primary")
@HexEditorAdsCompatibility
@Version("0.0.1")
object PrimaryAdsFingerprint : MethodFingerprint(
customFingerprint = { methodDef ->
methodDef.definingClass.endsWith("PreferencesHelper;") && methodDef.name == "isAdsDisabled"

View File

@@ -5,5 +5,4 @@ import app.revanced.patcher.annotation.Package
@Compatibility([Package("ginlemon.iconpackstudio")])
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
internal annotation class UnlockProCompatibility

View File

@@ -1,13 +1,7 @@
package app.revanced.patches.iconpackstudio.misc.pro.fingerprints
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import app.revanced.patches.iconpackstudio.misc.pro.annotations.UnlockProCompatibility
@Name("check-pro-fingerprint")
@UnlockProCompatibility
@Version("0.0.1")
object CheckProFingerprint : MethodFingerprint(
"Z",
customFingerprint = { it.definingClass.endsWith("IPSPurchaseRepository;")}

View File

@@ -0,0 +1,12 @@
package app.revanced.patches.idaustria.detection.root.fingerprints
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import org.jf.dexlib2.AccessFlags
object RootDetectionFingerprint : MethodFingerprint(
"V",
access = AccessFlags.PUBLIC.value,
customFingerprint = { methodDef ->
methodDef.definingClass.endsWith("/DeviceIntegrityCheck;")
}
)

View File

@@ -0,0 +1,25 @@
package app.revanced.patches.idaustria.detection.root.patch
import app.revanced.patcher.annotation.*
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.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.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.addInstructions(0, "return-void")
return PatchResultSuccess()
}
}

View File

@@ -0,0 +1,8 @@
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", arrayOf("2.5.2", "2.6.0"))])
@Target(AnnotationTarget.CLASS)
internal annotation class DetectionCompatibility

View File

@@ -0,0 +1,13 @@
package app.revanced.patches.idaustria.detection.signature.fingerprints
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import org.jf.dexlib2.AccessFlags
object SpoofSignatureFingerprint : MethodFingerprint(
"L",
parameters = listOf("L"),
access = AccessFlags.PRIVATE.value,
customFingerprint = { methodDef ->
methodDef.definingClass.endsWith("/SL2Step1Task;") && methodDef.name == "getPubKey"
}
)

View File

@@ -0,0 +1,45 @@
package app.revanced.patches.idaustria.detection.signature.patch
import app.revanced.patcher.annotation.*
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.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.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)
) {
companion object {
const val EXPECTED_SIGNATURE = "OpenSSLRSAPublicKey{modulus=ac3e6fd6050aa7e0d6010ae58190404cd89a56935b44f6fee" +
"067c149768320026e10b24799a1339e414605e448e3f264444a327b9ae292be2b62ad567dd1800dbed4a88f718a33dc6db6b" +
"f5178aa41aa0efff8a3409f5ca95dbfccd92c7b4298966df806ea7a0204a00f0e745f6d9f13bdf24f3df715d7b62c1600906" +
"15de1c8a956b9286764985a3b3c060963c435fb9481a5543aaf0671fc2dba6c5c2b17d1ef1d85137f14dc9bbdf3490288087" +
"324cd48341cce64fabf6a9b55d1a7bf23b2fcdff451fd85bf0c7feb0a5e884d7c5c078e413149566a12a686e6efa70ae5161" +
"a0201307692834cda336c55157fef125e67c01c1359886f94742105596b42a790404bbcda5dad6a65f115aaff5e45ef3c28b" +
"2316ff6cef07aa49a45aa58c07bf258051b13ef449ccb37a3679afd5cfb9132f70bb9d931a937897544f90c3bcc80ed012e9" +
"f6ba020b8cdc23f8c29ac092b88f0e370ff9434e4f0f359e614ae0868dc526fa41e4b7596533e8d10279b66e923ecd9f0b20" +
"0def55be2c1f6f9c72c92fb45d7e0a9ac571cb38f0a9a37bb33ea06f223fde8c7a92e8c47769e386f9799776e8f110c21df2" +
"77ef1be61b2c01ebdabddcbf53cc4b6fd9a3c445606ee77b3758162c80ad8f8137b3c6864e92db904807dcb2be9d7717dd21" +
"bf42c121d620ddfb7914f7a95c713d9e1c1b7bdb4a03d618e40cf7e9e235c0b5687e03b7ab3,publicExponent=10001}"
}
override fun execute(context: BytecodeContext): PatchResult {
SpoofSignatureFingerprint.result!!.mutableMethod.addInstructions(
0,
"""
const-string v0, "$EXPECTED_SIGNATURE"
return-object v0
"""
)
return PatchResultSuccess()
}
}

View File

@@ -0,0 +1,9 @@
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

@@ -0,0 +1,9 @@
package app.revanced.patches.inshorts.ad.fingerprints
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import org.jf.dexlib2.Opcode
object InshortsAdsFingerprint : MethodFingerprint(
"V",
strings = listOf("GoogleAdLoader","exception in requestAd")
)

View File

@@ -0,0 +1,38 @@
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.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

@@ -0,0 +1,7 @@
package app.revanced.patches.instagram.patches.ads.timeline.fingerprints
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
object MediaFingerprint : MethodFingerprint(
strings = listOf("force_overlay", "Media#updateFields", "live_reels_metadata")
)

View File

@@ -0,0 +1,25 @@
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
object ShowAdFingerprint : MethodFingerprint(
"Z",
AccessFlags.PUBLIC or AccessFlags.STATIC or AccessFlags.FINAL,
listOf("L", "L", "Z", "Z"),
opcodes = listOf(
Opcode.INVOKE_STATIC,
Opcode.MOVE_RESULT,
Opcode.IF_NEZ,
Opcode.RETURN,
Opcode.CONST_4,
Opcode.GOTO,
Opcode.CONST_4,
Opcode.GOTO,
Opcode.CONST_4,
Opcode.GOTO,
Opcode.CONST_4,
),
)

View File

@@ -0,0 +1,18 @@
package app.revanced.patches.instagram.patches.ads.timeline.fingerprints.ads
import org.jf.dexlib2.Opcode
object GenericMediaAdFingerprint : MediaAdFingerprint(
opcodes = listOf(
Opcode.INVOKE_INTERFACE,
Opcode.MOVE_RESULT_OBJECT,
Opcode.INVOKE_INTERFACE,
Opcode.MOVE_RESULT_OBJECT,
Opcode.CONST_4,
Opcode.IF_EQZ,
Opcode.CONST_4,
Opcode.RETURN,
)
) {
override fun toString() = result!!.method.toString()
}

View File

@@ -0,0 +1,23 @@
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.Method
abstract class MediaAdFingerprint(
returnType: String? = "Z",
access: Int? = AccessFlags.PUBLIC or AccessFlags.FINAL,
parameters: Iterable<String>? = listOf(),
opcodes: Iterable<Opcode>?,
customFingerprint: ((methodDef: Method) -> Boolean)? = null
) : MethodFingerprint(
returnType,
access,
parameters,
opcodes,
customFingerprint = customFingerprint
) {
abstract override fun toString(): String
}

View File

@@ -0,0 +1,29 @@
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
object PaidPartnershipAdFingerprint : MediaAdFingerprint(
"V",
null,
listOf("L", "L"),
listOf(
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT,
Opcode.IPUT_BOOLEAN,
Opcode.IPUT_BOOLEAN
),
customFingerprint = { methodDef ->
methodDef.definingClass.endsWith("ClipsEditMetadataController;")
}
) {
override fun toString() = result!!.let {
val adCheckIndex = it.scanResult.patternScanResult!!.startIndex
val adCheckInstruction = it.method.implementation!!.instructions.elementAt(adCheckIndex)
val adCheckMethod = (adCheckInstruction as ReferenceInstruction).reference as MethodReference
adCheckMethod.toString()
}
}

View File

@@ -0,0 +1,21 @@
package app.revanced.patches.instagram.patches.ads.timeline.fingerprints.ads
import org.jf.dexlib2.Opcode
object ShoppingAdFingerprint : MediaAdFingerprint(
opcodes = listOf(
Opcode.IF_EQZ,
Opcode.IGET_OBJECT,
Opcode.IGET_OBJECT,
Opcode.IF_EQZ,
Opcode.IGET_OBJECT,
Opcode.IF_EQZ,
Opcode.IGET_OBJECT,
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT,
Opcode.XOR_INT_LIT8,
Opcode.IF_EQZ,
)
) {
override fun toString() = result!!.method.toString()
}

View File

@@ -0,0 +1,108 @@
package app.revanced.patches.instagram.patches.ads.timeline.patch
import app.revanced.extensions.toErrorResult
import app.revanced.patcher.annotation.*
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.addInstructions
import app.revanced.patcher.extensions.instruction
import app.revanced.patcher.extensions.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.util.smali.ExternalLabel
import app.revanced.patches.instagram.patches.ads.timeline.fingerprints.MediaFingerprint
import app.revanced.patches.instagram.patches.ads.timeline.fingerprints.ShowAdFingerprint
import app.revanced.patches.instagram.patches.ads.timeline.fingerprints.ads.GenericMediaAdFingerprint
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
@Patch
@Name("hide-timeline-ads")
@Description("Removes ads from the timeline.")
@Compatibility([Package("com.instagram.android")])
@Version("0.0.1")
class HideTimelineAdsPatch : BytecodePatch(
listOf(
ShowAdFingerprint,
MediaFingerprint,
PaidPartnershipAdFingerprint // Unlike the other ads this one is resolved from all classes.
)
) {
override fun execute(context: BytecodeContext): PatchResult {
// region Resolve required methods to check for ads.
ShowAdFingerprint.result ?: return ShowAdFingerprint.toErrorResult()
PaidPartnershipAdFingerprint.result ?: return PaidPartnershipAdFingerprint.toErrorResult()
MediaFingerprint.result?.let {
GenericMediaAdFingerprint.resolve(context, it.classDef)
ShoppingAdFingerprint.resolve(context, it.classDef)
return@let
} ?: return MediaFingerprint.toErrorResult()
// endregion
ShowAdFingerprint.result!!.apply {
// region Create instructions.
val scanStart = scanResult.patternScanResult!!.startIndex
val jumpIndex = scanStart - 1
val mediaInstanceRegister = (mutableMethod.instruction(scanStart) as FiveRegisterInstruction).registerC
val freeRegister = (mutableMethod.instruction(jumpIndex) as OneRegisterInstruction).registerA
val returnFalseLabel = "an_ad"
val checkForAdInstructions =
listOf(GenericMediaAdFingerprint, PaidPartnershipAdFingerprint, ShoppingAdFingerprint)
.map(MediaAdFingerprint::toString)
.joinToString("\n") {
"""
invoke-virtual {v$mediaInstanceRegister}, $it
move-result v$freeRegister
if-nez v$freeRegister, :$returnFalseLabel
""".trimIndent()
}.let { "$it\nconst/4 v0, 0x1\nreturn v0" }
// endregion
// region Patch.
val insertIndex = scanStart + 3
mutableMethod.addInstructions(
insertIndex,
checkForAdInstructions,
listOf(
ExternalLabel(
returnFalseLabel,
mutableMethod.instruction(mutableMethod.implementation!!.instructions.size - 2 /* return false = ad */)
)
)
)
// endregion
// region Jump to checks for ads from previous patch.
mutableMethod.apply {
addInstructions(
jumpIndex + 1,
"if-nez v$freeRegister, :start_check",
listOf(ExternalLabel("start_check", instruction(insertIndex)))
)
}.removeInstruction(jumpIndex)
// endregion
}
return PatchResultSuccess()
}
}

View File

@@ -0,0 +1,8 @@
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

@@ -0,0 +1,12 @@
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
object IrplusAdsFingerprint : MethodFingerprint(
"V",
AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR,
listOf("L", "Z"),
strings = listOf("TAGGED")
)

View File

@@ -0,0 +1,33 @@
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.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,24 @@
package app.revanced.patches.memegenerator.detection.license.fingerprint
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import org.jf.dexlib2.AccessFlags
import org.jf.dexlib2.Opcode
object LicenseValidationFingerprint : MethodFingerprint(
returnType = "Z",
access = AccessFlags.PUBLIC or AccessFlags.STATIC,
parameters = listOf("Landroid/content/Context;"),
opcodes = listOf(
Opcode.INVOKE_STATIC,
Opcode.MOVE_RESULT_WIDE,
Opcode.INVOKE_STATIC,
Opcode.MOVE_RESULT_WIDE,
Opcode.CMP_LONG,
Opcode.IF_GEZ,
Opcode.CONST_4,
Opcode.RETURN,
Opcode.CONST_4,
Opcode.RETURN
)
)

View File

@@ -0,0 +1,31 @@
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.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,35 @@
package app.revanced.patches.memegenerator.detection.signature.fingerprint
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
@FuzzyPatternScanMethod(2)
object VerifySignatureFingerprint : MethodFingerprint(
returnType = "Z",
access = AccessFlags.PUBLIC or AccessFlags.STATIC,
parameters = listOf("Landroid/app/Activity;"),
opcodes = listOf(
Opcode.SGET_OBJECT,
Opcode.IF_NEZ,
Opcode.INVOKE_STATIC,
Opcode.CONST_4,
Opcode.CONST_4,
Opcode.SGET_OBJECT,
Opcode.ARRAY_LENGTH,
Opcode.IF_GE,
Opcode.AGET_OBJECT,
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT_OBJECT,
Opcode.SGET_OBJECT,
Opcode.IF_EQZ,
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT,
Opcode.IF_EQZ,
Opcode.CONST_4,
Opcode.RETURN,
Opcode.ADD_INT_LIT8
),
)

View File

@@ -0,0 +1,31 @@
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.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,8 @@
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"))])
@Target(AnnotationTarget.CLASS)
internal annotation class UnlockProCompatibility

View File

@@ -0,0 +1,22 @@
package app.revanced.patches.memegenerator.misc.pro.fingerprint
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import org.jf.dexlib2.AccessFlags
import org.jf.dexlib2.Opcode
object IsFreeVersionFingerprint : MethodFingerprint(
returnType = "Ljava/lang/Boolean;",
access = AccessFlags.PUBLIC or AccessFlags.STATIC,
strings = listOf("free"),
parameters = listOf("Landroid/content/Context;"),
opcodes = listOf(
Opcode.SGET,
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT_OBJECT,
Opcode.CONST_STRING,
Opcode.INVOKE_VIRTUAL,
Opcode.MOVE_RESULT,
Opcode.IF_EQZ
)
)

View File

@@ -0,0 +1,45 @@
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.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

@@ -0,0 +1,18 @@
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
object LoadInboxAdsFingerprint : MethodFingerprint(
returnType = "V",
strings = listOf(
"ads_load_begin",
"inbox_ads_fetch_start"
),
access = AccessFlags.PUBLIC or AccessFlags.STATIC,
customFingerprint = {
it.definingClass == "Lcom/facebook/messaging/business/inboxads/plugins/inboxads/itemsupplier/InboxAdsItemSupplierImplementation;"
}
)

View File

@@ -0,0 +1,29 @@
package app.revanced.patches.messenger.ads.inbox.patch
import app.revanced.extensions.toErrorResult
import app.revanced.patcher.annotation.*
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.replaceInstruction
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.messenger.ads.inbox.fingerprints.LoadInboxAdsFingerprint
@Patch
@Name("hide-inbox-ads")
@Description("Hides ads in inbox.")
@Compatibility([Package("com.facebook.orca")])
@Version("0.0.1")
class HideInboxAdsPatch : BytecodePatch(
listOf(LoadInboxAdsFingerprint)
) {
override fun execute(context: BytecodeContext): PatchResult {
LoadInboxAdsFingerprint.result?.mutableMethod?.apply {
this.replaceInstruction(0, "return-void")
} ?: return LoadInboxAdsFingerprint.toErrorResult()
return PatchResultSuccess()
}
}

View File

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

View File

@@ -0,0 +1,19 @@
package app.revanced.patches.moneymanager.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
object UnlockProFingerprint : MethodFingerprint(
"Z",
AccessFlags.STATIC or AccessFlags.SYNTHETIC,
parameters = listOf("L"),
opcodes = listOf(
Opcode.IGET_BOOLEAN,
Opcode.RETURN
),
customFingerprint = { methodDef ->
methodDef.definingClass.endsWith("MainActivity;")
}
)

View File

@@ -0,0 +1,34 @@
package app.revanced.patches.moneymanager.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.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.moneymanager.annotations.UnlockProCompatibility
import app.revanced.patches.moneymanager.fingerprints.UnlockProFingerprint
@Patch
@Name("unlock-pro")
@Description("Unlocks pro features.")
@UnlockProCompatibility
@Version("0.0.1")
class UnlockProPatch : BytecodePatch(
listOf(UnlockProFingerprint)
) {
override fun execute(context: BytecodeContext): PatchResult {
UnlockProFingerprint.result!!.mutableMethod.addInstructions(
0,
"""
const/4 v0, 0x1
return v0
"""
)
return PatchResultSuccess()
}
}

View File

@@ -3,11 +3,6 @@ package app.revanced.patches.music.ad.video.annotations
import app.revanced.patcher.annotation.Compatibility
import app.revanced.patcher.annotation.Package
@Compatibility(
[Package(
"com.google.android.apps.youtube.music", arrayOf("5.14.53", "5.16.51", "5.17.51", "5.21.52", "5.22.54", "5.23.50", "5.25.51", "5.25.52", "5.26.52", "5.27.51", "5.28.52", "5.29.52", "5.31.50")
)]
)
@Compatibility([Package("com.google.android.apps.youtube.music")])
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
internal annotation class MusicVideoAdsCompatibility

View File

@@ -1,18 +1,11 @@
package app.revanced.patches.music.ad.video.fingerprints
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.annotation.FuzzyPatternScanMethod
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import app.revanced.patches.music.ad.video.annotations.MusicVideoAdsCompatibility
import org.jf.dexlib2.AccessFlags
import org.jf.dexlib2.Opcode
@Name("show-video-ads-constructor-fingerprint")
@FuzzyPatternScanMethod(2) // FIXME: Test this threshold and find the best value.
@MusicVideoAdsCompatibility
@Version("0.0.1")
object ShowMusicVideoAdsConstructorFingerprint : MethodFingerprint(
"V", AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR, listOf("L", "L", "L"), listOf(
Opcode.INVOKE_DIRECT,

View File

@@ -1,18 +1,10 @@
package app.revanced.patches.music.ad.video.fingerprints
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.annotation.FuzzyPatternScanMethod
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import app.revanced.patches.music.ad.video.annotations.MusicVideoAdsCompatibility
import org.jf.dexlib2.AccessFlags
import org.jf.dexlib2.Opcode
@Name("show-video-ads-method-fingerprint")
@FuzzyPatternScanMethod(2) // FIXME: Test this threshold and find the best value.
@MusicVideoAdsCompatibility
@Version("0.0.1")
object ShowMusicVideoAdsFingerprint : MethodFingerprint(
"V", AccessFlags.PUBLIC or AccessFlags.FINAL, listOf("Z"), listOf(
Opcode.IPUT_BOOLEAN,

View File

@@ -3,11 +3,6 @@ package app.revanced.patches.music.audio.codecs.annotations
import app.revanced.patcher.annotation.Compatibility
import app.revanced.patcher.annotation.Package
@Compatibility(
[Package(
"com.google.android.apps.youtube.music", arrayOf("5.14.53", "5.16.51", "5.17.51", "5.21.52", "5.22.54", "5.23.50", "5.25.51", "5.25.52", "5.26.52", "5.27.51", "5.28.52", "5.29.52", "5.31.50")
)]
)
@Compatibility([Package("com.google.android.apps.youtube.music")])
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
internal annotation class CodecsUnlockCompatibility

View File

@@ -1,18 +1,13 @@
package app.revanced.patches.music.audio.codecs.fingerprints
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.annotation.FuzzyPatternScanMethod
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import app.revanced.patches.music.audio.codecs.annotations.CodecsUnlockCompatibility
import org.jf.dexlib2.AccessFlags
import org.jf.dexlib2.Opcode
@Name("all-codecs-reference-fingerprint")
@FuzzyPatternScanMethod(2) // FIXME: Test this threshold and find the best value.
@CodecsUnlockCompatibility
@Version("0.0.1")
object AllCodecsReferenceFingerprint : MethodFingerprint(
"J", AccessFlags.PUBLIC or AccessFlags.FINAL, listOf("L"), listOf(
Opcode.INVOKE_STATIC,

View File

@@ -1,18 +1,13 @@
package app.revanced.patches.music.audio.codecs.fingerprints
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.annotation.FuzzyPatternScanMethod
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import app.revanced.patches.music.audio.codecs.annotations.CodecsUnlockCompatibility
import org.jf.dexlib2.AccessFlags
import org.jf.dexlib2.Opcode
@Name("codec-lock-fingerprint")
@FuzzyPatternScanMethod(2) // FIXME: Test this threshold and find the best value.
@CodecsUnlockCompatibility
@Version("0.0.1")
object CodecsLockFingerprint : MethodFingerprint(
"L", AccessFlags.PUBLIC or AccessFlags.STATIC, opcodes = listOf(
Opcode.INVOKE_DIRECT,
@@ -27,7 +22,7 @@ object CodecsLockFingerprint : MethodFingerprint(
Opcode.INVOKE_STATIC,
Opcode.MOVE_RESULT_OBJECT,
Opcode.INVOKE_INTERFACE,
Opcode.INVOKE_DIRECT,
Opcode.INVOKE_VIRTUAL,
Opcode.RETURN_OBJECT
),
strings = listOf("eac3_supported")

View File

@@ -3,11 +3,6 @@ package app.revanced.patches.music.audio.exclusiveaudio.annotations
import app.revanced.patcher.annotation.Compatibility
import app.revanced.patcher.annotation.Package
@Compatibility(
[Package(
"com.google.android.apps.youtube.music", arrayOf("5.14.53", "5.16.51", "5.17.51", "5.21.52", "5.22.54", "5.23.50", "5.25.51", "5.25.52", "5.26.52", "5.27.51", "5.28.52", "5.29.52", "5.31.50")
)]
)
@Compatibility([Package("com.google.android.apps.youtube.music")])
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
internal annotation class ExclusiveAudioCompatibility

View File

@@ -1,20 +1,10 @@
package app.revanced.patches.music.audio.exclusiveaudio.fingerprints
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import app.revanced.patches.music.audio.exclusiveaudio.annotations.ExclusiveAudioCompatibility
import org.jf.dexlib2.AccessFlags
import org.jf.dexlib2.Opcode
@Name("audio-only-enabler-fingerprint")
@ExclusiveAudioCompatibility
@Version(
"0.0.1"
)
object AudioOnlyEnablerFingerprint: MethodFingerprint(
"Z", AccessFlags.PUBLIC or AccessFlags.FINAL, listOf(), listOf(
Opcode.IGET_OBJECT,

View File

@@ -1,18 +1,13 @@
package app.revanced.patches.music.audio.exclusiveaudio.fingerprints
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.annotation.FuzzyPatternScanMethod
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import app.revanced.patches.music.audio.exclusiveaudio.annotations.ExclusiveAudioCompatibility
import org.jf.dexlib2.AccessFlags
import org.jf.dexlib2.Opcode
@Name("exclusive-audio-fingerprints")
@FuzzyPatternScanMethod(2) // FIXME: Test this threshold and find the best value.
@ExclusiveAudioCompatibility
@Version("0.0.1")
object ExclusiveAudioFingerprint : MethodFingerprint(
"V",
AccessFlags.PUBLIC or AccessFlags.FINAL,

View File

@@ -3,11 +3,6 @@ package app.revanced.patches.music.layout.compactheader.annotations
import app.revanced.patcher.annotation.Compatibility
import app.revanced.patcher.annotation.Package
@Compatibility(
[Package(
"com.google.android.apps.youtube.music", arrayOf("5.14.53", "5.16.51", "5.21.52", "5.22.54", "5.23.50", "5.25.51", "5.25.52", "5.26.52", "5.27.51", "5.28.52", "5.29.52", "5.31.50")
)]
)
@Compatibility([Package("com.google.android.apps.youtube.music")])
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
internal annotation class CompactHeaderCompatibility

View File

@@ -1,16 +1,10 @@
package app.revanced.patches.music.layout.compactheader.fingerprints
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import app.revanced.patches.music.layout.compactheader.annotations.CompactHeaderCompatibility
import org.jf.dexlib2.AccessFlags
import org.jf.dexlib2.Opcode
@Name("compact-header-constructor-fingerprint")
@CompactHeaderCompatibility
@Version("0.0.1")
object CompactHeaderConstructorFingerprint : MethodFingerprint(
"V", AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR, listOf("L", "L", "L", "L", "L"), listOf(
Opcode.INVOKE_DIRECT,

View File

@@ -3,11 +3,6 @@ package app.revanced.patches.music.layout.minimizedplayback.annotations
import app.revanced.patcher.annotation.Compatibility
import app.revanced.patcher.annotation.Package
@Compatibility(
[Package(
"com.google.android.apps.youtube.music", arrayOf("5.14.53", "5.16.51", "5.17.51", "5.21.52", "5.22.54", "5.23.50", "5.25.51", "5.25.52", "5.26.52", "5.27.51", "5.28.52", "5.29.52", "5.31.50")
)]
)
@Compatibility([Package("com.google.android.apps.youtube.music")])
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
internal annotation class MinimizedPlaybackCompatibility

View File

@@ -1,16 +1,10 @@
package app.revanced.patches.music.layout.minimizedplayback.fingerprints
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import app.revanced.patches.music.layout.minimizedplayback.annotations.MinimizedPlaybackCompatibility
import org.jf.dexlib2.AccessFlags
import org.jf.dexlib2.Opcode
@Name("minimized-playback-manager-fingerprint")
@MinimizedPlaybackCompatibility
@Version("0.0.1")
object MinimizedPlaybackManagerFingerprint : MethodFingerprint(
"V",
AccessFlags.PUBLIC or AccessFlags.FINAL,

View File

@@ -5,9 +5,27 @@ import app.revanced.patcher.annotation.Package
@Compatibility(
[Package(
"com.google.android.apps.youtube.music", arrayOf("5.14.53", "5.16.51", "5.17.51", "5.21.52", "5.22.54", "5.23.50", "5.25.51", "5.25.52", "5.26.52", "5.27.51", "5.28.52", "5.29.52", "5.31.50")
"com.google.android.apps.youtube.music",
arrayOf(
"5.14.53",
"5.16.51",
"5.17.51",
"5.21.52",
"5.22.54",
"5.23.50",
"5.25.51",
"5.25.52",
"5.26.52",
"5.27.51",
"5.28.52",
"5.29.52",
"5.31.50",
"5.34.51",
"5.36.51",
"5.38.53",
"5.39.52"
)
)]
)
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
internal annotation class HideGetPremiumCompatibility

View File

@@ -1,16 +1,10 @@
package app.revanced.patches.music.layout.premium.fingerprints
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import app.revanced.patches.music.layout.premium.annotations.HideGetPremiumCompatibility
import org.jf.dexlib2.AccessFlags
import org.jf.dexlib2.Opcode
@Name("hide-get-premium-fingerprint")
@HideGetPremiumCompatibility
@Version("0.0.1")
object HideGetPremiumFingerprint : MethodFingerprint(
"V", AccessFlags.PUBLIC or AccessFlags.FINAL, listOf(), listOf(
Opcode.IF_NEZ,

View File

@@ -1,16 +1,10 @@
package app.revanced.patches.music.layout.premium.fingerprints
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import app.revanced.patches.music.layout.premium.annotations.HideGetPremiumCompatibility
import org.jf.dexlib2.AccessFlags
import org.jf.dexlib2.Opcode
@Name("hide-get-premium-parent-fingerprint")
@HideGetPremiumCompatibility
@Version("0.0.1")
object HideGetPremiumParentFingerprint : MethodFingerprint(
"V", AccessFlags.PUBLIC or AccessFlags.FINAL, listOf(), listOf(
Opcode.IGET_BOOLEAN,

View File

@@ -8,11 +8,6 @@ import app.revanced.patcher.annotation.Package
* Since 5.17.xx the tastebuilder component is dismissible, so this patch is less useful
* also it is partly litho now
*/
@Compatibility(
[Package(
"com.google.android.apps.youtube.music", arrayOf("5.21.52", "5.22.54", "5.23.50", "5.25.51", "5.25.52", "5.26.52", "5.27.51", "5.28.52", "5.29.52", "5.31.50")
)]
)
@Compatibility([Package("com.google.android.apps.youtube.music")])
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
internal annotation class RemoveTasteBuilderCompatibility

View File

@@ -1,18 +1,13 @@
package app.revanced.patches.music.layout.tastebuilder.fingerprints
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.annotation.FuzzyPatternScanMethod
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import app.revanced.patches.music.layout.tastebuilder.annotations.RemoveTasteBuilderCompatibility
import org.jf.dexlib2.AccessFlags
import org.jf.dexlib2.Opcode
@Name("taste-builder-constructor-fingerprint")
@FuzzyPatternScanMethod(2) // FIXME: Test this threshold and find the best value.
@RemoveTasteBuilderCompatibility
@Version("0.0.1")
object TasteBuilderConstructorFingerprint : MethodFingerprint(
"V", AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR, listOf("L", "L", "L"), listOf(
Opcode.INVOKE_DIRECT,

View File

@@ -3,11 +3,6 @@ package app.revanced.patches.music.layout.upgradebutton.annotations
import app.revanced.patcher.annotation.Compatibility
import app.revanced.patcher.annotation.Package
@Compatibility(
[Package(
"com.google.android.apps.youtube.music", arrayOf("5.14.53", "5.16.51", "5.17.51", "5.21.52", "5.22.54", "5.23.50", "5.25.51", "5.25.52", "5.26.52", "5.27.51", "5.28.52", "5.29.52", "5.31.50")
)]
)
@Compatibility([Package("com.google.android.apps.youtube.music")])
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
internal annotation class RemoveUpgradeButtonCompatibility

View File

@@ -1,18 +1,13 @@
package app.revanced.patches.music.layout.upgradebutton.fingerprints
import app.revanced.patcher.annotation.Name
import app.revanced.patcher.annotation.Version
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.annotation.FuzzyPatternScanMethod
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import app.revanced.patches.music.layout.upgradebutton.annotations.RemoveUpgradeButtonCompatibility
import org.jf.dexlib2.AccessFlags
import org.jf.dexlib2.Opcode
@Name("pivot-bar-constructor-fingerprint")
@FuzzyPatternScanMethod(2) // FIXME: Test this threshold and find the best value.
@RemoveUpgradeButtonCompatibility
@Version("0.0.1")
object PivotBarConstructorFingerprint : MethodFingerprint(
"V",
AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR,

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