1
mirror of https://github.com/revanced/revanced-integrations synced 2025-11-19 03:23:27 +01:00

Compare commits

...

198 Commits

Author SHA1 Message Date
semantic-release-bot
f82d29378d chore: Release v1.16.0-dev.1 [skip ci]
# [1.16.0-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.15.1-dev.1...v1.16.0-dev.1) (2024-10-02)

### Features

* **YouTube - Hide Shorts components:** Add option to hide like fountain ([#708](https://github.com/ReVanced/revanced-integrations/issues/708)) ([16c3ef7](16c3ef7ee5))
2024-10-02 00:41:56 +00:00
oSumAtrIX
16c3ef7ee5 feat(YouTube - Hide Shorts components): Add option to hide like fountain (#708) 2024-10-02 02:38:59 +02:00
semantic-release-bot
df2ebfbc71 chore: Release v1.15.1-dev.1 [skip ci]
## [1.15.1-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.15.0...v1.15.1-dev.1) (2024-10-01)
2024-10-01 15:33:14 +00:00
oSumAtrIX
a06b7a359e ci: Use permissions and regular GitHub token instead of PAT 2024-10-01 17:25:47 +02:00
oSumAtrIX
85e0cb99f2 build(Needs bump): Update dependencies 2024-09-30 23:21:42 +02:00
oSumAtrIX
469a1a9815 ci: Adjust release commit message 2024-09-30 22:34:22 +02:00
oSumAtrIX
18dbf8b20e chore: Adjust PR body 2024-09-30 22:08:45 +02:00
semantic-release-bot
795617428a chore(release): 1.15.0 [skip ci]
# [1.15.0](https://github.com/ReVanced/revanced-integrations/compare/v1.14.2...v1.15.0) (2024-09-30)

### Bug Fixes

* **YouTube - Check watch history domain name resolution:** Do not show warning if network connection is flaky ([#702](https://github.com/ReVanced/revanced-integrations/issues/702)) ([80482df](80482df3fa))
* **YouTube:** Show video chapter titles without clipping when overlay buttons are enabled ([#699](https://github.com/ReVanced/revanced-integrations/issues/699)) ([325cc17](325cc17900))

### Features

* **YouTube - Disable precise seeking gesture:** Hide "pull up" label that shows up when swiping ([#696](https://github.com/ReVanced/revanced-integrations/issues/696)) ([0b9afd0](0b9afd022d))
* **YouTube - Hide Shorts components:** Add `Hide save music`, `Hide stickers` ([#703](https://github.com/ReVanced/revanced-integrations/issues/703)) ([a87456e](a87456e499))
2024-09-30 19:37:30 +00:00
oSumAtrIX
9b570824db chore: Merge branch dev to main (#700) 2024-09-30 21:13:19 +02:00
semantic-release-bot
a55269dfc0 chore(release): 1.15.0-dev.2 [skip ci]
# [1.15.0-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.15.0-dev.1...v1.15.0-dev.2) (2024-09-29)

### Features

* **YouTube - Hide Shorts components:** Add `Hide save music`, `Hide stickers` ([#703](https://github.com/ReVanced/revanced-integrations/issues/703)) ([a87456e](a87456e499))
2024-09-29 01:06:26 +00:00
LisoUseInAIKyrios
a87456e499 feat(YouTube - Hide Shorts components): Add Hide save music, Hide stickers (#703) 2024-09-28 21:03:13 -04:00
semantic-release-bot
a85bb5a4bb chore(release): 1.15.0-dev.1 [skip ci]
# [1.15.0-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.14.3-dev.2...v1.15.0-dev.1) (2024-09-29)

### Features

* **YouTube - Disable precise seeking gesture:** Hide "pull up" label that shows up when swiping ([#696](https://github.com/ReVanced/revanced-integrations/issues/696)) ([0b9afd0](0b9afd022d))
2024-09-29 00:35:35 +00:00
Zain
0b9afd022d feat(YouTube - Disable precise seeking gesture): Hide "pull up" label that shows up when swiping (#696) 2024-09-29 02:32:24 +02:00
semantic-release-bot
ce9e986755 chore(release): 1.14.3-dev.2 [skip ci]
## [1.14.3-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.14.3-dev.1...v1.14.3-dev.2) (2024-09-26)

### Bug Fixes

* **YouTube - Check watch history domain name resolution:** Do not show warning if network connection is flaky ([#702](https://github.com/ReVanced/revanced-integrations/issues/702)) ([80482df](80482df3fa))
2024-09-26 11:59:24 +00:00
LisoUseInAIKyrios
80482df3fa fix(YouTube - Check watch history domain name resolution): Do not show warning if network connection is flaky (#702) 2024-09-26 07:51:34 -04:00
semantic-release-bot
87749ee879 chore(release): 1.14.3-dev.1 [skip ci]
## [1.14.3-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.14.2...v1.14.3-dev.1) (2024-09-23)

### Bug Fixes

* **YouTube:** Show video chapter titles without clipping when overlay buttons are enabled ([#699](https://github.com/ReVanced/revanced-integrations/issues/699)) ([325cc17](325cc17900))
2024-09-23 22:53:07 +00:00
LisoUseInAIKyrios
325cc17900 fix(YouTube): Show video chapter titles without clipping when overlay buttons are enabled (#699) 2024-09-23 18:49:55 -04:00
semantic-release-bot
f49d634bc2 chore(release): 1.14.2 [skip ci]
## [1.14.2](https://github.com/ReVanced/revanced-integrations/compare/v1.14.1...v1.14.2) (2024-09-23)

### Bug Fixes

* **YouTube - Hide layout components:** Hide new kind of community posts ([#695](https://github.com/ReVanced/revanced-integrations/issues/695)) ([b384926](b3849267a7))
* **YouTube - Spoof video streams:** Change default client type to Android VR ([a2e8bbb](a2e8bbb422))
* **YouTube - Spoof video streams:** Change default client type to Android VR ([#697](https://github.com/ReVanced/revanced-integrations/issues/697)) ([d06706d](d06706d717))
2024-09-23 14:11:55 +00:00
oSumAtrIX
71eef3c0f5 chore: Merge branch dev to main (#698) 2024-09-23 16:08:59 +02:00
semantic-release-bot
7d831d2693 chore(release): 1.14.2-dev.2 [skip ci]
## [1.14.2-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.14.2-dev.1...v1.14.2-dev.2) (2024-09-22)

### Bug Fixes

* **YouTube - Hide layout components:** Hide new kind of community posts ([#695](https://github.com/ReVanced/revanced-integrations/issues/695)) ([b384926](b3849267a7))
2024-09-22 04:49:45 +00:00
Bceez
b3849267a7 fix(YouTube - Hide layout components): Hide new kind of community posts (#695) 2024-09-22 00:46:44 -04:00
semantic-release-bot
e72da0c15f chore(release): 1.14.2-dev.1 [skip ci]
## [1.14.2-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.14.1...v1.14.2-dev.1) (2024-09-21)

### Bug Fixes

* **YouTube - Spoof video streams:** Change default client type to Android VR ([a2e8bbb](a2e8bbb422))
* **YouTube - Spoof video streams:** Change default client type to Android VR ([#697](https://github.com/ReVanced/revanced-integrations/issues/697)) ([d06706d](d06706d717))
2024-09-21 23:34:35 +00:00
LisoUseInAIKyrios
d06706d717 fix(YouTube - Spoof video streams): Change default client type to Android VR (#697) 2024-09-21 19:31:44 -04:00
LisoUseInAIKyrios
a2e8bbb422 fix(YouTube - Spoof video streams): Change default client type to Android VR 2024-09-21 17:11:45 -04:00
semantic-release-bot
9fd0c85f4e chore(release): 1.14.1 [skip ci]
## [1.14.1](https://github.com/ReVanced/revanced-integrations/compare/v1.14.0...v1.14.1) (2024-09-18)

### Bug Fixes

* **YouTube - Check environment:** Only use fields available since Android 8 ([#693](https://github.com/ReVanced/revanced-integrations/issues/693)) ([c0829c3](c0829c3915))
2024-09-18 23:05:05 +00:00
oSumAtrIX
5e0911d188 chore: Merge branch dev to main (#694) 2024-09-19 01:01:26 +02:00
semantic-release-bot
cd71c66995 chore(release): 1.14.1-dev.1 [skip ci]
## [1.14.1-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.14.0...v1.14.1-dev.1) (2024-09-18)

### Bug Fixes

* **YouTube - Check environment:** Only use fields available since Android 8 ([#693](https://github.com/ReVanced/revanced-integrations/issues/693)) ([c0829c3](c0829c3915))
2024-09-18 23:01:16 +00:00
oSumAtrIX
c0829c3915 fix(YouTube - Check environment): Only use fields available since Android 8 (#693) 2024-09-19 00:58:02 +02:00
semantic-release-bot
5e9637e073 chore(release): 1.14.0 [skip ci]
# [1.14.0](https://github.com/ReVanced/revanced-integrations/compare/v1.13.0...v1.14.0) (2024-09-18)

### Bug Fixes

* **YouTube - Check environment patch:** Allow adb installs even if patched more than 30 minutes ago ([5adf8bd](5adf8bdd67))
* **YouTube - Check environment patch:** Show if patched apk is too old, if the install source is not Manager or ADB ([18048f3](18048f3324))
* **YouTube - Check environment patch:** Use app install/update time instead of current time ([#687](https://github.com/ReVanced/revanced-integrations/issues/687)) ([b0d82b0](b0d82b016e))
* **YouTube - GmsCore support:** Show an error toast if GmsCore is included with root mounted installation ([#686](https://github.com/ReVanced/revanced-integrations/issues/686)) ([a4848be](a4848be653))
* **YouTube - Hide layout components:** Hide new kind of community post ([#678](https://github.com/ReVanced/revanced-integrations/issues/678)) ([6be257a](6be257a7a6))
* **YouTube - Return YouTube Dislike:** Show correct value when swiping back to prior Short and disliking ([2eb5e3a](2eb5e3afeb))
* **YouTube - ReturnYouTubeDislike:** Show estimated like count for videos with hidden likes ([#684](https://github.com/ReVanced/revanced-integrations/issues/684)) ([27d2b60](27d2b60444))
* **YouTube - SponsorBlock:** Add summary text to 'view my segments' button ([0f5dfb4](0f5dfb4e76))
* **YouTube - SponsorBlock:** Handle if the user enters an invalid number into any SB settings ([01f084d](01f084d87a))
* **YouTube:** Fix issues related to playback by replace streaming data ([#680](https://github.com/ReVanced/revanced-integrations/issues/680)) ([0468235](04682353af))

### Features

* Add `Check environment` patch ([#683](https://github.com/ReVanced/revanced-integrations/issues/683)) ([e856455](e856455283))
* **YouTube - Hide Shorts components:** Hide 'Use this sound' button ([#691](https://github.com/ReVanced/revanced-integrations/issues/691)) ([6f3d2ff](6f3d2ffb0d))
* **YouTube - Keyword filter:** Add syntax to match whole keywords and not substrings ([#681](https://github.com/ReVanced/revanced-integrations/issues/681)) ([5314dd9](5314dd90d1))
* **YouTube - Spoof client:** Allow forcing AVC codec with iOS ([#679](https://github.com/ReVanced/revanced-integrations/issues/679)) ([2c471f3](2c471f39c2))
* **YouTube:** Add donation link to settings about screen ([#688](https://github.com/ReVanced/revanced-integrations/issues/688)) ([b816c45](b816c45838))
2024-09-18 22:17:16 +00:00
LisoUseInAIKyrios
8e16999420 chore: Merge branch dev to main (#677) 2024-09-18 18:13:56 -04:00
semantic-release-bot
ebfe083a24 chore(release): 1.14.0-dev.12 [skip ci]
# [1.14.0-dev.12](https://github.com/ReVanced/revanced-integrations/compare/v1.14.0-dev.11...v1.14.0-dev.12) (2024-09-17)

### Bug Fixes

* **YouTube:** Fix issues related to playback by replace streaming data ([#680](https://github.com/ReVanced/revanced-integrations/issues/680)) ([0468235](04682353af))
2024-09-17 22:48:14 +00:00
Zain
04682353af fix(YouTube): Fix issues related to playback by replace streaming data (#680)
Co-authored-by: kitadai31 <90122968+kitadai31@users.noreply.github.com>
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-09-18 00:45:14 +02:00
semantic-release-bot
ca50665ac8 chore(release): 1.14.0-dev.11 [skip ci]
# [1.14.0-dev.11](https://github.com/ReVanced/revanced-integrations/compare/v1.14.0-dev.10...v1.14.0-dev.11) (2024-09-17)

### Features

* **YouTube - Hide Shorts components:** Hide 'Use this sound' button ([#691](https://github.com/ReVanced/revanced-integrations/issues/691)) ([6f3d2ff](6f3d2ffb0d))
2024-09-17 13:38:01 +00:00
MarcaD
6f3d2ffb0d feat(YouTube - Hide Shorts components): Hide 'Use this sound' button (#691)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-09-17 15:34:34 +02:00
semantic-release-bot
5ffff1bd40 chore(release): 1.14.0-dev.10 [skip ci]
# [1.14.0-dev.10](https://github.com/ReVanced/revanced-integrations/compare/v1.14.0-dev.9...v1.14.0-dev.10) (2024-09-11)

### Bug Fixes

* **YouTube - Return YouTube Dislike:** Show correct value when swiping back to prior Short and disliking ([2eb5e3a](2eb5e3afeb))
2024-09-11 03:41:25 +00:00
LisoUseInAIKyrios
2eb5e3afeb fix(YouTube - Return YouTube Dislike): Show correct value when swiping back to prior Short and disliking 2024-09-10 23:37:40 -04:00
semantic-release-bot
8332444c0d chore(release): 1.14.0-dev.9 [skip ci]
# [1.14.0-dev.9](https://github.com/ReVanced/revanced-integrations/compare/v1.14.0-dev.8...v1.14.0-dev.9) (2024-09-09)

### Bug Fixes

* **YouTube - SponsorBlock:** Add summary text to 'view my segments' button ([0f5dfb4](0f5dfb4e76))

### Features

* **YouTube:** Add donation link to settings about screen ([#688](https://github.com/ReVanced/revanced-integrations/issues/688)) ([b816c45](b816c45838))
2024-09-09 07:24:25 +00:00
LisoUseInAIKyrios
b816c45838 feat(YouTube): Add donation link to settings about screen (#688) 2024-09-09 03:21:05 -04:00
LisoUseInAIKyrios
0f5dfb4e76 fix(YouTube - SponsorBlock): Add summary text to 'view my segments' button 2024-09-09 03:17:38 -04:00
semantic-release-bot
2c2641e1cf chore(release): 1.14.0-dev.8 [skip ci]
# [1.14.0-dev.8](https://github.com/ReVanced/revanced-integrations/compare/v1.14.0-dev.7...v1.14.0-dev.8) (2024-09-06)

### Bug Fixes

* **YouTube - Check environment patch:** Show if patched apk is too old, if the install source is not Manager or ADB ([18048f3](18048f3324))
2024-09-06 09:42:41 +00:00
LisoUseInAIKyrios
18048f3324 fix(YouTube - Check environment patch): Show if patched apk is too old, if the install source is not Manager or ADB 2024-09-06 05:39:33 -04:00
semantic-release-bot
dffe7f6c34 chore(release): 1.14.0-dev.7 [skip ci]
# [1.14.0-dev.7](https://github.com/ReVanced/revanced-integrations/compare/v1.14.0-dev.6...v1.14.0-dev.7) (2024-09-06)

### Bug Fixes

* **YouTube - Check environment patch:** Allow adb installs even if patched more than 30 minutes ago ([5adf8bd](5adf8bdd67))
2024-09-06 08:58:50 +00:00
LisoUseInAIKyrios
5adf8bdd67 fix(YouTube - Check environment patch): Allow adb installs even if patched more than 30 minutes ago 2024-09-06 04:55:33 -04:00
semantic-release-bot
5f6239b610 chore(release): 1.14.0-dev.6 [skip ci]
# [1.14.0-dev.6](https://github.com/ReVanced/revanced-integrations/compare/v1.14.0-dev.5...v1.14.0-dev.6) (2024-09-06)

### Bug Fixes

* **YouTube - Check environment patch:** Use app install/update time instead of current time ([#687](https://github.com/ReVanced/revanced-integrations/issues/687)) ([b0d82b0](b0d82b016e))
2024-09-06 08:47:32 +00:00
LisoUseInAIKyrios
b0d82b016e fix(YouTube - Check environment patch): Use app install/update time instead of current time (#687) 2024-09-06 04:44:14 -04:00
semantic-release-bot
5b9e0e8ad4 chore(release): 1.14.0-dev.5 [skip ci]
# [1.14.0-dev.5](https://github.com/ReVanced/revanced-integrations/compare/v1.14.0-dev.4...v1.14.0-dev.5) (2024-09-06)

### Features

* Add `Check environment` patch ([#683](https://github.com/ReVanced/revanced-integrations/issues/683)) ([e856455](e856455283))
2024-09-06 08:30:14 +00:00
oSumAtrIX
e856455283 feat: Add Check environment patch (#683)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2024-09-06 10:27:02 +02:00
semantic-release-bot
a324b16096 chore(release): 1.14.0-dev.4 [skip ci]
# [1.14.0-dev.4](https://github.com/ReVanced/revanced-integrations/compare/v1.14.0-dev.3...v1.14.0-dev.4) (2024-09-01)

### Bug Fixes

* **YouTube - GmsCore support:** Show an error toast if GmsCore is included with root mounted installation ([#686](https://github.com/ReVanced/revanced-integrations/issues/686)) ([a4848be](a4848be653))
2024-09-01 22:06:37 +00:00
LisoUseInAIKyrios
a4848be653 fix(YouTube - GmsCore support): Show an error toast if GmsCore is included with root mounted installation (#686)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-09-01 18:03:43 -04:00
semantic-release-bot
a35dfe8ea3 chore(release): 1.14.0-dev.3 [skip ci]
# [1.14.0-dev.3](https://github.com/ReVanced/revanced-integrations/compare/v1.14.0-dev.2...v1.14.0-dev.3) (2024-09-01)

### Bug Fixes

* **YouTube - ReturnYouTubeDislike:** Show estimated like count for videos with hidden likes ([#684](https://github.com/ReVanced/revanced-integrations/issues/684)) ([27d2b60](27d2b60444))
2024-09-01 21:52:14 +00:00
LisoUseInAIKyrios
27d2b60444 fix(YouTube - ReturnYouTubeDislike): Show estimated like count for videos with hidden likes (#684) 2024-09-01 17:49:15 -04:00
semantic-release-bot
55c278dc08 chore(release): 1.14.0-dev.2 [skip ci]
# [1.14.0-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.14.0-dev.1...v1.14.0-dev.2) (2024-08-30)

### Features

* **YouTube - Keyword filter:** Add syntax to match whole keywords and not substrings ([#681](https://github.com/ReVanced/revanced-integrations/issues/681)) ([5314dd9](5314dd90d1))
2024-08-30 21:41:55 +00:00
LisoUseInAIKyrios
5314dd90d1 feat(YouTube - Keyword filter): Add syntax to match whole keywords and not substrings (#681)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-08-30 17:38:44 -04:00
semantic-release-bot
db81332078 chore(release): 1.14.0-dev.1 [skip ci]
# [1.14.0-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.13.1-dev.2...v1.14.0-dev.1) (2024-08-22)

### Features

* **YouTube - Spoof client:** Allow forcing AVC codec with iOS ([#679](https://github.com/ReVanced/revanced-integrations/issues/679)) ([2c471f3](2c471f39c2))
2024-08-22 17:50:39 +00:00
LisoUseInAIKyrios
2c471f39c2 feat(YouTube - Spoof client): Allow forcing AVC codec with iOS (#679) 2024-08-22 13:47:15 -04:00
semantic-release-bot
08d9f612a6 chore(release): 1.13.1-dev.2 [skip ci]
## [1.13.1-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.13.1-dev.1...v1.13.1-dev.2) (2024-08-20)

### Bug Fixes

* **YouTube - Hide layout components:** Hide new kind of community post ([#678](https://github.com/ReVanced/revanced-integrations/issues/678)) ([6be257a](6be257a7a6))
2024-08-20 06:20:04 +00:00
Bceez
6be257a7a6 fix(YouTube - Hide layout components): Hide new kind of community post (#678) 2024-08-20 08:16:43 +02:00
semantic-release-bot
7a58ae5d0e chore(release): 1.13.1-dev.1 [skip ci]
## [1.13.1-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.13.0...v1.13.1-dev.1) (2024-08-20)

### Bug Fixes

* **YouTube - SponsorBlock:** Handle if the user enters an invalid number into any SB settings ([01f084d](01f084d87a))
2024-08-20 04:20:24 +00:00
LisoUseInAIKyrios
01f084d87a fix(YouTube - SponsorBlock): Handle if the user enters an invalid number into any SB settings 2024-08-20 00:16:42 -04:00
semantic-release-bot
9e11ba11d9 chore(release): 1.13.0 [skip ci]
# [1.13.0](https://github.com/ReVanced/revanced-integrations/compare/v1.12.0...v1.13.0) (2024-08-15)

### Features

* **YouTube:** Add `Check watch history domain name resolution` patch ([#675](https://github.com/ReVanced/revanced-integrations/issues/675)) ([57d6834](57d6834a2c))
2024-08-15 17:30:27 +00:00
oSumAtrIX
71233ef0ab chore: Merge branch dev to main (#676) 2024-08-15 21:27:09 +04:00
semantic-release-bot
95bb8a7dea chore(release): 1.13.0-dev.1 [skip ci]
# [1.13.0-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.12.0...v1.13.0-dev.1) (2024-08-15)

### Features

* **YouTube:** Add `Check watch history domain name resolution` patch ([#675](https://github.com/ReVanced/revanced-integrations/issues/675)) ([57d6834](57d6834a2c))
2024-08-15 16:09:10 +00:00
LisoUseInAIKyrios
57d6834a2c feat(YouTube): Add Check watch history domain name resolution patch (#675) 2024-08-15 12:06:02 -04:00
semantic-release-bot
c8d381de5e chore(release): 1.12.0 [skip ci]
# [1.12.0](https://github.com/ReVanced/revanced-integrations/compare/v1.11.1...v1.12.0) (2024-08-06)

### Bug Fixes

* adjust blacklist ([d8d2a85](d8d2a852d3))
* **YouTube - Alternative thumbnails:** Always use primary thumbnail domain for still captures ([#666](https://github.com/ReVanced/revanced-integrations/issues/666)) ([7cdaf8d](7cdaf8df14))
* **YouTube - Client Spoof:** Restore missing high qualities by spoofing the iOS client user agent  ([#668](https://github.com/ReVanced/revanced-integrations/issues/668)) ([fbf629f](fbf629fd62))
* **YouTube - Disable auto captions:** Do not break Shorts captions menu ([0345a00](0345a00d60))
* **YouTube - Hide keyword content:** Do not hide flyout menu ([cda1f31](cda1f3160c))
* **YouTube - Hide keyword content:** Do not hide flyout menu ([#664](https://github.com/ReVanced/revanced-integrations/issues/664)) ([120188d](120188d643))
* **YouTube - Hide layout components:** Hide new type of horizontal shelf ([1fa59a6](1fa59a62a1))
* **YouTube - Keyword filter:** Filter videos from new subscription layout ([2f2eeea](2f2eeea5a7))
* **YouTube - Return YouTube Dislike:** Fix dislikes not appearing due to new component name ([#674](https://github.com/ReVanced/revanced-integrations/issues/674)) ([509e151](509e1516f8))
* **YouTube - SponsorBlock:** Correctly show minute timestamp when creating a new segment ([e71955d](e71955d5bb))
* **YouTube - SponsorBlock:** Improve create segment manual seek accuracy ([#671](https://github.com/ReVanced/revanced-integrations/issues/671)) ([34c02ae](34c02aeb2a))
* **YouTube - Spoof client:** Fix tracking history on brand accounts ([#669](https://github.com/ReVanced/revanced-integrations/issues/669)) ([4ac698f](4ac698fd4b))
* **YouTube - Spoof client:** Restore livestream audio only playback with iOS spoofing ([#673](https://github.com/ReVanced/revanced-integrations/issues/673)) ([5bf5fbd](5bf5fbd1a7))

### Features

* **YouTube - Description components:** Add  `Hide 'Key concepts' section` option ([#670](https://github.com/ReVanced/revanced-integrations/issues/670)) ([86b25ea](86b25ea468))
* **YouTube:** Add `Bypass image region restrictions` patch ([#667](https://github.com/ReVanced/revanced-integrations/issues/667)) ([396ba77](396ba77c20))
2024-08-06 00:09:03 +00:00
oSumAtrIX
e5736fc27f chore: Merge branch dev to main (#665) 2024-08-06 02:05:46 +02:00
semantic-release-bot
36cb36fbfd chore(release): 1.12.0-dev.10 [skip ci]
# [1.12.0-dev.10](https://github.com/ReVanced/revanced-integrations/compare/v1.12.0-dev.9...v1.12.0-dev.10) (2024-08-05)

### Bug Fixes

* **YouTube - Return YouTube Dislike:** Fix dislikes not appearing due to new component name ([#674](https://github.com/ReVanced/revanced-integrations/issues/674)) ([509e151](509e1516f8))
2024-08-05 22:11:15 +00:00
oSumAtrIX
509e1516f8 fix(YouTube - Return YouTube Dislike): Fix dislikes not appearing due to new component name (#674) 2024-08-06 00:07:39 +02:00
semantic-release-bot
7017488de9 chore(release): 1.12.0-dev.9 [skip ci]
# [1.12.0-dev.9](https://github.com/ReVanced/revanced-integrations/compare/v1.12.0-dev.8...v1.12.0-dev.9) (2024-08-04)

### Bug Fixes

* **YouTube - Spoof client:** Restore livestream audio only playback with iOS spoofing ([#673](https://github.com/ReVanced/revanced-integrations/issues/673)) ([5bf5fbd](5bf5fbd1a7))
2024-08-04 19:41:12 +00:00
LisoUseInAIKyrios
5bf5fbd1a7 fix(YouTube - Spoof client): Restore livestream audio only playback with iOS spoofing (#673) 2024-08-04 21:38:07 +02:00
semantic-release-bot
a0f3d7a0f7 chore(release): 1.12.0-dev.8 [skip ci]
# [1.12.0-dev.8](https://github.com/ReVanced/revanced-integrations/compare/v1.12.0-dev.7...v1.12.0-dev.8) (2024-08-02)

### Bug Fixes

* **YouTube - SponsorBlock:** Improve create segment manual seek accuracy ([#671](https://github.com/ReVanced/revanced-integrations/issues/671)) ([34c02ae](34c02aeb2a))
2024-08-02 13:43:19 +00:00
LisoUseInAIKyrios
34c02aeb2a fix(YouTube - SponsorBlock): Improve create segment manual seek accuracy (#671) 2024-08-02 09:39:33 -04:00
semantic-release-bot
d57a64b659 chore(release): 1.12.0-dev.7 [skip ci]
# [1.12.0-dev.7](https://github.com/ReVanced/revanced-integrations/compare/v1.12.0-dev.6...v1.12.0-dev.7) (2024-08-01)

### Features

* **YouTube - Description components:** Add  `Hide 'Key concepts' section` option ([#670](https://github.com/ReVanced/revanced-integrations/issues/670)) ([86b25ea](86b25ea468))
2024-08-01 11:30:52 +00:00
ILoveOpenSourceApplications
86b25ea468 feat(YouTube - Description components): Add Hide 'Key concepts' section option (#670)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: ILoveOpenSourceApplications <ILoveOpenSourceApplications@users.noreply.github.com>
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2024-08-01 13:27:19 +02:00
semantic-release-bot
e879e40e56 chore(release): 1.12.0-dev.6 [skip ci]
# [1.12.0-dev.6](https://github.com/ReVanced/revanced-integrations/compare/v1.12.0-dev.5...v1.12.0-dev.6) (2024-07-28)

### Bug Fixes

* **YouTube - Keyword filter:** Filter videos from new subscription layout ([2f2eeea](2f2eeea5a7))
2024-07-28 17:22:53 +00:00
LisoUseInAIKyrios
2f2eeea5a7 fix(YouTube - Keyword filter): Filter videos from new subscription layout 2024-07-28 13:19:40 -04:00
semantic-release-bot
3945a37944 chore(release): 1.12.0-dev.5 [skip ci]
# [1.12.0-dev.5](https://github.com/ReVanced/revanced-integrations/compare/v1.12.0-dev.4...v1.12.0-dev.5) (2024-07-28)

### Bug Fixes

* **YouTube - Client Spoof:** Restore missing high qualities by spoofing the iOS client user agent  ([#668](https://github.com/ReVanced/revanced-integrations/issues/668)) ([fbf629f](fbf629fd62))
2024-07-28 14:54:07 +00:00
Zain Arbani
fbf629fd62 fix(YouTube - Client Spoof): Restore missing high qualities by spoofing the iOS client user agent (#668)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-07-28 16:51:17 +02:00
semantic-release-bot
ab0093ff83 chore(release): 1.12.0-dev.4 [skip ci]
# [1.12.0-dev.4](https://github.com/ReVanced/revanced-integrations/compare/v1.12.0-dev.3...v1.12.0-dev.4) (2024-07-28)

### Bug Fixes

* **YouTube - Spoof client:** Fix tracking history on brand accounts ([#669](https://github.com/ReVanced/revanced-integrations/issues/669)) ([4ac698f](4ac698fd4b))
2024-07-28 13:56:49 +00:00
oSumAtrIX
4ac698fd4b fix(YouTube - Spoof client): Fix tracking history on brand accounts (#669) 2024-07-28 15:53:55 +02:00
semantic-release-bot
848ed6e878 chore(release): 1.12.0-dev.3 [skip ci]
# [1.12.0-dev.3](https://github.com/ReVanced/revanced-integrations/compare/v1.12.0-dev.2...v1.12.0-dev.3) (2024-07-26)

### Bug Fixes

* **YouTube - SponsorBlock:** Correctly show minute timestamp when creating a new segment ([e71955d](e71955d5bb))
2024-07-26 14:39:42 +00:00
LisoUseInAIKyrios
e71955d5bb fix(YouTube - SponsorBlock): Correctly show minute timestamp when creating a new segment 2024-07-26 10:36:27 -04:00
semantic-release-bot
7bf43c6896 chore(release): 1.12.0-dev.2 [skip ci]
# [1.12.0-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.12.0-dev.1...v1.12.0-dev.2) (2024-07-15)

### Bug Fixes

* **YouTube - Disable auto captions:** Do not break Shorts captions menu ([0345a00](0345a00d60))
2024-07-15 19:02:18 +00:00
LisoUseInAIKyrios
0345a00d60 fix(YouTube - Disable auto captions): Do not break Shorts captions menu 2024-07-15 18:16:39 +04:00
semantic-release-bot
d996d3832a chore(release): 1.12.0-dev.1 [skip ci]
# [1.12.0-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.11.2-dev.3...v1.12.0-dev.1) (2024-07-14)

### Features

* **YouTube:** Add `Bypass image region restrictions` patch ([#667](https://github.com/ReVanced/revanced-integrations/issues/667)) ([396ba77](396ba77c20))
2024-07-14 22:58:56 +00:00
LisoUseInAIKyrios
396ba77c20 feat(YouTube): Add Bypass image region restrictions patch (#667) 2024-07-15 02:55:42 +04:00
semantic-release-bot
67ff3172bb chore(release): 1.11.2-dev.3 [skip ci]
## [1.11.2-dev.3](https://github.com/ReVanced/revanced-integrations/compare/v1.11.2-dev.2...v1.11.2-dev.3) (2024-07-14)
2024-07-14 22:43:08 +00:00
oSumAtrIX
7af763f4b1 build(Needs bump): Sign APK properly without relying on internal Gradle classes 2024-07-15 00:40:02 +02:00
oSumAtrIX
2fabdb245f ci: Add custom release rule to create a build release 2024-07-15 00:40:02 +02:00
semantic-release-bot
3368023ff9 chore(release): 1.11.2-dev.2 [skip ci]
## [1.11.2-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.11.2-dev.1...v1.11.2-dev.2) (2024-07-14)

### Bug Fixes

* **YouTube - Alternative thumbnails:** Always use primary thumbnail domain for still captures ([#666](https://github.com/ReVanced/revanced-integrations/issues/666)) ([7cdaf8d](7cdaf8df14))
* **YouTube - Hide layout components:** Hide new type of horizontal shelf ([1fa59a6](1fa59a62a1))
2024-07-14 14:15:08 +00:00
LisoUseInAIKyrios
1fa59a62a1 fix(YouTube - Hide layout components): Hide new type of horizontal shelf 2024-07-14 18:11:55 +04:00
semantic-release-bot
66cf6c4263 chore(release): 1.11.2-dev.2 [skip ci]
## [1.11.2-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.11.2-dev.1...v1.11.2-dev.2) (2024-07-13)

### Bug Fixes

* **YouTube - Alternative thumbnails:** Always use primary thumbnail domain for still captures ([#666](https://github.com/ReVanced/revanced-integrations/issues/666)) ([7cdaf8d](7cdaf8df14))
2024-07-13 15:55:01 +00:00
LisoUseInAIKyrios
7cdaf8df14 fix(YouTube - Alternative thumbnails): Always use primary thumbnail domain for still captures (#666) 2024-07-13 19:32:40 +04:00
oSumAtrIX
34ef27de79 ci: Correct usage of repository variable 2024-07-13 00:44:39 +02:00
semantic-release-bot
6fe85a21e9 chore(release): 1.11.2-dev.1 [skip ci]
## [1.11.2-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.11.1...v1.11.2-dev.1) (2024-07-12)

### Bug Fixes

* adjust blacklist ([d8d2a85](d8d2a852d3))
* **YouTube - Hide keyword content:** Do not hide flyout menu ([cda1f31](cda1f3160c))
* **YouTube - Hide keyword content:** Do not hide flyout menu ([#664](https://github.com/ReVanced/revanced-integrations/issues/664)) ([120188d](120188d643))
2024-07-12 17:52:23 +00:00
LisoUseInAIKyrios
120188d643 fix(YouTube - Hide keyword content): Do not hide flyout menu (#664) 2024-07-12 21:49:18 +04:00
LisoUseInAIKyrios
d8d2a852d3 fix: adjust blacklist 2024-07-12 21:48:36 +04:00
LisoUseInAIKyrios
9469239264 refactor 2024-07-12 21:45:44 +04:00
LisoUseInAIKyrios
cda1f3160c fix(YouTube - Hide keyword content): Do not hide flyout menu 2024-07-12 21:22:42 +04:00
semantic-release-bot
34a224e5de chore(release): 1.11.1 [skip ci]
## [1.11.1](https://github.com/ReVanced/revanced-integrations/compare/v1.11.0...v1.11.1) (2024-07-11)

### Bug Fixes

* **YouTube - Hide ads:** Hide new types of home feed button ads ([#662](https://github.com/ReVanced/revanced-integrations/issues/662)) ([ff2637c](ff2637cb4c))
* **YouTube - Hide layout components:** Detect if a keyword filter hides all videos ([#657](https://github.com/ReVanced/revanced-integrations/issues/657)) ([3a3ceec](3a3ceec4b5))
* **YouTube - Hide layout components:** Hide new kind of community post ([#659](https://github.com/ReVanced/revanced-integrations/issues/659)) ([c237e3c](c237e3c02c))
* **YouTube - Settings:** Move some settings to different menus, adjust default setting values ([#661](https://github.com/ReVanced/revanced-integrations/issues/661)) ([77533cf](77533cf3d6))
* **YouTube - SponsorBlock:** Skip segments when casting ([#655](https://github.com/ReVanced/revanced-integrations/issues/655)) ([5ce16ee](5ce16eedc6))
2024-07-11 18:53:43 +00:00
LisoUseInAIKyrios
1aba976b28 chore: Merge branch dev to main (#658) 2024-07-11 22:50:39 +04:00
semantic-release-bot
6fef1b28a4 chore(release): 1.11.1-dev.4 [skip ci]
## [1.11.1-dev.4](https://github.com/ReVanced/revanced-integrations/compare/v1.11.1-dev.3...v1.11.1-dev.4) (2024-07-10)

### Bug Fixes

* **YouTube - SponsorBlock:** Skip segments when casting ([#655](https://github.com/ReVanced/revanced-integrations/issues/655)) ([5ce16ee](5ce16eedc6))
2024-07-10 22:14:58 +00:00
Sami Alaoui
5ce16eedc6 fix(YouTube - SponsorBlock): Skip segments when casting (#655)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: Hoàng Gia Bảo <70064328+YT-Advanced@users.noreply.github.com>
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
fix(YouTube - SponsorBlock): Skip segments when casting #655
2024-07-11 00:11:55 +02:00
semantic-release-bot
7aec04647a chore(release): 1.11.1-dev.3 [skip ci]
## [1.11.1-dev.3](https://github.com/ReVanced/revanced-integrations/compare/v1.11.1-dev.2...v1.11.1-dev.3) (2024-07-05)

### Bug Fixes

* **YouTube - Hide ads:** Hide new types of home feed button ads ([#662](https://github.com/ReVanced/revanced-integrations/issues/662)) ([ff2637c](ff2637cb4c))
* **YouTube - Settings:** Move some settings to different menus, adjust default setting values ([#661](https://github.com/ReVanced/revanced-integrations/issues/661)) ([77533cf](77533cf3d6))
2024-07-05 17:44:15 +00:00
LisoUseInAIKyrios
ff2637cb4c fix(YouTube - Hide ads): Hide new types of home feed button ads (#662) 2024-07-05 21:40:52 +04:00
LisoUseInAIKyrios
77533cf3d6 fix(YouTube - Settings): Move some settings to different menus, adjust default setting values (#661) 2024-07-05 21:38:33 +04:00
semantic-release-bot
d9f7679020 chore(release): 1.11.1-dev.2 [skip ci]
## [1.11.1-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.11.1-dev.1...v1.11.1-dev.2) (2024-06-30)

### Bug Fixes

* **YouTube - Hide layout components:** Hide new kind of community post ([#659](https://github.com/ReVanced/revanced-integrations/issues/659)) ([c237e3c](c237e3c02c))
2024-06-30 18:45:48 +00:00
Bceez
c237e3c02c fix(YouTube - Hide layout components): Hide new kind of community post (#659)
fix(YouTube - Hide layout components) Community posts not hiding
2024-06-30 20:42:52 +02:00
semantic-release-bot
3dda3de280 chore(release): 1.11.1-dev.1 [skip ci]
## [1.11.1-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.11.0...v1.11.1-dev.1) (2024-06-23)

### Bug Fixes

* **YouTube - Hide layout components:** Detect if a keyword filter hides all videos ([#657](https://github.com/ReVanced/revanced-integrations/issues/657)) ([3a3ceec](3a3ceec4b5))
2024-06-23 12:50:16 +00:00
LisoUseInAIKyrios
3a3ceec4b5 fix(YouTube - Hide layout components): Detect if a keyword filter hides all videos (#657) 2024-06-23 15:46:42 +03:00
semantic-release-bot
8fe73b25d9 chore(release): 1.11.0 [skip ci]
# [1.11.0](https://github.com/ReVanced/revanced-integrations/compare/v1.10.0...v1.11.0) (2024-06-23)

### Bug Fixes

* **YouTube - Client spoof:** Correctly play more livestreams using Android VR ([#652](https://github.com/ReVanced/revanced-integrations/issues/652)) ([58f8172](58f8172b2d))
* **YouTube - Hide description components:** Replace `Hide game section` and `Hide music section` with `Hide attributes section` ([#654](https://github.com/ReVanced/revanced-integrations/issues/654)) ([f82dfce](f82dfce887))
* **YouTube - Return YouTube Dislike:** Do not replace view count with dislikes ([5f79196](5f79196692))
* **YouTube - Spoof client:** Correctly play as background audio only with Android VR ([9adbc66](9adbc66197))
* **YouTube - Spoof client:** Correctly play some live streams when using Android VR ([f74fb17](f74fb17a12))
* **YouTube:** Rename `Minimized playback` to `Remove background playback restrictions` ([#651](https://github.com/ReVanced/revanced-integrations/issues/651)) ([84c50c0](84c50c080c))

### Features

* **Boost For Reddit:** Add `Fix /s/ links` patch ([#631](https://github.com/ReVanced/revanced-integrations/issues/631)) ([0c9ad35](0c9ad35fc9))
* **YouTube - Comments:** Add `Hide 'Create a Short' button` option ([#656](https://github.com/ReVanced/revanced-integrations/issues/656)) ([064d8e9](064d8e99a9))
* **YouTube - Comments:** Add `Hide Thanks button` and `Hide 'Comments by members' header` options ([#653](https://github.com/ReVanced/revanced-integrations/issues/653)) ([240e805](240e805489))
* **YouTube - Miniplayer:** Rename `Tablet mini player` and allow selecting the style of the in-app miniplayer ([#649](https://github.com/ReVanced/revanced-integrations/issues/649)) ([f483af6](f483af6d3a))
2024-06-23 12:15:11 +00:00
oSumAtrIX
fac49c7c10 chore: Merge branch dev to main (#650) 2024-06-23 14:11:58 +02:00
semantic-release-bot
e018746ceb chore(release): 1.11.0-dev.7 [skip ci]
# [1.11.0-dev.7](https://github.com/ReVanced/revanced-integrations/compare/v1.11.0-dev.6...v1.11.0-dev.7) (2024-06-17)

### Bug Fixes

* **YouTube - Hide description components:** Replace `Hide game section` and `Hide music section` with `Hide attributes section` ([#654](https://github.com/ReVanced/revanced-integrations/issues/654)) ([f82dfce](f82dfce887))
2024-06-17 22:57:01 +00:00
ILoveOpenSourceApplications
f82dfce887 fix(YouTube - Hide description components): Replace Hide game section and Hide music section with Hide attributes section (#654)
Co-authored-by: ILoveOpenSourceApplications <ILoveOpenSourceApplications@users.noreply.github.com>
2024-06-18 00:54:06 +02:00
semantic-release-bot
a1e358bc18 chore(release): 1.11.0-dev.6 [skip ci]
# [1.11.0-dev.6](https://github.com/ReVanced/revanced-integrations/compare/v1.11.0-dev.5...v1.11.0-dev.6) (2024-06-17)

### Features

* **YouTube - Comments:** Add `Hide 'Create a Short' button` option ([#656](https://github.com/ReVanced/revanced-integrations/issues/656)) ([064d8e9](064d8e99a9))
2024-06-17 22:52:30 +00:00
ILoveOpenSourceApplications
064d8e99a9 feat(YouTube - Comments): Add Hide 'Create a Short' button option (#656)
Co-authored-by: ILoveOpenSourceApplications <ILoveOpenSourceApplications@users.noreply.github.com>
2024-06-18 00:49:14 +02:00
semantic-release-bot
84d2484ace chore(release): 1.11.0-dev.5 [skip ci]
# [1.11.0-dev.5](https://github.com/ReVanced/revanced-integrations/compare/v1.11.0-dev.4...v1.11.0-dev.5) (2024-06-09)

### Features

* **YouTube - Comments:** Add `Hide Thanks button` and `Hide 'Comments by members' header` options ([#653](https://github.com/ReVanced/revanced-integrations/issues/653)) ([240e805](240e805489))
2024-06-09 09:18:07 +00:00
ILoveOpenSourceApplications
240e805489 feat(YouTube - Comments): Add Hide Thanks button and Hide 'Comments by members' header options (#653) 2024-06-09 12:14:51 +03:00
semantic-release-bot
376eb46f10 chore(release): 1.11.0-dev.4 [skip ci]
# [1.11.0-dev.4](https://github.com/ReVanced/revanced-integrations/compare/v1.11.0-dev.3...v1.11.0-dev.4) (2024-06-09)

### Bug Fixes

* **YouTube - Client spoof:** Correctly play more livestreams using Android VR ([#652](https://github.com/ReVanced/revanced-integrations/issues/652)) ([58f8172](58f8172b2d))
2024-06-09 08:34:37 +00:00
LisoUseInAIKyrios
58f8172b2d fix(YouTube - Client spoof): Correctly play more livestreams using Android VR (#652) 2024-06-09 11:31:30 +03:00
semantic-release-bot
758dfade7f chore(release): 1.11.0-dev.3 [skip ci]
# [1.11.0-dev.3](https://github.com/ReVanced/revanced-integrations/compare/v1.11.0-dev.2...v1.11.0-dev.3) (2024-06-08)

### Features

* **Boost For Reddit:** Add `Fix /s/ links` patch ([#631](https://github.com/ReVanced/revanced-integrations/issues/631)) ([0c9ad35](0c9ad35fc9))
2024-06-08 16:34:15 +00:00
Yan
0c9ad35fc9 feat(Boost For Reddit): Add Fix /s/ links patch (#631)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-06-08 18:31:13 +02:00
semantic-release-bot
5da0913d1d chore(release): 1.11.0-dev.2 [skip ci]
# [1.11.0-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.11.0-dev.1...v1.11.0-dev.2) (2024-06-08)

### Bug Fixes

* **YouTube:** Rename `Minimized playback` to `Remove background playback restrictions` ([#651](https://github.com/ReVanced/revanced-integrations/issues/651)) ([84c50c0](84c50c080c))
2024-06-08 08:37:59 +00:00
LisoUseInAIKyrios
84c50c080c fix(YouTube): Rename Minimized playback to Remove background playback restrictions (#651) 2024-06-08 11:34:57 +03:00
semantic-release-bot
925f8bb297 chore(release): 1.11.0-dev.1 [skip ci]
# [1.11.0-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.10.1-dev.3...v1.11.0-dev.1) (2024-06-07)

### Features

* **YouTube - Miniplayer:** Rename `Tablet mini player` and allow selecting the style of the in-app miniplayer ([#649](https://github.com/ReVanced/revanced-integrations/issues/649)) ([f483af6](f483af6d3a))
2024-06-07 22:48:23 +00:00
LisoUseInAIKyrios
f483af6d3a feat(YouTube - Miniplayer): Rename Tablet mini player and allow selecting the style of the in-app miniplayer (#649) 2024-06-08 01:45:24 +03:00
semantic-release-bot
7a7b2db6f7 chore(release): 1.10.1-dev.3 [skip ci]
## [1.10.1-dev.3](https://github.com/ReVanced/revanced-integrations/compare/v1.10.1-dev.2...v1.10.1-dev.3) (2024-06-07)

### Bug Fixes

* **YouTube - Spoof client:** Correctly play as background audio only with Android VR ([9adbc66](9adbc66197))
2024-06-07 14:06:57 +00:00
LisoUseInAIKyrios
9adbc66197 fix(YouTube - Spoof client): Correctly play as background audio only with Android VR 2024-06-07 17:03:34 +03:00
semantic-release-bot
7736ca4ef8 chore(release): 1.10.1-dev.2 [skip ci]
## [1.10.1-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.10.1-dev.1...v1.10.1-dev.2) (2024-06-06)

### Bug Fixes

* **YouTube - Return YouTube Dislike:** Do not replace view count with dislikes ([5f79196](5f79196692))
2024-06-06 09:42:56 +00:00
LisoUseInAIKyrios
5f79196692 fix(YouTube - Return YouTube Dislike): Do not replace view count with dislikes 2024-06-06 12:39:42 +03:00
semantic-release-bot
ecd687100c chore(release): 1.10.1-dev.1 [skip ci]
## [1.10.1-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.10.0...v1.10.1-dev.1) (2024-06-06)

### Bug Fixes

* **YouTube - Spoof client:** Correctly play some live streams when using Android VR ([f74fb17](f74fb17a12))
2024-06-06 09:26:10 +00:00
LisoUseInAIKyrios
f74fb17a12 fix(YouTube - Spoof client): Correctly play some live streams when using Android VR 2024-06-06 12:22:38 +03:00
semantic-release-bot
4f11b1d2eb chore(release): 1.10.0 [skip ci]
# [1.10.0](https://github.com/ReVanced/revanced-integrations/compare/v1.9.2...v1.10.0) (2024-06-02)

### Bug Fixes

* **YouTube - Spoof client:** Allow swipe gestures to enter/exit fullscreen when spoofing with `Android VR` client ([#645](https://github.com/ReVanced/revanced-integrations/issues/645)) ([b826865](b826865ef4))
* **YouTube - Spoof client:** Restore playback speed menu when spoofing to an iOS client ([2b2a70e](2b2a70e6ea))

### Features

* **YouTube - Hide layout components:** Disable like / subscribe button glow animation ([#646](https://github.com/ReVanced/revanced-integrations/issues/646)) ([777ffb1](777ffb1360))
* **YouTube - Playback speed:** Add option to show speed dialog button in video player ([#636](https://github.com/ReVanced/revanced-integrations/issues/636)) ([59220d6](59220d6e25))
* **YouTube:** Support version `19.12`, `19.13`, `19.14`, `19.15` and `19.16` ([#643](https://github.com/ReVanced/revanced-integrations/issues/643)) ([4dce73a](4dce73a6fb))
2024-06-02 17:45:16 +00:00
oSumAtrIX
5f0852c0c2 chore: Merge branch dev to main (#647) 2024-06-02 19:42:00 +02:00
semantic-release-bot
240e19966d chore(release): 1.10.0-dev.5 [skip ci]
# [1.10.0-dev.5](https://github.com/ReVanced/revanced-integrations/compare/v1.10.0-dev.4...v1.10.0-dev.5) (2024-06-02)

### Features

* **YouTube - Playback speed:** Add option to show speed dialog button in video player ([#636](https://github.com/ReVanced/revanced-integrations/issues/636)) ([59220d6](59220d6e25))
2024-06-02 15:51:00 +00:00
MarcaD
59220d6e25 feat(YouTube - Playback speed): Add option to show speed dialog button in video player (#636)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-06-02 17:48:02 +02:00
semantic-release-bot
571ce75c84 chore(release): 1.10.0-dev.4 [skip ci]
# [1.10.0-dev.4](https://github.com/ReVanced/revanced-integrations/compare/v1.10.0-dev.3...v1.10.0-dev.4) (2024-06-02)

### Bug Fixes

* **YouTube - Spoof client:** Restore playback speed menu when spoofing to an iOS client ([2b2a70e](2b2a70e6ea))
2024-06-02 15:46:59 +00:00
oSumAtrIX
2b2a70e6ea fix(YouTube - Spoof client): Restore playback speed menu when spoofing to an iOS client 2024-06-02 17:43:40 +02:00
semantic-release-bot
caa94fa6a4 chore(release): 1.10.0-dev.3 [skip ci]
# [1.10.0-dev.3](https://github.com/ReVanced/revanced-integrations/compare/v1.10.0-dev.2...v1.10.0-dev.3) (2024-06-01)

### Features

* **YouTube:** Support version `19.12`, `19.13`, `19.14`, `19.15` and `19.16` ([#643](https://github.com/ReVanced/revanced-integrations/issues/643)) ([4dce73a](4dce73a6fb))
2024-06-01 18:12:48 +00:00
LisoUseInAIKyrios
4dce73a6fb feat(YouTube): Support version 19.12, 19.13, 19.14, 19.15 and 19.16 (#643) 2024-06-01 22:09:36 +04:00
semantic-release-bot
a7e9390479 chore(release): 1.10.0-dev.2 [skip ci]
# [1.10.0-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.10.0-dev.1...v1.10.0-dev.2) (2024-06-01)

### Bug Fixes

* **YouTube - Spoof client:** Allow swipe gestures to enter/exit fullscreen when spoofing with `Android VR` client ([#645](https://github.com/ReVanced/revanced-integrations/issues/645)) ([b826865](b826865ef4))
2024-06-01 09:32:09 +00:00
KAZI MMT
b826865ef4 fix(YouTube - Spoof client): Allow swipe gestures to enter/exit fullscreen when spoofing with Android VR client (#645) 2024-06-01 13:29:14 +04:00
semantic-release-bot
b1109350fa chore(release): 1.10.0-dev.1 [skip ci]
# [1.10.0-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.9.2...v1.10.0-dev.1) (2024-05-31)

### Features

* **YouTube - Hide layout components:** Disable like / subscribe button glow animation ([#646](https://github.com/ReVanced/revanced-integrations/issues/646)) ([777ffb1](777ffb1360))
2024-05-31 21:01:12 +00:00
LisoUseInAIKyrios
777ffb1360 feat(YouTube - Hide layout components): Disable like / subscribe button glow animation (#646) 2024-06-01 00:57:47 +04:00
semantic-release-bot
3fe0f3fa06 chore(release): 1.9.2 [skip ci]
## [1.9.2](https://github.com/ReVanced/revanced-integrations/compare/v1.9.1...v1.9.2) (2024-05-31)

### Bug Fixes

* **YouTube - Restore old video quality menu:** Do not show error toast if using an old version of YT ([#640](https://github.com/ReVanced/revanced-integrations/issues/640)) ([2227b45](2227b45020))
* **YouTube - Spoof client:** Disable AV1 if not supported by spoofing an older iOS device ([#644](https://github.com/ReVanced/revanced-integrations/issues/644)) ([e28edba](e28edbadbf))
* **YouTube - Spoof client:** Improve Android spoofing ([#641](https://github.com/ReVanced/revanced-integrations/issues/641)) ([baf967e](baf967e12a))
2024-05-31 10:07:33 +00:00
oSumAtrIX
60ae48bdbf chore: Merge branch dev to main (#642) 2024-05-31 12:04:12 +02:00
LisoUseInAIKyrios
1f36aae81b chore: Sanitize spoof logs 2024-05-29 00:48:04 +04:00
semantic-release-bot
3a978ecc92 chore(release): 1.9.2-dev.3 [skip ci]
## [1.9.2-dev.3](https://github.com/ReVanced/revanced-integrations/compare/v1.9.2-dev.2...v1.9.2-dev.3) (2024-05-28)

### Bug Fixes

* **YouTube - Spoof client:** Disable AV1 if not supported by spoofing an older iOS device ([#644](https://github.com/ReVanced/revanced-integrations/issues/644)) ([e28edba](e28edbadbf))
2024-05-28 19:42:25 +00:00
LisoUseInAIKyrios
e28edbadbf fix(YouTube - Spoof client): Disable AV1 if not supported by spoofing an older iOS device (#644) 2024-05-28 23:38:57 +04:00
semantic-release-bot
b2eac9099f chore(release): 1.9.2-dev.2 [skip ci]
## [1.9.2-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.9.2-dev.1...v1.9.2-dev.2) (2024-05-27)

### Bug Fixes

* **YouTube - Restore old video quality menu:** Do not show error toast if using an old version of YT ([#640](https://github.com/ReVanced/revanced-integrations/issues/640)) ([2227b45](2227b45020))
2024-05-27 14:15:23 +00:00
LisoUseInAIKyrios
2227b45020 fix(YouTube - Restore old video quality menu): Do not show error toast if using an old version of YT (#640) 2024-05-27 18:12:05 +04:00
LisoUseInAIKyrios
22ed627a5d build: fix gradle 2024-05-27 18:11:33 +04:00
oSumAtrIX
2ac29c2579 build: Bump dependencies 2024-05-26 01:21:12 +02:00
oSumAtrIX
0e7bf05a0e docs: Improve issue templates 2024-05-26 00:43:36 +02:00
semantic-release-bot
97e531d795 chore(release): 1.9.2-dev.1 [skip ci]
## [1.9.2-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.9.1...v1.9.2-dev.1) (2024-05-25)

### Bug Fixes

* **YouTube - Spoof client:** Improve Android spoofing ([#641](https://github.com/ReVanced/revanced-integrations/issues/641)) ([baf967e](baf967e12a))
2024-05-25 22:13:13 +00:00
LisoUseInAIKyrios
baf967e12a fix(YouTube - Spoof client): Improve Android spoofing (#641) 2024-05-26 02:10:09 +04:00
semantic-release-bot
702df1a93d chore(release): 1.9.1 [skip ci]
## [1.9.1](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0...v1.9.1) (2024-05-24)

### Bug Fixes

* **YouTube - Client spoof:** Spoof iOS client model to fix various side effects ([#638](https://github.com/ReVanced/revanced-integrations/issues/638)) ([fcff9a2](fcff9a2049))
2024-05-24 00:34:27 +00:00
oSumAtrIX
8a70ffe9c0 chore: Merge branch dev to main (#639) 2024-05-24 02:31:34 +02:00
semantic-release-bot
d2e74aca3d chore(release): 1.9.1-dev.1 [skip ci]
## [1.9.1-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0...v1.9.1-dev.1) (2024-05-23)

### Bug Fixes

* **YouTube - Client spoof:** Spoof iOS client model to fix various side effects ([#638](https://github.com/ReVanced/revanced-integrations/issues/638)) ([fcff9a2](fcff9a2049))
2024-05-23 20:45:14 +00:00
oSumAtrIX
fcff9a2049 fix(YouTube - Client spoof): Spoof iOS client model to fix various side effects (#638)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2024-05-23 22:42:15 +02:00
semantic-release-bot
1b82e985b6 chore(release): 1.9.0 [skip ci]
# [1.9.0](https://github.com/ReVanced/revanced-integrations/compare/v1.8.0...v1.9.0) (2024-05-21)

### Bug Fixes

* Use Java instead of Kotlin Regex to improve reliability ([#628](https://github.com/ReVanced/revanced-integrations/issues/628)) ([44c3cc4](44c3cc4636))
* **YouTube - Client spoof:** Spoof client to fix playback ([#637](https://github.com/ReVanced/revanced-integrations/issues/637)) ([4c1f82a](4c1f82aa22))
* **YouTube - Hide keyword content:** Filter Shorts found in horizontal shelves ([75fa579](75fa5797f7))
* **YouTube - Hide Shorts components:** Hide old layout like/dislike buttons without leaving empty space ([9782338](978233843d))
* **YouTube - Hide Shorts components:** Hide Shorts in search result horizontal shelves ([#625](https://github.com/ReVanced/revanced-integrations/issues/625)) ([656ca17](656ca17ffc))
* **YouTube - Hide video action buttons:** Remove obsolete `hide Shop button` ([#618](https://github.com/ReVanced/revanced-integrations/issues/618)) ([a78c3ff](a78c3ff09e))
* **YouTube - Hide video action buttons:** Updated path filter ([b74e544](b74e54481a))
* **YouTube - Player flyout menu:** Remove obsolete `Hide report menu` ([9e9d969](9e9d96910c))
* **YouTube - Restore old video quality menu:** Do not make click sounds when opening Shorts quality menu ([578a27d](578a27dea5))
* **YouTube - Restore old video quality menu:** Show advanced quality menu in Shorts quality flyout ([#632](https://github.com/ReVanced/revanced-integrations/issues/632)) ([77c9825](77c9825b82))
* **YouTube - Settings:** Use same background color for about screen if Theme patch is not included ([4164ed3](4164ed3486))
* **YouTube - SponsorBlock:** Show correct segment times if video is over 24 hours in length ([#630](https://github.com/ReVanced/revanced-integrations/issues/630)) ([81251f9](81251f9a34))

### Features

* **YouTube - Comments:** Add option to hide timestamp and emoji buttons ([#621](https://github.com/ReVanced/revanced-integrations/issues/621)) ([6e9e122](6e9e12235a))
* **YouTube - Hide ads:** Add option to hide the 'Visit store' button on channel pages ([#622](https://github.com/ReVanced/revanced-integrations/issues/622)) ([9de566c](9de566ca02))
* **YouTube - Hide Shorts components:** Hide 'Buy super thanks' button ([#633](https://github.com/ReVanced/revanced-integrations/issues/633)) ([303754c](303754c46f))
* **YouTube - Hide Shorts components:** Hide like / dislike button in video ads ([#619](https://github.com/ReVanced/revanced-integrations/issues/619)) ([b2b6b8c](b2b6b8c3d7))
* **YouTube - Navigation buttons:** Add option to hide navigation button labels ([#635](https://github.com/ReVanced/revanced-integrations/issues/635)) ([6bd0ac2](6bd0ac20dc))
2024-05-21 00:48:39 +00:00
oSumAtrIX
9147842ac7 chore: Merge branch dev to main (#620) 2024-05-21 02:45:35 +02:00
semantic-release-bot
e3994d381b chore(release): 1.9.0-dev.15 [skip ci]
# [1.9.0-dev.15](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.14...v1.9.0-dev.15) (2024-05-21)

### Bug Fixes

* **YouTube - Client spoof:** Spoof client to fix playback ([#637](https://github.com/ReVanced/revanced-integrations/issues/637)) ([4c1f82a](4c1f82aa22))
2024-05-21 00:44:41 +00:00
oSumAtrIX
4c1f82aa22 fix(YouTube - Client spoof): Spoof client to fix playback (#637)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2024-05-21 02:41:34 +02:00
semantic-release-bot
ea184d050e chore(release): 1.9.0-dev.14 [skip ci]
# [1.9.0-dev.14](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.13...v1.9.0-dev.14) (2024-05-18)

### Features

* **YouTube - Navigation buttons:** Add option to hide navigation button labels ([#635](https://github.com/ReVanced/revanced-integrations/issues/635)) ([6bd0ac2](6bd0ac20dc))
2024-05-18 21:18:05 +00:00
MarcaD
6bd0ac20dc feat(YouTube - Navigation buttons): Add option to hide navigation button labels (#635)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-05-19 01:15:14 +04:00
semantic-release-bot
78cf116e58 chore(release): 1.9.0-dev.13 [skip ci]
# [1.9.0-dev.13](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.12...v1.9.0-dev.13) (2024-05-16)

### Features

* **YouTube - Hide Shorts components:** Hide 'Buy super thanks' button ([#633](https://github.com/ReVanced/revanced-integrations/issues/633)) ([303754c](303754c46f))
2024-05-16 17:12:27 +00:00
LisoUseInAIKyrios
303754c46f feat(YouTube - Hide Shorts components): Hide 'Buy super thanks' button (#633) 2024-05-16 21:09:02 +04:00
semantic-release-bot
195a521238 chore(release): 1.9.0-dev.12 [skip ci]
# [1.9.0-dev.12](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.11...v1.9.0-dev.12) (2024-05-15)

### Bug Fixes

* **YouTube - Hide Shorts components:** Hide old layout like/dislike buttons without leaving empty space ([9782338](978233843d))
* **YouTube - Restore old video quality menu:** Do not make click sounds when opening Shorts quality menu ([578a27d](578a27dea5))
2024-05-15 18:22:49 +00:00
LisoUseInAIKyrios
978233843d fix(YouTube - Hide Shorts components): Hide old layout like/dislike buttons without leaving empty space
Also change hide by 1dp to 0dp, and consolidate two methods together
2024-05-15 22:19:22 +04:00
LisoUseInAIKyrios
578a27dea5 fix(YouTube - Restore old video quality menu): Do not make click sounds when opening Shorts quality menu 2024-05-15 22:19:22 +04:00
semantic-release-bot
6710acd928 chore(release): 1.9.0-dev.11 [skip ci]
# [1.9.0-dev.11](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.10...v1.9.0-dev.11) (2024-05-15)

### Bug Fixes

* **YouTube - Hide video action buttons:** Updated path filter ([b74e544](b74e54481a))
2024-05-15 16:25:21 +00:00
LisoUseInAIKyrios
b74e54481a fix(YouTube - Hide video action buttons): Updated path filter 2024-05-15 20:21:46 +04:00
semantic-release-bot
a14567df27 chore(release): 1.9.0-dev.10 [skip ci]
# [1.9.0-dev.10](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.9...v1.9.0-dev.10) (2024-05-11)

### Bug Fixes

* **YouTube - Restore old video quality menu:** Show advanced quality menu in Shorts quality flyout ([#632](https://github.com/ReVanced/revanced-integrations/issues/632)) ([77c9825](77c9825b82))
2024-05-11 20:33:16 +00:00
LisoUseInAIKyrios
77c9825b82 fix(YouTube - Restore old video quality menu): Show advanced quality menu in Shorts quality flyout (#632) 2024-05-12 00:30:10 +04:00
semantic-release-bot
44dea1af4e chore(release): 1.9.0-dev.9 [skip ci]
# [1.9.0-dev.9](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.8...v1.9.0-dev.9) (2024-05-08)

### Bug Fixes

* **YouTube - SponsorBlock:** Show correct segment times if video is over 24 hours in length ([#630](https://github.com/ReVanced/revanced-integrations/issues/630)) ([81251f9](81251f9a34))
2024-05-08 22:30:31 +00:00
LisoUseInAIKyrios
81251f9a34 fix(YouTube - SponsorBlock): Show correct segment times if video is over 24 hours in length (#630) 2024-05-09 02:27:07 +04:00
semantic-release-bot
7d102e7a69 chore(release): 1.9.0-dev.8 [skip ci]
# [1.9.0-dev.8](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.7...v1.9.0-dev.8) (2024-05-06)

### Bug Fixes

* **YouTube - Player flyout menu:** Remove obsolete `Hide report menu` ([9e9d969](9e9d96910c))
2024-05-06 20:51:16 +00:00
LisoUseInAIKyrios
9e9d96910c fix(YouTube - Player flyout menu): Remove obsolete Hide report menu 2024-05-07 00:48:12 +04:00
semantic-release-bot
a7ea203fad chore(release): 1.9.0-dev.7 [skip ci]
# [1.9.0-dev.7](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.6...v1.9.0-dev.7) (2024-05-02)

### Bug Fixes

* Use Java instead of Kotlin Regex to improve reliability ([#628](https://github.com/ReVanced/revanced-integrations/issues/628)) ([44c3cc4](44c3cc4636))
2024-05-02 19:58:35 +00:00
benjy3gg
44c3cc4636 fix: Use Java instead of Kotlin Regex to improve reliability (#628)
If Kotlin Regex would be used, then apps need to have the Kotlin libraries for Regex to work which isn't always the case.
2024-05-02 21:55:28 +02:00
semantic-release-bot
07fe660037 chore(release): 1.9.0-dev.6 [skip ci]
# [1.9.0-dev.6](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.5...v1.9.0-dev.6) (2024-04-29)

### Bug Fixes

* **YouTube - Hide keyword content:** Filter Shorts found in horizontal shelves ([75fa579](75fa5797f7))
2024-04-29 19:32:37 +00:00
LisoUseInAIKyrios
75fa5797f7 fix(YouTube - Hide keyword content): Filter Shorts found in horizontal shelves 2024-04-29 23:29:36 +04:00
semantic-release-bot
0d5c6e87d2 chore(release): 1.9.0-dev.5 [skip ci]
# [1.9.0-dev.5](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.4...v1.9.0-dev.5) (2024-04-28)

### Bug Fixes

* **YouTube - Hide Shorts components:** Hide Shorts in search result horizontal shelves ([#625](https://github.com/ReVanced/revanced-integrations/issues/625)) ([656ca17](656ca17ffc))
2024-04-28 18:02:59 +00:00
LisoUseInAIKyrios
656ca17ffc fix(YouTube - Hide Shorts components): Hide Shorts in search result horizontal shelves (#625) 2024-04-28 21:59:22 +04:00
semantic-release-bot
973e51ea1b chore(release): 1.9.0-dev.4 [skip ci]
# [1.9.0-dev.4](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.3...v1.9.0-dev.4) (2024-04-23)

### Bug Fixes

* **YouTube - Settings:** Use same background color for about screen if Theme patch is not included ([4164ed3](4164ed3486))
2024-04-23 21:08:02 +00:00
LisoUseInAIKyrios
4164ed3486 fix(YouTube - Settings): Use same background color for about screen if Theme patch is not included 2024-04-24 01:04:51 +04:00
semantic-release-bot
5ed4292e2e chore(release): 1.9.0-dev.3 [skip ci]
# [1.9.0-dev.3](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.2...v1.9.0-dev.3) (2024-04-23)

### Features

* **YouTube - Hide ads:** Add option to hide the 'Visit store' button on channel pages ([#622](https://github.com/ReVanced/revanced-integrations/issues/622)) ([9de566c](9de566ca02))
2024-04-23 17:34:30 +00:00
oSumAtrIX
9de566ca02 feat(YouTube - Hide ads): Add option to hide the 'Visit store' button on channel pages (#622) 2024-04-23 19:31:27 +02:00
semantic-release-bot
a9da29926a chore(release): 1.9.0-dev.2 [skip ci]
# [1.9.0-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.1...v1.9.0-dev.2) (2024-04-23)

### Features

* **YouTube - Comments:** Add option to hide timestamp and emoji buttons ([#621](https://github.com/ReVanced/revanced-integrations/issues/621)) ([6e9e122](6e9e12235a))
2024-04-23 17:06:41 +00:00
LisoUseInAIKyrios
6e9e12235a feat(YouTube - Comments): Add option to hide timestamp and emoji buttons (#621) 2024-04-23 21:03:00 +04:00
oSumAtrIX
e86d73c8af chore: Bump dependencies 2024-04-23 18:47:12 +02:00
semantic-release-bot
89c534e95d chore(release): 1.9.0-dev.1 [skip ci]
# [1.9.0-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.8.0...v1.9.0-dev.1) (2024-04-21)

### Bug Fixes

* **YouTube - Hide video action buttons:** Remove obsolete `hide Shop button` ([#618](https://github.com/ReVanced/revanced-integrations/issues/618)) ([a78c3ff](a78c3ff09e))

### Features

* **YouTube - Hide Shorts components:** Hide like / dislike button in video ads ([#619](https://github.com/ReVanced/revanced-integrations/issues/619)) ([b2b6b8c](b2b6b8c3d7))
2024-04-21 15:00:33 +00:00
LisoUseInAIKyrios
a78c3ff09e fix(YouTube - Hide video action buttons): Remove obsolete hide Shop button (#618) 2024-04-21 18:57:22 +04:00
LisoUseInAIKyrios
b2b6b8c3d7 feat(YouTube - Hide Shorts components): Hide like / dislike button in video ads (#619) 2024-04-21 18:55:19 +04:00
semantic-release-bot
4e64b690ab chore(release): 1.8.0 [skip ci]
# [1.8.0](https://github.com/ReVanced/revanced-integrations/compare/v1.7.0...v1.8.0) (2024-04-21)

### Bug Fixes

* Use correct hide playables setting key ([a2b1543](a2b15433cf))
* **YouTube - Disable suggested video end screen:** Require app restart ([38ae5aa](38ae5aac84))
* **YouTube - GmsCore support:** Prompt to disable battery optimizations, if not done already ([#601](https://github.com/ReVanced/revanced-integrations/issues/601)) ([c5c9de5](c5c9de500d))
* **YouTube - Hide ads:** rename `Hide paid content` to `Hide paid promotion label` ([#616](https://github.com/ReVanced/revanced-integrations/issues/616)) ([13dc172](13dc17288d))
* **YouTube - Hide keyword content:** Correctly hide content in the subscription tab ([c3bfa77](c3bfa77d62))
* **YouTube - Hide layout components:** Do not hide playlist shelf in library ([c5d38a7](c5d38a7e07))
* **YouTube - Hide layout components:** Hide horizontal tile shelves ([ba30869](ba308690cf))
* **YouTube - Hide load more button:** Include patch with `Hide layout components`, and hide button only in search feed  ([#600](https://github.com/ReVanced/revanced-integrations/issues/600)) ([c420891](c420891e3e))
* **YouTube - Hide Shorts components:** Correctly hide Shorts if navigation tab is changed using device back button ([#611](https://github.com/ReVanced/revanced-integrations/issues/611)) ([ffc3437](ffc3437843))
* **YouTube - Hide Shorts components:** Do not show Shorts suggestions in video player, if all hide Shorts options are enabled ([#613](https://github.com/ReVanced/revanced-integrations/issues/613)) ([c132670](c132670400))
* **YouTube - Hide Shorts components:** Hide paid promotion label ([3ce100c](3ce100ced5))
* **YouTube - Hide Shorts components:** Hide subscribe button in channel bar ([9938bbf](9938bbf0de))
* **YouTube - Hide Shorts components:** Hide suggested actions in incognito mode ([bba421d](bba421ddb6))
* **YouTube - Navigation bar hook:** Handle if search is active but hidden behind a maximized player ([cbccb46](cbccb46e63))
* **YouTube - Player flyout menu:** Add hide Lock screen menu ([#609](https://github.com/ReVanced/revanced-integrations/issues/609)) ([b2fe105](b2fe105199))
* **YouTube - Return YouTube Dislike:** Do not clip compact text when not using English ([eeaeb49](eeaeb49f2a))
* **YouTube - Return YouTube Dislike:** Do not show error toast if API success response contains new lines ([#612](https://github.com/ReVanced/revanced-integrations/issues/612)) ([9108205](9108205445))
* **YouTube - Settings:** Do not show a toast if migrating old unknown settings ([f2e15a2](f2e15a2e1f))
* **YouTube - Spoof device dimensions:** Warn about potential performance issues ([#617](https://github.com/ReVanced/revanced-integrations/issues/617)) ([786ac9d](786ac9d2b7))

### Features

* **YouTube - Hide layout components:** Add option to hide horizontal shelves ([#598](https://github.com/ReVanced/revanced-integrations/issues/598)) ([fedace0](fedace02fd))
* **YouTube - Hide layout components:** Hide playables ([d6cd550](d6cd550880))
* **YouTube - Hide Shorts components:** Hide `Shop`, `Location` and `Save sound to playlist` buttons ([#614](https://github.com/ReVanced/revanced-integrations/issues/614)) ([acfa3c9](acfa3c9886))
* **YouTube - Hide Shorts components:** Hide tagged products, hide search suggestions ([#615](https://github.com/ReVanced/revanced-integrations/issues/615)) ([0586fb7](0586fb70e3))
* **YouTube - Swipe controls:** Save and restore brightness and add auto-brightness toggle ([#610](https://github.com/ReVanced/revanced-integrations/issues/610)) ([1c8e2b2](1c8e2b2941))
* **YouTube:** Add 'About' preference to settings menu ([#608](https://github.com/ReVanced/revanced-integrations/issues/608)) ([b8f260e](b8f260ebd3))
2024-04-21 01:50:25 +00:00
oSumAtrIX
d03edb2750 chore: Merge branch dev to main (#603) 2024-04-21 03:47:15 +02:00
semantic-release-bot
d06b94cbe6 chore(release): 1.8.0-dev.20 [skip ci]
# [1.8.0-dev.20](https://github.com/ReVanced/revanced-integrations/compare/v1.8.0-dev.19...v1.8.0-dev.20) (2024-04-21)

### Features

* **YouTube - Swipe controls:** Save and restore brightness and add auto-brightness toggle ([#610](https://github.com/ReVanced/revanced-integrations/issues/610)) ([1c8e2b2](1c8e2b2941))
2024-04-21 00:02:28 +00:00
MarcaD
1c8e2b2941 feat(YouTube - Swipe controls): Save and restore brightness and add auto-brightness toggle (#610)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-04-21 01:59:23 +02:00
100 changed files with 6926 additions and 2729 deletions

View File

@@ -70,7 +70,7 @@ body:
Before creating a new bug report, please keep the following in mind:
- **Do not submit a duplicate bug report**: You can review existing bug reports [here](https://github.com/ReVanced/revanced-integrations/labels/Bug%20report).
- **Do not submit a duplicate bug report**: Search for existing bug reports [here](https://github.com/ReVanced/revanced-integrations/issues?q=label%3A%22Bug+report%22).
- **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:
@@ -101,7 +101,7 @@ body:
label: Acknowledgements
description: Your bug report will be closed if you don't follow the checklist below.
options:
- label: This issue is not a duplicate of an existing bug report.
- 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

View File

@@ -70,7 +70,7 @@ body:
Before creating a new feature request, please keep the following in mind:
- **Do not submit a duplicate feature request**: You can review existing feature requests [here](https://github.com/ReVanced/revanced-integrations/labels/Feature%20request).
- **Do not submit a duplicate feature request**: Search for existing feature requests [here](https://github.com/ReVanced/revanced-integrations/issues?q=label%3A%22Feature+request%22).
- **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:
@@ -97,7 +97,7 @@ body:
label: Acknowledgements
description: Your feature request will be closed if you don't follow the checklist below.
options:
- label: This issue is not a duplicate of an existing feature request.
- 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

View File

@@ -25,7 +25,7 @@ jobs:
pr_body: |
This pull request will ${{ env.MESSAGE }}.
## Dependencies before merge
## Before merging this PR
- [ ] https://github.com/revanced/revanced-patches
- [ ] Remember about https://github.com/revanced/revanced-patches
pr_draft: true

View File

@@ -10,6 +10,8 @@ on:
jobs:
release:
name: Release
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- name: Checkout
@@ -45,9 +47,9 @@ jobs:
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.GPG_PASSPHRASE }}
fingerprint: ${{ env.GPG_FINGERPRINT }}
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

@@ -7,7 +7,13 @@
}
],
"plugins": [
"@semantic-release/commit-analyzer",
[
"@semantic-release/commit-analyzer", {
"releaseRules": [
{ "type": "build", "scope": "Needs bump", "release": "patch" }
]
}
],
"@semantic-release/release-notes-generator",
"@semantic-release/changelog",
"gradle-semantic-release-plugin",
@@ -17,7 +23,8 @@
"assets": [
"CHANGELOG.md",
"gradle.properties"
]
],
"message": "chore: Release v${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
}
],
[

File diff suppressed because it is too large Load Diff

View File

@@ -2,6 +2,7 @@ plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin)
publishing
signing
}
android {
@@ -53,28 +54,27 @@ dependencies {
compileOnly(project(":stub"))
}
tasks {
// Because the signing plugin doesn't support signing APKs, do it manually.
register("sign") {
group = "signing"
dependsOn(build)
tasks {
val assembleReleaseSignApk by registering {
dependsOn("assembleRelease")
val apk = layout.buildDirectory.file("outputs/apk/release/${rootProject.name}-$version.apk")
inputs.file(apk).withPropertyName("input")
outputs.file(apk.map { it.asFile.resolveSibling("${it.asFile.name}.asc") })
doLast {
val outputDirectory = layout.buildDirectory.dir("outputs/apk/release").get().asFile
val integrationsApk = outputDirectory.resolve("${rootProject.name}-$version.apk")
org.gradle.security.internal.gnupg.GnupgSignatoryFactory().createSignatory(project).sign(
integrationsApk.inputStream(),
outputDirectory.resolve("${integrationsApk.name}.asc").outputStream(),
)
signing {
useGpgCmd()
sign(*inputs.files.files.toTypedArray())
}
}
}
// Needed by gradle-semantic-release-plugin.
// Tracking: https://github.com/KengoTODA/gradle-semantic-release-plugin/issues/435
// Tracking: https://github.com/KengoTODA/gradle-semantic-release-plugin/issues/435.
publish {
dependsOn(build)
dependsOn("sign")
dependsOn(assembleReleaseSignApk)
}
}

View File

@@ -0,0 +1,24 @@
package app.revanced.integrations.boostforreddit;
import com.rubenmayayo.reddit.ui.activities.WebViewActivity;
import app.revanced.integrations.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

@@ -24,6 +24,7 @@ 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
@@ -53,18 +54,15 @@ public class GmsCoreSupport {
String dialogMessageRef,
String positiveButtonStringRef,
DialogInterface.OnClickListener onPositiveClickListener) {
// Use a delay to allow the activity to finish initializing.
// Otherwise, if device is in dark mode the dialog is shown with wrong color scheme.
Utils.runOnMainThreadDelayed(() -> {
new AlertDialog.Builder(context)
.setIconAttribute(android.R.attr.alertDialogIcon)
.setTitle(str("gms_core_dialog_title"))
.setMessage(str(dialogMessageRef))
.setPositiveButton(str(positiveButtonStringRef), onPositiveClickListener)
// Allow using back button to skip the action, just in case the check can never be satisfied.
.setCancelable(true)
.show();
}, 100);
// 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);
}
/**
@@ -73,6 +71,21 @@ public class GmsCoreSupport {
@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();

View File

@@ -1,24 +1,21 @@
package app.revanced.integrations.shared;
import static app.revanced.integrations.shared.settings.BaseSettings.DEBUG;
import static app.revanced.integrations.shared.settings.BaseSettings.DEBUG_STACKTRACE;
import static app.revanced.integrations.shared.settings.BaseSettings.DEBUG_TOAST_ON_ERROR;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import app.revanced.integrations.shared.settings.BaseSettings;
import java.io.PrintWriter;
import java.io.StringWriter;
import app.revanced.integrations.shared.settings.BaseSettings;
import static app.revanced.integrations.shared.settings.BaseSettings.*;
public class Logger {
/**
* Log messages using lambdas.
*/
@FunctionalInterface
public interface LogMessage {
@NonNull
String buildMessageString();
@@ -59,19 +56,33 @@ public class Logger {
* 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()) {
var messageString = message.buildMessageString();
String logMessage = message.buildMessageString();
String logTag = REVANCED_LOG_PREFIX + message.findOuterClassSimpleName();
if (DEBUG_STACKTRACE.get()) {
var builder = new StringBuilder(messageString);
var builder = new StringBuilder(logMessage);
var sw = new StringWriter();
new Throwable().printStackTrace(new PrintWriter(sw));
builder.append('\n').append(sw);
messageString = builder.toString();
logMessage = builder.toString();
}
Log.d(REVANCED_LOG_PREFIX + message.findOuterClassSimpleName(), messageString);
if (ex == null) {
Log.d(logTag, logMessage);
} else {
Log.d(logTag, logMessage, ex);
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,164 @@
package app.revanced.integrations.shared.checks;
import static android.text.Html.FROM_HTML_MODE_COMPACT;
import static app.revanced.integrations.shared.StringRef.str;
import static app.revanced.integrations.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.integrations.shared.Logger;
import app.revanced.integrations.shared.Utils;
import app.revanced.integrations.youtube.settings.Settings;
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 Settings#CHECK_ENVIRONMENT_WARNINGS_ISSUED}
* set to -1.
*/
static boolean debugAlwaysShowWarning() {
final boolean alwaysShowWarning = Settings.CHECK_ENVIRONMENT_WARNINGS_ISSUED.get() < 0;
if (alwaysShowWarning) {
Logger.printInfo(() -> "Debug forcing environment check warning to show");
}
return alwaysShowWarning;
}
static boolean shouldRun() {
return Settings.CHECK_ENVIRONMENT_WARNINGS_ISSUED.get()
< NUMBER_OF_TIMES_TO_IGNORE_WARNING_BEFORE_DISABLING;
}
static void disableForever() {
Logger.printInfo(() -> "Environment checks disabled forever");
Settings.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, Settings.CHECK_ENVIRONMENT_WARNINGS_ISSUED.get());
Settings.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,28 @@
package app.revanced.integrations.shared.checks;
// Fields are set by the patch. Do not modify.
// Fields are not final, because the compiler is inlining them.
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.integrations.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.integrations.shared.Logger;
import app.revanced.integrations.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.integrations.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.integrations.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

@@ -2,13 +2,15 @@ package app.revanced.integrations.shared.settings;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import app.revanced.integrations.shared.Logger;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Locale;
import java.util.Objects;
import app.revanced.integrations.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
@@ -98,4 +100,18 @@ public class EnumSetting<T extends Enum<?>> extends Setting<T> {
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

@@ -1,5 +1,6 @@
package app.revanced.integrations.shared.settings.preference;
import static app.revanced.integrations.shared.StringRef.sf;
import static app.revanced.integrations.shared.StringRef.str;
import static app.revanced.integrations.youtube.requests.Route.Method.GET;
@@ -71,7 +72,7 @@ public class ReVancedAboutPreference extends Preference {
return Color.BLACK;
}
private String createDialogHtml(ReVancedSocialLink[] socialLinks) {
private String createDialogHtml(WebLink[] socialLinks) {
final boolean isNetworkConnected = Utils.isNetworkConnected();
StringBuilder builder = new StringBuilder();
@@ -122,7 +123,7 @@ public class ReVancedAboutPreference extends Preference {
.append("</h2>");
builder.append("<div>");
for (ReVancedSocialLink social : socialLinks) {
for (WebLink social : socialLinks) {
builder.append("<div style=\"margin-bottom: 20px;\">");
builder.append(String.format("<a href=\"%s\">%s</a>", social.url, social.name));
builder.append("</div>");
@@ -151,7 +152,7 @@ public class ReVancedAboutPreference extends Preference {
}
private void fetchLinksAndShowDialog(@Nullable ProgressDialog progress) {
ReVancedSocialLink[] socialLinks = SocialLinksRoutes.fetchSocialLinks();
WebLink[] socialLinks = SocialLinksRoutes.fetchSocialLinks();
String htmlDialog = createDialogHtml(socialLinks);
Utils.runOnMainThreadNowOrLater(() -> {
@@ -221,19 +222,19 @@ class WebViewDialog extends Dialog {
}
}
class ReVancedSocialLink {
class WebLink {
final boolean preferred;
final String name;
final String url;
ReVancedSocialLink(JSONObject json) throws JSONException {
WebLink(JSONObject json) throws JSONException {
this(json.getBoolean("preferred"),
json.getString("name"),
json.getString("url")
);
}
ReVancedSocialLink(boolean preferred, String name, String url) {
WebLink(boolean preferred, String name, String url) {
this.preferred = preferred;
this.name = name;
this.url = url;
@@ -251,24 +252,33 @@ class ReVancedSocialLink {
}
class SocialLinksRoutes {
/**
* Simple link to the website donate page,
* rather than fetching and parsing the donation links using the API.
*/
public static final WebLink DONATE_LINK = new WebLink(true,
sf("revanced_settings_about_links_donate").toString(),
"https://revanced.app/donate");
/**
* Links to use if fetch links api call fails.
*/
private static final ReVancedSocialLink[] NO_CONNECTION_STATIC_LINKS = {
new ReVancedSocialLink(true, "ReVanced.app", "https://revanced.app")
private static final WebLink[] NO_CONNECTION_STATIC_LINKS = {
new WebLink(true, "ReVanced.app", "https://revanced.app"),
DONATE_LINK,
};
private static final String SOCIAL_LINKS_PROVIDER = "https://api.revanced.app/v2";
private static final Route.CompiledRoute GET_SOCIAL = new Route(GET, "/socials").compile();
@Nullable
private static volatile ReVancedSocialLink[] fetchedLinks;
private static volatile WebLink[] fetchedLinks;
static boolean hasFetchedLinks() {
return fetchedLinks != null;
}
static ReVancedSocialLink[] fetchSocialLinks() {
static WebLink[] fetchSocialLinks() {
try {
if (hasFetchedLinks()) return fetchedLinks;
@@ -290,14 +300,17 @@ class SocialLinksRoutes {
JSONObject json = Requester.parseJSONObjectAndDisconnect(connection);
JSONArray socials = json.getJSONArray("socials");
List<ReVancedSocialLink> links = new ArrayList<>();
List<WebLink> links = new ArrayList<>();
links.add(DONATE_LINK); // Show donate link first.
for (int i = 0, length = socials.length(); i < length; i++) {
ReVancedSocialLink link = new ReVancedSocialLink(socials.getJSONObject(i));
WebLink link = new WebLink(socials.getJSONObject(i));
links.add(link);
}
Logger.printDebug(() -> "links: " + links);
return fetchedLinks = links.toArray(new ReVancedSocialLink[0]);
return fetchedLinks = links.toArray(new WebLink[0]);
} catch (SocketTimeoutException ex) {
Logger.printInfo(() -> "Could not fetch social links", ex); // No toast.

View File

@@ -1,42 +1,24 @@
package app.revanced.integrations.syncforreddit;
import android.os.StrictMode;
import app.revanced.integrations.shared.Logger;
import com.laurencedawson.reddit_sync.ui.activities.WebViewActivity;
import java.net.HttpURLConnection;
import java.net.URL;
import app.revanced.integrations.shared.fixes.slink.BaseFixSLinksPatch;
public final class FixSLinksPatch {
public static String resolveSLink(String link) {
if (link.matches(".*reddit\\.com/r/[^/]+/s/[^/]+")) {
Logger.printInfo(() -> "Resolving " + link);
try {
URL url = new URL(link);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setInstanceFollowRedirects(false);
connection.setRequestMethod("HEAD");
/** @noinspection unused*/
public class FixSLinksPatch extends BaseFixSLinksPatch {
static {
INSTANCE = new FixSLinksPatch();
}
// Disable strict mode in order to allow network access on the main thread.
// This is not ideal, but it's the easiest solution for now.
final var currentPolicy = StrictMode.getThreadPolicy();
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
private FixSLinksPatch() {
webViewActivityClass = WebViewActivity.class;
}
connection.connect();
String location = connection.getHeaderField("location");
connection.disconnect();
public static boolean patchResolveSLink(String link) {
return INSTANCE.resolveSLink(link);
}
// Restore the original strict mode policy.
StrictMode.setThreadPolicy(currentPolicy);
Logger.printInfo(() -> "Resolved " + link + " -> " + location);
return location;
} catch (Exception e) {
Logger.printException(() -> "Failed to resolve " + link, e);
}
}
return link;
public static void patchSetAccessToken(String accessToken) {
INSTANCE.setAccessToken(accessToken);
}
}

View File

@@ -6,7 +6,7 @@ import app.revanced.integrations.tiktok.settings.Settings;
@SuppressWarnings("unused")
public class SpoofSimPatch {
private static final Boolean ENABLED = Settings.SIM_SPOOF.get();
private static final boolean ENABLED = Settings.SIM_SPOOF.get();
public static String getCountryIso(String value) {
if (ENABLED) {

View File

@@ -16,6 +16,7 @@ public class ThemeHelper {
/**
* Injection point.
*/
@SuppressWarnings("unused")
public static void setTheme(Enum<?> value) {
final int newOrdinalValue = value.ordinal();
if (themeValue != newOrdinalValue) {
@@ -38,14 +39,15 @@ public class ThemeHelper {
/**
* Injection point.
*/
@SuppressWarnings("SameReturnValue")
private static String darkThemeResourceName() {
// Value is changed by Theme patch, if included.
return "@android:color/black";
return "@color/yt_black3";
}
/**
* @return The dark theme color as specified by the Theme patch (if included),
* or the Android color of black.
* or the dark mode background color unpatched YT uses.
*/
public static int getDarkThemeColor() {
if (darkThemeColor == null) {
@@ -57,14 +59,15 @@ public class ThemeHelper {
/**
* Injection point.
*/
@SuppressWarnings("SameReturnValue")
private static String lightThemeResourceName() {
// Value is changed by Theme patch, if included.
return "@android:color/white";
return "@color/yt_white1";
}
/**
* @return The light theme color as specified by the Theme patch (if included),
* or the Android color of white.
* or the non dark mode background color unpatched YT uses.
*/
public static int getLightThemeColor() {
if (lightThemeColor == null) {

View File

@@ -380,7 +380,7 @@ public abstract class TrieSearch<T> {
throw new IllegalArgumentException("endIndex: " + endIndex
+ " is greater than texToSearchLength: " + textToSearchLength);
}
if (patterns.size() == 0) {
if (patterns.isEmpty()) {
return false; // No patterns were added.
}
for (int i = startIndex; i < endIndex; i++) {
@@ -393,7 +393,7 @@ public abstract class TrieSearch<T> {
* @return Estimated memory size (in kilobytes) of this instance.
*/
public int getEstimatedMemorySize() {
if (patterns.size() == 0) {
if (patterns.isEmpty()) {
return 0;
}
// Assume the device has less than 32GB of ram (and can use pointer compression),

View File

@@ -190,16 +190,17 @@ public final class AlternativeThumbnailsPatch {
* Build the alternative thumbnail url using YouTube provided still video captures.
*
* @param decodedUrl Decoded original thumbnail request url.
* @return The alternative thumbnail url, or the original url. Both without tracking parameters.
* @return The alternative thumbnail url, or if not available NULL.
*/
@NonNull
private static String buildYoutubeVideoStillURL(@NonNull DecodedThumbnailUrl decodedUrl,
@Nullable
private static String buildYouTubeVideoStillURL(@NonNull DecodedThumbnailUrl decodedUrl,
@NonNull ThumbnailQuality qualityToUse) {
String sanitizedReplacement = decodedUrl.createStillsUrl(qualityToUse, false);
if (VerifiedQualities.verifyAltThumbnailExist(decodedUrl.videoId, qualityToUse, sanitizedReplacement)) {
return sanitizedReplacement;
}
return decodedUrl.sanitizedUrl;
return null;
}
/**
@@ -284,14 +285,21 @@ public final class AlternativeThumbnailsPatch {
final boolean includeTracking;
if (option.useDeArrow && canUseDeArrowAPI()) {
includeTracking = false; // Do not include view tracking parameters with API call.
final String fallbackUrl = option.useStillImages
? buildYoutubeVideoStillURL(decodedUrl, qualityToUse)
: decodedUrl.sanitizedUrl;
String fallbackUrl = null;
if (option.useStillImages) {
fallbackUrl = buildYouTubeVideoStillURL(decodedUrl, qualityToUse);
}
if (fallbackUrl == null) {
fallbackUrl = decodedUrl.sanitizedUrl;
}
sanitizedReplacementUrl = buildDeArrowThumbnailURL(decodedUrl.videoId, fallbackUrl);
} else if (option.useStillImages) {
includeTracking = true; // Include view tracking parameters if present.
sanitizedReplacementUrl = buildYoutubeVideoStillURL(decodedUrl, qualityToUse);
sanitizedReplacementUrl = buildYouTubeVideoStillURL(decodedUrl, qualityToUse);
if (sanitizedReplacementUrl == null) {
return originalUrl; // Still capture is not available. Return the untouched original url.
}
} else {
return originalUrl; // Recently experienced DeArrow failure and video stills are not enabled.
}
@@ -345,7 +353,7 @@ public final class AlternativeThumbnailsPatch {
return; // Not a thumbnail.
}
Logger.printDebug(() -> "handleCronetSuccess, image not available: " + url);
Logger.printDebug(() -> "handleCronetSuccess, image not available: " + decodedUrl.sanitizedUrl);
ThumbnailQuality quality = ThumbnailQuality.altImageNameToQuality(decodedUrl.imageQuality);
if (quality == null) {
@@ -627,14 +635,17 @@ public final class AlternativeThumbnailsPatch {
* YouTube video thumbnail url, decoded into it's relevant parts.
*/
private static class DecodedThumbnailUrl {
/**
* YouTube thumbnail URL prefix. Can be '/vi/' or '/vi_webp/'
*/
private static final String YOUTUBE_THUMBNAIL_PREFIX = "https://i.ytimg.com/vi";
private static final String YOUTUBE_THUMBNAIL_DOMAIN = "https://i.ytimg.com/";
@Nullable
static DecodedThumbnailUrl decodeImageUrl(String url) {
final int videoIdStartIndex = url.indexOf('/', YOUTUBE_THUMBNAIL_PREFIX.length()) + 1;
final int urlPathStartIndex = url.indexOf('/', "https://".length()) + 1;
if (urlPathStartIndex <= 0) return null;
final int urlPathEndIndex = url.indexOf('/', urlPathStartIndex);
if (urlPathEndIndex < 0) return null;
final int videoIdStartIndex = url.indexOf('/', urlPathEndIndex) + 1;
if (videoIdStartIndex <= 0) return null;
final int videoIdEndIndex = url.indexOf('/', videoIdStartIndex);
@@ -647,15 +658,15 @@ public final class AlternativeThumbnailsPatch {
int imageExtensionEndIndex = url.indexOf('?', imageSizeEndIndex);
if (imageExtensionEndIndex < 0) imageExtensionEndIndex = url.length();
return new DecodedThumbnailUrl(url, videoIdStartIndex, videoIdEndIndex,
return new DecodedThumbnailUrl(url, urlPathStartIndex, urlPathEndIndex, videoIdStartIndex, videoIdEndIndex,
imageSizeStartIndex, imageSizeEndIndex, imageExtensionEndIndex);
}
final String originalFullUrl;
/** Full usable url, but stripped of any tracking information. */
final String sanitizedUrl;
/** Url up to the video ID. */
final String urlPrefix;
/** Url path, such as 'vi' or 'vi_webp' */
final String urlPath;
final String videoId;
/** Quality, such as hq720 or sddefault. */
final String imageQuality;
@@ -664,11 +675,11 @@ public final class AlternativeThumbnailsPatch {
/** User view tracking parameters, only present on some images. */
final String viewTrackingParameters;
DecodedThumbnailUrl(String fullUrl, int videoIdStartIndex, int videoIdEndIndex,
DecodedThumbnailUrl(String fullUrl, int urlPathStartIndex, int urlPathEndIndex, int videoIdStartIndex, int videoIdEndIndex,
int imageSizeStartIndex, int imageSizeEndIndex, int imageExtensionEndIndex) {
originalFullUrl = fullUrl;
sanitizedUrl = fullUrl.substring(0, imageExtensionEndIndex);
urlPrefix = fullUrl.substring(0, videoIdStartIndex);
urlPath = fullUrl.substring(urlPathStartIndex, urlPathEndIndex);
videoId = fullUrl.substring(videoIdStartIndex, videoIdEndIndex);
imageQuality = fullUrl.substring(imageSizeStartIndex, imageSizeEndIndex);
imageExtension = fullUrl.substring(imageSizeEndIndex + 1, imageExtensionEndIndex);
@@ -681,9 +692,12 @@ public final class AlternativeThumbnailsPatch {
// Images could be upgraded to webp if they are not already, but this fails quite often,
// especially for new videos uploaded in the last hour.
// And even if alt webp images do exist, sometimes they can load much slower than the original jpg alt images.
// (as much as 4x slower has been observed, despite the alt webp image being a smaller file).
// (as much as 4x slower network response has been observed, despite the alt webp image being a smaller file).
StringBuilder builder = new StringBuilder(originalFullUrl.length() + 2);
builder.append(urlPrefix);
// Many different "i.ytimage.com" domains exist such as "i9.ytimg.com",
// but still captures are frequently not available on the other domains (especially newly uploaded videos).
// So always use the primary domain for a higher success rate.
builder.append(YOUTUBE_THUMBNAIL_DOMAIN).append(urlPath).append('/');
builder.append(videoId).append('/');
builder.append(qualityToUse.getAltImageNameToUse());
builder.append('.').append(imageExtension);

View File

@@ -3,7 +3,7 @@ package app.revanced.integrations.youtube.patches;
import app.revanced.integrations.youtube.shared.PlayerType;
@SuppressWarnings("unused")
public class MinimizedPlaybackPatch {
public class BackgroundPlaybackPatch {
/**
* Injection point.
@@ -35,7 +35,7 @@ public class MinimizedPlaybackPatch {
/**
* Injection point.
*/
public static boolean overrideMinimizedPlaybackAvailable() {
public static boolean overrideBackgroundPlaybackAvailable() {
// This could be done entirely in the patch,
// but having a unique method to search for makes manually inspecting the patched apk much easier.
return true;

View File

@@ -0,0 +1,46 @@
package app.revanced.integrations.youtube.patches;
import static app.revanced.integrations.youtube.settings.Settings.BYPASS_IMAGE_REGION_RESTRICTIONS;
import java.util.regex.Pattern;
import app.revanced.integrations.shared.Logger;
import app.revanced.integrations.youtube.settings.Settings;
@SuppressWarnings("unused")
public final class BypassImageRegionRestrictionsPatch {
private static final boolean BYPASS_IMAGE_REGION_RESTRICTIONS_ENABLED = BYPASS_IMAGE_REGION_RESTRICTIONS.get();
private static final String REPLACEMENT_IMAGE_DOMAIN = "https://yt4.ggpht.com";
/**
* YouTube static images domain. Includes user and channel avatar images and community post images.
*/
private static final Pattern YOUTUBE_STATIC_IMAGE_DOMAIN_PATTERN
= Pattern.compile("^https://(yt3|lh[3-6]|play-lh)\\.(ggpht|googleusercontent)\\.com");
/**
* Injection point. Called off the main thread and by multiple threads at the same time.
*
* @param originalUrl Image url for all image urls loaded.
*/
public static String overrideImageURL(String originalUrl) {
try {
if (BYPASS_IMAGE_REGION_RESTRICTIONS_ENABLED) {
String replacement = YOUTUBE_STATIC_IMAGE_DOMAIN_PATTERN
.matcher(originalUrl).replaceFirst(REPLACEMENT_IMAGE_DOMAIN);
if (Settings.DEBUG.get() && !replacement.equals(originalUrl)) {
Logger.printDebug(() -> "Replaced: '" + originalUrl + "' with: '" + replacement + "'");
}
return replacement;
}
} catch (Exception ex) {
Logger.printException(() -> "overrideImageURL failure", ex);
}
return originalUrl;
}
}

View File

@@ -0,0 +1,84 @@
package app.revanced.integrations.youtube.patches;
import static app.revanced.integrations.shared.StringRef.str;
import android.app.Activity;
import android.text.Html;
import java.net.InetAddress;
import java.net.UnknownHostException;
import app.revanced.integrations.shared.Logger;
import app.revanced.integrations.shared.Utils;
import app.revanced.integrations.youtube.settings.Settings;
@SuppressWarnings("unused")
public class CheckWatchHistoryDomainNameResolutionPatch {
private static final String HISTORY_TRACKING_ENDPOINT = "s.youtube.com";
private static final String SINKHOLE_IPV4 = "0.0.0.0";
private static final String SINKHOLE_IPV6 = "::";
private static boolean domainResolvesToValidIP(String host) {
try {
InetAddress address = InetAddress.getByName(host);
String hostAddress = address.getHostAddress();
if (address.isLoopbackAddress()) {
Logger.printDebug(() -> host + " resolves to localhost");
} else if (SINKHOLE_IPV4.equals(hostAddress) || SINKHOLE_IPV6.equals(hostAddress)) {
Logger.printDebug(() -> host + " resolves to sinkhole ip");
} else {
return true; // Domain is not blocked.
}
} catch (UnknownHostException e) {
Logger.printDebug(() -> host + " failed to resolve");
}
return false;
}
/**
* Injection point.
*
* Checks if s.youtube.com is blacklisted and playback history will fail to work.
*/
public static void checkDnsResolver(Activity context) {
if (!Utils.isNetworkConnected() || !Settings.CHECK_WATCH_HISTORY_DOMAIN_NAME.get()) return;
Utils.runOnBackgroundThread(() -> {
try {
// If the user has a flaky DNS server, or they just lost internet connectivity
// and the isNetworkConnected() check has not detected it yet (it can take a few
// seconds after losing connection), then the history tracking endpoint will
// show a resolving error but it's actually an internet connection problem.
//
// Prevent this false positive by verify youtube.com resolves.
// If youtube.com does not resolve, then it's not a watch history domain resolving error
// because the entire app will not work since no domains are resolving.
if (domainResolvesToValidIP(HISTORY_TRACKING_ENDPOINT)
|| !domainResolvesToValidIP("youtube.com")) {
return;
}
Utils.runOnMainThread(() -> {
var alert = new android.app.AlertDialog.Builder(context)
.setTitle(str("revanced_check_watch_history_domain_name_dialog_title"))
.setMessage(Html.fromHtml(str("revanced_check_watch_history_domain_name_dialog_message")))
.setIconAttribute(android.R.attr.alertDialogIcon)
.setPositiveButton(android.R.string.ok, (dialog, which) -> {
dialog.dismiss();
}).setNegativeButton(str("revanced_check_watch_history_domain_name_dialog_ignore"), (dialog, which) -> {
Settings.CHECK_WATCH_HISTORY_DOMAIN_NAME.save(false);
dialog.dismiss();
}).create();
Utils.showDialog(context, alert, false, null);
});
} catch (Exception ex) {
Logger.printException(() -> "checkDnsResolver failure", ex);
}
});
}
}

View File

@@ -1,22 +1,33 @@
package app.revanced.integrations.youtube.patches;
import static app.revanced.integrations.shared.StringRef.str;
import android.widget.ImageView;
import app.revanced.integrations.youtube.settings.Settings;
import app.revanced.integrations.shared.Utils;
import app.revanced.integrations.youtube.settings.Settings;
@SuppressWarnings("unused")
public class CustomPlayerOverlayOpacityPatch {
public static void changeOpacity(ImageView imageView) {
private static final int PLAYER_OVERLAY_OPACITY_LEVEL;
static {
int opacity = Settings.PLAYER_OVERLAY_OPACITY.get();
if (opacity < 0 || opacity > 100) {
Utils.showToastLong("Player overlay opacity must be between 0-100");
Utils.showToastLong(str("revanced_player_overlay_opacity_invalid_toast"));
Settings.PLAYER_OVERLAY_OPACITY.resetToDefault();
opacity = Settings.PLAYER_OVERLAY_OPACITY.defaultValue;
}
imageView.setImageAlpha((opacity * 255) / 100);
PLAYER_OVERLAY_OPACITY_LEVEL = (opacity * 255) / 100;
}
/**
* Injection point.
*/
public static void changeOpacity(ImageView imageView) {
imageView.setImageAlpha(PLAYER_OVERLAY_OPACITY_LEVEL);
}
}

View File

@@ -1,6 +1,7 @@
package app.revanced.integrations.youtube.patches;
import app.revanced.integrations.youtube.settings.Settings;
import app.revanced.integrations.youtube.shared.PlayerType;
@SuppressWarnings("unused")
public class DisableAutoCaptionsPatch {
@@ -11,7 +12,9 @@ public class DisableAutoCaptionsPatch {
public static boolean captionsButtonDisabled;
public static boolean autoCaptionsEnabled() {
return Settings.AUTO_CAPTIONS.get();
return Settings.AUTO_CAPTIONS.get()
// Do not use auto captions for Shorts.
&& !PlayerType.getCurrent().isNoneHiddenOrSlidingMinimized();
}
}

View File

@@ -1,20 +1,10 @@
package app.revanced.integrations.youtube.patches;
import android.view.MotionEvent;
import android.view.VelocityTracker;
import app.revanced.integrations.youtube.settings.Settings;
@SuppressWarnings("unused")
public final class DisablePreciseSeekingGesturePatch {
/**
* Disables the gesture that is used to seek precisely.
* @param tracker The velocity tracker that is used to determine the gesture.
* @param event The motion event that is used to determine the gesture.
*/
public static void disableGesture(VelocityTracker tracker, MotionEvent event) {
if (Settings.DISABLE_PRECISE_SEEKING_GESTURE.get()) return;
tracker.addMovement(event);
public static boolean isGestureDisabled() {
return Settings.DISABLE_PRECISE_SEEKING_GESTURE.get();
}
}

View File

@@ -1,13 +1,8 @@
package app.revanced.integrations.youtube.patches;
import android.annotation.SuppressLint;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import app.revanced.integrations.shared.Logger;
import app.revanced.integrations.youtube.settings.Settings;
/** @noinspection unused*/

View File

@@ -1,10 +0,0 @@
package app.revanced.integrations.youtube.patches;
import app.revanced.integrations.youtube.settings.Settings;
@SuppressWarnings("unused")
public final class EnableTabletLayoutPatch {
public static boolean enableTabletLayout() {
return Settings.TABLET_LAYOUT.get();
}
}

View File

@@ -4,7 +4,13 @@ import app.revanced.integrations.youtube.settings.Settings;
@SuppressWarnings("unused")
public class HideAutoplayButtonPatch {
public static boolean isButtonShown() {
return !Settings.HIDE_AUTOPLAY_BUTTON.get();
private static final boolean HIDE_AUTOPLAY_BUTTON_ENABLED = Settings.HIDE_AUTOPLAY_BUTTON.get();
/**
* Injection point.
*/
public static boolean hideAutoPlayButton() {
return HIDE_AUTOPLAY_BUTTON_ENABLED;
}
}

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