Compare commits

...

1421 Commits

Author SHA1 Message Date
semantic-release-bot
5ff94dc34a chore: Release v5.3.0-dev.5 [skip ci]
# [5.3.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.3.0-dev.4...v5.3.0-dev.5) (2024-12-09)

### Bug Fixes

* **Change package name:** Prevent applying the patch to known incompatible apps ([#3943](https://github.com/ReVanced/revanced-patches/issues/3943)) ([b04a11a](b04a11a885))
* **YouTube Music - Permanent shuffle:** Remove obsolete and non functional patch ([#4073](https://github.com/ReVanced/revanced-patches/issues/4073)) ([4983e02](4983e021f9))

### Features

* **YouTube:** Add `Open videos fullscreen` patch ([#4069](https://github.com/ReVanced/revanced-patches/issues/4069)) ([bee917f](bee917f4ed))
2024-12-09 00:50:48 +00:00
LisoUseInAIKyrios
b04a11a885 fix(Change package name): Prevent applying the patch to known incompatible apps (#3943) 2024-12-09 04:46:47 +04:00
LisoUseInAIKyrios
4983e021f9 fix(YouTube Music - Permanent shuffle): Remove obsolete and non functional patch (#4073) 2024-12-09 04:44:12 +04:00
LisoUseInAIKyrios
bee917f4ed feat(YouTube): Add Open videos fullscreen patch (#4069)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-12-09 04:43:20 +04:00
semantic-release-bot
c94376bc4c chore: Release v5.3.0-dev.4 [skip ci]
# [5.3.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.3.0-dev.3...v5.3.0-dev.4) (2024-12-09)

### Features

* **Nyx:** Remove broken `Unlock pro` patch ([87fe83a](87fe83aacf))
2024-12-09 00:36:16 +00:00
oSumAtrIX
87fe83aacf feat(Nyx): Remove broken Unlock pro patch 2024-12-09 01:32:41 +01:00
semantic-release-bot
92d282e963 chore: Release v5.3.0-dev.3 [skip ci]
# [5.3.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.3.0-dev.2...v5.3.0-dev.3) (2024-12-09)

### Bug Fixes

* **YouTube - Spoof video streams:** Update `Force AVC` client data ([#4064](https://github.com/ReVanced/revanced-patches/issues/4064)) ([4a88f65](4a88f650c2))
2024-12-09 00:16:04 +00:00
LisoUseInAIKyrios
4a88f650c2 fix(YouTube - Spoof video streams): Update Force AVC client data (#4064) 2024-12-09 04:12:36 +04:00
semantic-release-bot
8b67716506 chore: Release v5.3.0-dev.2 [skip ci]
# [5.3.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.3.0-dev.1...v5.3.0-dev.2) (2024-12-08)

### Bug Fixes

* **Reddit:** Fix patches by using correct extension class ([95d56b1](95d56b1529))
2024-12-08 22:01:18 +00:00
LisoUseInAIKyrios
95d56b1529 fix(Reddit): Fix patches by using correct extension class 2024-12-09 01:58:31 +04:00
semantic-release-bot
b1f3b12fa1 chore: Release v5.3.0-dev.1 [skip ci]
# [5.3.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.2.4-dev.3...v5.3.0-dev.1) (2024-12-08)

### Features

* **YouTube Music:** Add `Spoof video streams` patch to fix playback ([#4065](https://github.com/ReVanced/revanced-patches/issues/4065)) ([cf4456c](cf4456c2ba))
2024-12-08 15:23:18 +00:00
oSumAtrIX
cf4456c2ba feat(YouTube Music): Add Spoof video streams patch to fix playback (#4065)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2024-12-08 16:19:29 +01:00
semantic-release-bot
d509a3f397 chore: Release v5.2.4-dev.3 [skip ci]
## [5.2.4-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.2.4-dev.2...v5.2.4-dev.3) (2024-12-07)

### Bug Fixes

* **YouTube - Spoof video streams:** Enable opus codec by updating iOS client version ([#4063](https://github.com/ReVanced/revanced-patches/issues/4063)) ([d1ae1f1](d1ae1f1da7))
2024-12-07 20:18:41 +00:00
kitadai31
d1ae1f1da7 fix(YouTube - Spoof video streams): Enable opus codec by updating iOS client version (#4063) 2024-12-08 00:15:36 +04:00
semantic-release-bot
9c1c90864c chore: Release v5.2.4-dev.2 [skip ci]
## [5.2.4-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.2.4-dev.1...v5.2.4-dev.2) (2024-12-07)

### Bug Fixes

* **Sync for Reddit:** Fix patches by using correct extension name ([5ae76f4](5ae76f4df8))
2024-12-07 06:07:08 +00:00
oSumAtrIX
5ae76f4df8 fix(Sync for Reddit): Fix patches by using correct extension name 2024-12-07 07:04:55 +01:00
semantic-release-bot
87eaf61ef1 chore: Release v5.2.4-dev.1 [skip ci]
## [5.2.4-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.2.3...v5.2.4-dev.1) (2024-12-07)

### Bug Fixes

* **Twitter:** Merge correct extension by depending on correct extension patch ([35594d0](35594d0a20))
2024-12-07 05:25:21 +00:00
oSumAtrIX
35594d0a20 fix(Twitter): Merge correct extension by depending on correct extension patch 2024-12-07 06:23:25 +01:00
semantic-release-bot
e3c54d8a64 chore: Release v5.2.3 [skip ci]
## [5.2.3](https://github.com/ReVanced/revanced-patches/compare/v5.2.2...v5.2.3) (2024-12-06)

### Bug Fixes

* **YouTube Music - GmsCore support:** Resolve patching errors ([#4056](https://github.com/ReVanced/revanced-patches/issues/4056)) ([decd3fc](decd3fcb47))
2024-12-06 22:57:11 +00:00
oSumAtrIX
06202c8807 chore: Merge branch dev to main (#4057) 2024-12-06 23:54:36 +01:00
semantic-release-bot
53efe10222 chore: Release v5.2.3-dev.1 [skip ci]
## [5.2.3-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.2.2...v5.2.3-dev.1) (2024-12-06)

### Bug Fixes

* **YouTube Music - GmsCore support:** Resolve patching errors ([#4056](https://github.com/ReVanced/revanced-patches/issues/4056)) ([decd3fc](decd3fcb47))
2024-12-06 21:17:13 +00:00
LisoUseInAIKyrios
decd3fcb47 fix(YouTube Music - GmsCore support): Resolve patching errors (#4056) 2024-12-06 22:14:22 +01:00
semantic-release-bot
c7692d7561 chore: Release v5.2.2 [skip ci]
## [5.2.2](https://github.com/ReVanced/revanced-patches/compare/v5.2.1...v5.2.2) (2024-12-06)

### Bug Fixes

* **YouTube - Spoof video streams:** Use system language as default iOS audio stream ([#4042](https://github.com/ReVanced/revanced-patches/issues/4042)) ([3015993](3015993f55))
2024-12-06 07:37:53 +00:00
oSumAtrIX
73c7c8c93a chore: Merge branch dev to main (#4041) 2024-12-06 08:33:46 +01:00
semantic-release-bot
3a4a124f0b chore: Release v5.2.2-dev.1 [skip ci]
## [5.2.2-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.2.1...v5.2.2-dev.1) (2024-12-05)

### Bug Fixes

* **YouTube - Spoof video streams:** Use system language as default iOS audio stream ([#4042](https://github.com/ReVanced/revanced-patches/issues/4042)) ([3015993](3015993f55))
2024-12-05 15:45:47 +00:00
LisoUseInAIKyrios
3015993f55 fix(YouTube - Spoof video streams): Use system language as default iOS audio stream (#4042) 2024-12-05 19:42:08 +04:00
oSumAtrIX
e04c681424 chore: Separate extensions by app (#3905) 2024-12-05 15:12:48 +04:00
semantic-release-bot
de492de77d chore: Release v5.2.1 [skip ci]
## [5.2.1](https://github.com/ReVanced/revanced-patches/compare/v5.2.0...v5.2.1) (2024-12-04)

### Bug Fixes

* **Twitch:** Resolve setting menu crashes ([#4025](https://github.com/ReVanced/revanced-patches/issues/4025)) ([78390a8](78390a8bca))
* **YouTube - Spoof app version:** Update spoof target to resolve library tab crashes ([#4014](https://github.com/ReVanced/revanced-patches/issues/4014)) ([f74fd71](f74fd7113f))
* **YouTube - Spoof app version:** Update spoof target to resolve library tab crashes ([#4019](https://github.com/ReVanced/revanced-patches/issues/4019)) ([57a8e47](57a8e47041))
* **YouTube Music - Hide category bar:** Add support for latest release ([#3968](https://github.com/ReVanced/revanced-patches/issues/3968)) ([9bcde94](9bcde94724))

### Performance Improvements

* Move variables to local scope ([4ee70e3](4ee70e3869))
2024-12-04 19:36:38 +00:00
oSumAtrIX
fc5dcbd13c chore: Merge branch dev to main (#4016) 2024-12-04 20:32:56 +01:00
github-actions[bot]
91a5c95f9a chore: Sync translations (#4039) 2024-12-04 22:53:19 +04:00
semantic-release-bot
a7aa8de6a8 chore: Release v5.2.1-dev.5 [skip ci]
## [5.2.1-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.2.1-dev.4...v5.2.1-dev.5) (2024-12-01)

### Performance Improvements

* Move variables to local scope ([4ee70e3](4ee70e3869))
2024-12-01 08:28:06 +00:00
oSumAtrIX
4ee70e3869 perf: Move variables to local scope 2024-12-01 09:25:30 +01:00
LisoUseInAIKyrios
c912a662ab refactor(YouTube): Change fingerprints to support a wider range of target versions (#4026) 2024-11-30 19:55:15 +04:00
semantic-release-bot
d3b3262a31 chore: Release v5.2.1-dev.4 [skip ci]
## [5.2.1-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.2.1-dev.3...v5.2.1-dev.4) (2024-11-30)

### Bug Fixes

* **Twitch:** Resolve setting menu crashes ([#4025](https://github.com/ReVanced/revanced-patches/issues/4025)) ([78390a8](78390a8bca))
2024-11-30 08:56:25 +00:00
LisoUseInAIKyrios
78390a8bca fix(Twitch): Resolve setting menu crashes (#4025) 2024-11-30 12:53:08 +04:00
semantic-release-bot
85bfa4ca91 chore: Release v5.2.1-dev.3 [skip ci]
## [5.2.1-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.2.1-dev.2...v5.2.1-dev.3) (2024-11-29)

### Bug Fixes

* **YouTube Music - Hide category bar:** Add support for latest release ([#3968](https://github.com/ReVanced/revanced-patches/issues/3968)) ([9bcde94](9bcde94724))
2024-11-29 06:38:16 +00:00
FullerBread2032
9bcde94724 fix(YouTube Music - Hide category bar): Add support for latest release (#3968) 2024-11-29 10:35:19 +04:00
LisoUseInAIKyrios
0cfd8e6760 chore: Remove 19.25 and 19.34 compatibility target since the lowest spoof target is 19.35 2024-11-28 20:16:28 +04:00
semantic-release-bot
3265372035 chore: Release v5.2.1-dev.2 [skip ci]
## [5.2.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.2.1-dev.1...v5.2.1-dev.2) (2024-11-28)

### Bug Fixes

* **YouTube - Spoof app version:** Update spoof target to resolve library tab crashes ([#4019](https://github.com/ReVanced/revanced-patches/issues/4019)) ([57a8e47](57a8e47041))
2024-11-28 16:08:33 +00:00
LisoUseInAIKyrios
57a8e47041 fix(YouTube - Spoof app version): Update spoof target to resolve library tab crashes (#4019) 2024-11-28 20:05:10 +04:00
github-actions[bot]
cd476c1227 chore: Sync translations (#4017) 2024-11-28 14:51:16 +04:00
semantic-release-bot
064be93ee2 chore: Release v5.2.1-dev.1 [skip ci]
## [5.2.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.2.0...v5.2.1-dev.1) (2024-11-28)

### Bug Fixes

* **YouTube - Spoof app version:** Update spoof target to resolve library tab crashes ([#4014](https://github.com/ReVanced/revanced-patches/issues/4014)) ([f74fd71](f74fd7113f))
2024-11-28 10:51:01 +00:00
LisoUseInAIKyrios
f74fd7113f fix(YouTube - Spoof app version): Update spoof target to resolve library tab crashes (#4014) 2024-11-28 14:47:57 +04:00
github-actions[bot]
628afc22bc chore: Sync translations (#4015) 2024-11-28 14:44:17 +04:00
semantic-release-bot
8686bd9f20 chore: Release v5.2.0 [skip ci]
# [5.2.0](https://github.com/ReVanced/revanced-patches/compare/v5.1.0...v5.2.0) (2024-11-27)

### Bug Fixes

* **My Expenses - Unlock pro:** Constrain compatible version to working version ([#3974](https://github.com/ReVanced/revanced-patches/issues/3974)) ([abcaa63](abcaa6336a))
* **YouTube - Hide Shorts components:** Add missing options to patch ([736b6a9](736b6a96b8))
* **YouTube - Playback speed:** Allow long press 2x speed when using custom playback speeds ([#3990](https://github.com/ReVanced/revanced-patches/issues/3990)) ([fafed09](fafed099c5))
* **YouTube - Settings:** Do not clip settings menus when using an Android 15 device ([#3999](https://github.com/ReVanced/revanced-patches/issues/3999)) ([e33082f](e33082f765))
* **YouTube - Settings:** Show navigation back button in setting sub menus ([#3991](https://github.com/ReVanced/revanced-patches/issues/3991)) ([5c3c684](5c3c68406e))
* **YouTube - Spoof video streams:** Log out the iOS client to restore kids videos playback ([#4000](https://github.com/ReVanced/revanced-patches/issues/4000)) ([fe15213](fe15213cf9))

### Features

* **TikTok:** Add ReVanced settings about screen ([#4009](https://github.com/ReVanced/revanced-patches/issues/4009)) ([046bd3e](046bd3ec88))
* **VSCO:** Remove non functional `Unlock pro` patch ([1a910a2](1a910a2cf6))
* **YouTube - Theme:** Apply custom seekbar color to splash screen animation ([#3978](https://github.com/ReVanced/revanced-patches/issues/3978)) ([7f67759](7f6775950e))
* **YouTube:** Support version `19.46.42` ([#4010](https://github.com/ReVanced/revanced-patches/issues/4010)) ([02732ab](02732ab432))
2024-11-27 13:57:41 +00:00
oSumAtrIX
534996f251 chore: Merge branch dev to main (#3980) 2024-11-27 14:54:10 +01:00
semantic-release-bot
ca4a16dbd8 chore: Release v5.2.0-dev.7 [skip ci]
# [5.2.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.2.0-dev.6...v5.2.0-dev.7) (2024-11-27)

### Bug Fixes

* **YouTube - Settings:** Do not clip settings menus when using an Android 15 device ([#3999](https://github.com/ReVanced/revanced-patches/issues/3999)) ([e33082f](e33082f765))
2024-11-27 13:46:42 +00:00
LisoUseInAIKyrios
e33082f765 fix(YouTube - Settings): Do not clip settings menus when using an Android 15 device (#3999) 2024-11-27 17:43:29 +04:00
github-actions[bot]
18360464a9 chore: Sync translations (#4011) 2024-11-27 17:40:12 +04:00
semantic-release-bot
968e6e9b69 chore: Release v5.2.0-dev.6 [skip ci]
# [5.2.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.2.0-dev.5...v5.2.0-dev.6) (2024-11-27)

### Features

* **YouTube:** Support version `19.46.42` ([#4010](https://github.com/ReVanced/revanced-patches/issues/4010)) ([02732ab](02732ab432))
2024-11-27 13:39:40 +00:00
LisoUseInAIKyrios
02732ab432 feat(YouTube): Support version 19.46.42 (#4010) 2024-11-27 17:35:59 +04:00
semantic-release-bot
77aea074a9 chore: Release v5.2.0-dev.5 [skip ci]
# [5.2.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.2.0-dev.4...v5.2.0-dev.5) (2024-11-27)

### Bug Fixes

* **YouTube - Spoof video streams:** Log out the iOS client to restore kids videos playback ([#4000](https://github.com/ReVanced/revanced-patches/issues/4000)) ([fe15213](fe15213cf9))

### Features

* **TikTok:** Add ReVanced settings about screen ([#4009](https://github.com/ReVanced/revanced-patches/issues/4009)) ([046bd3e](046bd3ec88))
2024-11-27 13:35:27 +00:00
oSumAtrIX
fe15213cf9 fix(YouTube - Spoof video streams): Log out the iOS client to restore kids videos playback (#4000) 2024-11-27 14:31:52 +01:00
LisoUseInAIKyrios
046bd3ec88 feat(TikTok): Add ReVanced settings about screen (#4009) 2024-11-27 17:30:55 +04:00
LisoUseInAIKyrios
d6bc998365 chore: Fix spoof version setting migration
Previously this failed because of cyclic initialization of the settings and the spoof version patch
2024-11-27 13:10:22 +04:00
semantic-release-bot
545e16913a chore: Release v5.2.0-dev.4 [skip ci]
# [5.2.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.2.0-dev.3...v5.2.0-dev.4) (2024-11-26)

### Bug Fixes

* **YouTube - Playback speed:** Allow long press 2x speed when using custom playback speeds ([#3990](https://github.com/ReVanced/revanced-patches/issues/3990)) ([fafed09](fafed099c5))
2024-11-26 21:16:15 +00:00
LisoUseInAIKyrios
fafed099c5 fix(YouTube - Playback speed): Allow long press 2x speed when using custom playback speeds (#3990) 2024-11-26 22:12:46 +01:00
semantic-release-bot
a65bbebfdb chore: Release v5.2.0-dev.3 [skip ci]
# [5.2.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.2.0-dev.2...v5.2.0-dev.3) (2024-11-26)

### Features

* **VSCO:** Remove non functional `Unlock pro` patch ([1a910a2](1a910a2cf6))
2024-11-26 21:06:29 +00:00
oSumAtrIX
1a910a2cf6 feat(VSCO): Remove non functional Unlock pro patch 2024-11-26 22:03:31 +01:00
semantic-release-bot
6d23a4e000 chore: Release v5.2.0-dev.2 [skip ci]
# [5.2.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.2.0-dev.1...v5.2.0-dev.2) (2024-11-26)

### Bug Fixes

* **YouTube - Settings:** Show navigation back button in setting sub menus ([#3991](https://github.com/ReVanced/revanced-patches/issues/3991)) ([5c3c684](5c3c68406e))
2024-11-26 16:49:10 +00:00
LisoUseInAIKyrios
5c3c68406e fix(YouTube - Settings): Show navigation back button in setting sub menus (#3991) 2024-11-26 20:45:48 +04:00
github-actions[bot]
b0c3709be7 chore: Sync translations (#3993) 2024-11-26 20:45:18 +04:00
LisoUseInAIKyrios
cd19f976e7 chore: Fix redundant patch description 2024-11-26 16:47:36 +04:00
semantic-release-bot
c181135cc1 chore: Release v5.2.0-dev.1 [skip ci]
# [5.2.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.1.1-dev.2...v5.2.0-dev.1) (2024-11-25)

### Features

* **YouTube - Theme:** Apply custom seekbar color to splash screen animation ([#3978](https://github.com/ReVanced/revanced-patches/issues/3978)) ([7f67759](7f6775950e))
2024-11-25 16:52:34 +00:00
LisoUseInAIKyrios
7f6775950e feat(YouTube - Theme): Apply custom seekbar color to splash screen animation (#3978) 2024-11-25 20:49:05 +04:00
github-actions[bot]
4b2abaf17e chore: Sync translations (#3985) 2024-11-25 20:47:23 +04:00
semantic-release-bot
677b18c41a chore: Release v5.1.1-dev.2 [skip ci]
## [5.1.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.1.1-dev.1...v5.1.1-dev.2) (2024-11-25)

### Bug Fixes

* **YouTube - Hide Shorts components:** Add missing options to patch ([736b6a9](736b6a96b8))
2024-11-25 15:43:26 +00:00
oSumAtrIX
736b6a96b8 fix(YouTube - Hide Shorts components): Add missing options to patch 2024-11-25 16:40:06 +01:00
semantic-release-bot
8c371d8579 chore: Release v5.1.1-dev.1 [skip ci]
## [5.1.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.1.0...v5.1.1-dev.1) (2024-11-24)

### Bug Fixes

* **My Expenses - Unlock pro:** Constrain compatible version to working version ([#3974](https://github.com/ReVanced/revanced-patches/issues/3974)) ([abcaa63](abcaa6336a))
2024-11-24 22:49:39 +00:00
LisoUseInAIKyrios
abcaa6336a fix(My Expenses - Unlock pro): Constrain compatible version to working version (#3974) 2024-11-24 23:47:15 +01:00
semantic-release-bot
11537526a4 chore: Release v5.1.0 [skip ci]
# [5.1.0](https://github.com/ReVanced/revanced-patches/compare/v5.0.2...v5.1.0) (2024-11-24)

### Bug Fixes

* **YouTube - Change header:** Apply header changes to A/B layout ([#3907](https://github.com/ReVanced/revanced-patches/issues/3907)) ([69c504c](69c504ca2f))
* **YouTube - Hide Shorts components:** Do not hide Shorts action buttons on app first launch ([#3933](https://github.com/ReVanced/revanced-patches/issues/3933)) ([c3701c4](c3701c4b6e))
* **YouTube - Playback speed:** Add 'Auto' speed. Always override speed if default is set to 1.0x ([#3914](https://github.com/ReVanced/revanced-patches/issues/3914)) ([78f3fd6](78f3fd6aa4))
* **YouTube - SponsorBlock:** Fix create new segment crash on tablet custom roms ([#3946](https://github.com/ReVanced/revanced-patches/issues/3946)) ([a7fc08a](a7fc08a491))
* **YouTube - Spoof app version:** Adjust legacy spoof targets ([#3934](https://github.com/ReVanced/revanced-patches/issues/3934)) ([2e3b3dc](2e3b3dca4b))
* **YouTube - Spoof app version:** Remove broken spoof targets when patching 19.25+ ([#3915](https://github.com/ReVanced/revanced-patches/issues/3915)) ([17b5b2e](17b5b2e384))

### Features

* **YouTube - Miniplayer:** Add option to disable miniplayer ([#3961](https://github.com/ReVanced/revanced-patches/issues/3961)) ([01cc8e0](01cc8e0abf))
* **YouTube:** Support version `19.45.38` ([#3938](https://github.com/ReVanced/revanced-patches/issues/3938)) ([8c6c8e0](8c6c8e0442))
2024-11-24 04:53:48 +00:00
oSumAtrIX
403116f591 chore: Merge branch dev to main (#3909) 2024-11-24 05:49:58 +01:00
1fexd
a1d14cffe9 chore: Move Sync video downloads patch to correct package 2024-11-24 04:06:02 +04:00
semantic-release-bot
10f221f374 chore: Release v5.1.0-dev.3 [skip ci]
# [5.1.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.1.0-dev.2...v5.1.0-dev.3) (2024-11-22)

### Features

* **YouTube - Miniplayer:** Add option to disable miniplayer ([#3961](https://github.com/ReVanced/revanced-patches/issues/3961)) ([01cc8e0](01cc8e0abf))
2024-11-22 16:44:41 +00:00
github-actions[bot]
ba1aab6d4d chore: Sync translations (#3962) 2024-11-22 20:41:24 +04:00
LisoUseInAIKyrios
01cc8e0abf feat(YouTube - Miniplayer): Add option to disable miniplayer (#3961)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-11-22 20:37:35 +04:00
LisoUseInAIKyrios
518958350d refactor(YouTube - Announcements): Do not include announcement setting with import/export 2024-11-21 18:48:06 +04:00
semantic-release-bot
a625309d1f chore: Release v5.1.0-dev.2 [skip ci]
# [5.1.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.1.0-dev.1...v5.1.0-dev.2) (2024-11-21)

### Bug Fixes

* **YouTube - SponsorBlock:** Fix create new segment crash on tablet custom roms ([#3946](https://github.com/ReVanced/revanced-patches/issues/3946)) ([a7fc08a](a7fc08a491))
2024-11-21 05:47:29 +00:00
LisoUseInAIKyrios
a7fc08a491 fix(YouTube - SponsorBlock): Fix create new segment crash on tablet custom roms (#3946) 2024-11-21 09:44:32 +04:00
semantic-release-bot
97b129e088 chore: Release v5.1.0-dev.1 [skip ci]
# [5.1.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.0.3-dev.5...v5.1.0-dev.1) (2024-11-20)

### Features

* **YouTube:** Support version `19.45.38` ([#3938](https://github.com/ReVanced/revanced-patches/issues/3938)) ([8c6c8e0](8c6c8e0442))
2024-11-20 09:54:50 +00:00
LisoUseInAIKyrios
8c6c8e0442 feat(YouTube): Support version 19.45.38 (#3938) 2024-11-20 13:51:36 +04:00
LisoUseInAIKyrios
16c090d2c0 refactor(YouTube): Use consistent language for 'auto' speed and quality 2024-11-19 11:07:49 +04:00
semantic-release-bot
ed35a2a4a9 chore: Release v5.0.3-dev.5 [skip ci]
## [5.0.3-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.0.3-dev.4...v5.0.3-dev.5) (2024-11-18)

### Bug Fixes

* **YouTube - Hide Shorts components:** Do not hide Shorts action buttons on app first launch ([#3933](https://github.com/ReVanced/revanced-patches/issues/3933)) ([c3701c4](c3701c4b6e))
2024-11-18 08:28:49 +00:00
LisoUseInAIKyrios
c3701c4b6e fix(YouTube - Hide Shorts components): Do not hide Shorts action buttons on app first launch (#3933) 2024-11-18 12:25:32 +04:00
github-actions[bot]
e0dc821c50 chore: Sync translations (#3936) 2024-11-18 12:21:46 +04:00
semantic-release-bot
b9efb05271 chore: Release v5.0.3-dev.4 [skip ci]
## [5.0.3-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.0.3-dev.3...v5.0.3-dev.4) (2024-11-18)

### Bug Fixes

* **YouTube - Spoof app version:** Adjust legacy spoof targets ([#3934](https://github.com/ReVanced/revanced-patches/issues/3934)) ([2e3b3dc](2e3b3dca4b))
2024-11-18 08:20:28 +00:00
LisoUseInAIKyrios
2e3b3dca4b fix(YouTube - Spoof app version): Adjust legacy spoof targets (#3934) 2024-11-18 12:17:22 +04:00
semantic-release-bot
19eaee09d0 chore: Release v5.0.3-dev.3 [skip ci]
## [5.0.3-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.0.3-dev.2...v5.0.3-dev.3) (2024-11-15)

### Bug Fixes

* **YouTube - Playback speed:** Add 'Auto' speed. Always override speed if default is set to 1.0x ([#3914](https://github.com/ReVanced/revanced-patches/issues/3914)) ([78f3fd6](78f3fd6aa4))
2024-11-15 03:59:51 +00:00
LisoUseInAIKyrios
78f3fd6aa4 fix(YouTube - Playback speed): Add 'Auto' speed. Always override speed if default is set to 1.0x (#3914) 2024-11-15 07:56:36 +04:00
semantic-release-bot
71ed37beb1 chore: Release v5.0.3-dev.2 [skip ci]
## [5.0.3-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.0.3-dev.1...v5.0.3-dev.2) (2024-11-15)

### Bug Fixes

* **YouTube - Spoof app version:** Remove broken spoof targets when patching 19.25+ ([#3915](https://github.com/ReVanced/revanced-patches/issues/3915)) ([17b5b2e](17b5b2e384))
2024-11-15 03:51:14 +00:00
github-actions[bot]
5aae234c43 chore: Sync translations (#3920) 2024-11-15 07:47:49 +04:00
LisoUseInAIKyrios
17b5b2e384 fix(YouTube - Spoof app version): Remove broken spoof targets when patching 19.25+ (#3915) 2024-11-15 07:44:28 +04:00
LisoUseInAIKyrios
462b61c2e9 refactor(YouTube - Hide mix playlist): Do not search path or buffer unless setting is enabled 2024-11-14 01:37:14 +04:00
semantic-release-bot
f23b7fffc8 chore: Release v5.0.3-dev.1 [skip ci]
## [5.0.3-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.0.2...v5.0.3-dev.1) (2024-11-13)

### Bug Fixes

* **YouTube - Change header:** Apply header changes to A/B layout ([#3907](https://github.com/ReVanced/revanced-patches/issues/3907)) ([69c504c](69c504ca2f))
2024-11-13 13:15:15 +00:00
LisoUseInAIKyrios
69c504ca2f fix(YouTube - Change header): Apply header changes to A/B layout (#3907) 2024-11-13 17:12:26 +04:00
semantic-release-bot
fc4b0d7c39 chore: Release v5.0.2 [skip ci]
## [5.0.2](https://github.com/ReVanced/revanced-patches/compare/v5.0.1...v5.0.2) (2024-11-12)

### Bug Fixes

* **Sync for Reddit - Fix /s/ links:** Fix patch by using correct fingerprints ([68ec011](68ec011003))
* **Sync for Reddit - Spoof client:** Fix patch by using correct fingerprints ([273bedc](273bedc74c))
* **YouTube - Player controls:** Show player control buttons with A/B layout ([#3901](https://github.com/ReVanced/revanced-patches/issues/3901)) ([e441745](e4417455c9))
2024-11-12 13:47:36 +00:00
oSumAtrIX
02e66b3d43 chore: Merge branch dev to main (#3899) 2024-11-12 14:44:18 +01:00
semantic-release-bot
a75c15b950 chore: Release v5.0.2-dev.2 [skip ci]
## [5.0.2-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.0.2-dev.1...v5.0.2-dev.2) (2024-11-12)

### Bug Fixes

* **YouTube - Player controls:** Show player control buttons with A/B layout ([#3901](https://github.com/ReVanced/revanced-patches/issues/3901)) ([e441745](e4417455c9))
2024-11-12 06:10:45 +00:00
LisoUseInAIKyrios
e4417455c9 fix(YouTube - Player controls): Show player control buttons with A/B layout (#3901) 2024-11-12 10:07:32 +04:00
semantic-release-bot
5253f4bfa4 chore: Release v5.0.2-dev.1 [skip ci]
## [5.0.2-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.0.1...v5.0.2-dev.1) (2024-11-11)

### Bug Fixes

* **Sync for Reddit - Fix /s/ links:** Fix patch by using correct fingerprints ([68ec011](68ec011003))
* **Sync for Reddit - Spoof client:** Fix patch by using correct fingerprints ([273bedc](273bedc74c))
2024-11-11 23:57:42 +00:00
oSumAtrIX
273bedc74c fix(Sync for Reddit - Spoof client): Fix patch by using correct fingerprints 2024-11-12 00:55:01 +01:00
oSumAtrIX
68ec011003 fix(Sync for Reddit - Fix /s/ links): Fix patch by using correct fingerprints 2024-11-12 00:44:54 +01:00
semantic-release-bot
f3d1103287 chore: Release v5.0.1 [skip ci]
## [5.0.1](https://github.com/ReVanced/revanced-patches/compare/v5.0.0...v5.0.1) (2024-11-11)

### Bug Fixes

* **Sync:** Fix patches by not throwing unnecessarily ([3059aca](3059aca69d))
* **Tiktok - Settings:** Fix the patch by depending on the correct settings patch ([2094a23](2094a23ccc))
* **Twitter:** Fix patches by depending on patch that merges required extension ([3e1b5cb](3e1b5cbaf5))
* **Twitter:** Fix patches by matching fingerprint using correct class ([3793b21](3793b2103c))
* **YouTube - Playback speed:** Remember playback speed when using non 1.0x default speed ([d881d8b](d881d8bc44)), closes [#3810](https://github.com/ReVanced/revanced-patches/issues/3810)

### Performance Improvements

* Check for extension without a class proxy ([53b6b1f](53b6b1ff41))
2024-11-11 20:42:31 +00:00
oSumAtrIX
50a3541e98 chore: Merge branch dev to main (#3888) 2024-11-11 21:39:55 +01:00
github-actions[bot]
c6069a7ff6 chore: Sync translations (#3897)
Co-authored-by: revanced-bot <github@revanced.app>
2024-11-11 21:39:34 +01:00
semantic-release-bot
b10b624b4b chore: Release v5.0.1-dev.4 [skip ci]
## [5.0.1-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.0.1-dev.3...v5.0.1-dev.4) (2024-11-11)

### Bug Fixes

* **Twitter:** Fix patches by depending on patch that merges required extension ([3e1b5cb](3e1b5cbaf5))
2024-11-11 17:01:35 +00:00
oSumAtrIX
3e1b5cbaf5 fix(Twitter): Fix patches by depending on patch that merges required extension 2024-11-11 17:58:56 +01:00
semantic-release-bot
ef37b78b45 chore: Release v5.0.1-dev.3 [skip ci]
## [5.0.1-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.0.1-dev.2...v5.0.1-dev.3) (2024-11-11)

### Bug Fixes

* **YouTube - Playback speed:** Remember playback speed when using non 1.0x default speed ([d881d8b](d881d8bc44)), closes [#3810](https://github.com/ReVanced/revanced-patches/issues/3810)
2024-11-11 06:32:25 +00:00
LisoUseInAIKyrios
d881d8bc44 fix(YouTube - Playback speed): Remember playback speed when using non 1.0x default speed
This code was previously present with PR #3810 but was accidentally left out during the DSL migration.
2024-11-11 10:29:15 +04:00
semantic-release-bot
0cb993d6ea chore: Release v5.0.1-dev.2 [skip ci]
## [5.0.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.0.1-dev.1...v5.0.1-dev.2) (2024-11-11)

### Bug Fixes

* **Twitter:** Fix patches by matching fingerprint using correct class ([3793b21](3793b2103c))
2024-11-11 01:53:03 +00:00
oSumAtrIX
3793b2103c fix(Twitter): Fix patches by matching fingerprint using correct class 2024-11-11 02:50:21 +01:00
semantic-release-bot
658370f035 chore: Release v5.0.1-dev.1 [skip ci]
## [5.0.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.0.0...v5.0.1-dev.1) (2024-11-11)

### Bug Fixes

* **Sync:** Fix patches by not throwing unnecessarily ([3059aca](3059aca69d))
* **Tiktok - Settings:** Fix the patch by depending on the correct settings patch ([2094a23](2094a23ccc))

### Performance Improvements

* Check for extension without a class proxy ([53b6b1f](53b6b1ff41))
2024-11-11 01:40:33 +00:00
oSumAtrIX
3059aca69d fix(Sync): Fix patches by not throwing unnecessarily 2024-11-11 02:37:44 +01:00
oSumAtrIX
2094a23ccc fix(Tiktok - Settings): Fix the patch by depending on the correct settings patch 2024-11-11 02:33:12 +01:00
oSumAtrIX
53b6b1ff41 perf: Check for extension without a class proxy 2024-11-11 02:25:17 +01:00
semantic-release-bot
5657a7d8c8 chore: Release v5.0.0 [skip ci]
# [5.0.0](https://github.com/ReVanced/revanced-patches/compare/v4.17.0...v5.0.0) (2024-11-10)

### Bug Fixes

* Add missing dependency to patch ([327ebd3](327ebd3649))
* **MyFitnessPal - Hide ads:** Constrain patch to last working version ([#3847](https://github.com/ReVanced/revanced-patches/issues/3847)) ([9c3bec6](9c3bec69d8))
* **Twitter - Change link sharing domain:** Support latest app version ([#3786](https://github.com/ReVanced/revanced-patches/issues/3786)) ([5bdb3a2](5bdb3a2e29))
* **YouTube - Copy video URL:** Support A/B player layout ([c832143](c832143eec))
* **YouTube - Custom branding:** Change icon correctly on 19.34+ ([#3866](https://github.com/ReVanced/revanced-patches/issues/3866)) ([4d1b3fb](4d1b3fba99))
* **YouTube - Hide ads:** Hide new types of ads ([6ceb084](6ceb084831))
* **YouTube - Hide layout components:** Move hide chips settings to Feed menu ([716f0d8](716f0d8d64))
* **YouTube - Hide layout components:** Remove obsolete 'Hide gray separator' ([30a063e](30a063ea12))
* **YouTube - Playback speed:** Remember playback speed with new speed menu ([#3810](https://github.com/ReVanced/revanced-patches/issues/3810)) ([e09b039](e09b03997e))
* **YouTube - Playback speed:** Restore old playback speed menu ([#3817](https://github.com/ReVanced/revanced-patches/issues/3817)) ([1215d16](1215d16a30))
* **YouTube - Remember video quality:** Correctly set default quality when changing from a low quality video ([#3879](https://github.com/ReVanced/revanced-patches/issues/3879)) ([75d661f](75d661fcdc))
* **YouTube - Remove background playback restrictions:** Enable for Shorts as well ([#3671](https://github.com/ReVanced/revanced-patches/issues/3671)) ([a803660](a8036606c1))
* **YouTube - Return YouTube Dislike:** Show Shorts dislikes with new A/B button icons ([a0c227f](a0c227f1a0))
* **YouTube - Return YouTube Dislike:** Use latest separator height ([94adb2e](94adb2eb65))
* **YouTube - Seekbar:** Use latest shade of YouTube red ([e94b216](e94b216e44))
* **YouTube - Settings:** Use multiline preference title for localized languages ([#3821](https://github.com/ReVanced/revanced-patches/issues/3821)) ([2082f14](2082f14f34))
* **YouTube - SponsorBlock:** Show correct segment behavior in settings UI after importing ([53c2f96](53c2f96b6a))
* **YouTube - Spoof app version:** Remove obsolete 17.33.42 spoof target ([#3825](https://github.com/ReVanced/revanced-patches/issues/3825)) ([2165953](2165953a4e))
* **YouTube:** Merge `Restore old seekbar thumbnails` into `Seekbar thumbnails` ([#3860](https://github.com/ReVanced/revanced-patches/issues/3860)) ([042515a](042515a4f0))

### Build System

* Bump ReVanced Patcher ([928cf5f](928cf5f945))

### Features

* **YouTube - Hide layout components:** Hide player shopping shelf ([#3804](https://github.com/ReVanced/revanced-patches/issues/3804)) ([69329df](69329df355))
* **YouTube - Hide player flyout menu items:** Hide stable volume ([#3827](https://github.com/ReVanced/revanced-patches/issues/3827)) ([d3c4811](d3c481166f))
* **YouTube - Miniplayer:** Add horizontal drag gesture ([#3859](https://github.com/ReVanced/revanced-patches/issues/3859)) ([ecf8bd4](ecf8bd445a))
* **YouTube - Player flyout menu:** Hide sleep timer ([#3637](https://github.com/ReVanced/revanced-patches/issues/3637)) ([6348a66](6348a66fef))
* **YouTube:** Add `Seekbar thumbnails` patch ([#3813](https://github.com/ReVanced/revanced-patches/issues/3813)) ([aa2f963](aa2f963e05))
* **YouTube:** Add `Shorts autoplay` patch ([#3794](https://github.com/ReVanced/revanced-patches/issues/3794)) ([132d925](132d925d5c))
* **YouTube:** Hide player shopping shelf in playlists ([#3806](https://github.com/ReVanced/revanced-patches/issues/3806)) ([68d9edf](68d9edfd8c))
* **YouTube:** Merge multiple layout patches into `Hide Layout Components` ([#3799](https://github.com/ReVanced/revanced-patches/issues/3799)) ([24d612d](24d612d0d1))
* **YouTube:** Merge multiple player overlay patches into `Hide player overlay buttons` ([#3800](https://github.com/ReVanced/revanced-patches/issues/3800)) ([cee0641](cee0641247))
* **YouTube:** Support version `19.43.41` ([#3854](https://github.com/ReVanced/revanced-patches/issues/3854)) ([43f5e99](43f5e99e0b))

### BREAKING CHANGES

* Various APIs have been changed or removed.
2024-11-10 14:59:53 +00:00
oSumAtrIX
08ce458e28 chore: Merge branch dev to main (#3798) 2024-11-10 15:56:12 +01:00
github-actions[bot]
b5e4022fbb chore: Sync translations (#3881)
Co-authored-by: revanced-bot <github@revanced.app>
2024-11-10 15:48:08 +01:00
semantic-release-bot
6e75ffd5f1 chore: Release v5.0.0-dev.4 [skip ci]
# [5.0.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.0.0-dev.3...v5.0.0-dev.4) (2024-11-09)

### Bug Fixes

* **YouTube - Remember video quality:** Correctly set default quality when changing from a low quality video ([#3879](https://github.com/ReVanced/revanced-patches/issues/3879)) ([75d661f](75d661fcdc))
2024-11-09 18:56:29 +00:00
LisoUseInAIKyrios
75d661fcdc fix(YouTube - Remember video quality): Correctly set default quality when changing from a low quality video (#3879) 2024-11-09 22:53:01 +04:00
semantic-release-bot
4d1de6bc50 chore: Release v5.0.0-dev.3 [skip ci]
# [5.0.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.0.0-dev.2...v5.0.0-dev.3) (2024-11-09)

### Bug Fixes

* Add missing dependency to patch ([327ebd3](327ebd3649))
2024-11-09 04:20:45 +00:00
oSumAtrIX
327ebd3649 fix: Add missing dependency to patch 2024-11-09 05:17:06 +01:00
LisoUseInAIKyrios
34e98a54e0 chore(YouTube - Announcements): Remove language parameter of API call (#3874) 2024-11-08 22:11:31 -04:00
semantic-release-bot
bc3c61a6a0 chore: Release v5.0.0-dev.2 [skip ci]
# [5.0.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.0.0-dev.1...v5.0.0-dev.2) (2024-11-09)

### Bug Fixes

* **YouTube - Return YouTube Dislike:** Show Shorts dislikes with new A/B button icons ([a0c227f](a0c227f1a0))
2024-11-09 01:21:00 +00:00
LisoUseInAIKyrios
a0c227f1a0 fix(YouTube - Return YouTube Dislike): Show Shorts dislikes with new A/B button icons 2024-11-08 21:17:02 -04:00
LisoUseInAIKyrios
87fcf3135d refactor(YouTube - Theme): Cleanup 2024-11-07 08:27:20 -04:00
LisoUseInAIKyrios
4b4670cd4f refactor(YouTube - Theme): Use more robust gradient theme insert index 2024-11-07 08:20:39 -04:00
semantic-release-bot
fc4a0b929a chore: Release v5.0.0-dev.1 [skip ci]
# [5.0.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.18.0-dev.6...v5.0.0-dev.1) (2024-11-06)

### Bug Fixes

* **MyFitnessPal - Hide ads:** Constrain patch to last working version ([#3847](https://github.com/ReVanced/revanced-patches/issues/3847)) ([9c3bec6](9c3bec69d8))
* **YouTube - Copy video URL:** Support A/B player layout ([c832143](c832143eec))
* **YouTube - Custom branding:** Change icon correctly on 19.34+ ([#3866](https://github.com/ReVanced/revanced-patches/issues/3866)) ([4d1b3fb](4d1b3fba99))
* **YouTube - Hide ads:** Hide new types of ads ([6ceb084](6ceb084831))
* **YouTube - Hide layout components:** Remove obsolete 'Hide gray separator' ([30a063e](30a063ea12))
* **YouTube - Playback speed:** Restore old playback speed menu ([#3817](https://github.com/ReVanced/revanced-patches/issues/3817)) ([1215d16](1215d16a30))
* **YouTube - Remove background playback restrictions:** Enable for Shorts as well ([#3671](https://github.com/ReVanced/revanced-patches/issues/3671)) ([a803660](a8036606c1))
* **YouTube - Return YouTube Dislike:** Use latest separator height ([94adb2e](94adb2eb65))
* **YouTube - Seekbar:** Use latest shade of YouTube red ([e94b216](e94b216e44))
* **YouTube - Settings:** Use multiline preference title for localized languages ([#3821](https://github.com/ReVanced/revanced-patches/issues/3821)) ([2082f14](2082f14f34))
* **YouTube - SponsorBlock:** Show correct segment behavior in settings UI after importing ([53c2f96](53c2f96b6a))
* **YouTube - Spoof app version:** Remove obsolete 17.33.42 spoof target ([#3825](https://github.com/ReVanced/revanced-patches/issues/3825)) ([2165953](2165953a4e))
* **YouTube:** Merge `Restore old seekbar thumbnails` into `Seekbar thumbnails` ([#3860](https://github.com/ReVanced/revanced-patches/issues/3860)) ([042515a](042515a4f0))

### Build System

* Bump ReVanced Patcher ([928cf5f](928cf5f945))

### Features

* **YouTube - Hide player flyout menu items:** Hide stable volume ([#3827](https://github.com/ReVanced/revanced-patches/issues/3827)) ([d3c4811](d3c481166f))
* **YouTube - Miniplayer:** Add horizontal drag gesture ([#3859](https://github.com/ReVanced/revanced-patches/issues/3859)) ([ecf8bd4](ecf8bd445a))
* **YouTube - Player flyout menu:** Hide sleep timer ([#3637](https://github.com/ReVanced/revanced-patches/issues/3637)) ([6348a66](6348a66fef))
* **YouTube:** Add `Seekbar thumbnails` patch ([#3813](https://github.com/ReVanced/revanced-patches/issues/3813)) ([aa2f963](aa2f963e05))
* **YouTube:** Support version `19.43.41` ([#3854](https://github.com/ReVanced/revanced-patches/issues/3854)) ([43f5e99](43f5e99e0b))

### BREAKING CHANGES

* Various APIs have been changed or removed.
2024-11-06 16:25:06 +00:00
github-actions[bot]
1d5d837d90 chore: Sync translations (#3871) 2024-11-06 12:20:50 -04:00
oSumAtrIX
27d7636d8e chore(YouTube - Announcements): Use API v4 to get announcements (#3869) 2024-11-06 17:19:16 +01:00
LisoUseInAIKyrios
94adb2eb65 fix(YouTube - Return YouTube Dislike): Use latest separator height 2024-11-06 17:19:16 +01:00
oSumAtrIX
4d1b3fba99 fix(YouTube - Custom branding): Change icon correctly on 19.34+ (#3866) 2024-11-06 17:19:15 +01:00
github-actions[bot]
3306090176 chore: Sync translations (#3863) 2024-11-06 17:19:15 +01:00
oSumAtrIX
df6ea01f0e build: Increase heap size to mitigate OOM 2024-11-06 17:19:14 +01:00
oSumAtrIX
c317baf71d build: Bump ReVanced Patcher (#3862)
Co-authored-by: Ushie <ushiekane@gmail.com>
2024-11-06 17:19:14 +01:00
LisoUseInAIKyrios
ecf8bd445a feat(YouTube - Miniplayer): Add horizontal drag gesture (#3859) 2024-11-06 17:19:14 +01:00
LisoUseInAIKyrios
042515a4f0 fix(YouTube): Merge Restore old seekbar thumbnails into Seekbar thumbnails (#3860)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-11-06 17:19:13 +01:00
LisoUseInAIKyrios
b7b536f1bc refactor(YouTube): Add missing version tags to "any version" bytecode patches 2024-11-06 17:19:13 +01:00
LisoUseInAIKyrios
53c2f96b6a fix(YouTube - SponsorBlock): Show correct segment behavior in settings UI after importing 2024-11-06 17:19:13 +01:00
LisoUseInAIKyrios
48cca5d08f chore: Remove obsolete error toast custom message.
All patches that can encounter network errors now manage their own error toasts.
2024-11-06 17:19:13 +01:00
eiqnepm
9c3bec69d8 fix(MyFitnessPal - Hide ads): Constrain patch to last working version (#3847) 2024-11-06 17:19:12 +01:00
LisoUseInAIKyrios
6ceb084831 fix(YouTube - Hide ads): Hide new types of ads 2024-11-06 17:19:12 +01:00
LisoUseInAIKyrios
43f5e99e0b feat(YouTube): Support version 19.43.41 (#3854) 2024-11-06 17:19:12 +01:00
LisoUseInAIKyrios
c832143eec fix(YouTube - Copy video URL): Support A/B player layout 2024-11-06 17:19:12 +01:00
github-actions[bot]
9ced010568 chore: Sync translations (#3850) 2024-11-06 17:19:11 +01:00
LisoUseInAIKyrios
30a063ea12 fix(YouTube - Hide layout components): Remove obsolete 'Hide gray separator' 2024-11-06 17:19:11 +01:00
LisoUseInAIKyrios
8e5116197c chore: Fix merge fix for 19.34 target 2024-11-06 17:19:11 +01:00
github-actions[bot]
0a3a0058a9 chore: Sync translations (#3834) 2024-11-06 17:19:10 +01:00
LisoUseInAIKyrios
3fbc6973bb chore: Fix merge typo, refactor 2024-11-06 17:19:10 +01:00
LisoUseInAIKyrios
d3c481166f feat(YouTube - Hide player flyout menu items): Hide stable volume (#3827) 2024-11-06 17:19:10 +01:00
LisoUseInAIKyrios
518aab4c71 chore: Fix string declared for the wrong patch 2024-11-06 17:19:10 +01:00
LisoUseInAIKyrios
2165953a4e fix(YouTube - Spoof app version): Remove obsolete 17.33.42 spoof target (#3825) 2024-11-06 17:19:09 +01:00
LisoUseInAIKyrios
cae6975870 chore: Fix merge typo 2024-11-06 17:19:09 +01:00
LisoUseInAIKyrios
e94b216e44 fix(YouTube - Seekbar): Use latest shade of YouTube red 2024-11-06 17:19:09 +01:00
LisoUseInAIKyrios
2082f14f34 fix(YouTube - Settings): Use multiline preference title for localized languages (#3821) 2024-11-06 17:19:08 +01:00
github-actions[bot]
fbce497723 chore: Sync translations (#3820) 2024-11-06 17:19:08 +01:00
oSumAtrIX
b3c53eec20 ci: Update paths for translations CI and remove scheduled pull of strings (#3819) 2024-11-06 17:19:08 +01:00
Zain
a8036606c1 fix(YouTube - Remove background playback restrictions): Enable for Shorts as well (#3671) 2024-11-06 17:19:08 +01:00
Zain
6348a66fef feat(YouTube - Player flyout menu): Hide sleep timer (#3637) 2024-11-06 17:19:07 +01:00
LisoUseInAIKyrios
1215d16a30 fix(YouTube - Playback speed): Restore old playback speed menu (#3817) 2024-11-06 17:19:07 +01:00
LisoUseInAIKyrios
aa2f963e05 feat(YouTube): Add Seekbar thumbnails patch (#3813) 2024-11-06 17:19:07 +01:00
LisoUseInAIKyrios
c2195dcf4a refactor: Simplify extensions register declaration (#3084) 2024-11-06 17:19:07 +01:00
LisoUseInAIKyrios
cd74726ab6 chore: Remove obsolete code (#3650) 2024-11-06 17:19:06 +01:00
oSumAtrIX
55d55db86f chore: Merge integrations 2024-11-06 17:19:06 +01:00
oSumAtrIX
928cf5f945 build: Bump ReVanced Patcher
BREAKING CHANGE: Various APIs have been changed or removed.
2024-11-06 17:19:04 +01:00
semantic-release-bot
abd100f24c chore: Release v4.18.0-dev.6 [skip ci]
# [4.18.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v4.18.0-dev.5...v4.18.0-dev.6) (2024-10-24)

### Bug Fixes

* **YouTube - Playback speed:** Remember playback speed with new speed menu ([#3810](https://github.com/ReVanced/revanced-patches/issues/3810)) ([e09b039](e09b03997e))
2024-10-24 11:48:59 +00:00
LisoUseInAIKyrios
e09b03997e fix(YouTube - Playback speed): Remember playback speed with new speed menu (#3810) 2024-10-24 07:47:01 -04:00
github-actions[bot]
df346c727d chore: Sync translations (#3814) 2024-10-24 07:44:37 -04:00
semantic-release-bot
62bdb53691 chore: Release v4.18.0-dev.5 [skip ci]
# [4.18.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v4.18.0-dev.4...v4.18.0-dev.5) (2024-10-23)

### Features

* **YouTube:** Hide player shopping shelf in playlists ([#3806](https://github.com/ReVanced/revanced-patches/issues/3806)) ([68d9edf](68d9edfd8c))
2024-10-23 03:58:10 +00:00
LisoUseInAIKyrios
68d9edfd8c feat(YouTube): Hide player shopping shelf in playlists (#3806) 2024-10-22 23:56:02 -04:00
github-actions[bot]
834425f720 chore: Sync translations (#3807) 2024-10-22 23:51:52 -04:00
semantic-release-bot
ea00874105 chore: Release v4.18.0-dev.4 [skip ci]
# [4.18.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.18.0-dev.3...v4.18.0-dev.4) (2024-10-23)

### Features

* **YouTube - Hide layout components:** Hide player shopping shelf ([#3804](https://github.com/ReVanced/revanced-patches/issues/3804)) ([69329df](69329df355))
2024-10-23 02:15:28 +00:00
LisoUseInAIKyrios
69329df355 feat(YouTube - Hide layout components): Hide player shopping shelf (#3804) 2024-10-23 04:13:24 +02:00
github-actions[bot]
5ecda855b8 chore: Sync translations (#3803) 2024-10-22 20:59:25 -04:00
semantic-release-bot
5c36f7fc4d chore: Release v4.18.0-dev.3 [skip ci]
# [4.18.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.18.0-dev.2...v4.18.0-dev.3) (2024-10-22)

### Features

* **YouTube:** Merge multiple layout patches into `Hide Layout Components` ([#3799](https://github.com/ReVanced/revanced-patches/issues/3799)) ([24d612d](24d612d0d1))
* **YouTube:** Merge multiple player overlay patches into `Hide player overlay buttons` ([#3800](https://github.com/ReVanced/revanced-patches/issues/3800)) ([cee0641](cee0641247))
2024-10-22 22:33:09 +00:00
LisoUseInAIKyrios
cee0641247 feat(YouTube): Merge multiple player overlay patches into Hide player overlay buttons (#3800)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-10-23 00:31:07 +02:00
LisoUseInAIKyrios
24d612d0d1 feat(YouTube): Merge multiple layout patches into Hide Layout Components (#3799) 2024-10-23 00:29:23 +02:00
semantic-release-bot
59b648c049 chore: Release v4.18.0-dev.2 [skip ci]
# [4.18.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.18.0-dev.1...v4.18.0-dev.2) (2024-10-22)

### Bug Fixes

* **Twitter - Change link sharing domain:** Support latest app version ([#3786](https://github.com/ReVanced/revanced-patches/issues/3786)) ([5bdb3a2](5bdb3a2e29))
2024-10-22 21:05:36 +00:00
Alex
5bdb3a2e29 fix(Twitter - Change link sharing domain): Support latest app version (#3786) 2024-10-22 23:03:33 +02:00
semantic-release-bot
9f6c4c19aa chore: Release v4.18.0-dev.1 [skip ci]
# [4.18.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.17.0...v4.18.0-dev.1) (2024-10-21)

### Bug Fixes

* **YouTube - Hide layout components:** Move hide chips settings to Feed menu ([716f0d8](716f0d8d64))

### Features

* **YouTube:** Add `Shorts autoplay` patch ([#3794](https://github.com/ReVanced/revanced-patches/issues/3794)) ([132d925](132d925d5c))
2024-10-21 06:56:34 +00:00
LisoUseInAIKyrios
716f0d8d64 fix(YouTube - Hide layout components): Move hide chips settings to Feed menu 2024-10-21 02:54:06 -04:00
LisoUseInAIKyrios
132d925d5c feat(YouTube): Add Shorts autoplay patch (#3794) 2024-10-21 02:53:09 -04:00
semantic-release-bot
8d5f92b2fa chore: Release v4.17.0 [skip ci]
# [4.17.0](https://github.com/ReVanced/revanced-patches/compare/v4.16.0...v4.17.0) (2024-10-20)

### Bug Fixes

* **Twitter - Unlock downloads:** Make it work with latest versions ([#3782](https://github.com/ReVanced/revanced-patches/issues/3782)) ([773fd81](773fd81dfd))
* **YouTube - GmsCore support:** Add more replacements ([6965b7d](6965b7d653))
* **YouTube - GmsCore support:** Remove unclear patch changes ([ab10b42](ab10b42388))
* **YouTube - Hide layout components:** Adjust settings text ([#3745](https://github.com/ReVanced/revanced-patches/issues/3745)) ([2f7e1f6](2f7e1f601a))
* **YouTube - Spoof video streams:** Fix playback for Android VR by removing invalid body as well ([#3769](https://github.com/ReVanced/revanced-patches/issues/3769)) ([68b61b4](68b61b4725))

### Features

* **Backdrops - Pro unlock:** Support latest versions by removing version constraint ([98c33f0](98c33f03dd))
* **Facebook:** Add `Hide sponsored stories` patch ([#3627](https://github.com/ReVanced/revanced-patches/issues/3627)) ([fc7644d](fc7644d3b7))
* **Sync for Reddit:** Add `Fix video downloads` patch ([#3739](https://github.com/ReVanced/revanced-patches/issues/3739)) ([38e7884](38e7884d17))
* **Twitter:** Add `Change link sharing domain` patch ([#3753](https://github.com/ReVanced/revanced-patches/issues/3753)) ([0077028](007702825b))
* **Willhaben:** Add `Hide ads` patch ([#3740](https://github.com/ReVanced/revanced-patches/issues/3740)) ([42ed29b](42ed29b4c0))
* **YouTube - Hide layout components:** Add option to hide Yoodles (YouTube Doodles) ([#3743](https://github.com/ReVanced/revanced-patches/issues/3743)) ([0679a47](0679a47b22))
* **YouTube - Hide Shorts components:** Add option to hide `Use template`, `Upcoming`, `Green screen` buttons ([#3752](https://github.com/ReVanced/revanced-patches/issues/3752)) ([d5a1368](d5a13684f6))
* **YouTube - Hide Shorts components:** Add option to hide like fountain ([#3731](https://github.com/ReVanced/revanced-patches/issues/3731)) ([d76f4c9](d76f4c96a4))
* **YouTube - Hide Shorts components:** Hide `Hashtag` button ([#3787](https://github.com/ReVanced/revanced-patches/issues/3787)) ([d9a70a3](d9a70a3ae0))
* **YouTube:** Support versions `19.25` and `19.34` ([#3629](https://github.com/ReVanced/revanced-patches/issues/3629)) ([172886f](172886fe4b))

### Performance Improvements

* **YouTube - GmsCore support:** Improve performance by using hashsets ([6bc6ea8](6bc6ea854b))
2024-10-20 01:42:35 +00:00
LisoUseInAIKyrios
0317aa1df7 chore: Merge branch dev to main (#3724) 2024-10-19 21:40:07 -04:00
github-actions[bot]
7466ffff9f chore: Sync translations (#3792) 2024-10-19 21:29:04 -04:00
semantic-release-bot
4d7a9dbb06 chore: Release v4.17.0-dev.13 [skip ci]
# [4.17.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v4.17.0-dev.12...v4.17.0-dev.13) (2024-10-19)

### Bug Fixes

* **YouTube - GmsCore support:** Add more replacements ([6965b7d](6965b7d653))
* **YouTube - GmsCore support:** Remove unclear patch changes ([ab10b42](ab10b42388))

### Performance Improvements

* **YouTube - GmsCore support:** Improve performance by using hashsets ([6bc6ea8](6bc6ea854b))
2024-10-19 14:50:26 +00:00
github-actions[bot]
2113f9a83a chore: Sync translations (#3791) 2024-10-19 10:39:17 -04:00
oSumAtrIX
ab10b42388 fix(YouTube - GmsCore support): Remove unclear patch changes 2024-10-19 09:43:34 -04:00
oSumAtrIX
6965b7d653 fix(YouTube - GmsCore support): Add more replacements 2024-10-19 09:43:24 -04:00
oSumAtrIX
6bc6ea854b perf(YouTube - GmsCore support): Improve performance by using hashsets 2024-10-19 09:38:18 -04:00
github-actions[bot]
0390c95a10 chore: Sync translations (#3790) 2024-10-19 09:37:58 -04:00
github-actions[bot]
5151a5f37c chore: Sync translations (#3789)
Co-authored-by: revanced-bot <github@revanced.app>
2024-10-19 09:08:25 -04:00
oSumAtrIX
8c9d73fc39 ci: Grant workflow necessary permission 2024-10-19 15:03:25 +02:00
semantic-release-bot
07e65d8e83 chore: Release v4.17.0-dev.12 [skip ci]
# [4.17.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v4.17.0-dev.11...v4.17.0-dev.12) (2024-10-19)

### Features

* **YouTube - Hide Shorts components:** Hide `Hashtag` button ([#3787](https://github.com/ReVanced/revanced-patches/issues/3787)) ([d9a70a3](d9a70a3ae0))
2024-10-19 12:41:16 +00:00
MarcaD
d9a70a3ae0 feat(YouTube - Hide Shorts components): Hide Hashtag button (#3787) 2024-10-19 08:39:08 -04:00
semantic-release-bot
945b6b0b34 chore: Release v4.17.0-dev.11 [skip ci]
# [4.17.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v4.17.0-dev.10...v4.17.0-dev.11) (2024-10-19)

### Features

* **YouTube:** Support versions `19.25` and `19.34` ([#3629](https://github.com/ReVanced/revanced-patches/issues/3629)) ([172886f](172886fe4b))
2024-10-19 12:29:04 +00:00
Zain
172886fe4b feat(YouTube): Support versions 19.25 and 19.34 (#3629)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-10-19 08:26:39 -04:00
semantic-release-bot
651e34b997 chore: Release v4.17.0-dev.10 [skip ci]
# [4.17.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v4.17.0-dev.9...v4.17.0-dev.10) (2024-10-17)

### Features

* **Facebook:** Add `Hide sponsored stories` patch ([#3627](https://github.com/ReVanced/revanced-patches/issues/3627)) ([fc7644d](fc7644d3b7))
2024-10-17 15:39:04 +00:00
PantlessCoding
fc7644d3b7 feat(Facebook): Add Hide sponsored stories patch (#3627)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-10-17 17:36:35 +02:00
semantic-release-bot
061ebcb7c6 chore: Release v4.17.0-dev.9 [skip ci]
# [4.17.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v4.17.0-dev.8...v4.17.0-dev.9) (2024-10-17)

### Features

* **Sync for Reddit:** Add `Fix video downloads` patch ([#3739](https://github.com/ReVanced/revanced-patches/issues/3739)) ([38e7884](38e7884d17))
2024-10-17 15:30:41 +00:00
1fexd
38e7884d17 feat(Sync for Reddit): Add Fix video downloads patch (#3739)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-10-17 17:28:30 +02:00
semantic-release-bot
64680c718b chore: Release v4.17.0-dev.8 [skip ci]
# [4.17.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v4.17.0-dev.7...v4.17.0-dev.8) (2024-10-17)

### Features

* **Twitter:** Add `Change link sharing domain` patch ([#3753](https://github.com/ReVanced/revanced-patches/issues/3753)) ([0077028](007702825b))
2024-10-17 15:26:18 +00:00
Alex
007702825b feat(Twitter): Add Change link sharing domain patch (#3753)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-10-17 17:24:06 +02:00
semantic-release-bot
596c2b0f8d chore: Release v4.17.0-dev.7 [skip ci]
# [4.17.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v4.17.0-dev.6...v4.17.0-dev.7) (2024-10-17)

### Bug Fixes

* **Twitter - Unlock downloads:** Make it work with latest versions ([#3782](https://github.com/ReVanced/revanced-patches/issues/3782)) ([773fd81](773fd81dfd))
* **YouTube - Spoof video streams:** Fix playback for Android VR by removing invalid body as well ([#3769](https://github.com/ReVanced/revanced-patches/issues/3769)) ([68b61b4](68b61b4725))
2024-10-17 15:21:25 +00:00
Alex
773fd81dfd fix(Twitter - Unlock downloads): Make it work with latest versions (#3782) 2024-10-17 17:18:48 +02:00
oSumAtrIX
68b61b4725 fix(YouTube - Spoof video streams): Fix playback for Android VR by removing invalid body as well (#3769) 2024-10-17 17:16:45 +02:00
semantic-release-bot
10efb20e35 chore: Release v4.17.0-dev.6 [skip ci]
# [4.17.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v4.17.0-dev.5...v4.17.0-dev.6) (2024-10-14)

### Features

* **YouTube - Hide Shorts components:** Add option to hide `Use template`, `Upcoming`, `Green screen` buttons ([#3752](https://github.com/ReVanced/revanced-patches/issues/3752)) ([d5a1368](d5a13684f6))
2024-10-14 12:13:04 +00:00
MarcaD
d5a13684f6 feat(YouTube - Hide Shorts components): Add option to hide Use template, Upcoming, Green screen buttons (#3752) 2024-10-14 14:10:53 +02:00
semantic-release-bot
e2dd1bdaf3 chore: Release v4.17.0-dev.5 [skip ci]
# [4.17.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v4.17.0-dev.4...v4.17.0-dev.5) (2024-10-07)

### Features

* **Backdrops - Pro unlock:** Support latest versions by removing version constraint ([98c33f0](98c33f03dd))
2024-10-07 20:58:34 +00:00
KAZI MMT
98c33f03dd feat(Backdrops - Pro unlock): Support latest versions by removing version constraint 2024-10-07 22:56:31 +02:00
semantic-release-bot
d73e5b77df chore: Release v4.17.0-dev.4 [skip ci]
# [4.17.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.17.0-dev.3...v4.17.0-dev.4) (2024-10-06)

### Bug Fixes

* **YouTube - Hide layout components:** Adjust settings text ([#3745](https://github.com/ReVanced/revanced-patches/issues/3745)) ([2f7e1f6](2f7e1f601a))
2024-10-06 22:57:38 +00:00
LisoUseInAIKyrios
2f7e1f601a fix(YouTube - Hide layout components): Adjust settings text (#3745) 2024-10-06 18:55:20 -04:00
semantic-release-bot
bcdc7a4589 chore: Release v4.17.0-dev.3 [skip ci]
# [4.17.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.17.0-dev.2...v4.17.0-dev.3) (2024-10-06)

### Features

* **YouTube - Hide layout components:** Add option to hide Yoodles (YouTube Doodles) ([#3743](https://github.com/ReVanced/revanced-patches/issues/3743)) ([0679a47](0679a47b22))
2024-10-06 00:11:05 +00:00
LisoUseInAIKyrios
0679a47b22 feat(YouTube - Hide layout components): Add option to hide Yoodles (YouTube Doodles) (#3743)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-10-05 20:09:06 -04:00
semantic-release-bot
5a08620356 chore: Release v4.17.0-dev.2 [skip ci]
# [4.17.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.17.0-dev.1...v4.17.0-dev.2) (2024-10-05)

### Features

* **Willhaben:** Add `Hide ads` patch ([#3740](https://github.com/ReVanced/revanced-patches/issues/3740)) ([42ed29b](42ed29b4c0))
2024-10-05 23:21:37 +00:00
1fexd
42ed29b4c0 feat(Willhaben): Add Hide ads patch (#3740) 2024-10-06 01:19:39 +02:00
semantic-release-bot
8475cc2b09 chore: Release v4.17.0-dev.1 [skip ci]
# [4.17.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.16.1-dev.1...v4.17.0-dev.1) (2024-10-02)

### Features

* **YouTube - Hide Shorts components:** Add option to hide like fountain ([#3731](https://github.com/ReVanced/revanced-patches/issues/3731)) ([d76f4c9](d76f4c96a4))
2024-10-02 00:40:56 +00:00
oSumAtrIX
d76f4c96a4 feat(YouTube - Hide Shorts components): Add option to hide like fountain (#3731)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2024-10-02 02:38:49 +02:00
semantic-release-bot
eebe82b2f4 chore: Release v4.16.1-dev.1 [skip ci]
## [4.16.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.16.0...v4.16.1-dev.1) (2024-10-01)
2024-10-01 15:31:58 +00:00
oSumAtrIX
59273999e9 ci: Use permissions and regular GitHub token instead of PAT 2024-10-01 17:28:12 +02:00
oSumAtrIX
c3d457d7de build(Needs bump): Update dependencies 2024-09-30 23:21:43 +02:00
oSumAtrIX
17dfc161c1 ci: Adjust release commit message 2024-09-30 22:34:23 +02:00
oSumAtrIX
e3e1efea33 chore: Adjust PR body 2024-09-30 22:08:45 +02:00
semantic-release-bot
ef8aa22779 chore(release): 4.16.0 [skip ci]
# [4.16.0](https://github.com/ReVanced/revanced-patches/compare/v4.15.0...v4.16.0) (2024-09-30)

### Bug Fixes

* **Soundcloud:** Support latest versions ([#3702](https://github.com/ReVanced/revanced-patches/issues/3702)) ([fa94ddd](fa94ddd510))
* **Twitter - Open links with app chooser:** Fix incorrect version in compatibility list ([#3683](https://github.com/ReVanced/revanced-patches/issues/3683)) ([2e9142e](2e9142eda4))
* **YouTube - SponsorBlock:** Fade out SB buttons without overlapping other buttons ([#3719](https://github.com/ReVanced/revanced-patches/issues/3719)) ([1928e89](1928e89085))
* **YouTube:** Show video chapter titles without clipping when overlay buttons are enabled ([#3674](https://github.com/ReVanced/revanced-patches/issues/3674)) ([317e9a8](317e9a80eb))

### Features

* **Google Photos:** Restore hidden 'Back up while charging' toggle ([#3678](https://github.com/ReVanced/revanced-patches/issues/3678)) ([8a3b061](8a3b0610b4))
* **YouTube - Disable precise seeking gesture:** Hide "pull up" label that shows up when swiping ([#3668](https://github.com/ReVanced/revanced-patches/issues/3668)) ([1f0b4cd](1f0b4cdcb4))
* **YouTube - Hide Shorts components:** Add `Hide save music`, `Hide stickers` ([#3710](https://github.com/ReVanced/revanced-patches/issues/3710)) ([82d44f6](82d44f691d))
* **YouTube - Hide Shorts components:** Add patch option to hide Shorts app shortcut (long press app icon) ([#3699](https://github.com/ReVanced/revanced-patches/issues/3699)) ([bb0dcbe](bb0dcbe83d))
* **YouTube - Hide Shorts components:** Add patch option to hide Shorts from app launcher widget Beta ([#3707](https://github.com/ReVanced/revanced-patches/issues/3707)) ([4c7b018](4c7b018878))
2024-09-30 19:15:42 +00:00
oSumAtrIX
fb9db0eec4 chore: Merge branch dev to main (#3681) 2024-09-30 21:13:15 +02:00
ReVanced Bot
33adf53ef1 chore: Sync translations (#3721) 2024-09-30 15:07:54 -04:00
semantic-release-bot
9131e387b5 chore(release): 4.16.0-dev.7 [skip ci]
# [4.16.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v4.16.0-dev.6...v4.16.0-dev.7) (2024-09-29)

### Bug Fixes

* **YouTube - SponsorBlock:** Fade out SB buttons without overlapping other buttons ([#3719](https://github.com/ReVanced/revanced-patches/issues/3719)) ([1928e89](1928e89085))
2024-09-29 21:15:24 +00:00
LisoUseInAIKyrios
1928e89085 fix(YouTube - SponsorBlock): Fade out SB buttons without overlapping other buttons (#3719) 2024-09-29 17:13:21 -04:00
ReVanced Bot
35973c721a chore: Sync translations (#3720) 2024-09-29 17:13:04 -04:00
LisoUseInAIKyrios
31b18fec39 chore(YouTube - Hide layout components): Move Hide chips shelf to general as it also appears in the feed 2024-09-28 21:28:55 -04:00
semantic-release-bot
db15b68dc8 chore(release): 4.16.0-dev.6 [skip ci]
# [4.16.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v4.16.0-dev.5...v4.16.0-dev.6) (2024-09-29)

### Features

* **YouTube - Hide Shorts components:** Add `Hide save music`, `Hide stickers` ([#3710](https://github.com/ReVanced/revanced-patches/issues/3710)) ([82d44f6](82d44f691d))
2024-09-29 01:05:21 +00:00
LisoUseInAIKyrios
82d44f691d feat(YouTube - Hide Shorts components): Add Hide save music, Hide stickers (#3710) 2024-09-28 21:02:56 -04:00
semantic-release-bot
fee2218303 chore(release): 4.16.0-dev.5 [skip ci]
# [4.16.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v4.16.0-dev.4...v4.16.0-dev.5) (2024-09-29)

### Features

* **YouTube - Disable precise seeking gesture:** Hide "pull up" label that shows up when swiping ([#3668](https://github.com/ReVanced/revanced-patches/issues/3668)) ([1f0b4cd](1f0b4cdcb4))
2024-09-29 00:34:19 +00:00
Zain
1f0b4cdcb4 feat(YouTube - Disable precise seeking gesture): Hide "pull up" label that shows up when swiping (#3668)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-09-29 02:32:17 +02:00
semantic-release-bot
1fd30c1b44 chore(release): 4.16.0-dev.4 [skip ci]
# [4.16.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.16.0-dev.3...v4.16.0-dev.4) (2024-09-29)

### Bug Fixes

* **Soundcloud:** Support latest versions ([#3702](https://github.com/ReVanced/revanced-patches/issues/3702)) ([fa94ddd](fa94ddd510))
2024-09-29 00:27:59 +00:00
FullerBread2032
fa94ddd510 fix(Soundcloud): Support latest versions (#3702) 2024-09-29 02:25:56 +02:00
semantic-release-bot
94cf815e4a chore(release): 4.16.0-dev.3 [skip ci]
# [4.16.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.16.0-dev.2...v4.16.0-dev.3) (2024-09-29)

### Features

* **Google Photos:** Restore hidden 'Back up while charging' toggle ([#3678](https://github.com/ReVanced/revanced-patches/issues/3678)) ([8a3b061](8a3b0610b4))
2024-09-29 00:24:39 +00:00
xob0t
8a3b0610b4 feat(Google Photos): Restore hidden 'Back up while charging' toggle (#3678)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-09-29 02:22:32 +02:00
ReVanced Bot
b920355d9c chore: Sync translations (#3709) 2024-09-28 19:22:19 -04:00
semantic-release-bot
8b49012130 chore(release): 4.16.0-dev.2 [skip ci]
# [4.16.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.16.0-dev.1...v4.16.0-dev.2) (2024-09-28)

### Features

* **YouTube - Hide Shorts components:** Add patch option to hide Shorts from app launcher widget Beta ([#3707](https://github.com/ReVanced/revanced-patches/issues/3707)) ([4c7b018](4c7b018878))
2024-09-28 21:04:47 +00:00
LisoUseInAIKyrios
4c7b018878 feat(YouTube - Hide Shorts components): Add patch option to hide Shorts from app launcher widget Beta (#3707) 2024-09-28 17:02:42 -04:00
semantic-release-bot
5ddd957313 chore(release): 4.16.0-dev.1 [skip ci]
# [4.16.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.15.1-dev.2...v4.16.0-dev.1) (2024-09-27)

### Features

* **YouTube - Hide Shorts components:** Add patch option to hide Shorts app shortcut (long press app icon) ([#3699](https://github.com/ReVanced/revanced-patches/issues/3699)) ([bb0dcbe](bb0dcbe83d))
2024-09-27 01:57:13 +00:00
LisoUseInAIKyrios
bb0dcbe83d feat(YouTube - Hide Shorts components): Add patch option to hide Shorts app shortcut (long press app icon) (#3699)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-09-26 21:55:14 -04:00
ReVanced Bot
163736fb26 chore: Sync translations (#3692) 2024-09-25 15:28:51 -04:00
semantic-release-bot
0c6db43bde chore(release): 4.15.1-dev.2 [skip ci]
## [4.15.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.15.1-dev.1...v4.15.1-dev.2) (2024-09-23)

### Bug Fixes

* **YouTube:** Show video chapter titles without clipping when overlay buttons are enabled ([#3674](https://github.com/ReVanced/revanced-patches/issues/3674)) ([317e9a8](317e9a80eb))
2024-09-23 22:52:28 +00:00
LisoUseInAIKyrios
317e9a80eb fix(YouTube): Show video chapter titles without clipping when overlay buttons are enabled (#3674) 2024-09-23 18:50:16 -04:00
semantic-release-bot
464e6a3673 chore(release): 4.15.1-dev.1 [skip ci]
## [4.15.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.15.0...v4.15.1-dev.1) (2024-09-23)

### Bug Fixes

* **Twitter - Open links with app chooser:** Fix incorrect version in compatibility list ([#3683](https://github.com/ReVanced/revanced-patches/issues/3683)) ([2e9142e](2e9142eda4))
2024-09-23 22:39:29 +00:00
7Grn
2e9142eda4 fix(Twitter - Open links with app chooser): Fix incorrect version in compatibility list (#3683) 2024-09-24 00:37:30 +02:00
ReVanced Bot
b4c6d0a7d2 chore: Sync translations (#3679) 2024-09-23 13:05:51 -04:00
semantic-release-bot
c0ee85e12a chore(release): 4.15.0 [skip ci]
# [4.15.0](https://github.com/ReVanced/revanced-patches/compare/v4.14.1...v4.15.0) (2024-09-23)

### Bug Fixes

* **TikTok - Playback speed:** Prevent crash by fixing invalid patch ([ff8fe46](ff8fe46685))
* **TikTok - Settings:** Prevent crash by fixing invalid patch ([0ab7344](0ab7344295))
* **Twitter - Open links with app chooser:** Constrain patch to last working version `10.48.0-release` ([303d2de](303d2de81d))
* **YouTube - Spoof video streams:** Change default client type to Android VR ([a104eea](a104eeaf68))
* **YouTube - Spoof video streams:** Change default client type to Android VR ([#3672](https://github.com/ReVanced/revanced-patches/issues/3672)) ([e8cb6ee](e8cb6ee028))

### Features

* **TikTok:** Bump patches to support the latest version 36.5.4 ([9f314c2](9f314c2425))
2024-09-23 14:10:49 +00:00
oSumAtrIX
2d326072e2 chore: Merge branch dev to main (#3673) 2024-09-23 16:08:46 +02:00
semantic-release-bot
586770aa3a chore(release): 4.15.0-dev.1 [skip ci]
# [4.15.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.14.2-dev.2...v4.15.0-dev.1) (2024-09-22)

### Features

* **TikTok:** Bump patches to support the latest version 36.5.4 ([9f314c2](9f314c2425))
2024-09-22 23:45:54 +00:00
oSumAtrIX
9f314c2425 feat(TikTok): Bump patches to support the latest version 36.5.4 2024-09-23 01:43:22 +02:00
semantic-release-bot
c8b3456738 chore(release): 4.14.2-dev.2 [skip ci]
## [4.14.2-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.14.2-dev.1...v4.14.2-dev.2) (2024-09-21)

### Bug Fixes

* **YouTube - Spoof video streams:** Change default client type to Android VR ([a104eea](a104eeaf68))
* **YouTube - Spoof video streams:** Change default client type to Android VR ([#3672](https://github.com/ReVanced/revanced-patches/issues/3672)) ([e8cb6ee](e8cb6ee028))
2024-09-21 23:33:50 +00:00
LisoUseInAIKyrios
e8cb6ee028 fix(YouTube - Spoof video streams): Change default client type to Android VR (#3672) 2024-09-21 19:31:55 -04:00
semantic-release-bot
3e796eb7c2 chore(release): 4.14.2-dev.1 [skip ci]
## [4.14.2-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.14.1...v4.14.2-dev.1) (2024-09-21)

### Bug Fixes

* **TikTok - Playback speed:** Prevent crash by fixing invalid patch ([ff8fe46](ff8fe46685))
* **TikTok - Settings:** Prevent crash by fixing invalid patch ([0ab7344](0ab7344295))
* **Twitter - Open links with app chooser:** Constrain patch to last working version `10.48.0-release` ([303d2de](303d2de81d))
2024-09-21 23:20:21 +00:00
oSumAtrIX
303d2de81d fix(Twitter - Open links with app chooser): Constrain patch to last working version 10.48.0-release 2024-09-22 01:18:04 +02:00
oSumAtrIX
0ab7344295 fix(TikTok - Settings): Prevent crash by fixing invalid patch 2024-09-22 01:17:53 +02:00
oSumAtrIX
ff8fe46685 fix(TikTok - Playback speed): Prevent crash by fixing invalid patch 2024-09-22 01:17:47 +02:00
LisoUseInAIKyrios
a104eeaf68 fix(YouTube - Spoof video streams): Change default client type to Android VR 2024-09-21 17:11:54 -04:00
semantic-release-bot
18b09168cc chore(release): 4.14.1 [skip ci]
## [4.14.1](https://github.com/ReVanced/revanced-patches/compare/v4.14.0...v4.14.1) (2024-09-18)

### Bug Fixes

* **YouTube - Check environment:** Only use fields available since Android 8 ([#3655](https://github.com/ReVanced/revanced-patches/issues/3655)) ([e03c14c](e03c14cc01))
2024-09-18 23:02:35 +00:00
oSumAtrIX
f7209f0a53 chore: Merge branch dev to main (#3656) 2024-09-19 01:00:28 +02:00
semantic-release-bot
1fb3fc4857 chore(release): 4.14.1-dev.1 [skip ci]
## [4.14.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.14.0...v4.14.1-dev.1) (2024-09-18)

### Bug Fixes

* **YouTube - Check environment:** Only use fields available since Android 8 ([#3655](https://github.com/ReVanced/revanced-patches/issues/3655)) ([e03c14c](e03c14cc01))
2024-09-18 22:59:56 +00:00
oSumAtrIX
e03c14cc01 fix(YouTube - Check environment): Only use fields available since Android 8 (#3655) 2024-09-19 00:57:54 +02:00
semantic-release-bot
bed29d00dc chore(release): 4.14.0 [skip ci]
# [4.14.0](https://github.com/ReVanced/revanced-patches/compare/v4.13.3...v4.14.0) (2024-09-18)

### Bug Fixes

* **Pixiv - Hide ads:** Fix for latest version ([#3616](https://github.com/ReVanced/revanced-patches/issues/3616)) ([ff2c456](ff2c4564a0))
* **Soundcloud - Hide ads:** Support latest version ([#3628](https://github.com/ReVanced/revanced-patches/issues/3628)) ([2f7d751](2f7d751f9f))
* **SwissID:** Rename `Remove Google Play Integrity Integrity check` to `Remove Google Play Integrity check` ([#3558](https://github.com/ReVanced/revanced-patches/issues/3558)) ([bdd2f7c](bdd2f7cb0f))
* **YouTube - ReturnYouTubeDislike:** Show estimated like count for videos with hidden likes ([#3601](https://github.com/ReVanced/revanced-patches/issues/3601)) ([70470a9](70470a9162))
* **YouTube - SponsorBlock:** Add summary text to 'view my segments' button ([a642705](a64270514f))
* **YouTube - SponsorBlock:** Handle if the user enters an invalid number into any SB settings ([a276425](a276425d83))
* **YouTube:** Fix issues related to playback by replace streaming data ([#3582](https://github.com/ReVanced/revanced-patches/issues/3582)) ([5b1e07d](5b1e07d861))

### Features

* Add `Change data directory location` patch ([#3602](https://github.com/ReVanced/revanced-patches/issues/3602)) ([96e6f43](96e6f43ca0))
* Add `Check environment` patch ([#3610](https://github.com/ReVanced/revanced-patches/issues/3610)) ([4c2ec28](4c2ec2870c))
* **Duolingo:** Add `Disable ads` and `Enable debug menu` patch ([#3422](https://github.com/ReVanced/revanced-patches/issues/3422)) ([4e323aa](4e323aa206))
* **Sync for Reddit:** Add `Fix /user/ endpoint` patch ([16217f0](16217f012e))
* **Sync for Reddit:** Rename patch to `Use /user/ endpoint` ([5871923](58719239cf))
* **YouTube - Hide Shorts components:** Hide 'Use this sound' button ([#3647](https://github.com/ReVanced/revanced-patches/issues/3647)) ([395e18d](395e18d830))
* **YouTube - Keyword filter:** Add syntax to match whole keywords and not substrings ([#3592](https://github.com/ReVanced/revanced-patches/issues/3592)) ([ed532eb](ed532eb528))
* **YouTube - Spoof client:** Allow forcing AVC codec with iOS ([#3570](https://github.com/ReVanced/revanced-patches/issues/3570)) ([6bb848b](6bb848b991))
* **YouTube Music:** Make working patches compatible with latest versions ([#3556](https://github.com/ReVanced/revanced-patches/issues/3556)) ([f83e314](f83e314dff))
* **YouTube:** Add donation link to settings about screen ([#3626](https://github.com/ReVanced/revanced-patches/issues/3626)) ([bccd62e](bccd62e593))
2024-09-18 22:19:44 +00:00
LisoUseInAIKyrios
d36982e245 chore: Merge branch dev to main (#3559) 2024-09-18 18:17:22 -04:00
ReVanced Bot
13031f0534 chore: Sync translations (#3653) 2024-09-18 17:48:02 -04:00
semantic-release-bot
b5b6ef5d6f chore(release): 4.14.0-dev.15 [skip ci]
# [4.14.0-dev.15](https://github.com/ReVanced/revanced-patches/compare/v4.14.0-dev.14...v4.14.0-dev.15) (2024-09-17)

### Bug Fixes

* **YouTube:** Fix issues related to playback by replace streaming data ([#3582](https://github.com/ReVanced/revanced-patches/issues/3582)) ([5b1e07d](5b1e07d861))
2024-09-17 22:47:28 +00:00
Zain
5b1e07d861 fix(YouTube): Fix issues related to playback by replace streaming data (#3582)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-09-18 00:45:02 +02:00
ReVanced Bot
e3220cc10a chore: Sync translations (#3649) 2024-09-17 12:37:00 -04:00
semantic-release-bot
02db9378ea chore(release): 4.14.0-dev.14 [skip ci]
# [4.14.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v4.14.0-dev.13...v4.14.0-dev.14) (2024-09-17)

### Features

* **YouTube Music:** Make working patches compatible with latest versions ([#3556](https://github.com/ReVanced/revanced-patches/issues/3556)) ([f83e314](f83e314dff))
2024-09-17 13:58:02 +00:00
Pun Butrach
f83e314dff feat(YouTube Music): Make working patches compatible with latest versions (#3556) 2024-09-17 15:56:00 +02:00
semantic-release-bot
d5e383b78a chore(release): 4.14.0-dev.13 [skip ci]
# [4.14.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v4.14.0-dev.12...v4.14.0-dev.13) (2024-09-17)

### Features

* **YouTube - Hide Shorts components:** Hide 'Use this sound' button ([#3647](https://github.com/ReVanced/revanced-patches/issues/3647)) ([395e18d](395e18d830))
2024-09-17 13:36:53 +00:00
MarcaD
395e18d830 feat(YouTube - Hide Shorts components): Hide 'Use this sound' button (#3647) 2024-09-17 15:34:31 +02:00
semantic-release-bot
887684e7c7 chore(release): 4.14.0-dev.12 [skip ci]
# [4.14.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v4.14.0-dev.11...v4.14.0-dev.12) (2024-09-14)

### Bug Fixes

* **Soundcloud - Hide ads:** Support latest version ([#3628](https://github.com/ReVanced/revanced-patches/issues/3628)) ([2f7d751](2f7d751f9f))
2024-09-14 15:09:54 +00:00
FullerBread2032
2f7d751f9f fix(Soundcloud - Hide ads): Support latest version (#3628)
Co-authored-by: FullerBread2032 <admin@fullerbread2032.tk>
2024-09-14 17:07:27 +02:00
semantic-release-bot
4886a95713 chore(release): 4.14.0-dev.11 [skip ci]
# [4.14.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v4.14.0-dev.10...v4.14.0-dev.11) (2024-09-12)

### Features

* **Sync for Reddit:** Rename patch to `Use /user/ endpoint` ([5871923](58719239cf))
2024-09-12 20:11:21 +00:00
oSumAtrIX
58719239cf feat(Sync for Reddit): Rename patch to Use /user/ endpoint
The bug it was used to fix does not occur anymore. This name is more correct on what the patch actually does.
2024-09-12 22:09:09 +02:00
semantic-release-bot
fcb68cc65e chore(release): 4.14.0-dev.10 [skip ci]
# [4.14.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v4.14.0-dev.9...v4.14.0-dev.10) (2024-09-12)

### Features

* **Sync for Reddit:** Add `Fix /user/ endpoint` patch ([16217f0](16217f012e))
2024-09-12 18:30:19 +00:00
oSumAtrIX
16217f012e feat(Sync for Reddit): Add Fix /user/ endpoint patch 2024-09-12 20:18:22 +02:00
semantic-release-bot
d6f20ee67d chore(release): 4.14.0-dev.9 [skip ci]
# [4.14.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v4.14.0-dev.8...v4.14.0-dev.9) (2024-09-09)

### Features

* **YouTube:** Add donation link to settings about screen ([#3626](https://github.com/ReVanced/revanced-patches/issues/3626)) ([bccd62e](bccd62e593))
2024-09-09 07:23:22 +00:00
LisoUseInAIKyrios
bccd62e593 feat(YouTube): Add donation link to settings about screen (#3626) 2024-09-09 03:21:22 -04:00
semantic-release-bot
1322403698 chore(release): 4.14.0-dev.8 [skip ci]
# [4.14.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v4.14.0-dev.7...v4.14.0-dev.8) (2024-09-09)

### Bug Fixes

* **YouTube - SponsorBlock:** Add summary text to 'view my segments' button ([a642705](a64270514f))
2024-09-09 07:19:55 +00:00
LisoUseInAIKyrios
a64270514f fix(YouTube - SponsorBlock): Add summary text to 'view my segments' button 2024-09-09 03:17:43 -04:00
semantic-release-bot
f5de555adf chore(release): 4.14.0-dev.7 [skip ci]
# [4.14.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v4.14.0-dev.6...v4.14.0-dev.7) (2024-09-06)

### Features

* Add `Check environment` patch ([#3610](https://github.com/ReVanced/revanced-patches/issues/3610)) ([4c2ec28](4c2ec2870c))
2024-09-06 08:29:07 +00:00
oSumAtrIX
4c2ec2870c feat: Add Check environment patch (#3610)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
Co-authored-by: KobeW50 <84587632+KobeW50@users.noreply.github.com>
2024-09-06 10:26:53 +02:00
semantic-release-bot
a73e2458e9 chore(release): 4.14.0-dev.6 [skip ci]
# [4.14.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v4.14.0-dev.5...v4.14.0-dev.6) (2024-09-06)

### Features

* Add `Change data directory location` patch ([#3602](https://github.com/ReVanced/revanced-patches/issues/3602)) ([96e6f43](96e6f43ca0))
2024-09-06 07:47:45 +00:00
KrystianQur
96e6f43ca0 feat: Add Change data directory location patch (#3602)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-09-06 09:45:40 +02:00
semantic-release-bot
f667d5a238 chore(release): 4.14.0-dev.5 [skip ci]
# [4.14.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v4.14.0-dev.4...v4.14.0-dev.5) (2024-09-06)

### Bug Fixes

* **Pixiv - Hide ads:** Fix for latest version ([#3616](https://github.com/ReVanced/revanced-patches/issues/3616)) ([ff2c456](ff2c4564a0))
2024-09-06 07:16:05 +00:00
Itroublve
ff2c4564a0 fix(Pixiv - Hide ads): Fix for latest version (#3616)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-09-06 09:13:57 +02:00
semantic-release-bot
b568207e49 chore(release): 4.14.0-dev.4 [skip ci]
# [4.14.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.14.0-dev.3...v4.14.0-dev.4) (2024-09-01)

### Bug Fixes

* **YouTube - ReturnYouTubeDislike:** Show estimated like count for videos with hidden likes ([#3601](https://github.com/ReVanced/revanced-patches/issues/3601)) ([70470a9](70470a9162))
2024-09-01 21:51:42 +00:00
LisoUseInAIKyrios
70470a9162 fix(YouTube - ReturnYouTubeDislike): Show estimated like count for videos with hidden likes (#3601) 2024-09-01 17:49:42 -04:00
semantic-release-bot
9922f47a49 chore(release): 4.14.0-dev.3 [skip ci]
# [4.14.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.14.0-dev.2...v4.14.0-dev.3) (2024-08-30)

### Features

* **YouTube - Keyword filter:** Add syntax to match whole keywords and not substrings ([#3592](https://github.com/ReVanced/revanced-patches/issues/3592)) ([ed532eb](ed532eb528))
2024-08-30 21:40:57 +00:00
LisoUseInAIKyrios
ed532eb528 feat(YouTube - Keyword filter): Add syntax to match whole keywords and not substrings (#3592) 2024-08-30 17:38:59 -04:00
ReVanced Bot
74f3f82927 chore: Sync translations (#3593) 2024-08-28 22:33:49 -04:00
semantic-release-bot
6544cd5fc6 chore(release): 4.14.0-dev.2 [skip ci]
# [4.14.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.14.0-dev.1...v4.14.0-dev.2) (2024-08-24)

### Features

* **Duolingo:** Add `Disable ads` and `Enable debug menu` patch ([#3422](https://github.com/ReVanced/revanced-patches/issues/3422)) ([4e323aa](4e323aa206))
2024-08-24 12:46:50 +00:00
Joshua May
4e323aa206 feat(Duolingo): Add Disable ads and Enable debug menu patch (#3422)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2024-08-24 14:44:35 +02:00
ReVanced Bot
c1cee281ff chore: Sync translations (#3574) 2024-08-23 00:37:22 -04:00
ReVanced Bot
0779f9fc5e chore: Sync translations (#3573) 2024-08-23 00:13:52 -04:00
semantic-release-bot
0ee5cf98ab chore(release): 4.14.0-dev.1 [skip ci]
# [4.14.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.13.4-dev.2...v4.14.0-dev.1) (2024-08-22)

### Features

* **YouTube - Spoof client:** Allow forcing AVC codec with iOS ([#3570](https://github.com/ReVanced/revanced-patches/issues/3570)) ([6bb848b](6bb848b991))
2024-08-22 17:51:00 +00:00
LisoUseInAIKyrios
6bb848b991 feat(YouTube - Spoof client): Allow forcing AVC codec with iOS (#3570) 2024-08-22 13:48:49 -04:00
semantic-release-bot
188b66ffe7 chore(release): 4.13.4-dev.2 [skip ci]
## [4.13.4-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.13.4-dev.1...v4.13.4-dev.2) (2024-08-20)

### Bug Fixes

* **YouTube - SponsorBlock:** Handle if the user enters an invalid number into any SB settings ([a276425](a276425d83))
2024-08-20 04:19:14 +00:00
LisoUseInAIKyrios
a276425d83 fix(YouTube - SponsorBlock): Handle if the user enters an invalid number into any SB settings 2024-08-20 00:17:11 -04:00
LisoUseInAIKyrios
e556c3f692 chore: Sync translations (#3564) 2024-08-20 00:16:08 -04:00
revanced-bot
cb30248eab chore: Sync translations 2024-08-20 04:15:01 +00:00
semantic-release-bot
c5ce742ab4 chore(release): 4.13.4-dev.1 [skip ci]
## [4.13.4-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.13.3...v4.13.4-dev.1) (2024-08-18)

### Bug Fixes

* **SwissID:** Rename `Remove Google Play Integrity Integrity check` to `Remove Google Play Integrity check` ([#3558](https://github.com/ReVanced/revanced-patches/issues/3558)) ([bdd2f7c](bdd2f7cb0f))
2024-08-18 13:22:20 +00:00
Pun Butrach
bdd2f7cb0f fix(SwissID): Rename Remove Google Play Integrity Integrity check to Remove Google Play Integrity check (#3558) 2024-08-18 17:20:23 +04:00
semantic-release-bot
b7600f448d chore(release): 4.13.3 [skip ci]
## [4.13.3](https://github.com/ReVanced/revanced-patches/compare/v4.13.2...v4.13.3) (2024-08-15)

### Bug Fixes

* **YouTube:** Remove translated string that breaks patching ([aa3487a](aa3487aa92))
2024-08-15 20:40:18 +00:00
LisoUseInAIKyrios
5c4bf7676d chore: Merge branch dev to main (#3552) 2024-08-15 16:38:21 -04:00
semantic-release-bot
fcd2f9b4c4 chore(release): 4.13.3-dev.1 [skip ci]
## [4.13.3-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.13.2...v4.13.3-dev.1) (2024-08-15)

### Bug Fixes

* **YouTube:** Remove translated string that breaks patching ([aa3487a](aa3487aa92))
2024-08-15 20:36:50 +00:00
LisoUseInAIKyrios
aa3487aa92 fix(YouTube): Remove translated string that breaks patching 2024-08-15 16:34:52 -04:00
LisoUseInAIKyrios
ada642f4a7 chore: Merge branch dev to main (#3551) 2024-08-15 16:29:00 -04:00
LisoUseInAIKyrios
eac758588a chore: Remove non breaking space from German translation 2024-08-15 16:14:36 -04:00
ReVanced Bot
5d047eae77 chore: Sync translations (#3550) 2024-08-15 15:58:52 -04:00
semantic-release-bot
ed92bf1be6 chore(release): 4.13.2 [skip ci]
## [4.13.2](https://github.com/ReVanced/revanced-patches/compare/v4.13.1...v4.13.2) (2024-08-15)

### Bug Fixes

* **YouTube - GmsCore Support:** Fix patch exception by using correct patch offset ([#3543](https://github.com/ReVanced/revanced-patches/issues/3543)) ([3d0d94b](3d0d94b6c8))
2024-08-15 18:39:08 +00:00
oSumAtrIX
c6318e890f chore: Merge branch dev to main (#3544) 2024-08-15 22:37:04 +04:00
semantic-release-bot
7f3b1c54da chore(release): 4.13.2-dev.1 [skip ci]
## [4.13.2-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.13.1...v4.13.2-dev.1) (2024-08-15)

### Bug Fixes

* **YouTube - GmsCore Support:** Fix patch exception by using correct patch offset ([#3543](https://github.com/ReVanced/revanced-patches/issues/3543)) ([3d0d94b](3d0d94b6c8))
2024-08-15 18:35:56 +00:00
LisoUseInAIKyrios
3d0d94b6c8 fix(YouTube - GmsCore Support): Fix patch exception by using correct patch offset (#3543) 2024-08-15 22:33:53 +04:00
semantic-release-bot
b84e6afebd chore(release): 4.13.1 [skip ci]
## [4.13.1](https://github.com/ReVanced/revanced-patches/compare/v4.13.0...v4.13.1) (2024-08-15)

### Bug Fixes

* **YouTube - Check watch history domain name resolution:** Add compatibility field ([d7be94a](d7be94a193))
2024-08-15 17:58:11 +00:00
oSumAtrIX
3eab130276 chore: Merge branch dev to main (#3541) 2024-08-15 21:55:53 +04:00
semantic-release-bot
95f8e9b3a9 chore(release): 4.13.1-dev.1 [skip ci]
## [4.13.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.13.0...v4.13.1-dev.1) (2024-08-15)

### Bug Fixes

* **YouTube - Check watch history domain name resolution:** Add compatibility field ([d7be94a](d7be94a193))
2024-08-15 17:53:15 +00:00
LisoUseInAIKyrios
d7be94a193 fix(YouTube - Check watch history domain name resolution): Add compatibility field 2024-08-15 13:51:02 -04:00
semantic-release-bot
e4e20bec6c chore(release): 4.13.0 [skip ci]
# [4.13.0](https://github.com/ReVanced/revanced-patches/compare/v4.12.0...v4.13.0) (2024-08-15)

### Bug Fixes

* **YouTube - GmsCore support:** Fix notifications not working by using the correct permissions ([c64757f](c64757f80a))

### Features

* **Google Photos:** Add `Spoof features` patch ([#3459](https://github.com/ReVanced/revanced-patches/issues/3459)) ([f814d87](f814d87c17))
* **SCB Easy:** Remove broken `Remove debugging detection` patch ([#3518](https://github.com/ReVanced/revanced-patches/issues/3518)) ([45e4f70](45e4f70137))
* **YouTube:** Add `Check watch history domain name resolution` patch ([#3537](https://github.com/ReVanced/revanced-patches/issues/3537)) ([87eb836](87eb83607c))
2024-08-15 17:29:30 +00:00
oSumAtrIX
b8bd63a34c chore: Merge branch dev to main (#3533) 2024-08-15 21:26:59 +04:00
semantic-release-bot
8b602ca6be chore(release): 4.13.0-dev.2 [skip ci]
# [4.13.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.13.0-dev.1...v4.13.0-dev.2) (2024-08-15)

### Features

* **YouTube:** Add `Check watch history domain name resolution` patch ([#3537](https://github.com/ReVanced/revanced-patches/issues/3537)) ([87eb836](87eb83607c))
2024-08-15 16:08:55 +00:00
LisoUseInAIKyrios
87eb83607c feat(YouTube): Add Check watch history domain name resolution patch (#3537)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-08-15 12:06:19 -04:00
semantic-release-bot
567121d641 chore(release): 4.13.0-dev.1 [skip ci]
# [4.13.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.12.1-dev.1...v4.13.0-dev.1) (2024-08-15)

### Features

* **Google Photos:** Add `Spoof features` patch ([#3459](https://github.com/ReVanced/revanced-patches/issues/3459)) ([f814d87](f814d87c17))
* **SCB Easy:** Remove broken `Remove debugging detection` patch ([#3518](https://github.com/ReVanced/revanced-patches/issues/3518)) ([45e4f70](45e4f70137))
2024-08-15 05:47:21 +00:00
Pun Butrach
45e4f70137 feat(SCB Easy): Remove broken Remove debugging detection patch (#3518)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-08-15 07:45:00 +02:00
oSumAtrIX
f814d87c17 feat(Google Photos): Add Spoof features patch (#3459) 2024-08-15 07:43:01 +02:00
semantic-release-bot
d0e92b225e chore(release): 4.12.1-dev.1 [skip ci]
## [4.12.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.12.0...v4.12.1-dev.1) (2024-08-15)

### Bug Fixes

* **YouTube - GmsCore support:** Fix notifications not working by using the correct permissions ([c64757f](c64757f80a))
2024-08-15 05:41:06 +00:00
oSumAtrIX
c64757f80a fix(YouTube - GmsCore support): Fix notifications not working by using the correct permissions
Regression had been introduced in 1af65de1f6. This commit reverts this.
2024-08-15 07:39:00 +02:00
ReVanced Bot
58b6f1fba0 chore: Sync translations (#3532) 2024-08-13 01:13:23 -04:00
semantic-release-bot
630857ba16 chore(release): 4.12.0 [skip ci]
# [4.12.0](https://github.com/ReVanced/revanced-patches/compare/v4.11.0...v4.12.0) (2024-08-06)

### Bug Fixes

* **Google Photos - GmsCore support:** Fix by checking first if a method exists before trying to patch it ([26449cf](26449cf7c6))
* **Instagram - Hide ads:**  Restore compatibility with latest version by fixing fingerprint ([#3455](https://github.com/ReVanced/revanced-patches/issues/3455)) ([f2bf2da](f2bf2da9a5))
* **Messenger - Disable switching emoji to sticker:** Constrain to last working version `439.0.0.29.119` ([1cf25f9](1cf25f9dc9))
* **SoundCloud - Enable offline sync:** Stop crashing by reversing order of patching instructions from last to first to retain indices ([98f9bba](98f9bba7ed))
* **YouTube - Bypass image region restrictions:** Move setting to `Misc` menu ([7acb6cd](7acb6cdc96))
* **YouTube - Client Spoof:** Restore missing high qualities by spoofing the iOS client user agent ([#3468](https://github.com/ReVanced/revanced-patches/issues/3468)) ([a4b0e76](a4b0e76755))
* **YouTube - Hide keyword content:** Do not hide flyout menu ([cfbc4aa](cfbc4aa6b2))
* **YouTube - SponsorBlock:** Correctly show minute timestamp when creating a new segment ([8886fc4](8886fc4f54))
* **YouTube - SponsorBlock:** Improve create segment manual seek accuracy ([#3491](https://github.com/ReVanced/revanced-patches/issues/3491)) ([2e8d5c6](2e8d5c61f8))
* **YouTube - Spoof client:** Fix tracking history on brand accounts ([#3480](https://github.com/ReVanced/revanced-patches/issues/3480)) ([eed856d](eed856d64c))
* **YouTube - Spoof client:** Restore livestream audio only playback with iOS spoofing ([#3504](https://github.com/ReVanced/revanced-patches/issues/3504)) ([eadbf5f](eadbf5f459))

### Features

* Add `Hide mock location` patch ([#3417](https://github.com/ReVanced/revanced-patches/issues/3417)) ([250cc7c](250cc7cbde))
* Add `Spoof build info` patch ([d87f36e](d87f36e7e2))
* **Boost for Reddit:** Add `Disable ads` patch ([#3474](https://github.com/ReVanced/revanced-patches/issues/3474)) ([d2afc53](d2afc53c2b))
* **CandyLink:** Remove non-functional `Unlock pro` patch ([1e81d0c](1e81d0c9f8))
* **Expense Manager:** Remove non-functional `Unlock pro` patch ([e4232b6](e4232b6c74))
* **Google News:** Add `Enable CustomTabs` and `GmsCore support` patch ([#3111](https://github.com/ReVanced/revanced-patches/issues/3111)) ([273af26](273af26274))
* **Google Photos:** Add `GmsCore support` patch ([#3414](https://github.com/ReVanced/revanced-patches/issues/3414)) ([1af65de](1af65de1f6))
* **Instagram:** Remove unnecessary `Hide timeline ads` patch ([8038bd2](8038bd2e98))
* **SoundCloud:** Add `Enable offline sync` patch ([#3407](https://github.com/ReVanced/revanced-patches/issues/3407)) ([b944fb7](b944fb7bf1))
* **SwissID:** Add `Remove Google Play Integrity Integrity check` patch ([#3478](https://github.com/ReVanced/revanced-patches/issues/3478)) ([3380080](33800801a3))
* **YouTube - Description components:** Add `Hide 'Key concepts' section` option ([#3495](https://github.com/ReVanced/revanced-patches/issues/3495)) ([337bdc3](337bdc3d39))
* **YouTube:** Add `Bypass image region restrictions` patch ([#3442](https://github.com/ReVanced/revanced-patches/issues/3442)) ([9ef51ab](9ef51abde7))
2024-08-06 00:08:03 +00:00
oSumAtrIX
82ae367946 chore: Merge branch dev to main (#3438) 2024-08-06 02:05:44 +02:00
semantic-release-bot
95a7118dcf chore(release): 4.12.0-dev.17 [skip ci]
# [4.12.0-dev.17](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.16...v4.12.0-dev.17) (2024-08-06)

### Bug Fixes

* **Google Photos - GmsCore support:** Fix by checking first if a method exists before trying to patch it ([26449cf](26449cf7c6))
* **Messenger - Disable switching emoji to sticker:** Constrain to last working version `439.0.0.29.119` ([1cf25f9](1cf25f9dc9))

### Features

* **CandyLink:** Remove non-functional `Unlock pro` patch ([1e81d0c](1e81d0c9f8))
* **Expense Manager:** Remove non-functional `Unlock pro` patch ([e4232b6](e4232b6c74))
* **Instagram:** Remove unnecessary `Hide timeline ads` patch ([8038bd2](8038bd2e98))
2024-08-06 00:04:26 +00:00
oSumAtrIX
26449cf7c6 fix(Google Photos - GmsCore support): Fix by checking first if a method exists before trying to patch it 2024-08-06 02:01:44 +02:00
oSumAtrIX
e4232b6c74 feat(Expense Manager): Remove non-functional Unlock pro patch 2024-08-06 01:40:11 +02:00
oSumAtrIX
1cf25f9dc9 fix(Messenger - Disable switching emoji to sticker): Constrain to last working version 439.0.0.29.119 2024-08-06 01:31:46 +02:00
oSumAtrIX
8038bd2e98 feat(Instagram): Remove unnecessary Hide timeline ads patch
The `Hide ads` patch supersedes this patch.
2024-08-06 01:27:06 +02:00
oSumAtrIX
1e81d0c9f8 feat(CandyLink): Remove non-functional Unlock pro patch
Servers now check the purchase status.
2024-08-06 01:25:28 +02:00
ReVanced Bot
c48cedaddf chore: Sync translations (#3507) 2024-08-05 15:56:44 -04:00
semantic-release-bot
4085d1f9dc chore(release): 4.12.0-dev.16 [skip ci]
# [4.12.0-dev.16](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.15...v4.12.0-dev.16) (2024-08-04)

### Bug Fixes

* **YouTube - Spoof client:** Restore livestream audio only playback with iOS spoofing ([#3504](https://github.com/ReVanced/revanced-patches/issues/3504)) ([eadbf5f](eadbf5f459))
2024-08-04 19:40:12 +00:00
LisoUseInAIKyrios
eadbf5f459 fix(YouTube - Spoof client): Restore livestream audio only playback with iOS spoofing (#3504) 2024-08-04 21:38:10 +02:00
ILoveOpenSourceApplications
b12b3a73a6 refactor(YouTube Music): Rename Hide music video ads to Hide video ads and add patch description (#3494)
Co-authored-by: ILoveOpenSourceApplications <ILoveOpenSourceApplications@users.noreply.github.com>
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2024-08-04 10:09:48 +02:00
semantic-release-bot
572a310589 chore(release): 4.12.0-dev.15 [skip ci]
# [4.12.0-dev.15](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.14...v4.12.0-dev.15) (2024-08-02)

### Bug Fixes

* **YouTube - SponsorBlock:** Improve create segment manual seek accuracy ([#3491](https://github.com/ReVanced/revanced-patches/issues/3491)) ([2e8d5c6](2e8d5c61f8))
2024-08-02 13:42:52 +00:00
LisoUseInAIKyrios
2e8d5c61f8 fix(YouTube - SponsorBlock): Improve create segment manual seek accuracy (#3491) 2024-08-02 09:40:28 -04:00
ReVanced Bot
025766bb42 chore: Sync translations (#3499) 2024-08-02 09:37:23 -04:00
semantic-release-bot
e31966159a chore(release): 4.12.0-dev.14 [skip ci]
# [4.12.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.13...v4.12.0-dev.14) (2024-08-01)

### Features

* **YouTube - Description components:** Add `Hide 'Key concepts' section` option ([#3495](https://github.com/ReVanced/revanced-patches/issues/3495)) ([337bdc3](337bdc3d39))
2024-08-01 11:29:29 +00:00
ILoveOpenSourceApplications
337bdc3d39 feat(YouTube - Description components): Add Hide 'Key concepts' section option (#3495)
Co-authored-by: ILoveOpenSourceApplications <ILoveOpenSourceApplications@users.noreply.github.com>
2024-08-01 13:27:28 +02:00
semantic-release-bot
13ed4a2f39 chore(release): 4.12.0-dev.13 [skip ci]
# [4.12.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.12...v4.12.0-dev.13) (2024-07-31)

### Features

* **Boost for Reddit:** Add `Disable ads` patch ([#3474](https://github.com/ReVanced/revanced-patches/issues/3474)) ([d2afc53](d2afc53c2b))
2024-07-31 17:56:11 +00:00
LilithSilver
d2afc53c2b feat(Boost for Reddit): Add Disable ads patch (#3474)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-07-31 19:53:44 +02:00
ReVanced Bot
1fab0ae59a chore: Sync translations (#3482) 2024-07-29 01:04:13 -04:00
semantic-release-bot
5c8c597d19 chore(release): 4.12.0-dev.12 [skip ci]
# [4.12.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.11...v4.12.0-dev.12) (2024-07-28)

### Features

* **SwissID:** Add `Remove Google Play Integrity Integrity check` patch ([#3478](https://github.com/ReVanced/revanced-patches/issues/3478)) ([3380080](33800801a3))
2024-07-28 21:58:12 +00:00
Cedric
33800801a3 feat(SwissID): Add Remove Google Play Integrity Integrity check patch (#3478)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-07-28 23:56:12 +02:00
semantic-release-bot
62c47665e4 chore(release): 4.12.0-dev.11 [skip ci]
# [4.12.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.10...v4.12.0-dev.11) (2024-07-28)

### Bug Fixes

* **YouTube - Bypass image region restrictions:** Move setting to `Misc` menu ([7acb6cd](7acb6cdc96))
2024-07-28 18:18:31 +00:00
LisoUseInAIKyrios
7acb6cdc96 fix(YouTube - Bypass image region restrictions): Move setting to Misc menu
The setting is closer in nature to the other settings in Misc than the settings in the General menu.
2024-07-28 14:16:19 -04:00
semantic-release-bot
a5d32c3da3 chore(release): 4.12.0-dev.10 [skip ci]
# [4.12.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.9...v4.12.0-dev.10) (2024-07-28)

### Bug Fixes

* **YouTube - Client Spoof:** Restore missing high qualities by spoofing the iOS client user agent ([#3468](https://github.com/ReVanced/revanced-patches/issues/3468)) ([a4b0e76](a4b0e76755))
2024-07-28 14:52:33 +00:00
Zain Arbani
a4b0e76755 fix(YouTube - Client Spoof): Restore missing high qualities by spoofing the iOS client user agent (#3468)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-07-28 16:50:30 +02:00
semantic-release-bot
0a7b2c5ec2 chore(release): 4.12.0-dev.9 [skip ci]
# [4.12.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.8...v4.12.0-dev.9) (2024-07-28)

### Bug Fixes

* **YouTube - Spoof client:** Fix tracking history on brand accounts ([#3480](https://github.com/ReVanced/revanced-patches/issues/3480)) ([eed856d](eed856d64c))
2024-07-28 13:56:03 +00:00
oSumAtrIX
eed856d64c fix(YouTube - Spoof client): Fix tracking history on brand accounts (#3480) 2024-07-28 15:53:48 +02:00
LisoUseInAIKyrios
e8d481397f chore(YouTube): Comments 2024-07-26 10:45:24 -04:00
semantic-release-bot
d0eceb3e36 chore(release): 4.12.0-dev.8 [skip ci]
# [4.12.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.7...v4.12.0-dev.8) (2024-07-26)

### Bug Fixes

* **YouTube - SponsorBlock:** Correctly show minute timestamp when creating a new segment ([8886fc4](8886fc4f54))
2024-07-26 14:38:36 +00:00
LisoUseInAIKyrios
8886fc4f54 fix(YouTube - SponsorBlock): Correctly show minute timestamp when creating a new segment 2024-07-26 10:30:14 -04:00
semantic-release-bot
fb4256f17c chore(release): 4.12.0-dev.7 [skip ci]
# [4.12.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.6...v4.12.0-dev.7) (2024-07-24)

### Bug Fixes

* **SoundCloud - Enable offline sync:** Stop crashing by reversing order of patching instructions from last to first to retain indices ([98f9bba](98f9bba7ed))
2024-07-24 18:03:03 +00:00
oSumAtrIX
98f9bba7ed fix(SoundCloud - Enable offline sync): Stop crashing by reversing order of patching instructions from last to first to retain indices 2024-07-24 20:00:35 +02:00
semantic-release-bot
8e72067dcb chore(release): 4.12.0-dev.6 [skip ci]
# [4.12.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.5...v4.12.0-dev.6) (2024-07-20)

### Features

* Add `Spoof build info` patch ([d87f36e](d87f36e7e2))
2024-07-20 16:08:40 +00:00
oSumAtrIX
d87f36e7e2 feat: Add Spoof build info patch 2024-07-20 18:06:27 +02:00
oSumAtrIX
4432fe65df build: Bump dependencies 2024-07-20 06:14:35 +02:00
semantic-release-bot
8b0d8ee9f4 chore(release): 4.12.0-dev.5 [skip ci]
# [4.12.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.4...v4.12.0-dev.5) (2024-07-20)

### Features

* Add `Hide mock location` patch ([#3417](https://github.com/ReVanced/revanced-patches/issues/3417)) ([250cc7c](250cc7cbde))
* **Google Photos:** Add `GmsCore support` patch ([#3414](https://github.com/ReVanced/revanced-patches/issues/3414)) ([1af65de](1af65de1f6))
2024-07-20 04:02:23 +00:00
epireyn
250cc7cbde feat: Add Hide mock location patch (#3417)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-07-20 06:00:19 +02:00
xob0t
1af65de1f6 feat(Google Photos): Add GmsCore support patch (#3414)
Co-authored-by: benjy3gg <benjy3gg@gmail.com>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-07-20 05:58:47 +02:00
semantic-release-bot
6e87e3044c chore(release): 4.12.0-dev.4 [skip ci]
# [4.12.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.3...v4.12.0-dev.4) (2024-07-20)

### Features

* **Google News:** Add `Enable CustomTabs` and `GmsCore support` patch ([#3111](https://github.com/ReVanced/revanced-patches/issues/3111)) ([273af26](273af26274))
2024-07-20 02:57:11 +00:00
benjy3gg
273af26274 feat(Google News): Add Enable CustomTabs and GmsCore support patch (#3111)
Co-authored-by: benjy3gg <benjy3gg@gmail.com>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-07-20 04:55:08 +02:00
semantic-release-bot
2b1b081051 chore(release): 4.12.0-dev.3 [skip ci]
# [4.12.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.2...v4.12.0-dev.3) (2024-07-18)

### Bug Fixes

* **Instagram - Hide ads:**  Restore compatibility with latest version by fixing fingerprint ([#3455](https://github.com/ReVanced/revanced-patches/issues/3455)) ([f2bf2da](f2bf2da9a5))
2024-07-18 23:52:11 +00:00
Tim
f2bf2da9a5 fix(Instagram - Hide ads): Restore compatibility with latest version by fixing fingerprint (#3455) 2024-07-19 01:50:03 +02:00
ReVanced Bot
15317003b1 chore: Sync translations (#3451) 2024-07-18 17:22:23 +04:00
semantic-release-bot
6c81a5b65f chore(release): 4.12.0-dev.2 [skip ci]
# [4.12.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.12.0-dev.1...v4.12.0-dev.2) (2024-07-15)

### Features

* **YouTube:** Add `Bypass image region restrictions` patch ([#3442](https://github.com/ReVanced/revanced-patches/issues/3442)) ([9ef51ab](9ef51abde7))
2024-07-15 19:01:14 +00:00
LisoUseInAIKyrios
9ef51abde7 feat(YouTube): Add Bypass image region restrictions patch (#3442)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-07-15 02:56:12 +04:00
semantic-release-bot
1d31565d47 chore(release): 4.12.0-dev.1 [skip ci]
# [4.12.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.1-dev.1...v4.12.0-dev.1) (2024-07-13)

### Features

* **SoundCloud:** Add `Enable offline sync` patch ([#3407](https://github.com/ReVanced/revanced-patches/issues/3407)) ([b944fb7](b944fb7bf1))
2024-07-13 23:45:56 +00:00
LightCat
b944fb7bf1 feat(SoundCloud): Add Enable offline sync patch (#3407)
Co-authored-by: bewzusore <bewzusore>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: BenCat07 <BenCat07@gitlab.com>
2024-07-14 01:43:48 +02:00
semantic-release-bot
dfd46d8e8f chore(release): 4.11.1-dev.1 [skip ci]
## [4.11.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.0...v4.11.1-dev.1) (2024-07-12)

### Bug Fixes

* **YouTube - Hide keyword content:** Do not hide flyout menu ([cfbc4aa](cfbc4aa6b2))
2024-07-12 22:45:58 +00:00
oSumAtrIX
f64e03a1f6 ci: Correct usage of repository variable 2024-07-13 00:43:59 +02:00
semantic-release-bot
a65970bdc2 chore(release): 4.11.1-dev.1 [skip ci]
## [4.11.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.11.0...v4.11.1-dev.1) (2024-07-12)

### Bug Fixes

* **YouTube - Hide keyword content:** Do not hide flyout menu ([cfbc4aa](cfbc4aa6b2))
2024-07-12 18:17:37 +00:00
LisoUseInAIKyrios
cfbc4aa6b2 fix(YouTube - Hide keyword content): Do not hide flyout menu 2024-07-12 22:15:13 +04:00
semantic-release-bot
b04652890e chore(release): 4.11.0 [skip ci]
# [4.11.0](https://github.com/ReVanced/revanced-patches/compare/v4.10.0...v4.11.0) (2024-07-11)

### Bug Fixes

* **Boost for reddit - Fix missing audio in video downloads:** Replace correct strings ([#3379](https://github.com/ReVanced/revanced-patches/issues/3379)) ([0b098a2](0b098a2027))
* **Windy - Unlock pro:** Revert changing package name ([#3402](https://github.com/ReVanced/revanced-patches/issues/3402)) ([dd6a9f9](dd6a9f977f))
* **Windy - Unlock pro:** Use correct package name ([#3397](https://github.com/ReVanced/revanced-patches/issues/3397)) ([e4ae9cc](e4ae9ccd26))
* **YouTube - Hide layout components:** Detect if a keyword filter hides all videos ([#3365](https://github.com/ReVanced/revanced-patches/issues/3365)) ([03eb9c0](03eb9c032a))
* **YouTube - Settings:** Move some settings to different menus, adjust default setting values ([#3415](https://github.com/ReVanced/revanced-patches/issues/3415)) ([def1ec4](def1ec4de6))
* **YouTube - SponsorBlock:** Skip segments when casting ([#3331](https://github.com/ReVanced/revanced-patches/issues/3331)) ([a81a6bf](a81a6bf5b2))

### Features

* Add `Remove share targets` patch ([#3334](https://github.com/ReVanced/revanced-patches/issues/3334)) ([70e54f8](70e54f8794))
* Add translations ([#2963](https://github.com/ReVanced/revanced-patches/issues/2963)) ([f5f0240](f5f024024a))
* **Bandcamp:** Add `Remove play limits` patch ([#3366](https://github.com/ReVanced/revanced-patches/issues/3366)) ([f0fb2fa](f0fb2fa3ba))
* **Instagram:** Add `Hide ads` patch ([#3380](https://github.com/ReVanced/revanced-patches/issues/3380)) ([decdff9](decdff9037))
* **RAR:** Add `Hide purchase reminder` patch ([#3321](https://github.com/ReVanced/revanced-patches/issues/3321)) ([55556f3](55556f3efc))
* **Soundcloud:** Add `Hide ads` and `Disable telemetry` patch ([#3386](https://github.com/ReVanced/revanced-patches/issues/3386)) ([a036c1f](a036c1fa0a))
* **Stocard:** Add `Hide offers tab` and `Hide story bubbles` patch ([#3359](https://github.com/ReVanced/revanced-patches/issues/3359)) ([e2f9193](e2f9193aa8))
2024-07-11 18:56:56 +00:00
LisoUseInAIKyrios
4fe1dbe9e0 chore: Merge branch dev to main (#3369) 2024-07-11 22:54:46 +04:00
ReVanced Bot
32acfbaee7 chore: Sync translations (#3427) 2024-07-11 02:24:16 +04:00
semantic-release-bot
d02a490f36 chore(release): 4.11.0-dev.7 [skip ci]
# [4.11.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v4.11.0-dev.6...v4.11.0-dev.7) (2024-07-10)

### Features

* **Bandcamp:** Add `Remove play limits` patch ([#3366](https://github.com/ReVanced/revanced-patches/issues/3366)) ([f0fb2fa](f0fb2fa3ba))
2024-07-10 22:23:36 +00:00
xob0t
f0fb2fa3ba feat(Bandcamp): Add Remove play limits patch (#3366)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-07-11 00:21:40 +02:00
semantic-release-bot
4885d4ef00 chore(release): 4.11.0-dev.6 [skip ci]
# [4.11.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v4.11.0-dev.5...v4.11.0-dev.6) (2024-07-10)

### Bug Fixes

* **YouTube - SponsorBlock:** Skip segments when casting ([#3331](https://github.com/ReVanced/revanced-patches/issues/3331)) ([a81a6bf](a81a6bf5b2))

### Features

* **Soundcloud:** Add `Hide ads` and `Disable telemetry` patch ([#3386](https://github.com/ReVanced/revanced-patches/issues/3386)) ([a036c1f](a036c1fa0a))
2024-07-10 22:15:51 +00:00
patchink0
a036c1fa0a feat(Soundcloud): Add Hide ads and Disable telemetry patch (#3386)
Co-authored-by: bewzusore <bewzusore>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-07-11 00:13:44 +02:00
Sami Alaoui
a81a6bf5b2 fix(YouTube - SponsorBlock): Skip segments when casting (#3331)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-07-11 00:12:03 +02:00
semantic-release-bot
81836119c0 chore(release): 4.11.0-dev.5 [skip ci]
# [4.11.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v4.11.0-dev.4...v4.11.0-dev.5) (2024-07-05)

### Bug Fixes

* **YouTube - Settings:** Move some settings to different menus, adjust default setting values ([#3415](https://github.com/ReVanced/revanced-patches/issues/3415)) ([def1ec4](def1ec4de6))
2024-07-05 17:40:57 +00:00
LisoUseInAIKyrios
def1ec4de6 fix(YouTube - Settings): Move some settings to different menus, adjust default setting values (#3415) 2024-07-05 21:38:52 +04:00
ReVanced Bot
72f02c8d2f chore: Sync translations (#3400) 2024-07-04 02:05:06 +04:00
semantic-release-bot
5e0dd932cd chore(release): 4.11.0-dev.4 [skip ci]
# [4.11.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.11.0-dev.3...v4.11.0-dev.4) (2024-07-01)

### Bug Fixes

* **Windy - Unlock pro:** Revert changing package name ([#3402](https://github.com/ReVanced/revanced-patches/issues/3402)) ([dd6a9f9](dd6a9f977f))
2024-07-01 13:02:34 +00:00
oSumAtrIX
dd6a9f977f fix(Windy - Unlock pro): Revert changing package name (#3402) 2024-07-01 15:00:34 +02:00
semantic-release-bot
7d4c2e820c chore(release): 4.11.0-dev.3 [skip ci]
# [4.11.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.11.0-dev.2...v4.11.0-dev.3) (2024-06-30)

### Bug Fixes

* **Windy - Unlock pro:** Use correct package name ([#3397](https://github.com/ReVanced/revanced-patches/issues/3397)) ([e4ae9cc](e4ae9ccd26))
2024-06-30 17:49:56 +00:00
Benedikt Strasser
e4ae9ccd26 fix(Windy - Unlock pro): Use correct package name (#3397) 2024-06-30 19:47:51 +02:00
oSumAtrIX
d469604f0f chore: Add contribution guidelines for translations 2024-06-30 16:16:43 +03:00
semantic-release-bot
1fa7dc83a7 chore(release): 4.11.0-dev.2 [skip ci]
# [4.11.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.11.0-dev.1...v4.11.0-dev.2) (2024-06-27)

### Features

* Add translations ([#2963](https://github.com/ReVanced/revanced-patches/issues/2963)) ([f5f0240](f5f024024a))
2024-06-27 20:53:19 +00:00
ReVanced Bot
f5f024024a feat: Add translations (#2963)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2024-06-27 22:51:13 +02:00
oSumAtrIX
c5f0bc41e2 ci: Use correct push path to trigger pushing strings 2024-06-27 22:47:44 +02:00
semantic-release-bot
a80825cbc2 chore(release): 4.11.0-dev.1 [skip ci]
# [4.11.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.10.1-dev.2...v4.11.0-dev.1) (2024-06-27)

### Features

* Add `Remove share targets` patch ([#3334](https://github.com/ReVanced/revanced-patches/issues/3334)) ([70e54f8](70e54f8794))
* **Instagram:** Add `Hide ads` patch ([#3380](https://github.com/ReVanced/revanced-patches/issues/3380)) ([decdff9](decdff9037))
* **RAR:** Add `Hide purchase reminder` patch ([#3321](https://github.com/ReVanced/revanced-patches/issues/3321)) ([55556f3](55556f3efc))
* **Stocard:** Add `Hide offers tab` and `Hide story bubbles` patch ([#3359](https://github.com/ReVanced/revanced-patches/issues/3359)) ([e2f9193](e2f9193aa8))
2024-06-27 20:30:10 +00:00
Twin
55556f3efc feat(RAR): Add Hide purchase reminder patch (#3321)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-06-27 22:27:59 +02:00
1fexd
70e54f8794 feat: Add Remove share targets patch (#3334)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-06-27 22:27:29 +02:00
epireyn
e2f9193aa8 feat(Stocard): Add Hide offers tab and Hide story bubbles patch (#3359)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-06-27 22:26:35 +02:00
Tim
decdff9037 feat(Instagram): Add Hide ads patch (#3380)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-06-27 22:25:43 +02:00
LisoUseInAIKyrios
8f6519d206 chore: attempt to fix crowdin push 2024-06-27 21:48:46 +03:00
LisoUseInAIKyrios
b0b809d222 chore: Simplify string for localization 2024-06-25 17:06:32 +03:00
semantic-release-bot
979af7ddd0 chore(release): 4.10.1-dev.2 [skip ci]
## [4.10.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.10.1-dev.1...v4.10.1-dev.2) (2024-06-24)

### Bug Fixes

* **Boost for reddit - Fix missing audio in video downloads:** Replace correct strings ([#3379](https://github.com/ReVanced/revanced-patches/issues/3379)) ([0b098a2](0b098a2027))
2024-06-24 17:10:03 +00:00
Yan
0b098a2027 fix(Boost for reddit - Fix missing audio in video downloads): Replace correct strings (#3379) 2024-06-24 19:07:55 +02:00
LisoUseInAIKyrios
2bfd75ce96 chore(YouTube - Spoof client): Update side effects disclaimer 2024-06-24 17:56:16 +03:00
semantic-release-bot
047e6d994b chore(release): 4.10.1-dev.1 [skip ci]
## [4.10.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.10.0...v4.10.1-dev.1) (2024-06-23)

### Bug Fixes

* **YouTube - Hide layout components:** Detect if a keyword filter hides all videos ([#3365](https://github.com/ReVanced/revanced-patches/issues/3365)) ([03eb9c0](03eb9c032a))
2024-06-23 12:49:15 +00:00
LisoUseInAIKyrios
03eb9c032a fix(YouTube - Hide layout components): Detect if a keyword filter hides all videos (#3365) 2024-06-23 15:46:58 +03:00
semantic-release-bot
dfc14c1a26 chore(release): 4.10.0 [skip ci]
# [4.10.0](https://github.com/ReVanced/revanced-patches/compare/v4.9.0...v4.10.0) (2024-06-23)

### Bug Fixes

* Correct invalid string name ([7fa7ef6](7fa7ef6c4f))
* **YouTube - Client spoof:** Correctly play more livestreams using Android VR ([#3316](https://github.com/ReVanced/revanced-patches/issues/3316)) ([d5c0b5e](d5c0b5ed65))
* **YouTube - Hide description components:** Replace `Hide game section` and `Hide music section` with `Hide attributes section` ([#3327](https://github.com/ReVanced/revanced-patches/issues/3327)) ([e5ced63](e5ced6310d))
* **YouTube Music:** Rename `Minimized playback` to `Remove background playback restrictions` ([#3315](https://github.com/ReVanced/revanced-patches/issues/3315)) ([b78b7cf](b78b7cfe6c))
* **YouTube:** Rename `Minimized playback` to `Remove background playback restrictions` ([#3314](https://github.com/ReVanced/revanced-patches/issues/3314)) ([4919cba](4919cba478))

### Features

* Add `Change version code` patch ([#3338](https://github.com/ReVanced/revanced-patches/issues/3338)) ([3cfe745](3cfe745d59))
* **Boost For Reddit:** Add `Fix /s/ links` patch ([#3154](https://github.com/ReVanced/revanced-patches/issues/3154)) ([b575fc6](b575fc68ff))
* **Boost for Reddit:** Add `Fix audio missing in video downloads` patch ([#3287](https://github.com/ReVanced/revanced-patches/issues/3287)) ([2ea583c](2ea583c220))
* **YouTube - Comments:** Add `Hide 'Create a Short' button` option ([#3333](https://github.com/ReVanced/revanced-patches/issues/3333)) ([f0cc415](f0cc415199))
* **YouTube - Comments:** Add `Hide Thanks button` and `Hide 'Comments by members' header` options ([#3317](https://github.com/ReVanced/revanced-patches/issues/3317)) ([e240921](e2409213d4))
* **YouTube - Miniplayer:** Rename `Tablet mini player` and allow selecting the style of the in-app miniplayer ([#3302](https://github.com/ReVanced/revanced-patches/issues/3302)) ([70013d8](70013d813b))
2024-06-23 12:13:53 +00:00
oSumAtrIX
20dedb2605 chore: Merge branch dev to main (#3300) 2024-06-23 14:11:45 +02:00
semantic-release-bot
cb7a283be1 chore(release): 4.10.0-dev.10 [skip ci]
# [4.10.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v4.10.0-dev.9...v4.10.0-dev.10) (2024-06-18)

### Bug Fixes

* Correct invalid string name ([7fa7ef6](7fa7ef6c4f))
2024-06-18 00:47:34 +00:00
oSumAtrIX
7fa7ef6c4f fix: Correct invalid string name 2024-06-18 02:45:42 +02:00
semantic-release-bot
5a93660825 chore(release): 4.10.0-dev.9 [skip ci]
# [4.10.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v4.10.0-dev.8...v4.10.0-dev.9) (2024-06-17)

### Bug Fixes

* **YouTube - Hide description components:** Replace `Hide game section` and `Hide music section` with `Hide attributes section` ([#3327](https://github.com/ReVanced/revanced-patches/issues/3327)) ([e5ced63](e5ced6310d))
2024-06-17 22:55:53 +00:00
ILoveOpenSourceApplications
e5ced6310d fix(YouTube - Hide description components): Replace Hide game section and Hide music section with Hide attributes section (#3327)
Co-authored-by: ILoveOpenSourceApplications <ILoveOpenSourceApplications@users.noreply.github.com>
2024-06-18 00:53:56 +02:00
semantic-release-bot
1147094241 chore(release): 4.10.0-dev.8 [skip ci]
# [4.10.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v4.10.0-dev.7...v4.10.0-dev.8) (2024-06-17)

### Features

* **YouTube - Comments:** Add `Hide 'Create a Short' button` option ([#3333](https://github.com/ReVanced/revanced-patches/issues/3333)) ([f0cc415](f0cc415199))
2024-06-17 22:51:07 +00:00
ILoveOpenSourceApplications
f0cc415199 feat(YouTube - Comments): Add Hide 'Create a Short' button option (#3333)
Co-authored-by: ILoveOpenSourceApplications <ILoveOpenSourceApplications@users.noreply.github.com>
2024-06-18 00:49:08 +02:00
semantic-release-bot
c0f8ddac52 chore(release): 4.10.0-dev.7 [skip ci]
# [4.10.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v4.10.0-dev.6...v4.10.0-dev.7) (2024-06-15)

### Features

* Add `Change version code` patch ([#3338](https://github.com/ReVanced/revanced-patches/issues/3338)) ([3cfe745](3cfe745d59))
2024-06-15 16:58:02 +00:00
1fexd
3cfe745d59 feat: Add Change version code patch (#3338)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-06-15 19:56:01 +03:00
semantic-release-bot
550ac09e32 chore(release): 4.10.0-dev.6 [skip ci]
# [4.10.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v4.10.0-dev.5...v4.10.0-dev.6) (2024-06-09)

### Features

* **YouTube - Comments:** Add `Hide Thanks button` and `Hide 'Comments by members' header` options ([#3317](https://github.com/ReVanced/revanced-patches/issues/3317)) ([e240921](e2409213d4))
2024-06-09 09:17:27 +00:00
ILoveOpenSourceApplications
e2409213d4 feat(YouTube - Comments): Add Hide Thanks button and Hide 'Comments by members' header options (#3317) 2024-06-09 12:15:08 +03:00
semantic-release-bot
a8b14d560f chore(release): 4.10.0-dev.5 [skip ci]
# [4.10.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v4.10.0-dev.4...v4.10.0-dev.5) (2024-06-09)

### Bug Fixes

* **YouTube - Client spoof:** Correctly play more livestreams using Android VR ([#3316](https://github.com/ReVanced/revanced-patches/issues/3316)) ([d5c0b5e](d5c0b5ed65))
2024-06-09 08:33:19 +00:00
LisoUseInAIKyrios
d5c0b5ed65 fix(YouTube - Client spoof): Correctly play more livestreams using Android VR (#3316) 2024-06-09 11:31:14 +03:00
semantic-release-bot
343fdec796 chore(release): 4.10.0-dev.4 [skip ci]
# [4.10.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.10.0-dev.3...v4.10.0-dev.4) (2024-06-08)

### Features

* **Boost for Reddit:** Add `Fix audio missing in video downloads` patch ([#3287](https://github.com/ReVanced/revanced-patches/issues/3287)) ([2ea583c](2ea583c220))
2024-06-08 16:44:45 +00:00
Yan
2ea583c220 feat(Boost for Reddit): Add Fix audio missing in video downloads patch (#3287)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-06-08 18:42:45 +02:00
semantic-release-bot
8dda8988ef chore(release): 4.10.0-dev.3 [skip ci]
# [4.10.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.10.0-dev.2...v4.10.0-dev.3) (2024-06-08)

### Features

* **Boost For Reddit:** Add `Fix /s/ links` patch ([#3154](https://github.com/ReVanced/revanced-patches/issues/3154)) ([b575fc6](b575fc68ff))
2024-06-08 16:33:11 +00:00
Yan
b575fc68ff feat(Boost For Reddit): Add Fix /s/ links patch (#3154)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-06-08 18:31:18 +02:00
semantic-release-bot
c979e92676 chore(release): 4.10.0-dev.2 [skip ci]
# [4.10.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.10.0-dev.1...v4.10.0-dev.2) (2024-06-08)

### Bug Fixes

* **YouTube Music:** Rename `Minimized playback` to `Remove background playback restrictions` ([#3315](https://github.com/ReVanced/revanced-patches/issues/3315)) ([b78b7cf](b78b7cfe6c))
* **YouTube:** Rename `Minimized playback` to `Remove background playback restrictions` ([#3314](https://github.com/ReVanced/revanced-patches/issues/3314)) ([4919cba](4919cba478))
2024-06-08 08:37:57 +00:00
LisoUseInAIKyrios
b78b7cfe6c fix(YouTube Music): Rename Minimized playback to Remove background playback restrictions (#3315) 2024-06-08 11:35:44 +03:00
LisoUseInAIKyrios
4919cba478 fix(YouTube): Rename Minimized playback to Remove background playback restrictions (#3314) 2024-06-08 11:35:20 +03:00
semantic-release-bot
1d46b95698 chore(release): 4.10.0-dev.1 [skip ci]
# [4.10.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.9.0...v4.10.0-dev.1) (2024-06-07)

### Features

* **YouTube - Miniplayer:** Rename `Tablet mini player` and allow selecting the style of the in-app miniplayer ([#3302](https://github.com/ReVanced/revanced-patches/issues/3302)) ([70013d8](70013d813b))
2024-06-07 22:50:16 +00:00
LisoUseInAIKyrios
70013d813b feat(YouTube - Miniplayer): Rename Tablet mini player and allow selecting the style of the in-app miniplayer (#3302)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-06-08 01:48:12 +03:00
KobeW50
8a33fe9986 docs: Fix broken link (#3313)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-06-07 22:20:07 +02:00
LisoUseInAIKyrios
ee21a2bb91 chore(YouTube - Spoof client): Update iOS summary disclaimer 2024-06-04 06:43:18 +03:00
semantic-release-bot
ea67466bd5 chore(release): 4.9.0 [skip ci]
# [4.9.0](https://github.com/ReVanced/revanced-patches/compare/v4.8.3...v4.9.0) (2024-06-02)

### Bug Fixes

* **YouTube - Spoof client:** Allow swipe gestures to enter/exit fullscreen when spoofing with `Android VR` client ([#3259](https://github.com/ReVanced/revanced-patches/issues/3259)) ([ea1deb6](ea1deb630e))
* **YouTube - Spoof client:** Restore playback speed menu when spoofing to an iOS client ([61401c9](61401c9ea4))

### Features

* **Messenger:** Add `Hide inbox subtabs` patch ([#3163](https://github.com/ReVanced/revanced-patches/issues/3163)) ([a331f0a](a331f0a30b))
* **YouTube - Hide layout components:** Disable like / subscribe button glow animation ([#3265](https://github.com/ReVanced/revanced-patches/issues/3265)) ([367a83a](367a83accd))
* **YouTube - Playback speed:** Add option to show speed dialog button in video player ([#3197](https://github.com/ReVanced/revanced-patches/issues/3197)) ([8e67cdc](8e67cdca55))
* **YouTube Music:** Support version `7.03` ([#3272](https://github.com/ReVanced/revanced-patches/issues/3272)) ([6c25c95](6c25c95747))
* **YouTube:** Support version `19.12`, `19.13`, `19.14`, `19.15` and `19.16` ([#3239](https://github.com/ReVanced/revanced-patches/issues/3239)) ([868f51d](868f51d992))
2024-06-02 17:43:45 +00:00
oSumAtrIX
320e039a9f chore: Merge branch dev to main (#3266) 2024-06-02 19:41:49 +02:00
semantic-release-bot
6b9c13d92c chore(release): 4.9.0-dev.7 [skip ci]
# [4.9.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v4.9.0-dev.6...v4.9.0-dev.7) (2024-06-02)

### Features

* **YouTube - Playback speed:** Add option to show speed dialog button in video player ([#3197](https://github.com/ReVanced/revanced-patches/issues/3197)) ([8e67cdc](8e67cdca55))
2024-06-02 15:50:45 +00:00
MarcaD
8e67cdca55 feat(YouTube - Playback speed): Add option to show speed dialog button in video player (#3197)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-06-02 17:48:35 +02:00
semantic-release-bot
32c5fa4d04 chore(release): 4.9.0-dev.6 [skip ci]
# [4.9.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v4.9.0-dev.5...v4.9.0-dev.6) (2024-06-02)

### Bug Fixes

* **YouTube - Spoof client:** Restore playback speed menu when spoofing to an iOS client ([61401c9](61401c9ea4))
2024-06-02 15:46:01 +00:00
oSumAtrIX
61401c9ea4 fix(YouTube - Spoof client): Restore playback speed menu when spoofing to an iOS client 2024-06-02 17:43:41 +02:00
semantic-release-bot
cd42182d6b chore(release): 4.9.0-dev.5 [skip ci]
# [4.9.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v4.9.0-dev.4...v4.9.0-dev.5) (2024-06-01)

### Features

* **YouTube:** Support version `19.12`, `19.13`, `19.14`, `19.15` and `19.16` ([#3239](https://github.com/ReVanced/revanced-patches/issues/3239)) ([868f51d](868f51d992))
2024-06-01 18:10:28 +00:00
LisoUseInAIKyrios
868f51d992 feat(YouTube): Support version 19.12, 19.13, 19.14, 19.15 and 19.16 (#3239)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-06-01 22:08:09 +04:00
semantic-release-bot
efbe314e0d chore(release): 4.9.0-dev.4 [skip ci]
# [4.9.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.9.0-dev.3...v4.9.0-dev.4) (2024-06-01)

### Features

* **Messenger:** Add `Hide inbox subtabs` patch ([#3163](https://github.com/ReVanced/revanced-patches/issues/3163)) ([a331f0a](a331f0a30b))
2024-06-01 17:27:18 +00:00
seaque
a331f0a30b feat(Messenger): Add Hide inbox subtabs patch (#3163)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-06-01 19:25:14 +02:00
semantic-release-bot
2f54118b39 chore(release): 4.9.0-dev.3 [skip ci]
# [4.9.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.9.0-dev.2...v4.9.0-dev.3) (2024-06-01)

### Features

* **YouTube Music:** Support version `7.03` ([#3272](https://github.com/ReVanced/revanced-patches/issues/3272)) ([6c25c95](6c25c95747))
2024-06-01 15:54:45 +00:00
LisoUseInAIKyrios
6c25c95747 feat(YouTube Music): Support version 7.03 (#3272) 2024-06-01 19:52:43 +04:00
semantic-release-bot
ad07efbd4a chore(release): 4.9.0-dev.2 [skip ci]
# [4.9.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.9.0-dev.1...v4.9.0-dev.2) (2024-06-01)

### Bug Fixes

* **YouTube - Spoof client:** Allow swipe gestures to enter/exit fullscreen when spoofing with `Android VR` client ([#3259](https://github.com/ReVanced/revanced-patches/issues/3259)) ([ea1deb6](ea1deb630e))
2024-06-01 09:31:24 +00:00
KAZI MMT
ea1deb630e fix(YouTube - Spoof client): Allow swipe gestures to enter/exit fullscreen when spoofing with Android VR client (#3259) 2024-06-01 13:29:24 +04:00
semantic-release-bot
9f116422d2 chore(release): 4.9.0-dev.1 [skip ci]
# [4.9.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.8.3...v4.9.0-dev.1) (2024-05-31)

### Features

* **YouTube - Hide layout components:** Disable like / subscribe button glow animation ([#3265](https://github.com/ReVanced/revanced-patches/issues/3265)) ([367a83a](367a83accd))
2024-05-31 21:01:00 +00:00
LisoUseInAIKyrios
367a83accd feat(YouTube - Hide layout components): Disable like / subscribe button glow animation (#3265) 2024-06-01 00:59:02 +04:00
semantic-release-bot
54d671dd3e chore(release): 4.8.3 [skip ci]
## [4.8.3](https://github.com/ReVanced/revanced-patches/compare/v4.8.2...v4.8.3) (2024-05-31)

### Bug Fixes

* **3rd-party Reddit apps:** Spoof user agent to work around Reddit API issues ([#3253](https://github.com/ReVanced/revanced-patches/issues/3253)) ([78b9716](78b9716a76))
* **Reddit - Hide ads:** Constrain to last working version 2024.17.0 ([#3192](https://github.com/ReVanced/revanced-patches/issues/3192)) ([7bd9cab](7bd9cabf5a))
* **YouTube - Spoof client:** Clarify that only enter/exit fullscreen gesture does not work with Android VR spoof ([#3243](https://github.com/ReVanced/revanced-patches/issues/3243)) ([91ea79c](91ea79ca0e))
* **YouTube - Spoof client:** Improve Android spoofing ([#3230](https://github.com/ReVanced/revanced-patches/issues/3230)) ([c20dbff](c20dbffc86))
2024-05-31 10:06:06 +00:00
oSumAtrIX
d925e7f2e8 chore: Merge branch dev to main (#3234) 2024-05-31 12:04:02 +02:00
oSumAtrIX
de18cdcc12 refactor: Use parameter instead of local register 2024-05-31 02:11:03 +02:00
oSumAtrIX
19d1503594 refactor: Name and comment variable properly 2024-05-31 02:11:03 +02:00
semantic-release-bot
62b1adfde1 chore(release): 4.8.3-dev.4 [skip ci]
## [4.8.3-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.8.3-dev.3...v4.8.3-dev.4) (2024-05-30)

### Bug Fixes

* **3rd-party Reddit apps:** Spoof user agent to work around Reddit API issues ([#3253](https://github.com/ReVanced/revanced-patches/issues/3253)) ([78b9716](78b9716a76))
2024-05-30 23:52:12 +00:00
Yan
78b9716a76 fix(3rd-party Reddit apps): Spoof user agent to work around Reddit API issues (#3253)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-05-31 01:50:09 +02:00
semantic-release-bot
33ea424c37 chore(release): 4.8.3-dev.3 [skip ci]
## [4.8.3-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.8.3-dev.2...v4.8.3-dev.3) (2024-05-30)

### Bug Fixes

* **Reddit - Hide ads:** Constrain to last working version 2024.17.0 ([#3192](https://github.com/ReVanced/revanced-patches/issues/3192)) ([7bd9cab](7bd9cabf5a))
2024-05-30 23:49:05 +00:00
Ashley
7bd9cabf5a fix(Reddit - Hide ads): Constrain to last working version 2024.17.0 (#3192)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-05-31 01:47:02 +02:00
oSumAtrIX
7946d503db build: Downgrade dependency due to it incorrectly breaking binary compatibility 2024-05-31 01:44:08 +02:00
semantic-release-bot
b2f046a7f6 chore(release): 4.8.3-dev.2 [skip ci]
## [4.8.3-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.8.3-dev.1...v4.8.3-dev.2) (2024-05-30)

### Bug Fixes

* **YouTube - Spoof client:** Clarify that only enter/exit fullscreen gesture does not work with Android VR spoof ([#3243](https://github.com/ReVanced/revanced-patches/issues/3243)) ([91ea79c](91ea79ca0e))
2024-05-30 09:48:09 +00:00
SodaWithoutSparkles
91ea79ca0e fix(YouTube - Spoof client): Clarify that only enter/exit fullscreen gesture does not work with Android VR spoof (#3243) 2024-05-30 13:46:04 +04:00
oSumAtrIX
532293ce70 build: Fix invalid Gradle wrapper checksum 2024-05-26 23:07:03 +02:00
oSumAtrIX
662598fb67 build: Bump dependencies 2024-05-26 01:21:44 +02:00
oSumAtrIX
3276277c5a docs: Improve issues templates (#3224)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2024-05-26 00:44:05 +02:00
semantic-release-bot
e9df0ec5d1 chore(release): 4.8.3-dev.1 [skip ci]
## [4.8.3-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.8.2...v4.8.3-dev.1) (2024-05-25)

### Bug Fixes

* **YouTube - Spoof client:** Improve Android spoofing ([#3230](https://github.com/ReVanced/revanced-patches/issues/3230)) ([c20dbff](c20dbffc86))
2024-05-25 22:12:20 +00:00
LisoUseInAIKyrios
c20dbffc86 fix(YouTube - Spoof client): Improve Android spoofing (#3230) 2024-05-26 02:10:21 +04:00
semantic-release-bot
9c58b4b1f7 chore(release): 4.8.2 [skip ci]
## [4.8.2](https://github.com/ReVanced/revanced-patches/compare/v4.8.1...v4.8.2) (2024-05-24)

### Bug Fixes

* **YouTube - Client spoof:** Spoof iOS client model to fix various side effects ([#3220](https://github.com/ReVanced/revanced-patches/issues/3220)) ([82a0847](82a0847c6d))
2024-05-24 00:33:49 +00:00
oSumAtrIX
4eab75511f chore: Merge branch dev to main (#3223) 2024-05-24 02:31:24 +02:00
semantic-release-bot
04e556f4f1 chore(release): 4.8.2-dev.1 [skip ci]
## [4.8.2-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.8.1...v4.8.2-dev.1) (2024-05-23)

### Bug Fixes

* **YouTube - Client spoof:** Spoof iOS client model to fix various side effects ([#3220](https://github.com/ReVanced/revanced-patches/issues/3220)) ([82a0847](82a0847c6d))
2024-05-23 20:44:17 +00:00
oSumAtrIX
82a0847c6d fix(YouTube - Client spoof): Spoof iOS client model to fix various side effects (#3220)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2024-05-23 22:42:11 +02:00
semantic-release-bot
0d1c455964 chore(release): 4.8.1 [skip ci]
## [4.8.1](https://github.com/ReVanced/revanced-patches/compare/v4.8.0...v4.8.1) (2024-05-21)

### Bug Fixes

* Use UrlDecoder API available in older Android versions ([f92dabd](f92dabd8ea))
2024-05-21 01:41:36 +00:00
oSumAtrIX
395c1280e2 chore: Merge branch dev to main (#3201) 2024-05-21 03:39:34 +02:00
semantic-release-bot
740e011da7 chore(release): 4.8.1-dev.1 [skip ci]
## [4.8.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.8.0...v4.8.1-dev.1) (2024-05-21)

### Bug Fixes

* Use UrlDecoder API available in older Android versions ([f92dabd](f92dabd8ea))
2024-05-21 01:39:05 +00:00
oSumAtrIX
f92dabd8ea fix: Use UrlDecoder API available in older Android versions 2024-05-21 03:36:53 +02:00
semantic-release-bot
240b05c01b chore(release): 4.8.0 [skip ci]
# [4.8.0](https://github.com/ReVanced/revanced-patches/compare/v4.7.0...v4.8.0) (2024-05-21)

### Bug Fixes

* Case patch option title correctly ([531955a](531955a111))
* Correctly handle patches jar path if it contains exclamation marks ([0f2ea93](0f2ea93aaa))
* Publicize abstract property ([c727c6f](c727c6f19d))
* **Reddit is Fun - Spoof client:** Fix login by updating the authorization subdomain from "old" to "ssl" ([0df7f22](0df7f22dad))
* URL decode path to JAR containing spaces to get JAR manifest ([#3079](https://github.com/ReVanced/revanced-patches/issues/3079)) ([112513e](112513e4b0))
* Use correct preference key ([09d2015](09d20158a3))
* **YouTube - Client spoof:** Spoof client to fix playback ([#3199](https://github.com/ReVanced/revanced-patches/issues/3199)) ([6ac3ba0](6ac3ba03aa))
* **YouTube - Hide ads:** Fix string typo ([81f452d](81f452d1da))
* **YouTube - Hide Shorts components:** Rename option title to make it consistent ([0d63b13](0d63b137aa))
* **YouTube - Hide video action buttons:** Remove obsolete `hide Shop button` ([#3057](https://github.com/ReVanced/revanced-patches/issues/3057)) ([fc43dd7](fc43dd709f))
* **YouTube - Navigation buttons:** Adjust summary text of switch notification button ([#3130](https://github.com/ReVanced/revanced-patches/issues/3130)) ([df91226](df91226d11))
* **YouTube - Player flyout menu:** Remove obsolete `Hide report menu` ([6e3f760](6e3f760379))
* **YouTube - Restore old video quality menu:** Show advanced quality menu in Shorts quality flyout ([#3155](https://github.com/ReVanced/revanced-patches/issues/3155)) ([eec8a9f](eec8a9f794))
* **YouTube - SponsorBlock:** Show correct segment times if video is over 24 hours in length ([#3138](https://github.com/ReVanced/revanced-patches/issues/3138)) ([5548bc5](5548bc5ef7))
* **YouTube Music:** Make `Hide 'Get Music Premium' label` and `Remove upgrade button` compatible with latest version ([#3164](https://github.com/ReVanced/revanced-patches/issues/3164)) ([d859b15](d859b15950))

### Features

* **Photomath:** Support version `8.37.0` ([#3109](https://github.com/ReVanced/revanced-patches/issues/3109)) ([2f28078](2f280784fa))
* **Piccoma:** Add `Disable tracking` patch ([#3143](https://github.com/ReVanced/revanced-patches/issues/3143)) ([bf61b51](bf61b51856))
* **Piccoma:** Add `Spoof Android device ID` patch ([#3145](https://github.com/ReVanced/revanced-patches/issues/3145)) ([cca5a8b](cca5a8b44d))
* **Tumblr:** Add `Disable Ad-Free Banner` patch ([#3091](https://github.com/ReVanced/revanced-patches/issues/3091)) ([18a790b](18a790be6a))
* **WarnWetter - Promo code unlock:** Constrain to last working version ([#3110](https://github.com/ReVanced/revanced-patches/issues/3110)) ([8994c5d](8994c5dd5e))
* **YouTube - Comments:** Add option to hide timestamp and emoji buttons ([#3076](https://github.com/ReVanced/revanced-patches/issues/3076)) ([fe461c1](fe461c1d14))
* **YouTube - Hide ads:** Add option to hide the 'Visit store' button on channel pages ([#3077](https://github.com/ReVanced/revanced-patches/issues/3077)) ([a1e7253](a1e7253073))
* **YouTube - Hide Shorts components:** Hide 'Buy super thanks' button ([#3176](https://github.com/ReVanced/revanced-patches/issues/3176)) ([7655619](7655619e02))
* **YouTube - Hide Shorts components:** Hide like / dislike button in video ads ([#3062](https://github.com/ReVanced/revanced-patches/issues/3062)) ([3a018ff](3a018ff002))
* **YouTube - Navigation buttons:** Add option to hide navigation button labels ([#3189](https://github.com/ReVanced/revanced-patches/issues/3189)) ([0e42d1b](0e42d1b224))
* **YT Music:** Add support for `7.01.52` ([#3177](https://github.com/ReVanced/revanced-patches/issues/3177)) ([5ba63e1](5ba63e1d7d))
2024-05-21 00:47:55 +00:00
oSumAtrIX
a02c74f5c8 chore: Merge branch dev to main (#3053) 2024-05-21 02:45:40 +02:00
semantic-release-bot
2fc4d7f1bb chore(release): 4.8.0-dev.24 [skip ci]
# [4.8.0-dev.24](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.23...v4.8.0-dev.24) (2024-05-21)

### Bug Fixes

* **YouTube - Client spoof:** Spoof client to fix playback ([#3199](https://github.com/ReVanced/revanced-patches/issues/3199)) ([6ac3ba0](6ac3ba03aa))
2024-05-21 00:43:47 +00:00
oSumAtrIX
6ac3ba03aa fix(YouTube - Client spoof): Spoof client to fix playback (#3199)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2024-05-21 02:41:35 +02:00
semantic-release-bot
fecfffc48f chore(release): 4.8.0-dev.23 [skip ci]
# [4.8.0-dev.23](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.22...v4.8.0-dev.23) (2024-05-18)

### Features

* **Piccoma:** Add `Spoof Android device ID` patch ([#3145](https://github.com/ReVanced/revanced-patches/issues/3145)) ([cca5a8b](cca5a8b44d))
2024-05-18 21:07:29 +00:00
Romain
cca5a8b44d feat(Piccoma): Add Spoof Android device ID patch (#3145)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-05-18 23:04:58 +02:00
semantic-release-bot
c09eaa5911 chore(release): 4.8.0-dev.22 [skip ci]
# [4.8.0-dev.22](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.21...v4.8.0-dev.22) (2024-05-18)

### Bug Fixes

* Use correct preference key ([09d2015](09d20158a3))
2024-05-18 21:04:01 +00:00
oSumAtrIX
09d20158a3 fix: Use correct preference key 2024-05-18 23:02:04 +02:00
semantic-release-bot
5d56662637 chore(release): 4.8.0-dev.21 [skip ci]
# [4.8.0-dev.21](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.20...v4.8.0-dev.21) (2024-05-18)

### Features

* **Piccoma:** Add `Disable tracking` patch ([#3143](https://github.com/ReVanced/revanced-patches/issues/3143)) ([bf61b51](bf61b51856))
* **YouTube - Navigation buttons:** Add option to hide navigation button labels ([#3189](https://github.com/ReVanced/revanced-patches/issues/3189)) ([0e42d1b](0e42d1b224))
2024-05-18 20:55:54 +00:00
MarcaD
0e42d1b224 feat(YouTube - Navigation buttons): Add option to hide navigation button labels (#3189)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-05-18 22:53:41 +02:00
Romain
bf61b51856 feat(Piccoma): Add Disable tracking patch (#3143)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-05-18 22:53:19 +02:00
semantic-release-bot
99888044de chore(release): 4.8.0-dev.20 [skip ci]
# [4.8.0-dev.20](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.19...v4.8.0-dev.20) (2024-05-16)

### Features

* **YT Music:** Add support for `7.01.52` ([#3177](https://github.com/ReVanced/revanced-patches/issues/3177)) ([5ba63e1](5ba63e1d7d))
2024-05-16 17:14:19 +00:00
LisoUseInAIKyrios
5ba63e1d7d feat(YT Music): Add support for 7.01.52 (#3177) 2024-05-16 21:12:04 +04:00
semantic-release-bot
c2624a10a4 chore(release): 4.8.0-dev.19 [skip ci]
# [4.8.0-dev.19](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.18...v4.8.0-dev.19) (2024-05-16)

### Features

* **YouTube - Hide Shorts components:** Hide 'Buy super thanks' button ([#3176](https://github.com/ReVanced/revanced-patches/issues/3176)) ([7655619](7655619e02))
2024-05-16 17:11:23 +00:00
LisoUseInAIKyrios
7655619e02 feat(YouTube - Hide Shorts components): Hide 'Buy super thanks' button (#3176) 2024-05-16 21:09:15 +04:00
semantic-release-bot
245c2ad536 chore(release): 4.8.0-dev.18 [skip ci]
# [4.8.0-dev.18](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.17...v4.8.0-dev.18) (2024-05-14)

### Bug Fixes

* **YouTube Music:** Make `Hide 'Get Music Premium' label` and `Remove upgrade button` compatible with latest version ([#3164](https://github.com/ReVanced/revanced-patches/issues/3164)) ([d859b15](d859b15950))
2024-05-14 17:47:20 +00:00
Alberto Ponces
d859b15950 fix(YouTube Music): Make Hide 'Get Music Premium' label and Remove upgrade button compatible with latest version (#3164) 2024-05-14 19:45:06 +02:00
semantic-release-bot
6fa80c5959 chore(release): 4.8.0-dev.17 [skip ci]
# [4.8.0-dev.17](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.16...v4.8.0-dev.17) (2024-05-12)

### Features

* **Photomath:** Support version `8.37.0` ([#3109](https://github.com/ReVanced/revanced-patches/issues/3109)) ([2f28078](2f280784fa))
2024-05-12 23:47:30 +00:00
FullerBread2032
2f280784fa feat(Photomath): Support version 8.37.0 (#3109) 2024-05-13 01:45:13 +02:00
semantic-release-bot
a4fbed5b78 chore(release): 4.8.0-dev.16 [skip ci]
# [4.8.0-dev.16](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.15...v4.8.0-dev.16) (2024-05-12)

### Features

* **WarnWetter - Promo code unlock:** Constrain to last working version ([#3110](https://github.com/ReVanced/revanced-patches/issues/3110)) ([8994c5d](8994c5dd5e))
2024-05-12 23:42:52 +00:00
Bceez
8994c5dd5e feat(WarnWetter - Promo code unlock): Constrain to last working version (#3110) 2024-05-13 01:40:52 +02:00
semantic-release-bot
41e91145e0 chore(release): 4.8.0-dev.15 [skip ci]
# [4.8.0-dev.15](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.14...v4.8.0-dev.15) (2024-05-11)

### Bug Fixes

* **YouTube - Restore old video quality menu:** Show advanced quality menu in Shorts quality flyout ([#3155](https://github.com/ReVanced/revanced-patches/issues/3155)) ([eec8a9f](eec8a9f794))
2024-05-11 20:32:34 +00:00
LisoUseInAIKyrios
eec8a9f794 fix(YouTube - Restore old video quality menu): Show advanced quality menu in Shorts quality flyout (#3155)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-05-12 00:30:36 +04:00
semantic-release-bot
aff88dc71f chore(release): 4.8.0-dev.14 [skip ci]
# [4.8.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.13...v4.8.0-dev.14) (2024-05-08)

### Bug Fixes

* **YouTube - SponsorBlock:** Show correct segment times if video is over 24 hours in length ([#3138](https://github.com/ReVanced/revanced-patches/issues/3138)) ([5548bc5](5548bc5ef7))
2024-05-08 22:29:24 +00:00
LisoUseInAIKyrios
5548bc5ef7 fix(YouTube - SponsorBlock): Show correct segment times if video is over 24 hours in length (#3138) 2024-05-09 02:27:22 +04:00
semantic-release-bot
3f021dd3ac chore(release): 4.8.0-dev.13 [skip ci]
# [4.8.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.12...v4.8.0-dev.13) (2024-05-06)

### Bug Fixes

* **YouTube - Navigation buttons:** Adjust summary text of switch notification button ([#3130](https://github.com/ReVanced/revanced-patches/issues/3130)) ([df91226](df91226d11))
2024-05-06 21:23:04 +00:00
LisoUseInAIKyrios
df91226d11 fix(YouTube - Navigation buttons): Adjust summary text of switch notification button (#3130)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-05-07 01:20:47 +04:00
semantic-release-bot
b7ec4de0a7 chore(release): 4.8.0-dev.12 [skip ci]
# [4.8.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.11...v4.8.0-dev.12) (2024-05-06)

### Bug Fixes

* **YouTube - Player flyout menu:** Remove obsolete `Hide report menu` ([6e3f760](6e3f760379))
2024-05-06 20:50:24 +00:00
LisoUseInAIKyrios
6e3f760379 fix(YouTube - Player flyout menu): Remove obsolete Hide report menu 2024-05-07 00:48:18 +04:00
semantic-release-bot
dbd44830b6 chore(release): 4.8.0-dev.11 [skip ci]
# [4.8.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.10...v4.8.0-dev.11) (2024-05-06)

### Bug Fixes

* **Reddit is Fun - Spoof client:** Fix login by updating the authorization subdomain from "old" to "ssl" ([0df7f22](0df7f22dad))
2024-05-06 19:39:45 +00:00
oSumAtrIX
0df7f22dad fix(Reddit is Fun - Spoof client): Fix login by updating the authorization subdomain from "old" to "ssl" 2024-05-06 20:41:37 +02:00
semantic-release-bot
5466309691 chore(release): 4.8.0-dev.10 [skip ci]
# [4.8.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.9...v4.8.0-dev.10) (2024-05-02)

### Features

* **Tumblr:** Add `Disable Ad-Free Banner` patch ([#3091](https://github.com/ReVanced/revanced-patches/issues/3091)) ([18a790b](18a790be6a))
2024-05-02 13:05:12 +00:00
Temm
18a790be6a feat(Tumblr): Add Disable Ad-Free Banner patch (#3091)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-05-02 17:02:54 +04:00
semantic-release-bot
616a514928 chore(release): 4.8.0-dev.9 [skip ci]
# [4.8.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.8...v4.8.0-dev.9) (2024-04-29)

### Bug Fixes

* Correctly handle patches jar path if it contains exclamation marks ([0f2ea93](0f2ea93aaa))
2024-04-29 18:28:33 +00:00
LisoUseInAIKyrios
0f2ea93aaa fix: Correctly handle patches jar path if it contains exclamation marks 2024-04-29 22:26:02 +04:00
semantic-release-bot
1c0fd55361 chore(release): 4.8.0-dev.8 [skip ci]
# [4.8.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.7...v4.8.0-dev.8) (2024-04-23)

### Bug Fixes

* **YouTube - Hide ads:** Fix string typo ([81f452d](81f452d1da))
2024-04-23 21:13:23 +00:00
LisoUseInAIKyrios
81f452d1da fix(YouTube - Hide ads): Fix string typo 2024-04-24 01:10:43 +04:00
semantic-release-bot
d90025ff8e chore(release): 4.8.0-dev.7 [skip ci]
# [4.8.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.6...v4.8.0-dev.7) (2024-04-23)

### Bug Fixes

* URL decode path to JAR containing spaces to get JAR manifest ([#3079](https://github.com/ReVanced/revanced-patches/issues/3079)) ([112513e](112513e4b0))
2024-04-23 17:59:24 +00:00
oSumAtrIX
112513e4b0 fix: URL decode path to JAR containing spaces to get JAR manifest (#3079) 2024-04-23 19:56:58 +02:00
Angelos Bouklis
8bf3670edf docs: Fix link to ReVanced Patcher docs (#3068) 2024-04-23 19:50:25 +02:00
semantic-release-bot
943c93593b chore(release): 4.8.0-dev.6 [skip ci]
# [4.8.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.5...v4.8.0-dev.6) (2024-04-23)

### Features

* **YouTube - Hide ads:** Add option to hide the 'Visit store' button on channel pages ([#3077](https://github.com/ReVanced/revanced-patches/issues/3077)) ([a1e7253](a1e7253073))
2024-04-23 17:32:55 +00:00
oSumAtrIX
a1e7253073 feat(YouTube - Hide ads): Add option to hide the 'Visit store' button on channel pages (#3077) 2024-04-23 19:30:18 +02:00
semantic-release-bot
6768f98dd7 chore(release): 4.8.0-dev.5 [skip ci]
# [4.8.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.4...v4.8.0-dev.5) (2024-04-23)

### Bug Fixes

* **YouTube - Hide Shorts components:** Rename option title to make it consistent ([0d63b13](0d63b137aa))
2024-04-23 17:24:33 +00:00
oSumAtrIX
0d63b137aa fix(YouTube - Hide Shorts components): Rename option title to make it consistent 2024-04-23 19:21:41 +02:00
semantic-release-bot
a6d2cf5a93 chore(release): 4.8.0-dev.4 [skip ci]
# [4.8.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.3...v4.8.0-dev.4) (2024-04-23)

### Features

* **YouTube - Comments:** Add option to hide timestamp and emoji buttons ([#3076](https://github.com/ReVanced/revanced-patches/issues/3076)) ([fe461c1](fe461c1d14))
2024-04-23 17:05:45 +00:00
LisoUseInAIKyrios
fe461c1d14 feat(YouTube - Comments): Add option to hide timestamp and emoji buttons (#3076) 2024-04-23 21:03:15 +04:00
semantic-release-bot
6b33cd2d8f chore(release): 4.8.0-dev.3 [skip ci]
# [4.8.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.2...v4.8.0-dev.3) (2024-04-22)

### Bug Fixes

* Publicize abstract property ([c727c6f](c727c6f19d))
2024-04-22 17:06:43 +00:00
oSumAtrIX
c727c6f19d fix: Publicize abstract property 2024-04-22 19:04:18 +02:00
semantic-release-bot
49db0cee1b chore(release): 4.8.0-dev.2 [skip ci]
# [4.8.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.8.0-dev.1...v4.8.0-dev.2) (2024-04-21)

### Bug Fixes

* Case patch option title correctly ([531955a](531955a111))
2024-04-21 23:39:44 +00:00
oSumAtrIX
531955a111 fix: Case patch option title correctly 2024-04-22 01:37:36 +02:00
semantic-release-bot
e53cc9bba9 chore(release): 4.8.0-dev.1 [skip ci]
# [4.8.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.7.0...v4.8.0-dev.1) (2024-04-21)

### Bug Fixes

* **YouTube - Hide video action buttons:** Remove obsolete `hide Shop button` ([#3057](https://github.com/ReVanced/revanced-patches/issues/3057)) ([fc43dd7](fc43dd709f))

### Features

* **YouTube - Hide Shorts components:** Hide like / dislike button in video ads ([#3062](https://github.com/ReVanced/revanced-patches/issues/3062)) ([3a018ff](3a018ff002))
2024-04-21 14:59:47 +00:00
LisoUseInAIKyrios
fc43dd709f fix(YouTube - Hide video action buttons): Remove obsolete hide Shop button (#3057) 2024-04-21 18:57:35 +04:00
LisoUseInAIKyrios
3a018ff002 feat(YouTube - Hide Shorts components): Hide like / dislike button in video ads (#3062) 2024-04-21 18:55:26 +04:00
LisoUseInAIKyrios
86f11480e7 chore: Fix duplicate strings that is confusing Crowdin 2024-04-21 08:03:11 +04:00
LisoUseInAIKyrios
0190d5a5c9 chore: Adjust hide fullscreen ads toast text, move hide Playables to feed menu 2024-04-21 06:06:16 +04:00
semantic-release-bot
50735fabbc chore(release): 4.7.0 [skip ci]
# [4.7.0](https://github.com/ReVanced/revanced-patches/compare/v4.6.0...v4.7.0) (2024-04-21)

### Bug Fixes

* **Tumblr - Fix old versions:** Improve reliability by removing remnances of Tumblr Live  ([#2988](https://github.com/ReVanced/revanced-patches/issues/2988)) ([1ac6127](1ac612798b))
* **YouTube - GmsCore support:** Prompt to disable battery optimizations, if not done already ([#2958](https://github.com/ReVanced/revanced-patches/issues/2958)) ([b80bb89](b80bb8969c))
* **YouTube - Hide ads:** rename `Hide paid content` to `Hide paid promotion label` ([#3026](https://github.com/ReVanced/revanced-patches/issues/3026)) ([58ce37b](58ce37b0d3))
* **YouTube - Hide load more button:** Include patch with `Hide layout components`, and hide button only in search feed  ([#2959](https://github.com/ReVanced/revanced-patches/issues/2959)) ([0e88306](0e88306f3f))
* **YouTube - Hide Shorts components:** Correctly hide Shorts if navigation tab is changed using device back button ([#3007](https://github.com/ReVanced/revanced-patches/issues/3007)) ([e97aaf4](e97aaf4aae))
* **YouTube - Player flyout menu:** Add hide Lock screen menu ([#2985](https://github.com/ReVanced/revanced-patches/issues/2985)) ([6175841](61758414c2))
* **YouTube - Spoof device dimensions:** Warn about potential performance issues ([#3039](https://github.com/ReVanced/revanced-patches/issues/3039)) ([cc7f79d](cc7f79d903))
* **YouTube Music - Remove upgrade button:** Fix compatibility with latest versions ([#3045](https://github.com/ReVanced/revanced-patches/issues/3045)) ([e329e1d](e329e1dd1a))

### Features

* Add `Hex` patch ([#3034](https://github.com/ReVanced/revanced-patches/issues/3034)) ([6fd46ad](6fd46ad9b6))
* **Amazon:** Add `Always allow deep-linking` patch ([#3000](https://github.com/ReVanced/revanced-patches/issues/3000)) ([f2fe0d5](f2fe0d5c6f))
* **Strava - Unlock subscription:** Remove compatible version constraint ([e798341](e7983411a7))
* **Twitter:** Add `Sanitize sharing links` patch ([#3003](https://github.com/ReVanced/revanced-patches/issues/3003)) ([b4e8beb](b4e8beb8ec))
* **YouTube - Hide layout components:** Add option to hide horizontal shelves ([#2951](https://github.com/ReVanced/revanced-patches/issues/2951)) ([122f042](122f04219f))
* **YouTube - Hide layout components:** Hide playables ([f85f518](f85f518fc9))
* **YouTube - Hide Shorts components:** Hide `Shop`, `Location` and `Save sound to playlist` buttons ([#3018](https://github.com/ReVanced/revanced-patches/issues/3018)) ([be76e49](be76e49a8b))
* **YouTube - Hide Shorts components:** Hide tagged products, hide search suggestions ([#3019](https://github.com/ReVanced/revanced-patches/issues/3019)) ([2e59965](2e59965bb5))
* **YouTube - Swipe controls:** Save and restore brightness and add auto-brightness toggle ([#2996](https://github.com/ReVanced/revanced-patches/issues/2996)) ([533f9a9](533f9a964d))
* **YouTube:** Add 'About' preference to settings menu ([#2981](https://github.com/ReVanced/revanced-patches/issues/2981)) ([c272333](c272333adb))
* **YouTube:** Match overlay icons style to YouTube ([#3023](https://github.com/ReVanced/revanced-patches/issues/3023)) ([366f754](366f754a6a))
* **YouTube:** Support version `19.09.38`, `19.10.39` and `19.11.43` ([#2971](https://github.com/ReVanced/revanced-patches/issues/2971)) ([96e17cf](96e17cf4de))
* **YT Music - Hide 'Get Music Premium' label:** Remove occurences of label in settings ([#3046](https://github.com/ReVanced/revanced-patches/issues/3046)) ([7ecd992](7ecd992def))
2024-04-21 01:49:13 +00:00
oSumAtrIX
653631703c chore: Merge branch dev to main (#2982) 2024-04-21 03:47:03 +02:00
semantic-release-bot
2587508944 chore(release): 4.7.0-dev.16 [skip ci]
# [4.7.0-dev.16](https://github.com/ReVanced/revanced-patches/compare/v4.7.0-dev.15...v4.7.0-dev.16) (2024-04-21)

### Features

* **YouTube - Swipe controls:** Save and restore brightness and add auto-brightness toggle ([#2996](https://github.com/ReVanced/revanced-patches/issues/2996)) ([533f9a9](533f9a964d))
2024-04-21 00:00:57 +00:00
MarcaD
533f9a964d feat(YouTube - Swipe controls): Save and restore brightness and add auto-brightness toggle (#2996)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-04-21 01:58:56 +02:00
semantic-release-bot
fb0b3bd673 chore(release): 4.7.0-dev.15 [skip ci]
# [4.7.0-dev.15](https://github.com/ReVanced/revanced-patches/compare/v4.7.0-dev.14...v4.7.0-dev.15) (2024-04-20)

### Features

* **YouTube:** Support version `19.09.38`, `19.10.39` and `19.11.43` ([#2971](https://github.com/ReVanced/revanced-patches/issues/2971)) ([96e17cf](96e17cf4de))
2024-04-20 23:17:38 +00:00
LisoUseInAIKyrios
96e17cf4de feat(YouTube): Support version 19.09.38, 19.10.39 and 19.11.43 (#2971)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-04-21 01:15:31 +02:00
semantic-release-bot
a7bd0b111e chore(release): 4.7.0-dev.14 [skip ci]
# [4.7.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v4.7.0-dev.13...v4.7.0-dev.14) (2024-04-20)

### Features

* **YT Music - Hide 'Get Music Premium' label:** Remove occurences of label in settings ([#3046](https://github.com/ReVanced/revanced-patches/issues/3046)) ([7ecd992](7ecd992def))
2024-04-20 22:39:55 +00:00
Alberto Ponces
7ecd992def feat(YT Music - Hide 'Get Music Premium' label): Remove occurences of label in settings (#3046)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-04-21 00:37:51 +02:00
semantic-release-bot
217d3c69ba chore(release): 4.7.0-dev.13 [skip ci]
# [4.7.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v4.7.0-dev.12...v4.7.0-dev.13) (2024-04-18)

### Bug Fixes

* **YouTube Music - Remove upgrade button:** Fix compatibility with latest versions ([#3045](https://github.com/ReVanced/revanced-patches/issues/3045)) ([e329e1d](e329e1dd1a))
2024-04-18 23:18:22 +00:00
Alberto Ponces
e329e1dd1a fix(YouTube Music - Remove upgrade button): Fix compatibility with latest versions (#3045) 2024-04-19 01:16:25 +02:00
semantic-release-bot
6a8b669ba2 chore(release): 4.7.0-dev.12 [skip ci]
# [4.7.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v4.7.0-dev.11...v4.7.0-dev.12) (2024-04-18)

### Features

* Add `Hex` patch ([#3034](https://github.com/ReVanced/revanced-patches/issues/3034)) ([6fd46ad](6fd46ad9b6))
2024-04-18 22:50:02 +00:00
oSumAtrIX
6fd46ad9b6 feat: Add Hex patch (#3034) 2024-04-18 21:37:46 +02:00
semantic-release-bot
50ddb680ed chore(release): 4.7.0-dev.11 [skip ci]
# [4.7.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v4.7.0-dev.10...v4.7.0-dev.11) (2024-04-18)

### Bug Fixes

* **YouTube - Spoof device dimensions:** Warn about potential performance issues ([#3039](https://github.com/ReVanced/revanced-patches/issues/3039)) ([cc7f79d](cc7f79d903))
2024-04-18 13:21:16 +00:00
LisoUseInAIKyrios
cc7f79d903 fix(YouTube - Spoof device dimensions): Warn about potential performance issues (#3039) 2024-04-18 17:19:04 +04:00
LisoUseInAIKyrios
57274b5435 chore: Fix typo 2024-04-18 12:41:48 +04:00
semantic-release-bot
8295b7a22e chore(release): 4.7.0-dev.10 [skip ci]
# [4.7.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v4.7.0-dev.9...v4.7.0-dev.10) (2024-04-17)

### Features

* **YouTube:** Add 'About' preference to settings menu ([#2981](https://github.com/ReVanced/revanced-patches/issues/2981)) ([c272333](c272333adb))
* **YouTube:** Match overlay icons style to YouTube ([#3023](https://github.com/ReVanced/revanced-patches/issues/3023)) ([366f754](366f754a6a))
2024-04-17 16:04:01 +00:00
MarcaD
366f754a6a feat(YouTube): Match overlay icons style to YouTube (#3023) 2024-04-17 18:01:47 +02:00
LisoUseInAIKyrios
c272333adb feat(YouTube): Add 'About' preference to settings menu (#2981)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-04-17 20:01:17 +04:00
semantic-release-bot
ef6c00a520 chore(release): 4.7.0-dev.9 [skip ci]
# [4.7.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v4.7.0-dev.8...v4.7.0-dev.9) (2024-04-15)

### Bug Fixes

* **YouTube - Hide ads:** rename `Hide paid content` to `Hide paid promotion label` ([#3026](https://github.com/ReVanced/revanced-patches/issues/3026)) ([58ce37b](58ce37b0d3))
2024-04-15 15:21:08 +00:00
LisoUseInAIKyrios
58ce37b0d3 fix(YouTube - Hide ads): rename Hide paid content to Hide paid promotion label (#3026) 2024-04-15 19:18:57 +04:00
semantic-release-bot
4b7e12f995 chore(release): 4.7.0-dev.8 [skip ci]
# [4.7.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v4.7.0-dev.7...v4.7.0-dev.8) (2024-04-14)

### Features

* **YouTube - Hide Shorts components:** Hide tagged products, hide search suggestions ([#3019](https://github.com/ReVanced/revanced-patches/issues/3019)) ([2e59965](2e59965bb5))
2024-04-14 14:56:15 +00:00
LisoUseInAIKyrios
2e59965bb5 feat(YouTube - Hide Shorts components): Hide tagged products, hide search suggestions (#3019) 2024-04-14 18:54:00 +04:00
semantic-release-bot
426f405407 chore(release): 4.7.0-dev.7 [skip ci]
# [4.7.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v4.7.0-dev.6...v4.7.0-dev.7) (2024-04-14)

### Features

* **YouTube - Hide layout components:** Hide playables ([f85f518](f85f518fc9))
2024-04-14 00:09:07 +00:00
oSumAtrIX
f85f518fc9 feat(YouTube - Hide layout components): Hide playables 2024-04-14 02:06:41 +02:00
LisoUseInAIKyrios
f3972d313f chore: fix typo 2024-04-12 23:52:21 +04:00
semantic-release-bot
04a72d52de chore(release): 4.7.0-dev.6 [skip ci]
# [4.7.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v4.7.0-dev.5...v4.7.0-dev.6) (2024-04-12)

### Features

* **YouTube - Hide Shorts components:** Hide `Shop`, `Location` and `Save sound to playlist` buttons ([#3018](https://github.com/ReVanced/revanced-patches/issues/3018)) ([be76e49](be76e49a8b))
2024-04-12 19:46:09 +00:00
LisoUseInAIKyrios
be76e49a8b feat(YouTube - Hide Shorts components): Hide Shop, Location and Save sound to playlist buttons (#3018) 2024-04-12 23:44:00 +04:00
semantic-release-bot
fa1c616014 chore(release): 4.7.0-dev.5 [skip ci]
# [4.7.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v4.7.0-dev.4...v4.7.0-dev.5) (2024-04-10)

### Bug Fixes

* **YouTube - Hide Shorts components:** Correctly hide Shorts if navigation tab is changed using device back button ([#3007](https://github.com/ReVanced/revanced-patches/issues/3007)) ([e97aaf4](e97aaf4aae))
2024-04-10 08:31:43 +00:00
LisoUseInAIKyrios
e97aaf4aae fix(YouTube - Hide Shorts components): Correctly hide Shorts if navigation tab is changed using device back button (#3007) 2024-04-10 12:29:39 +04:00
semantic-release-bot
92c90ec208 chore(release): 4.7.0-dev.4 [skip ci]
# [4.7.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.7.0-dev.3...v4.7.0-dev.4) (2024-04-09)

### Features

* **Amazon:** Add `Always allow deep-linking` patch ([#3000](https://github.com/ReVanced/revanced-patches/issues/3000)) ([f2fe0d5](f2fe0d5c6f))
* **Twitter:** Add `Sanitize sharing links` patch ([#3003](https://github.com/ReVanced/revanced-patches/issues/3003)) ([b4e8beb](b4e8beb8ec))
2024-04-09 17:45:11 +00:00
Twin
b4e8beb8ec feat(Twitter): Add Sanitize sharing links patch (#3003) 2024-04-09 19:42:51 +02:00
1fexd
f2fe0d5c6f feat(Amazon): Add Always allow deep-linking patch (#3000) 2024-04-09 19:41:45 +02:00
semantic-release-bot
3d3197701c chore(release): 4.7.0-dev.3 [skip ci]
# [4.7.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.7.0-dev.2...v4.7.0-dev.3) (2024-04-09)

### Bug Fixes

* **Tumblr - Fix old versions:** Improve reliability by removing remnances of Tumblr Live  ([#2988](https://github.com/ReVanced/revanced-patches/issues/2988)) ([1ac6127](1ac612798b))
2024-04-09 17:40:30 +00:00
Temm
1ac612798b fix(Tumblr - Fix old versions): Improve reliability by removing remnances of Tumblr Live (#2988)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-04-09 19:38:11 +02:00
LisoUseInAIKyrios
e1ed1aee69 chore(YouTube): Fix typos, simplify some strings for translating 2024-04-07 23:56:09 +04:00
oSumAtrIX
795ccac990 chore: Fix spelling mistake 2024-04-07 17:36:01 +02:00
semantic-release-bot
da55410a2b chore(release): 4.7.0-dev.2 [skip ci]
# [4.7.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.7.0-dev.1...v4.7.0-dev.2) (2024-04-06)

### Features

* **Strava - Unlock subscription:** Remove compatible version constraint ([e798341](e7983411a7))
2024-04-06 18:53:36 +00:00
oSumAtrIX
e7983411a7 feat(Strava - Unlock subscription): Remove compatible version constraint 2024-04-06 20:51:37 +02:00
semantic-release-bot
182748cb16 chore(release): 4.7.0-dev.1 [skip ci]
# [4.7.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.6.1-dev.3...v4.7.0-dev.1) (2024-04-06)

### Features

* **YouTube - Hide layout components:** Add option to hide horizontal shelves ([#2951](https://github.com/ReVanced/revanced-patches/issues/2951)) ([122f042](122f04219f))
2024-04-06 18:51:17 +00:00
nullptr
122f04219f feat(YouTube - Hide layout components): Add option to hide horizontal shelves (#2951)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2024-04-06 20:49:03 +02:00
semantic-release-bot
80763bcef6 chore(release): 4.6.1-dev.3 [skip ci]
## [4.6.1-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.6.1-dev.2...v4.6.1-dev.3) (2024-04-06)

### Bug Fixes

* **YouTube - GmsCore support:** Prompt to disable battery optimizations, if not done already ([#2958](https://github.com/ReVanced/revanced-patches/issues/2958)) ([b80bb89](b80bb8969c))
2024-04-06 18:48:03 +00:00
LisoUseInAIKyrios
b80bb8969c fix(YouTube - GmsCore support): Prompt to disable battery optimizations, if not done already (#2958)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-04-06 20:45:59 +02:00
oSumAtrIX
2a86a670f0 ci: Only push strings once a month 2024-04-05 01:16:20 +02:00
LisoUseInAIKyrios
dba37b834d chore: Add comments for translations 2024-04-05 01:15:06 +04:00
semantic-release-bot
3ad4eb8dbc chore(release): 4.6.1-dev.2 [skip ci]
## [4.6.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.6.1-dev.1...v4.6.1-dev.2) (2024-04-04)

### Bug Fixes

* **YouTube - Hide load more button:** Include patch with `Hide layout components`, and hide button only in search feed  ([#2959](https://github.com/ReVanced/revanced-patches/issues/2959)) ([0e88306](0e88306f3f))
2024-04-04 21:11:39 +00:00
nullptr
0e88306f3f fix(YouTube - Hide load more button): Include patch with Hide layout components, and hide button only in search feed (#2959) 2024-04-05 01:09:28 +04:00
LisoUseInAIKyrios
87cb63f2e7 chore: Fix typo 2024-04-04 14:25:36 +04:00
LisoUseInAIKyrios
0fead38701 chore: Add comments for translations 2024-04-04 14:19:03 +04:00
semantic-release-bot
19a31019c2 chore(release): 4.6.1-dev.1 [skip ci]
## [4.6.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.6.0...v4.6.1-dev.1) (2024-04-04)

### Bug Fixes

* **YouTube - Player flyout menu:** Add hide Lock screen menu ([#2985](https://github.com/ReVanced/revanced-patches/issues/2985)) ([6175841](61758414c2))
2024-04-04 06:49:26 +00:00
LisoUseInAIKyrios
61758414c2 fix(YouTube - Player flyout menu): Add hide Lock screen menu (#2985) 2024-04-04 10:47:09 +04:00
LisoUseInAIKyrios
b4ee8b6da4 chore: Remove unused string 2024-04-02 16:40:19 +04:00
semantic-release-bot
e86e3d88cf chore(release): 4.6.0 [skip ci]
# [4.6.0](https://github.com/ReVanced/revanced-patches/compare/v4.5.0...v4.6.0) (2024-04-02)

### Bug Fixes

* **Mi Fitness - Fix login:** Patch correct register ([#2942](https://github.com/ReVanced/revanced-patches/issues/2942)) ([fef5f35](fef5f35788))
* **Tumblr:** Restore compatibility with latest versions ([#2955](https://github.com/ReVanced/revanced-patches/issues/2955)) ([1a53a93](1a53a93cd2))

### Features

* **Tumblr:** Add `Fix old versions` patch ([#2954](https://github.com/ReVanced/revanced-patches/issues/2954)) ([2f28e95](2f28e95252))
2024-04-02 00:25:07 +00:00
oSumAtrIX
8cf444962c chore: Merge branch dev to main (#2957) 2024-04-02 02:23:06 +02:00
Ushie
48bf632dbe ci: Push strings to Crowdin on string changes (#2979)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-04-02 01:34:22 +02:00
Ushie
03e91d4251 ci: Don't sync Crowdin every hour (#2967) 2024-04-01 17:17:16 +04:00
semantic-release-bot
8caf70719e chore(release): 4.6.0-dev.1 [skip ci]
# [4.6.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.5.1-dev.2...v4.6.0-dev.1) (2024-03-31)

### Features

* **Tumblr:** Add `Fix old versions` patch ([#2954](https://github.com/ReVanced/revanced-patches/issues/2954)) ([2f28e95](2f28e95252))
2024-03-31 00:49:07 +00:00
Temm
2f28e95252 feat(Tumblr): Add Fix old versions patch (#2954)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-03-31 01:46:50 +01:00
semantic-release-bot
d819e7bbe9 chore(release): 4.5.1-dev.2 [skip ci]
## [4.5.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.5.1-dev.1...v4.5.1-dev.2) (2024-03-30)

### Bug Fixes

* **Mi Fitness - Fix login:** Patch correct register ([#2942](https://github.com/ReVanced/revanced-patches/issues/2942)) ([fef5f35](fef5f35788))
2024-03-30 22:54:45 +00:00
Michał Pisarski
fef5f35788 fix(Mi Fitness - Fix login): Patch correct register (#2942)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-03-30 23:52:45 +01:00
LisoUseInAIKyrios
80034bc70a chore: Add string format indexes, to allow more flexible translations (#2956) 2024-03-31 02:12:33 +04:00
semantic-release-bot
c40911a815 chore(release): 4.5.1-dev.1 [skip ci]
## [4.5.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.5.0...v4.5.1-dev.1) (2024-03-30)

### Bug Fixes

* **Tumblr:** Restore compatibility with latest versions ([#2955](https://github.com/ReVanced/revanced-patches/issues/2955)) ([1a53a93](1a53a93cd2))
2024-03-30 22:10:49 +00:00
Temm
1a53a93cd2 fix(Tumblr): Restore compatibility with latest versions (#2955) 2024-03-30 23:08:34 +01:00
semantic-release-bot
2e68c65c9f chore(release): 4.5.0 [skip ci]
# [4.5.0](https://github.com/ReVanced/revanced-patches/compare/v4.4.0...v4.5.0) (2024-03-30)

### Features

* **YouTube - Alternative thumbnails:** Selectively enable for home / subscription / search ([#2926](https://github.com/ReVanced/revanced-patches/issues/2926)) ([a272962](a27296223f))
* **YouTube - GmsCore:** Require ignoring battery optimizations ([#2952](https://github.com/ReVanced/revanced-patches/issues/2952)) ([9b3c060](9b3c060acb))
2024-03-30 19:42:19 +00:00
oSumAtrIX
6f8d92827b chore: Merge branch dev to main (#2943) 2024-03-30 20:40:10 +01:00
semantic-release-bot
ab2260acfd chore(release): 4.5.0-dev.2 [skip ci]
# [4.5.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.5.0-dev.1...v4.5.0-dev.2) (2024-03-30)

### Features

* **YouTube - GmsCore:** Require ignoring battery optimizations ([#2952](https://github.com/ReVanced/revanced-patches/issues/2952)) ([9b3c060](9b3c060acb))
2024-03-30 18:54:26 +00:00
oSumAtrIX
9b3c060acb feat(YouTube - GmsCore): Require ignoring battery optimizations (#2952) 2024-03-30 19:52:22 +01:00
LisoUseInAIKyrios
bbc4a6bfa0 chore: fix typo 2024-03-30 20:33:28 +04:00
Ushie
4df9b9d5b1 ci: Add workflow to sync Crowdin translations (#2953) 2024-03-30 03:15:07 +01:00
semantic-release-bot
eebf72f476 chore(release): 4.5.0-dev.1 [skip ci]
# [4.5.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.4.0...v4.5.0-dev.1) (2024-03-29)

### Features

* **YouTube - Alternative thumbnails:** Selectively enable for home / subscription / search ([#2926](https://github.com/ReVanced/revanced-patches/issues/2926)) ([a272962](a27296223f))
2024-03-29 09:31:55 +00:00
LisoUseInAIKyrios
a27296223f feat(YouTube - Alternative thumbnails): Selectively enable for home / subscription / search (#2926)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-03-29 13:30:00 +04:00
LisoUseInAIKyrios
77a9a56e2d Merge remote-tracking branch 'upstream/dev' into upstream-dev 2024-03-28 17:15:53 +04:00
LisoUseInAIKyrios
3df3441385 chore: fix typo 2024-03-28 17:15:40 +04:00
semantic-release-bot
86def3efea chore(release): 4.4.0 [skip ci]
# [4.4.0](https://github.com/ReVanced/revanced-patches/compare/v4.3.0...v4.4.0) (2024-03-27)

### Bug Fixes

* **TikTok:** Hook application context earlier to prevent crash ([#2893](https://github.com/ReVanced/revanced-patches/issues/2893)) ([e6a468c](e6a468cf7a))
* **YouTube - Client spoof:** Spoof all user agents ([d18719c](d18719c59c))
* **YouTube - Downloads:** Use new task context ([#2841](https://github.com/ReVanced/revanced-patches/issues/2841)) ([5cca421](5cca42121a))
* **YouTube - Hide ads:** Prevent app crash if hiding fullscreen ads is not possible ([#2910](https://github.com/ReVanced/revanced-patches/issues/2910)) ([2fcd786](2fcd786cc7))
* **YouTube Music:** Fix compatibility with latest versions ([#2924](https://github.com/ReVanced/revanced-patches/issues/2924)) ([7f852e8](7f852e8f32))
* **YouTube:** Fix video playback by switching to ReVanced GmsCore vendor ([#2907](https://github.com/ReVanced/revanced-patches/issues/2907)) ([0bd0c82](0bd0c827a4))
* **YouTube:** Move setting to correct screen ([46ff5b8](46ff5b8b92))

### Features

* **Instagram - Hide timeline ads:** Make compatible with latest versions ([8306f70](8306f70fd1))
* **Mi Fitness:** Add `Force English locale` and `Fix login` patch ([#2734](https://github.com/ReVanced/revanced-patches/issues/2734)) ([2679fad](2679fad25f))
* **Sync for Lemmy:** Add `Disable ads` patch ([#2872](https://github.com/ReVanced/revanced-patches/issues/2872)) ([08c4468](08c4468ff1))
* **YouTube - Downloads:** Use external downloader when selecting 'Download' in home feed flyout menu ([#2881](https://github.com/ReVanced/revanced-patches/issues/2881)) ([bc8bc8c](bc8bc8c798))
* **YouTube - External downloader:** Add ability to use in-app download button ([7f8b7c0](7f8b7c08b2))
* **YouTube - Hide layout components:** Filter home/search results by keywords ([#2853](https://github.com/ReVanced/revanced-patches/issues/2853)) ([cb4b651](cb4b6514db))
* **YouTube - Hide Shorts components:** Hide like and dislike buttons ([069f26d](069f26de20))
* **YouTube - Hide Shorts components:** Hide sound metadata label ([a9f418a](a9f418a19f))
* **YouTube - Hide Shorts components:** Hide title and full video link label ([5b0360c](5b0360c067))
* **YouTube - Hide Shorts components:** Selectively hide Shorts for home / subscription / search ([#2925](https://github.com/ReVanced/revanced-patches/issues/2925)) ([5b7b134](5b7b134d73))
* **YouTube :** Remove `HDR auto brightness` patch ([#2863](https://github.com/ReVanced/revanced-patches/issues/2863)) ([32139f1](32139f151b))
* **YouTube Vanced:** Remove `Hide ads` patch ([bcce7be](bcce7bee9a))
* **YouTube:** Support version `19.05`, `19.06`, `19.07`, `19.08` and `19.09` ([#2862](https://github.com/ReVanced/revanced-patches/issues/2862)) ([122ef68](122ef68a4b))
2024-03-27 18:37:58 +00:00
oSumAtrIX
bc9a612824 chore: Merge branch dev to main (#2804) 2024-03-27 19:35:49 +01:00
semantic-release-bot
f378ddc6d5 chore(release): 4.4.0-dev.15 [skip ci]
# [4.4.0-dev.15](https://github.com/ReVanced/revanced-patches/compare/v4.4.0-dev.14...v4.4.0-dev.15) (2024-03-27)

### Bug Fixes

* **YouTube Music:** Fix compatibility with latest versions ([#2924](https://github.com/ReVanced/revanced-patches/issues/2924)) ([7f852e8](7f852e8f32))

### Features

* **YouTube - Hide Shorts components:** Selectively hide Shorts for home / subscription / search ([#2925](https://github.com/ReVanced/revanced-patches/issues/2925)) ([5b7b134](5b7b134d73))
2024-03-27 18:18:21 +00:00
oSumAtrIX
7f852e8f32 fix(YouTube Music): Fix compatibility with latest versions (#2924) 2024-03-27 19:08:18 +01:00
LisoUseInAIKyrios
5b7b134d73 feat(YouTube - Hide Shorts components): Selectively hide Shorts for home / subscription / search (#2925) 2024-03-27 15:02:34 +01:00
oSumAtrIX
df9361ea2b refactor: Move integrations to correct package 2024-03-27 15:02:34 +01:00
LisoUseInAIKyrios
8c226c4bdc chore: fix typo 2024-03-27 13:09:23 +04:00
semantic-release-bot
c87f8a376d chore(release): 4.4.0-dev.14 [skip ci]
# [4.4.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v4.4.0-dev.13...v4.4.0-dev.14) (2024-03-27)

### Features

* **YouTube - Hide layout components:** Filter home/search results by keywords ([#2853](https://github.com/ReVanced/revanced-patches/issues/2853)) ([cb4b651](cb4b6514db))
2024-03-27 07:28:55 +00:00
LisoUseInAIKyrios
cb4b6514db feat(YouTube - Hide layout components): Filter home/search results by keywords (#2853)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-03-27 11:26:40 +04:00
semantic-release-bot
5a172c9deb chore(release): 4.4.0-dev.13 [skip ci]
# [4.4.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v4.4.0-dev.12...v4.4.0-dev.13) (2024-03-26)

### Bug Fixes

* **YouTube:** Move setting to correct screen ([46ff5b8](46ff5b8b92))

### Features

* **YouTube - Hide Shorts components:** Hide like and dislike buttons ([069f26d](069f26de20))
* **YouTube - Hide Shorts components:** Hide sound metadata label ([a9f418a](a9f418a19f))
* **YouTube - Hide Shorts components:** Hide title and full video link label ([5b0360c](5b0360c067))
2024-03-26 01:20:59 +00:00
oSumAtrIX
a9f418a19f feat(YouTube - Hide Shorts components): Hide sound metadata label 2024-03-26 02:18:47 +01:00
oSumAtrIX
5b0360c067 feat(YouTube - Hide Shorts components): Hide title and full video link label 2024-03-26 02:18:46 +01:00
oSumAtrIX
069f26de20 feat(YouTube - Hide Shorts components): Hide like and dislike buttons 2024-03-26 02:18:23 +01:00
oSumAtrIX
46ff5b8b92 fix(YouTube): Move setting to correct screen 2024-03-26 01:48:57 +01:00
semantic-release-bot
69721509bf chore(release): 4.4.0-dev.12 [skip ci]
# [4.4.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v4.4.0-dev.11...v4.4.0-dev.12) (2024-03-25)

### Bug Fixes

* **YouTube:** Fix video playback by switching to ReVanced GmsCore vendor ([#2907](https://github.com/ReVanced/revanced-patches/issues/2907)) ([0bd0c82](0bd0c827a4))
2024-03-25 23:35:10 +00:00
oSumAtrIX
0bd0c827a4 fix(YouTube): Fix video playback by switching to ReVanced GmsCore vendor (#2907)
The previous vendor did not update GmsCore, resulting in missing features required for playback, specifically PoToken, which was added to requests recently. Because the PoToken was missing, playback failed.
2024-03-26 00:32:59 +01:00
semantic-release-bot
cbae1383ca chore(release): 4.4.0-dev.11 [skip ci]
# [4.4.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v4.4.0-dev.10...v4.4.0-dev.11) (2024-03-25)

### Features

* **Mi Fitness:** Add `Force English locale` and `Fix login` patch ([#2734](https://github.com/ReVanced/revanced-patches/issues/2734)) ([2679fad](2679fad25f))
* **Sync for Lemmy:** Add `Disable ads` patch ([#2872](https://github.com/ReVanced/revanced-patches/issues/2872)) ([08c4468](08c4468ff1))
2024-03-25 20:55:19 +00:00
Michał Pisarski
2679fad25f feat(Mi Fitness): Add Force English locale and Fix login patch (#2734)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-03-25 21:53:23 +01:00
Lightdm
08c4468ff1 feat(Sync for Lemmy): Add Disable ads patch (#2872)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-03-25 21:52:23 +01:00
semantic-release-bot
7c981f6759 chore(release): 4.4.0-dev.10 [skip ci]
# [4.4.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v4.4.0-dev.9...v4.4.0-dev.10) (2024-03-25)

### Bug Fixes

* **YouTube - Hide ads:** Prevent app crash if hiding fullscreen ads is not possible ([#2910](https://github.com/ReVanced/revanced-patches/issues/2910)) ([2fcd786](2fcd786cc7))
2024-03-25 16:15:34 +00:00
LisoUseInAIKyrios
2fcd786cc7 fix(YouTube - Hide ads): Prevent app crash if hiding fullscreen ads is not possible (#2910)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-03-25 20:13:28 +04:00
semantic-release-bot
60ace80cbd chore(release): 4.4.0-dev.9 [skip ci]
# [4.4.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v4.4.0-dev.8...v4.4.0-dev.9) (2024-03-18)

### Bug Fixes

* **TikTok:** Hook application context earlier to prevent crash ([#2893](https://github.com/ReVanced/revanced-patches/issues/2893)) ([e6a468c](e6a468cf7a))
2024-03-18 00:23:31 +00:00
LisoUseInAIKyrios
e6a468cf7a fix(TikTok): Hook application context earlier to prevent crash (#2893) 2024-03-18 04:21:34 +04:00
semantic-release-bot
38392de4a1 chore(release): 4.4.0-dev.8 [skip ci]
# [4.4.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v4.4.0-dev.7...v4.4.0-dev.8) (2024-03-15)

### Features

* **YouTube - Downloads:** Use external downloader when selecting 'Download' in home feed flyout menu ([#2881](https://github.com/ReVanced/revanced-patches/issues/2881)) ([bc8bc8c](bc8bc8c798))
2024-03-15 12:35:13 +00:00
LisoUseInAIKyrios
bc8bc8c798 feat(YouTube - Downloads): Use external downloader when selecting 'Download' in home feed flyout menu (#2881) 2024-03-15 16:33:02 +04:00
semantic-release-bot
76805e4f31 chore(release): 4.4.0-dev.7 [skip ci]
# [4.4.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v4.4.0-dev.6...v4.4.0-dev.7) (2024-03-14)

### Bug Fixes

* **YouTube - Client spoof:** Spoof all user agents ([d18719c](d18719c59c))
2024-03-14 23:30:09 +00:00
oSumAtrIX
d18719c59c fix(YouTube - Client spoof): Spoof all user agents 2024-03-15 00:28:01 +01:00
semantic-release-bot
743a02f983 chore(release): 4.4.0-dev.6 [skip ci]
# [4.4.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v4.4.0-dev.5...v4.4.0-dev.6) (2024-03-12)

### Features

* **Instagram - Hide timeline ads:** Make compatible with latest versions ([8306f70](8306f70fd1))
2024-03-12 17:27:42 +00:00
oSumAtrIX
8306f70fd1 feat(Instagram - Hide timeline ads): Make compatible with latest versions 2024-03-12 18:25:23 +01:00
semantic-release-bot
5d71f23471 chore(release): 4.4.0-dev.5 [skip ci]
# [4.4.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v4.4.0-dev.4...v4.4.0-dev.5) (2024-03-11)

### Features

* **YouTube:** Support version `19.05`, `19.06`, `19.07`, `19.08` and `19.09` ([#2862](https://github.com/ReVanced/revanced-patches/issues/2862)) ([122ef68](122ef68a4b))
2024-03-11 13:22:02 +00:00
LisoUseInAIKyrios
122ef68a4b feat(YouTube): Support version 19.05, 19.06, 19.07, 19.08 and 19.09 (#2862) 2024-03-11 17:20:07 +04:00
semantic-release-bot
b2a7a65bc0 chore(release): 4.4.0-dev.4 [skip ci]
# [4.4.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.4.0-dev.3...v4.4.0-dev.4) (2024-03-11)

### Features

* **YouTube :** Remove `HDR auto brightness` patch ([#2863](https://github.com/ReVanced/revanced-patches/issues/2863)) ([32139f1](32139f151b))
2024-03-11 09:35:36 +00:00
LisoUseInAIKyrios
32139f151b feat(YouTube ): Remove HDR auto brightness patch (#2863)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-03-11 13:33:30 +04:00
semantic-release-bot
e55364ca87 chore(release): 4.4.0-dev.3 [skip ci]
# [4.4.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.4.0-dev.2...v4.4.0-dev.3) (2024-03-08)

### Bug Fixes

* **YouTube - Downloads:** Use new task context ([#2841](https://github.com/ReVanced/revanced-patches/issues/2841)) ([5cca421](5cca42121a))
2024-03-08 05:11:28 +00:00
LisoUseInAIKyrios
5cca42121a fix(YouTube - Downloads): Use new task context (#2841) 2024-03-08 09:09:15 +04:00
semantic-release-bot
7b0365360e chore(release): 4.4.0-dev.2 [skip ci]
# [4.4.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.4.0-dev.1...v4.4.0-dev.2) (2024-03-04)

### Features

* **YouTube - External downloader:** Add ability to use in-app download button ([7f8b7c0](7f8b7c08b2))
2024-03-04 19:38:46 +00:00
oSumAtrIX
7f8b7c08b2 feat(YouTube - External downloader): Add ability to use in-app download button 2024-03-04 20:36:25 +01:00
oSumAtrIX
058acff28c build: Set target bytecode level to JVM 11 2024-03-04 18:10:12 +01:00
semantic-release-bot
060b2c2323 chore(release): 4.4.0-dev.1 [skip ci]
# [4.4.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.3.0...v4.4.0-dev.1) (2024-03-04)

### Features

* **YouTube Vanced:** Remove `Hide ads` patch ([bcce7be](bcce7bee9a))
2024-03-04 14:01:53 +00:00
oSumAtrIX
bcce7bee9a feat(YouTube Vanced): Remove Hide ads patch 2024-03-04 14:59:32 +01:00
oSumAtrIX
d3f83230f8 build: Bump dependencies 2024-03-02 20:51:11 +01:00
semantic-release-bot
0ad377bb4c chore(release): 4.3.0 [skip ci]
# [4.3.0](https://github.com/ReVanced/revanced-patches/compare/v4.2.0...v4.3.0) (2024-03-02)

### Bug Fixes

* Compile DEX without debugging information ([afe7f06](afe7f0605e))
* **Override certificate pinning:** Always overwrite with a generic network security configuration ([16eee2f](16eee2f03f))
* Remove extra space from patch description ([#2780](https://github.com/ReVanced/revanced-patches/issues/2780)) ([a6f5dd9](a6f5dd933f))
* Use deprecated members to ensure backwards compatibility ([a6d8e42](a6d8e4210f))
* **YouTube - Spoof app version:** Remove broken versions ([#2776](https://github.com/ReVanced/revanced-patches/issues/2776)) ([2fe9060](2fe9060944))
* **YouTube - Spoof signature:** Fix tracking such as history or watch time ([f2edae2](f2edae2ac1))

### Features

* **OpeningHours:** Add `Fix crash` patch ([#2697](https://github.com/ReVanced/revanced-patches/issues/2697)) ([6742cd9](6742cd9232))
* Remove unnecessary description from patch ([348e42a](348e42a374))
* **Sync for Reddit:** Add `Fix /s/ links` patch ([0434d88](0434d8812b))
* **Twitter - Unlock downloads:** Unlock GIF downloads ([3200da8](3200da8657))
* **VSCO - Unlock pro:** Constrain to last working version ([0f7ed84](0f7ed841d1))
* **X:** Add `Open links as query` patch ([#2730](https://github.com/ReVanced/revanced-patches/issues/2730)) ([43359b9](43359b95eb))
* **YouTube - Change header:** Improve patch option description ([e775bc2](e775bc2cae))
* **YouTube - Change start page:** Add more start pages ([96f9b73](96f9b73c74))
* **YouTube - Custom branding:** Improve patch option description ([f4b888b](f4b888be56))
* **YouTube - Spoof app version:** Add target versions ([#2787](https://github.com/ReVanced/revanced-patches/issues/2787)) ([f9ae1a4](f9ae1a46d2))
* **YouTube:** Reorganize settings menu ([#2737](https://github.com/ReVanced/revanced-patches/issues/2737)) ([3b4b21f](3b4b21ff2e))
2024-03-02 18:59:36 +00:00
oSumAtrIX
9917ddd9c1 chore: Merge branch dev to main (#2707) 2024-03-02 19:57:07 +01:00
semantic-release-bot
951ebc54ca chore(release): 4.3.0-dev.13 [skip ci]
# [4.3.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v4.3.0-dev.12...v4.3.0-dev.13) (2024-03-02)

### Features

* **YouTube:** Reorganize settings menu ([#2737](https://github.com/ReVanced/revanced-patches/issues/2737)) ([3b4b21f](3b4b21ff2e))
2024-03-02 07:29:04 +00:00
LisoUseInAIKyrios
3b4b21ff2e feat(YouTube): Reorganize settings menu (#2737)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net>
Co-authored-by: dic1911 <htk030@protonmail.com>
2024-03-02 08:27:05 +01:00
semantic-release-bot
2f2ad3e584 chore(release): 4.3.0-dev.12 [skip ci]
# [4.3.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v4.3.0-dev.11...v4.3.0-dev.12) (2024-03-02)

### Features

* **YouTube - Spoof app version:** Add target versions ([#2787](https://github.com/ReVanced/revanced-patches/issues/2787)) ([f9ae1a4](f9ae1a46d2))
2024-03-02 07:12:52 +00:00
kitadai31
f9ae1a46d2 feat(YouTube - Spoof app version): Add target versions (#2787) 2024-03-02 08:10:07 +01:00
semantic-release-bot
e386313deb chore(release): 4.3.0-dev.11 [skip ci]
# [4.3.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v4.3.0-dev.10...v4.3.0-dev.11) (2024-03-02)

### Bug Fixes

* **YouTube - Spoof signature:** Fix tracking such as history or watch time ([f2edae2](f2edae2ac1))
2024-03-02 07:05:33 +00:00
oSumAtrIX
f2edae2ac1 fix(YouTube - Spoof signature): Fix tracking such as history or watch time 2024-03-02 08:03:07 +01:00
semantic-release-bot
c153979981 chore(release): 4.3.0-dev.10 [skip ci]
# [4.3.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v4.3.0-dev.9...v4.3.0-dev.10) (2024-02-29)

### Bug Fixes

* **YouTube - Spoof app version:** Remove broken versions ([#2776](https://github.com/ReVanced/revanced-patches/issues/2776)) ([2fe9060](2fe9060944))
2024-02-29 00:18:20 +00:00
oSumAtrIX
2fe9060944 fix(YouTube - Spoof app version): Remove broken versions (#2776) 2024-02-29 01:16:06 +01:00
semantic-release-bot
212a94cbb3 chore(release): 4.3.0-dev.9 [skip ci]
# [4.3.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v4.3.0-dev.8...v4.3.0-dev.9) (2024-02-28)

### Bug Fixes

* **Override certificate pinning:** Always overwrite with a generic network security configuration ([16eee2f](16eee2f03f))
2024-02-28 22:04:01 +00:00
oSumAtrIX
16eee2f03f fix(Override certificate pinning): Always overwrite with a generic network security configuration
Previously some conditional checks prevented to patch YouTube for example. The current configuration should work globally for all apps.
2024-02-28 23:01:56 +01:00
semantic-release-bot
4937fa5fbd chore(release): 4.3.0-dev.8 [skip ci]
# [4.3.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v4.3.0-dev.7...v4.3.0-dev.8) (2024-02-28)

### Bug Fixes

* Remove extra space from patch description ([#2780](https://github.com/ReVanced/revanced-patches/issues/2780)) ([a6f5dd9](a6f5dd933f))
2024-02-28 20:35:11 +00:00
KobeW50
a6f5dd933f fix: Remove extra space from patch description (#2780) 2024-02-28 21:32:55 +01:00
semantic-release-bot
97c4682ccc chore(release): 4.3.0-dev.7 [skip ci]
# [4.3.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v4.3.0-dev.6...v4.3.0-dev.7) (2024-02-26)

### Features

* **OpeningHours:** Add `Fix crash` patch ([#2697](https://github.com/ReVanced/revanced-patches/issues/2697)) ([6742cd9](6742cd9232))
2024-02-26 03:52:58 +00:00
Linus
6742cd9232 feat(OpeningHours): Add Fix crash patch (#2697)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-02-26 04:50:59 +01:00
oSumAtrIX
5b2cc10adb docs: Fix broken links 2024-02-26 04:37:44 +01:00
semantic-release-bot
dbad6252fb chore(release): 4.3.0-dev.6 [skip ci]
# [4.3.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v4.3.0-dev.5...v4.3.0-dev.6) (2024-02-25)

### Features

* **VSCO - Unlock pro:** Constrain to last working version ([0f7ed84](0f7ed841d1))
2024-02-25 18:30:14 +00:00
oSumAtrIX
0f7ed841d1 feat(VSCO - Unlock pro): Constrain to last working version 2024-02-25 19:28:12 +01:00
semantic-release-bot
d33d7d8f35 chore(release): 4.3.0-dev.5 [skip ci]
# [4.3.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v4.3.0-dev.4...v4.3.0-dev.5) (2024-02-25)

### Features

* Remove unnecessary description from patch ([348e42a](348e42a374))
* **Twitter - Unlock downloads:** Unlock GIF downloads ([3200da8](3200da8657))
2024-02-25 07:02:56 +00:00
oSumAtrIX
3200da8657 feat(Twitter - Unlock downloads): Unlock GIF downloads 2024-02-25 08:00:29 +01:00
oSumAtrIX
348e42a374 feat: Remove unnecessary description from patch 2024-02-25 06:51:51 +01:00
oSumAtrIX
cbbac445b6 chore: Rename issue templates 2024-02-25 03:37:53 +01:00
oSumAtrIX
1593d1352a ci: Fix indentation in workflow 2024-02-24 01:14:45 +01:00
oSumAtrIX
c6fedaa7bc docs: Break long lines 2024-02-23 04:12:28 +01:00
oSumAtrIX
d070aebec4 docs: Fix mistakes and wording 2024-02-23 04:12:28 +01:00
oSumAtrIX
d583256f06 docs: Remove documentation section
The documentation for patches is being moved to the ReVanced Patcher repository. The reason for this is because the documentation about how to create patches using ReVanced Patcher, belongs in the ReVanced Patcher repository, whereas documentation specific to the public API of ReVanced Patches belongs in this repository. Because the public API has no documentation yet, the section is removed until then.
2024-02-23 02:55:45 +01:00
oSumAtrIX
fc67d284f7 ci: Fix PR builds by adding missing GitHub token 2024-02-23 02:23:50 +01:00
semantic-release-bot
d3f3f81b75 chore(release): 4.3.0-dev.4 [skip ci]
# [4.3.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.3.0-dev.3...v4.3.0-dev.4) (2024-02-22)

### Bug Fixes

* Compile DEX without debugging information ([afe7f06](afe7f0605e))
* Use deprecated members to ensure backwards compatibility ([a6d8e42](a6d8e4210f))

### Features

* **X:** Add `Open links as query` patch ([#2730](https://github.com/ReVanced/revanced-patches/issues/2730)) ([43359b9](43359b95eb))
2024-02-22 00:13:48 +00:00
oSumAtrIX
8e8600c7c3 chore: Update fingerprint
The compiler of ReVanced Integrations now compiles the target method without `AccessFlags.Public`.
2024-02-22 01:11:17 +01:00
oSumAtrIX
ea33863083 ci: Do not start a Gradle daemon for PR builds
Because there are no subsequent builds, a daemon is not necessary
2024-02-22 01:10:09 +01:00
oSumAtrIX
a6d8e4210f fix: Use deprecated members to ensure backwards compatibility
By migrating to early to new APIs of ReVanced Patcher, if you were to use old versions of ReVanced Patcher, you would get compatibility issues. By using deprecated members until most have updated ReVanced Patcher, we can ensure seamless migration.
2024-02-22 01:10:09 +01:00
oSumAtrIX
1e3356808d ci: Split release into a separate PR build workflow
Because the release workflow already runs on dev and main, it is not necessary to also trigger it for PRs.
2024-02-22 01:07:05 +01:00
dic1911
43359b95eb feat(X): Add Open links as query patch (#2730)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-02-22 01:07:05 +01:00
oSumAtrIX
afe7f0605e fix: Compile DEX without debugging information 2024-02-21 04:15:38 +01:00
oSumAtrIX
8916789f7a build: Publish to GitHub Packages 2024-02-21 04:15:38 +01:00
oSumAtrIX
0d14aa1191 build: Sign release artifacts 2024-02-21 04:15:38 +01:00
oSumAtrIX
376dda6e81 build: Bump dependencies
This commit also migrates away from deprecated to new APIs
2024-02-21 04:07:32 +01:00
semantic-release-bot
ff8b58b645 chore(release): 4.3.0-dev.3 [skip ci]
# [4.3.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.3.0-dev.2...v4.3.0-dev.3) (2024-02-20)

### Features

* **YouTube - Change header:** Improve patch option description ([e775bc2](e775bc2cae))
* **YouTube - Custom branding:** Improve patch option description ([f4b888b](f4b888be56))
2024-02-20 21:43:11 +00:00
oSumAtrIX
f4b888be56 feat(YouTube - Custom branding): Improve patch option description 2024-02-20 22:41:06 +01:00
oSumAtrIX
e775bc2cae feat(YouTube - Change header): Improve patch option description 2024-02-20 22:41:06 +01:00
oSumAtrIX
5c566753a8 build: Bump dependencies 2024-02-14 02:44:25 +01:00
oSumAtrIX
968ebf9f50 build: Bump Gradle 2024-02-14 02:41:21 +01:00
oSumAtrIX
75c510d876 chore: Fix ReplaceWith of Deprecated annotation 2024-02-13 03:27:03 +01:00
oSumAtrIX
72528cb2f1 chore: Remove dummy subproject
It is not necessary anymore
2024-02-13 02:58:24 +01:00
oSumAtrIX
81d79111cf chore: Add .editorconfig 2024-02-13 02:55:07 +01:00
oSumAtrIX
33036092b4 build: Bump dependencies 2024-02-13 02:54:40 +01:00
semantic-release-bot
f5f88092b6 chore(release): 4.3.0-dev.2 [skip ci]
# [4.3.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.3.0-dev.1...v4.3.0-dev.2) (2024-02-09)

### Features

* **Sync for Reddit:** Add `Fix /s/ links` patch ([0434d88](0434d8812b))
2024-02-09 02:47:31 +00:00
oSumAtrIX
0434d8812b feat(Sync for Reddit): Add Fix /s/ links patch 2024-02-09 03:45:37 +01:00
semantic-release-bot
ec38b8e51c chore(release): 4.3.0-dev.1 [skip ci]
# [4.3.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.2.0...v4.3.0-dev.1) (2024-02-09)

### Features

* **YouTube - Change start page:** Add more start pages ([96f9b73](96f9b73c74))
2024-02-09 00:17:34 +00:00
oSumAtrIX
96f9b73c74 feat(YouTube - Change start page): Add more start pages 2024-02-09 00:50:16 +01:00
semantic-release-bot
1502fe1f7f chore(release): 4.2.0 [skip ci]
# [4.2.0](https://github.com/ReVanced/revanced-patches/compare/v4.1.0...v4.2.0) (2024-02-08)

### Bug Fixes

* **Infinity for Reddit - Unlock subscription:** Do not crash by patching billing client ([53b29ea](53b29ea270))

### Features

* **X:** Add `Hide view count` patch ([1bf9582](1bf9582437))
* **X:** Add `Unlock downloads` patch ([3343b5c](3343b5cb12))
2024-02-08 19:17:40 +00:00
oSumAtrIX
824d094394 chore: Merge branch dev to main (#2693) 2024-02-08 20:15:32 +01:00
semantic-release-bot
010471a745 chore(release): 4.2.0-dev.1 [skip ci]
# [4.2.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.1.1-dev.1...v4.2.0-dev.1) (2024-02-08)

### Features

* **X:** Add `Hide view count` patch ([1bf9582](1bf9582437))
* **X:** Add `Unlock downloads` patch ([3343b5c](3343b5cb12))
2024-02-08 19:13:57 +00:00
oSumAtrIX
3343b5cb12 feat(X): Add Unlock downloads patch 2024-02-08 20:11:18 +01:00
oSumAtrIX
1bf9582437 feat(X): Add Hide view count patch 2024-02-08 20:08:44 +01:00
semantic-release-bot
ea09d4b520 chore(release): 4.1.1-dev.1 [skip ci]
## [4.1.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.1.0...v4.1.1-dev.1) (2024-02-07)

### Bug Fixes

* **Infinity for Reddit - Unlock subscription:** Do not crash by patching billing client ([53b29ea](53b29ea270))
2024-02-07 15:19:04 +00:00
oSumAtrIX
53b29ea270 fix(Infinity for Reddit - Unlock subscription): Do not crash by patching billing client 2024-02-07 16:16:33 +01:00
oSumAtrIX
fd11e2b969 chore: Fix typo in README 2024-02-05 23:24:05 +01:00
semantic-release-bot
65a32ee52e chore(release): 4.1.0 [skip ci]
# [4.1.0](https://github.com/ReVanced/revanced-patches/compare/v4.0.2...v4.1.0) (2024-02-05)

### Bug Fixes

* **Infinity for Reddit - Unlock subscription:** Restore functionality on v7.0.0 ([2c50c25](2c50c25a36))
* **YouTube:** Correctly show channel page on tablet devices ([#2656](https://github.com/ReVanced/revanced-patches/issues/2656)) ([047069c](047069ca8a))

### Features

* **YouTube - Custom filter:** Custom filtering of the protocol buffer ([#2682](https://github.com/ReVanced/revanced-patches/issues/2682)) ([19a9d11](19a9d113d9))
* **YouTube:** Support version `19.04.37` ([#2687](https://github.com/ReVanced/revanced-patches/issues/2687)) ([8b1cdd5](8b1cdd5c6a))
2024-02-05 19:26:27 +00:00
oSumAtrIX
7b2e32d88c chore: Merge branch dev to main (#2657) 2024-02-05 20:24:31 +01:00
semantic-release-bot
f18edb262d chore(release): 4.1.0-dev.2 [skip ci]
# [4.1.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.1.0-dev.1...v4.1.0-dev.2) (2024-02-04)

### Features

* **YouTube:** Support version `19.04.37` ([#2687](https://github.com/ReVanced/revanced-patches/issues/2687)) ([8b1cdd5](8b1cdd5c6a))
2024-02-04 17:40:14 +00:00
LisoUseInAIKyrios
8b1cdd5c6a feat(YouTube): Support version 19.04.37 (#2687) 2024-02-04 21:38:19 +04:00
semantic-release-bot
3bd41fb67f chore(release): 4.1.0-dev.1 [skip ci]
# [4.1.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.0.3-dev.2...v4.1.0-dev.1) (2024-02-02)

### Features

* **YouTube - Custom filter:** Custom filtering of the protocol buffer ([#2682](https://github.com/ReVanced/revanced-patches/issues/2682)) ([19a9d11](19a9d113d9))
2024-02-02 08:17:53 +00:00
LisoUseInAIKyrios
19a9d113d9 feat(YouTube - Custom filter): Custom filtering of the protocol buffer (#2682) 2024-02-02 12:15:34 +04:00
semantic-release-bot
61ee51b856 chore(release): 4.0.3-dev.2 [skip ci]
## [4.0.3-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.0.3-dev.1...v4.0.3-dev.2) (2024-02-01)

### Bug Fixes

* **Infinity for Reddit - Unlock subscription:** Restore functionality on v7.0.0 ([2c50c25](2c50c25a36))
2024-02-01 23:12:20 +00:00
oSumAtrIX
2c50c25a36 fix(Infinity for Reddit - Unlock subscription): Restore functionality on v7.0.0 2024-02-02 00:10:00 +01:00
oSumAtrIX
f5e7bf6e98 docs: Fix feature request template mentioning bug report template 2024-01-31 11:10:07 +01:00
LisoUseInAIKyrios
bba35d5cb5 chore: fix patch typo in WideSearchbarPatch 2024-01-29 17:31:57 +04:00
semantic-release-bot
1be4f4cf55 chore(release): 4.0.3-dev.1 [skip ci]
## [4.0.3-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.0.2...v4.0.3-dev.1) (2024-01-28)

### Bug Fixes

* **YouTube:** Correctly show channel page on tablet devices ([#2656](https://github.com/ReVanced/revanced-patches/issues/2656)) ([047069c](047069ca8a))
2024-01-28 11:58:42 +00:00
LisoUseInAIKyrios
047069ca8a fix(YouTube): Correctly show channel page on tablet devices (#2656)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-01-28 12:56:42 +01:00
semantic-release-bot
7bfdd8bc59 chore(release): 4.0.2 [skip ci]
## [4.0.2](https://github.com/ReVanced/revanced-patches/compare/v4.0.1...v4.0.2) (2024-01-28)

### Bug Fixes

* **Twitch:** Correct patch resources to fix build ([bbed64f](bbed64fd4b))
* **YouTube:** Do not crash on startup for root installs ([#2655](https://github.com/ReVanced/revanced-patches/issues/2655)) ([663acf0](663acf0bc5))
2024-01-28 10:52:31 +00:00
oSumAtrIX
b8cb735291 chore: Merge branch dev to main (#2649) 2024-01-28 11:50:19 +01:00
semantic-release-bot
c86f0a249f chore(release): 4.0.2-dev.2 [skip ci]
## [4.0.2-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.0.2-dev.1...v4.0.2-dev.2) (2024-01-28)

### Bug Fixes

* **YouTube:** Do not crash on startup for root installs ([#2655](https://github.com/ReVanced/revanced-patches/issues/2655)) ([663acf0](663acf0bc5))
2024-01-28 10:49:16 +00:00
LisoUseInAIKyrios
663acf0bc5 fix(YouTube): Do not crash on startup for root installs (#2655) 2024-01-28 14:47:01 +04:00
LisoUseInAIKyrios
6f92659277 chore: fix typo 2024-01-27 23:13:34 +04:00
semantic-release-bot
7cb8af6a16 chore(release): 4.0.2-dev.1 [skip ci]
## [4.0.2-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.0.1...v4.0.2-dev.1) (2024-01-27)

### Bug Fixes

* **Twitch:** Correct patch resources to fix build ([bbed64f](bbed64fd4b))
2024-01-27 14:37:12 +00:00
oSumAtrIX
bbed64fd4b fix(Twitch): Correct patch resources to fix build 2024-01-27 15:35:12 +01:00
semantic-release-bot
acee384a90 chore(release): 4.0.1 [skip ci]
## [4.0.1](https://github.com/ReVanced/revanced-patches/compare/v4.0.0...v4.0.1) (2024-01-27)

### Bug Fixes

* Indent patch option description correctly ([ec3371f](ec3371ffb5))
* Only set Android key if not null to prevent build errors ([6ecf53f](6ecf53fd8f))
2024-01-27 03:13:48 +00:00
oSumAtrIX
1d7d31e979 chore: Merge branch dev to main (#2644) 2024-01-27 04:11:54 +01:00
semantic-release-bot
781b8e2d40 chore(release): 4.0.1-dev.2 [skip ci]
## [4.0.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.0.1-dev.1...v4.0.1-dev.2) (2024-01-27)

### Bug Fixes

* Only set Android key if not null to prevent build errors ([6ecf53f](6ecf53fd8f))
2024-01-27 03:05:00 +00:00
oSumAtrIX
6ecf53fd8f fix: Only set Android key if not null to prevent build errors 2024-01-27 04:03:09 +01:00
semantic-release-bot
8c2f895e52 chore(release): 4.0.1-dev.1 [skip ci]
## [4.0.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.0.0...v4.0.1-dev.1) (2024-01-27)

### Bug Fixes

* Indent patch option description correctly ([ec3371f](ec3371ffb5))
2024-01-27 02:30:51 +00:00
oSumAtrIX
ec3371ffb5 fix: Indent patch option description correctly 2024-01-27 03:29:04 +01:00
semantic-release-bot
44e36fead6 chore(release): 4.0.0 [skip ci]
# [4.0.0](https://github.com/ReVanced/revanced-patches/compare/v3.2.0...v4.0.0) (2024-01-27)

### Bug Fixes

* Use new integrations patch path ([784aa2f](784aa2f246))
* **YouTube - Change header:** Improve patch descriptions ([#2581](https://github.com/ReVanced/revanced-patches/issues/2581)) ([62c9085](62c9085096))
* **YouTube - Enable slide to seek:** Change patch default to excluded and add description disclaimer ([#2610](https://github.com/ReVanced/revanced-patches/issues/2610)) ([08c3079](08c30791ae))
* **YouTube:** Shorten setting titles to fit on screen ([#2579](https://github.com/ReVanced/revanced-patches/issues/2579)) ([861e9a3](861e9a399e))

### Code Refactoring

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

### Features

* **Change package name:** Mention caveat of the patch in the description ([9e79e9e](9e79e9e72c))
* **ID Austria:** Remove constraint on any version ([#2526](https://github.com/ReVanced/revanced-patches/issues/2526)) ([5ba5926](5ba59261f2))
* Move strings to resources for localization ([#2440](https://github.com/ReVanced/revanced-patches/issues/2440)) ([55fb1eb](55fb1ebd9d))
* **MyFitnessPal:** Add `Hide ads` patch ([#2594](https://github.com/ReVanced/revanced-patches/issues/2594)) ([9633b4e](9633b4eef0))
* **Photomath:** Add `Hide update popup` patch ([#2637](https://github.com/ReVanced/revanced-patches/issues/2637)) ([3182471](31824713d7))
* **Tiktok - Playback speed:** Remember playback speed ([#2506](https://github.com/ReVanced/revanced-patches/issues/2506)) ([806e944](806e94481c))
* **YouTube - Change header:** Change to ReVanced borderless logo header by default ([#2512](https://github.com/ReVanced/revanced-patches/issues/2512)) ([60d70e5](60d70e5877))
* **YouTube - Spoof app version:** Add `18.09.39` to restore library tab ([#2643](https://github.com/ReVanced/revanced-patches/issues/2643)) ([d28d9f1](d28d9f13bc))
* **YouTube:** Improve patch descriptions ([#2519](https://github.com/ReVanced/revanced-patches/issues/2519)) ([14e2c07](14e2c07329))
* **YouTube:** Support version `19.02.34` ([#2627](https://github.com/ReVanced/revanced-patches/issues/2627)) ([126fe48](126fe48ce6))
* **YouTube:** Support version `19.03.35` ([#2640](https://github.com/ReVanced/revanced-patches/issues/2640)) ([eac360e](eac360ee7c))
* **YouTube:** Support versions `18.48.39`, `18.49.37` and `19.01.34` ([#2551](https://github.com/ReVanced/revanced-patches/issues/2551)) ([aca1dd6](aca1dd6074))

### BREAKING CHANGES

* **Photomath:** Some packages have changed locations.
* Various APIs have been changed.
* Various public APIs have changed names and packages or were removed entirely
2024-01-27 02:11:26 +00:00
oSumAtrIX
3b0ecdd7a7 chore: Merge branch dev to main (#2554) 2024-01-27 03:09:30 +01:00
semantic-release-bot
279ac0dc28 chore(release): 4.0.0-dev.15 [skip ci]
# [4.0.0-dev.15](https://github.com/ReVanced/revanced-patches/compare/v4.0.0-dev.14...v4.0.0-dev.15) (2024-01-27)

### Features

* **Photomath:** Add `Hide update popup` patch ([#2637](https://github.com/ReVanced/revanced-patches/issues/2637)) ([3182471](31824713d7))

### BREAKING CHANGES

* **Photomath:** Some packages have changed locations.
2024-01-27 01:59:36 +00:00
Marko
31824713d7 feat(Photomath): Add Hide update popup patch (#2637)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>

BREAKING CHANGE: Some packages have changed locations.
2024-01-27 02:57:22 +01:00
semantic-release-bot
be6a35fde6 chore(release): 4.0.0-dev.14 [skip ci]
# [4.0.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v4.0.0-dev.13...v4.0.0-dev.14) (2024-01-27)

### Features

* **YouTube - Spoof app version:** Add `18.09.39` to restore library tab ([#2643](https://github.com/ReVanced/revanced-patches/issues/2643)) ([d28d9f1](d28d9f13bc))
2024-01-27 01:44:35 +00:00
LisoUseInAIKyrios
d28d9f13bc feat(YouTube - Spoof app version): Add 18.09.39 to restore library tab (#2643)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-01-27 05:42:18 +04:00
semantic-release-bot
2295ce5e9d chore(release): 4.0.0-dev.13 [skip ci]
# [4.0.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v4.0.0-dev.12...v4.0.0-dev.13) (2024-01-27)

### Features

* Move strings to resources for localization ([#2440](https://github.com/ReVanced/revanced-patches/issues/2440)) ([55fb1eb](55fb1ebd9d))

### BREAKING CHANGES

* Various APIs have been changed.
2024-01-27 01:36:04 +00:00
LisoUseInAIKyrios
55fb1ebd9d feat: Move strings to resources for localization (#2440)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net>
Co-authored-by: Aunali321 <aunvakil.aa@gmail.com>

BREAKING CHANGE: Various APIs have been changed.
2024-01-27 02:34:01 +01:00
oSumAtrIX
15a83a6d28 ci: Use latest Node.js LTS version to fix builds 2024-01-26 22:52:37 +01:00
oSumAtrIX
9ea58bf185 build: Bump dependencies 2024-01-26 01:42:03 +01:00
semantic-release-bot
11d6eca36e chore(release): 4.0.0-dev.12 [skip ci]
# [4.0.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v4.0.0-dev.11...v4.0.0-dev.12) (2024-01-24)

### Features

* **YouTube:** Support version `19.03.35` ([#2640](https://github.com/ReVanced/revanced-patches/issues/2640)) ([eac360e](eac360ee7c))
2024-01-24 13:21:05 +00:00
LisoUseInAIKyrios
eac360ee7c feat(YouTube): Support version 19.03.35 (#2640) 2024-01-24 17:19:02 +04:00
semantic-release-bot
9acf15f571 chore(release): 4.0.0-dev.11 [skip ci]
# [4.0.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v4.0.0-dev.10...v4.0.0-dev.11) (2024-01-17)

### Features

* **YouTube:** Support version `19.02.34` ([#2627](https://github.com/ReVanced/revanced-patches/issues/2627)) ([126fe48](126fe48ce6))
2024-01-17 20:27:00 +00:00
LisoUseInAIKyrios
126fe48ce6 feat(YouTube): Support version 19.02.34 (#2627) 2024-01-18 00:24:55 +04:00
semantic-release-bot
32d2037083 chore(release): 4.0.0-dev.10 [skip ci]
# [4.0.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v4.0.0-dev.9...v4.0.0-dev.10) (2024-01-16)

### Features

* **YouTube:** Support versions `18.48.39`, `18.49.37` and `19.01.34` ([#2551](https://github.com/ReVanced/revanced-patches/issues/2551)) ([aca1dd6](aca1dd6074))
2024-01-16 18:56:13 +00:00
oSumAtrIX
aca1dd6074 feat(YouTube): Support versions 18.48.39, 18.49.37 and 19.01.34 (#2551)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2024-01-16 19:54:06 +01:00
semantic-release-bot
30c6749f61 chore(release): 4.0.0-dev.9 [skip ci]
# [4.0.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v4.0.0-dev.8...v4.0.0-dev.9) (2024-01-11)

### Bug Fixes

* **YouTube - Enable slide to seek:** Change patch default to excluded and add description disclaimer ([#2610](https://github.com/ReVanced/revanced-patches/issues/2610)) ([08c3079](08c30791ae))
2024-01-11 14:56:11 +00:00
LisoUseInAIKyrios
08c30791ae fix(YouTube - Enable slide to seek): Change patch default to excluded and add description disclaimer (#2610) 2024-01-11 15:54:10 +01:00
semantic-release-bot
002f11a854 chore(release): 4.0.0-dev.8 [skip ci]
# [4.0.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v4.0.0-dev.7...v4.0.0-dev.8) (2024-01-10)

### Bug Fixes

* **YouTube:** Shorten setting titles to fit on screen ([#2579](https://github.com/ReVanced/revanced-patches/issues/2579)) ([861e9a3](861e9a399e))
2024-01-10 11:28:55 +00:00
KobeW50
861e9a399e fix(YouTube): Shorten setting titles to fit on screen (#2579) 2024-01-10 15:26:24 +04:00
oSumAtrIX
795aee13e4 build: Bump dependencies 2024-01-10 09:33:02 +01:00
semantic-release-bot
09f29e6119 chore(release): 4.0.0-dev.7 [skip ci]
# [4.0.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v4.0.0-dev.6...v4.0.0-dev.7) (2024-01-10)

### Bug Fixes

* Use new integrations patch path ([784aa2f](784aa2f246))
2024-01-10 08:16:50 +00:00
oSumAtrIX
784aa2f246 fix: Use new integrations patch path 2024-01-10 09:14:12 +01:00
oSumAtrIX
4ddd5a0b8f chore: Update CI dependencies 2024-01-09 20:14:14 +01:00
semantic-release-bot
1482e7e1e8 chore(release): 4.0.0-dev.6 [skip ci]
# [4.0.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v4.0.0-dev.5...v4.0.0-dev.6) (2024-01-09)

### Features

* **Tiktok - Playback speed:** Remember playback speed ([#2506](https://github.com/ReVanced/revanced-patches/issues/2506)) ([806e944](806e94481c))
2024-01-09 19:12:34 +00:00
d4rkk3y
806e94481c feat(Tiktok - Playback speed): Remember playback speed (#2506)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-01-09 20:10:29 +01:00
semantic-release-bot
edcb6eac6d chore(release): 4.0.0-dev.5 [skip ci]
# [4.0.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v4.0.0-dev.4...v4.0.0-dev.5) (2024-01-09)

### Bug Fixes

* **YouTube - Change header:** Improve patch descriptions ([#2581](https://github.com/ReVanced/revanced-patches/issues/2581)) ([62c9085](62c9085096))
2024-01-09 19:09:58 +00:00
LisoUseInAIKyrios
4dced95d54 refactor(YouTube - Return YouTube Dislike): Make patch more robust by removing opcode patterns from fingerprints (#2602) 2024-01-09 23:08:01 +04:00
KobeW50
62c9085096 fix(YouTube - Change header): Improve patch descriptions (#2581) 2024-01-09 20:07:11 +01:00
semantic-release-bot
50a9f09703 chore(release): 4.0.0-dev.4 [skip ci]
# [4.0.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v4.0.0-dev.3...v4.0.0-dev.4) (2024-01-09)

### Features

* **MyFitnessPal:** Add `Hide ads` patch ([#2594](https://github.com/ReVanced/revanced-patches/issues/2594)) ([9633b4e](9633b4eef0))
2024-01-09 17:28:21 +00:00
mrwedders
9633b4eef0 feat(MyFitnessPal): Add Hide ads patch (#2594)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-01-09 18:26:15 +01:00
semantic-release-bot
2a94ad681c chore(release): 4.0.0-dev.3 [skip ci]
# [4.0.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v4.0.0-dev.2...v4.0.0-dev.3) (2024-01-09)

### Features

* **Change package name:** Mention caveat of the patch in the description ([9e79e9e](9e79e9e72c))
2024-01-09 15:41:21 +00:00
oSumAtrIX
9e79e9e72c feat(Change package name): Mention caveat of the patch in the description 2024-01-09 16:39:23 +01:00
LisoUseInAIKyrios
429badef1a fix:(YouTube - Spoof app version): Adjust spoof target description (#2578) 2024-01-03 19:14:32 +04:00
semantic-release-bot
138b2f8960 chore(release): 4.0.0-dev.2 [skip ci]
# [4.0.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v4.0.0-dev.1...v4.0.0-dev.2) (2024-01-02)

### Features

* **YouTube - Change header:** Change to ReVanced borderless logo header by default ([#2512](https://github.com/ReVanced/revanced-patches/issues/2512)) ([60d70e5](60d70e5877))
2024-01-02 14:36:22 +00:00
oSumAtrIX
60d70e5877 feat(YouTube - Change header): Change to ReVanced borderless logo header by default (#2512)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2024-01-02 15:34:20 +01:00
semantic-release-bot
2debdc1056 chore(release): 4.0.0-dev.1 [skip ci]
# [4.0.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v3.3.0-dev.2...v4.0.0-dev.1) (2024-01-01)

### Code Refactoring

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

### BREAKING CHANGES

* Various public APIs have changed names and packages or were removed entirely
2024-01-01 15:35:13 +00:00
oSumAtrIX
ad1ea4661f refactor: Fix package and code structure (#2541)
BREAKING CHANGE: Various public APIs have changed names and packages or were removed entirely
2024-01-01 16:33:07 +01:00
semantic-release-bot
eac46ca216 chore(release): 3.3.0-dev.2 [skip ci]
# [3.3.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v3.3.0-dev.1...v3.3.0-dev.2) (2024-01-01)

### Features

* **YouTube:** Improve patch descriptions ([#2519](https://github.com/ReVanced/revanced-patches/issues/2519)) ([14e2c07](14e2c07329))
2024-01-01 15:31:56 +00:00
KobeW50
14e2c07329 feat(YouTube): Improve patch descriptions (#2519) 2024-01-01 16:30:04 +01:00
Caner Karaca
9175e50f5d ci: Target branch dev for Dependabot (#2564) 2023-12-29 19:29:54 +01:00
dependabot[bot]
2318c0811f build(deps): bump com.google.guava:guava from 32.1.3-jre to 33.0.0-jre (#2552)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-29 19:15:24 +01:00
dependabot[bot]
bc44eb710d build(deps): bump jvm from 1.9.21 to 1.9.22 (#2553)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-29 19:15:18 +01:00
oSumAtrIX
4bb86f9ec6 ci: Do not use any label for Dependabot 2023-12-28 22:52:17 +01:00
semantic-release-bot
387ceef6cd chore(release): 3.3.0-dev.1 [skip ci]
# [3.3.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v3.2.0...v3.3.0-dev.1) (2023-12-28)

### Features

* **ID Austria:** Remove constraint on any version ([#2526](https://github.com/ReVanced/revanced-patches/issues/2526)) ([5ba5926](5ba59261f2))
2023-12-28 21:40:18 +00:00
1fexd
5ba59261f2 feat(ID Austria): Remove constraint on any version (#2526) 2023-12-28 22:38:30 +01:00
semantic-release-bot
a89ab13949 chore(release): 3.2.0 [skip ci]
# [3.2.0](https://github.com/ReVanced/revanced-patches/compare/v3.1.0...v3.2.0) (2023-12-28)

### Bug Fixes

* **Spoof SIM country:** Validate patch option value correctly ([4fd77b1](4fd77b130a))
* **Tiktok - Remember clear display:** Use correct name ([2c83b86](2c83b86297))
* **YouTube - Alternative thumbnails:** Clarify DeArrow support is for thumbnails ([#2531](https://github.com/ReVanced/revanced-patches/issues/2531)) ([47f2de4](47f2de4bc8))
* **YouTube - SponsorBlock:** Export local statistics with saved settings ([b9ee462](b9ee4625b6))
* **YouTube:** Fix grammer mistakes in patch descriptions ([#2543](https://github.com/ReVanced/revanced-patches/issues/2543)) ([9148bdf](9148bdfd1c))

### Features

* **Public API:** Deprecate `HideEmailAddressPatch` ([8ad9d7d](8ad9d7dedd))
* **Public API:** Make `BottomControlsResource#addControls` public ([#2514](https://github.com/ReVanced/revanced-patches/issues/2514)) ([26565fd](26565fdb91))
* **Tiktok:** Add `Remember clear mode` patch ([#2509](https://github.com/ReVanced/revanced-patches/issues/2509)) ([fcacd0f](fcacd0f30d))
* **YouTube - Hide ads:** Hide fullscreen ads ([b12a14c](b12a14c4d0))
* **YouTube - Hide layout components:** Hide search result recommendations ([4408209](44082095ba))
* **YouTube - Theme:** Add classic dark color to presets ([#2542](https://github.com/ReVanced/revanced-patches/issues/2542)) ([1ecb6b2](1ecb6b2a6c))
* **YouTube:** Add `Remove viewer discretion dialog` patch ([21136d7](21136d76cd))
* **YouTube:** Remove `Hide email address` patch ([b81c999](b81c99920b))
2023-12-28 21:32:40 +00:00
oSumAtrIX
ef3932c8e6 chore: Merge branch dev to main 2023-12-28 22:30:37 +01:00
semantic-release-bot
9d3dd4d50a chore(release): 3.2.0-dev.9 [skip ci]
# [3.2.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v3.2.0-dev.8...v3.2.0-dev.9) (2023-12-27)

### Features

* **YouTube - Theme:** Add classic dark color to presets ([#2542](https://github.com/ReVanced/revanced-patches/issues/2542)) ([1ecb6b2](1ecb6b2a6c))
* **YouTube:** Add `Remove viewer discretion dialog` patch ([21136d7](21136d76cd))
2023-12-27 04:43:49 +00:00
kitadai31
1ecb6b2a6c feat(YouTube - Theme): Add classic dark color to presets (#2542)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-12-27 05:41:52 +01:00
oSumAtrIX
21136d76cd feat(YouTube): Add Remove viewer discretion dialog patch 2023-12-27 05:39:27 +01:00
semantic-release-bot
c4b3d0fde0 chore(release): 3.2.0-dev.8 [skip ci]
# [3.2.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v3.2.0-dev.7...v3.2.0-dev.8) (2023-12-26)

### Bug Fixes

* **YouTube:** Fix grammer mistakes in patch descriptions ([#2543](https://github.com/ReVanced/revanced-patches/issues/2543)) ([9148bdf](9148bdfd1c))
2023-12-26 23:10:12 +00:00
KobeW50
9148bdfd1c fix(YouTube): Fix grammer mistakes in patch descriptions (#2543) 2023-12-27 00:08:15 +01:00
semantic-release-bot
e2b2b7424b chore(release): 3.2.0-dev.7 [skip ci]
# [3.2.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v3.2.0-dev.6...v3.2.0-dev.7) (2023-12-24)

### Features

* **YouTube - Hide ads:** Hide fullscreen ads ([b12a14c](b12a14c4d0))
* **YouTube - Hide layout components:** Hide search result recommendations ([4408209](44082095ba))
2023-12-24 17:40:36 +00:00
oSumAtrIX
b12a14c4d0 feat(YouTube - Hide ads): Hide fullscreen ads 2023-12-24 18:38:34 +01:00
oSumAtrIX
44082095ba feat(YouTube - Hide layout components): Hide search result recommendations 2023-12-24 18:07:01 +01:00
semantic-release-bot
987e4e7e91 chore(release): 3.2.0-dev.6 [skip ci]
# [3.2.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v3.2.0-dev.5...v3.2.0-dev.6) (2023-12-24)

### Bug Fixes

* **Spoof SIM country:** Validate patch option value correctly ([4fd77b1](4fd77b130a))
2023-12-24 12:41:57 +00:00
oSumAtrIX
4fd77b130a fix(Spoof SIM country): Validate patch option value correctly 2023-12-24 13:39:59 +01:00
semantic-release-bot
47aa56a06e chore(release): 3.2.0-dev.5 [skip ci]
# [3.2.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v3.2.0-dev.4...v3.2.0-dev.5) (2023-12-23)

### Bug Fixes

* **YouTube - Alternative thumbnails:** Clarify DeArrow support is for thumbnails ([#2531](https://github.com/ReVanced/revanced-patches/issues/2531)) ([47f2de4](47f2de4bc8))
2023-12-23 07:49:58 +00:00
Ajay Ramachandran
47f2de4bc8 fix(YouTube - Alternative thumbnails): Clarify DeArrow support is for thumbnails (#2531) 2023-12-23 11:48:06 +04:00
oSumAtrIX
36b929c3b3 refactor(Spoof SIM country): Use existing function to register patch option 2023-12-22 03:30:27 +01:00
oSumAtrIX
7109d8e088 refactor(Spoof SIM country): Reduce code duplication 2023-12-22 03:20:55 +01:00
semantic-release-bot
c91df0f29c chore(release): 3.2.0-dev.4 [skip ci]
# [3.2.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v3.2.0-dev.3...v3.2.0-dev.4) (2023-12-21)

### Bug Fixes

* **Tiktok - Remember clear display:** Use correct name ([2c83b86](2c83b86297))
2023-12-21 14:34:43 +00:00
oSumAtrIX
2c83b86297 fix(Tiktok - Remember clear display): Use correct name 2023-12-21 15:32:18 +01:00
semantic-release-bot
5ceda29fce chore(release): 3.2.0-dev.3 [skip ci]
# [3.2.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v3.2.0-dev.2...v3.2.0-dev.3) (2023-12-21)

### Features

* **Tiktok:** Add `Remember clear mode` patch ([#2509](https://github.com/ReVanced/revanced-patches/issues/2509)) ([fcacd0f](fcacd0f30d))
2023-12-21 14:26:26 +00:00
d4rkk3y
fcacd0f30d feat(Tiktok): Add Remember clear mode patch (#2509)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-12-21 15:24:23 +01:00
semantic-release-bot
4f0c756b36 chore(release): 3.2.0-dev.2 [skip ci]
# [3.2.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v3.2.0-dev.1...v3.2.0-dev.2) (2023-12-19)

### Features

* **Public API:** Deprecate `HideEmailAddressPatch` ([8ad9d7d](8ad9d7dedd))
* **YouTube:** Remove `Hide email address` patch ([b81c999](b81c99920b))
2023-12-19 17:51:13 +00:00
oSumAtrIX
8ad9d7dedd feat(Public API): Deprecate HideEmailAddressPatch 2023-12-19 18:48:58 +01:00
oSumAtrIX
b81c99920b feat(YouTube): Remove Hide email address patch 2023-12-19 18:48:26 +01:00
semantic-release-bot
cfb23652e1 chore(release): 3.2.0-dev.1 [skip ci]
# [3.2.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v3.1.0...v3.2.0-dev.1) (2023-12-18)

### Bug Fixes

* **YouTube - SponsorBlock:** Export local statistics with saved settings ([b9ee462](b9ee4625b6))

### Features

* **Public API:** Make `BottomControlsResource#addControls` public ([#2514](https://github.com/ReVanced/revanced-patches/issues/2514)) ([26565fd](26565fdb91))
2023-12-18 19:08:19 +00:00
Aunali321
26565fdb91 feat(Public API): Make BottomControlsResource#addControls public (#2514)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-12-18 20:06:20 +01:00
Caner Karaca
5a14b17338 build: Automate bumping dependencies (#2436)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-12-17 20:22:03 +01:00
LisoUseInAIKyrios
b9ee4625b6 fix(YouTube - SponsorBlock): Export local statistics with saved settings 2023-12-16 15:23:58 +04:00
oSumAtrIX
7a98270e4a chore: Fix grammar in task description 2023-12-14 01:14:49 +01:00
semantic-release-bot
5633048550 chore(release): 3.1.0 [skip ci]
# [3.1.0](https://github.com/ReVanced/revanced-patches/compare/v3.0.1...v3.1.0) (2023-12-12)

### Bug Fixes

* **Boost for Reddit - Spoof client:** Fix account login by removing user agent patch ([0f829ed](0f829ed747))
* Solve build errors by using correct syntax ([40684cd](40684cd1fe))
* **Sync for Reddit - Spoof client:** Fix account login by removing user agent patch ([c10956b](c10956ba14))

### Features

* **IconPackStudio - Unlock pro:** Constrain to last working version ([#3410](https://github.com/ReVanced/revanced-patches/issues/3410)) ([36fc818](36fc818f90))
2023-12-12 22:18:18 +00:00
oSumAtrIX
49c5e16c2e chore: Merge branch dev to main (#3407) 2023-12-12 23:16:25 +01:00
semantic-release-bot
a46f9ddd2d chore(release): 3.1.0-dev.1 [skip ci]
# [3.1.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v3.0.1...v3.1.0-dev.1) (2023-12-12)

### Bug Fixes

* **Boost for Reddit - Spoof client:** Fix account login by removing user agent patch ([0f829ed](0f829ed747))
* Solve build errors by using correct syntax ([40684cd](40684cd1fe))
* **Sync for Reddit - Spoof client:** Fix account login by removing user agent patch ([c10956b](c10956ba14))

### Features

* **IconPackStudio - Unlock pro:** Constrain to last working version ([#3410](https://github.com/ReVanced/revanced-patches/issues/3410)) ([36fc818](36fc818f90))
2023-12-12 22:02:36 +00:00
oSumAtrIX
40684cd1fe fix: Solve build errors by using correct syntax 2023-12-12 23:00:28 +01:00
oSumAtrIX
0f829ed747 fix(Boost for Reddit - Spoof client): Fix account login by removing user agent patch 2023-12-12 22:42:46 +01:00
oSumAtrIX
c10956ba14 fix(Sync for Reddit - Spoof client): Fix account login by removing user agent patch 2023-12-12 22:42:46 +01:00
Bceez
36fc818f90 feat(IconPackStudio - Unlock pro): Constrain to last working version (#3410) 2023-12-12 21:49:22 +01:00
LisoUseInAIKyrios
3ae2dbaad7 chore(YouTube): Fix settings UI typos 2023-12-12 20:51:26 +04:00
semantic-release-bot
9c843cbf6e chore(release): 3.0.1 [skip ci]
## [3.0.1](https://github.com/ReVanced/revanced-patches/compare/v3.0.0...v3.0.1) (2023-12-12)

### Bug Fixes

* **YouTube Music - GmsCore support:** Change from correct package name to prevent the patch from failing ([42ae7b3](42ae7b3f2a))
2023-12-12 00:55:15 +00:00
oSumAtrIX
7387323de5 chore: Merge branch dev to main (#3400) 2023-12-12 01:53:21 +01:00
semantic-release-bot
22f32865a2 chore(release): 3.0.1-dev.1 [skip ci]
## [3.0.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v3.0.0...v3.0.1-dev.1) (2023-12-12)

### Bug Fixes

* **YouTube Music - GmsCore support:** Change from correct package name to prevent the patch from failing ([42ae7b3](42ae7b3f2a))
2023-12-12 00:53:09 +00:00
oSumAtrIX
5f8b96466f refactor: Simplify implementation 2023-12-12 01:50:32 +01:00
oSumAtrIX
42ae7b3f2a fix(YouTube Music - GmsCore support): Change from correct package name to prevent the patch from failing 2023-12-12 01:50:18 +01:00
semantic-release-bot
7b56550a0a chore(release): 3.0.0 [skip ci]
# [3.0.0](https://github.com/ReVanced/revanced-patches/compare/v2.202.0...v3.0.0) (2023-12-12)

### Bug Fixes

* Use correct class loader to load resources ([17f44ca](17f44ca780))
* **YouTube - GmsCore support:** Check for availability earlier to prevent crashing without any notice ([a4a4822](a4a4822ed8))
* **YouTube - Minimized playback:** Fix PIP incorrectly shown for some Shorts playback ([#3364](https://github.com/ReVanced/revanced-patches/issues/3364)) ([e6a1573](e6a1573c59))
* **YouTube - Return YouTube Dislike:** Prevent the first Short opened from freezing the UI ([#3359](https://github.com/ReVanced/revanced-patches/issues/3359)) ([aaad913](aaad91333f))

### Features

* Allow choosing the vendor of GmsCore via patch options ([#3347](https://github.com/ReVanced/revanced-patches/issues/3347)) ([55bc7ec](55bc7ecbae))
* **Infinity for Reddit - Spoof client:** Support latest version ([0ceb163](0ceb163ffa))
* **Infinity for Reddit:** Add `Unlock subscription` patch ([080b357](080b357a79))
* **Photomath:** Constrain patches to last working version ([3bd6640](3bd66406cc))
* Publish as a library ([#3356](https://github.com/ReVanced/revanced-patches/issues/3356)) ([d3acdea](d3acdead51))
* **Tiktok:** Bump compatibility to `32.5.3` ([#3389](https://github.com/ReVanced/revanced-patches/issues/3389)) ([37c461f](37c461f5c7))
* **Twitch - Settings:** Support version `16.1.0` and `15.4.1` ([#3377](https://github.com/ReVanced/revanced-patches/issues/3377)) ([ba58edb](ba58edbd7f))
* **Twitter - Dynamic Color:** Remove blue icon and update app name ([#3384](https://github.com/ReVanced/revanced-patches/issues/3384)) ([6a03c1f](6a03c1f8c3))
* **YouTube - Alternative Thumbnails:** Add option to use DeArrow ([#3378](https://github.com/ReVanced/revanced-patches/issues/3378)) ([dbe123c](dbe123c93c))
* **YouTube:** Add `Change start page` patch ([f03e57b](f03e57b112))
* **YouTube:** Clarify patch descriptions ([#3350](https://github.com/ReVanced/revanced-patches/issues/3350)) ([4672118](4672118e88))

### BREAKING CHANGES

* **Tiktok:** This removes a patch but consolidates it into another.
* Various APIs have been moved to `GmsCoreSupportAbstractPatch`
2023-12-12 00:13:19 +00:00
oSumAtrIX
e6766c3a5f chore: Merge branch dev to main (#3358) 2023-12-12 01:11:25 +01:00
semantic-release-bot
e840d03d63 chore(release): 3.0.0-dev.11 [skip ci]
# [3.0.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v3.0.0-dev.10...v3.0.0-dev.11) (2023-12-12)

### Features

* **Tiktok:** Bump compatibility to `32.5.3` ([#3389](https://github.com/ReVanced/revanced-patches/issues/3389)) ([37c461f](37c461f5c7))

### BREAKING CHANGES

* **Tiktok:** This removes a patch but consolidates it into another.
2023-12-12 00:09:27 +00:00
d4rkk3y
37c461f5c7 feat(Tiktok): Bump compatibility to 32.5.3 (#3389)
BREAKING CHANGE: This removes a patch but consolidates it into another.
2023-12-12 01:07:01 +01:00
semantic-release-bot
6202072061 chore(release): 3.0.0-dev.10 [skip ci]
# [3.0.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v3.0.0-dev.9...v3.0.0-dev.10) (2023-12-11)

### Features

* **YouTube:** Add `Change start page` patch ([f03e57b](f03e57b112))
2023-12-11 23:43:52 +00:00
oSumAtrIX
f03e57b112 feat(YouTube): Add Change start page patch 2023-12-12 00:42:01 +01:00
semantic-release-bot
e2e0efd7ae chore(release): 3.0.0-dev.9 [skip ci]
# [3.0.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v3.0.0-dev.8...v3.0.0-dev.9) (2023-12-11)

### Bug Fixes

* **YouTube - GmsCore support:** Check for availability earlier to prevent crashing without any notice ([a4a4822](a4a4822ed8))
2023-12-11 22:07:41 +00:00
oSumAtrIX
a4a4822ed8 fix(YouTube - GmsCore support): Check for availability earlier to prevent crashing without any notice 2023-12-11 23:05:39 +01:00
oSumAtrIX
6b35561394 build: Simplify enabling local build cache 2023-12-11 22:39:44 +01:00
semantic-release-bot
19f74bcdb1 chore(release): 3.0.0-dev.8 [skip ci]
# [3.0.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v3.0.0-dev.7...v3.0.0-dev.8) (2023-12-11)

### Features

* **YouTube - Alternative Thumbnails:** Add option to use DeArrow ([#3378](https://github.com/ReVanced/revanced-patches/issues/3378)) ([dbe123c](dbe123c93c))
2023-12-11 01:09:24 +00:00
Chris
dbe123c93c feat(YouTube - Alternative Thumbnails): Add option to use DeArrow (#3378)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2023-12-11 05:07:09 +04:00
semantic-release-bot
693d8a0f56 chore(release): 3.0.0-dev.7 [skip ci]
# [3.0.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v3.0.0-dev.6...v3.0.0-dev.7) (2023-12-07)

### Features

* **Twitter - Dynamic Color:** Remove blue icon and update app name ([#3384](https://github.com/ReVanced/revanced-patches/issues/3384)) ([6a03c1f](6a03c1f8c3))
2023-12-07 13:13:03 +00:00
Advyte
6a03c1f8c3 feat(Twitter - Dynamic Color): Remove blue icon and update app name (#3384) 2023-12-07 14:10:55 +01:00
semantic-release-bot
e820724111 chore(release): 3.0.0-dev.6 [skip ci]
# [3.0.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v3.0.0-dev.5...v3.0.0-dev.6) (2023-12-05)

### Features

* **Twitch - Settings:** Support version `16.1.0` and `15.4.1` ([#3377](https://github.com/ReVanced/revanced-patches/issues/3377)) ([ba58edb](ba58edbd7f))
2023-12-05 15:43:34 +00:00
LizenzFass78851
ba58edbd7f feat(Twitch - Settings): Support version 16.1.0 and 15.4.1 (#3377) 2023-12-05 16:41:22 +01:00
semantic-release-bot
a6d7c633f5 chore(release): 3.0.0-dev.5 [skip ci]
# [3.0.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v3.0.0-dev.4...v3.0.0-dev.5) (2023-12-04)

### Bug Fixes

* Use correct class loader to load resources ([17f44ca](17f44ca780))

### Features

* **Photomath:** Constrain patches to last working version ([3bd6640](3bd66406cc))
2023-12-04 23:57:16 +00:00
oSumAtrIX
17f44ca780 fix: Use correct class loader to load resources 2023-12-05 00:55:09 +01:00
oSumAtrIX
3bd66406cc feat(Photomath): Constrain patches to last working version 2023-12-05 00:55:09 +01:00
semantic-release-bot
536b354fd6 chore(release): 3.0.0-dev.4 [skip ci]
# [3.0.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v3.0.0-dev.3...v3.0.0-dev.4) (2023-12-04)

### Bug Fixes

* **YouTube - Minimized playback:** Fix PIP incorrectly shown for some Shorts playback ([#3364](https://github.com/ReVanced/revanced-patches/issues/3364)) ([e6a1573](e6a1573c59))
2023-12-04 23:49:54 +00:00
LisoUseInAIKyrios
e6a1573c59 fix(YouTube - Minimized playback): Fix PIP incorrectly shown for some Shorts playback (#3364) 2023-12-05 03:47:46 +04:00
semantic-release-bot
d63288cc3e chore(release): 3.0.0-dev.3 [skip ci]
# [3.0.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v3.0.0-dev.2...v3.0.0-dev.3) (2023-12-04)

### Bug Fixes

* **YouTube - Return YouTube Dislike:** Prevent the first Short opened from freezing the UI ([#3359](https://github.com/ReVanced/revanced-patches/issues/3359)) ([aaad913](aaad91333f))
2023-12-04 08:49:47 +00:00
LisoUseInAIKyrios
aaad91333f fix(YouTube - Return YouTube Dislike): Prevent the first Short opened from freezing the UI (#3359) 2023-12-04 10:47:41 +02:00
semantic-release-bot
a98c178ca7 chore(release): 3.0.0-dev.2 [skip ci]
# [3.0.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v3.0.0-dev.1...v3.0.0-dev.2) (2023-12-02)

### Features

* **YouTube:** Clarify patch descriptions ([#3350](https://github.com/ReVanced/revanced-patches/issues/3350)) ([4672118](4672118e88))
2023-12-02 22:56:50 +00:00
KobeW50
4672118e88 feat(YouTube): Clarify patch descriptions (#3350)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-12-02 23:54:49 +01:00
semantic-release-bot
5587a5c869 chore(release): 3.0.0-dev.1 [skip ci]
# [3.0.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.203.0-dev.2...v3.0.0-dev.1) (2023-12-02)

### Features

* Allow choosing the vendor of GmsCore via patch options ([#3347](https://github.com/ReVanced/revanced-patches/issues/3347)) ([55bc7ec](55bc7ecbae))

### BREAKING CHANGES

* Various APIs have been moved to `GmsCoreSupportAbstractPatch`
2023-12-02 21:52:39 +00:00
oSumAtrIX
55bc7ecbae feat: Allow choosing the vendor of GmsCore via patch options (#3347)
BREAKING CHANGE: Various APIs have been moved to `GmsCoreSupportAbstractPatch`
2023-12-02 22:50:40 +01:00
semantic-release-bot
9c82801e71 chore(release): 2.203.0-dev.2 [skip ci]
# [2.203.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.203.0-dev.1...v2.203.0-dev.2) (2023-12-02)

### Features

* Publish as a library ([#3356](https://github.com/ReVanced/revanced-patches/issues/3356)) ([d3acdea](d3acdead51))
2023-12-02 21:37:04 +00:00
oSumAtrIX
d3acdead51 feat: Publish as a library (#3356) 2023-12-02 22:35:13 +01:00
semantic-release-bot
f909df8047 chore(release): 2.203.0-dev.1 [skip ci]
# [2.203.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.202.0...v2.203.0-dev.1) (2023-12-02)

### Features

* **Infinity for Reddit - Spoof client:** Support latest version ([0ceb163](0ceb163ffa))
* **Infinity for Reddit:** Add `Unlock subscription` patch ([080b357](080b357a79))
2023-12-02 16:48:08 +00:00
oSumAtrIX
6e24952d10 refactor: Simplify AbstractSpoofClientPatch class 2023-12-02 17:42:14 +01:00
oSumAtrIX
080b357a79 feat(Infinity for Reddit): Add Unlock subscription patch 2023-12-02 17:42:14 +01:00
oSumAtrIX
0ceb163ffa feat(Infinity for Reddit - Spoof client): Support latest version 2023-12-02 17:42:14 +01:00
oSumAtrIX
60340ccc7b build: Bump dependencies 2023-12-02 17:42:13 +01:00
semantic-release-bot
fad9d2b54f chore(release): 2.202.0 [skip ci]
# [2.202.0](https://github.com/ReVanced/revanced-patches/compare/v2.201.1...v2.202.0) (2023-12-02)

### Bug Fixes

* **Spotify - Custom Theme:** Clarify patch option description ([#3338](https://github.com/ReVanced/revanced-patches/issues/3338)) ([b1307cf](b1307cf09b))
* **YouTube - Enable tablet layout:** Respect the original device layout ([c63cc2c](c63cc2c3bf))
* **YouTube - Restore old seekbar thumbnails:** Move setting into 'Seekbar' submenu ([#3344](https://github.com/ReVanced/revanced-patches/issues/3344)) ([a6267fd](a6267fd00f))

### Features

* Modernize restart app logic ([#3343](https://github.com/ReVanced/revanced-patches/issues/3343)) ([8c5487c](8c5487c467))
* **YouTube:** Support version `18.45.43` ([#3345](https://github.com/ReVanced/revanced-patches/issues/3345)) ([04c91ae](04c91ae28c))
2023-12-02 14:26:34 +00:00
oSumAtrIX
4349d630a9 chore: Merge branch dev to main (#3336) 2023-12-02 15:24:30 +01:00
semantic-release-bot
d43ea315d5 chore(release): 2.202.0-dev.4 [skip ci]
# [2.202.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v2.202.0-dev.3...v2.202.0-dev.4) (2023-12-01)

### Features

* **YouTube:** Support version `18.45.43` ([#3345](https://github.com/ReVanced/revanced-patches/issues/3345)) ([04c91ae](04c91ae28c))
2023-12-01 23:09:22 +00:00
LisoUseInAIKyrios
04c91ae28c feat(YouTube): Support version 18.45.43 (#3345) 2023-12-02 00:07:29 +01:00
semantic-release-bot
51aeb0b24d chore(release): 2.202.0-dev.3 [skip ci]
# [2.202.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v2.202.0-dev.2...v2.202.0-dev.3) (2023-12-01)

### Bug Fixes

* **YouTube - Enable tablet layout:** Respect the original device layout ([c63cc2c](c63cc2c3bf))
2023-12-01 22:54:33 +00:00
oSumAtrIX
c63cc2c3bf fix(YouTube - Enable tablet layout): Respect the original device layout 2023-12-01 23:52:31 +01:00
semantic-release-bot
81d12c21b2 chore(release): 2.202.0-dev.2 [skip ci]
# [2.202.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.202.0-dev.1...v2.202.0-dev.2) (2023-12-01)

### Bug Fixes

* **Spotify - Custom Theme:** Clarify patch option description ([#3338](https://github.com/ReVanced/revanced-patches/issues/3338)) ([b1307cf](b1307cf09b))
2023-12-01 00:10:35 +00:00
Advyte
b1307cf09b fix(Spotify - Custom Theme): Clarify patch option description (#3338)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-12-01 01:08:37 +01:00
semantic-release-bot
18481c66c4 chore(release): 2.202.0-dev.1 [skip ci]
# [2.202.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.201.2-dev.1...v2.202.0-dev.1) (2023-11-29)

### Features

* Modernize restart app logic ([#3343](https://github.com/ReVanced/revanced-patches/issues/3343)) ([8c5487c](8c5487c467))
2023-11-29 20:50:42 +00:00
LisoUseInAIKyrios
8c5487c467 feat: Modernize restart app logic (#3343) 2023-11-29 22:48:35 +02:00
semantic-release-bot
a96572001b chore(release): 2.201.2-dev.1 [skip ci]
## [2.201.2-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.201.1...v2.201.2-dev.1) (2023-11-29)

### Bug Fixes

* **YouTube - Restore old seekbar thumbnails:** Move setting into 'Seekbar' submenu ([#3344](https://github.com/ReVanced/revanced-patches/issues/3344)) ([a6267fd](a6267fd00f))
2023-11-29 12:35:50 +00:00
LisoUseInAIKyrios
a6267fd00f fix(YouTube - Restore old seekbar thumbnails): Move setting into 'Seekbar' submenu (#3344) 2023-11-29 14:33:56 +02:00
oSumAtrIX
35ac0913c9 build: Add manifest headers 2023-11-28 00:04:39 +01:00
oSumAtrIX
240696d573 build: Remove unnecessary Maven repository 2023-11-27 22:42:22 +01:00
semantic-release-bot
b16d64dd58 chore(release): 2.201.1 [skip ci]
## [2.201.1](https://github.com/ReVanced/revanced-patches/compare/v2.201.0...v2.201.1) (2023-11-27)

### Bug Fixes

* **Spotify - Hide premium navbar:** Support latest version ([15702c9](15702c92b3))
* **YouTube - Hide layout components:** Clarify custom filter usage ([45e55b4](45e55b48e5))
2023-11-27 19:09:29 +00:00
oSumAtrIX
d271ee40ad chore: Merge branch dev to main (#3325) 2023-11-27 20:07:20 +01:00
semantic-release-bot
8f49b7ecf5 chore(release): 2.201.1-dev.2 [skip ci]
## [2.201.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.201.1-dev.1...v2.201.1-dev.2) (2023-11-23)

### Bug Fixes

* **Spotify - Hide premium navbar:** Support latest version ([15702c9](15702c92b3))
2023-11-23 18:37:50 +00:00
oSumAtrIX
15702c92b3 fix(Spotify - Hide premium navbar): Support latest version 2023-11-23 19:35:51 +01:00
semantic-release-bot
71633b7f1d chore(release): 2.201.1-dev.1 [skip ci]
## [2.201.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.201.0...v2.201.1-dev.1) (2023-11-23)

### Bug Fixes

* **YouTube - Hide layout components:** Clarify custom filter usage ([45e55b4](45e55b48e5))
2023-11-23 17:46:21 +00:00
oSumAtrIX
45e55b48e5 fix(YouTube - Hide layout components): Clarify custom filter usage 2023-11-23 18:44:21 +01:00
semantic-release-bot
f2753b2999 chore(release): 2.201.0 [skip ci]
# [2.201.0](https://github.com/ReVanced/revanced-patches/compare/v2.200.0...v2.201.0) (2023-11-23)

### Bug Fixes

* **YouTube - Enable tablet layout:** Respect the original device layout ([7f15bb4](7f15bb4c20))

### Features

* **YouTube - Hide ads:** Hide shopping links in video description ([6cb43c3](6cb43c3326))
* **YouTube - Hide layout components:** Hide "For You" shelf in channel page ([89300e1](89300e1f42))
2023-11-23 03:36:39 +00:00
oSumAtrIX
6268d14212 chore: Merge branch dev to main (#3323) 2023-11-23 04:34:44 +01:00
semantic-release-bot
576563a27b chore(release): 2.201.0-dev.1 [skip ci]
# [2.201.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.200.0...v2.201.0-dev.1) (2023-11-23)

### Bug Fixes

* **YouTube - Enable tablet layout:** Respect the original device layout ([7f15bb4](7f15bb4c20))

### Features

* **YouTube - Hide ads:** Hide shopping links in video description ([6cb43c3](6cb43c3326))
* **YouTube - Hide layout components:** Hide "For You" shelf in channel page ([89300e1](89300e1f42))
2023-11-23 03:01:29 +00:00
oSumAtrIX
6cb43c3326 feat(YouTube - Hide ads): Hide shopping links in video description 2023-11-23 03:54:32 +01:00
oSumAtrIX
89300e1f42 feat(YouTube - Hide layout components): Hide "For You" shelf in channel page 2023-11-23 03:54:31 +01:00
semantic-release-bot
094ffd1b34 chore(release): 2.200.1-dev.1 [skip ci]
## [2.200.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.200.0...v2.200.1-dev.1) (2023-11-23)

### Bug Fixes

* **YouTube - Enable tablet layout:** Respect the original device layout ([e88d6a8](e88d6a8bba))
2023-11-23 03:54:31 +01:00
oSumAtrIX
7f15bb4c20 fix(YouTube - Enable tablet layout): Respect the original device layout 2023-11-23 03:54:31 +01:00
oSumAtrIX
20081ef27e chore: Add heading to issue templates 2023-11-23 00:56:51 +01:00
oSumAtrIX
7df2cd0373 chore: Update README heading 2023-11-23 00:51:24 +01:00
semantic-release-bot
bab4d54019 chore(release): 2.200.0 [skip ci]
# [2.200.0](https://github.com/ReVanced/revanced-patches/compare/v2.199.0...v2.200.0) (2023-11-22)

### Bug Fixes

* **Spotify - Custom theme:** Add more background surfaces coloring options ([#3285](https://github.com/ReVanced/revanced-patches/issues/3285)) ([521d3a0](521d3a08c8))
* **YouTube - Remove tracking query parameter:** Sanitize shared URLs in remaining places ([51ab7a6](51ab7a65a0))

### Features

* **Twitch:** Constrain patches to versions known to work ([54b23da](54b23da0b4))
* **Twitch:** Support version `16.9.1` ([e74f7d9](e74f7d96d7))
2023-11-22 08:05:08 +00:00
oSumAtrIX
96bb0909c6 chore: Merge branch dev to main (#3319) 2023-11-22 09:03:03 +01:00
oSumAtrIX
9457ecc2a9 build: Bump Gradle wrapper 2023-11-22 00:54:15 +01:00
oSumAtrIX
469b6f3ad5 build: Use dedicated Gradle cache action 2023-11-22 00:45:42 +01:00
oSumAtrIX
3cd1939063 build: Use Gradle build cache 2023-11-22 00:26:38 +01:00
oSumAtrIX
2575825adf ci: Simplify cache paths 2023-11-22 00:11:16 +01:00
oSumAtrIX
798360f7b9 chore: Reword comment for first PR merge 2023-11-22 00:07:46 +01:00
oSumAtrIX
b9101caba9 chore: Add a newline between steps 2023-11-22 00:04:24 +01:00
oSumAtrIX
b16c86db36 chore: Notice about contribution guidelines in issue templates 2023-11-22 00:01:24 +01:00
oSumAtrIX
943331de02 chore: Do not use a line break in issue template sentence 2023-11-21 23:48:29 +01:00
oSumAtrIX
acaf657397 ci: Update cache key 2023-11-21 23:41:41 +01:00
oSumAtrIX
3e455ae7c2 chore: Update packages 2023-11-21 23:40:58 +01:00
semantic-release-bot
0715e4c723 chore(release): 2.200.0-dev.3 [skip ci]
# [2.200.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v2.200.0-dev.2...v2.200.0-dev.3) (2023-11-21)

### Bug Fixes

* **YouTube - Remove tracking query parameter:** Sanitize shared URLs in remaining places ([51ab7a6](51ab7a65a0))
2023-11-21 22:22:03 +00:00
oSumAtrIX
51ab7a65a0 fix(YouTube - Remove tracking query parameter): Sanitize shared URLs in remaining places 2023-11-21 23:09:57 +01:00
semantic-release-bot
2757572442 chore(release): 2.200.0-dev.2 [skip ci]
# [2.200.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.200.0-dev.1...v2.200.0-dev.2) (2023-11-21)

### Bug Fixes

* **Spotify - Custom theme:** Add more background surfaces coloring options ([#3285](https://github.com/ReVanced/revanced-patches/issues/3285)) ([521d3a0](521d3a08c8))
2023-11-21 20:16:11 +00:00
Advyte
521d3a08c8 fix(Spotify - Custom theme): Add more background surfaces coloring options (#3285)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-11-21 21:13:58 +01:00
semantic-release-bot
5282ccf4f3 chore(release): 2.200.0-dev.1 [skip ci]
# [2.200.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.199.0...v2.200.0-dev.1) (2023-11-21)

### Features

* **Twitch:** Constrain patches to versions known to work ([54b23da](54b23da0b4))
* **Twitch:** Support version `16.9.1` ([e74f7d9](e74f7d96d7))
2023-11-21 20:08:05 +00:00
oSumAtrIX
e74f7d96d7 feat(Twitch): Support version 16.9.1 2023-11-21 21:05:23 +01:00
oSumAtrIX
54b23da0b4 feat(Twitch): Constrain patches to versions known to work 2023-11-21 21:05:22 +01:00
semantic-release-bot
368b4a56f4 chore(release): 2.199.0 [skip ci]
# [2.199.0](https://github.com/ReVanced/revanced-patches/compare/v2.198.0...v2.199.0) (2023-11-20)

### Bug Fixes

* **Twitch - Settings:** Constrain to last working version ([d9e902d](d9e902d07a))
* **YouTube - Settings:** Remove unnecessary punctuation ([#3301](https://github.com/ReVanced/revanced-patches/issues/3301)) ([97bb4d5](97bb4d55e6))
* **Yuka - Unlock premium:** Constrain to last working version ([529eef6](529eef6efd))

### Features

* **YouTube:** Add `Disable rolling number animations` patch ([#3298](https://github.com/ReVanced/revanced-patches/issues/3298)) ([a9fdeb1](a9fdeb152d))
2023-11-20 17:58:38 +00:00
oSumAtrIX
56b0a6295f chore: Merge branch dev to main (#3302) 2023-11-20 18:56:25 +01:00
semantic-release-bot
3eb1d66716 chore(release): 2.198.1-dev.2 [skip ci]
## [2.198.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.198.1-dev.1...v2.198.1-dev.2) (2023-11-19)

### Bug Fixes

* **Twitch - Settings:** Constrain to last working version ([1138d23](1138d2392e))
* **Yuka - Unlock premium:** Constrain to last working version ([3ec52b5](3ec52b51dd))
2023-11-20 18:40:59 +01:00
oSumAtrIX
529eef6efd fix(Yuka - Unlock premium): Constrain to last working version 2023-11-20 18:40:59 +01:00
oSumAtrIX
d9e902d07a fix(Twitch - Settings): Constrain to last working version 2023-11-20 18:40:58 +01:00
LisoUseInAIKyrios
a9fdeb152d feat(YouTube): Add Disable rolling number animations patch (#3298) 2023-11-20 18:40:48 +01:00
semantic-release-bot
114378db68 chore(release): 2.198.1-dev.1 [skip ci]
## [2.198.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.198.0...v2.198.1-dev.1) (2023-11-19)

### Bug Fixes

* **YouTube - Settings:** Remove unnecessary punctuation ([#3301](https://github.com/ReVanced/revanced-patches/issues/3301)) ([97bb4d5](97bb4d55e6))
2023-11-19 04:05:30 +00:00
KobeW50
97bb4d55e6 fix(YouTube - Settings): Remove unnecessary punctuation (#3301) 2023-11-19 05:03:23 +01:00
semantic-release-bot
4d04e954a6 chore(release): 2.198.0 [skip ci]
# [2.198.0](https://github.com/ReVanced/revanced-patches/compare/v2.197.0...v2.198.0) (2023-11-19)

### Bug Fixes

* **YouTube - ReturnYouTubeDislike:** Fix text alignment on videos that don't use rolling number animations ([85aed52](85aed52c25))
* **YouTube - ReturnYouTubeDislike:** Improve layout padding ([#3291](https://github.com/ReVanced/revanced-patches/issues/3291)) ([2c58817](2c5881771e))

### Features

* **YouTube - Custom branding:** Add "YT ReVanced" to the default app name options ([#3300](https://github.com/ReVanced/revanced-patches/issues/3300)) ([f87e5db](f87e5db3f6))
2023-11-19 04:02:15 +00:00
oSumAtrIX
4ae80c2c59 chore: Merge branch dev to main (#3295) 2023-11-19 05:00:04 +01:00
semantic-release-bot
705614a9df chore(release): 2.198.0-dev.1 [skip ci]
# [2.198.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.197.1-dev.2...v2.198.0-dev.1) (2023-11-19)

### Features

* **YouTube - Custom branding:** Add "YT ReVanced" to the default app name options ([#3300](https://github.com/ReVanced/revanced-patches/issues/3300)) ([f87e5db](f87e5db3f6))
2023-11-19 02:34:17 +00:00
KobeW50
f87e5db3f6 feat(YouTube - Custom branding): Add "YT ReVanced" to the default app name options (#3300) 2023-11-19 03:32:08 +01:00
semantic-release-bot
4e17b78ba0 chore(release): 2.197.1-dev.2 [skip ci]
## [2.197.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.197.1-dev.1...v2.197.1-dev.2) (2023-11-18)

### Bug Fixes

* **YouTube - ReturnYouTubeDislike:** Fix text alignment on videos that don't use rolling number animations ([85aed52](85aed52c25))
2023-11-18 22:24:16 +00:00
LisoUseInAIKyrios
85aed52c25 fix(YouTube - ReturnYouTubeDislike): Fix text alignment on videos that don't use rolling number animations 2023-11-19 00:21:36 +02:00
semantic-release-bot
3cf76488c0 chore(release): 2.197.1-dev.1 [skip ci]
## [2.197.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.197.0...v2.197.1-dev.1) (2023-11-18)

### Bug Fixes

* **YouTube - ReturnYouTubeDislike:** Improve layout padding ([#3291](https://github.com/ReVanced/revanced-patches/issues/3291)) ([2c58817](2c5881771e))
2023-11-18 19:13:11 +00:00
LisoUseInAIKyrios
2c5881771e fix(YouTube - ReturnYouTubeDislike): Improve layout padding (#3291) 2023-11-18 21:10:43 +02:00
semantic-release-bot
78929c4216 chore(release): 2.197.0 [skip ci]
# [2.197.0](https://github.com/ReVanced/revanced-patches/compare/v2.196.0...v2.197.0) (2023-11-18)

### Bug Fixes

* **Nyx Music Plaer - Unlock pro:** Constrain to last working version ([8ec276a](8ec276aac9))
* **Remove screenshot restriction:** Improve reliability ([#2938](https://github.com/ReVanced/revanced-patches/issues/2938)) ([f9b7c31](f9b7c31ba9))
* Use a checked cast by reifying the generic type parameter ([5bc1c86](5bc1c86f37))
* **YouTube - Client spoof:** Fix low resolution precise seeking thumbnails ([#3249](https://github.com/ReVanced/revanced-patches/issues/3249)) ([2532bff](2532bff8e5))
* **YouTube - Disable resuming Shorts on startup:** Adjust patch name ([#3281](https://github.com/ReVanced/revanced-patches/issues/3281)) ([aaf9eae](aaf9eae08b))
* **YouTube - Hide layout components:** Reduce false positives when hiding mix playlists ([db5ed08](db5ed08600))
* **YouTube - SponsorBlock:** Rename "Preview/Recap" category to "Preview/Recap/Hook" ([#3245](https://github.com/ReVanced/revanced-patches/issues/3245)) ([79c2f04](79c2f04383))
* **YouTube - Theme:** Use consistent patch option descriptions ([#3231](https://github.com/ReVanced/revanced-patches/issues/3231)) ([278f204](278f204463))
* **YouTube:** Rename `Restore old seekbar thumbnails` and `Restore old quality menu` ([#3235](https://github.com/ReVanced/revanced-patches/issues/3235)) ([0f242a6](0f242a6aaa))

### Features

* Add `Spoof SIM country` patch ([#3116](https://github.com/ReVanced/revanced-patches/issues/3116)) ([bdf42e6](bdf42e649c))
* **Android Widgets (Material U):** Remove `Unlock paid widgets` patch ([#3286](https://github.com/ReVanced/revanced-patches/issues/3286)) ([eda326f](eda326f5e5))
* **Facebook:** Add `Hide story ads` patch ([#3257](https://github.com/ReVanced/revanced-patches/issues/3257)) ([e666231](e66623160d))
* **Twitch:** Support version `17.0.0` ([#3250](https://github.com/ReVanced/revanced-patches/issues/3250)) ([0441dc9](0441dc946a))
* **Twitch:** Support version `17.1.0` ([#3269](https://github.com/ReVanced/revanced-patches/issues/3269)) ([10f61a3](10f61a3fc7))
* **YouTube - Bypass URL redirects:** Support version `18.43.45` ([826f5b7](826f5b7006))
* **YouTube - Client spoof:** Add description to preference screen ([175f792](175f792e58))
* **YouTube - Hide layout components:** Add description to preference screen ([cadbbd2](cadbbd2fd8))
* **YouTube - Hide layout components:** Hide description components ([448ae52](448ae5247d))
* **YouTube - Hide timestamp:** Support version `18.43.45` ([0eb2c19](0eb2c19787))
* **YouTube - Navigation buttons:** Add description to preference screen ([601e517](601e517d69))
* **YouTube - Navigation buttons:** Support version `18.43.45` ([1a00ed9](1a00ed958e))
* **YouTube - Player flyout menu:** Support version `18.43.45` and `18.44.41` ([#3263](https://github.com/ReVanced/revanced-patches/issues/3263)) ([c415e38](c415e38530))
* **YouTube - Return YouTube Dislike:** Support version `18.43.45` and `18.44.41` ([#3260](https://github.com/ReVanced/revanced-patches/issues/3260)) ([3a99f31](3a99f31551))
* **YouTube - Seekbar tapping:** Support version `18.43.45` ([6aca8d5](6aca8d518f))
* **YouTube - Seekbar:** Add description to preference screen ([0c1ece3](0c1ece3dc5))
* **YouTube - Settings:** Sort preference screens below other types of preference ([e200416](e2004161c2))
* **YouTube - Vanced MicroG support:** Allow changing package name ([d9a4fdc](d9a4fdc991))
* **YouTube Music - Vanced MicroG support:** Allow changing package name ([f5ea64a](f5ea64aac6))
* **YouTube:** Add `Enable slide to seek` patch ([e1dc067](e1dc067bdb))
* **YouTube:** Add `Remove tracking query parameter` patch ([8c98a60](8c98a6065d))
* **YouTube:** Bump compatibility to `18.38.45` ([e4b6e1b](e4b6e1bd26))
* **YouTube:** Bump compatibility to `18.44.41` ([97899b7](97899b73d2))
* **YouTube:** Support version `18.43.45` for `Playback speed` and `Restore old video quality menu` ([a0cfa1f](a0cfa1f3e0))
* **YouTube:** Support version `18.45.41` ([c05cc49](c05cc49665))
2023-11-18 04:12:48 +00:00
oSumAtrIX
bae71512c0 chore: Merge branch dev to main (#3232) 2023-11-18 05:10:32 +01:00
semantic-release-bot
e249216430 chore(release): 2.197.0-dev.5 [skip ci]
# [2.197.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v2.197.0-dev.4...v2.197.0-dev.5) (2023-11-18)

### Bug Fixes

* Use a checked cast by reifying the generic type parameter ([5bc1c86](5bc1c86f37))

### Features

* **YouTube - Client spoof:** Add description to preference screen ([175f792](175f792e58))
* **YouTube - Hide layout components:** Add description to preference screen ([cadbbd2](cadbbd2fd8))
* **YouTube - Hide layout components:** Hide description components ([448ae52](448ae5247d))
* **YouTube - Navigation buttons:** Add description to preference screen ([601e517](601e517d69))
* **YouTube - Seekbar:** Add description to preference screen ([0c1ece3](0c1ece3dc5))
* **YouTube - Settings:** Sort preference screens below other types of preference ([e200416](e2004161c2))
* **YouTube:** Support version `18.45.41` ([c05cc49](c05cc49665))
2023-11-18 04:07:57 +00:00
oSumAtrIX
175f792e58 feat(YouTube - Client spoof): Add description to preference screen 2023-11-18 05:05:37 +01:00
oSumAtrIX
0c1ece3dc5 feat(YouTube - Seekbar): Add description to preference screen 2023-11-18 05:02:38 +01:00
oSumAtrIX
cadbbd2fd8 feat(YouTube - Hide layout components): Add description to preference screen 2023-11-18 05:01:55 +01:00
oSumAtrIX
e2004161c2 feat(YouTube - Settings): Sort preference screens below other types of preference 2023-11-18 04:58:22 +01:00
oSumAtrIX
601e517d69 feat(YouTube - Navigation buttons): Add description to preference screen 2023-11-18 04:54:47 +01:00
oSumAtrIX
448ae5247d feat(YouTube - Hide layout components): Hide description components 2023-11-18 04:44:02 +01:00
oSumAtrIX
c05cc49665 feat(YouTube): Support version 18.45.41 2023-11-18 03:30:55 +01:00
oSumAtrIX
5bc1c86f37 fix: Use a checked cast by reifying the generic type parameter 2023-11-18 03:27:00 +01:00
semantic-release-bot
7aef6f3522 chore(release): 2.197.0-dev.4 [skip ci]
# [2.197.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v2.197.0-dev.3...v2.197.0-dev.4) (2023-11-17)

### Features

* **YouTube - Return YouTube Dislike:** Support version `18.43.45` and `18.44.41` ([#3260](https://github.com/ReVanced/revanced-patches/issues/3260)) ([3a99f31](3a99f31551))
2023-11-17 23:53:21 +00:00
oSumAtrIX
3a99f31551 feat(YouTube - Return YouTube Dislike): Support version 18.43.45 and 18.44.41 (#3260)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2023-11-18 01:51:10 +02:00
semantic-release-bot
d4b0a598cb chore(release): 2.197.0-dev.3 [skip ci]
# [2.197.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v2.197.0-dev.2...v2.197.0-dev.3) (2023-11-17)

### Features

* **Android Widgets (Material U):** Remove `Unlock paid widgets` patch ([#3286](https://github.com/ReVanced/revanced-patches/issues/3286)) ([eda326f](eda326f5e5))
2023-11-17 19:44:01 +00:00
1fexd
eda326f5e5 feat(Android Widgets (Material U)): Remove Unlock paid widgets patch (#3286) 2023-11-17 20:41:45 +01:00
LisoUseInAIKyrios
ba34d2e28f build: fix other typo 2023-11-17 20:43:13 +02:00
LisoUseInAIKyrios
b298ff3093 chore: fix typo 2023-11-17 19:42:10 +02:00
semantic-release-bot
17ab263bc9 chore(release): 2.197.0-dev.2 [skip ci]
# [2.197.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.197.0-dev.1...v2.197.0-dev.2) (2023-11-17)

### Bug Fixes

* **YouTube - Disable resuming Shorts on startup:** Adjust patch name ([#3281](https://github.com/ReVanced/revanced-patches/issues/3281)) ([aaf9eae](aaf9eae08b))
* **YouTube - Hide layout components:** Reduce false positives when hiding mix playlists ([db5ed08](db5ed08600))

### Features

* Add `Spoof SIM country` patch ([#3116](https://github.com/ReVanced/revanced-patches/issues/3116)) ([bdf42e6](bdf42e649c))
* **Facebook:** Add `Hide story ads` patch ([#3257](https://github.com/ReVanced/revanced-patches/issues/3257)) ([e666231](e66623160d))
* **Twitch:** Support version `17.1.0` ([#3269](https://github.com/ReVanced/revanced-patches/issues/3269)) ([10f61a3](10f61a3fc7))
* **YouTube - Bypass URL redirects:** Support version `18.43.45` ([826f5b7](826f5b7006))
* **YouTube - Hide timestamp:** Support version `18.43.45` ([0eb2c19](0eb2c19787))
* **YouTube - Navigation buttons:** Support version `18.43.45` ([1a00ed9](1a00ed958e))
* **YouTube - Player flyout menu:** Support version `18.43.45` and `18.44.41` ([#3263](https://github.com/ReVanced/revanced-patches/issues/3263)) ([c415e38](c415e38530))
* **YouTube - Seekbar tapping:** Support version `18.43.45` ([6aca8d5](6aca8d518f))
* **YouTube - Vanced MicroG support:** Allow changing package name ([d9a4fdc](d9a4fdc991))
* **YouTube Music - Vanced MicroG support:** Allow changing package name ([f5ea64a](f5ea64aac6))
* **YouTube:** Add `Enable slide to seek` patch ([e1dc067](e1dc067bdb))
* **YouTube:** Add `Remove tracking query parameter` patch ([8c98a60](8c98a6065d))
* **YouTube:** Bump compatibility to `18.38.45` ([e4b6e1b](e4b6e1bd26))
* **YouTube:** Bump compatibility to `18.44.41` ([97899b7](97899b73d2))
* **YouTube:** Support version `18.43.45` for `Playback speed` and `Restore old video quality menu` ([a0cfa1f](a0cfa1f3e0))
2023-11-17 10:24:11 +00:00
LisoUseInAIKyrios
aaf9eae08b fix(YouTube - Disable resuming Shorts on startup): Adjust patch name (#3281) 2023-11-17 12:22:02 +02:00
semantic-release-bot
4e128b6de0 chore(release): 2.197.0-dev.2 [skip ci]
# [2.197.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.197.0-dev.1...v2.197.0-dev.2) (2023-11-16)

### Bug Fixes

* **YouTube - Hide layout components:** Reduce false positives when hiding mix playlists ([db5ed08](db5ed08600))

### Features

* Add `Spoof SIM country` patch ([#3116](https://github.com/ReVanced/revanced-patches/issues/3116)) ([bdf42e6](bdf42e649c))
* **Facebook:** Add `Hide story ads` patch ([#3257](https://github.com/ReVanced/revanced-patches/issues/3257)) ([e666231](e66623160d))
* **Twitch:** Support version `17.1.0` ([#3269](https://github.com/ReVanced/revanced-patches/issues/3269)) ([10f61a3](10f61a3fc7))
* **YouTube - Bypass URL redirects:** Support version `18.43.45` ([826f5b7](826f5b7006))
* **YouTube - Hide timestamp:** Support version `18.43.45` ([0eb2c19](0eb2c19787))
* **YouTube - Navigation buttons:** Support version `18.43.45` ([1a00ed9](1a00ed958e))
* **YouTube - Player flyout menu:** Support version `18.43.45` and `18.44.41` ([#3263](https://github.com/ReVanced/revanced-patches/issues/3263)) ([c415e38](c415e38530))
* **YouTube - Seekbar tapping:** Support version `18.43.45` ([6aca8d5](6aca8d518f))
* **YouTube - Vanced MicroG support:** Allow changing package name ([d9a4fdc](d9a4fdc991))
* **YouTube Music - Vanced MicroG support:** Allow changing package name ([f5ea64a](f5ea64aac6))
* **YouTube:** Add `Enable slide to seek` patch ([e1dc067](e1dc067bdb))
* **YouTube:** Add `Remove tracking query parameter` patch ([8c98a60](8c98a6065d))
* **YouTube:** Bump compatibility to `18.38.45` ([e4b6e1b](e4b6e1bd26))
* **YouTube:** Bump compatibility to `18.44.41` ([97899b7](97899b73d2))
* **YouTube:** Support version `18.43.45` for `Playback speed` and `Restore old video quality menu` ([a0cfa1f](a0cfa1f3e0))
2023-11-16 22:15:30 +00:00
oSumAtrIX
d9a4fdc991 feat(YouTube - Vanced MicroG support): Allow changing package name 2023-11-16 20:31:58 +01:00
oSumAtrIX
f5ea64aac6 feat(YouTube Music - Vanced MicroG support): Allow changing package name 2023-11-16 20:31:50 +01:00
semantic-release-bot
ede18f1d59 chore(release): 2.197.0-dev.2 [skip ci]
# [2.197.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.197.0-dev.1...v2.197.0-dev.2) (2023-11-15)

### Bug Fixes

* **YouTube - Hide layout components:** Reduce false positives when hiding mix playlists ([db5ed08](db5ed08600))

### Features

* Add `Spoof SIM country` patch ([#3116](https://github.com/ReVanced/revanced-patches/issues/3116)) ([bdf42e6](bdf42e649c))
* **Facebook:** Add `Hide story ads` patch ([#3257](https://github.com/ReVanced/revanced-patches/issues/3257)) ([e666231](e66623160d))
* **Twitch:** Support version `17.1.0` ([#3269](https://github.com/ReVanced/revanced-patches/issues/3269)) ([10f61a3](10f61a3fc7))
* **YouTube - Bypass URL redirects:** Support version `18.43.45` ([826f5b7](826f5b7006))
* **YouTube - Hide timestamp:** Support version `18.43.45` ([0eb2c19](0eb2c19787))
* **YouTube - Navigation buttons:** Support version `18.43.45` ([1a00ed9](1a00ed958e))
* **YouTube - Player flyout menu:** Support version `18.43.45` and `18.44.41` ([#3263](https://github.com/ReVanced/revanced-patches/issues/3263)) ([c415e38](c415e38530))
* **YouTube - Seekbar tapping:** Support version `18.43.45` ([6aca8d5](6aca8d518f))
* **YouTube:** Add `Enable slide to seek` patch ([e1dc067](e1dc067bdb))
* **YouTube:** Add `Remove tracking query parameter` patch ([8c98a60](8c98a6065d))
* **YouTube:** Bump compatibility to `18.38.45` ([e4b6e1b](e4b6e1bd26))
* **YouTube:** Bump compatibility to `18.44.41` ([97899b7](97899b73d2))
* **YouTube:** Support version `18.43.45` for `Playback speed` and `Restore old video quality menu` ([a0cfa1f](a0cfa1f3e0))
2023-11-15 08:25:37 +00:00
LizenzFass78851
10f61a3fc7 feat(Twitch): Support version 17.1.0 (#3269) 2023-11-15 09:21:41 +01:00
semantic-release-bot
07938bdadc chore(release): 2.197.0-dev.2 [skip ci]
# [2.197.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.197.0-dev.1...v2.197.0-dev.2) (2023-11-13)

### Bug Fixes

* **YouTube - Hide layout components:** Reduce false positives when hiding mix playlists ([db5ed08](db5ed08600))

### Features

* Add `Spoof SIM country` patch ([#3116](https://github.com/ReVanced/revanced-patches/issues/3116)) ([bdf42e6](bdf42e649c))
* **Facebook:** Add `Hide story ads` patch ([#3257](https://github.com/ReVanced/revanced-patches/issues/3257)) ([e666231](e66623160d))
* **YouTube - Bypass URL redirects:** Support version `18.43.45` ([826f5b7](826f5b7006))
* **YouTube - Hide timestamp:** Support version `18.43.45` ([0eb2c19](0eb2c19787))
* **YouTube - Navigation buttons:** Support version `18.43.45` ([1a00ed9](1a00ed958e))
* **YouTube - Player flyout menu:** Support version `18.43.45` and `18.44.41` ([#3263](https://github.com/ReVanced/revanced-patches/issues/3263)) ([c415e38](c415e38530))
* **YouTube - Seekbar tapping:** Support version `18.43.45` ([6aca8d5](6aca8d518f))
* **YouTube:** Add `Enable slide to seek` patch ([e1dc067](e1dc067bdb))
* **YouTube:** Add `Remove tracking query parameter` patch ([8c98a60](8c98a6065d))
* **YouTube:** Bump compatibility to `18.38.45` ([e4b6e1b](e4b6e1bd26))
* **YouTube:** Bump compatibility to `18.44.41` ([97899b7](97899b73d2))
* **YouTube:** Support version `18.43.45` for `Playback speed` and `Restore old video quality menu` ([a0cfa1f](a0cfa1f3e0))
2023-11-13 19:22:20 +00:00
nullptr
c415e38530 feat(YouTube - Player flyout menu): Support version 18.43.45 and 18.44.41 (#3263) 2023-11-13 20:18:58 +01:00
semantic-release-bot
7d710ecd62 chore(release): 2.197.0-dev.2 [skip ci]
# [2.197.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.197.0-dev.1...v2.197.0-dev.2) (2023-11-12)

### Bug Fixes

* **YouTube - Hide layout components:** Reduce false positives when hiding mix playlists ([db5ed08](db5ed08600))

### Features

* Add `Spoof SIM country` patch ([#3116](https://github.com/ReVanced/revanced-patches/issues/3116)) ([bdf42e6](bdf42e649c))
* **Facebook:** Add `Hide story ads` patch ([#3257](https://github.com/ReVanced/revanced-patches/issues/3257)) ([e666231](e66623160d))
* **YouTube - Bypass URL redirects:** Support version `18.43.45` ([826f5b7](826f5b7006))
* **YouTube - Hide timestamp:** Support version `18.43.45` ([0eb2c19](0eb2c19787))
* **YouTube - Navigation buttons:** Support version `18.43.45` ([1a00ed9](1a00ed958e))
* **YouTube - Seekbar tapping:** Support version `18.43.45` ([6aca8d5](6aca8d518f))
* **YouTube:** Add `Enable slide to seek` patch ([e1dc067](e1dc067bdb))
* **YouTube:** Add `Remove tracking query parameter` patch ([8c98a60](8c98a6065d))
* **YouTube:** Bump compatibility to `18.38.45` ([e4b6e1b](e4b6e1bd26))
* **YouTube:** Bump compatibility to `18.44.41` ([97899b7](97899b73d2))
* **YouTube:** Support version `18.43.45` for `Playback speed` and `Restore old video quality menu` ([a0cfa1f](a0cfa1f3e0))
2023-11-12 21:23:13 +00:00
Loukios
e66623160d feat(Facebook): Add Hide story ads patch (#3257)
Co-authored-by: Loukious <Loukious@users.noreply.github.com>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-11-12 22:21:06 +01:00
semantic-release-bot
7ca42e6206 chore(release): 2.197.0-dev.2 [skip ci]
# [2.197.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.197.0-dev.1...v2.197.0-dev.2) (2023-11-12)

### Bug Fixes

* **YouTube - Hide layout components:** Reduce false positives when hiding mix playlists ([db5ed08](db5ed08600))

### Features

* Add `Spoof SIM country` patch ([#3116](https://github.com/ReVanced/revanced-patches/issues/3116)) ([bdf42e6](bdf42e649c))
* **YouTube - Bypass URL redirects:** Support version `18.43.45` ([826f5b7](826f5b7006))
* **YouTube - Hide timestamp:** Support version `18.43.45` ([0eb2c19](0eb2c19787))
* **YouTube - Navigation buttons:** Support version `18.43.45` ([1a00ed9](1a00ed958e))
* **YouTube - Seekbar tapping:** Support version `18.43.45` ([6aca8d5](6aca8d518f))
* **YouTube:** Add `Enable slide to seek` patch ([e1dc067](e1dc067bdb))
* **YouTube:** Add `Remove tracking query parameter` patch ([8c98a60](8c98a6065d))
* **YouTube:** Bump compatibility to `18.38.45` ([e4b6e1b](e4b6e1bd26))
* **YouTube:** Bump compatibility to `18.44.41` ([97899b7](97899b73d2))
* **YouTube:** Support version `18.43.45` for `Playback speed` and `Restore old video quality menu` ([a0cfa1f](a0cfa1f3e0))
2023-11-12 19:52:34 +00:00
scria1000
bdf42e649c feat: Add Spoof SIM country patch (#3116)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2023-11-12 20:50:28 +01:00
semantic-release-bot
7b9438f70f chore(release): 2.197.0-dev.2 [skip ci]
# [2.197.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.197.0-dev.1...v2.197.0-dev.2) (2023-11-12)

### Bug Fixes

* **YouTube - Hide layout components:** Reduce false positives when hiding mix playlists ([aac30ad](aac30ad717))

### Features

* **YouTube - Bypass URL redirects:** Support version `18.43.45` ([8935955](89359550c0))
* **YouTube - Hide timestamp:** Support version `18.43.45` ([0eb2c19](0eb2c19787))
* **YouTube - Navigation buttons:** Support version `18.43.45` ([1a00ed9](1a00ed958e))
* **YouTube - Seekbar tapping:** Support version `18.43.45` ([7828b14](7828b1425b))
* **YouTube:** Add `Enable slide to seek` patch ([a82fa35](a82fa35dd8))
* **YouTube:** Add `Remove tracking query parameter` patch ([a353934](a3539348ce))
* **YouTube:** Bump compatibility to `18.38.45` ([f743491](f7434910ad))
* **YouTube:** Bump compatibility to `18.44.41` ([5490f58](5490f58974))
* **YouTube:** Support version `18.43.45` for `Playback speed failed` and `Restore old video quality menu` ([b5e3263](b5e326348a))
2023-11-12 17:08:51 +01:00
oSumAtrIX
97899b73d2 feat(YouTube): Bump compatibility to 18.44.41 2023-11-12 17:08:51 +01:00
oSumAtrIX
2ccba1e370 refactor: Reduce visibility of methods 2023-11-12 17:08:51 +01:00
oSumAtrIX
e4b6e1bd26 feat(YouTube): Bump compatibility to 18.38.45 2023-11-12 17:08:50 +01:00
oSumAtrIX
db5ed08600 fix(YouTube - Hide layout components): Reduce false positives when hiding mix playlists
Implementation references taken from github.com/inotia00/revanced-integrations/commit/cfaf3d6356f316623ad32b10719b1b5ef0ba25b9
2023-11-12 17:08:50 +01:00
oSumAtrIX
e1dc067bdb feat(YouTube): Add Enable slide to seek patch
Implementation references taken from github.com/inotia00/revanced-patches/commit/0ede1987544aa0068f28665c6c029df23a30afe2
2023-11-12 17:08:50 +01:00
oSumAtrIX
8c98a6065d feat(YouTube): Add Remove tracking query parameter patch
Implementation references taken from github.com/inotia00/revanced-patches/commit/4037d9c85b7e37f8635f8fdcc1efea85dcddb5e2.
2023-11-12 17:08:49 +01:00
oSumAtrIX
826f5b7006 feat(YouTube - Bypass URL redirects): Support version 18.43.45 2023-11-12 17:08:49 +01:00
oSumAtrIX
6aca8d518f feat(YouTube - Seekbar tapping): Support version 18.43.45 2023-11-12 17:08:49 +01:00
oSumAtrIX
a0cfa1f3e0 feat(YouTube): Support version 18.43.45 for Playback speed and Restore old video quality menu 2023-11-12 17:08:47 +01:00
oSumAtrIX
1a00ed958e feat(YouTube - Navigation buttons): Support version 18.43.45 2023-11-12 17:02:41 +01:00
oSumAtrIX
0eb2c19787 feat(YouTube - Hide timestamp): Support version 18.43.45 2023-11-12 17:02:41 +01:00
semantic-release-bot
94fff54bae chore(release): 2.197.0-dev.1 [skip ci]
# [2.197.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.196.1-dev.6...v2.197.0-dev.1) (2023-11-12)

### Features

* **Twitch:** Support version `17.0.0` ([#3250](https://github.com/ReVanced/revanced-patches/issues/3250)) ([0441dc9](0441dc946a))
2023-11-12 14:51:48 +00:00
LizenzFass78851
0441dc946a feat(Twitch): Support version 17.0.0 (#3250) 2023-11-12 15:49:30 +01:00
semantic-release-bot
524ed552a3 chore(release): 2.196.1-dev.6 [skip ci]
## [2.196.1-dev.6](https://github.com/ReVanced/revanced-patches/compare/v2.196.1-dev.5...v2.196.1-dev.6) (2023-11-11)

### Bug Fixes

* **YouTube - Client spoof:** Fix low resolution precise seeking thumbnails ([#3249](https://github.com/ReVanced/revanced-patches/issues/3249)) ([2532bff](2532bff8e5))
2023-11-11 18:25:36 +00:00
LisoUseInAIKyrios
2532bff8e5 fix(YouTube - Client spoof): Fix low resolution precise seeking thumbnails (#3249) 2023-11-11 20:22:53 +02:00
semantic-release-bot
7236dee006 chore(release): 2.196.1-dev.5 [skip ci]
## [2.196.1-dev.5](https://github.com/ReVanced/revanced-patches/compare/v2.196.1-dev.4...v2.196.1-dev.5) (2023-11-10)

### Bug Fixes

* **Remove screenshot restriction:** Improve reliability ([#2938](https://github.com/ReVanced/revanced-patches/issues/2938)) ([f9b7c31](f9b7c31ba9))
2023-11-10 01:08:14 +00:00
Linus
f9b7c31ba9 fix(Remove screenshot restriction): Improve reliability (#2938)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-11-10 02:05:36 +01:00
semantic-release-bot
14017311f0 chore(release): 2.196.1-dev.4 [skip ci]
## [2.196.1-dev.4](https://github.com/ReVanced/revanced-patches/compare/v2.196.1-dev.3...v2.196.1-dev.4) (2023-11-09)

### Bug Fixes

* **YouTube - SponsorBlock:** Rename "Preview/Recap" category to "Preview/Recap/Hook" ([#3245](https://github.com/ReVanced/revanced-patches/issues/3245)) ([79c2f04](79c2f04383))
2023-11-09 07:26:28 +00:00
Ajay Ramachandran
79c2f04383 fix(YouTube - SponsorBlock): Rename "Preview/Recap" category to "Preview/Recap/Hook" (#3245) 2023-11-09 08:23:46 +01:00
semantic-release-bot
1468edfbc8 chore(release): 2.196.1-dev.3 [skip ci]
## [2.196.1-dev.3](https://github.com/ReVanced/revanced-patches/compare/v2.196.1-dev.2...v2.196.1-dev.3) (2023-11-06)

### Bug Fixes

* **Nyx Music Plaer - Unlock pro:** Constrain to last working version ([8ec276a](8ec276aac9))
2023-11-06 17:07:09 +00:00
oSumAtrIX
8ec276aac9 fix(Nyx Music Plaer - Unlock pro): Constrain to last working version 2023-11-06 18:04:24 +01:00
semantic-release-bot
4a7d723290 chore(release): 2.196.1-dev.2 [skip ci]
## [2.196.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.196.1-dev.1...v2.196.1-dev.2) (2023-11-06)

### Bug Fixes

* **YouTube:** Rename `Restore old seekbar thumbnails` and `Restore old quality menu` ([#3235](https://github.com/ReVanced/revanced-patches/issues/3235)) ([0f242a6](0f242a6aaa))
2023-11-06 12:00:43 +00:00
LisoUseInAIKyrios
0f242a6aaa fix(YouTube): Rename Restore old seekbar thumbnails and Restore old quality menu (#3235) 2023-11-06 13:58:31 +02:00
semantic-release-bot
2fb76f779b chore(release): 2.196.1-dev.1 [skip ci]
## [2.196.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.196.0...v2.196.1-dev.1) (2023-11-06)

### Bug Fixes

* **YouTube - Theme:** Use consistent patch option descriptions ([#3231](https://github.com/ReVanced/revanced-patches/issues/3231)) ([278f204](278f204463))
2023-11-06 02:41:50 +00:00
KobeW50
278f204463 fix(YouTube - Theme): Use consistent patch option descriptions (#3231) 2023-11-06 03:38:49 +01:00
semantic-release-bot
943235f770 chore(release): 2.196.0 [skip ci]
# [2.196.0](https://github.com/ReVanced/revanced-patches/compare/v2.195.0...v2.196.0) (2023-11-04)

### Bug Fixes

* **YouTube - Announcements:** Do not end descriptions with punctuation ([124380f](124380f738))
* **YouTube - Custom branding:** Set default values for patch options ([01e8938](01e8938227))
* **YouTube - Player flyout menu:** Restore functionality ([#3163](https://github.com/ReVanced/revanced-patches/issues/3163)) ([0496a81](0496a814d3))
* **YouTube - ReturnYouTubeDislike:** Fix RYD prefetching home feed Shorts ([#3195](https://github.com/ReVanced/revanced-patches/issues/3195)) ([3740494](3740494f1b))
* **YouTube - Theme:** Fix patch error ([98483ba](98483ba1e8))

### Features

* **Digitales Amt:** Bump compatibility to `3.0.2` ([#3217](https://github.com/ReVanced/revanced-patches/issues/3217)) ([afd2766](afd2766b0d))
* **ID Austria:** Constrain compatibility to last working version ([#3196](https://github.com/ReVanced/revanced-patches/issues/3196)) ([2e9be4e](2e9be4ea8f))
* **Sony Headphones Connect - Remove notification badge:** Constrain to last working version ([b1047dc](b1047dcdb9))
* **YouTube - Announcements:** Clarify announcements origin ([9564fd2](9564fd2b7c))
* **YouTube - Announcements:** Clarify announcements origin in patch description ([#3175](https://github.com/ReVanced/revanced-patches/issues/3175)) ([ea419a6](ea419a6e5f))
* **YouTube - Client spoof:** Update current video id ([82949a0](82949a098c))
* **YouTube - Disable precise seeking gesture:** Use better patch name ([4874853](4874853cda))
* **YouTube - Hide layout components:** Hide video quality menu footer ([acd9a73](acd9a735df))
* **YouTube - Theme:** Add set of light and dark themes to chose from ([f49f8b4](f49f8b47e3))
* **YouTube - Theme:** Improve patch option descriptions ([38bcdf9](38bcdf9327))
* **YouTube:** Add `Disable fullscreen ambient mode` patch ([340dc59](340dc59f74))
* **YouTube:** Add `Disable suggested video end screen` patch ([d5e226b](d5e226b449))
* **YouTube:** Add `Enable old seekbar thumbnails` patch ([0756f81](0756f81547))

### Reverts

* Revert "fix(YouTube - Minimized playback): Fix pip incorrectly showing for Short playback (#3170)" ([358b367](358b367408)), closes [#3170](https://github.com/ReVanced/revanced-patches/issues/3170)
2023-11-04 21:13:21 +00:00
oSumAtrIX
3e224e6379 chore: Merge branch dev to main (#3171) 2023-11-04 22:11:09 +01:00
semantic-release-bot
58e923f5f8 chore(release): 2.196.0-dev.14 [skip ci]
# [2.196.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v2.196.0-dev.13...v2.196.0-dev.14) (2023-11-04)

### Features

* **Digitales Amt:** Bump compatibility to `3.0.2` ([#3217](https://github.com/ReVanced/revanced-patches/issues/3217)) ([afd2766](afd2766b0d))
* **Sony Headphones Connect - Remove notification badge:** Constrain to last working version ([b1047dc](b1047dcdb9))
2023-11-04 18:21:39 +00:00
oSumAtrIX
b1047dcdb9 feat(Sony Headphones Connect - Remove notification badge): Constrain to last working version 2023-11-04 19:18:49 +01:00
semantic-release-bot
8acc23cb9b chore(release): 2.196.0-dev.14 [skip ci]
# [2.196.0-dev.14](https://github.com/ReVanced/revanced-patches/compare/v2.196.0-dev.13...v2.196.0-dev.14) (2023-11-04)

### Features

* **Digitales Amt:** Bump compatibility to `3.0.2` ([#3217](https://github.com/ReVanced/revanced-patches/issues/3217)) ([f933d2c](f933d2c537))
2023-11-04 19:18:49 +01:00
fe
afd2766b0d feat(Digitales Amt): Bump compatibility to 3.0.2 (#3217)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-11-04 19:18:48 +01:00
semantic-release-bot
b09b59493b chore(release): 2.196.0-dev.13 [skip ci]
# [2.196.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v2.196.0-dev.12...v2.196.0-dev.13) (2023-11-03)

### Bug Fixes

* **YouTube - Player flyout menu:** Restore functionality ([#3163](https://github.com/ReVanced/revanced-patches/issues/3163)) ([0496a81](0496a814d3))
2023-11-03 18:30:49 +00:00
nullptr
0496a814d3 fix(YouTube - Player flyout menu): Restore functionality (#3163) 2023-11-03 19:27:32 +01:00
semantic-release-bot
e2ef688824 chore(release): 2.196.0-dev.12 [skip ci]
# [2.196.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v2.196.0-dev.11...v2.196.0-dev.12) (2023-11-03)
2023-11-03 17:27:54 +00:00
oSumAtrIX
7832787c7f build(Needs bump): Bump dependencies 2023-11-03 18:24:26 +01:00
semantic-release-bot
e671258572 chore(release): 2.196.0-dev.11 [skip ci]
# [2.196.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v2.196.0-dev.10...v2.196.0-dev.11) (2023-10-25)

### Bug Fixes

* **YouTube - Custom branding:** Set default values for patch options ([01e8938](01e8938227))
2023-10-25 21:04:48 +00:00
oSumAtrIX
01e8938227 fix(YouTube - Custom branding): Set default values for patch options 2023-10-25 23:01:58 +02:00
semantic-release-bot
e73e1a2898 chore(release): 2.196.0-dev.10 [skip ci]
# [2.196.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v2.196.0-dev.9...v2.196.0-dev.10) (2023-10-25)

### Features

* **YouTube - Client spoof:** Update current video id ([82949a0](82949a098c))
2023-10-25 18:22:35 +00:00
oSumAtrIX
82949a098c feat(YouTube - Client spoof): Update current video id
Previously this patch was only working when other patches depended on a patch that hooked the current video id. If you did not use these patches, this patch would not work as the video id would not be hooked.
2023-10-25 20:19:57 +02:00
semantic-release-bot
fd83834788 chore(release): 2.196.0-dev.9 [skip ci]
# [2.196.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v2.196.0-dev.8...v2.196.0-dev.9) (2023-10-25)

### Features

* **YouTube - Disable precise seeking gesture:** Use better patch name ([4874853](4874853cda))
* **YouTube:** Add `Enable old seekbar thumbnails` patch ([0756f81](0756f81547))
2023-10-25 17:37:15 +00:00
oSumAtrIX
4874853cda feat(YouTube - Disable precise seeking gesture): Use better patch name
The new name now is taken from what YouTube names this feature.
2023-10-25 19:34:27 +02:00
oSumAtrIX
0756f81547 feat(YouTube): Add Enable old seekbar thumbnails patch 2023-10-25 19:34:26 +02:00
semantic-release-bot
47f96563a9 chore(release): 2.196.0-dev.8 [skip ci]
# [2.196.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v2.196.0-dev.7...v2.196.0-dev.8) (2023-10-25)

### Features

* **ID Austria:** Constrain compatibility to last working version ([#3196](https://github.com/ReVanced/revanced-patches/issues/3196)) ([2e9be4e](2e9be4ea8f))
2023-10-25 11:17:57 +00:00
fe
2e9be4ea8f feat(ID Austria): Constrain compatibility to last working version (#3196) 2023-10-25 13:15:12 +02:00
semantic-release-bot
d76d96c1aa chore(release): 2.196.0-dev.7 [skip ci]
# [2.196.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v2.196.0-dev.6...v2.196.0-dev.7) (2023-10-24)

### Features

* **YouTube:** Add `Disable fullscreen ambient mode` patch ([340dc59](340dc59f74))
* **YouTube:** Add `Disable suggested video end screen` patch ([d5e226b](d5e226b449))
2023-10-24 23:50:08 +00:00
oSumAtrIX
d5e226b449 feat(YouTube): Add Disable suggested video end screen patch 2023-10-25 01:47:23 +02:00
oSumAtrIX
340dc59f74 feat(YouTube): Add Disable fullscreen ambient mode patch 2023-10-25 01:47:22 +02:00
semantic-release-bot
a75014b390 chore(release): 2.196.0-dev.6 [skip ci]
# [2.196.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v2.196.0-dev.5...v2.196.0-dev.6) (2023-10-24)

### Bug Fixes

* **YouTube - ReturnYouTubeDislike:** Fix RYD prefetching home feed Shorts ([#3195](https://github.com/ReVanced/revanced-patches/issues/3195)) ([3740494](3740494f1b))
2023-10-24 20:37:07 +00:00
LisoUseInAIKyrios
3740494f1b fix(YouTube - ReturnYouTubeDislike): Fix RYD prefetching home feed Shorts (#3195) 2023-10-24 23:34:23 +03:00
semantic-release-bot
7529d9d3ed chore(release): 2.196.0-dev.5 [skip ci]
# [2.196.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v2.196.0-dev.4...v2.196.0-dev.5) (2023-10-24)

### Bug Fixes

* **YouTube - Theme:** Fix patch error ([98483ba](98483ba1e8))
2023-10-24 08:46:51 +00:00
LisoUseInAIKyrios
98483ba1e8 fix(YouTube - Theme): Fix patch error 2023-10-24 11:43:15 +03:00
semantic-release-bot
ddbd7a83b5 chore(release): 2.196.0-dev.4 [skip ci]
# [2.196.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v2.196.0-dev.3...v2.196.0-dev.4) (2023-10-23)

### Features

* **YouTube - Hide layout components:** Hide video quality menu footer ([acd9a73](acd9a735df))
2023-10-23 19:50:26 +00:00
oSumAtrIX
acd9a735df feat(YouTube - Hide layout components): Hide video quality menu footer 2023-10-23 21:46:39 +02:00
semantic-release-bot
c044ed65b8 chore(release): 2.196.0-dev.3 [skip ci]
# [2.196.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v2.196.0-dev.2...v2.196.0-dev.3) (2023-10-23)

### Features

* **YouTube - Theme:** Add set of light and dark themes to chose from ([f49f8b4](f49f8b47e3))
* **YouTube - Theme:** Improve patch option descriptions ([38bcdf9](38bcdf9327))
2023-10-23 00:09:12 +00:00
oSumAtrIX
38bcdf9327 feat(YouTube - Theme): Improve patch option descriptions 2023-10-23 02:01:03 +02:00
oSumAtrIX
f49f8b47e3 feat(YouTube - Theme): Add set of light and dark themes to chose from 2023-10-23 02:01:03 +02:00
oSumAtrIX
d2cd6258a9 build(Needs bump): Bump dependencies 2023-10-23 02:01:02 +02:00
oSumAtrIX
fec25103c5 build: Bump Kotlin Gradle plugin version 2023-10-23 02:00:44 +02:00
semantic-release-bot
704e097b4e chore(release): 2.196.0-dev.2 [skip ci]
# [2.196.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.196.0-dev.1...v2.196.0-dev.2) (2023-10-22)

### Features

* **YouTube - Announcements:** Clarify announcements origin in patch description ([#3175](https://github.com/ReVanced/revanced-patches/issues/3175)) ([ea419a6](ea419a6e5f))
2023-10-22 21:50:22 +00:00
KobeW50
ea419a6e5f feat(YouTube - Announcements): Clarify announcements origin in patch description (#3175) 2023-10-22 23:47:46 +02:00
oSumAtrIX
312dc1eb6f docs: Use shorter heading 2023-10-21 12:07:13 +02:00
semantic-release-bot
7dc8ec9f34 chore(release): 2.196.0-dev.1 [skip ci]
# [2.196.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.195.1-dev.2...v2.196.0-dev.1) (2023-10-20)

### Bug Fixes

* **YouTube - Announcements:** Do not end descriptions with punctuation ([124380f](124380f738))

### Features

* **YouTube - Announcements:** Clarify announcements origin ([9564fd2](9564fd2b7c))
2023-10-20 18:12:03 +00:00
oSumAtrIX
9564fd2b7c feat(YouTube - Announcements): Clarify announcements origin 2023-10-20 20:08:30 +02:00
oSumAtrIX
124380f738 fix(YouTube - Announcements): Do not end descriptions with punctuation
Because all settings descriptions don't either.
2023-10-20 20:08:30 +02:00
semantic-release-bot
777b6f6160 chore(release): 2.195.1-dev.2 [skip ci]
## [2.195.1-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.195.1-dev.1...v2.195.1-dev.2) (2023-10-20)

### Reverts

* Revert "fix(YouTube - Minimized playback): Fix pip incorrectly showing for Short playback (#3170)" ([358b367](358b367408)), closes [#3170](https://github.com/ReVanced/revanced-patches/issues/3170)
* Revert "chore(release): 2.195.1-dev.1 [skip ci]" ([68eee9b](68eee9b5e2))
2023-10-20 10:44:30 +00:00
LisoUseInAIKyrios
358b367408 Revert "fix(YouTube - Minimized playback): Fix pip incorrectly showing for Short playback (#3170)"
This reverts commit b3fcb0e92b.
2023-10-20 13:38:06 +03:00
LisoUseInAIKyrios
68eee9b5e2 Revert "chore(release): 2.195.1-dev.1 [skip ci]"
This reverts commit dc7bf5c760.
2023-10-20 13:38:06 +03:00
semantic-release-bot
dc7bf5c760 chore(release): 2.195.1-dev.1 [skip ci]
## [2.195.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.195.0...v2.195.1-dev.1) (2023-10-20)

### Bug Fixes

* **YouTube - Minimized playback:** Fix pip incorrectly showing for Short playback ([#3170](https://github.com/ReVanced/revanced-patches/issues/3170)) ([b3fcb0e](b3fcb0e92b))
2023-10-20 10:21:27 +00:00
LisoUseInAIKyrios
b3fcb0e92b fix(YouTube - Minimized playback): Fix pip incorrectly showing for Short playback (#3170) 2023-10-20 13:18:22 +03:00
semantic-release-bot
fb3cd9a3ad chore(release): 2.195.0 [skip ci]
# [2.195.0](https://github.com/ReVanced/revanced-patches/compare/v2.194.0...v2.195.0) (2023-10-20)

### Bug Fixes

* Indent option description correctly ([0dc0676](0dc06768d9))
* **Reddit - Sanitize sharing links:** Restore compatibility with newer versions of the app ([c14642a](c14642a34b))
* **YouTube - Hide layout components:** Hide new channel watermark component ([5184422](51844222c8))

### Features

* **YouTube - Theme:** Disable gradient loading screen ([daf125a](daf125a863))
* **YouTube:** Add `Announcements` patch ([#3166](https://github.com/ReVanced/revanced-patches/issues/3166)) ([8718517](87185171da))
* **YouTube:** Add `Spoof device dimensions` patch ([b5a7258](b5a7258f74))
2023-10-20 01:26:08 +00:00
oSumAtrIX
2a047ed1b6 chore: Merge branch dev to main (#3140) 2023-10-20 03:22:27 +02:00
semantic-release-bot
0d1ab25cb5 chore(release): 2.195.0-dev.5 [skip ci]
# [2.195.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v2.195.0-dev.4...v2.195.0-dev.5) (2023-10-20)

### Features

* **YouTube:** Add `Announcements` patch ([#3166](https://github.com/ReVanced/revanced-patches/issues/3166)) ([8718517](87185171da))
2023-10-20 01:17:24 +00:00
oSumAtrIX
87185171da feat(YouTube): Add Announcements patch (#3166) 2023-10-20 03:13:52 +02:00
semantic-release-bot
d9c3748314 chore(release): 2.195.0-dev.4 [skip ci]
# [2.195.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v2.195.0-dev.3...v2.195.0-dev.4) (2023-10-19)

### Bug Fixes

* **Reddit - Sanitize sharing links:** Restore compatibility with newer versions of the app ([c14642a](c14642a34b))
2023-10-19 15:07:41 +00:00
oSumAtrIX
c14642a34b fix(Reddit - Sanitize sharing links): Restore compatibility with newer versions of the app 2023-10-19 17:04:53 +02:00
semantic-release-bot
af2df3edd9 chore(release): 2.195.0-dev.3 [skip ci]
# [2.195.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v2.195.0-dev.2...v2.195.0-dev.3) (2023-10-19)

### Features

* **YouTube:** Add `Spoof device dimensions` patch ([b5a7258](b5a7258f74))
2023-10-19 01:10:15 +00:00
oSumAtrIX
b5a7258f74 feat(YouTube): Add Spoof device dimensions patch 2023-10-19 03:06:58 +02:00
LisoUseInAIKyrios
28fa499974 chore: fix typo 2023-10-14 14:27:27 +03:00
semantic-release-bot
5fa89b6846 chore(release): 2.195.0-dev.2 [skip ci]
# [2.195.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v2.195.0-dev.1...v2.195.0-dev.2) (2023-10-14)

### Bug Fixes

* Indent option description correctly ([0dc0676](0dc06768d9))
2023-10-14 10:18:19 +00:00
LisoUseInAIKyrios
9588a47880 chore: fix build 2023-10-14 13:14:46 +03:00
oSumAtrIX
0dc06768d9 fix: Indent option description correctly 2023-10-14 05:46:24 +02:00
oSumAtrIX
a04232ea91 build: Publish artifacts on Jitpack 2023-10-14 04:50:43 +02:00
semantic-release-bot
49b47fa772 chore(release): 2.195.0-dev.1 [skip ci]
# [2.195.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v2.194.1-dev.1...v2.195.0-dev.1) (2023-10-13)

### Features

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

### Bug Fixes

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

### Bug Fixes

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

### Features

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

### Bug Fixes

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

### Features

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

### Bug Fixes

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

### Features

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

### Bug Fixes

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

### Bug Fixes

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

### Features

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

### Features

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Features

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

### Features

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

### Features

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

### Bug Fixes

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

### Features

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

### Bug Fixes

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

### Features

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

### Features

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

### Bug Fixes

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

### Bug Fixes

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

### Features

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

### Bug Fixes

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

### Bug Fixes

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

### Features

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

### Bug Fixes

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

### Bug Fixes

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

### Features

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

### Features

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

### Bug Fixes

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

### Features

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

### Bug Fixes

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

### Features

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

### Features

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

### Features

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Features

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

### Features

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

### Features

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Features

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

### Bug Fixes

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

### Features

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Features

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

### Features

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

### Features

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

### Features

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

### Features

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

### Bug Fixes

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

### Features

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

### Features

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

### Bug Fixes

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

### Features

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Features

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

### Features

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

### Bug Fixes

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

### Features

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

### Features

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

### Features

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Features

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

### Features

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

### Features

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

### Features

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

### Features

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

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

### Features

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

### Features

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

### Features

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

### Features

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

### Bug Fixes

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

### Features

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

### Features

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

### Features

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

### Bug Fixes

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

### Bug Fixes

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

### Features

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

### Features

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

### Bug Fixes

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

### Features

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

### Features

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

### Features

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

### Features

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

### Bug Fixes

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

### Features

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

### Bug Fixes

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

### Features

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

### Bug Fixes

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

### Bug Fixes

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

### Features

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

### Bug Fixes

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

### Features

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

### Features

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

### Bug Fixes

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

### Bug Fixes

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

### Features

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

### Features

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Features

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

### Features

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

### Bug Fixes

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

### Bug Fixes

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

### Features

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Features

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

### Features

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

### Bug Fixes

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

### Features

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Features

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

### Bug Fixes

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

### Features

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

### Features

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Features

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

### Features

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Features

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

### Bug Fixes

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

### Features

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

### Features

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

### Features

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

### Features

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

### Bug Fixes

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

### Features

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Features

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

### Features

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

### Features

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

### Bug Fixes

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

### Features

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

### Features

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

### Features

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

### Features

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

### Features

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Bug Fixes

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

### Features

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

### Bug Fixes

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

### Features

* **infinityforreddit:** add `change-oauth-client-id` patch ([#2452](https://github.com/revanced/revanced-patches/issues/2452)) ([488b073](488b0731fa))
2023-06-24 11:40:44 +00:00
johnconner122
5d6cd7de55 fix(syncforreddit): use correct overriding method signature (#2483) 2023-06-24 13:37:49 +02:00
johnconner122
488b0731fa feat(infinityforreddit): add change-oauth-client-id patch (#2452)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-06-24 02:55:46 +02:00
1609 changed files with 116935 additions and 24050 deletions

3
.editorconfig Normal file
View File

@@ -0,0 +1,3 @@
[*.{kt,kts}]
ktlint_code_style = intellij_idea
ktlint_standard_no-wildcard-imports = disabled

9
.gitattributes vendored Normal file
View File

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

View File

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

110
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@@ -0,0 +1,110 @@
name: 🐞 Bug report
description: Report a bug or an issue.
title: 'bug: '
labels: ['Bug report']
body:
- type: markdown
attributes:
value: |
<p align="center">
<picture>
<source
width="256px"
media="(prefers-color-scheme: dark)"
srcset="https://raw.githubusercontent.com/revanced/revanced-patches/main/assets/revanced-headline/revanced-headline-vertical-dark.svg"
>
<img
width="256px"
src="https://raw.githubusercontent.com/revanced/revanced-patches/main/assets/revanced-headline/revanced-headline-vertical-light.svg"
>
</picture>
<br>
<a href="https://revanced.app/">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/revanced/revanced-patches/main/assets/revanced-logo/revanced-logo.svg" />
<img height="24px" src="https://raw.githubusercontent.com/revanced/revanced-patches/main/assets/revanced-logo/revanced-logo.svg" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://github.com/ReVanced">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://i.ibb.co/dMMmCrW/Git-Hub-Mark.png" />
<img height="24px" src="https://i.ibb.co/9wV3HGF/Git-Hub-Mark-Light.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="http://revanced.app/discord">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032563-d4e084b7-244e-4358-af50-26bde6dd4996.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032563-d4e084b7-244e-4358-af50-26bde6dd4996.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://reddit.com/r/revancedapp">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032351-9d9d5619-8ef7-470a-9eec-2744ece54553.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032351-9d9d5619-8ef7-470a-9eec-2744ece54553.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://t.me/app_revanced">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032213-faf25ab8-0bc3-4a94-a730-b524c96df124.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032213-faf25ab8-0bc3-4a94-a730-b524c96df124.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://x.com/revancedapp">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/93124920/270180600-7c1b38bf-889b-4d68-bd5e-b9d86f91421a.png">
<img height="24px" src="https://user-images.githubusercontent.com/93124920/270108715-d80743fa-b330-4809-b1e6-79fbdc60d09c.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://www.youtube.com/@ReVanced">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032714-c51c7492-0666-44ac-99c2-f003a695ab50.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032714-c51c7492-0666-44ac-99c2-f003a695ab50.png" />
</picture>
</a>
<br>
<br>
Continuing the legacy of Vanced
</p>
# ReVanced Patches bug report
Before creating a new bug report, please keep the following in mind:
- **Do not submit a duplicate bug report**: Search for existing bug reports [here](https://github.com/ReVanced/revanced-patches/issues?q=label%3A%22Bug+report%22).
- **Review the contribution guidelines**: Make sure your bug report adheres to it. You can find the guidelines [here](https://github.com/ReVanced/revanced-patches/blob/main/CONTRIBUTING.md).
- **Do not use the issue page for support**: If you need help or have questions, check out other platforms on [revanced.app](https://revanced.app).
- type: textarea
attributes:
label: Bug description
description: |
- Describe your bug in detail
- Add steps to reproduce the bug if possible (Step 1. ... Step 2. ...)
- Add images and videos if possible
- List used patches if applicable
validations:
required: true
- type: textarea
attributes:
label: Error logs
description: Exceptions can be captured by running `logcat | grep AndroidRuntime` in a shell.
render: shell
- type: textarea
attributes:
label: Solution
description: If applicable, add a possible solution to the bug.
- type: textarea
attributes:
label: Additional context
description: Add additional context here.
- type: checkboxes
id: acknowledgements
attributes:
label: Acknowledgements
description: Your bug report will be closed if you don't follow the checklist below.
options:
- label: I have checked all open and closed bug reports and this is not a duplicate.
required: true
- label: I have chosen an appropriate title.
required: true
- label: All requested information has been provided properly.
required: true

View File

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

View File

@@ -0,0 +1,106 @@
name: ⭐ Feature request
description: Create a detailed request for a new feature.
title: 'feat: '
labels: ['Feature request']
body:
- type: markdown
attributes:
value: |
<p align="center">
<picture>
<source
width="256px"
media="(prefers-color-scheme: dark)"
srcset="https://raw.githubusercontent.com/revanced/revanced-patches/main/assets/revanced-headline/revanced-headline-vertical-dark.svg"
>
<img
width="256px"
src="https://raw.githubusercontent.com/revanced/revanced-patches/main/assets/revanced-headline/revanced-headline-vertical-light.svg"
>
</picture>
<br>
<a href="https://revanced.app/">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/revanced/revanced-patches/main/assets/revanced-logo/revanced-logo.svg" />
<img height="24px" src="https://raw.githubusercontent.com/revanced/revanced-patches/main/assets/revanced-logo/revanced-logo.svg" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://github.com/ReVanced">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://i.ibb.co/dMMmCrW/Git-Hub-Mark.png" />
<img height="24px" src="https://i.ibb.co/9wV3HGF/Git-Hub-Mark-Light.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="http://revanced.app/discord">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032563-d4e084b7-244e-4358-af50-26bde6dd4996.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032563-d4e084b7-244e-4358-af50-26bde6dd4996.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://reddit.com/r/revancedapp">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032351-9d9d5619-8ef7-470a-9eec-2744ece54553.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032351-9d9d5619-8ef7-470a-9eec-2744ece54553.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://t.me/app_revanced">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032213-faf25ab8-0bc3-4a94-a730-b524c96df124.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032213-faf25ab8-0bc3-4a94-a730-b524c96df124.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://x.com/revancedapp">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/93124920/270180600-7c1b38bf-889b-4d68-bd5e-b9d86f91421a.png">
<img height="24px" src="https://user-images.githubusercontent.com/93124920/270108715-d80743fa-b330-4809-b1e6-79fbdc60d09c.png" />
</picture>
</a>&nbsp;&nbsp;&nbsp;
<a href="https://www.youtube.com/@ReVanced">
<picture>
<source height="24px" media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/13122796/178032714-c51c7492-0666-44ac-99c2-f003a695ab50.png" />
<img height="24px" src="https://user-images.githubusercontent.com/13122796/178032714-c51c7492-0666-44ac-99c2-f003a695ab50.png" />
</picture>
</a>
<br>
<br>
Continuing the legacy of Vanced
</p>
# ReVanced Patches feature request
Before creating a new feature request, please keep the following in mind:
- **Do not submit a duplicate feature request**: Search for existing feature requests [here](https://github.com/ReVanced/revanced-patches/issues?q=label%3A%22Feature+request%22).
- **Review the contribution guidelines**: Make sure your feature request adheres to it. You can find the guidelines [here](https://github.com/ReVanced/revanced-patches/blob/main/CONTRIBUTING.md).
- **Do not use the issue page for support**: If you need help or have questions, check out other platforms on [revanced.app](https://revanced.app).
- type: textarea
attributes:
label: Feature description
description: |
- Describe your feature in detail
- Add images, videos, links, examples, references, etc. if possible
- Add the target application name in case you request a new patch
- type: textarea
attributes:
label: Motivation
description: |
A strong motivation is necessary for a feature request to be considered.
- Why should this feature be implemented?
- What is the explicit use case?
- What are the benefits?
- What makes this feature important?
validations:
required: true
- type: checkboxes
id: acknowledgements
attributes:
label: Acknowledgements
description: Your feature request will be closed if you don't follow the checklist below.
options:
- label: I have checked all open and closed feature requests and this is not a duplicate
required: true
- label: I have chosen an appropriate title.
required: true
- label: All requested information has been provided properly.
required: true

View File

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

2
.github/config.yml vendored
View File

@@ -1,2 +1,2 @@
firstPRMergeComment: >
Thank you for contributing to ReVanced. Join us on [Discord](https://revanced.app/discord) if you want to receive a contributor role.
Thank you for contributing to ReVanced. Join us on [Discord](https://revanced.app/discord) to receive a role for your contribution.

22
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,22 @@
version: 2
updates:
- package-ecosystem: github-actions
labels: []
directory: /
target-branch: dev
schedule:
interval: monthly
- package-ecosystem: npm
labels: []
directory: /
target-branch: dev
schedule:
interval: monthly
- package-ecosystem: gradle
labels: []
directory: /
target-branch: dev
schedule:
interval: monthly

View File

@@ -0,0 +1,31 @@
name: Build pull request
on:
workflow_dispatch:
pull_request:
branches:
- dev
jobs:
release:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: "17"
- name: Cache Gradle
uses: burrunan/gradle-cache-action@v1
- name: Build
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./gradlew build --no-daemon

View File

@@ -1,4 +1,4 @@
name: PR to main
name: Open a PR to main
on:
push:
@@ -7,7 +7,7 @@ on:
workflow_dispatch:
env:
MESSAGE: merge branch `${{ github.head_ref || github.ref_name }}` to `main`
MESSAGE: Merge branch `${{ github.head_ref || github.ref_name }}` to `main`
jobs:
pull-request:
@@ -15,16 +15,17 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Open pull request
uses: repo-sync/pull-request@v2
with:
destination_branch: 'main'
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
## Before merging this PR
- [ ] Pull translations from Crowdin
pr_draft: true

36
.github/workflows/pull_strings.yml vendored Normal file
View File

@@ -0,0 +1,36 @@
name: Pull strings
on:
workflow_dispatch:
jobs:
pull:
name: Pull strings
permissions:
contents: write
pull-requests: write
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: dev
- name: Pull strings
uses: crowdin/github-action@v2
with:
config: crowdin.yml
download_translations: true
localization_branch_name: feat/translations
create_pull_request: true
pull_request_title: "chore: Sync translations"
pull_request_body: "Sync translations from [crowdin.com/project/revanced](https://crowdin.com/project/revanced)"
pull_request_base_branch_name: "dev"
commit_message: "chore: Sync translations"
github_user_name: revanced-bot
github_user_email: github@revanced.app
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}

28
.github/workflows/push_strings.yml vendored Normal file
View File

@@ -0,0 +1,28 @@
name: Push strings
on:
workflow_dispatch:
push:
branches:
- dev
paths:
- patches/src/main/resources/addresources/values/strings.xml
jobs:
push:
name: Push strings
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Push strings
uses: crowdin/github-action@v2
with:
config: crowdin.yml
upload_sources: true
env:
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}

View File

@@ -6,40 +6,54 @@ on:
branches:
- main
- dev
pull_request:
branches:
- main
- dev
jobs:
release:
name: Release
permissions:
contents: write
packages: write
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
# Make sure the release step uses its own credentials:
# https://github.com/cycjimmy/semantic-release-action#private-packages
persist-credentials: false
fetch-depth: 0
- name: Cache
uses: actions/cache@v3
- name: Setup Java
uses: actions/setup-java@v4
with:
path: |
${{ runner.home }}/.gradle/caches
${{ runner.home }}/.gradle/wrapper
.gradle
build
node_modules
key: ${{ runner.os }}-gradle-npm-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties', 'package-lock.json') }}
- name: Build with Gradle
distribution: "temurin"
java-version: "17"
- name: Cache Gradle
uses: burrunan/gradle-cache-action@v1
- name: Build
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./gradlew generateMeta clean --no-daemon
- name: Setup semantic-release
run: ./gradlew build clean
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "lts/*"
cache: 'npm'
- name: Install dependencies
run: npm install
- name: Import GPG key
uses: crazy-max/ghaction-import-gpg@v6
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.GPG_PASSPHRASE }}
fingerprint: ${{ vars.GPG_FINGERPRINT }}
- name: Release
env:
GITHUB_TOKEN: ${{ secrets.REPOSITORY_PUSH_ACCESS }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: npm exec semantic-release

View File

@@ -0,0 +1,18 @@
name: Update Gradle wrapper
on:
schedule:
- cron: "0 0 1 * *"
workflow_dispatch:
jobs:
update:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Update Gradle Wrapper
uses: gradle-update/update-gradle-wrapper-action@v1
with:
target-branch: dev

5
.gitignore vendored
View File

@@ -122,5 +122,8 @@ gradle-app.setting
# Dependency directories
node_modules/
# gradle properties, due to Github token
# Gradle properties, due to Github token
./gradle.properties
# One package is called the same as the Gradle build folder
!**/src/**/build/

View File

@@ -10,7 +10,7 @@
[
"@semantic-release/commit-analyzer", {
"releaseRules": [
{ "type": "build", "scope": "revanced-patcher", "release": "patch" }
{ "type": "build", "scope": "Needs bump", "release": "patch" }
]
}
],
@@ -21,11 +21,10 @@
"@semantic-release/git",
{
"assets": [
"README.md",
"CHANGELOG.md",
"gradle.properties",
"patches.json"
]
],
"message": "chore: Release v${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
}
],
[
@@ -33,11 +32,8 @@
{
"assets": [
{
"path": "build/libs/*.jar"
"path": "patches/build/libs/patches-!(*sources*|*javadoc*).rvp?(.asc)"
},
{
"path": "patches.json"
}
],
successComment: false
}

File diff suppressed because it is too large Load Diff

128
CONTRIBUTING.md Normal file
View File

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

View File

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

659
README.md
View File

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

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

View File

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

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -1,83 +0,0 @@
plugins {
kotlin("jvm") version "1.8.10"
}
group = "app.revanced"
val githubUsername: String = project.findProperty("gpr.user") as? String ?: System.getenv("GITHUB_ACTOR")
val githubPassword: String = project.findProperty("gpr.key") as? String ?: System.getenv("GITHUB_TOKEN")
repositories {
mavenCentral()
mavenLocal()
maven {
url = uri("https://maven.pkg.github.com/revanced/revanced-patcher")
credentials {
username = githubUsername
password = githubPassword
}
}
// Required for FlexVer-Java
maven {
url = uri("https://repo.sleeping.town")
content {
includeGroup("com.unascribed")
}
}
}
dependencies {
implementation("app.revanced:revanced-patcher:11.0.0")
implementation("app.revanced:multidexlib2:2.5.3-a3836654")
// Required for meta
implementation("com.google.code.gson:gson:2.10.1")
// Required for FlexVer-Java
implementation("com.unascribed:flexver-java:1.0.2")
// A dependency to the Android library unfortunately fails the build,
// which is why this is required for the patch change-oauth-client-id
compileOnly(project("dummy"))
}
kotlin {
jvmToolchain(11)
}
tasks {
register<DefaultTask>("generateBundle") {
description = "Generate dex files from build and bundle them in the jar file"
dependsOn(build)
doLast {
val androidHome = System.getenv("ANDROID_HOME") ?: throw GradleException("ANDROID_HOME not found")
val d8 = "${androidHome}/build-tools/33.0.1/d8"
val input = configurations.archives.get().allArtifacts.files.files.first().absolutePath
val work = File("${buildDir}/libs")
exec {
workingDir = work
commandLine = listOf(d8, input)
}
exec {
workingDir = work
commandLine = listOf("zip", "-u", input, "classes.dex")
}
}
}
register<JavaExec>("generateMeta") {
description = "Generate metadata for this bundle"
dependsOn(build)
classpath = sourceSets["main"].runtimeClasspath
mainClass.set("app.revanced.meta.PatchesFileGenerator")
}
// Dummy task to fix the Gradle semantic-release plugin.
// Remove this if you forked it to support building only.
// Tracking issue: https://github.com/KengoTODA/gradle-semantic-release-plugin/issues/435
register<DefaultTask>("publish") {
group = "publish"
description = "Dummy task"
dependsOn(named("generateBundle"), named("generateMeta"))
}
}

8
crowdin.yml Normal file
View File

@@ -0,0 +1,8 @@
project_id_env: "CROWDIN_PROJECT_ID"
api_token_env: "CROWDIN_PERSONAL_TOKEN"
preserve_hierarchy: false
files:
- source: patches/src/main/resources/addresources/values/strings.xml
translation: patches/src/main/resources/addresources/values-%android_code%/strings.xml
skip_untranslated_strings: true

View File

@@ -1,9 +0,0 @@
plugins {
id("java")
}
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(11))
}
}

View File

@@ -1,9 +0,0 @@
package android.os;
import java.io.File;
public final class Environment {
public static File getExternalStorageDirectory() {
throw new UnsupportedOperationException("Stub");
}
}

View File

@@ -0,0 +1,5 @@
android.namespace = "app.revanced.extension"
dependencies {
compileOnly(libs.annotation)
}

View File

@@ -0,0 +1,3 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
</manifest>

View File

@@ -0,0 +1,424 @@
package app.revanced.extension.all.connectivity.wifi.spoof;
import android.app.PendingIntent;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import android.net.NetworkRequest;
import android.os.Build;
import android.os.Handler;
import androidx.annotation.RequiresApi;
/** @noinspection deprecation, unused */
public class SpoofWifiPatch {
// Used to check what the (real or fake) active network is (take a look at `hasTransport`).
private static ConnectivityManager CONNECTIVITY_MANAGER;
// If Wifi is not enabled, these are types that would pretend to be Wifi for android.net.Network (lower index = higher priority).
// This does not apply to android.net.NetworkInfo, because we can pretend that Wifi is always active there.
//
// VPN should be a fallback, because Reverse Tethering uses VPN.
private static final int[] FAKE_FALLBACK_NETWORKS = { NetworkCapabilities.TRANSPORT_ETHERNET, NetworkCapabilities.TRANSPORT_VPN };
// In order to initialize our own ConnectivityManager, if it isn't initialized yet.
public static Object getSystemService(Context context, String name) {
Object result = context.getSystemService(name);
if (CONNECTIVITY_MANAGER == null) {
if (Context.CONNECTIVITY_SERVICE.equals(name)) {
CONNECTIVITY_MANAGER = (ConnectivityManager) result;
} else {
CONNECTIVITY_MANAGER = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
}
}
return result;
}
// In order to initialize our own ConnectivityManager, if it isn't initialized yet.
public static Object getSystemService(Context context, Class<?> serviceClass) {
Object result = context.getSystemService(serviceClass);
if (CONNECTIVITY_MANAGER == null) {
if (serviceClass == ConnectivityManager.class) {
CONNECTIVITY_MANAGER = (ConnectivityManager) result;
} else {
CONNECTIVITY_MANAGER = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
}
}
return result;
}
// Simply always return Wifi as active network.
public static NetworkInfo getActiveNetworkInfo(ConnectivityManager connectivityManager) {
for (NetworkInfo networkInfo : connectivityManager.getAllNetworkInfo()) {
if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
return networkInfo;
}
}
return connectivityManager.getActiveNetworkInfo();
}
// Pretend Wifi is always connected.
public static boolean isConnected(NetworkInfo networkInfo) {
if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
return true;
}
return networkInfo.isConnected();
}
// Pretend Wifi is always connected.
public static boolean isConnectedOrConnecting(NetworkInfo networkInfo) {
if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
return true;
}
return networkInfo.isConnectedOrConnecting();
}
// Pretend Wifi is always available.
public static boolean isAvailable(NetworkInfo networkInfo) {
if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
return true;
}
return networkInfo.isAvailable();
}
// Pretend Wifi is always connected.
public static NetworkInfo.State getState(NetworkInfo networkInfo) {
if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
return NetworkInfo.State.CONNECTED;
}
return networkInfo.getState();
}
// Pretend Wifi is always connected.
public static NetworkInfo.DetailedState getDetailedState(NetworkInfo networkInfo) {
if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
return NetworkInfo.DetailedState.CONNECTED;
}
return networkInfo.getDetailedState();
}
// Pretend Wifi is enabled, so connection isn't metered.
public static boolean isActiveNetworkMetered(ConnectivityManager connectivityManager) {
return false;
}
// Returns the Wifi network, if Wifi is enabled.
// Otherwise if one of our fallbacks has a connection, return them.
// And as a last resort, return the default active network.
public static Network getActiveNetwork(ConnectivityManager connectivityManager) {
Network[] prioritizedNetworks = new Network[FAKE_FALLBACK_NETWORKS.length];
for (Network network : connectivityManager.getAllNetworks()) {
NetworkCapabilities networkCapabilities = connectivityManager.getNetworkCapabilities(network);
if (networkCapabilities == null) {
continue;
}
if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
return network;
}
if (networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)) {
for (int i = 0; i < FAKE_FALLBACK_NETWORKS.length; i++) {
int transportType = FAKE_FALLBACK_NETWORKS[i];
if (networkCapabilities.hasTransport(transportType)) {
prioritizedNetworks[i] = network;
break;
}
}
}
}
for (Network network : prioritizedNetworks) {
if (network != null) {
return network;
}
}
return connectivityManager.getActiveNetwork();
}
// If the given network is a real or fake Wifi connection, return a Wifi network.
// Otherwise fallback to default implementation.
public static NetworkInfo getNetworkInfo(ConnectivityManager connectivityManager, Network network) {
NetworkCapabilities networkCapabilities = connectivityManager.getNetworkCapabilities(network);
if (networkCapabilities != null && hasTransport(networkCapabilities, NetworkCapabilities.TRANSPORT_WIFI)) {
for (NetworkInfo networkInfo : connectivityManager.getAllNetworkInfo()) {
if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
return networkInfo;
}
}
}
return connectivityManager.getNetworkInfo(network);
}
// If we are checking if the NetworkCapabilities use Wifi, return yes if
// - it is a real Wifi connection,
// - or the NetworkCapabilities are from a network pretending being a Wifi network.
// Otherwise fallback to default implementation.
public static boolean hasTransport(NetworkCapabilities networkCapabilities, int transportType) {
if (transportType == NetworkCapabilities.TRANSPORT_WIFI) {
if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
return true;
}
if (CONNECTIVITY_MANAGER != null) {
Network activeNetwork = getActiveNetwork(CONNECTIVITY_MANAGER);
NetworkCapabilities activeNetworkCapabilities = CONNECTIVITY_MANAGER.getNetworkCapabilities(activeNetwork);
if (activeNetworkCapabilities != null) {
for (int fallbackTransportType : FAKE_FALLBACK_NETWORKS) {
if (activeNetworkCapabilities.hasTransport(fallbackTransportType) && networkCapabilities.hasTransport(fallbackTransportType)) {
return true;
}
}
}
}
}
return networkCapabilities.hasTransport(transportType);
}
// If the given network is a real or fake Wifi connection, pretend it has a connection (and some other things).
public static boolean hasCapability(NetworkCapabilities networkCapabilities, int capability) {
if (hasTransport(networkCapabilities, NetworkCapabilities.TRANSPORT_WIFI) && (
capability == NetworkCapabilities.NET_CAPABILITY_INTERNET
|| capability == NetworkCapabilities.NET_CAPABILITY_FOREGROUND
|| capability == NetworkCapabilities.NET_CAPABILITY_NOT_CONGESTED
|| capability == NetworkCapabilities.NET_CAPABILITY_NOT_METERED
|| capability == NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED
|| capability == NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING
|| capability == NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED
|| capability == NetworkCapabilities.NET_CAPABILITY_NOT_VPN
|| capability == NetworkCapabilities.NET_CAPABILITY_TRUSTED
|| capability == NetworkCapabilities.NET_CAPABILITY_VALIDATED)) {
return true;
}
return networkCapabilities.hasCapability(capability);
}
// If it waits for Wifi connectivity, pretend it is fulfilled immediately if we have an active network.
@RequiresApi(api = Build.VERSION_CODES.S)
public static void registerBestMatchingNetworkCallback(ConnectivityManager connectivityManager, NetworkRequest request, ConnectivityManager.NetworkCallback networkCallback, Handler handler) {
Utils.networkCallback(
connectivityManager,
Utils.Option.of(request),
Utils.Option.of(networkCallback),
Utils.Option.empty(),
Utils.Option.of(handler),
() -> connectivityManager.registerBestMatchingNetworkCallback(request, networkCallback, handler)
);
}
// If it waits for Wifi connectivity, pretend it is fulfilled immediately if we have an active network.
@RequiresApi(api = Build.VERSION_CODES.N)
public static void registerDefaultNetworkCallback(ConnectivityManager connectivityManager, ConnectivityManager.NetworkCallback networkCallback) {
Utils.networkCallback(
connectivityManager,
Utils.Option.empty(),
Utils.Option.of(networkCallback),
Utils.Option.empty(),
Utils.Option.empty(),
() -> connectivityManager.registerDefaultNetworkCallback(networkCallback)
);
}
// If it waits for Wifi connectivity, pretend it is fulfilled immediately if we have an active network.
@RequiresApi(api = Build.VERSION_CODES.O)
public static void registerDefaultNetworkCallback(ConnectivityManager connectivityManager, ConnectivityManager.NetworkCallback networkCallback, Handler handler) {
Utils.networkCallback(
connectivityManager,
Utils.Option.empty(),
Utils.Option.of(networkCallback),
Utils.Option.empty(),
Utils.Option.of(handler),
() -> connectivityManager.registerDefaultNetworkCallback(networkCallback, handler)
);
}
// If it waits for Wifi connectivity, pretend it is fulfilled immediately if we have an active network.
public static void registerNetworkCallback(ConnectivityManager connectivityManager, NetworkRequest request, ConnectivityManager.NetworkCallback networkCallback) {
Utils.networkCallback(
connectivityManager,
Utils.Option.of(request),
Utils.Option.of(networkCallback),
Utils.Option.empty(),
Utils.Option.empty(),
() -> connectivityManager.registerNetworkCallback(request, networkCallback)
);
}
// If it waits for Wifi connectivity, pretend it is fulfilled immediately.
public static void registerNetworkCallback(ConnectivityManager connectivityManager, NetworkRequest request, PendingIntent operation) {
Utils.networkCallback(
connectivityManager,
Utils.Option.of(request),
Utils.Option.empty(),
Utils.Option.of(operation),
Utils.Option.empty(),
() -> connectivityManager.registerNetworkCallback(request, operation)
);
}
// If it waits for Wifi connectivity, pretend it is fulfilled immediately if we have an active network.
@RequiresApi(api = Build.VERSION_CODES.O)
public static void registerNetworkCallback(ConnectivityManager connectivityManager, NetworkRequest request, ConnectivityManager.NetworkCallback networkCallback, Handler handler) {
Utils.networkCallback(
connectivityManager,
Utils.Option.of(request),
Utils.Option.of(networkCallback),
Utils.Option.empty(),
Utils.Option.of(handler),
() -> connectivityManager.registerNetworkCallback(request, networkCallback, handler)
);
}
// If it requests Wifi connectivity, pretend it is fulfilled immediately if we have an active network.
public static void requestNetwork(ConnectivityManager connectivityManager, NetworkRequest request, ConnectivityManager.NetworkCallback networkCallback) {
Utils.networkCallback(
connectivityManager,
Utils.Option.of(request),
Utils.Option.of(networkCallback),
Utils.Option.empty(),
Utils.Option.empty(),
() -> connectivityManager.requestNetwork(request, networkCallback)
);
}
// If it requests Wifi connectivity, pretend it is fulfilled immediately if we have an active network.
@RequiresApi(api = Build.VERSION_CODES.O)
public static void requestNetwork(ConnectivityManager connectivityManager, NetworkRequest request, ConnectivityManager.NetworkCallback networkCallback, int timeoutMs) {
Utils.networkCallback(
connectivityManager,
Utils.Option.of(request),
Utils.Option.of(networkCallback),
Utils.Option.empty(),
Utils.Option.empty(),
() -> connectivityManager.requestNetwork(request, networkCallback, timeoutMs)
);
}
// If it requests Wifi connectivity, pretend it is fulfilled immediately if we have an active network.
@RequiresApi(api = Build.VERSION_CODES.O)
public static void requestNetwork(ConnectivityManager connectivityManager, NetworkRequest request, ConnectivityManager.NetworkCallback networkCallback, Handler handler) {
Utils.networkCallback(
connectivityManager,
Utils.Option.of(request),
Utils.Option.of(networkCallback),
Utils.Option.empty(),
Utils.Option.of(handler),
() -> connectivityManager.requestNetwork(request, networkCallback, handler)
);
}
// If it requests Wifi connectivity, pretend it is fulfilled immediately.
public static void requestNetwork(ConnectivityManager connectivityManager, NetworkRequest request, PendingIntent operation) {
Utils.networkCallback(
connectivityManager,
Utils.Option.of(request),
Utils.Option.empty(),
Utils.Option.of(operation),
Utils.Option.empty(),
() -> connectivityManager.requestNetwork(request, operation)
);
}
// If it requests Wifi connectivity, pretend it is fulfilled immediately if we have an active network.
@RequiresApi(api = Build.VERSION_CODES.O)
public static void requestNetwork(ConnectivityManager connectivityManager, NetworkRequest request, ConnectivityManager.NetworkCallback networkCallback, Handler handler, int timeoutMs) {
Utils.networkCallback(
connectivityManager,
Utils.Option.of(request),
Utils.Option.of(networkCallback),
Utils.Option.empty(),
Utils.Option.of(handler),
() -> connectivityManager.requestNetwork(request, networkCallback, handler, timeoutMs)
);
}
public static void unregisterNetworkCallback(ConnectivityManager connectivityManager, ConnectivityManager.NetworkCallback networkCallback) {
try {
connectivityManager.unregisterNetworkCallback(networkCallback);
} catch (IllegalArgumentException ignore) {
// ignore: NetworkCallback was not registered
}
}
public static void unregisterNetworkCallback(ConnectivityManager connectivityManager, PendingIntent operation) {
try {
connectivityManager.unregisterNetworkCallback(operation);
} catch (IllegalArgumentException ignore) {
// ignore: PendingIntent was not registered
}
}
private static class Utils {
private static class Option<T> {
private final T value;
private final boolean isPresent;
private Option(T value, boolean isPresent) {
this.value = value;
this.isPresent = isPresent;
}
private static <T> Option<T> of(T value) {
return new Option<>(value, true);
}
private static <T> Option<T> empty() {
return new Option<>(null, false);
}
}
private static void networkCallback(
ConnectivityManager connectivityManager,
Option<NetworkRequest> request,
Option<ConnectivityManager.NetworkCallback> networkCallback,
Option<PendingIntent> operation,
Option<Handler> handler,
Runnable fallback
) {
if(!request.isPresent || (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P && request.value != null && requestsWifiNetwork(request.value))) {
Runnable runnable = null;
if (networkCallback.isPresent && networkCallback.value != null) {
Network network = activeWifiNetwork(connectivityManager);
if (network != null) {
runnable = () -> networkCallback.value.onAvailable(network);
}
} else if (operation.isPresent && operation.value != null) {
runnable = () -> {
try {
operation.value.send();
} catch (PendingIntent.CanceledException ignore) {}
};
}
if (runnable != null) {
if (handler.isPresent) {
if (handler.value != null) {
handler.value.post(runnable);
return;
}
} else {
runnable.run();
return;
}
}
}
fallback.run();
}
// Returns an active (maybe fake) Wifi network if there is one, otherwise null.
private static Network activeWifiNetwork(ConnectivityManager connectivityManager) {
Network network = getActiveNetwork(connectivityManager);
NetworkCapabilities networkCapabilities = connectivityManager.getNetworkCapabilities(network);
if (networkCapabilities != null && hasTransport(networkCapabilities, NetworkCapabilities.TRANSPORT_WIFI)) {
return network;
}
return null;
}
// Whether a Wifi network with connection is requested.
@RequiresApi(api = Build.VERSION_CODES.P)
private static boolean requestsWifiNetwork(NetworkRequest request) {
return request.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)
&& (request.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
|| request.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED));
}
}
}

View File

@@ -0,0 +1,5 @@
android.namespace = "app.revanced.extension"
dependencies {
compileOnly(libs.annotation)
}

View File

@@ -0,0 +1,21 @@
package app.revanced.extension.all.screencapture.removerestriction;
import android.media.AudioAttributes;
import android.os.Build;
import androidx.annotation.RequiresApi;
public final class RemoveScreencaptureRestrictionPatch {
// Member of AudioAttributes.Builder
@RequiresApi(api = Build.VERSION_CODES.Q)
public static AudioAttributes.Builder setAllowedCapturePolicy(final AudioAttributes.Builder builder, final int capturePolicy) {
builder.setAllowedCapturePolicy(AudioAttributes.ALLOW_CAPTURE_BY_ALL);
return builder;
}
// Member of AudioManager static class
public static void setAllowedCapturePolicy(final int capturePolicy) {
// Ignore request
}
}

View File

@@ -0,0 +1 @@
android.namespace = "app.revanced.extension"

View File

@@ -0,0 +1,15 @@
package app.revanced.extension.all.screenshot.removerestriction;
import android.view.Window;
import android.view.WindowManager;
public class RemoveScreenshotRestrictionPatch {
public static void addFlags(Window window, int flags) {
window.addFlags(flags & ~WindowManager.LayoutParams.FLAG_SECURE);
}
public static void setFlags(Window window, int flags, int mask) {
window.setFlags(flags & ~WindowManager.LayoutParams.FLAG_SECURE, mask & ~WindowManager.LayoutParams.FLAG_SECURE);
}
}

View File

@@ -0,0 +1,4 @@
dependencies {
compileOnly(project(":extensions:shared:library"))
compileOnly(project(":extensions:boostforreddit:stub"))
}

View File

@@ -0,0 +1 @@
<manifest/>

View File

@@ -0,0 +1,26 @@
package app.revanced.extension.boostforreddit;
import com.rubenmayayo.reddit.ui.activities.WebViewActivity;
import app.revanced.extension.shared.fixes.slink.BaseFixSLinksPatch;
/**
* @noinspection unused
*/
public class FixSLinksPatch extends BaseFixSLinksPatch {
static {
INSTANCE = new FixSLinksPatch();
}
private FixSLinksPatch() {
webViewActivityClass = WebViewActivity.class;
}
public static boolean patchResolveSLink(String link) {
return INSTANCE.resolveSLink(link);
}
public static void patchSetAccessToken(String accessToken) {
INSTANCE.setAccessToken(accessToken);
}
}

View File

@@ -0,0 +1,17 @@
plugins {
id(libs.plugins.android.library.get().pluginId)
}
android {
namespace = "app.revanced.extension"
compileSdk = 33
defaultConfig {
minSdk = 24
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
}

View File

@@ -0,0 +1 @@
<manifest/>

View File

@@ -0,0 +1,6 @@
package com.rubenmayayo.reddit.ui.activities;
import android.app.Activity;
public class WebViewActivity extends Activity {
}

9
extensions/proguard-rules.pro vendored Normal file
View File

@@ -0,0 +1,9 @@
-dontobfuscate
-dontoptimize
-keepattributes *
-keep class app.revanced.** {
*;
}
-keep class com.google.** {
*;
}

View File

@@ -0,0 +1,3 @@
dependencies {
compileOnly(project(":extensions:reddit:stub"))
}

View File

@@ -0,0 +1 @@
<manifest/>

View File

@@ -0,0 +1,27 @@
package app.revanced.extension.reddit.patches;
import com.reddit.domain.model.ILink;
import java.util.ArrayList;
import java.util.List;
@SuppressWarnings("unused")
public final class FilterPromotedLinksPatch {
/**
* Injection point.
*
* Filters list from promoted links.
**/
public static List<?> filterChildren(final Iterable<?> links) {
final List<Object> filteredList = new ArrayList<>();
for (Object item : links) {
if (item instanceof ILink && ((ILink) item).getPromoted()) continue;
filteredList.add(item);
}
return filteredList;
}
}

View File

@@ -0,0 +1,17 @@
plugins {
id(libs.plugins.android.library.get().pluginId)
}
android {
namespace = "app.revanced.extension"
compileSdk = 33
defaultConfig {
minSdk = 24
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
}

View File

@@ -0,0 +1 @@
<manifest/>

View File

@@ -0,0 +1,7 @@
package com.reddit.domain.model;
public class ILink {
public boolean getPromoted() {
throw new UnsupportedOperationException("Stub");
}
}

View File

@@ -0,0 +1,3 @@
dependencies {
implementation(project(":extensions:shared:library"))
}

View File

@@ -0,0 +1,21 @@
plugins {
id("com.android.library")
}
android {
namespace = "app.revanced.extension"
compileSdk = 34
defaultConfig {
minSdk = 23
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
}
dependencies {
compileOnly(libs.annotation)
}

View File

@@ -0,0 +1,158 @@
package app.revanced.extension.shared;
import static app.revanced.extension.shared.StringRef.str;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.SearchManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.PowerManager;
import android.provider.Settings;
import androidx.annotation.RequiresApi;
import java.net.MalformedURLException;
import java.net.URL;
/**
* @noinspection unused
*/
public class GmsCoreSupport {
public static final String ORIGINAL_UNPATCHED_PACKAGE_NAME = "com.google.android.youtube";
private static final String GMS_CORE_PACKAGE_NAME
= getGmsCoreVendorGroupId() + ".android.gms";
private static final Uri GMS_CORE_PROVIDER
= Uri.parse("content://" + getGmsCoreVendorGroupId() + ".android.gsf.gservices/prefix");
private static final String DONT_KILL_MY_APP_LINK
= "https://dontkillmyapp.com";
private static void open(String queryOrLink) {
Intent intent;
try {
// Check if queryOrLink is a valid URL.
new URL(queryOrLink);
intent = new Intent(Intent.ACTION_VIEW, Uri.parse(queryOrLink));
} catch (MalformedURLException e) {
intent = new Intent(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY, queryOrLink);
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Utils.getContext().startActivity(intent);
// Gracefully exit, otherwise the broken app will continue to run.
System.exit(0);
}
private static void showBatteryOptimizationDialog(Activity context,
String dialogMessageRef,
String positiveButtonStringRef,
DialogInterface.OnClickListener onPositiveClickListener) {
// Do not set cancelable to false, to allow using back button to skip the action,
// just in case the check can never be satisfied.
var dialog = new AlertDialog.Builder(context)
.setIconAttribute(android.R.attr.alertDialogIcon)
.setTitle(str("gms_core_dialog_title"))
.setMessage(str(dialogMessageRef))
.setPositiveButton(str(positiveButtonStringRef), onPositiveClickListener)
.create();
Utils.showDialog(context, dialog);
}
/**
* Injection point.
*/
@RequiresApi(api = Build.VERSION_CODES.N)
public static void checkGmsCore(Activity context) {
try {
// Verify the user has not included GmsCore for a root installation.
// GmsCore Support changes the package name, but with a mounted installation
// all manifest changes are ignored and the original package name is used.
if (context.getPackageName().equals(ORIGINAL_UNPATCHED_PACKAGE_NAME)) {
Logger.printInfo(() -> "App is mounted with root, but GmsCore patch was included");
// Cannot use localize text here, since the app will load
// resources from the unpatched app and all patch strings are missing.
Utils.showToastLong("The 'GmsCore support' patch breaks mount installations");
// Do not exit. If the app exits before launch completes (and without
// opening another activity), then on some devices such as Pixel phone Android 10
// no toast will be shown and the app will continually be relaunched
// with the appearance of a hung app.
}
// Verify GmsCore is installed.
try {
PackageManager manager = context.getPackageManager();
manager.getPackageInfo(GMS_CORE_PACKAGE_NAME, PackageManager.GET_ACTIVITIES);
} catch (PackageManager.NameNotFoundException exception) {
Logger.printInfo(() -> "GmsCore was not found");
// Cannot show a dialog and must show a toast,
// because on some installations the app crashes before a dialog can be displayed.
Utils.showToastLong(str("gms_core_toast_not_installed_message"));
open(getGmsCoreDownload());
return;
}
// Check if GmsCore is running in the background.
try (var client = context.getContentResolver().acquireContentProviderClient(GMS_CORE_PROVIDER)) {
if (client == null) {
Logger.printInfo(() -> "GmsCore is not running in the background");
showBatteryOptimizationDialog(context,
"gms_core_dialog_not_whitelisted_not_allowed_in_background_message",
"gms_core_dialog_open_website_text",
(dialog, id) -> open(DONT_KILL_MY_APP_LINK));
return;
}
}
// Check if GmsCore is whitelisted from battery optimizations.
if (batteryOptimizationsEnabled(context)) {
Logger.printInfo(() -> "GmsCore is not whitelisted from battery optimizations");
showBatteryOptimizationDialog(context,
"gms_core_dialog_not_whitelisted_using_battery_optimizations_message",
"gms_core_dialog_continue_text",
(dialog, id) -> openGmsCoreDisableBatteryOptimizationsIntent(context));
}
} catch (Exception ex) {
Logger.printException(() -> "checkGmsCore failure", ex);
}
}
@SuppressLint("BatteryLife") // Permission is part of GmsCore
private static void openGmsCoreDisableBatteryOptimizationsIntent(Activity activity) {
Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.fromParts("package", GMS_CORE_PACKAGE_NAME, null));
activity.startActivityForResult(intent, 0);
}
/**
* @return If GmsCore is not whitelisted from battery optimizations.
*/
private static boolean batteryOptimizationsEnabled(Context context) {
var powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
return !powerManager.isIgnoringBatteryOptimizations(GMS_CORE_PACKAGE_NAME);
}
private static String getGmsCoreDownload() {
final var vendorGroupId = getGmsCoreVendorGroupId();
//noinspection SwitchStatementWithTooFewBranches
switch (vendorGroupId) {
case "app.revanced":
return "https://github.com/revanced/gmscore/releases/latest";
default:
return vendorGroupId + ".android.gms";
}
}
// Modified by a patch. Do not touch.
private static String getGmsCoreVendorGroupId() {
return "app.revanced";
}
}

View File

@@ -0,0 +1,156 @@
package app.revanced.extension.shared;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import app.revanced.extension.shared.settings.BaseSettings;
import java.io.PrintWriter;
import java.io.StringWriter;
import static app.revanced.extension.shared.settings.BaseSettings.*;
public class Logger {
/**
* Log messages using lambdas.
*/
@FunctionalInterface
public interface LogMessage {
@NonNull
String buildMessageString();
/**
* @return For outer classes, this returns {@link Class#getSimpleName()}.
* For static, inner, or anonymous classes, this returns the simple name of the enclosing class.
* <br>
* For example, each of these classes return 'SomethingView':
* <code>
* com.company.SomethingView
* com.company.SomethingView$StaticClass
* com.company.SomethingView$1
* </code>
*/
private String findOuterClassSimpleName() {
var selfClass = this.getClass();
String fullClassName = selfClass.getName();
final int dollarSignIndex = fullClassName.indexOf('$');
if (dollarSignIndex < 0) {
return selfClass.getSimpleName(); // Already an outer class.
}
// Class is inner, static, or anonymous.
// Parse the simple name full name.
// A class with no package returns index of -1, but incrementing gives index zero which is correct.
final int simpleClassNameStartIndex = fullClassName.lastIndexOf('.') + 1;
return fullClassName.substring(simpleClassNameStartIndex, dollarSignIndex);
}
}
private static final String REVANCED_LOG_PREFIX = "revanced: ";
/**
* Logs debug messages under the outer class name of the code calling this method.
* Whenever possible, the log string should be constructed entirely inside {@link LogMessage#buildMessageString()}
* so the performance cost of building strings is paid only if {@link BaseSettings#DEBUG} is enabled.
*/
public static void printDebug(@NonNull LogMessage message) {
printDebug(message, null);
}
/**
* Logs debug messages under the outer class name of the code calling this method.
* Whenever possible, the log string should be constructed entirely inside {@link LogMessage#buildMessageString()}
* so the performance cost of building strings is paid only if {@link BaseSettings#DEBUG} is enabled.
*/
public static void printDebug(@NonNull LogMessage message, @Nullable Exception ex) {
if (DEBUG.get()) {
String logMessage = message.buildMessageString();
String logTag = REVANCED_LOG_PREFIX + message.findOuterClassSimpleName();
if (DEBUG_STACKTRACE.get()) {
var builder = new StringBuilder(logMessage);
var sw = new StringWriter();
new Throwable().printStackTrace(new PrintWriter(sw));
builder.append('\n').append(sw);
logMessage = builder.toString();
}
if (ex == null) {
Log.d(logTag, logMessage);
} else {
Log.d(logTag, logMessage, ex);
}
}
}
/**
* Logs information messages using the outer class name of the code calling this method.
*/
public static void printInfo(@NonNull LogMessage message) {
printInfo(message, null);
}
/**
* Logs information messages using the outer class name of the code calling this method.
*/
public static void printInfo(@NonNull LogMessage message, @Nullable Exception ex) {
String logTag = REVANCED_LOG_PREFIX + message.findOuterClassSimpleName();
String logMessage = message.buildMessageString();
if (ex == null) {
Log.i(logTag, logMessage);
} else {
Log.i(logTag, logMessage, ex);
}
}
/**
* Logs exceptions under the outer class name of the code calling this method.
*/
public static void printException(@NonNull LogMessage message) {
printException(message, null);
}
/**
* Logs exceptions under the outer class name of the code calling this method.
* <p>
* If the calling code is showing it's own error toast,
* instead use {@link #printInfo(LogMessage, Exception)}
*
* @param message log message
* @param ex exception (optional)
*/
public static void printException(@NonNull LogMessage message, @Nullable Throwable ex) {
String messageString = message.buildMessageString();
String outerClassSimpleName = message.findOuterClassSimpleName();
String logMessage = REVANCED_LOG_PREFIX + outerClassSimpleName;
if (ex == null) {
Log.e(logMessage, messageString);
} else {
Log.e(logMessage, messageString, ex);
}
if (DEBUG_TOAST_ON_ERROR.get()) {
Utils.showToastLong(outerClassSimpleName + ": " + messageString);
}
}
/**
* Logging to use if {@link BaseSettings#DEBUG} or {@link Utils#getContext()} may not be initialized.
* Normally this method should not be used.
*/
public static void initializationInfo(@NonNull Class<?> callingClass, @NonNull String message) {
Log.i(REVANCED_LOG_PREFIX + callingClass.getSimpleName(), message);
}
/**
* Logging to use if {@link BaseSettings#DEBUG} or {@link Utils#getContext()} may not be initialized.
* Normally this method should not be used.
*/
public static void initializationException(@NonNull Class<?> callingClass, @NonNull String message,
@Nullable Exception ex) {
Log.e(REVANCED_LOG_PREFIX + callingClass.getSimpleName(), message, ex);
}
}

View File

@@ -0,0 +1,122 @@
package app.revanced.extension.shared;
import android.content.Context;
import android.content.res.Resources;
import androidx.annotation.NonNull;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class StringRef {
private static Resources resources;
private static String packageName;
// must use a thread safe map, as this class is used both on and off the main thread
private static final Map<String, StringRef> strings = Collections.synchronizedMap(new HashMap<>());
/**
* Returns a cached instance.
* Should be used if the same String could be loaded more than once.
*
* @param id string resource name/id
* @see #sf(String)
*/
@NonNull
public static StringRef sfc(@NonNull String id) {
StringRef ref = strings.get(id);
if (ref == null) {
ref = new StringRef(id);
strings.put(id, ref);
}
return ref;
}
/**
* Creates a new instance, but does not cache the value.
* Should be used for Strings that are loaded exactly once.
*
* @param id string resource name/id
* @see #sfc(String)
*/
@NonNull
public static StringRef sf(@NonNull String id) {
return new StringRef(id);
}
/**
* Gets string value by string id, shorthand for <code>sfc(id).toString()</code>
*
* @param id string resource name/id
* @return String value from string.xml
*/
@NonNull
public static String str(@NonNull String id) {
return sfc(id).toString();
}
/**
* Gets string value by string id, shorthand for <code>sfc(id).toString()</code> and formats the string
* with given args.
*
* @param id string resource name/id
* @param args the args to format the string with
* @return String value from string.xml formatted with given args
*/
@NonNull
public static String str(@NonNull String id, Object... args) {
return String.format(str(id), args);
}
/**
* Creates a StringRef object that'll not change it's value
*
* @param value value which toString() method returns when invoked on returned object
* @return Unique StringRef instance, its value will never change
*/
@NonNull
public static StringRef constant(@NonNull String value) {
final StringRef ref = new StringRef(value);
ref.resolved = true;
return ref;
}
/**
* Shorthand for <code>constant("")</code>
* Its value always resolves to empty string
*/
@NonNull
public static final StringRef empty = constant("");
@NonNull
private String value;
private boolean resolved;
public StringRef(@NonNull String resName) {
this.value = resName;
}
@Override
@NonNull
public String toString() {
if (!resolved) {
if (resources == null || packageName == null) {
Context context = Utils.getContext();
resources = context.getResources();
packageName = context.getPackageName();
}
resolved = true;
if (resources != null) {
final int identifier = resources.getIdentifier(value, "string", packageName);
if (identifier == 0)
Logger.printException(() -> "Resource not found: " + value);
else
value = resources.getString(identifier);
} else {
Logger.printException(() -> "Could not resolve resources!");
}
}
return value;
}
}

View File

@@ -0,0 +1,770 @@
package app.revanced.extension.shared;
import android.annotation.SuppressLint;
import android.app.*;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.net.ConnectivityManager;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.preference.Preference;
import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Toast;
import android.widget.Toolbar;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.text.Bidi;
import java.util.*;
import java.util.regex.Pattern;
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import app.revanced.extension.shared.settings.BooleanSetting;
import app.revanced.extension.shared.settings.preference.ReVancedAboutPreference;
public class Utils {
@SuppressLint("StaticFieldLeak")
private static Context context;
private static String versionName;
private Utils() {
} // utility class
/**
* Injection point.
*
* @return The manifest 'Version' entry of the patches.jar used during patching.
*/
@SuppressWarnings("SameReturnValue")
public static String getPatchesReleaseVersion() {
return ""; // Value is replaced during patching.
}
/**
* @return The version name of the app, such as 19.11.43
*/
public static String getAppVersionName() {
if (versionName == null) {
try {
final var packageName = Objects.requireNonNull(getContext()).getPackageName();
PackageManager packageManager = context.getPackageManager();
PackageInfo packageInfo;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
packageInfo = packageManager.getPackageInfo(
packageName,
PackageManager.PackageInfoFlags.of(0)
);
} else {
packageInfo = packageManager.getPackageInfo(
packageName,
0
);
}
versionName = packageInfo.versionName;
} catch (Exception ex) {
Logger.printException(() -> "Failed to get package info", ex);
versionName = "Unknown";
}
}
return versionName;
}
/**
* Hide a view by setting its layout height and width to 1dp.
*
* @param condition The setting to check for hiding the view.
* @param view The view to hide.
*/
public static void hideViewBy0dpUnderCondition(BooleanSetting condition, View view) {
if (hideViewBy0dpUnderCondition(condition.get(), view)) {
Logger.printDebug(() -> "View hidden by setting: " + condition);
}
}
/**
* Hide a view by setting its layout height and width to 0dp.
*
* @param condition The setting to check for hiding the view.
* @param view The view to hide.
*/
public static boolean hideViewBy0dpUnderCondition(boolean condition, View view) {
if (condition) {
hideViewByLayoutParams(view);
return true;
}
return false;
}
/**
* Hide a view by setting its visibility to GONE.
*
* @param condition The setting to check for hiding the view.
* @param view The view to hide.
*/
public static void hideViewUnderCondition(BooleanSetting condition, View view) {
if (hideViewUnderCondition(condition.get(), view)) {
Logger.printDebug(() -> "View hidden by setting: " + condition);
}
}
/**
* Hide a view by setting its visibility to GONE.
*
* @param condition The setting to check for hiding the view.
* @param view The view to hide.
*/
public static boolean hideViewUnderCondition(boolean condition, View view) {
if (condition) {
view.setVisibility(View.GONE);
return true;
}
return false;
}
public static void hideViewByRemovingFromParentUnderCondition(BooleanSetting condition, View view) {
if (hideViewByRemovingFromParentUnderCondition(condition.get(), view)) {
Logger.printDebug(() -> "View hidden by setting: " + condition);
}
}
public static boolean hideViewByRemovingFromParentUnderCondition(boolean setting, View view) {
if (setting) {
ViewParent parent = view.getParent();
if (parent instanceof ViewGroup) {
((ViewGroup) parent).removeView(view);
return true;
}
}
return false;
}
/**
* General purpose pool for network calls and other background tasks.
* All tasks run at max thread priority.
*/
private static final ThreadPoolExecutor backgroundThreadPool = new ThreadPoolExecutor(
3, // 3 threads always ready to go
Integer.MAX_VALUE,
10, // For any threads over the minimum, keep them alive 10 seconds after they go idle
TimeUnit.SECONDS,
new SynchronousQueue<>(),
r -> { // ThreadFactory
Thread t = new Thread(r);
t.setPriority(Thread.MAX_PRIORITY); // run at max priority
return t;
});
public static void runOnBackgroundThread(@NonNull Runnable task) {
backgroundThreadPool.execute(task);
}
@NonNull
public static <T> Future<T> submitOnBackgroundThread(@NonNull Callable<T> call) {
return backgroundThreadPool.submit(call);
}
/**
* Simulates a delay by doing meaningless calculations.
* Used for debugging to verify UI timeout logic.
*/
@SuppressWarnings("UnusedReturnValue")
public static long doNothingForDuration(long amountOfTimeToWaste) {
final long timeCalculationStarted = System.currentTimeMillis();
Logger.printDebug(() -> "Artificially creating delay of: " + amountOfTimeToWaste + "ms");
long meaninglessValue = 0;
while (System.currentTimeMillis() - timeCalculationStarted < amountOfTimeToWaste) {
// could do a thread sleep, but that will trigger an exception if the thread is interrupted
meaninglessValue += Long.numberOfLeadingZeros((long) Math.exp(Math.random()));
}
// return the value, otherwise the compiler or VM might optimize and remove the meaningless time wasting work,
// leaving an empty loop that hammers on the System.currentTimeMillis native call
return meaninglessValue;
}
public static boolean containsAny(@NonNull String value, @NonNull String... targets) {
return indexOfFirstFound(value, targets) >= 0;
}
public static int indexOfFirstFound(@NonNull String value, @NonNull String... targets) {
for (String string : targets) {
if (!string.isEmpty()) {
final int indexOf = value.indexOf(string);
if (indexOf >= 0) return indexOf;
}
}
return -1;
}
/**
* @return zero, if the resource is not found
*/
@SuppressLint("DiscouragedApi")
public static int getResourceIdentifier(@NonNull Context context, @NonNull String resourceIdentifierName, @NonNull String type) {
return context.getResources().getIdentifier(resourceIdentifierName, type, context.getPackageName());
}
/**
* @return zero, if the resource is not found
*/
public static int getResourceIdentifier(@NonNull String resourceIdentifierName, @NonNull String type) {
return getResourceIdentifier(getContext(), resourceIdentifierName, type);
}
public static int getResourceInteger(@NonNull String resourceIdentifierName) throws Resources.NotFoundException {
return getContext().getResources().getInteger(getResourceIdentifier(resourceIdentifierName, "integer"));
}
@NonNull
public static Animation getResourceAnimation(@NonNull String resourceIdentifierName) throws Resources.NotFoundException {
return AnimationUtils.loadAnimation(getContext(), getResourceIdentifier(resourceIdentifierName, "anim"));
}
public static int getResourceColor(@NonNull String resourceIdentifierName) throws Resources.NotFoundException {
//noinspection deprecation
return getContext().getResources().getColor(getResourceIdentifier(resourceIdentifierName, "color"));
}
public static int getResourceDimensionPixelSize(@NonNull String resourceIdentifierName) throws Resources.NotFoundException {
return getContext().getResources().getDimensionPixelSize(getResourceIdentifier(resourceIdentifierName, "dimen"));
}
public static float getResourceDimension(@NonNull String resourceIdentifierName) throws Resources.NotFoundException {
return getContext().getResources().getDimension(getResourceIdentifier(resourceIdentifierName, "dimen"));
}
public interface MatchFilter<T> {
boolean matches(T object);
}
/**
* Includes sub children.
*
* @noinspection unchecked
*/
public static <R extends View> R getChildViewByResourceName(@NonNull View view, @NonNull String str) {
var child = view.findViewById(Utils.getResourceIdentifier(str, "id"));
if (child != null) {
return (R) child;
}
throw new IllegalArgumentException("View with resource name '" + str + "' not found");
}
/**
* @param searchRecursively If children ViewGroups should also be
* recursively searched using depth first search.
* @return The first child view that matches the filter.
*/
@Nullable
public static <T extends View> T getChildView(@NonNull ViewGroup viewGroup, boolean searchRecursively,
@NonNull MatchFilter<View> filter) {
for (int i = 0, childCount = viewGroup.getChildCount(); i < childCount; i++) {
View childAt = viewGroup.getChildAt(i);
if (filter.matches(childAt)) {
//noinspection unchecked
return (T) childAt;
}
// Must do recursive after filter check, in case the filter is looking for a ViewGroup.
if (searchRecursively && childAt instanceof ViewGroup) {
T match = getChildView((ViewGroup) childAt, true, filter);
if (match != null) return match;
}
}
return null;
}
@Nullable
public static ViewParent getParentView(@NonNull View view, int nthParent) {
ViewParent parent = view.getParent();
int currentDepth = 0;
while (++currentDepth < nthParent && parent != null) {
parent = parent.getParent();
}
if (currentDepth == nthParent) {
return parent;
}
final int currentDepthLog = currentDepth;
Logger.printDebug(() -> "Could not find parent view of depth: " + nthParent
+ " and instead found at: " + currentDepthLog + " view: " + view);
return null;
}
public static void restartApp(@NonNull Context context) {
String packageName = context.getPackageName();
Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);
Intent mainIntent = Intent.makeRestartActivityTask(intent.getComponent());
// Required for API 34 and later
// Ref: https://developer.android.com/about/versions/14/behavior-changes-14#safer-intents
mainIntent.setPackage(packageName);
context.startActivity(mainIntent);
System.exit(0);
}
public static Context getContext() {
if (context == null) {
Logger.initializationException(Utils.class, "Context is null, returning null!", null);
}
return context;
}
public static void setContext(Context appContext) {
context = appContext;
// In some apps like TikTok, the Setting classes can load in weird orders due to cyclic class dependencies.
// Calling the regular printDebug method here can cause a Settings context null pointer exception,
// even though the context is already set before the call.
//
// The initialization logger methods do not directly or indirectly
// reference the Context or any Settings and are unaffected by this problem.
//
// Info level also helps debug if a patch hook is called before
// the context is set since debug logging is off by default.
Logger.initializationInfo(Utils.class, "Set context: " + appContext);
}
public static void setClipboard(@NonNull String text) {
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
android.content.ClipData clip = android.content.ClipData.newPlainText("ReVanced", text);
clipboard.setPrimaryClip(clip);
}
public static boolean isTablet() {
return context.getResources().getConfiguration().smallestScreenWidthDp >= 600;
}
@Nullable
private static Boolean isRightToLeftTextLayout;
/**
* If the device language uses right to left text layout (hebrew, arabic, etc)
*/
public static boolean isRightToLeftTextLayout() {
if (isRightToLeftTextLayout == null) {
String displayLanguage = Locale.getDefault().getDisplayLanguage();
isRightToLeftTextLayout = new Bidi(displayLanguage, Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT).isRightToLeft();
}
return isRightToLeftTextLayout;
}
/**
* @return if the text contains at least 1 number character,
* including any unicode numbers such as Arabic.
*/
@SuppressWarnings("BooleanMethodIsAlwaysInverted")
public static boolean containsNumber(@NonNull CharSequence text) {
for (int index = 0, length = text.length(); index < length;) {
final int codePoint = Character.codePointAt(text, index);
if (Character.isDigit(codePoint)) {
return true;
}
index += Character.charCount(codePoint);
}
return false;
}
/**
* Ignore this class. It must be public to satisfy Android requirements.
*/
@SuppressWarnings("deprecation")
public static final class DialogFragmentWrapper extends DialogFragment {
private Dialog dialog;
@Nullable
private DialogFragmentOnStartAction onStartAction;
@Override
public void onSaveInstanceState(Bundle outState) {
// Do not call super method to prevent state saving.
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return dialog;
}
@Override
public void onStart() {
try {
super.onStart();
if (onStartAction != null) {
onStartAction.onStart((AlertDialog) getDialog());
}
} catch (Exception ex) {
Logger.printException(() -> "onStart failure: " + dialog.getClass().getSimpleName(), ex);
}
}
}
/**
* Interface for {@link #showDialog(Activity, AlertDialog, boolean, DialogFragmentOnStartAction)}.
*/
@FunctionalInterface
public interface DialogFragmentOnStartAction {
void onStart(AlertDialog dialog);
}
public static void showDialog(Activity activity, AlertDialog dialog) {
showDialog(activity, dialog, true, null);
}
/**
* Utility method to allow showing an AlertDialog on top of other alert dialogs.
* Calling this will always display the dialog on top of all other dialogs
* previously called using this method.
* <br>
* Be aware the on start action can be called multiple times for some situations,
* such as the user switching apps without dismissing the dialog then switching back to this app.
*<br>
* This method is only useful during app startup and multiple patches may show their own dialog,
* and the most important dialog can be called last (using a delay) so it's always on top.
*<br>
* For all other situations it's better to not use this method and
* call {@link AlertDialog#show()} on the dialog.
*/
@SuppressWarnings("deprecation")
public static void showDialog(Activity activity,
AlertDialog dialog,
boolean isCancelable,
@Nullable DialogFragmentOnStartAction onStartAction) {
verifyOnMainThread();
DialogFragmentWrapper fragment = new DialogFragmentWrapper();
fragment.dialog = dialog;
fragment.onStartAction = onStartAction;
fragment.setCancelable(isCancelable);
fragment.show(activity.getFragmentManager(), null);
}
/**
* Safe to call from any thread
*/
public static void showToastShort(@NonNull String messageToToast) {
showToast(messageToToast, Toast.LENGTH_SHORT);
}
/**
* Safe to call from any thread
*/
public static void showToastLong(@NonNull String messageToToast) {
showToast(messageToToast, Toast.LENGTH_LONG);
}
private static void showToast(@NonNull String messageToToast, int toastDuration) {
Objects.requireNonNull(messageToToast);
runOnMainThreadNowOrLater(() -> {
if (context == null) {
Logger.initializationException(Utils.class, "Cannot show toast (context is null): " + messageToToast, null);
} else {
Logger.printDebug(() -> "Showing toast: " + messageToToast);
Toast.makeText(context, messageToToast, toastDuration).show();
}
}
);
}
/**
* Automatically logs any exceptions the runnable throws.
*
* @see #runOnMainThreadNowOrLater(Runnable)
*/
public static void runOnMainThread(@NonNull Runnable runnable) {
runOnMainThreadDelayed(runnable, 0);
}
/**
* Automatically logs any exceptions the runnable throws
*/
public static void runOnMainThreadDelayed(@NonNull Runnable runnable, long delayMillis) {
Runnable loggingRunnable = () -> {
try {
runnable.run();
} catch (Exception ex) {
Logger.printException(() -> runnable.getClass().getSimpleName() + ": " + ex.getMessage(), ex);
}
};
new Handler(Looper.getMainLooper()).postDelayed(loggingRunnable, delayMillis);
}
/**
* If called from the main thread, the code is run immediately.<p>
* If called off the main thread, this is the same as {@link #runOnMainThread(Runnable)}.
*/
public static void runOnMainThreadNowOrLater(@NonNull Runnable runnable) {
if (isCurrentlyOnMainThread()) {
runnable.run();
} else {
runOnMainThread(runnable);
}
}
/**
* @return if the calling thread is on the main thread
*/
public static boolean isCurrentlyOnMainThread() {
return Looper.getMainLooper().isCurrentThread();
}
/**
* @throws IllegalStateException if the calling thread is _off_ the main thread
*/
public static void verifyOnMainThread() throws IllegalStateException {
if (!isCurrentlyOnMainThread()) {
throw new IllegalStateException("Must call _on_ the main thread");
}
}
/**
* @throws IllegalStateException if the calling thread is _on_ the main thread
*/
public static void verifyOffMainThread() throws IllegalStateException {
if (isCurrentlyOnMainThread()) {
throw new IllegalStateException("Must call _off_ the main thread");
}
}
public enum NetworkType {
NONE,
MOBILE,
OTHER,
}
public static boolean isNetworkConnected() {
NetworkType networkType = getNetworkType();
return networkType == NetworkType.MOBILE
|| networkType == NetworkType.OTHER;
}
@SuppressLint("MissingPermission") // permission already included in YouTube
public static NetworkType getNetworkType() {
Context networkContext = getContext();
if (networkContext == null) {
return NetworkType.NONE;
}
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
var networkInfo = cm.getActiveNetworkInfo();
if (networkInfo == null || !networkInfo.isConnected()) {
return NetworkType.NONE;
}
var type = networkInfo.getType();
return (type == ConnectivityManager.TYPE_MOBILE)
|| (type == ConnectivityManager.TYPE_BLUETOOTH) ? NetworkType.MOBILE : NetworkType.OTHER;
}
/**
* Hide a view by setting its layout params to 0x0
* @param view The view to hide.
*/
public static void hideViewByLayoutParams(View view) {
if (view instanceof LinearLayout) {
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(0, 0);
view.setLayoutParams(layoutParams);
} else if (view instanceof FrameLayout) {
FrameLayout.LayoutParams layoutParams2 = new FrameLayout.LayoutParams(0, 0);
view.setLayoutParams(layoutParams2);
} else if (view instanceof RelativeLayout) {
RelativeLayout.LayoutParams layoutParams3 = new RelativeLayout.LayoutParams(0, 0);
view.setLayoutParams(layoutParams3);
} else if (view instanceof Toolbar) {
Toolbar.LayoutParams layoutParams4 = new Toolbar.LayoutParams(0, 0);
view.setLayoutParams(layoutParams4);
} else if (view instanceof ViewGroup) {
ViewGroup.LayoutParams layoutParams5 = new ViewGroup.LayoutParams(0, 0);
view.setLayoutParams(layoutParams5);
} else {
ViewGroup.LayoutParams params = view.getLayoutParams();
params.width = 0;
params.height = 0;
view.setLayoutParams(params);
}
}
/**
* {@link PreferenceScreen} and {@link PreferenceGroup} sorting styles.
*/
private enum Sort {
/**
* Sort by the localized preference title.
*/
BY_TITLE("_sort_by_title"),
/**
* Sort by the preference keys.
*/
BY_KEY("_sort_by_key"),
/**
* Unspecified sorting.
*/
UNSORTED("_sort_by_unsorted");
final String keySuffix;
Sort(String keySuffix) {
this.keySuffix = keySuffix;
}
@NonNull
static Sort fromKey(@Nullable String key, @NonNull Sort defaultSort) {
if (key != null) {
for (Sort sort : values()) {
if (key.endsWith(sort.keySuffix)) {
return sort;
}
}
}
return defaultSort;
}
}
private static final Pattern punctuationPattern = Pattern.compile("\\p{P}+");
/**
* Strips all punctuation and converts to lower case. A null parameter returns an empty string.
*/
public static String removePunctuationConvertToLowercase(@Nullable CharSequence original) {
if (original == null) return "";
return punctuationPattern.matcher(original).replaceAll("").toLowerCase();
}
/**
* Sort a PreferenceGroup and all it's sub groups by title or key.
*
* Sort order is determined by the preferences key {@link Sort} suffix.
*
* If a preference has no key or no {@link Sort} suffix,
* then the preferences are left unsorted.
*/
@SuppressWarnings("deprecation")
public static void sortPreferenceGroups(@NonNull PreferenceGroup group) {
Sort groupSort = Sort.fromKey(group.getKey(), Sort.UNSORTED);
SortedMap<String, Preference> preferences = new TreeMap<>();
for (int i = 0, prefCount = group.getPreferenceCount(); i < prefCount; i++) {
Preference preference = group.getPreference(i);
final Sort preferenceSort;
if (preference instanceof PreferenceGroup) {
sortPreferenceGroups((PreferenceGroup) preference);
preferenceSort = groupSort; // Sort value for groups is for it's content, not itself.
} else {
// Allow individual preferences to set a key sorting.
// Used to force a preference to the top or bottom of a group.
preferenceSort = Sort.fromKey(preference.getKey(), groupSort);
}
final String sortValue;
switch (preferenceSort) {
case BY_TITLE:
sortValue = removePunctuationConvertToLowercase(preference.getTitle());
break;
case BY_KEY:
sortValue = preference.getKey();
break;
case UNSORTED:
continue; // Keep original sorting.
default:
throw new IllegalStateException();
}
preferences.put(sortValue, preference);
}
int index = 0;
for (Preference pref : preferences.values()) {
int order = index++;
// Move any screens, intents, and the one off About preference to the top.
if (pref instanceof PreferenceScreen || pref instanceof ReVancedAboutPreference
|| pref.getIntent() != null) {
// Arbitrary high number.
order -= 1000;
}
pref.setOrder(order);
}
}
/**
* Set all preferences to multiline titles if the device is not using an English variant.
* The English strings are heavily scrutinized and all titles fit on screen
* except 2 or 3 preference strings and those do not affect readability.
*
* Allowing multiline for those 2 or 3 English preferences looks weird and out of place,
* and visually it looks better to clip the text and keep all titles 1 line.
*/
@SuppressWarnings("deprecation")
public static void setPreferenceTitlesToMultiLineIfNeeded(PreferenceGroup group) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
return;
}
String deviceLanguage = Utils.getContext().getResources().getConfiguration().locale.getLanguage();
if (deviceLanguage.equals("en")) {
return;
}
for (int i = 0, prefCount = group.getPreferenceCount(); i < prefCount; i++) {
Preference pref = group.getPreference(i);
pref.setSingleLineTitle(false);
if (pref instanceof PreferenceGroup) {
setPreferenceTitlesToMultiLineIfNeeded((PreferenceGroup) pref);
}
}
}
/**
* If {@link Fragment} uses [Android library] rather than [AndroidX library],
* the Dialog theme corresponding to [Android library] should be used.
* <p>
* If not, the following issues will occur:
* <a href="https://github.com/ReVanced/revanced-patches/issues/3061">ReVanced/revanced-patches#3061</a>
* <p>
* To prevent these issues, apply the Dialog theme corresponding to [Android library].
*/
public static void setEditTextDialogTheme(AlertDialog.Builder builder) {
final int editTextDialogStyle = getResourceIdentifier(
"revanced_edit_text_dialog_style", "style");
if (editTextDialogStyle != 0) {
builder.getContext().setTheme(editTextDialogStyle);
}
}
}

View File

@@ -0,0 +1,164 @@
package app.revanced.extension.shared.checks;
import static android.text.Html.FROM_HTML_MODE_COMPACT;
import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.Utils.DialogFragmentOnStartAction;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.text.Html;
import android.widget.Button;
import androidx.annotation.Nullable;
import java.util.Collection;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.BaseSettings;
abstract class Check {
private static final int NUMBER_OF_TIMES_TO_IGNORE_WARNING_BEFORE_DISABLING = 2;
private static final int SECONDS_BEFORE_SHOWING_IGNORE_BUTTON = 15;
private static final int SECONDS_BEFORE_SHOWING_WEBSITE_BUTTON = 10;
private static final Uri GOOD_SOURCE = Uri.parse("https://revanced.app");
/**
* @return If the check conclusively passed or failed. A null value indicates it neither passed nor failed.
*/
@Nullable
protected abstract Boolean check();
protected abstract String failureReason();
/**
* Specifies a sorting order for displaying the checks that failed.
* A lower value indicates to show first before other checks.
*/
public abstract int uiSortingValue();
/**
* For debugging and development only.
* Forces all checks to be performed and the check failed dialog to be shown.
* Can be enabled by importing settings text with {@link BaseSettings#CHECK_ENVIRONMENT_WARNINGS_ISSUED}
* set to -1.
*/
static boolean debugAlwaysShowWarning() {
final boolean alwaysShowWarning = BaseSettings.CHECK_ENVIRONMENT_WARNINGS_ISSUED.get() < 0;
if (alwaysShowWarning) {
Logger.printInfo(() -> "Debug forcing environment check warning to show");
}
return alwaysShowWarning;
}
static boolean shouldRun() {
return BaseSettings.CHECK_ENVIRONMENT_WARNINGS_ISSUED.get()
< NUMBER_OF_TIMES_TO_IGNORE_WARNING_BEFORE_DISABLING;
}
static void disableForever() {
Logger.printInfo(() -> "Environment checks disabled forever");
BaseSettings.CHECK_ENVIRONMENT_WARNINGS_ISSUED.save(Integer.MAX_VALUE);
}
@SuppressLint("NewApi")
static void issueWarning(Activity activity, Collection<Check> failedChecks) {
final var reasons = new StringBuilder();
reasons.append("<ul>");
for (var check : failedChecks) {
// Add a non breaking space to fix bullet points spacing issue.
reasons.append("<li>&nbsp;").append(check.failureReason());
}
reasons.append("</ul>");
var message = Html.fromHtml(
str("revanced_check_environment_failed_message", reasons.toString()),
FROM_HTML_MODE_COMPACT
);
Utils.runOnMainThreadDelayed(() -> {
AlertDialog alert = new AlertDialog.Builder(activity)
.setCancelable(false)
.setIconAttribute(android.R.attr.alertDialogIcon)
.setTitle(str("revanced_check_environment_failed_title"))
.setMessage(message)
.setPositiveButton(
" ",
(dialog, which) -> {
final var intent = new Intent(Intent.ACTION_VIEW, GOOD_SOURCE);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
activity.startActivity(intent);
// Shutdown to prevent the user from navigating back to this app,
// which is no longer showing a warning dialog.
activity.finishAffinity();
System.exit(0);
}
).setNegativeButton(
" ",
(dialog, which) -> {
// Cleanup data if the user incorrectly imported a huge negative number.
final int current = Math.max(0, BaseSettings.CHECK_ENVIRONMENT_WARNINGS_ISSUED.get());
BaseSettings.CHECK_ENVIRONMENT_WARNINGS_ISSUED.save(current + 1);
dialog.dismiss();
}
).create();
Utils.showDialog(activity, alert, false, new DialogFragmentOnStartAction() {
boolean hasRun;
@Override
public void onStart(AlertDialog dialog) {
// Only run this once, otherwise if the user changes to a different app
// then changes back, this handler will run again and disable the buttons.
if (hasRun) {
return;
}
hasRun = true;
var openWebsiteButton = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
openWebsiteButton.setEnabled(false);
var dismissButton = dialog.getButton(DialogInterface.BUTTON_NEGATIVE);
dismissButton.setEnabled(false);
getCountdownRunnable(dismissButton, openWebsiteButton).run();
}
});
}, 1000); // Use a delay, so this dialog is shown on top of any other startup dialogs.
}
private static Runnable getCountdownRunnable(Button dismissButton, Button openWebsiteButton) {
return new Runnable() {
private int secondsRemaining = SECONDS_BEFORE_SHOWING_IGNORE_BUTTON;
@Override
public void run() {
Utils.verifyOnMainThread();
if (secondsRemaining > 0) {
if (secondsRemaining - SECONDS_BEFORE_SHOWING_WEBSITE_BUTTON == 0) {
openWebsiteButton.setText(str("revanced_check_environment_dialog_open_official_source_button"));
openWebsiteButton.setEnabled(true);
}
secondsRemaining--;
Utils.runOnMainThreadDelayed(this, 1000);
} else {
dismissButton.setText(str("revanced_check_environment_dialog_ignore_button"));
dismissButton.setEnabled(true);
}
}
};
}
}

View File

@@ -0,0 +1,341 @@
package app.revanced.extension.shared.checks;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Build;
import android.util.Base64;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.*;
import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.checks.Check.debugAlwaysShowWarning;
import static app.revanced.extension.shared.checks.PatchInfo.Build.*;
/**
* This class is used to check if the app was patched by the user
* and not downloaded pre-patched, because pre-patched apps are difficult to trust.
* <br>
* Various indicators help to detect if the app was patched by the user.
*/
@SuppressWarnings("unused")
public final class CheckEnvironmentPatch {
private static final boolean DEBUG_ALWAYS_SHOW_CHECK_FAILED_DIALOG = debugAlwaysShowWarning();
private enum InstallationType {
/**
* CLI patching, manual installation of a previously patched using adb,
* or root installation if stock app is first installed using adb.
*/
ADB((String) null),
ROOT_MOUNT_ON_APP_STORE("com.android.vending"),
MANAGER("app.revanced.manager.flutter",
"app.revanced.manager",
"app.revanced.manager.debug");
@Nullable
static InstallationType installTypeFromPackageName(@Nullable String packageName) {
for (InstallationType type : values()) {
for (String installPackageName : type.packageNames) {
if (Objects.equals(installPackageName, packageName)) {
return type;
}
}
}
return null;
}
/**
* Array elements can be null.
*/
final String[] packageNames;
InstallationType(String... packageNames) {
this.packageNames = packageNames;
}
}
/**
* Check if the app is installed by the manager, the app store, or through adb/CLI.
* <br>
* Does not conclusively
* If the app is installed by the manager or the app store, it is likely, the app was patched using the manager,
* or installed manually via ADB (in the case of ReVanced CLI for example).
* <br>
* If the app is not installed by the manager or the app store, then the app was likely downloaded pre-patched
* and installed by the browser or another unknown app.
*/
private static class CheckExpectedInstaller extends Check {
@Nullable
InstallationType installerFound;
@NonNull
@Override
protected Boolean check() {
final var context = Utils.getContext();
final var installerPackageName =
context.getPackageManager().getInstallerPackageName(context.getPackageName());
Logger.printInfo(() -> "Installed by: " + installerPackageName);
installerFound = InstallationType.installTypeFromPackageName(installerPackageName);
final boolean passed = (installerFound != null);
Logger.printInfo(() -> passed
? "Apk was not installed from an unknown source"
: "Apk was installed from an unknown source");
return passed;
}
@Override
protected String failureReason() {
return str("revanced_check_environment_manager_not_expected_installer");
}
@Override
public int uiSortingValue() {
return -100; // Show first.
}
}
/**
* Check if the build properties are the same as during the patch.
* <br>
* If the build properties are the same as during the patch, it is likely, the app was patched on the same device.
* <br>
* If the build properties are different, the app was likely downloaded pre-patched or patched on another device.
*/
private static class CheckWasPatchedOnSameDevice extends Check {
@SuppressLint({"NewApi", "HardwareIds"})
@Override
protected Boolean check() {
if (PATCH_BOARD.isEmpty()) {
// Did not patch with Manager, and cannot conclusively say where this was from.
Logger.printInfo(() -> "APK does not contain a hardware signature and cannot compare to current device");
return null;
}
//noinspection deprecation
final var passed = buildFieldEqualsHash("BOARD", Build.BOARD, PATCH_BOARD) &
buildFieldEqualsHash("BOOTLOADER", Build.BOOTLOADER, PATCH_BOOTLOADER) &
buildFieldEqualsHash("BRAND", Build.BRAND, PATCH_BRAND) &
buildFieldEqualsHash("CPU_ABI", Build.CPU_ABI, PATCH_CPU_ABI) &
buildFieldEqualsHash("CPU_ABI2", Build.CPU_ABI2, PATCH_CPU_ABI2) &
buildFieldEqualsHash("DEVICE", Build.DEVICE, PATCH_DEVICE) &
buildFieldEqualsHash("DISPLAY", Build.DISPLAY, PATCH_DISPLAY) &
buildFieldEqualsHash("FINGERPRINT", Build.FINGERPRINT, PATCH_FINGERPRINT) &
buildFieldEqualsHash("HARDWARE", Build.HARDWARE, PATCH_HARDWARE) &
buildFieldEqualsHash("HOST", Build.HOST, PATCH_HOST) &
buildFieldEqualsHash("ID", Build.ID, PATCH_ID) &
buildFieldEqualsHash("MANUFACTURER", Build.MANUFACTURER, PATCH_MANUFACTURER) &
buildFieldEqualsHash("MODEL", Build.MODEL, PATCH_MODEL) &
buildFieldEqualsHash("PRODUCT", Build.PRODUCT, PATCH_PRODUCT) &
buildFieldEqualsHash("RADIO", Build.RADIO, PATCH_RADIO) &
buildFieldEqualsHash("TAGS", Build.TAGS, PATCH_TAGS) &
buildFieldEqualsHash("TYPE", Build.TYPE, PATCH_TYPE) &
buildFieldEqualsHash("USER", Build.USER, PATCH_USER);
Logger.printInfo(() -> passed
? "Device hardware signature matches current device"
: "Device hardware signature does not match current device");
return passed;
}
@Override
protected String failureReason() {
return str("revanced_check_environment_not_same_patching_device");
}
@Override
public int uiSortingValue() {
return 0; // Show in the middle.
}
}
/**
* Check if the app was installed within the last 30 minutes after being patched.
* <br>
* If the app was installed within the last 30 minutes, it is likely, the app was patched by the user.
* <br>
* If the app was installed much later than the patch time, it is likely the app was
* downloaded pre-patched or the user waited too long to install the app.
*/
private static class CheckIsNearPatchTime extends Check {
/**
* How soon after patching the app must be installed to pass.
*/
static final int INSTALL_AFTER_PATCHING_DURATION_THRESHOLD = 30 * 60 * 1000; // 30 minutes.
/**
* Milliseconds between the time the app was patched, and when it was installed/updated.
*/
long durationBetweenPatchingAndInstallation;
@NonNull
@Override
protected Boolean check() {
try {
Context context = Utils.getContext();
PackageManager packageManager = context.getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
// Duration since initial install or last update, which ever is sooner.
durationBetweenPatchingAndInstallation = packageInfo.lastUpdateTime - PatchInfo.PATCH_TIME;
Logger.printInfo(() -> "App was installed/updated: "
+ (durationBetweenPatchingAndInstallation / (60 * 1000) + " minutes after patching"));
if (durationBetweenPatchingAndInstallation < 0) {
// Patch time is in the future and clearly wrong.
return false;
}
if (durationBetweenPatchingAndInstallation < INSTALL_AFTER_PATCHING_DURATION_THRESHOLD) {
return true;
}
} catch (PackageManager.NameNotFoundException ex) {
Logger.printException(() -> "Package name not found exception", ex); // Will never happen.
}
// User installed more than 30 minutes after patching.
return false;
}
@Override
protected String failureReason() {
if (durationBetweenPatchingAndInstallation < 0) {
// Could happen if the user has their device clock incorrectly set in the past,
// but assume that isn't the case and the apk was patched on a device with the wrong system time.
return str("revanced_check_environment_not_near_patch_time_invalid");
}
// If patched over 1 day ago, show how old this pre-patched apk is.
// Showing the age can help convey it's better to patch yourself and know it's the latest.
final long oneDay = 24 * 60 * 60 * 1000;
final long daysSincePatching = durationBetweenPatchingAndInstallation / oneDay;
if (daysSincePatching > 1) { // Use over 1 day to avoid singular vs plural strings.
return str("revanced_check_environment_not_near_patch_time_days", daysSincePatching);
}
return str("revanced_check_environment_not_near_patch_time");
}
@Override
public int uiSortingValue() {
return 100; // Show last.
}
}
/**
* Injection point.
*/
public static void check(Activity context) {
// If the warning was already issued twice, or if the check was successful in the past,
// do not run the checks again.
if (!Check.shouldRun() && !DEBUG_ALWAYS_SHOW_CHECK_FAILED_DIALOG) {
Logger.printDebug(() -> "Environment checks are disabled");
return;
}
Utils.runOnBackgroundThread(() -> {
try {
Logger.printInfo(() -> "Running environment checks");
List<Check> failedChecks = new ArrayList<>();
CheckWasPatchedOnSameDevice sameHardware = new CheckWasPatchedOnSameDevice();
Boolean hardwareCheckPassed = sameHardware.check();
if (hardwareCheckPassed != null) {
if (hardwareCheckPassed && !DEBUG_ALWAYS_SHOW_CHECK_FAILED_DIALOG) {
// Patched on the same device using Manager,
// and no further checks are needed.
Check.disableForever();
return;
}
failedChecks.add(sameHardware);
}
CheckExpectedInstaller installerCheck = new CheckExpectedInstaller();
if (installerCheck.check() && !DEBUG_ALWAYS_SHOW_CHECK_FAILED_DIALOG) {
// If the installer package is Manager but this code is reached,
// that means it must not be the right Manager otherwise the hardware hash
// signatures would be present and this check would not have run.
if (installerCheck.installerFound == InstallationType.MANAGER) {
failedChecks.add(installerCheck);
// Also could not have been patched on this device.
failedChecks.add(sameHardware);
} else if (failedChecks.isEmpty()) {
// ADB install of CLI build. Allow even if patched a long time ago.
Check.disableForever();
return;
}
} else {
failedChecks.add(installerCheck);
}
CheckIsNearPatchTime nearPatchTime = new CheckIsNearPatchTime();
Boolean timeCheckPassed = nearPatchTime.check();
if (timeCheckPassed && !DEBUG_ALWAYS_SHOW_CHECK_FAILED_DIALOG) {
// Allow installing recently patched apks,
// even if the install source is not Manager or ADB.
Check.disableForever();
return;
} else {
failedChecks.add(nearPatchTime);
}
if (DEBUG_ALWAYS_SHOW_CHECK_FAILED_DIALOG) {
// Show all failures for debugging layout.
failedChecks = Arrays.asList(
sameHardware,
nearPatchTime,
installerCheck
);
}
//noinspection ComparatorCombinators
Collections.sort(failedChecks, (o1, o2) -> o1.uiSortingValue() - o2.uiSortingValue());
Check.issueWarning(
context,
failedChecks
);
} catch (Exception ex) {
Logger.printException(() -> "check failure", ex);
}
});
}
private static boolean buildFieldEqualsHash(String buildFieldName, String buildFieldValue, @Nullable String hash) {
try {
final var sha1 = MessageDigest.getInstance("SHA-1")
.digest(buildFieldValue.getBytes(StandardCharsets.UTF_8));
// Must be careful to use same base64 encoding Kotlin uses.
String runtimeHash = new String(Base64.encode(sha1, Base64.NO_WRAP), StandardCharsets.ISO_8859_1);
final boolean equals = runtimeHash.equals(hash);
if (!equals) {
Logger.printInfo(() -> "Hashes do not match. " + buildFieldName + ": '" + buildFieldValue
+ "' runtimeHash: '" + runtimeHash + "' patchTimeHash: '" + hash + "'");
}
return equals;
} catch (NoSuchAlgorithmException ex) {
Logger.printException(() -> "buildFieldEqualsHash failure", ex); // Will never happen.
return false;
}
}
}

View File

@@ -0,0 +1,32 @@
package app.revanced.extension.shared.checks;
/**
* Fields are set by the patch. Do not modify.
* Fields are not final, because the compiler is inlining them.
*
* @noinspection CanBeFinal
*/
final class PatchInfo {
static long PATCH_TIME = 0L;
final static class Build {
static String PATCH_BOARD = "";
static String PATCH_BOOTLOADER = "";
static String PATCH_BRAND = "";
static String PATCH_CPU_ABI = "";
static String PATCH_CPU_ABI2 = "";
static String PATCH_DEVICE = "";
static String PATCH_DISPLAY = "";
static String PATCH_FINGERPRINT = "";
static String PATCH_HARDWARE = "";
static String PATCH_HOST = "";
static String PATCH_ID = "";
static String PATCH_MANUFACTURER = "";
static String PATCH_MODEL = "";
static String PATCH_PRODUCT = "";
static String PATCH_RADIO = "";
static String PATCH_TAGS = "";
static String PATCH_TYPE = "";
static String PATCH_USER = "";
}
}

View File

@@ -0,0 +1,208 @@
package app.revanced.extension.shared.fixes.slink;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import androidx.annotation.NonNull;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.SocketTimeoutException;
import java.net.URL;
import java.util.Objects;
import static app.revanced.extension.shared.Utils.getContext;
/**
* Base class to implement /s/ link resolution in 3rd party Reddit apps.
* <br>
* <br>
* Usage:
* <br>
* <br>
* An implementation of this class must have two static methods that are called by the app:
* <ul>
* <li>public static boolean patchResolveSLink(String link)</li>
* <li>public static void patchSetAccessToken(String accessToken)</li>
* </ul>
* The static methods must call the instance methods of the base class.
* <br>
* The singleton pattern can be used to access the instance of the class:
* <pre>
* {@code
* {
* INSTANCE = new FixSLinksPatch();
* }
* }
* </pre>
* Set the app's web view activity class as a fallback to open /s/ links if the resolution fails:
* <pre>
* {@code
* private FixSLinksPatch() {
* webViewActivityClass = WebViewActivity.class;
* }
* }
* </pre>
* Hook the app's navigation handler to call this method before doing any of its own resolution:
* <pre>
* {@code
* public static boolean patchResolveSLink(Context context, String link) {
* return INSTANCE.resolveSLink(context, link);
* }
* }
* </pre>
* If this method returns true, the app should early return and not do any of its own resolution.
* <br>
* <br>
* Hook the app's access token so that this class can use it to resolve /s/ links:
* <pre>
* {@code
* public static void patchSetAccessToken(String accessToken) {
* INSTANCE.setAccessToken(access_token);
* }
* }
* </pre>
*/
public abstract class BaseFixSLinksPatch {
/**
* The class of the activity used to open links in a web view if resolving them fails.
*/
protected Class<? extends Activity> webViewActivityClass;
/**
* The access token used to resolve the /s/ link.
*/
protected String accessToken;
/**
* The URL that was trying to be resolved before the access token was set.
* If this is not null, the URL will be resolved right after the access token is set.
*/
protected String pendingUrl;
/**
* The singleton instance of the class.
*/
protected static BaseFixSLinksPatch INSTANCE;
public boolean resolveSLink(String link) {
switch (resolveLink(link)) {
case ACCESS_TOKEN_START: {
pendingUrl = link;
return true;
}
case DO_NOTHING:
return true;
default:
return false;
}
}
private ResolveResult resolveLink(String link) {
Context context = getContext();
if (link.matches(".*reddit\\.com/r/[^/]+/s/[^/]+")) {
// A link ends with #bypass if it failed to resolve below.
// resolveLink is called with the same link again but this time with #bypass
// so that the link is opened in the app browser instead of trying to resolve it again.
if (link.endsWith("#bypass")) {
openInAppBrowser(context, link);
return ResolveResult.DO_NOTHING;
}
Logger.printDebug(() -> "Resolving " + link);
if (accessToken == null) {
// This is not optimal.
// However, an accessToken is necessary to make an authenticated request to Reddit.
// in case Reddit has banned the IP - e.g. VPN.
Intent startIntent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
context.startActivity(startIntent);
return ResolveResult.ACCESS_TOKEN_START;
}
Utils.runOnBackgroundThread(() -> {
String bypassLink = link + "#bypass";
String finalLocation = bypassLink;
try {
HttpURLConnection connection = getHttpURLConnection(link, accessToken);
connection.connect();
String location = connection.getHeaderField("location");
connection.disconnect();
Objects.requireNonNull(location, "Location is null");
finalLocation = location;
Logger.printDebug(() -> "Resolved " + link + " to " + location);
} catch (SocketTimeoutException e) {
Logger.printException(() -> "Timeout when trying to resolve " + link, e);
finalLocation = bypassLink;
} catch (Exception e) {
Logger.printException(() -> "Failed to resolve " + link, e);
finalLocation = bypassLink;
} finally {
Intent startIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(finalLocation));
startIntent.setPackage(context.getPackageName());
startIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(startIntent);
}
});
return ResolveResult.DO_NOTHING;
}
return ResolveResult.CONTINUE;
}
public void setAccessToken(String accessToken) {
Logger.printDebug(() -> "Setting access token");
this.accessToken = accessToken;
// In case a link was trying to be resolved before access token was set.
// The link is resolved now, after the access token is set.
if (pendingUrl != null) {
String link = pendingUrl;
pendingUrl = null;
Logger.printDebug(() -> "Opening pending URL");
resolveLink(link);
}
}
private void openInAppBrowser(Context context, String link) {
Intent intent = new Intent(context, webViewActivityClass);
intent.putExtra("url", link);
context.startActivity(intent);
}
@NonNull
private HttpURLConnection getHttpURLConnection(String link, String accessToken) throws IOException {
URL url = new URL(link);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setInstanceFollowRedirects(false);
connection.setRequestMethod("HEAD");
connection.setConnectTimeout(2000);
connection.setReadTimeout(2000);
if (accessToken != null) {
Logger.printDebug(() -> "Setting access token to make /s/ request");
connection.setRequestProperty("Authorization", "Bearer " + accessToken);
} else {
Logger.printDebug(() -> "Not setting access token to make /s/ request, because it is null");
}
return connection;
}
}

View File

@@ -0,0 +1,10 @@
package app.revanced.extension.shared.fixes.slink;
public enum ResolveResult {
// Let app handle rest of stuff
CONTINUE,
// Start app, to make it cache its access_token
ACCESS_TOKEN_START,
// Don't do anything - we started resolving
DO_NOTHING
}

View File

@@ -0,0 +1,145 @@
package app.revanced.extension.shared.requests;
import app.revanced.extension.shared.Utils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class Requester {
private Requester() {
}
public static HttpURLConnection getConnectionFromRoute(String apiUrl, Route route, String... params) throws IOException {
return getConnectionFromCompiledRoute(apiUrl, route.compile(params));
}
public static HttpURLConnection getConnectionFromCompiledRoute(String apiUrl, Route.CompiledRoute route) throws IOException {
String url = apiUrl + route.getCompiledRoute();
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
// Request data is in the URL parameters and no body is sent.
// The calling code must set a length if using a request body.
connection.setFixedLengthStreamingMode(0);
connection.setRequestMethod(route.getMethod().name());
String agentString = System.getProperty("http.agent")
+ "; ReVanced/" + Utils.getAppVersionName()
+ " (" + Utils.getPatchesReleaseVersion() + ")";
connection.setRequestProperty("User-Agent", agentString);
return connection;
}
/**
* Parse the {@link HttpURLConnection}, and closes the underlying InputStream.
*/
private static String parseInputStreamAndClose(InputStream inputStream) throws IOException {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
StringBuilder jsonBuilder = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
jsonBuilder.append(line);
jsonBuilder.append('\n');
}
return jsonBuilder.toString();
}
}
/**
* Parse the {@link HttpURLConnection} response as a String.
* This does not close the url connection. If further requests to this host are unlikely
* in the near future, then instead use {@link #parseStringAndDisconnect(HttpURLConnection)}.
*/
public static String parseString(HttpURLConnection connection) throws IOException {
return parseInputStreamAndClose(connection.getInputStream());
}
/**
* Parse the {@link HttpURLConnection} response as a String, and disconnect.
*
* <b>Should only be used if other requests to the server in the near future are unlikely</b>
*
* @see #parseString(HttpURLConnection)
*/
public static String parseStringAndDisconnect(HttpURLConnection connection) throws IOException {
String result = parseString(connection);
connection.disconnect();
return result;
}
/**
* Parse the {@link HttpURLConnection} error stream as a String.
* If the server sent no error response data, this returns an empty string.
*/
public static String parseErrorString(HttpURLConnection connection) throws IOException {
InputStream errorStream = connection.getErrorStream();
if (errorStream == null) {
return "";
}
return parseInputStreamAndClose(errorStream);
}
/**
* Parse the {@link HttpURLConnection} error stream as a String, and disconnect.
* If the server sent no error response data, this returns an empty string.
*
* Should only be used if other requests to the server are unlikely in the near future.
*
* @see #parseErrorString(HttpURLConnection)
*/
public static String parseErrorStringAndDisconnect(HttpURLConnection connection) throws IOException {
String result = parseErrorString(connection);
connection.disconnect();
return result;
}
/**
* Parse the {@link HttpURLConnection} response into a JSONObject.
* This does not close the url connection. If further requests to this host are unlikely
* in the near future, then instead use {@link #parseJSONObjectAndDisconnect(HttpURLConnection)}.
*/
public static JSONObject parseJSONObject(HttpURLConnection connection) throws JSONException, IOException {
return new JSONObject(parseString(connection));
}
/**
* Parse the {@link HttpURLConnection}, close the underlying InputStream, and disconnect.
*
* <b>Should only be used if other requests to the server in the near future are unlikely</b>
*
* @see #parseJSONObject(HttpURLConnection)
*/
public static JSONObject parseJSONObjectAndDisconnect(HttpURLConnection connection) throws JSONException, IOException {
JSONObject object = parseJSONObject(connection);
connection.disconnect();
return object;
}
/**
* Parse the {@link HttpURLConnection}, and closes the underlying InputStream.
* This does not close the url connection. If further requests to this host are unlikely
* in the near future, then instead use {@link #parseJSONArrayAndDisconnect(HttpURLConnection)}.
*/
public static JSONArray parseJSONArray(HttpURLConnection connection) throws JSONException, IOException {
return new JSONArray(parseString(connection));
}
/**
* Parse the {@link HttpURLConnection}, close the underlying InputStream, and disconnect.
*
* <b>Should only be used if other requests to the server in the near future are unlikely</b>
*
* @see #parseJSONArray(HttpURLConnection)
*/
public static JSONArray parseJSONArrayAndDisconnect(HttpURLConnection connection) throws JSONException, IOException {
JSONArray array = parseJSONArray(connection);
connection.disconnect();
return array;
}
}

View File

@@ -0,0 +1,66 @@
package app.revanced.extension.shared.requests;
public class Route {
private final String route;
private final Method method;
private final int paramCount;
public Route(Method method, String route) {
this.method = method;
this.route = route;
this.paramCount = countMatches(route, '{');
if (paramCount != countMatches(route, '}'))
throw new IllegalArgumentException("Not enough parameters");
}
public Method getMethod() {
return method;
}
public CompiledRoute compile(String... params) {
if (params.length != paramCount)
throw new IllegalArgumentException("Error compiling route [" + route + "], incorrect amount of parameters provided. " +
"Expected: " + paramCount + ", provided: " + params.length);
StringBuilder compiledRoute = new StringBuilder(route);
for (int i = 0; i < paramCount; i++) {
int paramStart = compiledRoute.indexOf("{");
int paramEnd = compiledRoute.indexOf("}");
compiledRoute.replace(paramStart, paramEnd + 1, params[i]);
}
return new CompiledRoute(this, compiledRoute.toString());
}
public static class CompiledRoute {
private final Route baseRoute;
private final String compiledRoute;
private CompiledRoute(Route baseRoute, String compiledRoute) {
this.baseRoute = baseRoute;
this.compiledRoute = compiledRoute;
}
public String getCompiledRoute() {
return compiledRoute;
}
public Method getMethod() {
return baseRoute.method;
}
}
private int countMatches(CharSequence seq, char c) {
int count = 0;
for (int i = 0; i < seq.length(); i++) {
if (seq.charAt(i) == c)
count++;
}
return count;
}
public enum Method {
GET,
POST
}
}

View File

@@ -0,0 +1,28 @@
package app.revanced.extension.shared.settings;
import app.revanced.extension.shared.spoof.ClientType;
import app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch;
import static java.lang.Boolean.FALSE;
import static java.lang.Boolean.TRUE;
import static app.revanced.extension.shared.settings.Setting.parent;
/**
* Settings shared across multiple apps.
* <p>
* To ensure this class is loaded when the UI is created, app specific setting bundles should extend
* or reference this class.
*/
public class BaseSettings {
public static final BooleanSetting DEBUG = new BooleanSetting("revanced_debug", FALSE);
public static final BooleanSetting DEBUG_STACKTRACE = new BooleanSetting("revanced_debug_stacktrace", FALSE, parent(DEBUG));
public static final BooleanSetting DEBUG_TOAST_ON_ERROR = new BooleanSetting("revanced_debug_toast_on_error", TRUE, "revanced_debug_toast_on_error_user_dialog_message");
public static final IntegerSetting CHECK_ENVIRONMENT_WARNINGS_ISSUED = new IntegerSetting("revanced_check_environment_warnings_issued", 0, true, false);
public static final BooleanSetting SPOOF_VIDEO_STREAMS = new BooleanSetting("revanced_spoof_video_streams", TRUE, true, "revanced_spoof_video_streams_user_dialog_message");
public static final BooleanSetting SPOOF_VIDEO_STREAMS_IOS_FORCE_AVC = new BooleanSetting("revanced_spoof_video_streams_ios_force_avc", FALSE, true,
"revanced_spoof_video_streams_ios_force_avc_user_dialog_message", new SpoofVideoStreamsPatch.ForceiOSAVCAvailability());
public static final EnumSetting<ClientType> SPOOF_VIDEO_STREAMS_CLIENT_TYPE = new EnumSetting<>("revanced_spoof_video_streams_client", ClientType.ANDROID_VR, true, parent(SPOOF_VIDEO_STREAMS));
}

View File

@@ -0,0 +1,79 @@
package app.revanced.extension.shared.settings;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Objects;
@SuppressWarnings("unused")
public class BooleanSetting extends Setting<Boolean> {
public BooleanSetting(String key, Boolean defaultValue) {
super(key, defaultValue);
}
public BooleanSetting(String key, Boolean defaultValue, boolean rebootApp) {
super(key, defaultValue, rebootApp);
}
public BooleanSetting(String key, Boolean defaultValue, boolean rebootApp, boolean includeWithImportExport) {
super(key, defaultValue, rebootApp, includeWithImportExport);
}
public BooleanSetting(String key, Boolean defaultValue, String userDialogMessage) {
super(key, defaultValue, userDialogMessage);
}
public BooleanSetting(String key, Boolean defaultValue, Availability availability) {
super(key, defaultValue, availability);
}
public BooleanSetting(String key, Boolean defaultValue, boolean rebootApp, String userDialogMessage) {
super(key, defaultValue, rebootApp, userDialogMessage);
}
public BooleanSetting(String key, Boolean defaultValue, boolean rebootApp, Availability availability) {
super(key, defaultValue, rebootApp, availability);
}
public BooleanSetting(String key, Boolean defaultValue, boolean rebootApp, String userDialogMessage, Availability availability) {
super(key, defaultValue, rebootApp, userDialogMessage, availability);
}
public BooleanSetting(@NonNull String key, @NonNull Boolean defaultValue, boolean rebootApp, boolean includeWithImportExport, @Nullable String userDialogMessage, @Nullable Availability availability) {
super(key, defaultValue, rebootApp, includeWithImportExport, userDialogMessage, availability);
}
/**
* Sets, but does _not_ persistently save the value.
* This method is only to be used by the Settings preference code.
*
* This intentionally is a static method to deter
* accidental usage when {@link #save(Boolean)} was intnded.
*/
public static void privateSetValue(@NonNull BooleanSetting setting, @NonNull Boolean newValue) {
setting.value = Objects.requireNonNull(newValue);
}
@Override
protected void load() {
value = preferences.getBoolean(key, defaultValue);
}
@Override
protected Boolean readFromJSON(JSONObject json, String importExportKey) throws JSONException {
return json.getBoolean(importExportKey);
}
@Override
protected void setValueFromString(@NonNull String newValue) {
value = Boolean.valueOf(Objects.requireNonNull(newValue));
}
@Override
public void save(@NonNull Boolean newValue) {
// Must set before saving to preferences (otherwise importing fails to update UI correctly).
value = Objects.requireNonNull(newValue);
preferences.saveBoolean(key, newValue);
}
@NonNull
@Override
public Boolean get() {
return value;
}
}

View File

@@ -0,0 +1,117 @@
package app.revanced.extension.shared.settings;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Locale;
import java.util.Objects;
import app.revanced.extension.shared.Logger;
/**
* If an Enum value is removed or changed, any saved or imported data using the
* non-existent value will be reverted to the default value
* (the event is logged, but no user error is displayed).
*
* All saved JSON text is converted to lowercase to keep the output less obnoxious.
*/
@SuppressWarnings("unused")
public class EnumSetting<T extends Enum<?>> extends Setting<T> {
public EnumSetting(String key, T defaultValue) {
super(key, defaultValue);
}
public EnumSetting(String key, T defaultValue, boolean rebootApp) {
super(key, defaultValue, rebootApp);
}
public EnumSetting(String key, T defaultValue, boolean rebootApp, boolean includeWithImportExport) {
super(key, defaultValue, rebootApp, includeWithImportExport);
}
public EnumSetting(String key, T defaultValue, String userDialogMessage) {
super(key, defaultValue, userDialogMessage);
}
public EnumSetting(String key, T defaultValue, Availability availability) {
super(key, defaultValue, availability);
}
public EnumSetting(String key, T defaultValue, boolean rebootApp, String userDialogMessage) {
super(key, defaultValue, rebootApp, userDialogMessage);
}
public EnumSetting(String key, T defaultValue, boolean rebootApp, Availability availability) {
super(key, defaultValue, rebootApp, availability);
}
public EnumSetting(String key, T defaultValue, boolean rebootApp, String userDialogMessage, Availability availability) {
super(key, defaultValue, rebootApp, userDialogMessage, availability);
}
public EnumSetting(@NonNull String key, @NonNull T defaultValue, boolean rebootApp, boolean includeWithImportExport, @Nullable String userDialogMessage, @Nullable Availability availability) {
super(key, defaultValue, rebootApp, includeWithImportExport, userDialogMessage, availability);
}
@Override
protected void load() {
value = preferences.getEnum(key, defaultValue);
}
@Override
protected T readFromJSON(JSONObject json, String importExportKey) throws JSONException {
String enumName = json.getString(importExportKey);
try {
return getEnumFromString(enumName);
} catch (IllegalArgumentException ex) {
// Info level to allow removing enum values in the future without showing any user errors.
Logger.printInfo(() -> "Using default, and ignoring unknown enum value: " + enumName, ex);
return defaultValue;
}
}
@Override
protected void writeToJSON(JSONObject json, String importExportKey) throws JSONException {
// Use lowercase to keep the output less ugly.
json.put(importExportKey, value.name().toLowerCase(Locale.ENGLISH));
}
@NonNull
private T getEnumFromString(String enumName) {
//noinspection ConstantConditions
for (Enum<?> value : defaultValue.getClass().getEnumConstants()) {
if (value.name().equalsIgnoreCase(enumName)) {
// noinspection unchecked
return (T) value;
}
}
throw new IllegalArgumentException("Unknown enum value: " + enumName);
}
@Override
protected void setValueFromString(@NonNull String newValue) {
value = getEnumFromString(Objects.requireNonNull(newValue));
}
@Override
public void save(@NonNull T newValue) {
// Must set before saving to preferences (otherwise importing fails to update UI correctly).
value = Objects.requireNonNull(newValue);
preferences.saveEnumAsString(key, newValue);
}
@NonNull
@Override
public T get() {
return value;
}
/**
* Availability based on if this setting is currently set to any of the provided types.
*/
@SafeVarargs
public final Setting.Availability availability(@NonNull T... types) {
return () -> {
T currentEnumType = get();
for (T enumType : types) {
if (currentEnumType == enumType) return true;
}
return false;
};
}
}

View File

@@ -0,0 +1,69 @@
package app.revanced.extension.shared.settings;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Objects;
@SuppressWarnings("unused")
public class FloatSetting extends Setting<Float> {
public FloatSetting(String key, Float defaultValue) {
super(key, defaultValue);
}
public FloatSetting(String key, Float defaultValue, boolean rebootApp) {
super(key, defaultValue, rebootApp);
}
public FloatSetting(String key, Float defaultValue, boolean rebootApp, boolean includeWithImportExport) {
super(key, defaultValue, rebootApp, includeWithImportExport);
}
public FloatSetting(String key, Float defaultValue, String userDialogMessage) {
super(key, defaultValue, userDialogMessage);
}
public FloatSetting(String key, Float defaultValue, Availability availability) {
super(key, defaultValue, availability);
}
public FloatSetting(String key, Float defaultValue, boolean rebootApp, String userDialogMessage) {
super(key, defaultValue, rebootApp, userDialogMessage);
}
public FloatSetting(String key, Float defaultValue, boolean rebootApp, Availability availability) {
super(key, defaultValue, rebootApp, availability);
}
public FloatSetting(String key, Float defaultValue, boolean rebootApp, String userDialogMessage, Availability availability) {
super(key, defaultValue, rebootApp, userDialogMessage, availability);
}
public FloatSetting(@NonNull String key, @NonNull Float defaultValue, boolean rebootApp, boolean includeWithImportExport, @Nullable String userDialogMessage, @Nullable Availability availability) {
super(key, defaultValue, rebootApp, includeWithImportExport, userDialogMessage, availability);
}
@Override
protected void load() {
value = preferences.getFloatString(key, defaultValue);
}
@Override
protected Float readFromJSON(JSONObject json, String importExportKey) throws JSONException {
return (float) json.getDouble(importExportKey);
}
@Override
protected void setValueFromString(@NonNull String newValue) {
value = Float.valueOf(Objects.requireNonNull(newValue));
}
@Override
public void save(@NonNull Float newValue) {
// Must set before saving to preferences (otherwise importing fails to update UI correctly).
value = Objects.requireNonNull(newValue);
preferences.saveFloatString(key, newValue);
}
@NonNull
@Override
public Float get() {
return value;
}
}

View File

@@ -0,0 +1,69 @@
package app.revanced.extension.shared.settings;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Objects;
@SuppressWarnings("unused")
public class IntegerSetting extends Setting<Integer> {
public IntegerSetting(String key, Integer defaultValue) {
super(key, defaultValue);
}
public IntegerSetting(String key, Integer defaultValue, boolean rebootApp) {
super(key, defaultValue, rebootApp);
}
public IntegerSetting(String key, Integer defaultValue, boolean rebootApp, boolean includeWithImportExport) {
super(key, defaultValue, rebootApp, includeWithImportExport);
}
public IntegerSetting(String key, Integer defaultValue, String userDialogMessage) {
super(key, defaultValue, userDialogMessage);
}
public IntegerSetting(String key, Integer defaultValue, Availability availability) {
super(key, defaultValue, availability);
}
public IntegerSetting(String key, Integer defaultValue, boolean rebootApp, String userDialogMessage) {
super(key, defaultValue, rebootApp, userDialogMessage);
}
public IntegerSetting(String key, Integer defaultValue, boolean rebootApp, Availability availability) {
super(key, defaultValue, rebootApp, availability);
}
public IntegerSetting(String key, Integer defaultValue, boolean rebootApp, String userDialogMessage, Availability availability) {
super(key, defaultValue, rebootApp, userDialogMessage, availability);
}
public IntegerSetting(@NonNull String key, @NonNull Integer defaultValue, boolean rebootApp, boolean includeWithImportExport, @Nullable String userDialogMessage, @Nullable Availability availability) {
super(key, defaultValue, rebootApp, includeWithImportExport, userDialogMessage, availability);
}
@Override
protected void load() {
value = preferences.getIntegerString(key, defaultValue);
}
@Override
protected Integer readFromJSON(JSONObject json, String importExportKey) throws JSONException {
return json.getInt(importExportKey);
}
@Override
protected void setValueFromString(@NonNull String newValue) {
value = Integer.valueOf(Objects.requireNonNull(newValue));
}
@Override
public void save(@NonNull Integer newValue) {
// Must set before saving to preferences (otherwise importing fails to update UI correctly).
value = Objects.requireNonNull(newValue);
preferences.saveIntegerString(key, newValue);
}
@NonNull
@Override
public Integer get() {
return value;
}
}

View File

@@ -0,0 +1,69 @@
package app.revanced.extension.shared.settings;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Objects;
@SuppressWarnings("unused")
public class LongSetting extends Setting<Long> {
public LongSetting(String key, Long defaultValue) {
super(key, defaultValue);
}
public LongSetting(String key, Long defaultValue, boolean rebootApp) {
super(key, defaultValue, rebootApp);
}
public LongSetting(String key, Long defaultValue, boolean rebootApp, boolean includeWithImportExport) {
super(key, defaultValue, rebootApp, includeWithImportExport);
}
public LongSetting(String key, Long defaultValue, String userDialogMessage) {
super(key, defaultValue, userDialogMessage);
}
public LongSetting(String key, Long defaultValue, Availability availability) {
super(key, defaultValue, availability);
}
public LongSetting(String key, Long defaultValue, boolean rebootApp, String userDialogMessage) {
super(key, defaultValue, rebootApp, userDialogMessage);
}
public LongSetting(String key, Long defaultValue, boolean rebootApp, Availability availability) {
super(key, defaultValue, rebootApp, availability);
}
public LongSetting(String key, Long defaultValue, boolean rebootApp, String userDialogMessage, Availability availability) {
super(key, defaultValue, rebootApp, userDialogMessage, availability);
}
public LongSetting(@NonNull String key, @NonNull Long defaultValue, boolean rebootApp, boolean includeWithImportExport, @Nullable String userDialogMessage, @Nullable Availability availability) {
super(key, defaultValue, rebootApp, includeWithImportExport, userDialogMessage, availability);
}
@Override
protected void load() {
value = preferences.getLongString(key, defaultValue);
}
@Override
protected Long readFromJSON(JSONObject json, String importExportKey) throws JSONException {
return json.getLong(importExportKey);
}
@Override
protected void setValueFromString(@NonNull String newValue) {
value = Long.valueOf(Objects.requireNonNull(newValue));
}
@Override
public void save(@NonNull Long newValue) {
// Must set before saving to preferences (otherwise importing fails to update UI correctly).
value = Objects.requireNonNull(newValue);
preferences.saveLongString(key, newValue);
}
@NonNull
@Override
public Long get() {
return value;
}
}

View File

@@ -0,0 +1,460 @@
package app.revanced.extension.shared.settings;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.StringRef;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.preference.SharedPrefCategory;
import org.jetbrains.annotations.NotNull;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.*;
import static app.revanced.extension.shared.StringRef.str;
@SuppressWarnings("unused")
public abstract class Setting<T> {
/**
* Indicates if a {@link Setting} is available to edit and use.
* Typically this is dependent upon other BooleanSetting(s) set to 'true',
* but this can be used to call into extension code and check other conditions.
*/
public interface Availability {
boolean isAvailable();
}
/**
* Availability based on a single parent setting being enabled.
*/
@NonNull
public static Availability parent(@NonNull BooleanSetting parent) {
return parent::get;
}
/**
* Availability based on all parents being enabled.
*/
@NonNull
public static Availability parentsAll(@NonNull BooleanSetting... parents) {
return () -> {
for (BooleanSetting parent : parents) {
if (!parent.get()) return false;
}
return true;
};
}
/**
* Availability based on any parent being enabled.
*/
@NonNull
public static Availability parentsAny(@NonNull BooleanSetting... parents) {
return () -> {
for (BooleanSetting parent : parents) {
if (parent.get()) return true;
}
return false;
};
}
/**
* Callback for importing/exporting settings.
*/
public interface ImportExportCallback {
/**
* Called after all settings have been imported.
*/
void settingsImported(@Nullable Context context);
/**
* Called after all settings have been exported.
*/
void settingsExported(@Nullable Context context);
}
private static final List<ImportExportCallback> importExportCallbacks = new ArrayList<>();
/**
* Adds a callback for {@link #importFromJSON(Context, String)} and {@link #exportToJson(Context)}.
*/
public static void addImportExportCallback(@NonNull ImportExportCallback callback) {
importExportCallbacks.add(Objects.requireNonNull(callback));
}
/**
* All settings that were instantiated.
* When a new setting is created, it is automatically added to this list.
*/
private static final List<Setting<?>> SETTINGS = new ArrayList<>();
/**
* Map of setting path to setting object.
*/
private static final Map<String, Setting<?>> PATH_TO_SETTINGS = new HashMap<>();
/**
* Preference all instances are saved to.
*/
public static final SharedPrefCategory preferences = new SharedPrefCategory("revanced_prefs");
@Nullable
public static Setting<?> getSettingFromPath(@NonNull String str) {
return PATH_TO_SETTINGS.get(str);
}
/**
* @return All settings that have been created.
*/
@NonNull
public static List<Setting<?>> allLoadedSettings() {
return Collections.unmodifiableList(SETTINGS);
}
/**
* @return All settings that have been created, sorted by keys.
*/
@NonNull
private static List<Setting<?>> allLoadedSettingsSorted() {
Collections.sort(SETTINGS, (Setting<?> o1, Setting<?> o2) -> o1.key.compareTo(o2.key));
return allLoadedSettings();
}
/**
* The key used to store the value in the shared preferences.
*/
@NonNull
public final String key;
/**
* The default value of the setting.
*/
@NonNull
public final T defaultValue;
/**
* If the app should be rebooted, if this setting is changed
*/
public final boolean rebootApp;
/**
* If this setting should be included when importing/exporting settings.
*/
public final boolean includeWithImportExport;
/**
* If this setting is available to edit and use.
* Not to be confused with it's status returned from {@link #get()}.
*/
@Nullable
private final Availability availability;
/**
* Confirmation message to display, if the user tries to change the setting from the default value.
* Currently this works only for Boolean setting types.
*/
@Nullable
public final StringRef userDialogMessage;
// Must be volatile, as some settings are read/write from different threads.
// Of note, the object value is persistently stored using SharedPreferences (which is thread safe).
/**
* The value of the setting.
*/
@NonNull
protected volatile T value;
public Setting(String key, T defaultValue) {
this(key, defaultValue, false, true, null, null);
}
public Setting(String key, T defaultValue, boolean rebootApp) {
this(key, defaultValue, rebootApp, true, null, null);
}
public Setting(String key, T defaultValue, boolean rebootApp, boolean includeWithImportExport) {
this(key, defaultValue, rebootApp, includeWithImportExport, null, null);
}
public Setting(String key, T defaultValue, String userDialogMessage) {
this(key, defaultValue, false, true, userDialogMessage, null);
}
public Setting(String key, T defaultValue, Availability availability) {
this(key, defaultValue, false, true, null, availability);
}
public Setting(String key, T defaultValue, boolean rebootApp, String userDialogMessage) {
this(key, defaultValue, rebootApp, true, userDialogMessage, null);
}
public Setting(String key, T defaultValue, boolean rebootApp, Availability availability) {
this(key, defaultValue, rebootApp, true, null, availability);
}
public Setting(String key, T defaultValue, boolean rebootApp, String userDialogMessage, Availability availability) {
this(key, defaultValue, rebootApp, true, userDialogMessage, availability);
}
/**
* A setting backed by a shared preference.
*
* @param key The key used to store the value in the shared preferences.
* @param defaultValue The default value of the setting.
* @param rebootApp If the app should be rebooted, if this setting is changed.
* @param includeWithImportExport If this setting should be shown in the import/export dialog.
* @param userDialogMessage Confirmation message to display, if the user tries to change the setting from the default value.
* @param availability Condition that must be true, for this setting to be available to configure.
*/
public Setting(@NonNull String key,
@NonNull T defaultValue,
boolean rebootApp,
boolean includeWithImportExport,
@Nullable String userDialogMessage,
@Nullable Availability availability
) {
this.key = Objects.requireNonNull(key);
this.value = this.defaultValue = Objects.requireNonNull(defaultValue);
this.rebootApp = rebootApp;
this.includeWithImportExport = includeWithImportExport;
this.userDialogMessage = (userDialogMessage == null) ? null : new StringRef(userDialogMessage);
this.availability = availability;
SETTINGS.add(this);
if (PATH_TO_SETTINGS.put(key, this) != null) {
// Debug setting may not be created yet so using Logger may cause an initialization crash.
// Show a toast instead.
Utils.showToastLong(this.getClass().getSimpleName()
+ " error: Duplicate Setting key found: " + key);
}
load();
}
/**
* Migrate a setting value if the path is renamed but otherwise the old and new settings are identical.
*/
public static <T> void migrateOldSettingToNew(@NonNull Setting<T> oldSetting, @NonNull Setting<T> newSetting) {
if (oldSetting == newSetting) throw new IllegalArgumentException();
if (!oldSetting.isSetToDefault()) {
Logger.printInfo(() -> "Migrating old setting value: " + oldSetting + " into replacement setting: " + newSetting);
newSetting.save(oldSetting.value);
oldSetting.resetToDefault();
}
}
/**
* Migrate an old Setting value previously stored in a different SharedPreference.
*
* This method will be deleted in the future.
*/
public static void migrateFromOldPreferences(@NonNull SharedPrefCategory oldPrefs, @NonNull Setting setting, String settingKey) {
if (!oldPrefs.preferences.contains(settingKey)) {
return; // Nothing to do.
}
Object newValue = setting.get();
final Object migratedValue;
if (setting instanceof BooleanSetting) {
migratedValue = oldPrefs.getBoolean(settingKey, (Boolean) newValue);
} else if (setting instanceof IntegerSetting) {
migratedValue = oldPrefs.getIntegerString(settingKey, (Integer) newValue);
} else if (setting instanceof LongSetting) {
migratedValue = oldPrefs.getLongString(settingKey, (Long) newValue);
} else if (setting instanceof FloatSetting) {
migratedValue = oldPrefs.getFloatString(settingKey, (Float) newValue);
} else if (setting instanceof StringSetting) {
migratedValue = oldPrefs.getString(settingKey, (String) newValue);
} else {
Logger.printException(() -> "Unknown setting: " + setting);
// Remove otherwise it'll show a toast on every launch
oldPrefs.preferences.edit().remove(settingKey).apply();
return;
}
oldPrefs.preferences.edit().remove(settingKey).apply(); // Remove the old setting.
if (migratedValue.equals(newValue)) {
Logger.printDebug(() -> "Value does not need migrating: " + settingKey);
return; // Old value is already equal to the new setting value.
}
Logger.printDebug(() -> "Migrating old preference value into current preference: " + settingKey);
//noinspection unchecked
setting.save(migratedValue);
}
/**
* Sets, but does _not_ persistently save the value.
* This method is only to be used by the Settings preference code.
*
* This intentionally is a static method to deter
* accidental usage when {@link #save(Object)} was intended.
*/
public static void privateSetValueFromString(@NonNull Setting<?> setting, @NonNull String newValue) {
setting.setValueFromString(newValue);
}
/**
* Sets the value of {@link #value}, but do not save to {@link #preferences}.
*/
protected abstract void setValueFromString(@NonNull String newValue);
/**
* Load and set the value of {@link #value}.
*/
protected abstract void load();
/**
* Persistently saves the value.
*/
public abstract void save(@NonNull T newValue);
@NonNull
public abstract T get();
/**
* Identical to calling {@link #save(Object)} using {@link #defaultValue}.
*/
public void resetToDefault() {
save(defaultValue);
}
/**
* @return if this setting can be configured and used.
*/
public boolean isAvailable() {
return availability == null || availability.isAvailable();
}
/**
* @return if the currently set value is the same as {@link #defaultValue}
*/
public boolean isSetToDefault() {
return value.equals(defaultValue);
}
@NotNull
@Override
public String toString() {
return key + "=" + get();
}
// region Import / export
/**
* If a setting path has this prefix, then remove it before importing/exporting.
*/
private static final String OPTIONAL_REVANCED_SETTINGS_PREFIX = "revanced_";
/**
* The path, minus any 'revanced' prefix to keep json concise.
*/
private String getImportExportKey() {
if (key.startsWith(OPTIONAL_REVANCED_SETTINGS_PREFIX)) {
return key.substring(OPTIONAL_REVANCED_SETTINGS_PREFIX.length());
}
return key;
}
/**
* @param importExportKey The JSON key. The JSONObject parameter will contain data for this key.
* @return the value stored using the import/export key. Do not set any values in this method.
*/
protected abstract T readFromJSON(JSONObject json, String importExportKey) throws JSONException;
/**
* Saves this instance to JSON.
* <p>
* To keep the JSON simple and readable,
* subclasses should not write out any embedded types (such as JSON Array or Dictionaries).
* <p>
* If this instance is not a type supported natively by JSON (ie: it's not a String/Integer/Float/Long),
* then subclasses can override this method and write out a String value representing the value.
*/
protected void writeToJSON(JSONObject json, String importExportKey) throws JSONException {
json.put(importExportKey, value);
}
@NonNull
public static String exportToJson(@Nullable Context alertDialogContext) {
try {
JSONObject json = new JSONObject();
for (Setting<?> setting : allLoadedSettingsSorted()) {
String importExportKey = setting.getImportExportKey();
if (json.has(importExportKey)) {
throw new IllegalArgumentException("duplicate key found: " + importExportKey);
}
final boolean exportDefaultValues = false; // Enable to see what all settings looks like in the UI.
//noinspection ConstantValue
if (setting.includeWithImportExport && (!setting.isSetToDefault() || exportDefaultValues)) {
setting.writeToJSON(json, importExportKey);
}
}
for (ImportExportCallback callback : importExportCallbacks) {
callback.settingsExported(alertDialogContext);
}
if (json.length() == 0) {
return "";
}
String export = json.toString(0);
// Remove the outer JSON braces to make the output more compact,
// and leave less chance of the user forgetting to copy it
return export.substring(2, export.length() - 2);
} catch (JSONException e) {
Logger.printException(() -> "Export failure", e); // should never happen
return "";
}
}
/**
* @return if any settings that require a reboot were changed.
*/
public static boolean importFromJSON(@NonNull Context alertDialogContext, @NonNull String settingsJsonString) {
try {
if (!settingsJsonString.matches("[\\s\\S]*\\{")) {
settingsJsonString = '{' + settingsJsonString + '}'; // Restore outer JSON braces
}
JSONObject json = new JSONObject(settingsJsonString);
boolean rebootSettingChanged = false;
int numberOfSettingsImported = 0;
for (Setting setting : SETTINGS) {
String key = setting.getImportExportKey();
if (json.has(key)) {
Object value = setting.readFromJSON(json, key);
if (!setting.get().equals(value)) {
rebootSettingChanged |= setting.rebootApp;
//noinspection unchecked
setting.save(value);
}
numberOfSettingsImported++;
} else if (setting.includeWithImportExport && !setting.isSetToDefault()) {
Logger.printDebug(() -> "Resetting to default: " + setting);
rebootSettingChanged |= setting.rebootApp;
setting.resetToDefault();
}
}
for (ImportExportCallback callback : importExportCallbacks) {
callback.settingsImported(alertDialogContext);
}
Utils.showToastLong(numberOfSettingsImported == 0
? str("revanced_settings_import_reset")
: str("revanced_settings_import_success", numberOfSettingsImported));
return rebootSettingChanged;
} catch (JSONException | IllegalArgumentException ex) {
Utils.showToastLong(str("revanced_settings_import_failure_parse", ex.getMessage()));
Logger.printInfo(() -> "", ex);
} catch (Exception ex) {
Logger.printException(() -> "Import failure: " + ex.getMessage(), ex); // should never happen
}
return false;
}
// End import / export
}

View File

@@ -0,0 +1,69 @@
package app.revanced.extension.shared.settings;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Objects;
@SuppressWarnings("unused")
public class StringSetting extends Setting<String> {
public StringSetting(String key, String defaultValue) {
super(key, defaultValue);
}
public StringSetting(String key, String defaultValue, boolean rebootApp) {
super(key, defaultValue, rebootApp);
}
public StringSetting(String key, String defaultValue, boolean rebootApp, boolean includeWithImportExport) {
super(key, defaultValue, rebootApp, includeWithImportExport);
}
public StringSetting(String key, String defaultValue, String userDialogMessage) {
super(key, defaultValue, userDialogMessage);
}
public StringSetting(String key, String defaultValue, Availability availability) {
super(key, defaultValue, availability);
}
public StringSetting(String key, String defaultValue, boolean rebootApp, String userDialogMessage) {
super(key, defaultValue, rebootApp, userDialogMessage);
}
public StringSetting(String key, String defaultValue, boolean rebootApp, Availability availability) {
super(key, defaultValue, rebootApp, availability);
}
public StringSetting(String key, String defaultValue, boolean rebootApp, String userDialogMessage, Availability availability) {
super(key, defaultValue, rebootApp, userDialogMessage, availability);
}
public StringSetting(@NonNull String key, @NonNull String defaultValue, boolean rebootApp, boolean includeWithImportExport, @Nullable String userDialogMessage, @Nullable Availability availability) {
super(key, defaultValue, rebootApp, includeWithImportExport, userDialogMessage, availability);
}
@Override
protected void load() {
value = preferences.getString(key, defaultValue);
}
@Override
protected String readFromJSON(JSONObject json, String importExportKey) throws JSONException {
return json.getString(importExportKey);
}
@Override
protected void setValueFromString(@NonNull String newValue) {
value = Objects.requireNonNull(newValue);
}
@Override
public void save(@NonNull String newValue) {
// Must set before saving to preferences (otherwise importing fails to update UI correctly).
value = Objects.requireNonNull(newValue);
preferences.saveString(key, newValue);
}
@NonNull
@Override
public String get() {
return value;
}
}

View File

@@ -0,0 +1,280 @@
package app.revanced.extension.shared.settings.preference;
import static app.revanced.extension.shared.StringRef.str;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.*;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.util.Objects;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.BaseSettings;
import app.revanced.extension.shared.settings.BooleanSetting;
import app.revanced.extension.shared.settings.Setting;
@SuppressWarnings("deprecation")
public abstract class AbstractPreferenceFragment extends PreferenceFragment {
/**
* Indicates that if a preference changes,
* to apply the change from the Setting to the UI component.
*/
public static boolean settingImportInProgress;
/**
* Confirm and restart dialog button text and title.
* Set by subclasses if Strings cannot be added as a resource.
*/
@Nullable
protected static String restartDialogButtonText, restartDialogTitle, confirmDialogTitle;
/**
* Used to prevent showing reboot dialog, if user cancels a setting user dialog.
*/
private boolean showingUserDialogMessage;
private final SharedPreferences.OnSharedPreferenceChangeListener listener = (sharedPreferences, str) -> {
try {
Setting<?> setting = Setting.getSettingFromPath(str);
if (setting == null) {
return;
}
Preference pref = findPreference(str);
if (pref == null) {
return;
}
Logger.printDebug(() -> "Preference changed: " + setting.key);
// Apply 'Setting <- Preference', unless during importing when it needs to be 'Setting -> Preference'.
updatePreference(pref, setting, true, settingImportInProgress);
// Update any other preference availability that may now be different.
updateUIAvailability();
if (settingImportInProgress) {
return;
}
if (!showingUserDialogMessage) {
if (setting.userDialogMessage != null && ((SwitchPreference) pref).isChecked() != (Boolean) setting.defaultValue) {
showSettingUserDialogConfirmation((SwitchPreference) pref, (BooleanSetting) setting);
} else if (setting.rebootApp) {
showRestartDialog(getContext());
}
}
} catch (Exception ex) {
Logger.printException(() -> "OnSharedPreferenceChangeListener failure", ex);
}
};
/**
* Initialize this instance, and do any custom behavior.
* <p>
* To ensure all {@link Setting} instances are correctly synced to the UI,
* it is important that subclasses make a call or otherwise reference their Settings class bundle
* so all app specific {@link Setting} instances are loaded before this method returns.
*/
protected void initialize() {
final var identifier = Utils.getResourceIdentifier("revanced_prefs", "xml");
if (identifier == 0) return;
addPreferencesFromResource(identifier);
PreferenceScreen screen = getPreferenceScreen();
Utils.sortPreferenceGroups(screen);
Utils.setPreferenceTitlesToMultiLineIfNeeded(screen);
}
private void showSettingUserDialogConfirmation(SwitchPreference switchPref, BooleanSetting setting) {
Utils.verifyOnMainThread();
final var context = getContext();
if (confirmDialogTitle == null) {
confirmDialogTitle = str("revanced_settings_confirm_user_dialog_title");
}
showingUserDialogMessage = true;
new AlertDialog.Builder(context)
.setTitle(confirmDialogTitle)
.setMessage(Objects.requireNonNull(setting.userDialogMessage).toString())
.setPositiveButton(android.R.string.ok, (dialog, id) -> {
if (setting.rebootApp) {
showRestartDialog(context);
}
})
.setNegativeButton(android.R.string.cancel, (dialog, id) -> {
switchPref.setChecked(setting.defaultValue); // Recursive call that resets the Setting value.
})
.setOnDismissListener(dialog -> {
showingUserDialogMessage = false;
})
.setCancelable(false)
.show();
}
/**
* Updates all Preferences values and their availability using the current values in {@link Setting}.
*/
protected void updateUIToSettingValues() {
updatePreferenceScreen(getPreferenceScreen(), true,true);
}
/**
* Updates Preferences availability only using the status of {@link Setting}.
*/
protected void updateUIAvailability() {
updatePreferenceScreen(getPreferenceScreen(), false, false);
}
/**
* Syncs all UI Preferences to any {@link Setting} they represent.
*/
private void updatePreferenceScreen(@NonNull PreferenceScreen screen,
boolean syncSettingValue,
boolean applySettingToPreference) {
// Alternatively this could iterate thru all Settings and check for any matching Preferences,
// but there are many more Settings than UI preferences so it's more efficient to only check
// the Preferences.
for (int i = 0, prefCount = screen.getPreferenceCount(); i < prefCount; i++) {
Preference pref = screen.getPreference(i);
if (pref instanceof PreferenceScreen) {
updatePreferenceScreen((PreferenceScreen) pref, syncSettingValue, applySettingToPreference);
} else if (pref.hasKey()) {
String key = pref.getKey();
Setting<?> setting = Setting.getSettingFromPath(key);
if (setting != null) {
updatePreference(pref, setting, syncSettingValue, applySettingToPreference);
} else if (BaseSettings.DEBUG.get() && (pref instanceof SwitchPreference
|| pref instanceof EditTextPreference || pref instanceof ListPreference)) {
// Probably a typo in the patches preference declaration.
Logger.printException(() -> "Preference key has no setting: " + key);
}
}
}
}
/**
* Handles syncing a UI Preference with the {@link Setting} that backs it.
* If needed, subclasses can override this to handle additional UI Preference types.
*
* @param applySettingToPreference If true, then apply {@link Setting} -> Preference.
* If false, then apply {@link Setting} <- Preference.
*/
protected void syncSettingWithPreference(@NonNull Preference pref,
@NonNull Setting<?> setting,
boolean applySettingToPreference) {
if (pref instanceof SwitchPreference) {
SwitchPreference switchPref = (SwitchPreference) pref;
BooleanSetting boolSetting = (BooleanSetting) setting;
if (applySettingToPreference) {
switchPref.setChecked(boolSetting.get());
} else {
BooleanSetting.privateSetValue(boolSetting, switchPref.isChecked());
}
} else if (pref instanceof EditTextPreference) {
EditTextPreference editPreference = (EditTextPreference) pref;
if (applySettingToPreference) {
editPreference.setText(setting.get().toString());
} else {
Setting.privateSetValueFromString(setting, editPreference.getText());
}
} else if (pref instanceof ListPreference) {
ListPreference listPref = (ListPreference) pref;
if (applySettingToPreference) {
listPref.setValue(setting.get().toString());
} else {
Setting.privateSetValueFromString(setting, listPref.getValue());
}
updateListPreferenceSummary(listPref, setting);
} else {
Logger.printException(() -> "Setting cannot be handled: " + pref.getClass() + ": " + pref);
}
}
/**
* Updates a UI Preference with the {@link Setting} that backs it.
*
* @param syncSetting If the UI should be synced {@link Setting} <-> Preference
* @param applySettingToPreference If true, then apply {@link Setting} -> Preference.
* If false, then apply {@link Setting} <- Preference.
*/
private void updatePreference(@NonNull Preference pref, @NonNull Setting<?> setting,
boolean syncSetting, boolean applySettingToPreference) {
if (!syncSetting && applySettingToPreference) {
throw new IllegalArgumentException();
}
if (syncSetting) {
syncSettingWithPreference(pref, setting, applySettingToPreference);
}
updatePreferenceAvailability(pref, setting);
}
protected void updatePreferenceAvailability(@NonNull Preference pref, @NonNull Setting<?> setting) {
pref.setEnabled(setting.isAvailable());
}
protected void updateListPreferenceSummary(ListPreference listPreference, Setting<?> setting) {
String objectStringValue = setting.get().toString();
final int entryIndex = listPreference.findIndexOfValue(objectStringValue);
if (entryIndex >= 0) {
listPreference.setSummary(listPreference.getEntries()[entryIndex]);
} else {
// Value is not an available option.
// User manually edited import data, or options changed and current selection is no longer available.
// Still show the value in the summary, so it's clear that something is selected.
listPreference.setSummary(objectStringValue);
}
}
public static void showRestartDialog(@NonNull final Context context) {
Utils.verifyOnMainThread();
if (restartDialogTitle == null) {
restartDialogTitle = str("revanced_settings_restart_title");
}
if (restartDialogButtonText == null) {
restartDialogButtonText = str("revanced_settings_restart");
}
new AlertDialog.Builder(context)
.setMessage(restartDialogTitle)
.setPositiveButton(restartDialogButtonText, (dialog, id)
-> Utils.restartApp(context))
.setNegativeButton(android.R.string.cancel, null)
.setCancelable(false)
.show();
}
@SuppressLint("ResourceType")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
PreferenceManager preferenceManager = getPreferenceManager();
preferenceManager.setSharedPreferencesName(Setting.preferences.name);
// Must initialize before adding change listener,
// otherwise the syncing of Setting -> UI
// causes a callback to the listener even though nothing changed.
initialize();
updateUIToSettingValues();
preferenceManager.getSharedPreferences().registerOnSharedPreferenceChangeListener(listener);
} catch (Exception ex) {
Logger.printException(() -> "onCreate() failure", ex);
}
}
@Override
public void onDestroy() {
getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(listener);
super.onDestroy();
}
}

View File

@@ -0,0 +1,100 @@
package app.revanced.extension.shared.settings.preference;
import android.app.AlertDialog;
import android.content.Context;
import android.os.Build;
import android.preference.EditTextPreference;
import android.preference.Preference;
import android.text.InputType;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.widget.EditText;
import app.revanced.extension.shared.settings.Setting;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import static app.revanced.extension.shared.StringRef.str;
@SuppressWarnings({"unused", "deprecation"})
public class ImportExportPreference extends EditTextPreference implements Preference.OnPreferenceClickListener {
private String existingSettings;
private void init() {
setSelectable(true);
EditText editText = getEditText();
editText.setTextIsSelectable(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
editText.setAutofillHints((String) null);
}
editText.setInputType(editText.getInputType() | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
editText.setTextSize(TypedValue.COMPLEX_UNIT_PT, 7); // Use a smaller font to reduce text wrap.
setOnPreferenceClickListener(this);
}
public ImportExportPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init();
}
public ImportExportPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
public ImportExportPreference(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public ImportExportPreference(Context context) {
super(context);
init();
}
@Override
public boolean onPreferenceClick(Preference preference) {
try {
// Must set text before preparing dialog, otherwise text is non selectable if this preference is later reopened.
existingSettings = Setting.exportToJson(getContext());
getEditText().setText(existingSettings);
} catch (Exception ex) {
Logger.printException(() -> "showDialog failure", ex);
}
return true;
}
@Override
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
try {
Utils.setEditTextDialogTheme(builder);
// Show the user the settings in JSON format.
builder.setNeutralButton(str("revanced_settings_import_copy"), (dialog, which) -> {
Utils.setClipboard(getEditText().getText().toString());
}).setPositiveButton(str("revanced_settings_import"), (dialog, which) -> {
importSettings(builder.getContext(), getEditText().getText().toString());
});
} catch (Exception ex) {
Logger.printException(() -> "onPrepareDialogBuilder failure", ex);
}
}
private void importSettings(Context context, String replacementSettings) {
try {
if (replacementSettings.equals(existingSettings)) {
return;
}
AbstractPreferenceFragment.settingImportInProgress = true;
final boolean rebootNeeded = Setting.importFromJSON(context, replacementSettings);
if (rebootNeeded) {
AbstractPreferenceFragment.showRestartDialog(getContext());
}
} catch (Exception ex) {
Logger.printException(() -> "importSettings failure", ex);
} finally {
AbstractPreferenceFragment.settingImportInProgress = false;
}
}
}

View File

@@ -0,0 +1,361 @@
package app.revanced.extension.shared.settings.preference;
import static app.revanced.extension.shared.StringRef.str;
import static app.revanced.extension.shared.requests.Route.Method.GET;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.preference.Preference;
import android.util.AttributeSet;
import android.view.Window;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.net.HttpURLConnection;
import java.net.SocketTimeoutException;
import java.util.ArrayList;
import java.util.List;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.requests.Requester;
import app.revanced.extension.shared.requests.Route;
/**
* Opens a dialog showing official links.
*/
@SuppressWarnings({"unused", "deprecation"})
public class ReVancedAboutPreference extends Preference {
private static String useNonBreakingHyphens(String text) {
// Replace any dashes with non breaking dashes, so the English text 'pre-release'
// and the dev release number does not break and cover two lines.
return text.replace("-", "&#8209;"); // #8209 = non breaking hyphen.
}
private static String getColorHexString(int color) {
return String.format("#%06X", (0x00FFFFFF & color));
}
protected boolean isDarkModeEnabled() {
Configuration config = getContext().getResources().getConfiguration();
final int currentNightMode = config.uiMode & Configuration.UI_MODE_NIGHT_MASK;
return currentNightMode == Configuration.UI_MODE_NIGHT_YES;
}
/**
* Subclasses can override this and provide a themed color.
*/
protected int getLightColor() {
return Color.WHITE;
}
/**
* Subclasses can override this and provide a themed color.
*/
protected int getDarkColor() {
return Color.BLACK;
}
/**
* Apps that do not support bundling resources must override this.
*
* @return A localized string to display for the key.
*/
protected String getString(String key, Object ... args) {
return str(key, args);
}
private String createDialogHtml(WebLink[] aboutLinks) {
final boolean isNetworkConnected = Utils.isNetworkConnected();
StringBuilder builder = new StringBuilder();
builder.append("<html>");
builder.append("<body style=\"text-align: center; padding: 10px;\">");
final boolean isDarkMode = isDarkModeEnabled();
String backgroundColorHex = getColorHexString(isDarkMode ? getDarkColor() : getLightColor());
String foregroundColorHex = getColorHexString(isDarkMode ? getLightColor() : getDarkColor());
// Apply light/dark mode colors.
builder.append(String.format(
"<style> body { background-color: %s; color: %s; } a { color: %s; } </style>",
backgroundColorHex, foregroundColorHex, foregroundColorHex));
if (isNetworkConnected) {
builder.append("<img style=\"width: 100px; height: 100px;\" "
// Hide the image if it does not load.
+ "onerror=\"this.style.display='none';\" "
+ "src=\"").append(AboutLinksRoutes.aboutLogoUrl).append("\" />");
}
String patchesVersion = Utils.getPatchesReleaseVersion();
// Add the title.
builder.append("<h1>")
.append("ReVanced")
.append("</h1>");
builder.append("<p>")
// Replace hyphens with non breaking dashes so the version number does not break lines.
.append(useNonBreakingHyphens(getString("revanced_settings_about_links_body", patchesVersion)))
.append("</p>");
// Add a disclaimer if using a dev release.
if (patchesVersion.contains("dev")) {
builder.append("<h3>")
// English text 'Pre-release' can break lines.
.append(useNonBreakingHyphens(getString("revanced_settings_about_links_dev_header")))
.append("</h3>");
builder.append("<p>")
.append(getString("revanced_settings_about_links_dev_body"))
.append("</p>");
}
builder.append("<h2 style=\"margin-top: 30px;\">")
.append(getString("revanced_settings_about_links_header"))
.append("</h2>");
builder.append("<div>");
for (WebLink link : aboutLinks) {
builder.append("<div style=\"margin-bottom: 20px;\">");
builder.append(String.format("<a href=\"%s\">%s</a>", link.url, link.name));
builder.append("</div>");
}
builder.append("</div>");
builder.append("</body></html>");
return builder.toString();
}
{
setOnPreferenceClickListener(pref -> {
// Show a progress spinner if the social links are not fetched yet.
if (!AboutLinksRoutes.hasFetchedLinks() && Utils.isNetworkConnected()) {
// Show a progress spinner, but only if the api fetch takes more than a half a second.
final long delayToShowProgressSpinner = 500;
ProgressDialog progress = new ProgressDialog(getContext());
progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
Handler handler = new Handler(Looper.getMainLooper());
Runnable showDialogRunnable = progress::show;
handler.postDelayed(showDialogRunnable, delayToShowProgressSpinner);
Utils.runOnBackgroundThread(() ->
fetchLinksAndShowDialog(handler, showDialogRunnable, progress));
} else {
// No network call required and can run now.
fetchLinksAndShowDialog(null, null, null);
}
return false;
});
}
private void fetchLinksAndShowDialog(@Nullable Handler handler,
Runnable showDialogRunnable,
@Nullable ProgressDialog progress) {
WebLink[] links = AboutLinksRoutes.fetchAboutLinks();
String htmlDialog = createDialogHtml(links);
// Enable to randomly force a delay to debug the spinner logic.
final boolean debugSpinnerDelayLogic = false;
//noinspection ConstantConditions
if (debugSpinnerDelayLogic && handler != null && Math.random() < 0.5f) {
Utils.doNothingForDuration((long) (Math.random() * 4000));
}
Utils.runOnMainThreadNowOrLater(() -> {
if (handler != null) {
handler.removeCallbacks(showDialogRunnable);
}
if (progress != null) {
progress.dismiss();
}
new WebViewDialog(getContext(), htmlDialog).show();
});
}
public ReVancedAboutPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public ReVancedAboutPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public ReVancedAboutPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ReVancedAboutPreference(Context context) {
super(context);
}
}
/**
* Displays html content as a dialog. Any links a user taps on are opened in an external browser.
*/
class WebViewDialog extends Dialog {
private final String htmlContent;
public WebViewDialog(@NonNull Context context, @NonNull String htmlContent) {
super(context);
this.htmlContent = htmlContent;
}
// JS required to hide any broken images. No remote javascript is ever loaded.
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
WebView webView = new WebView(getContext());
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new OpenLinksExternallyWebClient());
webView.loadDataWithBaseURL(null, htmlContent, "text/html", "utf-8", null);
setContentView(webView);
}
private class OpenLinksExternallyWebClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
try {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
getContext().startActivity(intent);
} catch (Exception ex) {
Logger.printException(() -> "Open link failure", ex);
}
// Dismiss the about dialog using a delay,
// otherwise without a delay the UI looks hectic with the dialog dismissing
// to show the settings while simultaneously a web browser is opening.
Utils.runOnMainThreadDelayed(WebViewDialog.this::dismiss, 500);
return true;
}
}
}
class WebLink {
final boolean preferred;
String name;
final String url;
WebLink(JSONObject json) throws JSONException {
this(json.getBoolean("preferred"),
json.getString("name"),
json.getString("url")
);
}
WebLink(boolean preferred, String name, String url) {
this.preferred = preferred;
this.name = name;
this.url = url;
}
@NonNull
@Override
public String toString() {
return "WebLink{" +
"preferred=" + preferred +
", name='" + name + '\'' +
", url='" + url + '\'' +
'}';
}
}
class AboutLinksRoutes {
/**
* Backup icon url if the API call fails.
*/
public static volatile String aboutLogoUrl = "https://revanced.app/favicon.ico";
/**
* Links to use if fetch links api call fails.
*/
private static final WebLink[] NO_CONNECTION_STATIC_LINKS = {
new WebLink(true, "ReVanced.app", "https://revanced.app")
};
private static final String SOCIAL_LINKS_PROVIDER = "https://api.revanced.app/v4";
private static final Route.CompiledRoute GET_SOCIAL = new Route(GET, "/about").compile();
@Nullable
private static volatile WebLink[] fetchedLinks;
static boolean hasFetchedLinks() {
return fetchedLinks != null;
}
static WebLink[] fetchAboutLinks() {
try {
if (hasFetchedLinks()) return fetchedLinks;
// Check if there is no internet connection.
if (!Utils.isNetworkConnected()) return NO_CONNECTION_STATIC_LINKS;
HttpURLConnection connection = Requester.getConnectionFromCompiledRoute(SOCIAL_LINKS_PROVIDER, GET_SOCIAL);
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
Logger.printDebug(() -> "Fetching social links from: " + connection.getURL());
// Do not show an exception toast if the server is down
final int responseCode = connection.getResponseCode();
if (responseCode != 200) {
Logger.printDebug(() -> "Failed to get social links. Response code: " + responseCode);
return NO_CONNECTION_STATIC_LINKS;
}
JSONObject json = Requester.parseJSONObjectAndDisconnect(connection);
aboutLogoUrl = json.getJSONObject("branding").getString("logo");
List<WebLink> links = new ArrayList<>();
JSONArray donations = json.getJSONObject("donations").getJSONArray("links");
for (int i = 0, length = donations.length(); i < length; i++) {
WebLink link = new WebLink(donations.getJSONObject(i));
if (link.preferred) {
// This could be localized, but TikTok does not support localized resources.
// All link names returned by the api are also non localized.
link.name = "Donate";
links.add(link);
}
}
JSONArray socials = json.getJSONArray("socials");
for (int i = 0, length = socials.length(); i < length; i++) {
WebLink link = new WebLink(socials.getJSONObject(i));
links.add(link);
}
Logger.printDebug(() -> "links: " + links);
return fetchedLinks = links.toArray(new WebLink[0]);
} catch (SocketTimeoutException ex) {
Logger.printInfo(() -> "Could not fetch social links", ex); // No toast.
} catch (JSONException ex) {
Logger.printException(() -> "Could not parse about information", ex);
} catch (Exception ex) {
Logger.printException(() -> "Failed to get about information", ex);
}
return NO_CONNECTION_STATIC_LINKS;
}
}

View File

@@ -0,0 +1,67 @@
package app.revanced.extension.shared.settings.preference;
import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.util.AttributeSet;
import android.widget.Button;
import android.widget.EditText;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.Setting;
import app.revanced.extension.shared.Logger;
import java.util.Objects;
import static app.revanced.extension.shared.StringRef.str;
@SuppressWarnings({"unused", "deprecation"})
public class ResettableEditTextPreference extends EditTextPreference {
public ResettableEditTextPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public ResettableEditTextPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public ResettableEditTextPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ResettableEditTextPreference(Context context) {
super(context);
}
@Override
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
super.onPrepareDialogBuilder(builder);
Utils.setEditTextDialogTheme(builder);
Setting<?> setting = Setting.getSettingFromPath(getKey());
if (setting != null) {
builder.setNeutralButton(str("revanced_settings_reset"), null);
}
}
@Override
protected void showDialog(Bundle state) {
super.showDialog(state);
// Override the button click listener to prevent dismissing the dialog.
Button button = ((AlertDialog) getDialog()).getButton(AlertDialog.BUTTON_NEUTRAL);
if (button == null) {
return;
}
button.setOnClickListener(v -> {
try {
Setting<?> setting = Objects.requireNonNull(Setting.getSettingFromPath(getKey()));
String defaultStringValue = setting.defaultValue.toString();
EditText editText = getEditText();
editText.setText(defaultStringValue);
editText.setSelection(defaultStringValue.length()); // move cursor to end of text
} catch (Exception ex) {
Logger.printException(() -> "reset failure", ex);
}
});
}
}

View File

@@ -0,0 +1,190 @@
package app.revanced.extension.shared.settings.preference;
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceFragment;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import java.util.Objects;
/**
* Shared categories, and helper methods.
*
* The various save methods store numbers as Strings,
* which is required if using {@link PreferenceFragment}.
*
* If saved numbers will not be used with a preference fragment,
* then store the primitive numbers using the {@link #preferences} itself.
*/
public class SharedPrefCategory {
@NonNull
public final String name;
@NonNull
public final SharedPreferences preferences;
public SharedPrefCategory(@NonNull String name) {
this.name = Objects.requireNonNull(name);
preferences = Objects.requireNonNull(Utils.getContext()).getSharedPreferences(name, Context.MODE_PRIVATE);
}
private void removeConflictingPreferenceKeyValue(@NonNull String key) {
Logger.printException(() -> "Found conflicting preference: " + key);
removeKey(key);
}
private void saveObjectAsString(@NonNull String key, @Nullable Object value) {
preferences.edit().putString(key, (value == null ? null : value.toString())).apply();
}
/**
* Removes any preference data type that has the specified key.
*/
public void removeKey(@NonNull String key) {
preferences.edit().remove(Objects.requireNonNull(key)).apply();
}
public void saveBoolean(@NonNull String key, boolean value) {
preferences.edit().putBoolean(key, value).apply();
}
/**
* @param value a NULL parameter removes the value from the preferences
*/
public void saveEnumAsString(@NonNull String key, @Nullable Enum<?> value) {
saveObjectAsString(key, value);
}
/**
* @param value a NULL parameter removes the value from the preferences
*/
public void saveIntegerString(@NonNull String key, @Nullable Integer value) {
saveObjectAsString(key, value);
}
/**
* @param value a NULL parameter removes the value from the preferences
*/
public void saveLongString(@NonNull String key, @Nullable Long value) {
saveObjectAsString(key, value);
}
/**
* @param value a NULL parameter removes the value from the preferences
*/
public void saveFloatString(@NonNull String key, @Nullable Float value) {
saveObjectAsString(key, value);
}
/**
* @param value a NULL parameter removes the value from the preferences
*/
public void saveString(@NonNull String key, @Nullable String value) {
saveObjectAsString(key, value);
}
@NonNull
public String getString(@NonNull String key, @NonNull String _default) {
Objects.requireNonNull(_default);
try {
return preferences.getString(key, _default);
} catch (ClassCastException ex) {
// Value stored is a completely different type (should never happen).
removeConflictingPreferenceKeyValue(key);
return _default;
}
}
@NonNull
public <T extends Enum<?>> T getEnum(@NonNull String key, @NonNull T _default) {
Objects.requireNonNull(_default);
try {
String enumName = preferences.getString(key, null);
if (enumName != null) {
try {
// noinspection unchecked
return (T) Enum.valueOf(_default.getClass(), enumName);
} catch (IllegalArgumentException ex) {
// Info level to allow removing enum values in the future without showing any user errors.
Logger.printInfo(() -> "Using default, and ignoring unknown enum value: " + enumName);
removeKey(key);
}
}
} catch (ClassCastException ex) {
// Value stored is a completely different type (should never happen).
removeConflictingPreferenceKeyValue(key);
}
return _default;
}
public boolean getBoolean(@NonNull String key, boolean _default) {
try {
return preferences.getBoolean(key, _default);
} catch (ClassCastException ex) {
// Value stored is a completely different type (should never happen).
removeConflictingPreferenceKeyValue(key);
return _default;
}
}
@NonNull
public Integer getIntegerString(@NonNull String key, @NonNull Integer _default) {
try {
String value = preferences.getString(key, null);
if (value != null) {
return Integer.valueOf(value);
}
} catch (ClassCastException | NumberFormatException ex) {
try {
// Old data previously stored as primitive.
return preferences.getInt(key, _default);
} catch (ClassCastException ex2) {
// Value stored is a completely different type (should never happen).
removeConflictingPreferenceKeyValue(key);
}
}
return _default;
}
@NonNull
public Long getLongString(@NonNull String key, @NonNull Long _default) {
try {
String value = preferences.getString(key, null);
if (value != null) {
return Long.valueOf(value);
}
} catch (ClassCastException | NumberFormatException ex) {
try {
return preferences.getLong(key, _default);
} catch (ClassCastException ex2) {
removeConflictingPreferenceKeyValue(key);
}
}
return _default;
}
@NonNull
public Float getFloatString(@NonNull String key, @NonNull Float _default) {
try {
String value = preferences.getString(key, null);
if (value != null) {
return Float.valueOf(value);
}
} catch (ClassCastException | NumberFormatException ex) {
try {
return preferences.getFloat(key, _default);
} catch (ClassCastException ex2) {
removeConflictingPreferenceKeyValue(key);
}
}
return _default;
}
@NonNull
@Override
public String toString() {
return name;
}
}

View File

@@ -0,0 +1,101 @@
package app.revanced.extension.shared.spoof;
import android.os.Build;
import androidx.annotation.Nullable;
import app.revanced.extension.shared.settings.BaseSettings;
public enum ClientType {
// Specific purpose for age restricted, or private videos, because the iOS client is not logged in.
// https://dumps.tadiphone.dev/dumps/oculus/eureka
ANDROID_VR(28,
"Quest 3",
"12",
"com.google.android.apps.youtube.vr.oculus/1.56.21 (Linux; U; Android 12; GB) gzip",
"32", // Android 12.1
"1.56.21",
true
),
// Specific for kids videos.
IOS(5,
forceAVC()
? "iPhone12,5" // 11 Pro Max (last device with iOS 13)
: "iPhone16,2", // 15 Pro Max
// iOS 13 and earlier uses only AVC. 14+ adds VP9 and AV1.
forceAVC()
? "13.7.17H35" // Last release of iOS 13.
: "17.5.1.21F90",
forceAVC()
? "com.google.ios.youtube/17.40.5 (iPhone; U; CPU iOS 13_7 like Mac OS X)"
: "com.google.ios.youtube/19.47.7 (iPhone; U; CPU iOS 17_5_1 like Mac OS X)",
null,
// Version number should be a valid iOS release.
// https://www.ipa4fun.com/history/185230
forceAVC()
// Some newer versions can also force AVC,
// but 17.40 is the last version that supports iOS 13.
? "17.40.5"
: "19.47.7",
false
);
private static boolean forceAVC() {
return BaseSettings.SPOOF_VIDEO_STREAMS_IOS_FORCE_AVC.get();
}
/**
* YouTube
* <a href="https://github.com/zerodytrash/YouTube-Internal-Clients?tab=readme-ov-file#clients">client type</a>
*/
public final int id;
/**
* Device model, equivalent to {@link Build#MODEL} (System property: ro.product.model)
*/
public final String deviceModel;
/**
* Device OS version.
*/
public final String osVersion;
/**
* Player user-agent.
*/
public final String userAgent;
/**
* Android SDK version, equivalent to {@link Build.VERSION#SDK} (System property: ro.build.version.sdk)
* Field is null if not applicable.
*/
@Nullable
public final String androidSdkVersion;
/**
* App version.
*/
public final String clientVersion;
/**
* If the client can access the API logged in.
*/
public final boolean canLogin;
ClientType(int id,
String deviceModel,
String osVersion,
String userAgent,
@Nullable String androidSdkVersion,
String clientVersion,
boolean canLogin
) {
this.id = id;
this.deviceModel = deviceModel;
this.osVersion = osVersion;
this.userAgent = userAgent;
this.androidSdkVersion = androidSdkVersion;
this.clientVersion = clientVersion;
this.canLogin = canLogin;
}
}

View File

@@ -0,0 +1,167 @@
package app.revanced.extension.shared.spoof;
import android.net.Uri;
import androidx.annotation.Nullable;
import java.nio.ByteBuffer;
import java.util.Map;
import java.util.Objects;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.BaseSettings;
import app.revanced.extension.shared.settings.Setting;
import app.revanced.extension.shared.spoof.requests.StreamingDataRequest;
import app.revanced.extension.shared.settings.BaseSettings;
@SuppressWarnings("unused")
public class SpoofVideoStreamsPatch {
private static final boolean SPOOF_STREAMING_DATA = BaseSettings.SPOOF_VIDEO_STREAMS.get();
/**
* Any unreachable ip address. Used to intentionally fail requests.
*/
private static final String UNREACHABLE_HOST_URI_STRING = "https://127.0.0.0";
private static final Uri UNREACHABLE_HOST_URI = Uri.parse(UNREACHABLE_HOST_URI_STRING);
/**
* Injection point.
* Blocks /get_watch requests by returning an unreachable URI.
*
* @param playerRequestUri The URI of the player request.
* @return An unreachable URI if the request is a /get_watch request, otherwise the original URI.
*/
public static Uri blockGetWatchRequest(Uri playerRequestUri) {
if (SPOOF_STREAMING_DATA) {
try {
String path = playerRequestUri.getPath();
if (path != null && path.contains("get_watch")) {
Logger.printDebug(() -> "Blocking 'get_watch' by returning unreachable uri");
return UNREACHABLE_HOST_URI;
}
} catch (Exception ex) {
Logger.printException(() -> "blockGetWatchRequest failure", ex);
}
}
return playerRequestUri;
}
/**
* Injection point.
* <p>
* Blocks /initplayback requests.
*/
public static String blockInitPlaybackRequest(String originalUrlString) {
if (SPOOF_STREAMING_DATA) {
try {
var originalUri = Uri.parse(originalUrlString);
String path = originalUri.getPath();
if (path != null && path.contains("initplayback")) {
Logger.printDebug(() -> "Blocking 'initplayback' by returning unreachable url");
return UNREACHABLE_HOST_URI_STRING;
}
} catch (Exception ex) {
Logger.printException(() -> "blockInitPlaybackRequest failure", ex);
}
}
return originalUrlString;
}
/**
* Injection point.
*/
public static boolean isSpoofingEnabled() {
return SPOOF_STREAMING_DATA;
}
/**
* Injection point.
*/
public static void fetchStreams(String url, Map<String, String> requestHeaders) {
if (SPOOF_STREAMING_DATA) {
try {
Uri uri = Uri.parse(url);
String path = uri.getPath();
// 'heartbeat' has no video id and appears to be only after playback has started.
if (path != null && path.contains("player") && !path.contains("heartbeat")) {
String videoId = Objects.requireNonNull(uri.getQueryParameter("id"));
StreamingDataRequest.fetchRequest(videoId, requestHeaders);
}
} catch (Exception ex) {
Logger.printException(() -> "buildRequest failure", ex);
}
}
}
/**
* Injection point.
* Fix playback by replace the streaming data.
* Called after {@link #fetchStreams(String, Map)}.
*/
@Nullable
public static ByteBuffer getStreamingData(String videoId) {
if (SPOOF_STREAMING_DATA) {
try {
StreamingDataRequest request = StreamingDataRequest.getRequestForVideoId(videoId);
if (request != null) {
// This hook is always called off the main thread,
// but this can later be called for the same video id from the main thread.
// This is not a concern, since the fetch will always be finished
// and never block the main thread.
// But if debugging, then still verify this is the situation.
if (BaseSettings.DEBUG.get() && !request.fetchCompleted() && Utils.isCurrentlyOnMainThread()) {
Logger.printException(() -> "Error: Blocking main thread");
}
var stream = request.getStream();
if (stream != null) {
Logger.printDebug(() -> "Overriding video stream: " + videoId);
return stream;
}
}
Logger.printDebug(() -> "Not overriding streaming data (video stream is null): " + videoId);
} catch (Exception ex) {
Logger.printException(() -> "getStreamingData failure", ex);
}
}
return null;
}
/**
* Injection point.
* Called after {@link #getStreamingData(String)}.
*/
@Nullable
public static byte[] removeVideoPlaybackPostBody(Uri uri, int method, byte[] postData) {
if (SPOOF_STREAMING_DATA) {
try {
final int methodPost = 2;
if (method == methodPost) {
String path = uri.getPath();
if (path != null && path.contains("videoplayback")) {
return null;
}
}
} catch (Exception ex) {
Logger.printException(() -> "removeVideoPlaybackPostBody failure", ex);
}
}
return postData;
}
public static final class ForceiOSAVCAvailability implements Setting.Availability {
@Override
public boolean isAvailable() {
return BaseSettings.SPOOF_VIDEO_STREAMS.get() && BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get() == ClientType.IOS;
}
}
}

View File

@@ -0,0 +1,79 @@
package app.revanced.extension.shared.spoof.requests;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.net.HttpURLConnection;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.requests.Requester;
import app.revanced.extension.shared.requests.Route;
import app.revanced.extension.shared.spoof.ClientType;
final class PlayerRoutes {
static final Route.CompiledRoute GET_STREAMING_DATA = new Route(
Route.Method.POST,
"player" +
"?fields=streamingData" +
"&alt=proto"
).compile();
private static final String YT_API_URL = "https://youtubei.googleapis.com/youtubei/v1/";
/**
* TCP connection and HTTP read timeout
*/
private static final int CONNECTION_TIMEOUT_MILLISECONDS = 10 * 1000; // 10 Seconds.
private static final String LOCALE_LANGUAGE = Utils.getContext().getResources()
.getConfiguration().locale.getLanguage();
private PlayerRoutes() {
}
static String createInnertubeBody(ClientType clientType) {
JSONObject innerTubeBody = new JSONObject();
try {
JSONObject context = new JSONObject();
JSONObject client = new JSONObject();
// Required to use correct default audio channel with iOS.
client.put("hl", LOCALE_LANGUAGE);
client.put("clientName", clientType.name());
client.put("clientVersion", clientType.clientVersion);
client.put("deviceModel", clientType.deviceModel);
client.put("osVersion", clientType.osVersion);
if (clientType.androidSdkVersion != null) {
client.put("androidSdkVersion", clientType.androidSdkVersion);
}
context.put("client", client);
innerTubeBody.put("context", context);
innerTubeBody.put("contentCheckOk", true);
innerTubeBody.put("racyCheckOk", true);
innerTubeBody.put("videoId", "%s");
} catch (JSONException e) {
Logger.printException(() -> "Failed to create innerTubeBody", e);
}
return innerTubeBody.toString();
}
/**
* @noinspection SameParameterValue
*/
static HttpURLConnection getPlayerResponseConnectionFromRoute(Route.CompiledRoute route, ClientType clientType) throws IOException {
var connection = Requester.getConnectionFromCompiledRoute(YT_API_URL, route);
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("User-Agent", clientType.userAgent);
connection.setUseCaches(false);
connection.setDoOutput(true);
connection.setConnectTimeout(CONNECTION_TIMEOUT_MILLISECONDS);
connection.setReadTimeout(CONNECTION_TIMEOUT_MILLISECONDS);
return connection;
}
}

View File

@@ -0,0 +1,223 @@
package app.revanced.extension.shared.spoof.requests;
import static app.revanced.extension.shared.spoof.requests.PlayerRoutes.GET_STREAMING_DATA;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.SocketTimeoutException;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.shared.settings.BaseSettings;
import app.revanced.extension.shared.spoof.ClientType;
/**
* Video streaming data. Fetching is tied to the behavior YT uses,
* where this class fetches the streams only when YT fetches.
* <p>
* Effectively the cache expiration of these fetches is the same as the stock app,
* since the stock app would not use expired streams and therefor
* the extension replace stream hook is called only if YT
* did use its own client streams.
*/
public class StreamingDataRequest {
private static final ClientType[] CLIENT_ORDER_TO_USE;
private static final String AUTHORIZATION_HEADER = "Authorization";
private static final String[] REQUEST_HEADER_KEYS = {
AUTHORIZATION_HEADER, // Available only to logged-in users.
"X-GOOG-API-FORMAT-VERSION",
"X-Goog-Visitor-Id"
};
/**
* TCP connection and HTTP read timeout.
*/
private static final int HTTP_TIMEOUT_MILLISECONDS = 10 * 1000;
/**
* Any arbitrarily large value, but must be at least twice {@link #HTTP_TIMEOUT_MILLISECONDS}
*/
private static final int MAX_MILLISECONDS_TO_WAIT_FOR_FETCH = 20 * 1000;
private static final Map<String, StreamingDataRequest> cache = Collections.synchronizedMap(
new LinkedHashMap<>(100) {
/**
* Cache limit must be greater than the maximum number of videos open at once,
* which theoretically is more than 4 (3 Shorts + one regular minimized video).
* But instead use a much larger value, to handle if a video viewed a while ago
* is somehow still referenced. Each stream is a small array of Strings
* so memory usage is not a concern.
*/
private static final int CACHE_LIMIT = 50;
@Override
protected boolean removeEldestEntry(Entry eldest) {
return size() > CACHE_LIMIT; // Evict the oldest entry if over the cache limit.
}
});
static {
ClientType[] allClientTypes = ClientType.values();
ClientType preferredClient = BaseSettings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get();
CLIENT_ORDER_TO_USE = new ClientType[allClientTypes.length];
CLIENT_ORDER_TO_USE[0] = preferredClient;
int i = 1;
for (ClientType c : allClientTypes) {
if (c != preferredClient) {
CLIENT_ORDER_TO_USE[i++] = c;
}
}
}
private final String videoId;
private final Future<ByteBuffer> future;
private StreamingDataRequest(String videoId, Map<String, String> playerHeaders) {
Objects.requireNonNull(playerHeaders);
this.videoId = videoId;
this.future = Utils.submitOnBackgroundThread(() -> fetch(videoId, playerHeaders));
}
public static void fetchRequest(String videoId, Map<String, String> fetchHeaders) {
// Always fetch, even if there is an existing request for the same video.
cache.put(videoId, new StreamingDataRequest(videoId, fetchHeaders));
}
@Nullable
public static StreamingDataRequest getRequestForVideoId(String videoId) {
return cache.get(videoId);
}
private static void handleConnectionError(String toastMessage, @Nullable Exception ex, boolean showToast) {
if (showToast) Utils.showToastShort(toastMessage);
Logger.printInfo(() -> toastMessage, ex);
}
@Nullable
private static HttpURLConnection send(ClientType clientType, String videoId,
Map<String, String> playerHeaders,
boolean showErrorToasts) {
Objects.requireNonNull(clientType);
Objects.requireNonNull(videoId);
Objects.requireNonNull(playerHeaders);
final long startTime = System.currentTimeMillis();
String clientTypeName = clientType.name();
Logger.printDebug(() -> "Fetching video streams for: " + videoId + " using client: " + clientType.name());
try {
HttpURLConnection connection = PlayerRoutes.getPlayerResponseConnectionFromRoute(GET_STREAMING_DATA, clientType);
connection.setConnectTimeout(HTTP_TIMEOUT_MILLISECONDS);
connection.setReadTimeout(HTTP_TIMEOUT_MILLISECONDS);
for (String key : REQUEST_HEADER_KEYS) {
if (!clientType.canLogin && key.equals(AUTHORIZATION_HEADER)) {
continue;
}
String value = playerHeaders.get(key);
if (value != null) {
connection.setRequestProperty(key, value);
}
}
String innerTubeBody = String.format(PlayerRoutes.createInnertubeBody(clientType), videoId);
byte[] requestBody = innerTubeBody.getBytes(StandardCharsets.UTF_8);
connection.setFixedLengthStreamingMode(requestBody.length);
connection.getOutputStream().write(requestBody);
final int responseCode = connection.getResponseCode();
if (responseCode == 200) return connection;
handleConnectionError(clientTypeName + " not available with response code: "
+ responseCode + " message: " + connection.getResponseMessage(),
null, showErrorToasts);
} catch (SocketTimeoutException ex) {
handleConnectionError("Connection timeout", ex, showErrorToasts);
} catch (IOException ex) {
handleConnectionError("Network error", ex, showErrorToasts);
} catch (Exception ex) {
Logger.printException(() -> "send failed", ex);
} finally {
Logger.printDebug(() -> "video: " + videoId + " took: " + (System.currentTimeMillis() - startTime) + "ms");
}
return null;
}
private static ByteBuffer fetch(String videoId, Map<String, String> playerHeaders) {
final boolean debugEnabled = BaseSettings.DEBUG.get();
// Retry with different client if empty response body is received.
int i = 0;
for (ClientType clientType : CLIENT_ORDER_TO_USE) {
// Show an error if the last client type fails, or if the debug is enabled then show for all attempts.
final boolean showErrorToast = (++i == CLIENT_ORDER_TO_USE.length) || debugEnabled;
HttpURLConnection connection = send(clientType, videoId, playerHeaders, showErrorToast);
if (connection != null) {
try {
// gzip encoding doesn't response with content length (-1),
// but empty response body does.
if (connection.getContentLength() != 0) {
try (InputStream inputStream = new BufferedInputStream(connection.getInputStream())) {
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
byte[] buffer = new byte[2048];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) >= 0) {
baos.write(buffer, 0, bytesRead);
}
return ByteBuffer.wrap(baos.toByteArray());
}
}
}
} catch (IOException ex) {
Logger.printException(() -> "Fetch failed while processing response data", ex);
}
}
}
handleConnectionError("Could not fetch any client streams", null, debugEnabled);
return null;
}
public boolean fetchCompleted() {
return future.isDone();
}
@Nullable
public ByteBuffer getStream() {
try {
return future.get(MAX_MILLISECONDS_TO_WAIT_FOR_FETCH, TimeUnit.MILLISECONDS);
} catch (TimeoutException ex) {
Logger.printInfo(() -> "getStream timed out", ex);
} catch (InterruptedException ex) {
Logger.printException(() -> "getStream interrupted", ex);
Thread.currentThread().interrupt(); // Restore interrupt status flag.
} catch (ExecutionException ex) {
Logger.printException(() -> "getStream failure", ex);
}
return null;
}
@NonNull
@Override
public String toString() {
return "StreamingDataRequest{" + "videoId='" + videoId + '\'' + '}';
}
}

View File

@@ -0,0 +1 @@
<manifest/>

View File

@@ -0,0 +1,5 @@
dependencies {
compileOnly(project(":extensions:shared:library"))
compileOnly(project(":extensions:syncforreddit:stub"))
compileOnly(libs.annotation)
}

View File

@@ -0,0 +1 @@
<manifest/>

View File

@@ -0,0 +1,77 @@
package app.revanced.extension.syncforreddit;
import android.util.Pair;
import androidx.annotation.Nullable;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
/**
* @noinspection unused
*/
public class FixRedditVideoDownloadPatch {
private static @Nullable Pair<Integer, String> getBestMpEntry(Element element) {
var representations = element.getElementsByTagName("Representation");
var entries = new ArrayList<Pair<Integer, String>>();
for (int i = 0; i < representations.getLength(); i++) {
Element representation = (Element) representations.item(i);
var bandwidthStr = representation.getAttribute("bandwidth");
try {
var bandwidth = Integer.parseInt(bandwidthStr);
var baseUrl = representation.getElementsByTagName("BaseURL").item(0);
if (baseUrl != null) {
entries.add(new Pair<>(bandwidth, baseUrl.getTextContent()));
}
} catch (NumberFormatException ignored) {
}
}
if (entries.isEmpty()) {
return null;
}
Collections.sort(entries, (e1, e2) -> e2.first - e1.first);
return entries.get(0);
}
private static String[] parse(byte[] data) throws ParserConfigurationException, IOException, SAXException {
var adaptionSets = DocumentBuilderFactory
.newInstance()
.newDocumentBuilder()
.parse(new ByteArrayInputStream(data))
.getElementsByTagName("AdaptationSet");
String videoUrl = null;
String audioUrl = null;
for (int i = 0; i < adaptionSets.getLength(); i++) {
Element element = (Element) adaptionSets.item(i);
var contentType = element.getAttribute("contentType");
var bestEntry = getBestMpEntry(element);
if (bestEntry == null) continue;
if (contentType.equalsIgnoreCase("video")) {
videoUrl = bestEntry.second;
} else if (contentType.equalsIgnoreCase("audio")) {
audioUrl = bestEntry.second;
}
}
return new String[]{videoUrl, audioUrl};
}
public static String[] getLinks(byte[] data) {
try {
return parse(data);
} catch (ParserConfigurationException | IOException | SAXException e) {
return new String[]{null, null};
}
}
}

View File

@@ -0,0 +1,24 @@
package app.revanced.extension.syncforreddit;
import com.laurencedawson.reddit_sync.ui.activities.WebViewActivity;
import app.revanced.extension.shared.fixes.slink.BaseFixSLinksPatch;
/** @noinspection unused*/
public class FixSLinksPatch extends BaseFixSLinksPatch {
static {
INSTANCE = new FixSLinksPatch();
}
private FixSLinksPatch() {
webViewActivityClass = WebViewActivity.class;
}
public static boolean patchResolveSLink(String link) {
return INSTANCE.resolveSLink(link);
}
public static void patchSetAccessToken(String accessToken) {
INSTANCE.setAccessToken(accessToken);
}
}

View File

@@ -0,0 +1,17 @@
plugins {
id(libs.plugins.android.library.get().pluginId)
}
android {
namespace = "app.revanced.extension"
compileSdk = 33
defaultConfig {
minSdk = 24
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
}

View File

@@ -0,0 +1 @@
<manifest/>

View File

@@ -0,0 +1,6 @@
package com.laurencedawson.reddit_sync.ui.activities;
import android.app.Activity;
public class WebViewActivity extends Activity {
}

View File

@@ -0,0 +1,5 @@
dependencies {
compileOnly(project(":extensions:shared:library"))
compileOnly(project(":extensions:tiktok:stub"))
compileOnly(libs.annotation)
}

View File

@@ -0,0 +1 @@
<manifest/>

View File

@@ -0,0 +1,25 @@
package app.revanced.extension.tiktok;
import app.revanced.extension.shared.settings.StringSetting;
public class Utils {
// Edit: This could be handled using a custom Setting<Long[]> class
// that saves its value to preferences and JSON using the formatted String created here.
public static long[] parseMinMax(StringSetting setting) {
final String[] minMax = setting.get().split("-");
if (minMax.length == 2) {
try {
final long min = Long.parseLong(minMax[0]);
final long max = Long.parseLong(minMax[1]);
if (min <= max && min >= 0) return new long[]{min, max};
} catch (NumberFormatException ignored) {
}
}
setting.save("0-" + Long.MAX_VALUE);
return new long[]{0L, Long.MAX_VALUE};
}
}

View File

@@ -0,0 +1,13 @@
package app.revanced.extension.tiktok.cleardisplay;
import app.revanced.extension.tiktok.settings.Settings;
@SuppressWarnings("unused")
public class RememberClearDisplayPatch {
public static boolean getClearDisplayState() {
return Settings.CLEAR_DISPLAY.get();
}
public static void rememberClearDisplayState(boolean newState) {
Settings.CLEAR_DISPLAY.save(newState);
}
}

View File

@@ -0,0 +1,14 @@
package app.revanced.extension.tiktok.download;
import app.revanced.extension.tiktok.settings.Settings;
@SuppressWarnings("unused")
public class DownloadsPatch {
public static String getDownloadPath() {
return Settings.DOWNLOAD_PATH.get();
}
public static boolean shouldRemoveWatermark() {
return Settings.DOWNLOAD_WATERMARK.get();
}
}

View File

@@ -0,0 +1,16 @@
package app.revanced.extension.tiktok.feedfilter;
import app.revanced.extension.tiktok.settings.Settings;
import com.ss.android.ugc.aweme.feed.model.Aweme;
public class AdsFilter implements IFilter {
@Override
public boolean getEnabled() {
return Settings.REMOVE_ADS.get();
}
@Override
public boolean getFiltered(Aweme item) {
return item.isAd() || item.isWithPromotionalMusic();
}
}

View File

@@ -0,0 +1,34 @@
package app.revanced.extension.tiktok.feedfilter;
import com.ss.android.ugc.aweme.feed.model.Aweme;
import com.ss.android.ugc.aweme.feed.model.FeedItemList;
import java.util.Iterator;
import java.util.List;
public final class FeedItemsFilter {
private static final List<IFilter> FILTERS = List.of(
new AdsFilter(),
new LiveFilter(),
new StoryFilter(),
new ImageVideoFilter(),
new ViewCountFilter(),
new LikeCountFilter()
);
public static void filter(FeedItemList feedItemList) {
Iterator<Aweme> feedItemListIterator = feedItemList.items.iterator();
while (feedItemListIterator.hasNext()) {
Aweme item = feedItemListIterator.next();
if (item == null) continue;
for (IFilter filter : FILTERS) {
boolean enabled = filter.getEnabled();
if (enabled && filter.getFiltered(item)) {
feedItemListIterator.remove();
break;
}
}
}
}
}

View File

@@ -0,0 +1,9 @@
package app.revanced.extension.tiktok.feedfilter;
import com.ss.android.ugc.aweme.feed.model.Aweme;
public interface IFilter {
boolean getEnabled();
boolean getFiltered(Aweme item);
}

View File

@@ -0,0 +1,16 @@
package app.revanced.extension.tiktok.feedfilter;
import app.revanced.extension.tiktok.settings.Settings;
import com.ss.android.ugc.aweme.feed.model.Aweme;
public class ImageVideoFilter implements IFilter {
@Override
public boolean getEnabled() {
return Settings.HIDE_IMAGE.get();
}
@Override
public boolean getFiltered(Aweme item) {
return item.isImage() || item.isPhotoMode();
}
}

View File

@@ -0,0 +1,32 @@
package app.revanced.extension.tiktok.feedfilter;
import app.revanced.extension.tiktok.settings.Settings;
import com.ss.android.ugc.aweme.feed.model.Aweme;
import com.ss.android.ugc.aweme.feed.model.AwemeStatistics;
import static app.revanced.extension.tiktok.Utils.parseMinMax;
public final class LikeCountFilter implements IFilter {
final long minLike;
final long maxLike;
LikeCountFilter() {
long[] minMax = parseMinMax(Settings.MIN_MAX_LIKES);
minLike = minMax[0];
maxLike = minMax[1];
}
@Override
public boolean getEnabled() {
return true;
}
@Override
public boolean getFiltered(Aweme item) {
AwemeStatistics statistics = item.getStatistics();
if (statistics == null) return false;
long likeCount = statistics.getDiggCount();
return likeCount < minLike || likeCount > maxLike;
}
}

View File

@@ -0,0 +1,16 @@
package app.revanced.extension.tiktok.feedfilter;
import app.revanced.extension.tiktok.settings.Settings;
import com.ss.android.ugc.aweme.feed.model.Aweme;
public class LiveFilter implements IFilter {
@Override
public boolean getEnabled() {
return Settings.HIDE_LIVE.get();
}
@Override
public boolean getFiltered(Aweme item) {
return item.isLive() || item.isLiveReplay();
}
}

View File

@@ -0,0 +1,16 @@
package app.revanced.extension.tiktok.feedfilter;
import app.revanced.extension.tiktok.settings.Settings;
import com.ss.android.ugc.aweme.feed.model.Aweme;
public class StoryFilter implements IFilter {
@Override
public boolean getEnabled() {
return Settings.HIDE_STORY.get();
}
@Override
public boolean getFiltered(Aweme item) {
return item.getIsTikTokStory();
}
}

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