Compare commits

...

327 commits

Author SHA1 Message Date
arichornlover
4db6189451
Update uYouPlus.xm 2023-12-03 02:43:08 -06:00
arichornlover
2a0ed287b5
About kCFErrorDomainCFNetwork error 303
Updated Security Policy.
2023-12-02 20:35:30 -06:00
arichornlover
8c5ed914ce
v18.46.3-3.0.1-F2 2023-12-02 16:41:33 -06:00
arichornlover
9ebf28df77
Update uYouPlus.xm 2023-12-02 15:41:17 -06:00
arichornlover
0e0fedc418
Merge some changes 2023-12-02 15:29:45 -06:00
arichornlover
a1f8eb92be
Update uYouPlus.xm 2023-12-02 14:52:19 -06:00
arichornlover
de98e58bac
Update uYouPlus.xm 2023-12-02 14:41:18 -06:00
arichornlover
935d0d9703
Resolve some errors 2023-12-02 14:33:03 -06:00
arichornlover
44d855e42a
Code Clean Up & Improvements
A major change to uYouPlusExtra. Cleaning up and changing a ton of code around the uYouPlus.xm file
2023-12-02 13:44:42 -06:00
arichornlover
1d61542513
this implementation is hard.
I’m sorry for multiple changed y’all, I keep changing how this works so it’ll hide the containers. I’m just not that good at this.
2023-12-02 01:33:32 -06:00
arichornlover
2251049401
Update uYouPlus.xm 2023-12-02 00:42:53 -06:00
arichornlover
10282a2d9f
Update uYouPlus.xm 2023-12-02 00:05:50 -06:00
arichornlover
680ae2a7f8
Update uYouPlus.xm 2023-12-01 22:09:52 -06:00
arichornlover
58afb4be52
Update uYouPlus.xm 2023-12-01 21:45:28 -06:00
arichornlover
5fb36e29bb
Changes to some stuff 2023-12-01 21:08:33 -06:00
arichornlover
e7fa6191cb
New Tweak Name Poll Announcement
Hello! Check out https://github.com/arichorn/uYouPlusExtra/discussions/236 and vote on which name this tweak to be called.
2023-12-01 20:28:36 -06:00
arichornlover
49777351e0
Rename to Disable Ambient Mode in Fullscreen
I changed the title to this because it only turns off Ambient Mode when in Fullscreen.
2023-11-30 21:24:44 -06:00
arichornlover
0b113fc70a
Improvements to Disable Ambient Mode 2023-11-30 16:46:21 -06:00
GitHub Actions
1bce31bf4d updated submodules 2023-11-30 07:38:08 +00:00
arichornlover
467991ec8d
Use description as accessibilityidentifier
I apologize for this change, but I’m having trouble doing this implementation. I don’t want the functionality to break so I’m doing my best.
2023-11-29 17:54:41 -06:00
arichornlover
b6356182d1
Update uYouPlus.xm 2023-11-29 17:28:03 -06:00
arichornlover
a98cc7ad40
Update Settings.xm 2023-11-29 16:52:33 -06:00
arichornlover
9c85621b2d
New Option Red Subscribe Button
New option to replace the subscribe button color from white to red!
2023-11-29 16:48:31 -06:00
arichornlover
91d3529261
Update uYouPlus.h 2023-11-29 16:38:09 -06:00
arichornlover
1986600d46
Add a new Header 2023-11-29 16:25:58 -06:00
arichornlover
e3b4187766
Update Settings.xm 2023-11-29 16:14:30 -06:00
arichornlover
c2c1f38662
Improved Hide Ambient Mode & Hide Button Containers 2023-11-29 16:12:38 -06:00
arichornlover
012725efa6
Update Settings.xm 2023-11-28 20:24:34 -06:00
arichornlover
1dca562a22
New Option Hide Button Containers
you can now hide the containers in the buttons 😎
Some of y’all requested this and it’s now implemented to uYouPlusExtra!
2023-11-28 20:05:50 -06:00
arichornlover
8d03828478
Updated YTNoModernUI (1)
Realized it was the wrong method, swapped it out with *removeFromSuperview*
2023-11-28 19:41:18 -06:00
arichornlover
cd0c125feb
Updated YTNoModernUI
YTNoModernUI had an urgent update! Google has changed the way ambient works and I decided to do an implementation to fix it!
2023-11-28 19:35:16 -06:00
arichornlover
39fd5b783b
Lower uYou compatibility 2023-11-28 02:29:02 -06:00
arichornlover
bf83324ff2
Adjusted uYou Tweak Compatibility List
List has been updated since I was incorrect. I’m certain on v18.34.5 is the minimum version to run uYou 3.0.1 because of the Video Quality changes?
2023-11-27 23:39:31 -06:00
arichornlover
ccc112f835
v18.08.1-3.0.1-F4 2023-11-27 20:54:19 -06:00
arichornlover
5d3cec9711
Added more custom YouTube Logos - #183
This version doesn’t include the `Extra` label that’s on the right side of the logo.
Special Thanks to HaruMatsu9124
2023-11-27 20:08:52 -06:00
arichornlover
ea04a38b7e
LowContrastMode v1.5.1
After all these months, I finally did another LowContrastMode patch that can potentially fix and support the YouTube UI on v17.39.4 and above!
2023-11-27 17:53:38 -06:00
arichornlover
f135505f1e
Add a workaround fix for YouTube Premium Logo - #187 2023-11-27 16:07:57 -06:00
arichornlover
3cfdf5ac8e
Fix Center YouTube Logo 2023-11-26 21:46:07 -06:00
arichornlover
0b04b91ef2
Remove **uYouPlusExtra Logo** option
since I failed to implement the option as I wanted. I decided to replace it with the option to be able to Center the YouTube Logo.
2023-11-26 17:45:28 -06:00
arichornlover
8ae42fef4d
Removed an option
I removed this because it will completely crash the app. I suck at trying to implement something like this.
2023-11-26 17:18:58 -06:00
arichornlover
66191f3edf
Delete Bundles/MrBeastify.bundle 2023-11-26 13:37:13 -06:00
arichornlover
c3e8f75839
Update update-submodules.yml 2023-11-26 13:25:03 -06:00
arichornlover
4edc1dd440
Updated Update-Submodules template 2023-11-26 13:24:37 -06:00
arichornlover
353a549e83
Update update-submodules.yml 2023-11-26 13:24:07 -06:00
GitHub Actions
89174aa328 Added YTHoldForSpeed bundle 2023-11-26 19:21:13 +00:00
GitHub Actions
513abdbc22 Added YTHoldForSpeed submodule 2023-11-26 19:21:12 +00:00
arichornlover
81f7a55bde
Update update-submodules.yml 2023-11-26 13:20:50 -06:00
arichornlover
0f0f86115e
New Tweak YTHoldForSpeed
This change also removes the MrBeastify tweak.
2023-11-26 13:13:12 -06:00
arichornlover
ed5da99036
Update uYouPlusExtra Logo again
I had to urgently change something. If YTHeaderLogoController was set to NULL, it will remove the controller and then the custom logo won’t show up.
2023-11-26 13:00:22 -06:00
arichornlover
b3bf06ce7e
New Options
This also reverts the stupid changes I’ve done. Hope this is fine.
2023-11-26 12:44:50 -06:00
arichornlover
8cbbc3093f
Undo some changes 2023-11-26 12:38:51 -06:00
arichornlover
ad33154c18
Update Settings.xm 2023-11-26 12:32:08 -06:00
arichornlover
ab43d84951
Bring back the old color for Buffer Bar
This is what the Buffer Bar color originally was in v16.xx.x YouTube.
2023-11-26 10:37:15 -06:00
arichornlover
33c9508607
Update uYouPlus.xm 2023-11-26 00:47:30 -06:00
arichornlover
bdc046b211
Update Settings.xm 2023-11-26 00:26:15 -06:00
arichornlover
8f68e0c363
Update uYouPlus.xm 2023-11-26 00:15:18 -06:00
arichornlover
beb9dcbd13
Resolve some errors with new changes 2023-11-25 23:54:35 -06:00
arichornlover
baf9d06677
Add YouTube Logo Section 2023-11-25 23:41:51 -06:00
arichornlover
c90b56d8d3
Declared YouTube Logos 2023-11-25 23:12:45 -06:00
arichornlover
d04cf5a24d
Add missing YouTube Logo stuff 2023-11-25 22:55:48 -06:00
arichornlover
1804a2cfa5
Change YouTube Logo Options functionality
Now, you are able to change the YouTube Logo easier with these new changes!
2023-11-25 22:54:10 -06:00
arichornlover
bb28191fe4
New Options (YouTube Logo Customization)
New YouTube Logo options! This provides more customization towards the YouTube Logo in uYouPlusExtra!
2023-11-25 22:32:50 -06:00
arichornlover
32d047a1e8
Update YTHeaderLogoController Header 2023-11-25 19:15:39 -06:00
arichornlover
da90055059
Update uYouPlus.xm 2023-11-25 19:12:35 -06:00
arichornlover
a3581bf3ba
Update uYouPlus.xm 2023-11-25 19:04:22 -06:00
arichornlover
5197eacd2a
Is there a better way for the Custom Logo implementation? 2023-11-25 18:49:58 -06:00
arichornlover
69dc003517
Update uYouPlus.xm 2023-11-25 18:27:44 -06:00
arichornlover
5e83c4ca98
New Header 2023-11-25 18:16:26 -06:00
arichornlover
a94ee4f855
Change some other stuff 2023-11-25 18:12:08 -06:00
arichornlover
92d5eaa10f
Updated uYouPlusExtra Logo Option 2023-11-25 17:49:47 -06:00
arichornlover
7b5e4fa6a1
3 New Options
You can now hide the buttons `Thanks, Clip & Save to playlist` under the video player!
2023-11-25 16:38:27 -06:00
arichornlover
efe3e3ce0f
Fixed uYouPlusExtra Building
uYouPlusExtra can now build packages normally again!
Some stuff has been changed to ensure the updated url and it’s uYou deb injected into the ipa.
2023-11-25 15:18:39 -06:00
arichornlover
ae2793db39
Updated Hide Shorts Cells
Hide Shorts Cells has an upgrade from PoomSmart & iCrazeiOS
2023-11-23 20:30:09 -06:00
arichornlover
effb18e2c1
v18.46.3-3.0.1 2023-11-20 19:41:06 -06:00
GitHub Actions
8c11ff11df updated submodules 2023-11-21 00:58:51 +00:00
arichornlover
6ff27ebf94
Update Makefile 2023-11-19 19:04:13 -06:00
arichornlover
a0343b34b8
Fix Remove Indicators option
Option wasn’t building correctly.
2023-11-18 18:11:58 -06:00
arichornlover
efe8503241
More YTNoTracking Improvements
Planning on trying to focus on YTNoTracking to take care of the other issues related to stripping Tracking Params & URLs.
2023-11-18 17:51:56 -06:00
arichornlover
4cb8c9b5da
Updated YTNoTracking Tweak 2023-11-17 23:21:31 -06:00
arichornlover
8d56ee85c8
Update Settings.xm 2023-11-17 22:21:50 -06:00
arichornlover
6763948779
Improved some Options 2023-11-17 16:23:04 -06:00
GitHub Actions
f2f63981e7 updated submodules 2023-11-17 11:45:41 +00:00
arichornlover
b2fefd2ff8
Update uYouPlus.xm 2023-11-16 06:47:45 -06:00
arichornlover
0805fe053a
Will this fix the logos? 2023-11-16 00:02:24 -06:00
GitHub Actions
877d969580 updated submodules 2023-11-15 23:39:20 +00:00
arichornlover
1793c4b031
New Option Disable Ambient Mode - #165 2023-11-15 17:33:19 -06:00
arichornlover
e64368002c
Update uYouPlus.xm 2023-11-15 17:30:07 -06:00
arichornlover
551fdfcb4e
Updated YTNoModernUI (due to New A/B Flags) 2023-11-15 17:29:20 -06:00
arichornlover
e0c49c3ed6
New Section in Settings
Added a new section so that Miscellaneous won’t get cluttered.
2023-11-15 17:15:19 -06:00
arichornlover
cb04600613
Also change Premium YouTube Logo hook 2023-11-15 17:03:38 -06:00
arichornlover
df1681f34f
Update Makefile 2023-11-15 16:59:03 -06:00
arichornlover
d08f3babd6
Fixed a Header 2023-11-15 16:13:07 -06:00
arichornlover
1b8edc7818
Updated uYouPlusExtra Logo hook
I realized that the hook somehow got spelled incorrectly. So it’s now `YTLogoHeaderController` to `YTHeaderLogoController`
2023-11-15 16:09:36 -06:00
arichornlover
52249ae259
New Options for hiding Buttons under the video player
Added a few more options to hide some buttons that is under the video player.
2023-11-13 16:11:44 -06:00
arichornlover
d8858c92aa
Fixed “uYouPlusExtra Logo” Toggle
I saw a mistake in the option and since it’s been fixed, the option should work now.
2023-11-13 16:09:42 -06:00
arichornlover
df964d39c3
Improvements 2023-11-12 16:33:59 -06:00
arichornlover
05936f1426
New Headers 2023-11-12 16:29:57 -06:00
GitHub Actions
9702239dd1 updated submodules 2023-11-12 21:41:24 +00:00
arichornlover
f7c98d1f23
Undo YouTubeHeader Submodule Changes 2023-11-12 15:37:11 -06:00
arichornlover
ad0d875fb5
Updated Hide Channel Watermark Option - #198 2023-11-11 16:45:55 -06:00
arichornlover
de3d4320e6
Renamed an option - #155 2023-11-11 16:08:12 -06:00
arichornlover
fbf66f9031
Added YTLogoHeaderViewController Header
This header is required along with the pageStyle to be able to change the icons in light/dark theme of the app.
2023-11-11 11:59:38 -06:00
arichornlover
bc234732b8
New Option: YouTube Premium Logo 2023-11-11 11:56:41 -06:00
arichornlover
d87b0d1763
Change some options
Changed
“uYouPlusExtra Logo” option (UIImageView didn’t work out)`
“Hide Comment Section” option (replaces sizeToFit with CGRect),
“Hide Remix Button” & “Hide Offline Button” options (these 2 are having problems and the new changes were untested)
2023-11-11 11:52:55 -06:00
arichornlover
f516ddeca4
Update uYouPlus.xm 2023-11-08 01:23:30 -06:00
arichornlover
1cf8221c8d
Updated Security Policy
Re-added the rule to Prohibit qnblackcat & PoomSmart from interfering with the uYouPlusExtra Project.
2023-11-08 00:40:02 -06:00
arichornlover
27ac05851f
v18.44.3-3.0.1 2023-11-07 19:50:57 -06:00
arichornlover
24f90271d1
Improvements & fixed options 2023-11-07 19:11:38 -06:00
arichornlover
5e46d9936d
New Option: uYouPlusExtra Logo 2023-11-07 19:05:45 -06:00
arichornlover
30ce254ce5
New Headers 2023-11-07 19:01:12 -06:00
arichornlover
ed20d9e5f5
Update Makefile 2023-11-07 14:23:42 -06:00
GitHub Actions
b0e5a8f82f updated submodules 2023-11-07 19:27:35 +00:00
arichornlover
73f4fc5edd
Added custom YouTube Logos - #183 2023-11-05 21:43:08 -06:00
GitHub Actions
0150082a31 updated submodules 2023-11-05 20:28:02 +00:00
arichornlover
49f12a0b66
Update Makefile 2023-11-02 22:49:41 -05:00
GitHub Actions
33d150e739 updated submodules 2023-11-02 06:19:21 +00:00
arichornlover
bc08c77664
Update YouTubeHeader Submodule
Directory of the YouTubeHeader submodule is now set to arichorn/YouTubeHeader,
I needed to modify something so the uYouCrashFix will function.
2023-11-02 01:18:49 -05:00
arichornlover
9c11a8d6af
Update uYouPlus.xm 2023-11-02 01:07:59 -05:00
arichornlover
91ea6c8fe1
Update uYouPlus.h 2023-11-02 01:04:39 -05:00
arichornlover
118f4fd556
Update uYouPlus.h 2023-11-01 23:34:20 -05:00
arichornlover
25e7b84541
Added Important Headers
Headers that may be needed.
uYouCrashFix headers from iCrazeiOS
2023-11-01 21:59:54 -05:00
GitHub Actions
87900e01a5 updated submodules 2023-10-30 04:05:29 +00:00
arichornlover
0f726cfa32
v18.41.5-3.0.1 2023-10-28 23:01:51 -05:00
arichornlover
72401dcd13
Update Makefile 2023-10-28 19:37:10 -05:00
arichornlover
1905439eda
Merge pull request #167 from Harumatsu91202024/patch-1
Updated Localizable.strings
2023-10-26 15:52:10 -05:00
HaruMatsu
4398c49258
Updated Localizable.strings
FIxed some gramatical mistakes as well as added in missing strings from recent updates.
2023-10-27 05:47:13 +09:00
arichornlover
ef93afd234
Updated YTNoModernUI
These New flags were added or changed in the recent YouTube versions. Hope this is useful.
2023-10-26 01:47:19 -05:00
arichornlover
d56dc8a86a
Fix Themes not working in comment section
YouTube once again changed something therefore I update this.
2023-10-26 01:04:50 -05:00
arichornlover
93b3397e01
Added Hide Remix Button (for v16.xx.x UI version)
Same option except it’s for older Video Player UI for Version Spoofers Users / Fake YT Version Users
2023-10-24 01:01:56 -05:00
arichornlover
97c6d103d8
Update uYouPlus.h 2023-10-24 00:56:03 -05:00
arichornlover
851f831b73
Update uYouPlus.h 2023-10-23 20:39:20 -05:00
arichornlover
4bfbcd5f6a
Update Settings.xm 2023-10-23 02:19:34 -05:00
arichornlover
a40becdb44
Added Hide Remix Button + Other Changes
Some of the changes were hard to do. Including the Hide Remix and Download buttons. And some of the other changes are Inspired and based off of YouTube Revanced (&  Revanced Extended)
2023-10-23 02:16:53 -05:00
arichornlover
4641328c9b
Update Settings.xm 2023-10-22 23:05:54 -05:00
arichornlover
24bf80cef5
Fix #162 2023-10-22 23:04:55 -05:00
arichornlover
c0257e801e
Update Settings.xm 2023-10-22 03:03:54 -05:00
arichornlover
a8440ab26e
New Option “Hide Videos in Fullscreen”
Technically not a new option. This change was made to move half of the functionality from the option “ Hide all videos under player”.
2023-10-22 02:59:57 -05:00
GitHub Actions
05e24f733f updated submodules 2023-10-22 07:52:10 +00:00
GitHub Actions
ee54600327 updated submodules 2023-10-22 07:22:22 +00:00
GitHub Actions
815cd96302 updated submodules 2023-10-22 06:49:54 +00:00
arichornlover
d2fb05bf86
revert changes to update Submodules
2 weeks later and this change has been breaking some Submodules like MrBeastify. I will change it back to the other if this is a bad idea
2023-10-22 01:49:13 -05:00
arichornlover
4b2c982160
Update MrBeastify Submodule 2023-10-22 00:31:39 -05:00
arichornlover
bc862d88ac
🔧 Update buildapp.yml Dependencies 2023-10-20 17:07:35 -05:00
arichornlover
1e63361f48
Fix errors (uYouPlus.xm)
I apologize about the errors, this took all night to resolve 😅
2023-10-19 16:47:33 -05:00
arichornlover
7369ee0ac1
Update uYouPlus.xm 2023-10-19 02:49:25 -05:00
arichornlover
6936a8fb2b
Resolve some errors? (uYouPlus.xm) 2023-10-19 02:31:18 -05:00
arichornlover
15af3980f0
Update uYouPlus.h 2023-10-19 01:53:22 -05:00
arichornlover
7d873944a6
Update an option (Settings.xm) 2023-10-19 01:33:46 -05:00
arichornlover
43b542d697
Option Improvements
Improved 2 Options
- Hide Shorts Cells
- Hide Download Button under Player
2023-10-19 01:30:46 -05:00
arichornlover
ce82c117db
Improved buildapp.yml
This version of the buildapp.yml was from level3tjg’s uYouPlus repository and here were the changes that I added to the uYouPlusExtra Version.
- You can modify the sdk version. (For example changing from 16.2 to 15.5 if you wanted to.)
- things have been reordered to be organized just like level3tjg’s version.

And I didn’t add everything from the level3tjg version. Because I fear those are unfinished and gotta respect to not add it in yet 🫡
2023-10-19 00:05:13 -05:00
arichornlover
8c9097db1d
Update Extractor.xm 2023-10-16 17:21:20 -05:00
arichornlover
2aaf7dd4f7
Show the new Options
Updated Settings.xm to make the new options show up.
2023-10-15 18:12:14 -05:00
arichornlover
d870bb5123
Updated “Hide Related Videos” Option #155 2023-10-15 15:16:10 -05:00
arichornlover
2c063e85a9
3 New Options
This is subject to change. Nothing has been tested.
2023-10-15 03:58:49 -05:00
arichornlover
19e771714b
Downgrade Theos.. Again..
Downgrading Theos again because this time it broke the Alderis Framework.
2023-10-15 03:32:44 -05:00
arichornlover
3a79b638fa
Update Makefile 2023-10-13 00:40:31 -05:00
arichornlover
5a8703ef55
Add Extractor Files 2023-10-12 21:46:04 -05:00
arichorn
1d431bb927
Merge pull request #148 from asdfzxcvbn/submodules
improve submodule updating
2023-10-08 21:13:34 -05:00
zx
e53fb5e6df
improve submodule updating
basically no behavior has changed, but the line count of the file has gone down significantly
2023-10-08 20:08:26 -04:00
arichorn
df8f59c21d
Japan Localization update from qnblackcat/uYouPlus 2023-10-07 13:39:04 -05:00
arichorn
70a14e827a
Supports latest Theos
Special thanks to Level3tjg for fixing the compiling! uYouPlus & uYouPlusExtra can be built without any compiling errors now!
2023-10-06 23:52:01 -05:00
arichorn
5b70455b4b
Update VersionSpoofer.xm 2023-10-06 23:23:47 -05:00
arichorn
ba128dd024
Update LowContrastMode.xm 2023-10-06 23:23:34 -05:00
arichorn
56e22c8a21
Fix Compiling error on Themes 2023-10-06 23:16:43 -05:00
arichorn
1cf7480a9e
Update SECURITY.md 2023-10-06 23:09:12 -05:00
arichorn
72d172b3d9
Update Settings.xm 2023-10-06 22:18:53 -05:00
arichorn
97301ee2d9
Update uYouPlus.xm 2023-10-06 22:18:34 -05:00
arichorn
932289221d
rename Header.h
File name has been changed to uYouPlus.h (by level3tjg)
2023-10-06 22:18:16 -05:00
arichorn
4bd10955fa
v18.39.1-3.0.1
Also hope y’all like the new and improved README.md!
2023-10-02 22:59:51 -05:00
arichorn
c105310e71
Update Makefile 2023-10-02 21:28:08 -05:00
arichorn
6af6a382ab
Themes Improvements 2023-10-01 22:40:13 -05:00
arichorn
3d245dc784
Improved some Options 2023-10-01 20:20:58 -05:00
arichorn
948f478229
Fix #138
Fixed a problem that was caused by me
2023-10-01 00:28:35 -05:00
arichorn
90eff9f385
Theme changes for #113 2023-09-30 13:28:59 -05:00
arichorn
6f4f979a2d
Updated YTNoModernUI Localizations
YTNoModernUI has updated localization because YTNoModernUI’s functionality has been completely changed.
2023-09-29 18:49:40 -05:00
arichorn
78c2ddaaea
Updated update-submodules template 2023-09-29 18:00:33 -05:00
arichorn
04c212f915
Updated Security Policy
I realized a fatal mistake. I no longer support Localization since it’s hard to maintain it whenever the branch resets or new settings from qnblackcat’s uYouPlus gets added.
2023-09-29 17:19:39 -05:00
arichorn
61ae8e720a
Update uYouPlus.xm 2023-09-28 21:42:06 -05:00
arichorn
f5f0748d91
Updated YTNoModernUI 2023-09-28 20:36:12 -05:00
arichorn
de3eb16662
Update Dependencies 2023-09-28 19:37:31 -05:00
arichorn
6bfab35e2d
fix another issue with themes
YouTube secretly replace “brand.promo_view” with “brand_promo.view” so it’s fixed.
2023-09-27 18:14:49 -05:00
arichorn
ac1004e906
Update update-submodules.txt 2023-09-25 20:18:23 -05:00
arichorn
f6c3d055db
Update Makefile 2023-09-25 20:14:08 -05:00
arichorn
b5c404572d
Update update-submodules.yml 2023-09-25 20:07:01 -05:00
GitHub Actions
b31c2337b1 removed ytnocommunityposts 2023-09-26 00:58:16 +00:00
arichorn
be8b1b7637
Update update-submodules.yml 2023-09-25 19:57:52 -05:00
arichorn
e7547e4d06
Added a new Header
Another Header is required in order to hide Video Suggestions.
2023-09-25 19:55:16 -05:00
arichorn
c1d5762afd
Update update-submodules.yml 2023-09-25 19:52:56 -05:00
arichorn
10008aa9af
Remove Suggested Videos from Video Player #126 2023-09-25 18:04:13 -05:00
arichorn
c0cf0237fc
Fix Timed Comments Background Color (Dark Theme)
The color palettes for these weren’t changing so I fixed it.
2023-09-25 17:54:51 -05:00
arichorn
c651c58736
v18.38.2-3.0.1 2023-09-24 20:52:54 -05:00
arichorn
c1e75b443c
Update Settings.xm 2023-09-24 20:12:00 -05:00
arichorn
3d2310589a
Added Hide Header Links under Channel Profile Option
Option was made by arichorn
Option was based off of Dayanch96’s YTLite
2023-09-24 20:08:26 -05:00
arichorn
d461c3ef89
Update Makefile 2023-09-24 19:23:59 -05:00
arichorn
d5880ea00e
Disable a few more options
These options don’t work correctly at the moment. Didn’t realize these were incompatible with their tweaks.
2023-09-24 18:08:31 -05:00
GitHub Actions
cfe83e471a updated submodules 2023-09-24 14:24:58 +00:00
arichorn
d1a88de0dc
change YTABConfig
Changed submodule to the forked version of YTABConfig to remove something I disliked.
2023-09-24 09:24:18 -05:00
GitHub Actions
a89beaa189 updated submodules 2023-09-24 02:47:52 +00:00
arichorn
7d5af8e99a
Revert Changes because of macos-latest
iOS 17 SDK cannot be used because `macos-latest` has not updated
2023-09-22 19:00:27 -05:00
arichorn
1be0c249cc
Update Makefile 2023-09-22 18:59:11 -05:00
arichorn
d743657492
Update README.md
v18.35.4-3.0.1 (September 11th Release)

other changes:
uYou 3.0.1 is not compatible with 18.06.6 or 18.07.5 therefore it only works with 18.08.1 or newer.
2023-09-22 18:56:26 -05:00
arichorn
b57483c17b
Update Dependencies 2023-09-22 18:37:58 -05:00
arichorn
343b334f14
Update update-submodules.yml 2023-09-22 18:35:28 -05:00
arichorn
1f343d67b0
iOS 17.0 SDK
New SDK to support iPhone 15/iPhone 15 Pro
2023-09-22 18:35:09 -05:00
arichorn
a99e10ba04
Update LowContrastMode.xm 2023-09-21 23:25:32 -05:00
arichorn
37a1461742
Updated YTNoModernUI + YTShortsProgress
YTNoModernUI was updated to remove some stuff that is no longer in the app anymore.

YTShortsProgress was updated to fix the PlayerBar but unfortunately when I checked it seems like YouTube removed the `shouldEnablePlayerBar` Feature which was needed.
2023-09-21 22:01:33 -05:00
arichorn
f8bfcffbef
LowContrastMode v1.5.0
LowContrastMode v1.5.0 provides more changes to improve the tweak!
2023-09-21 21:34:29 -05:00
arichorn
566ad93bf0
Disable New Option
I realized having this option in uYouPlusExtra will not work as intended sadly.
2023-09-21 18:32:50 -05:00
arichorn
d1cd5e68a1
LowContrastMode Improvements 2023-09-20 21:44:26 -05:00
arichorn
99c5aa0d5a
Update uYouPlus.xm 2023-09-20 20:12:49 -05:00
arichorn
5df593c7e7
Updated Themes Supports YouTube v18.34.5+
OLED & Old Dark Theme has been updated because there was new UI changes in the Comment Section. so It has been fixed in this commit.
2023-09-20 19:02:26 -05:00
arichorn
bc1a3fd1af
Added Hide the Download Button under player Option
Option was made by arichorn
Option was based off of MiRO92’s uYou Tweak
2023-09-20 18:47:24 -05:00
arichorn
413cb22444
Another Option https://github.com/qnblackcat/uYouPlus/issues/145
a new option based off of uYou's old `Hide Download Button` option. this will only work on YouTube Versions that have the New Interface.
2023-09-20 18:44:24 -05:00
arichorn
1371927937
Fixed Comment Section Identifiers
fixed some of the identifiers to it will hide the rest of the comment section correctly.
2023-09-20 18:16:47 -05:00
arichorn
732fa3a4d5
Remove Duplicated Method
I forgot that the `Shorts Subscriptions Option` was in here. so I just decided to move the Hide Comment Section code to the option above to avoid the duplication error.
2023-09-20 17:52:08 -05:00
arichorn
b91e6d1d6d
Updated update-submodules Template
Template has been updated so actions/checkout would be using v4.0.0 to avoid deprecation warnings in the future.
2023-09-20 17:42:44 -05:00
arichorn
986be79147
Update Settings.xm 2023-09-20 17:39:18 -05:00
arichorn
ade503ebb3
Updated an Option
Previous Code appears to not work. so now I'm using this version of the code based off of YouTube Reborn.
2023-09-20 17:38:43 -05:00
arichorn
8f7a6a7a68
Update control 2023-09-19 22:59:53 -05:00
arichorn
f8c3428eb6
Update Settings.xm 2023-09-19 22:25:57 -05:00
GitHub Actions
ef6912212f updated submodules 2023-09-20 01:14:11 +00:00
arichorn
7ed046a8fc
Update update-submodules.yml 2023-09-19 20:13:44 -05:00
arichorn
055da8f17b
Update VersionSpoofer.xm 2023-09-19 20:11:58 -05:00
arichorn
69cf94cb44
Added more Version Spoofer Options
It’s been awhile! Version Spoofer has been updated to support and to be able to spoof to newer versions of the app.
2023-09-19 19:53:02 -05:00
arichorn
4b46e44b52
Updated Version Spoofer
Added 8+ More Versions to the Spoofer! These were added to I wanted to debug which version had the new You Tab in the pivot bar.
2023-09-19 19:17:34 -05:00
arichorn
4ac0afed6f
Updated Security Policy 2023-09-19 16:35:21 -05:00
arichorn
361de02ff1
Added Hide the comment section under player Option
Option was made by arichorn
Option was based off of Dayanch96’s YTLite Adblock
2023-09-18 21:42:57 -05:00
arichorn
fa313c15cd
Another Option #111
Another option based off of #111 but this time you can hide the comment section
2023-09-18 21:36:38 -05:00
arichorn
3bca764334
Added Hide all videos under player Option
Option was made by Dayanch96
Option was from YTLite
2023-09-17 15:35:05 -05:00
arichorn
f03ab2fe3d
Added another Option #111 2023-09-17 12:44:15 -05:00
arichorn
cec0e27e55
Update Header.h 2023-09-17 11:56:33 -05:00
arichorn
4be9549d42
Update uYouPlus.xm 2023-09-17 11:55:16 -05:00
arichorn
ccd6826de4
Updated App Settings Overlay Options
This has been updated to be up-to-date and supported for YouTube’s New Pivot Bar Tab & Settings changes.
2023-09-17 03:46:05 -05:00
arichorn
4020ab10a7
New Options!
New Options for uYouPlusExtra! This change was made due to the introduction of the `You` Tab in the App which completely changed some of the `App Settings Overlay Options` stuff
2023-09-17 03:31:40 -05:00
arichorn
99a3416652
Update update-submodules.yml 2023-09-16 18:42:41 -05:00
GitHub Actions
2de374dbe8 Re-Added FLEXing 2023-09-16 23:33:01 +00:00
arichorn
2a1975d069
Update update-submodules.yml 2023-09-16 18:32:38 -05:00
GitHub Actions
b9ef23f9dd Change FLEXing 2023-09-16 23:27:47 +00:00
arichorn
a0c50c4dea
Update update-submodules.yml 2023-09-16 18:27:20 -05:00
arichorn
f66e962b06
Update update-submodules.yml 2023-09-16 18:16:19 -05:00
arichorn
c2d69b97a6
Change FLEXing Branch
Branch has been changed. Reason why I changed it was due to issues with crashing in iOS15+ and System Log not working in iOS 17+
2023-09-16 18:13:06 -05:00
GitHub Actions
4ab1b0573f updated submodules 2023-09-16 03:00:58 +00:00
arichorn
f59f4243be
Update OLED Dark Theme
Added stuff so that OLED Dark Theme works correctly on the latest version of YouTube.
2023-09-14 18:56:39 -05:00
arichorn
88dd1b711f
Update Themes.xm 2023-09-13 17:01:24 -05:00
arichorn
9afbdb2dac
Fix OLD Dark Theme
Fix OLD Dark Theme not working on newer YouTube Versions.
2023-09-13 16:43:58 -05:00
arichorn
10ce2d1bd8
Update Settings.xm 2023-09-11 18:37:14 -05:00
arichorn
ef025bd3ac
Disable CustomContrastMode
Crashes as soon as you use it. My fault.
2023-09-11 18:33:49 -05:00
arichorn
9c52e27b9a
Update uYouPlus.xm 2023-09-07 20:22:41 -05:00
GitHub Actions
4512d43e42 updated submodules 2023-09-08 01:02:06 +00:00
arichorn
a194b345f8
Update uYouPlus.xm 2023-09-07 19:44:29 -05:00
arichorn
2215e3bd5f
Update Settings.xm 2023-09-07 19:43:43 -05:00
arichorn
c27a33ccff
Add files via upload 2023-09-07 19:27:09 -05:00
arichorn
ccda2827a9
Update Localizable.strings 2023-09-07 16:52:40 -05:00
GitHub Actions
95095dbddd updated submodules 2023-09-07 21:51:39 +00:00
arichorn
c9d32fd2c3
Update Themes.xm 2023-09-07 16:37:39 -05:00
GitHub Actions
619223cc90 updated submodules 2023-09-07 21:37:12 +00:00
arichorn
eae46196ed
Update Return YouTube Dislike #101 2023-09-07 16:35:56 -05:00
arichorn
e4fc237941
Update Themes.xm 2023-09-07 16:28:25 -05:00
arichorn
defe4a0f8c
Improvements to Themes 2023-09-06 16:36:29 -05:00
arichorn
7681af2aaf
v18.34.5-3.0.1 2023-09-05 22:45:21 -05:00
arichorn
65d96a84e1
Update Settings.xm 2023-09-05 22:14:06 -05:00
arichorn
359ce0e29d
Update uYouPlus.xm 2023-09-05 22:13:36 -05:00
arichorn
d8a0f921a4
Update Themes.xm 2023-09-05 22:12:08 -05:00
arichorn
5b1ff83bdd
Update Themes.xm 2023-09-05 21:32:50 -05:00
arichorn
2254c8511a
Update Makefile 2023-09-05 21:02:31 -05:00
arichorn
db1a29a0e3
Fix Native Dark Theme
This commit changes Old Dark Theme aswell.
2023-09-05 20:56:22 -05:00
arichorn
dd015adea7
Update uYouPlus.xm 2023-09-05 20:48:20 -05:00
arichorn
1d2be63a9e
Changes from qnblackcat/uYouPlus
I’m suspicious with the commit. Looks identical to my version.
2023-09-05 20:42:27 -05:00
arichorn
2bd5aed405
Update Localizable.strings 2023-09-05 20:39:40 -05:00
arichorn
c7d141c3d3
Update Localization 2023-09-05 20:38:04 -05:00
GitHub Actions
e5b3fdbb3b updated submodules 2023-09-06 01:37:53 +00:00
GitHub Actions
f6dc419db7 updated submodules 2023-09-05 00:53:59 +00:00
GitHub Actions
36c05f3678 updated submodules 2023-09-05 00:52:03 +00:00
GitHub Actions
0fac075d6c updated submodules 2023-09-05 00:36:31 +00:00
arichorn
fe0b4f7ab0
Fix broken options
Fix broken options related to the Sections DontEatMyContent, Return YouTube Dislike & YouPiP
2023-09-04 18:59:39 -05:00
GitHub Actions
91eb0d1a42 updated submodules 2023-09-04 23:04:11 +00:00
arichorn
cfcfcf05b2
Update uYouPlus.xm 2023-09-04 14:17:47 -05:00
arichorn
1a307df502
Merge pull request #100 from olivertzeng/patch-1
Update Localizable.strings
2023-09-04 11:50:06 -05:00
arichorn
8127b3da9d
Undo buildapp.yml changes 2023-09-04 11:46:57 -05:00
arichorn
432ebc879f
Merge branch 'qnblackcat:main' into main 2023-09-04 11:45:43 -05:00
GitHub Actions
cd401daa37 updated submodules 2023-09-04 02:05:51 +00:00
arichorn
9126bbe2b6
Temporary Update MrBeastify Tweak 2023-09-03 21:05:10 -05:00
arichorn
5819451c4f
Update Settings.xm 2023-09-03 19:04:37 -05:00
arichorn
1eff0b0fd4
Update Makefile 2023-09-03 18:53:54 -05:00
arichorn
63624a49f9
Update Settings.xm 2023-09-03 18:51:05 -05:00
arichorn
efeb36f1e6
New Options!
The new options shown in the code replaces the old option “Disabled Wifi Related Settings”
2023-09-03 18:38:02 -05:00
arichorn
d20263bf35
Update update-submodules.yml 2023-09-03 17:53:14 -05:00
GitHub Actions
0c414df932 Added submodule bundle 2023-09-03 22:51:39 +00:00
GitHub Actions
107a5e35d6 added MrBeastify submodule 2023-09-03 22:51:38 +00:00
arichorn
12f9830817
Update update-submodules.yml 2023-09-03 17:51:13 -05:00
arichorn
aa69f5161c
Updated update-submodules Template 2023-09-03 17:48:30 -05:00
arichorn
3c5c6536c0
Removed buildapp.sh
Unfortunately buildapp.sh is not working. So I recommend forking uYouPlusExtra and then building the ipa with GitHub Actions.
2023-09-03 17:21:02 -05:00
Oliver Tzeng
7af1e4368b
Update Localizable.strings
Missing strings lol
2023-09-03 15:52:37 +08:00
arichorn
c00a28aba9
Update YTColor Headers
Updated this so it’ll be able to do more changes related to the UI around the app.
2023-09-02 16:29:57 -05:00
arichorn
aaee12c551
Improved Hex Color 2023-09-02 13:04:14 -05:00
arichorn
7e8fbc10da
Removed all ColorContrastMode options
next I need to figure out how to implement the Hex Color for the new functionality of the tweak.
2023-09-02 09:58:02 -05:00
arichorn
10d879fe11
Deprecate ColorContrastMode
ColorContrastMode was something made by Dayanch96, an beloved extension to the LowContrastMode tweak. But as of September 1st 2023, it has been removed because of how tiring it is to modify and also having them here makes the code be over 1000+ lines. So ColorContrastMode will be replaced with Hex Color.
2023-09-01 23:41:47 -05:00
arichorn
3861f57711
New Tweak: YTNoTracking 2023-08-30 17:08:06 -05:00
arichorn
b3cb53e998
Updated YTShortsProgress to v1.0.3
This is my own version of YTShortsProgress, a contribution to PoomSmarts Tweak.

Changes:
Removed Flag `mobileShortsTablnlined` as a replacement for the new flag `mobileShortsTablnlinedExpandWatchOnDismiss`, the flag that I removed isn’t on the app anymore.

Added an Implementation to remove YouTube’s Tracking Parameters
2023-08-30 16:23:08 -05:00
arichorn
7f4faf44ed
LowContrastMode Improvements 2 2023-08-28 23:58:18 -05:00
arichorn
bbeb521b04
LowContrastMode Improvements 2023-08-28 19:18:57 -05:00
arichorn
29dcffb0e8
New Header - YTColor (for LowContrastMode v1.4.2) 2023-08-28 14:41:12 -05:00
arichorn
bbf056a051
LowContrastMode v1.4.2 2023-08-28 14:35:51 -05:00
arichorn
afe0955072
🔨 Update buildapp.yml Dependencies 2023-08-27 16:14:45 -05:00
arichorn
9c099faa10
Update update-submodules.yml 2023-08-27 16:12:55 -05:00
arichorn
fa6e26fa2e
Updated update-submodules template dependencies 2023-08-27 16:12:33 -05:00
arichorn
a39798499f
Disabled some OLED Dark Theme UI 2023-08-27 12:21:45 -05:00
arichorn
8777cf41fe
Update LowContrastMode.xm 2023-08-26 14:11:42 -05:00
arichorn
0a4e56c0c4
Fix LowContrastMode 2023-08-25 22:21:38 -05:00
arichorn
15051b2e42
v18.33.2-3.0.1 2023-08-25 20:58:24 -05:00
arichorn
b0341f5596
Update Makefile 2023-08-25 20:36:39 -05:00
GitHub Actions
1525f7c0fb updated submodules 2023-08-24 23:12:12 +00:00
arichorn
3ff69825b2
LowContrastMode v1.4.1 2023-08-23 20:27:38 -05:00
arichorn
cfac3d25e6
Revert OLED Dark Theme Modifications
I kept some of the modifications for OLED because it is important for it to function as intended.
2023-08-23 16:03:01 -05:00
arichorn
bf49a3a8d7
Reimplement Keychain Patch & Login Fix 2023-08-21 16:52:36 -05:00
arichorn
22f68d61e6
Update README.md 2023-08-20 04:06:47 -05:00
arichorn
70d757bc6f
Update update-submodules.yml 2023-08-19 23:04:44 -05:00
arichorn
13e72a298f
Target iOS 16.2 2023-08-19 22:50:17 -05:00
arichorn
8f2c87ce33
New iOS SDK (iOS 16.2)
uYouPlusExtra now uses a up to date SDK as of August 19th 2023
using the iOS 15.5 SDK is now not recommended for this tweak.
2023-08-19 22:49:34 -05:00
GitHub Actions
26cd4536cb Added bundles 2023-08-19 20:30:37 +00:00
GitHub Actions
254704fbd5 updated submodules 2023-08-19 20:30:36 +00:00
GitHub Actions
a6e87b94d5 added YTNoCommunityPosts submodule 2023-08-19 20:30:29 +00:00
arichorn
cee5ffca3c
Update update-submodules.yml 2023-08-19 15:29:49 -05:00
arichorn
42cad3f974
Create delete-workflow-runs.yml 2023-08-19 15:27:33 -05:00
arichorn
470e95e605
Downgrade Theos ⚠️
Theos had an update which breaks the building
this is why I downgraded it: https://github.com/arichorn/uYouPlusExtra/actions/runs/5651520528
2023-08-19 15:26:35 -05:00
arichorn
98085815f7
Readded uYouPlusExtra Makefile 2023-08-19 15:23:54 -05:00
arichorn
a9943de261
Refreshed uYouPlusExtra Branch
Branch has been refreshed to update to the latest commits from qnblackcat/uYouPlus to provide a more up-to-date experience.
2023-08-19 15:21:42 -05:00
62 changed files with 6070 additions and 742 deletions

View file

@ -1,11 +1,21 @@
# Original idea by @ISnackable. Thanks to him for handling the hardest parts!
# https://github.com/ISnackable/CercubePlus/blob/main/.github/workflows/Build.yml
# https://github.com/ISnackable/YTCubePlus/blob/main/.github/workflows/Build.yml
name: Build and Release uYouPlus
name: Build and Release uYouPlusExtra
on:
workflow_dispatch:
inputs:
sdk_version:
description: "iOS SDK version to be used during build"
default: "16.2"
required: true
type: string
youtube_version:
description: "The version of YouTube"
default: ""
required: true
type: string
uyou_version:
description: "The version of uYou"
default: "3.0.1"
@ -16,11 +26,11 @@ on:
default: ""
required: true
type: string
youtube_version:
description: "The version of YouTube"
default: ""
required: true
type: string
create_release:
description: "Create a draft release"
default: true
required: false
type: boolean
bundle_id:
description: "Modify the bundle ID. Not recommended"
default: "com.google.ios.youtube"
@ -31,11 +41,6 @@ on:
default: "YouTube"
required: true
type: string
create_release:
description: "Create a draft release"
default: true
required: false
type: boolean
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
@ -44,50 +49,51 @@ concurrency:
jobs:
build:
name: Build uYouPlus
runs-on: macos-11
runs-on: macos-latest
permissions:
contents: write
steps:
- name: Install Dependencies
run: brew install bzip2 curl dpkg jq ldid make node svn wget xz
- name: Set PATH environment variable
run: echo "$(brew --prefix make)/libexec/gnubin" >> $GITHUB_PATH
- name: Checkout Main
uses: actions/checkout@v3.2.0
uses: actions/checkout@v4.1.1
with:
path: main
submodules: recursive
- name: Install Dependencies
run: brew install ldid dpkg make
- name: Set PATH environment variable
run: echo "$(brew --prefix make)/libexec/gnubin" >> $GITHUB_PATH
- name: Setup Theos
uses: actions/checkout@v3.2.0
uses: actions/checkout@v4.1.1
with:
repository: theos/theos
ref: master
ref: 3da31488281ecf4394d10302d2629607f4a1aa07
path: theos
submodules: recursive
- name: Caching
- name: SDK Caching
id: SDK
uses: actions/cache@v3.2.0
uses: actions/cache@v3.3.2
env:
cache-name: iOS-15.5-SDK
cache-name: iOS-${{ inputs.sdk_version }}-SDK
with:
path: theos/sdks/
key: ${{ env.cache-name }}
restore-keys: ${{ env.cache-name }}
- name: Download iOS 15.5 SDK
- name: Download iOS SDK
if: steps.SDK.outputs.cache-hit != 'true'
run: |
svn checkout -q https://github.com/chrisharper22/sdks/trunk/iPhoneOS15.5.sdk
svn checkout -q https://github.com/arichorn/sdks/trunk/iPhoneOS${{ inputs.sdk_version }}.sdk
mv *.sdk $THEOS/sdks
env:
THEOS: ${{ github.workspace }}/theos
- name: Setup Theos Jailed
uses: actions/checkout@v3.2.0
uses: actions/checkout@v4.1.1
with:
repository: qnblackcat/theos-jailed
ref: master
@ -116,7 +122,7 @@ jobs:
sed -i '' "27s#.*#BUNDLE_ID = ${{ env.BUNDLE_ID }}#g" Makefile
sed -i '' "26s#.*#DISPLAY_NAME = ${{ env.APP_NAME }}#g" Makefile
make package IPA=YouTube.ipa FINALPACKAGE=1
(mv "packages/$(ls -t packages | head -n1)" "packages/uYouPlus_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }}.ipa")
(mv "packages/$(ls -t packages | head -n1)" "packages/uYouPlusExtra_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }}.ipa")
echo "package=$(ls -t packages | head -n1)" >>$GITHUB_OUTPUT
echo -e "==> \033[1mSHASUM256: $(shasum -a 256 packages/*.ipa | cut -f1 -d' ')\033[0m"
echo -e "==> \033[1mBundle ID: ${{ env.BUNDLE_ID }}\033[0m"
@ -129,12 +135,12 @@ jobs:
APP_NAME: ${{ inputs.app_name }}
- name: Upload Artifact
uses: actions/upload-artifact@v3.1.1
uses: actions/upload-artifact@v3.1.3
env:
UYOU_VERSION: ${{ inputs.uyou_version }}
YOUTUBE_VERSION: ${{ inputs.youtube_version }}
with:
name: uYouPlus_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }}
name: uYouPlusExtra_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }}
path: ${{ github.workspace }}/main/packages/${{ steps.build_package.outputs.package }}
if-no-files-found: error

View file

@ -0,0 +1,59 @@
name: Delete Workflow Runs
on:
workflow_dispatch:
inputs:
days:
description: 'Number of days.'
required: true
default: 0
minimum_runs:
description: 'The minimum runs to keep for each workflow.'
required: true
default: 0
delete_workflow_pattern:
description: 'The name or filename of the workflow. if not set then it will target all workflows.'
required: false
delete_workflow_by_state_pattern:
description: 'Remove workflow by state: active, deleted, disabled_fork, disabled_inactivity, disabled_manually'
required: true
default: "All"
type: choice
options:
- "All"
- active
- deleted
- disabled_inactivity
- disabled_manually
delete_run_by_conclusion_pattern:
description: 'Remove workflow by conclusion: action_required, cancelled, failure, skipped, success'
required: true
default: "All"
type: choice
options:
- "All"
- action_required
- cancelled
- failure
- skipped
- success
dry_run:
description: 'Only log actions, do not perform any delete operations.'
required: false
jobs:
del_runs:
runs-on: ubuntu-latest
permissions:
actions: write
steps:
- name: Delete workflow runs
uses: Mattraks/delete-workflow-runs@v2
with:
token: ${{ github.token }}
repository: ${{ github.repository }}
retain_days: ${{ github.event.inputs.days }}
keep_minimum_runs: ${{ github.event.inputs.minimum_runs }}
delete_workflow_pattern: ${{ github.event.inputs.delete_workflow_pattern }}
delete_workflow_by_state_pattern: ${{ github.event.inputs.delete_workflow_by_state_pattern }}
delete_run_by_conclusion_pattern: ${{ github.event.inputs.delete_run_by_conclusion_pattern }}
dry_run: ${{ github.event.inputs.dry_run }}

View file

@ -1,43 +1,58 @@
---
name: Update submodules!
name: Update Submodules
#############################
# Start the job on all push #
#############################
on:
schedule:
- cron: "0 0 */7 * *"
workflow_dispatch:
###############
# Set the Job #
###############
jobs:
build:
name: Update submodules
update-submodules:
runs-on: ubuntu-latest
env:
PARENT_REPOSITORY: 'qnblackcat/uYouPlus'
CHECKOUT_BRANCH: 'main'
PR_AGAINST_BRANCH: 'main'
OWNER: 'qnblackcat'
steps:
##########################
# Checkout the code base #
##########################
- name: Checkout Code
uses: actions/checkout@v3
- name: Checkout code
uses: actions/checkout@v4.1.1
####################################
# Run the action against code base #
####################################
- name: run action
id: run_action
uses: qnblackcat/github-action-create-pr-parent-submodule@main
with:
github_token: ${{ secrets.RELEASE_HUB_SECRET }}
parent_repository: ${{ env.PARENT_REPOSITORY }}
checkout_branch: ${{ env.CHECKOUT_BRANCH }}
pr_against_branch: ${{ env.PR_AGAINST_BRANCH }}
owner: ${{ env.OWNER }}
- name: Set up Git
run: |
git config --global user.email "actions@github.com"
git config --global user.name "GitHub Actions"
- name: Update submodules
run: |
git submodule update --init --recursive --remote Tweaks/Alderis
git add .
git submodule update --init --recursive --remote Tweaks/DontEatMyContent
git add .
git submodule update --init --recursive --remote Tweaks/YTHoldForSpeed
git add .
git submodule update --init --recursive --remote Tweaks/PSHeader
git add .
git submodule update --init --recursive --remote Tweaks/Return-YouTube-Dislikes
git add .
git submodule update --init --recursive --remote Tweaks/YTABConfig
git add .
git submodule update --init --recursive --remote Tweaks/YTUHD
git add .
git submodule update --init --recursive --remote Tweaks/YTVideoOverlay
git add .
git submodule update --init --recursive --remote Tweaks/YouMute
git add .
git submodule update --init --recursive --remote Tweaks/YouPiP
git add .
git submodule update --init --recursive --remote Tweaks/YouQuality
git add .
git submodule update --init --recursive --remote Tweaks/YouTubeHeader
git add .
git submodule update --init --recursive --remote Tweaks/iSponsorBlock
git add .
git submodule update --init --recursive
git commit -m "updated submodules"
git push
continue-on-error: true
- name: Check exit code
run: |
exit_code=$?
if [ $exit_code -ne 0 ]; then
echo "Submodule update failed with exit code $exit_code"
exit 1
fi

19
.gitmodules vendored
View file

@ -20,8 +20,8 @@
branch = main
[submodule "Tweaks/Return-YouTube-Dislikes"]
path = Tweaks/Return-YouTube-Dislikes
url = https://github.com/PoomSmart/Return-YouTube-Dislikes.git
branch = main
url = https://github.com/arichorn/Return-YouTube-Dislikes.git
branch = uYouPlusExtra
[submodule "Tweaks/YouTubeHeader"]
path = Tweaks/YouTubeHeader
url = https://github.com/PoomSmart/YouTubeHeader.git
@ -36,11 +36,8 @@
branch = main
[submodule "Tweaks/YTABConfig"]
path = Tweaks/YTABConfig
url = https://github.com/PoomSmart/YTABConfig.git
url = https://github.com/arichorn/YTABConfig.git
branch = main
[submodule "Tweaks/FLEXing"]
path = Tweaks/FLEXing
url = https://github.com/NSExceptional/FLEXing
[submodule "Tweaks/Alderis"]
path = Tweaks/Alderis
url = https://github.com/hbang/Alderis.git
@ -54,3 +51,13 @@
path = Tweaks/iSponsorBlock
url = https://github.com/Galactic-Dev/iSponsorBlock.git
branch = master
[submodule "Tweaks/MrBeastify"]
path = Tweaks/MrBeastify
url = https://github.com/arichorn/MrBeastify.git
branch = main
[submodule "Tweaks/FLEXing"]
path = Tweaks/FLEXing
url = https://github.com/PoomSmart/FLEXing
[submodule "Tweaks/YTHoldForSpeed"]
path = Tweaks/YTHoldForSpeed
url = https://github.com/arichorn/YTHoldForSpeed.git

View file

@ -0,0 +1 @@
../Tweaks/YTHoldForSpeed/layout/Library/Application Support/YTHoldForSpeed.bundle

View file

@ -0,0 +1 @@
../Tweaks/YTNoCommunityPosts/layout/Library/Application Support/YTNoCommunityPosts.bundle

View file

@ -0,0 +1 @@
../Tweaks/YTVideoOverlay/layout/Library/Application Support/YTVideoOverlay.bundle

1
Bundles/YouMute.bundle Symbolic link
View file

@ -0,0 +1 @@
../Tweaks/YouMute/layout/Library/Application Support/YouMute.bundle

1
Bundles/YouQuality.bundle Symbolic link
View file

@ -0,0 +1 @@
../Tweaks/YouQuality/layout/Library/Application Support/YouQuality.bundle

View file

@ -1,4 +1,4 @@
export TARGET = iphone:clang:15.5:14.0
export TARGET = iphone:clang:16.2:14.0
export ARCHS = arm64
export libcolorpicker_ARCHS = arm64
@ -14,7 +14,7 @@ MODULES = jailed
endif
ifndef YOUTUBE_VERSION
YOUTUBE_VERSION = 18.32.2
YOUTUBE_VERSION = 18.46.3
endif
ifndef UYOU_VERSION
UYOU_VERSION = 3.0.1
@ -26,10 +26,10 @@ TWEAK_NAME = uYouPlus
DISPLAY_NAME = YouTube
BUNDLE_ID = com.google.ios.youtube
$(TWEAK_NAME)_FILES = uYouPlus.xm Settings.xm
$(TWEAK_NAME)_FILES = uYouPlus.xm Settings.xm $(shell find Source -name '*.xm' -o -name '*.x' -o -name '*.m')
$(TWEAK_NAME)_FRAMEWORKS = UIKit Security
$(TWEAK_NAME)_CFLAGS = -fobjc-arc -DTWEAK_VERSION=\"$(PACKAGE_VERSION)\"
$(TWEAK_NAME)_INJECT_DYLIBS = Tweaks/uYou/Library/MobileSubstrate/DynamicLibraries/uYou.dylib $(THEOS_OBJ_DIR)/libFLEX.dylib $(THEOS_OBJ_DIR)/iSponsorBlock.dylib $(THEOS_OBJ_DIR)/YouPiP.dylib $(THEOS_OBJ_DIR)/YouTubeDislikesReturn.dylib $(THEOS_OBJ_DIR)/YTABConfig.dylib $(THEOS_OBJ_DIR)/YTUHD.dylib $(THEOS_OBJ_DIR)/DontEatMyContent.dylib
$(TWEAK_NAME)_INJECT_DYLIBS = Tweaks/uYou/Library/MobileSubstrate/DynamicLibraries/uYou.dylib $(THEOS_OBJ_DIR)/libFLEX.dylib $(THEOS_OBJ_DIR)/iSponsorBlock.dylib $(THEOS_OBJ_DIR)/YouPiP.dylib $(THEOS_OBJ_DIR)/YouTubeDislikesReturn.dylib $(THEOS_OBJ_DIR)/YTABConfig.dylib $(THEOS_OBJ_DIR)/YTUHD.dylib $(THEOS_OBJ_DIR)/DontEatMyContent.dylib .theos/obj/YTHoldForSpeed.dylib $(THEOS_OBJ_DIR)/YTNoCommunityPosts.dylib $(THEOS_OBJ_DIR)/YTVideoOverlay.dylib $(THEOS_OBJ_DIR)/YouMute.dylib $(THEOS_OBJ_DIR)/YouQuality.dylib
$(TWEAK_NAME)_EMBED_LIBRARIES = $(THEOS_OBJ_DIR)/libcolorpicker.dylib
$(TWEAK_NAME)_EMBED_FRAMEWORKS = $(_THEOS_LOCAL_DATA_DIR)/$(THEOS_OBJ_DIR_NAME)/install/Library/Frameworks/Alderis.framework
$(TWEAK_NAME)_EMBED_BUNDLES = $(wildcard Bundles/*.bundle)
@ -37,7 +37,7 @@ $(TWEAK_NAME)_EMBED_EXTENSIONS = $(wildcard Extensions/*.appex)
include $(THEOS)/makefiles/common.mk
ifneq ($(JAILBROKEN),1)
SUBPROJECTS += Tweaks/Alderis Tweaks/FLEXing/libflex Tweaks/iSponsorBlock Tweaks/Return-YouTube-Dislikes Tweaks/YouPiP Tweaks/YTABConfig Tweaks/YTUHD Tweaks/DontEatMyContent Tweaks/YTVideoOverlay Tweaks/YouMute Tweaks/YouQuality
SUBPROJECTS += Tweaks/Alderis Tweaks/FLEXing/libflex Tweaks/iSponsorBlock Tweaks/Return-YouTube-Dislikes Tweaks/YouPiP Tweaks/YTABConfig Tweaks/YTUHD Tweaks/DontEatMyContent Tweaks/YTHoldForSpeed Tweaks/YTVideoOverlay Tweaks/YouMute Tweaks/YouQuality
include $(THEOS_MAKE_PATH)/aggregate.mk
endif
include $(THEOS_MAKE_PATH)/tweak.mk
@ -61,8 +61,8 @@ before-all::
fi
before-all::
@if [[ ! -f $(UYOU_DEB) ]]; then \
curl -s https://miro92.com/repo/debs/com.miro.uyou_$(UYOU_VERSION)_iphoneos-arm.deb -o $(UYOU_DEB); \
fi; \
curl -s -L "https://www.dropbox.com/scl/fi/5f0esi1en9so7t8lhmyjm/com.miro.uyou_$(UYOU_VERSION)_iphoneos-arm.deb?rlkey=00nncobda6tcfvhzid5or1lnn&dl=1" -o $(UYOU_DEB); \
fi; \
if [[ ! -f $(UYOU_DYLIB) || ! -d $(UYOU_BUNDLE) ]]; then \
tar -xf Tweaks/uYou/com.miro.uyou_$(UYOU_VERSION)_iphoneos-arm.deb -C Tweaks/uYou; tar -xf Tweaks/uYou/data.tar* -C Tweaks/uYou; \
if [[ ! -f $(UYOU_DYLIB) || ! -d $(UYOU_BUNDLE) ]]; then \

291
README.md
View file

@ -1,134 +1,180 @@
![IMG_2196](https://user-images.githubusercontent.com/52943116/189822859-8a0952db-9264-4b5b-9cbe-d0a87b2db5a0.PNG)
***
<h4> What shall be the new Tweak Name to replace the name uYouPlusExtra? https://github.com/arichorn/uYouPlusExtra/discussions/236 </h4>
<p align="center">
<img src="https://img.shields.io/badge/Platform-iOS%20%7C%20iPadOS%2014.0%2B-yellow" alt="Badge"/>
<a href="https://github.com/qnblackcat/uYouPlus/wiki/FAQ"><img src="https://img.shields.io/badge/Question%3F-FAQ-yellow" alt="Badge"></img></a>
<a href="https://github.com/qnblackcat/uYouPlus/wiki/FAQ"><img src="https://custom-icon-badges.demolab.com/badge/translate-blue.svg?logo=translate&logoColor=white" alt="Badge"></img></a>
<a href="https://user-images.githubusercontent.com/78001398/271790092-006e81cc-715a-4fbc-aff6-15832e2da8c4.png">
<img src="https://user-images.githubusercontent.com/78001398/271790092-006e81cc-715a-4fbc-aff6-15832e2da8c4.png" alt="UYOUPLUS_LOGO" width="200" height="200">
</a>
</p>
<p align="center">
<a href="https://github.com/qnblackcat/uYouPlus/releases/latest"><img src="https://custom-icon-badges.demolab.com/github/v/release/qnblackcat/uYouPlus?color=brightgreen&label=Latest%20release" alt="Badge"></img></a>
<a href="https://github.com/qnblackcat/uYouPlus/releases/latest"><img src="https://img.shields.io/github/downloads/qnblackcat/uYouPlus/total?label=Download" alt="Badge"></img></a>
<a href="https://github.com/qnblackcat/uYouPlus/commit"><img src="https://custom-icon-badges.demolab.com/github/last-commit/qnblackcat/uYouPlus?logo=history&logoColor=white&label=Last commit" alt="Badge"></img></a>
<a href="https://github.com/qnblackcat/uYouPlus/issues"><img src="https://custom-icon-badges.demolab.com/github/issues-raw/qnblackcat/uYouPlus?logo=issue-opened&label=Issues" alt="Badge"></img></a>
<a href="https://user-images.githubusercontent.com/52943116/189822859-8a0952db-9264-4b5b-9cbe-d0a87b2db5a0.PNG">
<img src="https://user-images.githubusercontent.com/78001398/271856328-dc45c8de-fb9c-403f-b287-3b9b270b84eb.png" alt="UYOUPLUS_SCREENSHOTS">
</a>
</p>
<p align="center">
<img src="https://img.shields.io/github/stars/qnblackcat/uYouPlus?style=social" alt="Badge"/>
<img src="https://img.shields.io/github/forks/qnblackcat/uYouPlus?style=social" alt="Badge"/>
<a href="https://github.com/qnblackcat/uYouPlus#support-the-developers"><img src="https://img.shields.io/badge/-Support-lightgrey?style=social&logo=paypal" alt="Badge"></img></a>
<img src="https://img.shields.io/badge/Platform-iOS%20%7C%20iPadOS%2014.0%2B-yellow?logo=apple&logoColor=darkgray" alt="Platform Badge">
</p>
<p align="center">
<a href="https://github.com/arichorn/uYouPlusExtra/releases/latest"><img src="https://custom-icon-badges.demolab.com/github/v/release/arichorn/uYouPlusExtra?logo=youtube&color=%23e81e8a&label=Latest%20Release" alt="Latest Release Badge"></a>
<a href="https://github.com/arichorn/uYouPlusExtra/releases/latest"><img src="https://img.shields.io/github/downloads/qnblackcat/uYouPlus/total?color=%23e81e8a&label=Downloads&logo=cloudsmith&logoColor=white" alt="Download Badge"></a>
<a href="https://github.com/arichorn/uYouPlusExtra/commit"><img src="https://custom-icon-badges.demolab.com/github/last-commit/arichorn/uYouPlusExtra?logo=history&logoColor=white&color=%23e81e8a&label=Last%20Commit" alt="Last Commit Badge"></a>
<a href="https://github.com/arichorn/uYouPlusExtra/issues"><img src="https://custom-icon-badges.demolab.com/github/issues-raw/arichorn/uYouPlusExtra?logo=issue-opened&logoColor=white&color=%23e81e8a&label=Issues" alt="Issues Badge"></a>
</p>
<p align="center">
<a href="https://github.com/arichorn/uYouPlusExtra/stargazers"><img src="https://custom-icon-badges.demolab.com/github/stars/arichorn/uYouPlusExtra?logo=star&logoColor=white&color=%23e81e8a&label=Stars" alt="Stars Badge"></img></a>
<a href="https://github.com/arichorn/uYouPlusExtra/network/members"><img src="https://custom-icon-badges.demolab.com/github/forks/arichorn/uYouPlusExtra?logo=github&logoColor=white&color=%23e81e8a&label=Forks"></a>
</p>
# Table of Contents
* [Credits](#credits)
* [Features](#features)
* [Known issues](#known-issues)
* [Download](#download)
* [Installation](#installation)
* [Support the developers!](#support-the-developers)
* [FAQ](#faq)
* [Building](#building-optional)
[![Credits](https://img.shields.io/badge/Credits-blue?style=flat)](#credits)<br>
[![Features](https://img.shields.io/badge/Features-blue?style=flat)](#features)<br>
[![Known Issues](https://img.shields.io/badge/Known%20Issues-blue?style=flat)](#known-issues)<br>
[![Download](https://img.shields.io/badge/Download-blue?style=flat)](#download)<br>
[![Installation](https://img.shields.io/badge/Installation-blue?style=flat)](#installation)<br>
[![Support the Developers](https://img.shields.io/badge/Support%20the%20Developers-blue?style=flat)](#support-the-developers)<br>
[![FAQ](https://img.shields.io/badge/FAQ-blue?style=flat)](#faq)<br>
[![Building (Optional)](https://img.shields.io/badge/Building%20%28Optional%29-blue?style=flat)](#building-optional)
# Credits
- Special thanks to all the developers who have contributed to uYouPlus!
- Special thanks to all the developers who have worked on uYouPlus/uYouPlusExtra!
<table id='credit'>
<tr>
<td id='miro92'>
<td align="center">
<a href='https://github.com/MiRO92'>
<img src='https://github.com/MiRO92.png' width='140px;'>
<img src='https://user-images.githubusercontent.com/78001398/271811861-da79accc-095c-4cb3-b7b4-8d48b1449259.png' width='110px'>
</a>
<h4 align='center'><a href='https://twitter.com/miro92'>MiRO92</a></h4>
<br>
<a href='https://twitter.com/miro92'>MiRO92</a>
</td>
<td id='poomsmart'>
<td align="center">
<a href='https://github.com/qnblackcat'>
<img src='https://user-images.githubusercontent.com/78001398/271812521-e52ebf96-7272-4ec0-a149-8e721c053508.png' width='110px'>
</a>
<br>
<a href='https://twitter.com/qnblackcat'>qnblackcat</a>
</td>
<td align="center">
<a href='https://github.com/PoomSmart'>
<img src='https://github.com/PoomSmart.png' width='140px;'>
<img src='https://user-images.githubusercontent.com/78001398/271811615-96093202-4aec-4e50-a750-8c7b83f3862c.png' width='110px'>
</a>
<h4 align='center'><a href='https://twitter.com/poomsmart'>PoomSmart</a></h4>
<br>
<a href='https://twitter.com/poomsmart'>PoomSmart</a>
</td>
<td id='level3tjg'>
<td align="center">
<a href='https://github.com/level3tjg'>
<img src='https://github.com/level3tjg.png' width='140px;'>
<img src='https://user-images.githubusercontent.com/78001398/271812596-7854996a-3825-4971-a9ff-1001b4d153cb.png' width='110px'>
</a>
<h4 align='center'><a href='https://twitter.com/level3tjg'>level3tjg</a></h4>
<br>
<a href='https://twitter.com/level3tjg'>level3tjg</a>
</td>
<td id='bandarHL'>
<td align="center">
<a href='https://github.com/BandarHL'>
<img src='https://github.com/BandarHL.png' width='140px;'>
<img src='https://user-images.githubusercontent.com/78001398/271812729-2bb63da0-5239-43a4-aa3e-e1daa67e8dc2.png' width='110px'>
</a>
<h4 align='center'><a href='https://twitter.com/bandarhl'>BandarHelal</a></h4>
<br>
<a href='https://twitter.com/bandarhl'>BandarHelal</a>
</td>
<td id='galactic-dev'>
<td align="center">
<a href='https://github.com/Galactic-Dev'>
<img src='https://github.com/Galactic-Dev.png' width='140px;'>
<img src='https://user-images.githubusercontent.com/78001398/271812231-5b7d5d9f-6d19-4174-8478-8f07379ee1ca.png' width='110px'>
</a>
<h4 align='center'><a href='https://twitter.com/dev_galactic'>galactic</a></h4>
<br>
<a href='https://twitter.com/dev_galactic'>galactic</a>
</td>
</tr>
<tr>
<td id='julioverne'>
<td align="center">
<a href='https://github.com/julioverne'>
<img src='https://github.com/julioverne.png' width='140px;'>
<img src='https://user-images.githubusercontent.com/78001398/271812914-bf26d603-2d94-49f4-9702-f5e66af3f44a.png' width='110px'>
</a>
<h4 align='center'><a href='https://twitter.com/ijulioverne'>julioverne</a></h4>
<br>
<a href='https://twitter.com/ijulioverne'>julioverne</a>
</td>
<td id='hbang'>
<td align="center">
<a href='https://github.com/hbang'>
<img src='https://github.com/hbang.png' width='140px;'>
<img src='https://user-images.githubusercontent.com/78001398/271813035-2e168ee5-fc47-43a6-9307-0fc20c7fca60.png' width='110px'>
</a>
<h4 align='center'><a href='https://twitter.com/hashbang'>HASHBANG</a></h4>
<br>
<a href='https://twitter.com/hashbang'>HASHBANG</a>
</td>
<td id='lyvendia'>
<td align="center">
<a href='https://github.com/Lyvendia'>
<img src='https://github.com/Lyvendia.png' width='140px;'>
<img src='https://user-images.githubusercontent.com/78001398/271812187-1c0d5b24-caba-4616-b875-4c458d10ca55.png' width='110px'>
</a>
<h4 align='center'><a href='https://github.com/Lyvendia'>Lyvendia</a></h4>
<br>
<a href='https://github.com/Lyvendia'>Lyvendia</a>
</td>
<td id='foxster'>
<td align="center">
<a href='https://github.com/therealFoxster'>
<img src='https://github.com/therealFoxster.png' width='140px;'>
<img src='https://user-images.githubusercontent.com/78001398/271812075-923038a7-5ffa-4ea4-9de4-fdf4e5d556c2.png' width='110px'>
</a>
<h4 align='center'><a href='https://twitter.com/therealFoxster'>Foxster</a></h4>
<br>
<a href='https://twitter.com/therealFoxster'>Foxster</a>
</td>
<td id='ichitaso'>
<td align="center">
<a href='https://github.com/ichitaso'>
<img src='https://github.com/ichitaso.png' width='140px;'>
<img src='https://user-images.githubusercontent.com/78001398/271812398-c7e40fa3-4e0b-4be2-aa51-900444d59abd.png' width='110px'>
</a>
<h4 align='center'><a href='https://twitter.com/ichitaso'>ichitaso</a></h4>
<br>
<a href='https://twitter.com/ichitaso'>ichitaso</a>
</td>
<td align="center">
<a href='https://github.com/AhmedBafkir'>
<img src='https://user-images.githubusercontent.com/78001398/271813114-dcb005f7-b83b-40e6-a9cb-9b661dd6b33b.png' width='110px'>
</a>
<br>
<a href='https://twitter.com/Peaceful_0'>Ahmed Bafkir</a>
</td>
</tr>
<tr>
<td id='ahmed-bafkir'>
<a href='https://github.com/AhmedBafkir'>
<img src='https://github.com/AhmedBafkir.png' width='140px;'>
</a>
<h4 align='center'><a href='https://twitter.com/Peaceful_0'>Ahmed Bafkir</a></h4>
</td>
<td id='cokepokes'>
<td align="center">
<a href='https://github.com/CokePokes'>
<img src='https://github.com/CokePokes.png' width='140px;'>
<img src='https://user-images.githubusercontent.com/78001398/271813228-d28471b4-cb67-442c-bd63-276f1641a14e.png' width='110px'>
</a>
<h4 align='center'><a href='https://twitter.com/cokepokes'>CokePokes</a></h4>
<br>
<a href='https://twitter.com/cokepokes'>CokePokes</a>
</td>
<td id='isnackable'>
<td align="center">
<a href='https://github.com/ISnackable'>
<img src='https://github.com/ISnackable.png' width='140px;'>
<img src='https://user-images.githubusercontent.com/78001398/271813311-2027a8de-a08d-4f1b-97a4-167f4bcef497.png' width='110px'>
</a>
<h4 align='center'><a href='https://isnackable.me/'>Tommy Teo</a></h4>
<br>
<a href='https://isnackable.me/'>Tommy Teo</a>
</td>
<td id='theos-team'>
<a href='https://github.com/theos/theos'>
<img src='https://github.com/theos.png' width='140px;'>
<td align="center">
<a href='https://github.com/dayanch96'>
<img src='https://user-images.githubusercontent.com/78001398/271853514-129334b3-498f-4804-aceb-392bf5e373e6.png' width='110px;'>
</a>
<h4 align='center'><a href='https://theos.dev'>theos</a></h4>
<br>
<a href='https://github.com/dayanch96'>dayanch96</a>
</td>
<td align="center">
<a href='https://github.com/ssuesskind'>
<img src='https://user-images.githubusercontent.com/78001398/271853585-77271641-b825-43b1-af57-d9f5b12fe8ff.png' width='110px;'>
</a>
<br>
<a href='https://github.com/ssuesskind'>ssuesskind</a>
</td>
<td align="center">
<a href='https://github.com/balackburn'>
<img src='https://user-images.githubusercontent.com/78001398/271853318-3005deb3-b484-4b2b-a093-44c2af79b9af.png' width='110px;'>
</a>
<br>
<a href='https://github.com/balackburn'>balackburn</a>
</td>
<td align="center">
<a href='https://github.com/theos/theos'>
<img src='https://user-images.githubusercontent.com/78001398/271813393-56a63730-a56d-41ba-b473-4d37761526c9.png' width='110px'>
</a>
<br>
<a href='https://theos.dev'>theos</a>
</td>
</tr>
</table>
@ -146,85 +192,96 @@
<details>
<summary>And many more...!</summary>
5. **YTClassicVideoQuality:** since YouTube v16.xx, you need one more step to change the video quality. YTClassicVideoQuality brings back the old video quality selector, which is a lot better than the new one.
5. **YTClassicVideoQuality:** Since YouTube v16.xx, changing video quality requires an extra step. YTClassicVideoQuality brings back the old video quality selector, which is more user-friendly than the new one.
6. **YTNoHoverCards:** offer an option to enable/disable the annoying suggested videos show up at the end of the videos.
6. **YTNoHoverCards:** This tweak offers the option to enable or disable the annoying suggested videos that appear at the end of YouTube videos.
7. **YouRememberCaption**: make YouTube remember your video caption setting (if not already).
7. **YouRememberCaption:** YouRememberCaption makes YouTube remember your video caption setting (if not already).
8. **NoYTPremium**: remove YouTube Premium upsells.
8. **NoYTPremium:** NoYTPremium removes YouTube Premium upsells, preventing the ads and promotions for YouTube Premium from appearing.
9. **YTSpeed**: add 2.25, 2.5, 2.75, and 3x playback speed
9. **YTSpeed:** YTSpeed adds additional playback speed options of 2.25x, 2.5x, 2.75x, 3x and more to the YouTube app, providing more flexibility in video playback speed.
10. **YTMiniplayerEnabler**: enable Miniplayer for all YouTube videos.
10. **YTMiniplayerEnabler:** YTMiniplayerEnabler enables the Miniplayer feature for all YouTube videos.
11. **DontEatMyContent**: prevent the notch/Dynamic Island from munching on 2:1 video content in YouTube.
11. **DontEatMyContent:** This tweak prevents the notch or Dynamic Island from obstructing 2:1 video content on YouTube, ensuring a better viewing experience.
12. **YTABConfig**: allow user to control over YouTube A/B testing flags.
12. **YTABConfig:** This tweak gives users control over YouTube's A/B testing flags, allowing them to enable or disable experimental features.
13. **YouMute**: mute YouTube videos via a button.
13. **YouMute:** YouMute provides a button to mute YouTube videos in the video player, offering a convenient way to toggle the audio on and off.
14. **YouQuality**: change video quality via a button.
14. **YouQuality:** YouQuality offers a button to change the video quality of YouTube videos in the video player, allowing quick access to different quality options.
15. **YTVideoOverlay**: add buttons to overlay the video.
15. **YTVideoOverlay:** YTVideoOverlay adds buttons to overlay the video, providing quick access to features like captions, speed control, and quality settings.
16. **LowContrastMode:** LowContrastMode is a tweak that allows users to darken the text in the YouTube app, making it easier to read. **<-- uYouPlusExtra Exclusive Feature (subject to change)**
</details>
# Known issues
# Known issues
- **uYou**: all the known-issues of uYou are listed [here](https://github.com/MiRO92/uYou-for-YouTube/issues). Make sure you take a look at it before reporting any bugs! ***Also, keep in mind that uYou+ is a modified version of uYou, DO NOT bother MiRO92 with problems unrelated to uYou!!!***
- **uYou**: All the known issues of uYou are listed [here](https://github.com/MiRO92/uYou-for-YouTube/issues). Make sure you take a look at it before reporting any bugs! Also, keep in mind that uYou+ is a modified version of uYou. DO NOT bother MiRO92 with problems unrelated to uYou!
- Issues that related to **uYouPlus** are [here](https://github.com/qnblackcat/uYouPlus/issues/)
- Issues related to **uYouPlus** can be found [here](https://github.com/qnblackcat/uYouPlus/issues/), or issues related to **uYouPlusExtra** can be found [here](https://github.com/arichorn/uYouPlusExtra/issues/).
# Download
- **uYouPlus** (or you can call it uYou+) requires iOS or iPadOS 14.0 or later. The latest version of **uYouPlus** can be found in the [Release tab](https://github.com/qnblackcat/uYouPlus/releases/latest).
- **uYouPlusExtra** (or you can just call it uYou+) requires iOS or iPadOS 14.0 or later. The latest version of **uYouPlusExtra** ipa can be found in the [Release tab](https://github.com/arichorn/uYouPlusExtra/releases/latest).
<!-- - For AltStore user:
- For AltStore user:
- My official AltStore repo: https://qnblackcat.github.io/AltStore/
- My official AltStore repo: https://therealfoxster.github.io/altsource-viewer/index.html?source=https://raw.githubusercontent.com/arichorn/arichorn.github.io/main/apps.json
- [Open in AltStore (v18.14.1-3.0)](https://tinyurl.com/yv6wrxjz) - It will take a while to install because AltStore needs to download the IPA first. -->
- [Open in AltStore (v18.46.3-3.0.1-F2)](https://tinyurl.com/mutewwdb) - It will take a while to install because AltStore needs to download the IPA first.
- Version info: _(last update: Aug 5)_
- Version info: _(last update: Dec 2 2023)_
<details>
<summary>Expand </summary>
| **Tweaks/App** | **Developer** | **Version** | **Open source** |
| - | - | :-: | :-: |
| **YouTube** | Google Inc | 18.30.7 | ✖︎ |
| [uYou](https://github.com/MiRO92/uYou-for-YouTube) | [MiRO92](https://twitter.com/miro92) | 3.0 | ✖︎ |
| **YouTube** | Google Inc | 18.46.3 | ✖︎ |
| [uYou](https://github.com/MiRO92/uYou-for-YouTube) | [MiRO92](https://twitter.com/miro92) | 3.0.1 | ✖︎ |
| **Open in YouTube** | [CokePokes](https://github.com/CokePokes) | 1.2 | [✔︎](https://github.com/CokePokes/YoutubeExtensions) |
| **iSponsorBlock** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.0-15 | [✔︎](https://github.com/Galactic-Dev/iSponsorBlock) |
| **iSponsorBlock** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.2.1 | [✔︎](https://github.com/Galactic-Dev/iSponsorBlock) |
| **BigYTMiniPlayer** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.0-1 | [✔︎](https://github.com/Galactic-Dev/BigYTMiniPlayer) |
| **YTNoHoverCards** | [level3tjg](https://twitter.com/level3tjg) | 0.0.3 | [✔︎](https://github.com/level3tjg/YTNoHoverCards) |
| **YTMiniplayerEnabler** | [level3tjg](https://twitter.com/level3tjg) | 0.0.2 | [✔︎](https://github.com/level3tjg/YTMiniplayerEnabler) |
| **DontEatMyContent** | [therealFoxster](https://github.com/therealFoxster) | 1.0.6 | [✔︎](https://github.com/therealFoxster/DontEatMyContent) |
| **DontEatMyContent** | [therealFoxster](https://github.com/therealFoxster) | 1.0.11 | [✔︎](https://github.com/therealFoxster/DontEatMyContent) |
| **YTSpeed** | [Lyvendia](https://github.com/Lyvendia) | 1.0.1 | [✔︎](https://github.com/Lyvendia/YTSpeed) |
| **YTCastConfirm** | [JamieBerghmans](https://github.com/JamieBerghmans) | 1.0.0 | [✔︎](https://github.com/JamieBerghmans/YTCastConfirm) |
| **Alderis Color Picker** | [HASHBANG Productions](https://github.com/hbang) | 1.2| [✔︎](https://github.com/hbang/Alderis) |
| **YTUHD** | [PoomSmart](https://twitter.com/poomsmart) | 1.3.5-1 | [✔︎](https://github.com/PoomSmart/YTUHD) |
| **YouPiP** | [PoomSmart](https://twitter.com/poomsmart) | 1.7.19-1 | [✔︎](https://github.com/PoomSmart/YouPiP) |
| **Alderis Color Picker** | [HASHBANG Productions](https://github.com/hbang) | 1.2 | [✔︎](https://github.com/hbang/Alderis) |
| **YTUHD** | [PoomSmart](https://twitter.com/poomsmart) | 1.4.0-1 | [✔︎](https://github.com/PoomSmart/YTUHD) |
| **YouPiP** | [PoomSmart](https://twitter.com/poomsmart) | 1.7.22 | [✔︎](https://github.com/PoomSmart/YouPiP) |
| **IAmYouTube** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.0 | [✔︎](https://github.com/PoomSmart/IAmYouTube) |
| **YTABConfig** | [PoomSmart](https://twitter.com/poomsmart) | 1.5.0 | [✔︎](https://github.com/PoomSmart/YTABConfig) |
| **YTABConfig** | [PoomSmart](https://twitter.com/poomsmart) | 1.5.0-2 | [✔︎](https://github.com/PoomSmart/YTABConfig) |
| **YTReExplore** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.2 | [✔︎](https://github.com/PoomSmart/YTReExplore) |
| **NoYTPremium** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.4 | [✔︎](https://github.com/PoomSmart/NoYTPremium) |
| **YTNoPaidPromo** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.0 | [✔︎](https://github.com/PoomSmart/YTNoPaidPromo) |
| **YouRememberCaption** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.0 | [✔︎](https://poomsmart.github.io/repo/depictions/youremembercaption.html) |
| **Return YouTube Dislike** | [PoomSmart](https://twitter.com/poomsmart) | 1.11.3 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) |
| **Return YouTube Dislike** | [PoomSmart](https://twitter.com/poomsmart) | 1.11.4 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) |
| **YouMute** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.1-2 | [✔︎](https://github.com/PoomSmart/YouMute) |
| **YouQuality** | [PoomSmart](https://twitter.com/poomsmart) | 1.1.4 | [✔︎](https://github.com/PoomSmart/YouQuality) |
| **YTVideoOverlay** | [PoomSmart](https://twitter.com/poomsmart) | 1.1.0-2 | [✔︎](https://github.com/PoomSmart/YTVideoOverlay) |
| **YTVideoOverlay** | [PoomSmart](https://twitter.com/poomsmart) | 1.1.1-1 | [✔︎](https://github.com/PoomSmart/YTVideoOverlay) |
| **YTHoldForSpeed** | [joshuaseltzer](https://github.com/joshuaseltzer) | 1.0.7 | [✔︎](https://github.com/joshuaseltzer/YTHoldForSpeed) |
| **LowContrastMode** | [arichorn](https://github.com/arichorn) | 1.5.1 | [✔︎](https://github.com/arichorn/YTLowContrastMode) |
</details>
# uYou Tweak Compatibility List
| Developer | Tweak Name and Version | App Version Compatibility | iOS Version Compatibility |
|-----------|-----------------------|--------------------------|--------------------------|
| MiRO92 | uYou 2.1/2.3~1 | v16.42.3 - 18.01.6 | iOS 13 - iOS 15 |
| MiRO92 | uYou 3.0 | v18.06.6 - 18.18.2 | iOS 14 - iOS 15 |
| MiRO92 | uYou 3.0.1 | v18.28.3 - v18.41.5 | iOS 14 - iOS 17 |
# Installation
See [Installation - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/Installation).
# Support the developers
- [**MiRO92**](https://twitter.com/miro92): https://github.com/MiRO92/uYou-for-YouTube#support
- [**Poomsmart**](https://twitter.com/poomsmart): https://poomsmart.github.io
- [**level3tjg**](https://twitter.com/level3tjg): https://ko-fi.com/level3tjg
- [**BandarHL**](https://twitter.com/bandarhl): https://www.paypal.com/paypalme/BandarHL
- [**julioverne**](https://twitter.com/ijulioverne): https://www.patreon.com/julioverne
@ -238,4 +295,32 @@ See [FAQ - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/FAQ).
# Building (optional)
See [Building - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/Building).
See [qnblackcat/Building - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/Building)
or [arichorn/Building - Wiki](https://github.com/arichorn/uYouPlusExtra/wiki/Building).
<details>
<summary>Balackburn's YTLitePlus</summary><br>
- Change from uYouPlus/uYouPlusExtra to YTLitePlus (optional)
Hello, this is here to showcase this tweak. I have been seeing the YTLitePlus tweak on Reddit for quite some time now and decided to join in. Before you download the tweak, you should take a look at the pros and cons below to learn more about the tweak.
https://github.com/Balackburn/YTLitePlus/releases
**Pros**
- YTLitePlus is stable and more customizable than uYouPlus/uYouPlusExtra.
- YTLitePlus provides more features in YTLite & YTLitePlus Sections in Settings that uYouPlus/uYouPlusExtra may not have.
- YTLitePlus includes a lightweight version of the App Version Spoofer, making it easier to use.
- YTLitePlus does not cause your device to overheat, unlike uYouPlusExtra.
**Cons**
- No custom video downloading feature in YTLitePlus.
- Video quality on WiFi option is not available in YTLitePlus.
- Reordering the pivot bar tabs such as Home, Shorts, Explore, Trending, Create, Subscriptions & You is not available in YTLitePlus.
</details>

20
SECURITY.md Normal file
View file

@ -0,0 +1,20 @@
# Security Policy for This Repostory
If I verify a reported security vulnerability, my policy is:
- Contributors are allowed to make patches only to the main branch, unless an additional branch is involved. This policy applies to the implementation of custom features/options, updated features/options, and grammar errors.
- uYouPlusExtra does not support Localization pull requests. While it may seem like a sudden change, maintaining localization becomes challenging when the branch needs to be reset due to the changes from qnblackcat/uYouPlus repostory. Therefore, it is difficult to preserve any localization changes that were added on uYouPlusExtra.
- The Users **qnblackcat** and **PoomSmart** are prohibited from utilizing any new code introduced in the uYouPlusExtra fork, but I'll allow you to use any type of submodules and allow you to utize the code you made. but Violation of this rule from the ones I don't allow will result in appropriate consequences, including but not limited to account suspension, access revocation, or other disciplinary actions as deemed necessary by the project administrators. Furthermore, it is strictly forbidden to publicly share or showcase the content of this policy on any social media platforms. Any breach of this restriction may result in similar disciplinary actions. This was policy was made to keep any rejected features on uYouPlusExtra.
## Supported Versions
these versions of the project are
currently being supported with security/feature updates.
| Version | LTS Support of the uYouPlusExtra Tweak | YT Version Supported by Google | App Stability | uYou Functionality |
| ------- | -------------------------------------- | ------------------------------ | -------------------- | ------------------ |
| [latest](https://github.com/arichorn/uYouPlusExtra/releases/latest) | ✅ | ✅ | The latest version is stable! |
| [18.08.1-3.0.1 LTS](https://github.com/arichorn/uYouPlusExtra/releases/tag/v18.08.1-3.0.1-F4) | ✅ | ✅ | This new LTS Release is only here to give users the version **18.08.1** of YouTube and also helps fix any new issues that uYou 3.0.1 Users originally had. |
| [17.38.10-2.1 LTS](https://github.com/arichorn/uYouPlusExtra/releases/latest) | N/A | ✅ | This new LTS Release will soon to replace and discontinue **16.42.3-2.1** next year. | uYou Video/Audio Downloading is Offline. / kCFErrorDomainCFNetwork error 303 🚫 |
| [16.42.3-2.1 LTS](https://github.com/arichorn/uYouPlusExtra/releases/tag/v16.42.3-2.1-F20) | Depends| ✅ until 2024+ | If you're using iOS 16 or later, please note that Stage Manager may not be sized correctly when videos are playing in the video player. Additionally, the App Pivot Bar may not hide correctly when playing videos. also iOS 16 or newer has compatibility issues of other factors within the app. However, this version of YouTube can still receive new some features from Google, such as Shorts, the Continue Watching Section, the Watch It Again Section, Handles, and more. Overall and the removal of the Channels & 'About Tabs in the Channel Page. and this YouTube version probably remains functional and up-to-date or probably still supported by Google. | uYou Video/Audio Downloading is Offline. / kCFErrorDomainCFNetwork error 303 🚫 |

File diff suppressed because it is too large Load diff

7
Source/Extractor.h Normal file
View file

@ -0,0 +1,7 @@
// Extractor.h was made by @LillieH1000 from https://www.github.com/LillieH1000/YouTube-Reborn
#import <Foundation/Foundation.h>
@interface Extractor : NSObject
+ (NSDictionary *)youtubePlayerRequest :(NSString *)client :(NSString *)videoID;
@end

44
Source/Extractor.xm Normal file
View file

@ -0,0 +1,44 @@
// Extractor.xm was made by @LillieH1000 from https://www.github.com/LillieH1000/YouTube-Reborn
#import "Extractor.h"
@implementation Extractor
+ (NSDictionary *)youtubePlayerRequest :(NSString *)client :(NSString *)videoID {
NSLocale *locale = [NSLocale currentLocale];
NSString *countryCode = [locale objectForKey:NSLocaleCountryCode];
NSURL *requestURL;
if ([client isEqual:@"android"]) {
requestURL = [NSURL URLWithString:@"https://www.youtube.com/youtubei/v1/player?key=AIzaSyA8eiZmM1FaDVjRy-df2KTyQ_vz_yYM39w&prettyPrint=false"];
} else if ([client isEqual:@"ios"]) {
requestURL = [NSURL URLWithString:@"https://www.youtube.com/youtubei/v1/player?key=AIzaSyB-63vPrdThhKuerbB2N_l7Kwwcxj6yUAc&prettyPrint=false"];
}
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:requestURL];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
if ([client isEqual:@"android"]) {
[request setValue:@"com.google.android.youtube/17.31.35 (Linux; U; Android 11) gzip" forHTTPHeaderField:@"User-Agent"];
NSString *jsonBody = [NSString stringWithFormat:@"{\"context\":{\"client\":{\"hl\":\"en\",\"gl\":\"%@\",\"clientName\":\"ANDROID\",\"clientVersion\":\"17.31.35\",\"androidSdkVersion\":30,\"playbackContext\":{\"contentPlaybackContext\":{\"vis\":0,\"splay\":false,\"autoCaptionsDefaultOn\":false,\"autonavState\":\"STATE_OFF\",\"signatureTimestamp\":\"sts\",\"html5Preference\":\"HTML5_PREF_WANTS\",\"lactMilliseconds\":\"-1\"}}}},\"contentCheckOk\":true,\"racyCheckOk\":true,\"videoId\":\"%@\"}", countryCode, videoID];
[request setHTTPBody:[jsonBody dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]];
} else if ([client isEqual:@"ios"]) {
[request setValue:@"com.google.ios.youtube/17.33.2 (iPhone14,3; U; CPU iOS 15_6 like Mac OS X)" forHTTPHeaderField:@"User-Agent"];
NSString *jsonBody = [NSString stringWithFormat:@"{\"context\":{\"client\":{\"hl\":\"en\",\"gl\":\"%@\",\"clientName\":\"IOS\",\"clientVersion\":\"17.33.2\",\"deviceModel\":\"iPhone14,3\",\"playbackContext\":{\"contentPlaybackContext\":{\"vis\":0,\"splay\":false,\"autoCaptionsDefaultOn\":false,\"autonavState\":\"STATE_OFF\",\"signatureTimestamp\":\"sts\",\"html5Preference\":\"HTML5_PREF_WANTS\",\"lactMilliseconds\":\"-1\"}}}},\"contentCheckOk\":true,\"racyCheckOk\":true,\"videoId\":\"%@\"}", countryCode, videoID];
[request setHTTPBody:[jsonBody dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]];
}
__block NSData *requestData;
__block BOOL requestFinished = NO;
[[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
requestData = data;
requestFinished = YES;
}] resume];
while (!requestFinished) {
[NSThread sleepForTimeInterval:0.02];
}
return [NSJSONSerialization JSONObjectWithData:requestData options:0 error:nil];
}
@end

View file

@ -0,0 +1,43 @@
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var colorButton: UIButton!
var textColor: UIColor = (red: 0.56, green: 0.56, blue: 0.56, alpha: 1.00)
override func viewDidLoad() {
super.viewDidLoad()
// Configure Text Field
textField.placeholder = "YouTube"
// Configure Color Button
colorButton.setTitleColor(textColor, for: .normal)
}
@IBAction func onColorButtonTap(_ sender: Any) {
let colorPicker = UIColorPickerViewController()
colorPicker.delegate = self
present(colorPicker, animated: true, completion: nil)
}
}
extension ViewController: UITextFieldDelegate {
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}
extension ViewController: UIColorPickerViewControllerDelegate {
func colorPickerViewControllerDidSelectColor(_ viewController: UIColorPickerViewController) {
textColor = viewController.selectedColor
colorButton.setTitleColor(textColor, for: .normal)
}
func colorPickerViewControllerDidFinish(_ viewController: UIColorPickerViewController) {
dismiss

580
Source/LowContrastMode.xm Normal file
View file

@ -0,0 +1,580 @@
#import "../uYouPlus.h"
//
static BOOL IsEnabled(NSString *key) {
return [[NSUserDefaults standardUserDefaults] boolForKey:key];
}
static int contrastMode() {
return [[NSUserDefaults standardUserDefaults] integerForKey:@"lcm"];
}
static BOOL lowContrastMode() {
return IsEnabled(@"lowContrastMode_enabled") && contrastMode() == 0;
}
/*
static BOOL customContrastMode() {
return IsEnabled(@"lowContrastMode_enabled") && contrastMode() == 1;
}
*/
UIColor *lcmHexColor;
%group gLowContrastMode // Low Contrast Mode v1.5.1 (Compatible with only YouTube v16.05.7-v17.38.10)
%hook UIColor
+ (UIColor *)whiteColor { // Dark Theme Color
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
}
+ (UIColor *)lightTextColor {
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
}
+ (UIColor *)lightGrayColor {
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
}
+ (UIColor *)ychGrey7 {
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
}
+ (UIColor *)skt_chipBackgroundColor {
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
}
+ (UIColor *)placeholderTextColor {
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
}
+ (UIColor *)systemLightGrayColor {
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
}
+ (UIColor *)systemExtraLightGrayColor {
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
}
+ (UIColor *)labelColor {
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
}
+ (UIColor *)secondaryLabelColor {
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
}
+ (UIColor *)tertiaryLabelColor {
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
}
+ (UIColor *)quaternaryLabelColor {
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
}
%end
%hook YTCommonColorPalette
- (UIColor *)textPrimary {
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)textSecondary {
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)overlayTextPrimary {
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)overlayTextSecondary {
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)iconActive {
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)iconActiveOther {
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)brandIconActive {
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)staticBrandWhite {
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)overlayIconActiveOther {
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)overlayIconInactive {
return self.pageStyle == 1 ? [[UIColor whiteColor] colorWithAlphaComponent:0.7] : %orig;
}
- (UIColor *)overlayIconDisabled {
return self.pageStyle == 1 ? [[UIColor whiteColor] colorWithAlphaComponent:0.3] : %orig;
}
- (UIColor *)overlayFilledButtonActive {
return self.pageStyle == 1 ? [[UIColor whiteColor] colorWithAlphaComponent:0.2] : %orig;
}
%end
%hook YTColor
+ (BOOL)darkerPaletteTextColorEnabled {
return NO;
}
+ (UIColor *)white2 {
return [UIColor whiteColor];
}
+ (UIColor *)white3 {
return [UIColor whiteColor];
}
+ (UIColor *)white4 {
return [UIColor whiteColor];
}
+ (UIColor *)white5 {
return [UIColor whiteColor];
}
+ (UIColor *)grey1 {
return [UIColor whiteColor];
}
+ (UIColor *)grey2 {
return [UIColor whiteColor];
}
%end
%hook QTMColorGroup
- (UIColor *)tint100 {
return [UIColor whiteColor];
}
- (UIColor *)tint300 {
return [UIColor whiteColor];
}
- (UIColor *)tint500 {
return [UIColor whiteColor];
}
- (UIColor *)tint700 {
return [UIColor whiteColor];
}
- (UIColor *)accent200 {
return [UIColor whiteColor];
}
- (UIColor *)accent400 {
return [UIColor whiteColor];
}
- (UIColor *)accentColor {
return [UIColor whiteColor];
}
- (UIColor *)brightAccentColor {
return [UIColor whiteColor];
}
- (UIColor *)regularColor {
return [UIColor whiteColor];
}
- (UIColor *)darkerColor {
return [UIColor whiteColor];
}
- (UIColor *)bodyTextColor {
return [UIColor whiteColor];
}
- (UIColor *)lightBodyTextColor {
return [UIColor whiteColor];
}
- (UIColor *)bodyTextColorOnRegularColor {
return [UIColor whiteColor];
}
- (UIColor *)bodyTextColorOnLighterColor {
return [UIColor whiteColor];
}
- (UIColor *)bodyTextColorOnDarkerColor {
return [UIColor whiteColor];
}
- (UIColor *)bodyTextColorOnAccentColor {
return [UIColor whiteColor];
}
- (UIColor *)buttonBackgroundColor {
return [UIColor whiteColor];
}
%end
%hook YTQTMButton
- (void)setImage:(UIImage *)image {
UIImage *currentImage = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
[self setTintColor:[UIColor whiteColor]];
%orig(currentImage);
}
%end
%hook UIExtendedSRGColorSpace
- (void)setTextColor:(UIColor *)textColor {
textColor = [[UIColor whiteColor] colorWithAlphaComponent:0.9];
%orig();
}
%end
%hook UIExtendedSRGBColorSpace
- (void)setTextColor:(UIColor *)textColor {
textColor = [[UIColor whiteColor] colorWithAlphaComponent:1.0];
%orig();
}
%end
%hook UIExtendedGrayColorSpace
- (void)setTextColor:(UIColor *)textColor {
textColor = [[UIColor whiteColor] colorWithAlphaComponent:1.0];
%orig();
}
%end
%hook VideoTitleLabel
- (void)setTextColor:(UIColor *)textColor {
textColor = [UIColor whiteColor];
%orig(textColor);
}
%end
%hook UILabel
+ (void)load {
@autoreleasepool {
[[UILabel appearance] setTextColor:[UIColor whiteColor]];
}
}
- (void)setTextColor:(UIColor *)textColor {
%log;
textColor = [UIColor whiteColor];
%orig(textColor);
}
%end
%hook UITextField
- (void)setTextColor:(UIColor *)textColor {
%log;
textColor = [UIColor whiteColor];
%orig(textColor);
}
%end
%hook UITextView
- (void)setTextColor:(UIColor *)textColor {
%log;
textColor = [UIColor whiteColor];
%orig(textColor);
}
%end
%hook UISearchBar
- (void)setTextColor:(UIColor *)textColor {
textColor = [UIColor whiteColor];
%orig(textColor);
}
%end
%hook UISegmentedControl
- (void)setTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state {
NSMutableDictionary *modifiedAttributes = [NSMutableDictionary dictionaryWithDictionary:attributes];
[modifiedAttributes setObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName];
%orig(modifiedAttributes, state);
}
%end
%hook UIButton
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state {
color = [UIColor whiteColor];
%orig(color, state);
}
%end
%hook UIBarButtonItem
- (void)setTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state {
NSMutableDictionary *modifiedAttributes = [NSMutableDictionary dictionaryWithDictionary:attributes];
[modifiedAttributes setObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName];
%orig(modifiedAttributes, state);
}
%end
%hook NSAttributedString
- (instancetype)initWithString:(NSString *)str attributes:(NSDictionary<NSAttributedStringKey, id> *)attrs {
NSMutableDictionary *modifiedAttributes = [NSMutableDictionary dictionaryWithDictionary:attrs];
[modifiedAttributes setObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName];
return %orig(str, modifiedAttributes);
}
%end
%hook CATextLayer
- (void)setTextColor:(CGColorRef)textColor {
%orig([UIColor whiteColor].CGColor);
}
%end
%hook ASTextNode
- (NSAttributedString *)attributedString {
NSAttributedString *originalAttributedString = %orig;
NSMutableAttributedString *newAttributedString = [originalAttributedString mutableCopy];
[newAttributedString addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(0, newAttributedString.length)];
return newAttributedString;
}
%end
%hook ASTextFieldNode
- (void)setTextColor:(UIColor *)textColor {
%orig([UIColor whiteColor]);
}
%end
%hook ASTextView
- (void)setTextColor:(UIColor *)textColor {
%orig([UIColor whiteColor]);
}
%end
%hook ASButtonNode
- (void)setTextColor:(UIColor *)textColor {
%orig([UIColor whiteColor]);
}
%end
%end
/*
%group gCustomContrastMode // Custom Contrast Mode (Hex Color)
%hook UIColor
+ (UIColor *)whiteColor {
return lcmHexColor;
}
+ (UIColor *)lightTextColor {
return lcmHexColor;
}
+ (UIColor *)lightGrayColor {
return lcmHexColor;
}
+ (UIColor *)ychGrey7 {
return lcmHexColor;
}
+ (UIColor *)skt_chipBackgroundColor {
return lcmHexColor;
}
+ (UIColor *)placeholderTextColor {
return lcmHexColor;
}
+ (UIColor *)systemLightGrayColor {
return lcmHexColor;
}
+ (UIColor *)systemExtraLightGrayColor {
return lcmHexColor;
}
+ (UIColor *)labelColor {
return lcmHexColor;
}
+ (UIColor *)secondaryLabelColor {
return lcmHexColor;
}
+ (UIColor *)tertiaryLabelColor {
return lcmHexColor;
}
+ (UIColor *)quaternaryLabelColor {
return lcmHexColor;
}
%end
%hook YTCommonColorPalette
- (UIColor *)textPrimary {
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)textSecondary {
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)overlayTextPrimary {
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)overlayTextSecondary {
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)iconActive {
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)iconActiveOther {
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)brandIconActive {
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)staticBrandWhite {
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)overlayIconActiveOther {
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)overlayIconInactive {
return self.pageStyle == 1 ? [[UIColor whiteColor] colorWithAlphaComponent:0.7] : %orig;
}
- (UIColor *)overlayIconDisabled {
return self.pageStyle == 1 ? [[UIColor whiteColor] colorWithAlphaComponent:0.3] : %orig;
}
- (UIColor *)overlayFilledButtonActive {
return self.pageStyle == 1 ? [[UIColor whiteColor] colorWithAlphaComponent:0.2] : %orig;
}
%end
%hook YTColor
+ (BOOL)darkerPaletteTextColorEnabled {
return NO;
}
+ (UIColor *)white2 {
return [UIColor whiteColor];
}
+ (UIColor *)white3 {
return [UIColor whiteColor];
}
+ (UIColor *)white4 {
return [UIColor whiteColor];
}
+ (UIColor *)white5 {
return [UIColor whiteColor];
}
+ (UIColor *)grey1 {
return [UIColor whiteColor];
}
+ (UIColor *)grey2 {
return [UIColor whiteColor];
}
%end
%hook QTMColorGroup
- (UIColor *)tint100 {
return [UIColor whiteColor];
}
- (UIColor *)tint300 {
return [UIColor whiteColor];
}
- (UIColor *)tint500 {
return [UIColor whiteColor];
}
- (UIColor *)tint700 {
return [UIColor whiteColor];
}
- (UIColor *)accent200 {
return [UIColor whiteColor];
}
- (UIColor *)accent400 {
return [UIColor whiteColor];
}
- (UIColor *)accentColor {
return [UIColor whiteColor];
}
- (UIColor *)brightAccentColor {
return [UIColor whiteColor];
}
- (UIColor *)regularColor {
return [UIColor whiteColor];
}
- (UIColor *)darkerColor {
return [UIColor whiteColor];
}
- (UIColor *)bodyTextColor {
return [UIColor whiteColor];
}
- (UIColor *)lightBodyTextColor {
return [UIColor whiteColor];
}
- (UIColor *)bodyTextColorOnRegularColor {
return [UIColor whiteColor];
}
- (UIColor *)bodyTextColorOnLighterColor {
return [UIColor whiteColor];
}
- (UIColor *)bodyTextColorOnDarkerColor {
return [UIColor whiteColor];
}
- (UIColor *)bodyTextColorOnAccentColor {
return [UIColor whiteColor];
}
- (UIColor *)buttonBackgroundColor {
return [UIColor whiteColor];
}
%end
%hook YTQTMButton
- (void)setImage:(UIImage *)image {
UIImage *currentImage = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
[self setTintColor:[UIColor whiteColor]];
%orig(currentImage);
}
%end
%hook UIExtendedSRGColorSpace
- (void)setTextColor:(UIColor *)textColor {
textColor = [[UIColor whiteColor] colorWithAlphaComponent:0.9];
%orig();
}
%end
%hook UIExtendedSRGBColorSpace
- (void)setTextColor:(UIColor *)textColor {
textColor = [[UIColor whiteColor] colorWithAlphaComponent:1.0];
%orig();
}
%end
%hook UIExtendedGrayColorSpace
- (void)setTextColor:(UIColor *)textColor {
textColor = [[UIColor whiteColor] colorWithAlphaComponent:1.0];
%orig();
}
%end
%hook VideoTitleLabel
- (void)setTextColor:(UIColor *)textColor {
textColor = [UIColor whiteColor];
%orig(textColor);
}
%end
%hook UILabel
+ (void)load {
@autoreleasepool {
[[UILabel appearance] setTextColor:[UIColor whiteColor]];
}
}
- (void)setTextColor:(UIColor *)textColor {
%log;
textColor = [UIColor whiteColor];
%orig(textColor);
}
%end
%hook UITextField
- (void)setTextColor:(UIColor *)textColor {
%log;
textColor = [UIColor whiteColor];
%orig(textColor);
}
%end
%hook UITextView
- (void)setTextColor:(UIColor *)textColor {
%log;
textColor = [UIColor whiteColor];
%orig(textColor);
}
%end
%hook UISearchBar
- (void)setTextColor:(UIColor *)textColor {
textColor = [UIColor whiteColor];
%orig(textColor);
}
%end
%hook UISegmentedControl
- (void)setTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state {
NSMutableDictionary *modifiedAttributes = [NSMutableDictionary dictionaryWithDictionary:attributes];
[modifiedAttributes setObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName];
%orig(modifiedAttributes, state);
}
%end
%hook UIButton
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state {
color = [UIColor whiteColor];
%orig(color, state);
}
%end
%hook UIBarButtonItem
- (void)setTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state {
NSMutableDictionary *modifiedAttributes = [NSMutableDictionary dictionaryWithDictionary:attributes];
[modifiedAttributes setObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName];
%orig(modifiedAttributes, state);
}
%end
%hook NSAttributedString
- (instancetype)initWithString:(NSString *)str attributes:(NSDictionary<NSAttributedStringKey, id> *)attrs {
NSMutableDictionary *modifiedAttributes = [NSMutableDictionary dictionaryWithDictionary:attrs];
[modifiedAttributes setObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName];
return %orig(str, modifiedAttributes);
}
%end
%hook CATextLayer
- (void)setTextColor:(CGColorRef)textColor {
%orig([UIColor whiteColor].CGColor);
}
%end
%hook ASTextNode
- (NSAttributedString *)attributedString {
NSAttributedString *originalAttributedString = %orig;
NSMutableAttributedString *newAttributedString = [originalAttributedString mutableCopy];
[newAttributedString addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(0, newAttributedString.length)];
return newAttributedString;
}
%end
%hook ASTextFieldNode
- (void)setTextColor:(UIColor *)textColor {
%orig([UIColor whiteColor]);
}
%end
%hook ASTextView
- (void)setTextColor:(UIColor *)textColor {
%orig([UIColor whiteColor]);
}
%end
%hook ASButtonNode
- (void)setTextColor:(UIColor *)textColor {
%orig([UIColor whiteColor]);
}
%end
%end
*/
# pragma mark - ctor
%ctor {
%init;
if (lowContrastMode()) {
%init(gLowContrastMode);
}
/*
if (customContrastMode()) {
%init(gCustomContrastMode);
}
*/
}

645
Source/Themes.xm Normal file
View file

@ -0,0 +1,645 @@
#import "../uYouPlus.h"
static BOOL IsEnabled(NSString *key) {
return [[NSUserDefaults standardUserDefaults] boolForKey:key];
}
static BOOL isDarkMode() {
return ([[NSUserDefaults standardUserDefaults] integerForKey:@"page_style"] == 1);
}
static BOOL oledDarkTheme() {
return ([[NSUserDefaults standardUserDefaults] integerForKey:@"appTheme"] == 1);
}
static BOOL oldDarkTheme() {
return ([[NSUserDefaults standardUserDefaults] integerForKey:@"appTheme"] == 2);
}
// Themes.xm - Theme Options
// Old dark theme (gray)
%group gOldDarkTheme
UIColor *originalColor = [UIColor colorWithRed:0.129 green:0.129 blue:0.129 alpha:1.0];
%hook YTCommonColorPalette
- (UIColor *)background1 {
return self.pageStyle == 1 ? originalColor : %orig;
}
- (UIColor *)background2 {
return self.pageStyle == 1 ? originalColor : %orig;
}
- (UIColor *)background3 {
return self.pageStyle == 1 ? originalColor : %orig;
}
- (UIColor *)baseBackground {
return self.pageStyle == 1 ? originalColor : %orig;
}
- (UIColor *)brandBackgroundSolid {
return self.pageStyle == 1 ? originalColor : %orig;
}
- (UIColor *)brandBackgroundPrimary {
return self.pageStyle == 1 ? originalColor : %orig;
}
- (UIColor *)brandBackgroundSecondary {
return self.pageStyle == 1 ? [originalColor colorWithAlphaComponent:0.9] : %orig;
}
- (UIColor *)raisedBackground {
return self.pageStyle == 1 ? originalColor : %orig;
}
- (UIColor *)staticBrandBlack {
return self.pageStyle == 1 ? originalColor : %orig;
}
- (UIColor *)generalBackgroundA {
return self.pageStyle == 1 ? originalColor : %orig;
}
- (UIColor *)generalBackgroundB {
return self.pageStyle == 1 ? originalColor : %orig;
}
- (UIColor *)menuBackground {
return self.pageStyle == 1 ? originalColor : %orig;
}
%end
%hook YTInnerTubeCollectionViewController
- (UIColor *)backgroundColor:(NSInteger)pageStyle {
return pageStyle == 1 ? originalColor : %orig;
}
%end
// Explore
%hook ASScrollView
- (void)didMoveToWindow {
%orig;
if (isDarkMode()) {
self.backgroundColor = [UIColor clearColor];
}
}
%end
// Your videos
%hook ASCollectionView
- (void)didMoveToWindow {
%orig;
if (isDarkMode() && [self.nextResponder isKindOfClass:%c(_ASDisplayView)]) {
self.superview.backgroundColor = originalColor;
}
}
%end
// Sub menu?
%hook ELMView
- (void)didMoveToWindow {
%orig;
if (isDarkMode()) {
self.subviews[0].backgroundColor = [UIColor clearColor];
}
}
%end
// iSponsorBlock
%hook SponsorBlockSettingsController
- (void)viewDidLoad {
if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {
%orig;
self.tableView.backgroundColor = originalColor;
} else { return %orig; }
}
%end
%hook SponsorBlockViewController
- (void)viewDidLoad {
if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {
%orig;
self.view.backgroundColor = originalColor;
} else { return %orig; }
}
%end
// Search View
%hook YTSearchBarView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig(originalColor) : %orig;
}
%end
// History Search view
%hook YTSearchBoxView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig(originalColor) : %orig;
}
%end
// Comment view
%hook YTCommentView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig(originalColor) : %orig;
}
%end
%hook YTCreateCommentAccessoryView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig(originalColor) : %orig;
}
%end
%hook YTCreateCommentTextView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig(originalColor) : %orig;
}
- (void)setTextColor:(UIColor *)color { // fix black text in #Shorts video's comment
return isDarkMode() ? %orig([UIColor whiteColor]) : %orig;
}
%end
%hook YTCommentDetailHeaderCell
- (void)didMoveToWindow {
%orig;
if (isDarkMode()) {
self.subviews[2].backgroundColor = originalColor;
}
}
%end
%hook YTAsyncCollectionView
- (void)layoutSubviews {
%orig();
if ([self.nextResponder isKindOfClass:NSClassFromString(@"YTWatchNextResultsViewController")]) {
if (isDarkMode()) {
self.subviews[0].subviews[0].backgroundColor = originalColor;
}
}
}
%end
%hook YTFormattedStringLabel // YT is werid...
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig([UIColor clearColor]) : %orig;
}
%end
// Live chat comment
%hook YCHLiveChatActionPanelView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig(originalColor) : %orig;
}
%end
%hook YCHLiveChatView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig(originalColor) : %orig;
}
- (void)didMoveToWindow {
%orig;
if (isDarkMode()) {
self.subviews[1].backgroundColor = originalColor;
}
}
%end
%hook YTEmojiTextView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig(originalColor) : %orig;
}
%end
%hook YTAppView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig(originalColor) : %orig;
}
%end
%hook YTCollectionView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig(originalColor) : %orig;
}
%end
%hook YTChannelListSubMenuView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig(originalColor) : %orig;
}
%end
%hook YTChannelSubMenuView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig(originalColor) : %orig;
}
%end
%hook YTWrapperSplitView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig(originalColor) : %orig;
}
%end
%hook YTPageView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig(originalColor) : %orig;
}
%end
%hook YTWatchView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig(originalColor) : %orig;
}
%end
%hook YTPrivacyTosFooterView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig(originalColor) : %orig;
}
%end
//
%hook YTBackstageCreateRepostDetailView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig(originalColor) : %orig;
}
%end
// Others
%hook _ASDisplayView
- (void)layoutSubviews {
%orig;
if (isDarkMode()) {
UIResponder *responder = [self nextResponder];
while (responder != nil) {
if ([responder isKindOfClass:NSClassFromString(@"YTActionSheetDialogViewController")]) {
self.backgroundColor = originalColor;
}
if ([responder isKindOfClass:NSClassFromString(@"YTPanelLoadingStrategyViewController")]) {
self.backgroundColor = originalColor;
}
if ([responder isKindOfClass:NSClassFromString(@"YTTabHeaderElementsViewController")]) {
self.backgroundColor = originalColor;
}
if ([responder isKindOfClass:NSClassFromString(@"YTEditSheetControllerElementsContentViewController")]) {
self.backgroundColor = originalColor;
}
responder = [responder nextResponder];
}
}
}
- (void)didMoveToWindow {
%orig;
if (isDarkMode()) {
if ([self.nextResponder isKindOfClass:%c(ASScrollView)]) { self.backgroundColor = [UIColor clearColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"brand_promo.view"]) { self.superview.backgroundColor = originalColor; }
if ([self.accessibilityIdentifier isEqualToString:@"eml.cvr"]) { self.backgroundColor = originalColor; }
if ([self.accessibilityIdentifier isEqualToString:@"eml.topic_channel_details"]) { self.backgroundColor = originalColor; }
if ([self.accessibilityIdentifier isEqualToString:@"eml.live_chat_text_message"]) { self.backgroundColor = originalColor; }
if ([self.accessibilityIdentifier isEqualToString:@"rich_header"]) { self.backgroundColor = originalColor; }
if ([self.accessibilityIdentifier isEqualToString:@"id.ui.comment_cell"]) { self.backgroundColor = originalColor; }
if ([self.accessibilityIdentifier isEqualToString:@"id.ui.comment_thread"]) { self.backgroundColor = originalColor; }
if ([self.accessibilityIdentifier isEqualToString:@"id.ui.cancel.button"]) { self.superview.backgroundColor = [UIColor clearColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.comment_composer"]) { self.backgroundColor = originalColor; }
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.filter_chip_bar"]) { self.backgroundColor = originalColor; }
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.video_list_entry"]) { self.backgroundColor = originalColor; }
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.guidelines_text"]) { self.superview.backgroundColor = originalColor; }
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.timed_comments_welcome"]) { self.superview.backgroundColor = self.backgroundColor = originalColor; }
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_bottom_sheet_container"]) { self.backgroundColor = originalColor; }
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_entry_banner_container"]) { self.superview.backgroundColor = self.backgroundColor = originalColor; }
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.comment_group_detail_container"]) { self.backgroundColor = [UIColor clearColor]; }
}
}
%end
%end
// OLED dark mode by @BandarHL
UIColor* raisedColor = [UIColor blackColor];
%group gOLED
%hook YTCommonColorPalette
- (UIColor *)background1 {
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
}
- (UIColor *)background2 {
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
}
- (UIColor *)background3 {
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
}
- (UIColor *)baseBackground {
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
}
- (UIColor *)brandBackgroundSolid {
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
}
- (UIColor *)brandBackgroundPrimary {
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
}
- (UIColor *)brandBackgroundSecondary {
return self.pageStyle == 1 ? [[UIColor blackColor] colorWithAlphaComponent:0.9] : %orig;
}
- (UIColor *)raisedBackground {
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
}
- (UIColor *)staticBrandBlack {
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
}
- (UIColor *)generalBackgroundA {
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
}
- (UIColor *)generalBackgroundB {
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
}
- (UIColor *)menuBackground {
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
}
%end
/*
// uYou settings (Conflicts iSponsorBlock)
%hook UITableViewCell
- (void)_layoutSystemBackgroundView {
%orig;
UIView *systemBackgroundView = [self valueForKey:@"_systemBackgroundView"];
NSString *backgroundViewKey = class_getInstanceVariable(systemBackgroundView.class, "_colorView") ? @"_colorView" : @"_backgroundView";
((UIView *)[systemBackgroundView valueForKey:backgroundViewKey]).backgroundColor = [UIColor blackColor];
}
- (void)_layoutSystemBackgroundView:(BOOL)arg1 {
%orig;
((UIView *)[[self valueForKey:@"_systemBackgroundView"] valueForKey:@"_colorView"]).backgroundColor = [UIColor blackColor];
}
%end
%hook settingsReorderTable
- (void)viewDidLayoutSubviews {
%orig;
self.tableView.backgroundColor = [UIColor blackColor];
}
%end
%hook FRPSelectListTable
- (void)viewDidLayoutSubviews {
%orig;
self.tableView.backgroundColor = [UIColor blackColor];
}
%end
%hook FRPreferences
- (void)viewDidLayoutSubviews {
%orig;
self.tableView.backgroundColor = [UIColor blackColor];
}
%end
*/
%hook YTInnerTubeCollectionViewController
- (UIColor *)backgroundColor:(NSInteger)pageStyle {
return pageStyle == 1 ? [UIColor blackColor] : %orig;
}
%end
// Explore
%hook ASScrollView
- (void)didMoveToWindow {
%orig;
if (isDarkMode()) {
self.backgroundColor = [UIColor clearColor];
}
}
%end
// Your videos
%hook ASCollectionView
- (void)didMoveToWindow {
%orig;
if (isDarkMode() && [self.nextResponder isKindOfClass:%c(_ASDisplayView)]) {
self.superview.backgroundColor = [UIColor blackColor];
}
}
%end
// Sub menu?
%hook ELMView
- (void)didMoveToWindow {
%orig;
if (isDarkMode()) {
self.subviews[0].backgroundColor = [UIColor clearColor];
}
}
%end
// iSponsorBlock
%hook SponsorBlockSettingsController
- (void)viewDidLoad {
if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {
%orig;
self.tableView.backgroundColor = [UIColor blackColor];
} else { return %orig; }
}
%end
%hook SponsorBlockViewController
- (void)viewDidLoad {
if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {
%orig;
self.view.backgroundColor = [UIColor blackColor];
} else { return %orig; }
}
%end
// Search View
%hook YTSearchBarView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
}
%end
// History Search view
%hook YTSearchBoxView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
}
%end
// Comment view
%hook YTCommentView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
}
%end
%hook YTCreateCommentAccessoryView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
}
%end
%hook YTCreateCommentTextView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
}
- (void)setTextColor:(UIColor *)color { // fix black text in #Shorts video's comment
return isDarkMode() ? %orig([UIColor whiteColor]) : %orig;
}
%end
%hook YTCommentDetailHeaderCell
- (void)didMoveToWindow {
%orig;
if (isDarkMode()) {
self.subviews[2].backgroundColor = [UIColor blackColor];
}
}
%end
%hook YTFormattedStringLabel // YT is werid...
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig([UIColor clearColor]) : %orig;
}
%end
// Live chat comment
%hook YCHLiveChatActionPanelView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
}
%end
%hook YTEmojiTextView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
}
%end
%hook YCHLiveChatView
- (void)didMoveToWindow {
%orig;
if (isDarkMode()) {
self.subviews[1].backgroundColor = [UIColor blackColor];
}
}
%end
%hook YTCollectionView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
}
%end
//
%hook YTBackstageCreateRepostDetailView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
}
%end
// Others
%hook _ASDisplayView
- (void)layoutSubviews {
%orig;
if (isDarkMode()) {
UIResponder *responder = [self nextResponder];
while (responder != nil) {
if ([responder isKindOfClass:NSClassFromString(@"YTActionSheetDialogViewController")]) {
self.backgroundColor = [UIColor blackColor];
}
if ([responder isKindOfClass:NSClassFromString(@"YTPanelLoadingStrategyViewController")]) {
self.backgroundColor = [UIColor blackColor];
}
if ([responder isKindOfClass:NSClassFromString(@"YTTabHeaderElementsViewController")]) {
self.backgroundColor = [UIColor blackColor];
}
if ([responder isKindOfClass:NSClassFromString(@"YTEditSheetControllerElementsContentViewController")]) {
self.backgroundColor = [UIColor blackColor];
}
responder = [responder nextResponder];
}
}
}
- (void)didMoveToWindow {
%orig;
if (isDarkMode()) {
if ([self.nextResponder isKindOfClass:%c(ASScrollView)]) { self.backgroundColor = [UIColor clearColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"brand_promo.view"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"eml.cvr"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"eml.topic_channel_details"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"eml.live_chat_text_message"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"rich_header"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.ui.comment_cell"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.ui.comment_thread"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.ui.cancel.button"]) { self.superview.backgroundColor = [UIColor clearColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.comment_composer"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.filter_chip_bar"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.video_list_entry"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.guidelines_text"]) { self.superview.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.timed_comments_welcome"]) { self.superview.backgroundColor = self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_bottom_sheet_container"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_entry_banner_container"]) { self.superview.backgroundColor = self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.comment_group_detail_container"]) { self.backgroundColor = [UIColor clearColor]; }
}
}
%end
// Open link with...
%hook ASWAppSwitchingSheetHeaderView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig(raisedColor) : %orig;
}
%end
%hook ASWAppSwitchingSheetFooterView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig(raisedColor) : %orig;
}
%end
%hook ASWAppSwitcherCollectionViewCell
- (void)didMoveToWindow {
%orig;
if (isDarkMode()) {
self.backgroundColor = raisedColor;
self.subviews[1].backgroundColor = raisedColor;
self.superview.backgroundColor = raisedColor;
}
}
%end
%end
// OLED keyboard by @ichitaso <3 - http://gist.github.com/ichitaso/935100fd53a26f18a9060f7195a1be0e
%group gOLEDKB
%hook UIPredictionViewController
- (void)loadView {
%orig;
[self.view setBackgroundColor:[UIColor blackColor]];
}
%end
%hook UICandidateViewController
- (void)loadView {
%orig;
[self.view setBackgroundColor:[UIColor blackColor]];
}
%end
%hook UIKeyboardDockView
- (void)didMoveToWindow {
%orig;
self.backgroundColor = [UIColor blackColor];
}
%end
%hook UIKeyboardLayoutStar
- (void)didMoveToWindow {
%orig;
self.backgroundColor = [UIColor blackColor];
}
%end
%hook UIKBRenderConfig // Prediction text color
- (void)setLightKeyboard:(BOOL)arg1 { %orig(NO); }
%end
%end
# pragma mark - ctor
%ctor {
%init;
if (IsEnabled(@"oledKeyBoard_enabled")) {
%init(gOLEDKB);
}
if (oledDarkTheme()) {
%init(gOLED);
}
if (oldDarkTheme()) {
%init(gOldDarkTheme);
}
}

1682
Source/VersionSpoofer.xm Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,86 @@
// Template for whenever I refresh the main branch. and to re-add the submodules afterwards.
name: Update Submodules
on:
workflow_dispatch:
jobs:
update-submodules:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4.1.1
- name: Set up Git
run: |
git config --global user.email "actions@github.com"
git config --global user.name "GitHub Actions"
- name: Add uYouPlusExtra submodules
run: |
git submodule add https://github.com/PoomSmart/FLEXing.git Tweaks/FLEXing
git submodule add https://github.com/arichorn/YTHoldForSpeed.git Tweaks/YTHoldForSpeed
git add .
git commit -m "added uYouPlusExtra submodules"
git push origin
# - name: Update submodules
# run: |
# git submodule update --init --recursive --remote
# git add .
# git commit -m "updated submodules"
# git push origin
# continue-on-error: true
- name: Update submodules
run: |
git submodule update --init --recursive --remote Tweaks/Alderis
git add .
git submodule update --init --recursive --remote Tweaks/DontEatMyContent
git add .
git submodule update --init --recursive --remote Tweaks/YTHoldForSpeed
git add .
git submodule update --init --recursive --remote Tweaks/PSHeader
git add .
git submodule update --init --recursive --remote Tweaks/Return-YouTube-Dislikes
git add .
git submodule update --init --recursive --remote Tweaks/YTABConfig
git add .
git submodule update --init --recursive --remote Tweaks/YTUHD
git add .
git submodule update --init --recursive --remote Tweaks/YTVideoOverlay
git add .
git submodule update --init --recursive --remote Tweaks/YouMute
git add .
git submodule update --init --recursive --remote Tweaks/YouPiP
git add .
git submodule update --init --recursive --remote Tweaks/YouQuality
git add .
git submodule update --init --recursive --remote Tweaks/YouTubeHeader
git add .
git submodule update --init --recursive --remote Tweaks/iSponsorBlock
git add .
git commit -m "updated submodules"
git push origin
continue-on-error: true
- name: Make .bundle files
run: |
cd Bundles
ln -s ../Tweaks/YTHoldForSpeed/layout/Library/Application\ Support/YTHoldForSpeed.bundle YTHoldForSpeed.bundle
ln -s ../Tweaks/YTVideoOverlay/layout/Library/Application\ Support/YTVideoOverlay.bundle YTVideoOverlay.bundle
ln -s ../Tweaks/YouMute/layout/Library/Application\ Support/YouMute.bundle YouMute.bundle
ln -s ../Tweaks/YouQuality/layout/Library/Application\ Support/YouQuality.bundle YouQuality.bundle
git add .
git commit -m "Added bundles"
git push origin
- name: Check exit code
run: |
exit_code=$?
if [ $exit_code -ne 0 ]; then
echo "Submodule update failed with exit code $exit_code"
exit 1
fi

@ -1 +1 @@
Subproject commit a514fbe4e063a1157da6e68fc05633ef9cec0f44
Subproject commit fe65d50f16e978e97dc0c0022133235d5cebab80

@ -1 +1 @@
Subproject commit 07d0ad67c5abe370f3731ecdc0961ae5dae8b487
Subproject commit f7a65cf89b92ca1d35bf8b499acc4419eef7bc13

1
Tweaks/MrBeastify Submodule

@ -0,0 +1 @@
Subproject commit 4fba874a3e1c2f9e392d650554536fc4baebc9c2

@ -1 +1 @@
Subproject commit 91fc25a8504faa62eca55dae451fe11ac7d1602d
Subproject commit 6ef3de0db741a11055aed2df359e7e5df2d2b593

@ -1 +1 @@
Subproject commit ae9d1345f045482b1ab4367ffaec9136e74c84c2
Subproject commit ef2acc4f6d425e6611cd3ce0653167fe1537860b

1
Tweaks/YTHoldForSpeed Submodule

@ -0,0 +1 @@
Subproject commit 6a8dce915e3cd54c066f4ad79d27f18cb90cee96

@ -1 +1 @@
Subproject commit ed71ce0dbbcb2246defdd2198014846572baea35
Subproject commit adf6ba1446aeb2077ea10e32b6ae5c453e6acd7d

@ -1 +1 @@
Subproject commit 23dcadf5b418c4da60fb1dd76192f38f68530c48
Subproject commit f4938e9a44ca125adbbeb3d9fd1b386f5ebe6a92

@ -1 +1 @@
Subproject commit 327d272a36988ae22ad1d118e67e72ee434127b8
Subproject commit 519a8988bca40aeb00ee3c3ecef4a1c4ba350e51

@ -1 +1 @@
Subproject commit 8b23971bbf40f28acecda2855171918d241929c9
Subproject commit bb32e79bee64febe61e48a75a71db2732abc8020

@ -1 +1 @@
Subproject commit 99bb00ebbf77267567938787cb8bd775a07641de
Subproject commit dffb3fd293351319833a24fc0cd9819be2691c6f

@ -1 +1 @@
Subproject commit 96954d578d56e6762f0b179a2b837598a542d40c
Subproject commit 2c85fcecd813027894ad001e9002a9f8420e3016

View file

@ -1,8 +0,0 @@
read -p $'\e[34m==> \e[1;39mPath to the decrypted YouTube.ipa or YouTube.app: ' PATHTOYT
make package IPA=$PATHTOYT FINALPACKAGE=1
if [[ $? -eq 0 ]]; then
open packages
echo "\033[0;32m==> \033[1;39mSHASUM256: $(shasum -a 256 packages/*.ipa)"
else
echo "\033[0;31m==> \033[1;39mFailed building uYouPlus"
fi

View file

@ -1,8 +1,8 @@
Package: com.qnblackcat.uyouplus
Name: uYouPlus
Package: com.arichorn.uyouplusextra
Name: uYouPlusExtra
Architecture: iphoneos-arm
Description: Modified version of uYou
Maintainer: qnblackcat
Description: Modified version of uYouPlus
Maintainer: arichorn
Author: qnblackcat
Section: Tweaks
Depends: mobilesubstrate (>= 0.9.5000), com.miro.uyou

View file

@ -130,6 +130,9 @@
"HIDE_CHIP_BAR" = "إخفاء الشريط العلوي";
"HIDE_CHIP_BAR_DESC" = "إخفاء الشريط العلوي من تبويب الصفحة الرئيسية (موسيقى، ألعاب فيديو، تشكيلات ...) ومن تبويب الاشتراكات (كل الفيديوهات، متابعة المشاهدة,...). تتطلب إعادة تشغيل التطبيق.";
"HIDE_PLAY_NEXT_IN_QUEUE" = "إخفاء \"تشغيل المقطع التالي من قائمة الانتظار\"";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "إخفاء خيار \"تشغيل التالي من قائمة الانتظار\" من قائمة السياق في حسابات يوتيوب المدفوعة";
"NEW_MINIPLAYER_STYLE" = "تغيير شكل المشغّل المصغر (أداة BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "تغيير شكل المشغّل المصغر في الآيفون إلى نفس شكله في الآيباد - تتطلب إغلاق التطبيق وإعادة فتحه.";

View file

@ -130,6 +130,9 @@
"HIDE_CHIP_BAR" = "Hide the Upper bar";
"HIDE_CHIP_BAR_DESC" = "Hide Upper bar in the Home feeds (Trends, Music, Gaming...) and Subcription feeds (All videos, Continue watching...). App restart is required.";
"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\"";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus";
"NEW_MINIPLAYER_STYLE" = "Nový styl minipřehrávače (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "Je potřeba restart aplikace.";

View file

@ -130,6 +130,9 @@
"HIDE_CHIP_BAR" = "Obere Leiste ausblenden";
"HIDE_CHIP_BAR_DESC" = "Obere Leiste in den Home-Feeds (Trends, Musik, Spiele...) und Abo-Feeds (Alle Videos, Weiterschauen...) ausblenden. App-Neustart erforderlich.";
"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\"";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus";
"NEW_MINIPLAYER_STYLE" = "Neuer Miniplayer Style (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "App-Neustart erforderlich!";

View file

@ -130,6 +130,9 @@
"HIDE_CHIP_BAR" = "Hide the Upper bar";
"HIDE_CHIP_BAR_DESC" = "Hide Upper bar in the Home feeds (Trends, Music, Gaming...) and Subcription feeds (All videos, Continue watching...). App restart is required.";
"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\"";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus";
"NEW_MINIPLAYER_STYLE" = "Καινούργιο miniplayer θέμα στην μπάρα (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "Απαιτείται επανεκκίνηση της εφαρμογής.";

View file

@ -130,6 +130,9 @@
"HIDE_CHIP_BAR" = "Hide the Upper bar";
"HIDE_CHIP_BAR_DESC" = "Hide Upper bar in the Home feeds (Trends, Music, Gaming...) and Subscription feeds (All videos, Continue watching...).";
"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\"";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus";
"NEW_MINIPLAYER_STYLE" = "New mini player bar style (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "App restart is required.";

View file

@ -130,6 +130,9 @@
"HIDE_CHIP_BAR" = "Ocultar la barra superior";
"HIDE_CHIP_BAR_DESC" = "Ocultar la barra superior de las fuentes de inicio (Tendencias, Música, Juegos...) y de suscripción (Todos los vídeos, Seguir viendo...). Es necesario reiniciar la aplicación.";
"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\"";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus";
"NEW_MINIPLAYER_STYLE" = "Nuevo estilo de barra del minirreproductor (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "Requiere reiniciar la app.";

View file

@ -130,6 +130,9 @@
"HIDE_CHIP_BAR" = "Masquer la barre supérieure";
"HIDE_CHIP_BAR_DESC" = "Masquer la barre supérieure dans les fils d'actualité (Tendances, Musique, Gaming...) et les fils d'abonnement (Toutes les vidéos, Poursuivre la lecture...). Un redémarrage de l'application est nécessaire.";
"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\"";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus";
"NEW_MINIPLAYER_STYLE" = "Nouveau style de barre de mini-lecteur (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "Un redémarrage de l'application est nécessaire";

View file

@ -130,6 +130,9 @@
"HIDE_CHIP_BAR" = "Hide the Upper bar";
"HIDE_CHIP_BAR_DESC" = "Hide Upper bar in the Home feeds (Trends, Music, Gaming...) and Subcription feeds (All videos, Continue watching...). App restart is required.";
"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\"";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus";
"NEW_MINIPLAYER_STYLE" = "עיצוב נגן קטן חדש (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "נדרש לפתוח מחדש את היישום.";

View file

@ -130,6 +130,9 @@
"HIDE_CHIP_BAR" = "Hide the Upper bar";
"HIDE_CHIP_BAR_DESC" = "Hide Upper bar in the Home feeds (Trends, Music, Gaming...) and Subcription feeds (All videos, Continue watching...). App restart is required.";
"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\"";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus";
"NEW_MINIPLAYER_STYLE" = "Új minilejátszó sáv (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "Az alkalmazás újraindítása szükséges.";

View file

@ -130,6 +130,9 @@
"HIDE_CHIP_BAR" = "Nascondi la barra superiore";
"HIDE_CHIP_BAR_DESC" = "Nascondi la barra superiore nella Home (Tendenze, Musica, Giochi...) e Iscrizioni (Tutti i video, Continua a guardare...). È richiesto il riavvio dell'app.";
"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\"";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus";
"NEW_MINIPLAYER_STYLE" = "Nuovo stile per la barra del miniplayer (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "È richiesto un riavvio dell'app.";

View file

@ -1,9 +1,9 @@
// Settings
"VERSION" = "uYouPlusのバージョン: %@";
"VERSION_CHECK" = "ここをタップしてアップデートを確認!";
"VERSION" = "uYouPlus's version: %@";
"VERSION_CHECK" = "ここをタップしてアップデートを確認しよう";
// Video controls overlay options
"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "動画コントロールのオーバーレイ設定";
// Video player options
"VIDEO_PLAYER_OPTIONS" = "プレーヤーの設定";
"AUTO_FULLSCREEN" = "自動でフルスクリーンにする (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "動画を自動でフルスクリーンにします。";
@ -20,7 +20,7 @@
"YT_MINIPLAYER" = "すべての動画でミニプレーヤーを有効にする";
"YT_MINIPLAYER_DESC" = "例:子ども向けの動画など";
"STOCK_VOLUME_HUD" = "iOSのstockボリュームHUDを利用する";
"STOCK_VOLUME_HUD" = "iOSのネイティブ音量HUDを利用する";
"STOCK_VOLUME_HUD_DESC" = "";
// Video controls overlay options
@ -44,7 +44,7 @@
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "前後の動画を再生するボタンを非表示";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "動画コントロールのオーバーレイで次の動画と前の動画を再生するボタンを非表示にします。";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "前後の動画を再生するボタンを置換";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "前後の動画を再生するボタンを置える";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "次の動画と前の動画を再生するボタンをそれぞれ早送りと巻き戻しボタンに置き換えます。アプリの再起動が必要です。";
"HIDE_HOVER_CARD" = "動画終わりのホバーカードを非表示 (YTNoHoverCards)";
@ -53,7 +53,7 @@
"HIDE_RIGHT_PANEL" = "フルスクリーンモードで右パネルを非表示";
"HIDE_RIGHT_PANEL_DESC" = "アプリの再起動が必要です。";
"RED_PROGRESS_BAR" = "赤いプログレスバー";
"RED_PROGRESS_BAR" = "赤いプログレスバーに戻す";
"RED_PROGRESS_BAR_DESC" = "赤いプログレスバーに戻します。アプリの再起動が必要です。";
"DONT_EAT_MY_CONTENT" = "2:1の動画とッチ/Dynamic Islandの最適化 (DontEatMyContent)";
@ -92,8 +92,8 @@
// Theme
"THEME_OPTIONS" = "テーマの設定";
"OLED_DARK_THEME" = "有機ELダークモード (実験的機能)";
"OLED_DARK_THEME_2" = "有機ELダークモード";
"OLED_DARK_THEME" = "OLEDダークモード (実験的機能)";
"OLED_DARK_THEME_2" = "OLEDダークモード";
"OLED_DARK_THEME_DESC" = "正常に動作しない可能性があります。アプリの再起動が必要です。";
"OLD_DARK_THEME" = "従来のダークモード";
@ -102,7 +102,7 @@
"DEFAULT_THEME" = "通常";
"DEFAULT_THEME_DESC" = "通常のYouTubeのダークモードです。アプリの再起動が必要です。";
"OLED_KEYBOARD" = "有機ELキーボード (実験的機能)";
"OLED_KEYBOARD" = "OLEDキーボード (実験的機能)";
"OLED_KEYBOARD_DESC" = "正常に動作しない可能性があります。この設定を変更した場合、アプリの再起動が必要です。";
// Miscellaneous
@ -119,22 +119,25 @@
"DISABLE_HINTS_DESC" = "アプリが再インストールされた際に表示される機能の使い方を非表示にします。";
"ENABLE_FLEX" = "FLEXを有効化";
"ENABLE_FLEX_DESC" = "デバッグ用のFLEXを有効にします(推奨しません) 何をやっているのかわからない場合はオフにしてください。";
"ENABLE_FLEX_DESC" = "デバッグのためにFLEXを有効にします(非推奨)。開発者向けであり、通常の使用では必要ありません。必要ない場合は有効化しないでください。";
"ENABLE_YT_STARTUP_ANIMATION" = "YouTube起動時のアニメーションを有効にする";
"ENABLE_YT_STARTUP_ANIMATION" = "YouTube起動時にアニメーションを表示する";
"ENABLE_YT_STARTUP_ANIMATION_DESC" = "";
"FIX_GOOGLE_SIGNIN" = "Googleのサインインを修正 (TrollStoreユーザーのみ)";
"FIX_GOOGLE_SIGNIN_DESC" = "アプリがTrollStoreインストールされた場合のみ機能します。このオプションを有効にしてGoogleアカウントでサインインできるようにします。アプリの再起動が必要です。";
"FIX_GOOGLE_SIGNIN_DESC" = "アプリがTrollStoreを用いてインストールされた場合のみ機能します。このオプションを有効にしてGoogleアカウントでサインインできるようにします。アプリの再起動が必要です。";
"HIDE_CHIP_BAR" = "トップバーを非表示";
"HIDE_CHIP_BAR_DESC" = "ホーム(トレンド,音楽,ゲーム...)とサブスクリプション(すべてのビデオ、視聴を続ける...)リボンのトップバーを非表示にします。アプリの再起動が必要です。";
"HIDE_PLAY_NEXT_IN_QUEUE" = "\"次に再生\"を削除";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "コンテキストメニューの\"キューの最初に追加\"オプションを非表示にします。";
"NEW_MINIPLAYER_STYLE" = "新しいミニプレーヤー・バーを使う (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "アプリの再起動が必要です。";
"YT_RE_EXPLORE" = "ショートタブを探索タブに置き換える (YTReExplore)";
"YT_RE_EXPLORE" = "ショートタブを探索タブに置き換える (YTReExplore)";
"YT_RE_EXPLORE_DESC" = "アプリの再起動が必要です。";
"IPHONE_LAYOUT" = "iPhoneのレイアウト";
"IPHONE_LAYOUT_DESC" = "iPhoneのレイアウトを使用する場合はトグルで切り替えてください。アプリの再起動が必要です。";
"IPHONE_LAYOUT_DESC" = "(iPadユーザー向け) iPhoneのレイアウトを使用する場合はこちらで切り替えてください。アプリの再起動が必要です。";

View file

@ -130,6 +130,9 @@
"HIDE_CHIP_BAR" = "피드 선택 막대 숨기기";
"HIDE_CHIP_BAR_DESC" = "앱의 홈 화면에서 맞춤 동영상(인기 급상승, 음악, 게임...)과 구독 피드(전체, 감상한 동영상...) 선택 막대를 숨깁니다. 앱을 다시 시작해야 합니다.";
"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\"";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus";
"NEW_MINIPLAYER_STYLE" = "새로운 스타일의 미니 플레이어 (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "앱을 다시 시작해야 합니다.";

View file

@ -130,6 +130,9 @@
"HIDE_CHIP_BAR" = "Hide the Upper bar";
"HIDE_CHIP_BAR_DESC" = "Hide Upper bar in the Home feeds (Trends, Music, Gaming...) and Subcription feeds (All videos, Continue watching...). App restart is required.";
"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\"";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus";
"NEW_MINIPLAYER_STYLE" = "Nieuwe Mini Speler stijl (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "Je moet de app opnieuw opstarten om dit te activeren.";

View file

@ -130,6 +130,9 @@
"HIDE_CHIP_BAR" = "Hide the Upper bar";
"HIDE_CHIP_BAR_DESC" = "Hide Upper bar in the Home feeds (Trends, Music, Gaming...) and Subcription feeds (All videos, Continue watching...). App restart is required.";
"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\"";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus";
"NEW_MINIPLAYER_STYLE" = "Nowy styl miniodtwarzacza (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "Restart aplikacji jest wymagany.";

View file

@ -130,6 +130,9 @@
"HIDE_CHIP_BAR" = "Ocultar a Barra superior";
"HIDE_CHIP_BAR_DESC" = "Oculta a Barra superior nos Feeds iniciais (Tendências, Música, Jogos...) e Feeds de inscrições (Todos os vídeos, Continuar assistindo...). A reinicialização do app é necessária.";
"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\"";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus";
"NEW_MINIPLAYER_STYLE" = "Novo estilo de barra de miniplayer (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "A reinicialização do app é necessária.";

View file

@ -130,6 +130,9 @@
"HIDE_CHIP_BAR" = "Hide the Upper bar";
"HIDE_CHIP_BAR_DESC" = "Hide Upper bar in the Home feeds (Trends, Music, Gaming...) and Subcription feeds (All videos, Continue watching...). App restart is required.";
"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\"";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus";
"NEW_MINIPLAYER_STYLE" = "Stil nou bară Miniplayer (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "Este necesară repornirea aplicației.";

View file

@ -130,6 +130,9 @@
"HIDE_CHIP_BAR" = "Скрыть верхнюю панель";
"HIDE_CHIP_BAR_DESC" = "Скрывает верхнюю панель на вкладках «Главная» (Тренды, Музыка, Игры...) и «Подписки» (Все видео, Продолжить просмотр...)\nТребуется перезапуск приложения.";
"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\"";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus";
"NEW_MINIPLAYER_STYLE" = "Мини-плеер в стиле iPad (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "Потребуется перезагрузка.";

View file

@ -145,6 +145,9 @@ https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Ap
"HIDE_CHIP_BAR" = "Hide the Upper bar";
"HIDE_CHIP_BAR_DESC" = "Hide Upper bar in the Home feeds (Trends, Music, Gaming...) and Subscription feeds (All videos, Continue watching...).";
"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\"";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus";
"NEW_MINIPLAYER_STYLE" = "New mini player bar style (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "App restart is required.";

View file

@ -127,6 +127,9 @@
"HIDE_CHIP_BAR" = "Üst çubuğu gizle";
"HIDE_CHIP_BAR_DESC" = "Ana Sayfa akışlarında (Trendler, Müzik, Oyun...) ve Abonelik akışlarında (Tüm videolar, İzlemeye devam et...) Üst çubuğu gizle. Uygulamanın yeniden başlatılması gerekir.";
"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\"";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus";
"NEW_MINIPLAYER_STYLE" = "Yeni mini oynatıcı bar stili. (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "Uygulamanın yeniden başlatılması gerekir.";

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View file

@ -130,6 +130,9 @@
"HIDE_CHIP_BAR" = "Ẩn thanh phím tắt";
"HIDE_CHIP_BAR_DESC" = "Ẩn thanh phím tắt trong Home feed (Thịnh hành, Âm nhạc, Trò chơi...) và trong Subciption feed (Tất cả, Tiếp tục xem...).";
"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\"";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus";
"NEW_MINIPLAYER_STYLE" = "Giao diện trình phát thu nhỏ kiểu mới (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "Cần khởi động lại ứng dụng.";

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

View file

@ -130,6 +130,9 @@
"HIDE_CHIP_BAR" = "隐藏顶部标签栏";
"HIDE_CHIP_BAR_DESC" = "隐藏首页和订阅内容页顶部的标签栏(例如:首页顶部的“音乐”、“游戏”、“新闻”以及订阅内容页顶部的“今天”、“继续观看”、“未观看”等)。更改本设置后需要重启 App。";
"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\"";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus";
"NEW_MINIPLAYER_STYLE" = "新迷你播放器风格 BigYTMiniPlayer";
"NEW_MINIPLAYER_STYLE_DESC" = "更改本设置后需要重启 App。";

View file

@ -8,7 +8,7 @@
"AUTO_FULLSCREEN" = "自動全螢幕 (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "自動全螢幕播放影片。";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "Disable double tap to seek";
"DISABLE_DOUBLE_TAP_TO_SEEK" = "停用影片快轉與倒轉";
"DISABLE_DOUBLE_TAP_TO_SEEK_DESC" = "";
"SNAP_TO_CHAPTER" = "停用章節跳轉";
@ -131,6 +131,9 @@
"HIDE_CHIP_BAR" = "隱藏上層欄位";
"HIDE_CHIP_BAR_DESC" = "隱藏主畫面上層欄位 (話題, 音樂, 遊戲...) 和訂閱對象動態 (所有影片, 繼續觀看...). 需要重新啟動應用程式。";
"HIDE_PLAY_NEXT_IN_QUEUE" = "Hide \"Play next in queue\"";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "Hide the premium \"Play next in queue\" option in video context menus";
"NEW_MINIPLAYER_STYLE" = "迷你播放器 (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "需要重新啟動應用程式。";

View file

@ -1,5 +1,6 @@
#import "Tweaks/YouTubeHeader/YTAppDelegate.h"
#import "Tweaks/YouTubeHeader/YTPlayerViewController.h"
#import "Tweaks/YouTubeHeader/YTQTMButton.h"
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <objc/runtime.h>
@ -13,9 +14,14 @@
#import "Tweaks/YouTubeHeader/YTIGuideResponse.h"
#import "Tweaks/YouTubeHeader/YTIGuideResponseSupportedRenderers.h"
#import "Tweaks/YouTubeHeader/YTIPivotBarSupportedRenderers.h"
#import "Tweaks/YouTubeHeader/YTIPivotBarItemRenderer.h"
#import "Tweaks/YouTubeHeader/YTIPivotBarRenderer.h"
#import "Tweaks/YouTubeHeader/YTIBrowseRequest.h"
#import "Tweaks/YouTubeHeader/YTIButtonRenderer.h"
#import "Tweaks/YouTubeHeader/YTISectionListRenderer.h"
#import "Tweaks/YouTubeHeader/YTColorPalette.h"
#import "Tweaks/YouTubeHeader/YTCommonColorPalette.h"
#import "Tweaks/YouTubeHeader/YTSettingsSectionItemManager.h"
#import "Tweaks/YouTubeHeader/ASCollectionView.h"
#import "Tweaks/YouTubeHeader/YTPlayerOverlay.h"
#import "Tweaks/YouTubeHeader/YTPlayerOverlayProvider.h"
@ -23,19 +29,38 @@
#import "Tweaks/YouTubeHeader/YTReelPlayerBottomButton.h"
#import "Tweaks/YouTubeHeader/YTReelPlayerViewController.h"
#import "Tweaks/YouTubeHeader/YTAlertView.h"
#import "Tweaks/YouTubeHeader/YTISectionListRenderer.h"
#import "Tweaks/YouTubeHeader/YTIMenuConditionalServiceItemRenderer.h"
#import "Tweaks/YouTubeHeader/YTPivotBarItemView.h"
#import "Tweaks/YouTubeHeader/YTVideoWithContextNode.h" // YouTube-X
#import "Tweaks/YouTubeHeader/ELMCellNode.h" // YouTube-X
#import "Tweaks/YouTubeHeader/ELMNodeController.h" // YouTube-X
#define LOC(x) [tweakBundle localizedStringForKey:x value:nil table:nil]
#define YT_BUNDLE_ID @"com.google.ios.youtube"
#define YT_NAME @"YouTube"
#define DEFAULT_RATE 2.0f // YTSpeed
@interface YTSingleVideoController ()
- (float)playbackRate;
- (void)setPlaybackRate:(float)arg1;
@end
@interface YTPlayerViewController ()
- (YTSingleVideoController *)activeVideo;
@end
// IAmYouTube
@interface SSOConfiguration : NSObject
@end
// uYouPlus
@interface YTHeaderLogoController : UIView
@property(readonly, nonatomic) long long pageStyle;
@end
@interface YTNavigationBarTitleView : UIView
@end
@interface YTChipCloudCell : UIView
@end
@ -54,6 +79,7 @@
@end
@interface YTAsyncCollectionView : UICollectionView
- (void)removeCellsAtIndexPath:(NSIndexPath *)indexPath;
- (void)removeShortsAndFeaturesAdsAtIndexPath:(NSIndexPath *)indexPath;
@end
@ -63,6 +89,9 @@
@interface boolSettingsVC : UIViewController
@end
@interface YTPlaybackButton : UIControl
@end
@interface PlayerManager : NSObject
- (float)progress;
@end
@ -75,6 +104,17 @@
@property UIButton *downloadsButton;
@end
// Buttons
@interface YTRightNavigationButtons : UIView
@property YTQTMButton *notificationButton;
@property YTQTMButton *sponsorBlockButton;
@end
@interface YTISlimMetadataButtonSupportedRenderers : NSObject
- (id)slimButton_buttonRenderer;
- (id)slimMetadataButtonRenderer;
@end
// YTSpeed
@interface YTVarispeedSwitchControllerOption : NSObject
- (id)initWithTitle:(id)title rate:(float)rate;
@ -99,16 +139,6 @@
- (void)setRate:(float)rate;
@end
// iOS16 fix
@interface OBPrivacyLinkButton : UIButton
- (instancetype)initWithCaption:(NSString *)caption
buttonText:(NSString *)buttonText
image:(UIImage *)image
imageSize:(CGSize)imageSize
useLargeIcon:(BOOL)useLargeIcon
displayLanguage:(NSString *)displayLanguage;
@end
// uYouLocal fix
@interface YTLocalPlaybackController : NSObject
- (id)activeVideo;
@ -119,7 +149,6 @@
@property(nonatomic, strong) id downloadsVC;
@end
// BigYTMiniPlayer
@interface YTMainAppVideoPlayerOverlayView : UIView
- (UIViewController *)_viewControllerForAncestor;
@ -131,16 +160,33 @@
// YTAutoFullScreen
@interface YTPlayerViewController (YTAFS)
- (void)autoFullscreen;
// DontEatMycontent
- (id)activeVideoPlayerOverlay;
- (id)playerView;
// YTSpeed
@property id activeVideo;
@property float playbackRate;
- (void)singleVideo:(id)video playbackRateDidChange:(float)rate;
// uYouCrashFix
- (YTSingleVideoController *)activeVideo;
@end
// App Theme
@interface YTColor : NSObject
+ (UIColor *)white1;
+ (UIColor *)white2;
+ (UIColor *)white3;
+ (UIColor *)white4;
+ (UIColor *)white5;
+ (UIColor *)black0;
+ (UIColor *)black1;
+ (UIColor *)black2;
+ (UIColor *)black3;
+ (UIColor *)black4;
+ (UIColor *)blackPure;
+ (UIColor *)grey1;
+ (UIColor *)grey2;
+ (UIColor *)white1Alpha98;
+ (UIColor *)white1Alpha95;
@end
@interface YCHLiveChatView : UIView
@end
@ -150,6 +196,9 @@
@interface YTRelatedVideosView : UIView
@end
@interface YTTopAlignedView : UIView
@end
@interface ELMView : UIView
@end
@ -168,6 +217,17 @@
@interface _ASDisplayView : UIView
@end
@interface ELMContainerNode : NSObject
@property (nonatomic, strong) NSString *accessibilityIdentifier;
@property (nonatomic, strong) NSString *accessibilityLabel;
@end
@interface YTAutonavEndscreenView : UIView
@end
@interface YTPivotBarIndicatorView : UIView
@end
@interface YTCommentDetailHeaderCell : UIView
@end
@ -191,4 +251,4 @@
@interface settingsReorderTable : UIViewController
@property(nonatomic, strong) UITableView *tableView;
@end
@end

File diff suppressed because it is too large Load diff