Compare commits

..

173 commits

Author SHA1 Message Date
arichornlover
9f726e09be
Update update-submodules-template.txt 2024-07-18 12:30:47 -05:00
arichornlover
19d32e6fd5
Update uYouPlus.h 2024-07-08 23:27:53 -05:00
arichornlover
5ad86b9af8
Fix uYouPlus.h (hopefully?)
I went on my other account and did some testing, hopefully I resolved the compiling problems.
2024-07-08 23:25:27 -05:00
arichornlover
83cc6b12d2
Use new implementation. (YouTube Native Share 0.2.0-Preview) 2024-07-08 19:49:59 -05:00
arichornlover
9c5992b075
Update uYouPlusPatches.h 2024-07-08 19:47:42 -05:00
arichornlover
d7c3bb86ec
Update uYouPlus.h 2024-07-08 04:23:42 -05:00
arichornlover
9596faad77
Fix ASCollectionView 2024-07-06 07:14:49 -05:00
arichornlover
86677c720c
Update uYouPlus.xm 2024-07-05 13:30:43 -05:00
arichornlover
5caf4a3206
Update uYouPlus.xm 2024-07-05 09:53:32 -05:00
arichornlover
b6897d50bc
Fix “YTShareRequestViewController” 2024-07-03 15:49:35 -05:00
arichornlover
5476d72761
Remove unnecessary property 2024-06-27 03:02:47 -05:00
arichornlover
959c71033c
Update uYouPlus.xm 2024-06-26 11:15:26 -05:00
arichornlover
dc0c71c74c
Update uYouPlusSettings.h 2024-06-26 10:56:36 -05:00
arichornlover
0fe0d748e1
Update uYouPlus.h 2024-06-26 10:56:06 -05:00
GitHub Actions
d06fab0703 updated submodules 2024-06-26 15:35:55 +00:00
arichornlover
ad6db4f972
Update uYouPlus.xm 2024-06-26 00:12:27 -05:00
arichornlover
dd258d092e
Update uYouPlus.xm 2024-06-26 00:01:18 -05:00
arichornlover
93c73d6c73
Update uYouPlus.xm 2024-06-25 23:51:04 -05:00
arichornlover
3f06713815
Update uYouPlus.xm 2024-06-25 23:39:25 -05:00
arichornlover
cc0651b9d5
Update uYouPlus.h 2024-06-25 23:20:05 -05:00
arichornlover
450df5d505
Update uYouPlusSettings.h 2024-06-25 23:19:13 -05:00
arichornlover
36bcad3950
Update uYouPlus.xm 2024-06-25 23:18:02 -05:00
arichornlover
f60bc5f283
Update uYouPlus.xm 2024-06-25 22:51:43 -05:00
arichornlover
654bce5531
Update buildapp.yml 2024-06-25 22:18:08 -05:00
arichornlover
07c2b22a29
Update uYouPlus.xm 2024-06-25 22:17:20 -05:00
arichornlover
36f762136d
Update Makefile 2024-06-25 22:16:49 -05:00
arichornlover
a09362d70e
Update uYouPlus.xm 2024-06-25 21:24:00 -05:00
arichornlover
ca7e5e40fc
Use <YTResponder> as a way to call settings 2024-06-25 21:11:05 -05:00
arichornlover
498f5bd3b7
Update uYouPlus.xm 2024-06-25 19:32:43 -05:00
arichornlover
f535c919ca
Exclude YTShareRequestViewController (uYouPlusPatches.xm) 2024-06-25 19:06:53 -05:00
arichornlover
70d73a31e4
Update uYouPlus.xm 2024-06-25 19:04:34 -05:00
arichornlover
5bf8355b39
Update uYouPlus.xm 2024-06-25 13:16:44 -05:00
arichornlover
19e2bb2d73
Mimic the actual settings button 2024-06-25 12:40:11 -05:00
arichornlover
513a486523
Add App UI Icons for testing 2024-06-25 12:24:59 -05:00
arichornlover
536364a88f
Update uYouPlus.xm 2024-06-24 23:00:52 -05:00
arichornlover
e900e85a73
Update uYouPlus.xm 2024-06-24 22:41:39 -05:00
arichornlover
7a4edbec64
Updated iPad version of ytns (experimental) 2024-06-24 05:50:10 -05:00
arichornlover
03591936d0
Update uYouPlus.xm 2024-06-22 20:55:21 -05:00
arichornlover
55a8a11c75
Update uYouPlus.xm 2024-06-22 20:12:30 -05:00
arichornlover
9e6d753199
Update uYouPlus.h 2024-06-22 19:58:15 -05:00
arichornlover
b6ec2f5f1a
Update uYouPlus.xm 2024-06-22 19:46:28 -05:00
arichornlover
d9eba087fc
Update uYouPlus.xm 2024-06-22 19:30:44 -05:00
arichornlover
c20b8cf0d0
Newer README.md file 2024-06-22 19:18:09 -05:00
arichornlover
bc7233df02
Update uYouPlus.xm 2024-06-22 19:07:39 -05:00
arichornlover
d7333d4595
Update uYouPlus.xm 2024-06-22 18:51:39 -05:00
arichornlover
641a1afbd7
Update uYouPlus.xm 2024-06-22 18:38:55 -05:00
arichornlover
286ae41019
Update uYouPlus.h 2024-06-22 18:20:10 -05:00
arichornlover
0a81e45d51
Update uYouPlus.xm 2024-06-22 18:19:22 -05:00
arichornlover
e27e5f206a
Update uYouPlus.xm 2024-06-22 18:04:47 -05:00
arichornlover
c8e76e0efe
Restore Settings Button
Note: this will likely cause duplicated settings button in the Settings Tab. It’s a recreation of the exact button.
2024-06-22 18:01:54 -05:00
arichornlover
f710ea4745
Rewrite ASCollectionView implementation
Old code from previous main-nightly branch.
2024-06-22 17:36:18 -05:00
GitHub Actions
3822138bc0 updated submodules 2024-06-22 22:34:53 +00:00
arichornlover
09829f0d70
Merge changes from main branch 2024-06-22 17:33:50 -05:00
arichornlover
7970ffb29d
Update AppIconOptionsController.m 2024-06-22 17:31:10 -05:00
arichornlover
9d4ef4fb32
Update AppIconOptionsController.h 2024-06-22 17:30:28 -05:00
arichornlover
d5a2f77cca
Delete Sources/AppIconTableViewCell.m 2024-06-22 17:29:52 -05:00
arichornlover
c06a938b9b
Delete Sources/AppIconTableViewCell.h 2024-06-22 17:29:44 -05:00
arichornlover
7e0a087a40
Delete Sources/AppIconManager.m 2024-06-22 17:29:37 -05:00
arichornlover
6595de8a60
Delete Sources/AppIconManager.h 2024-06-22 17:29:32 -05:00
GitHub Actions
e0c0949251 updated submodules 2024-06-21 21:03:53 +00:00
GitHub Actions
2fb8d70b48 updated submodules 2024-06-21 20:40:50 +00:00
GitHub Actions
6e6e6592e6 updated submodules 2024-06-18 07:48:12 +00:00
GitHub Actions
218fe12328 updated submodules 2024-06-18 03:29:22 +00:00
arichornlover
d63ee3a9f3
Update AppIconTableViewCell.m 2024-06-16 21:47:00 -05:00
arichornlover
18ee4e871f
Create AppIconTableViewCell.h 2024-06-16 21:43:59 -05:00
arichornlover
43a9491dce
Create AppIconTableViewCell.m 2024-06-16 21:38:47 -05:00
arichornlover
57b1ac17a9
Create AppIconManager.m 2024-06-16 21:30:55 -05:00
arichornlover
9501445c19
Create AppIconManager.h 2024-06-16 21:30:14 -05:00
arichornlover
8e417b7cde
Update AppIconOptionsController.m 2024-06-16 21:29:31 -05:00
arichornlover
581f15d32d
Update AppIconOptionsController.h 2024-06-16 21:25:59 -05:00
arichornlover
644db69a3f
Update uYouPlusPatches.xm 2024-06-16 03:23:04 -05:00
arichornlover
ced6e2c7bb
Update uYouPlusPatches.h 2024-06-16 03:20:01 -05:00
arichornlover
81dcce8555
Update uYouPlus.xm 2024-06-15 04:12:28 -05:00
arichornlover
69c9399f9f
Update uYouPlusSettings.xm 2024-06-14 20:43:22 -05:00
arichornlover
4d8e9f70b7
Update uYouPlusSettings.xm 2024-06-14 20:07:13 -05:00
arichornlover
7db477d9a9
Add more headers 2024-06-14 17:51:10 -05:00
arichornlover
6057279454
Update uYouPlus.xm 2024-06-14 15:18:50 -05:00
arichornlover
0a74391fba
Update uYouPlusSettings.xm 2024-06-14 01:52:14 -05:00
arichornlover
9de3ac645e
Update AppIconOptionsController.m 2024-06-13 19:15:40 -05:00
arichornlover
26b8ca0a95
Simplified AppIconOptionsController.m
I simplified everything.
2024-06-13 18:32:10 -05:00
arichornlover
addc8cc914
Update uYouPlus.xm 2024-06-12 23:24:40 -05:00
arichornlover
1fe2b9f684
Experimental Option 2024-06-12 23:12:32 -05:00
arichornlover
22a56d3450
Experimental Option 2024-06-12 22:50:48 -05:00
arichornlover
c66e5247e1
Update uYouPlus.h 2024-06-12 22:46:55 -05:00
arichornlover
95ae61fd0a
Update AppIconOptionsController.m 2024-06-12 18:04:11 -05:00
arichornlover
c258c339fe
Update AppIconOptionsController.m 2024-06-12 17:31:24 -05:00
arichornlover
53eb25f260
Delete Localizations/uYouPlus.bundle/AppIcons/Gold.png 2024-06-12 17:23:23 -05:00
arichornlover
6987753f93
Delete Localizations/uYouPlus.bundle/AppIcons/2017_Gold.png 2024-06-12 17:23:06 -05:00
arichornlover
06e014dff7
Delete Localizations/uYouPlus.bundle/AppIcons/2013.png 2024-06-12 17:22:51 -05:00
arichornlover
e44fbcf16c
Different AppIcon sizes 2024-06-12 17:21:12 -05:00
arichornlover
11d28bc4f5
Delete Localizations/uYouPlus.bundle/AppIcons/Shorts.png 2024-06-12 17:15:05 -05:00
arichornlover
e1bce2c0eb
Delete Localizations/uYouPlus.bundle/AppIcons/Shorts@3x.png 2024-06-12 17:14:47 -05:00
arichornlover
baea7e8cd7
Delete Localizations/uYouPlus.bundle/AppIcons/Shorts@2x.png 2024-06-12 17:14:40 -05:00
arichornlover
e437e8cecc
add folder for that specific icon 2024-06-12 17:14:18 -05:00
arichornlover
3830d87b77
Fix document picker not appearing 2024-06-12 17:12:27 -05:00
arichornlover
77153f0bfb
Update uYouPlus.xm 2024-06-10 17:18:44 -05:00
arichornlover
a857168423
Update uYouPlusSettings.xm 2024-06-10 16:48:52 -05:00
arichornlover
5d2ea47fd6
Update uYouPlusSettings.xm 2024-06-09 21:36:49 -05:00
arichornlover
6e95fc554f
Update uYouPlusSettings.xm 2024-06-09 21:05:17 -05:00
arichornlover
de59708a3c
Update uYouPlusSettings.xm 2024-06-09 20:52:57 -05:00
arichornlover
c9c7952ae3
Update uYouPlusSettings.xm 2024-06-09 20:01:38 -05:00
arichornlover
ddf5070386
Update uYouPlusSettings.xm 2024-06-09 19:50:56 -05:00
arichornlover
57e299f708
Update uYouPlusSettings.xm 2024-06-09 18:58:44 -05:00
arichornlover
1e1c4b4dae
Update uYouPlusSettings.xm 2024-06-09 18:58:08 -05:00
arichornlover
e389ecb6d6
Utilize Bundle 2024-06-09 18:49:20 -05:00
arichornlover
8d8a2b2135
Update uYouPlusSettings.xm 2024-06-09 15:55:17 -05:00
arichornlover
0b4b55c2cb
Update Info.plist 2024-06-09 04:15:42 -05:00
arichornlover
760895a50f
AppIcons (Experiment) 2024-06-09 04:05:17 -05:00
arichornlover
2c59ef4231
Add files via upload 2024-06-09 03:22:49 -05:00
arichornlover
3715faeac8
Update uYouPlusSettings.xm 2024-06-09 02:22:38 -05:00
arichornlover
338701eac0
Update uYouPlus.h 2024-06-09 02:10:07 -05:00
arichornlover
3b9fee4d93
Update AppIconOptionsController.m 2024-06-09 01:06:42 -05:00
arichornlover
5fc2d7c204
Update AppIconOptionsController.m 2024-06-09 00:54:19 -05:00
arichornlover
3c94b4ba98
Update AppIconOptionsController.m 2024-06-09 00:42:45 -05:00
arichornlover
81d1ddaea1
Update uYouPlus.h 2024-06-09 00:29:19 -05:00
arichornlover
20f447027d
Update uYouPlus.h 2024-06-09 00:21:41 -05:00
arichornlover
0d2d10334a
Update uYouPlus.h 2024-06-09 00:03:27 -05:00
arichornlover
7024fed57d
Update uYouPlus.xm 2024-06-08 22:25:46 -05:00
GitHub Actions
4ff78dc8f7 updated submodules 2024-06-09 02:20:11 +00:00
arichornlover
67d16973f3
Update uYouPlus.xm 2024-06-08 21:15:38 -05:00
arichornlover
c22e4c4714
Update uYouPlus.xm 2024-06-08 21:15:23 -05:00
GitHub Actions
747aa5414d updated submodules 2024-06-09 00:18:58 +00:00
arichornlover
e7280ef787
Update uYouPlus.h 2024-06-08 19:17:55 -05:00
GitHub Actions
ebc95d8de2 updated submodules 2024-06-08 23:50:04 +00:00
arichornlover
f0d0797eca
Update uYouPlus.xm 2024-06-08 18:49:15 -05:00
arichornlover
0d11f24c44
Update uYouPlusSettings.xm 2024-06-08 18:38:44 -05:00
arichornlover
ed6e421da9
Update uYouPlus.xm 2024-06-08 17:56:41 -05:00
GitHub Actions
d93cfe2713 updated submodules 2024-06-08 22:50:59 +00:00
arichornlover
8bb96cd365
Update .gitmodules 2024-06-08 17:49:50 -05:00
GitHub Actions
8129de961f updated submodules 2024-06-08 19:28:14 +00:00
arichornlover
f310fd4680
Update LowContrastMode.xm 2024-06-07 13:52:20 -05:00
GitHub Actions
6b0c1424ea updated submodules 2024-06-07 18:27:56 +00:00
GitHub Actions
9c61a8868a updated submodules 2024-06-07 18:26:56 +00:00
GitHub Actions
a7dbb42a44 updated submodules 2024-06-07 18:14:47 +00:00
GitHub Actions
9df9b15975 updated submodules 2024-06-07 17:58:54 +00:00
GitHub Actions
425935de27 updated submodules 2024-06-05 21:01:27 +00:00
GitHub Actions
40a15fdf3f updated submodules 2024-06-05 20:47:39 +00:00
GitHub Actions
c568291586 updated submodules 2024-06-05 20:30:34 +00:00
arichornlover
9b82c82851
Update .gitmodules 2024-06-05 15:29:31 -05:00
arichornlover
9b3f01bcd0
Update control 2024-06-05 15:28:23 -05:00
arichornlover
752ca2f693
Update uYouPlusPatches.xm 2024-06-05 15:27:11 -05:00
arichornlover
7f240104cd
Update uYouPlusSettings.xm 2024-06-05 15:25:18 -05:00
arichornlover
237ad26bdb
Update uYouPlusSettings.xm 2024-06-05 14:05:02 -05:00
arichornlover
39b6f34782
Update uYouPlusSettings.xm 2024-06-05 13:55:28 -05:00
arichornlover
6243f61d46
Update uYouPlusSettings.xm 2024-06-05 13:44:25 -05:00
arichornlover
a85478572b
Update Copy Settings keys 2024-06-05 13:29:23 -05:00
arichornlover
98f021ffb3
iSponsorBlock Support Copy Settings 2024-06-05 13:28:19 -05:00
GitHub Actions
f1269e7ef3 updated submodules 2024-06-05 08:55:55 +00:00
arichornlover
09438f7fc6
Update uYouPlusPatches.h 2024-06-05 03:55:02 -05:00
GitHub Actions
2f01bb36c7 updated submodules 2024-06-05 08:45:57 +00:00
GitHub Actions
f8ea01e32c updated submodules 2024-06-05 07:37:54 +00:00
arichornlover
0851ba0b04
Update uYouPlusPatches.h 2024-06-05 02:12:53 -05:00
GitHub Actions
c99d7620af updated submodules 2024-06-05 06:58:20 +00:00
arichornlover
cfc2ac4497
Update uYouPlus.h 2024-06-05 01:57:31 -05:00
GitHub Actions
f3a927869a updated submodules 2024-06-05 06:40:08 +00:00
arichornlover
696f144a43
Update uYouPlus.h 2024-06-05 01:37:05 -05:00
GitHub Actions
4d9927ea7e updated submodules 2024-06-05 05:16:03 +00:00
arichornlover
35e14f7dbe
Update BigYTMiniPlayer.h 2024-06-05 00:14:31 -05:00
GitHub Actions
a0c1890012 updated submodules 2024-06-05 05:05:48 +00:00
arichornlover
4ef8b6e000
Update uYouPlusPatches.xm
Also includes a new option.
2024-06-04 23:44:30 -05:00
arichornlover
a59b0264d0
Add headers 2024-06-04 23:30:44 -05:00
arichornlover
14dcb8831f
Update update-submodules.yml 2024-06-04 23:21:21 -05:00
GitHub Actions
b261bef5ef added uYouEnhanced submodules 2024-06-05 04:20:33 +00:00
arichornlover
a51084e4be
Update update-submodules.yml 2024-06-04 23:19:55 -05:00
arichornlover
cdcbb475fc
Update uYouPlusPatches.h (Nightly Patch) 2024-06-04 20:57:09 -05:00
arichornlover
9187e9132a
Update uYouPlus.xm 2024-06-04 20:54:41 -05:00
GitHub Actions
46007fd0f8 updated submodules 2024-06-04 04:59:53 +00:00
GitHub Actions
1e421b9447 updated submodules 2024-06-03 23:08:54 +00:00
GitHub Actions
860e554898 updated submodules 2024-06-03 23:06:04 +00:00
arichornlover
ef26c08644
Fix Experimental Button (Localization Fix) 2024-06-03 16:00:33 -05:00
arichornlover
66bea70288
YouTimeStamp v1.1.0 (WIP)
YouTimeStamp will include customization features soon for v1.1.0 release.
2024-06-03 12:32:07 -05:00
arichornlover
a28dd2dcec
Update uYouPlusSettings.xm (Experimental)
Settings.xm but includes the experimental Copy Settings and Paste Settings buttons.
2024-06-03 12:30:12 -05:00
arichornlover
813603b214
Update AppIconOptionsController.m (Experimental)
Experimental
2024-06-03 12:27:34 -05:00
54 changed files with 1367 additions and 2049 deletions

View file

@ -26,14 +26,14 @@ body:
- type: input
attributes:
label: iOS/iPadOS version
placeholder: iOS 18.0.0
placeholder: iOS 17.4
validations:
required: true
- type: input
attributes:
label: Device model
placeholder: iPhone 16 Pro Max
placeholder: iPhone 15 Pro Max
validations:
required: true
@ -47,7 +47,7 @@ body:
- type: input
attributes:
label: Tweak version
placeholder: uYouEnhanced - v19.xx.x-3.0.4
placeholder: uYouEnhanced - v19.xx.x-3.0.3
description: "**latest or newest is NOT a version number!**"
validations:
required: true
@ -109,15 +109,6 @@ body:
validations:
required: true
- type: checkboxes
attributes:
label: Select the configuration used for building or obtaining the uYouEnhanced ipa. (Optional)
options:
- label: "buildapp.yml (GitHub Actions — build method as suggested by [Wiki - Building](https://github.com/arichornlover/uYouEnhanced/wiki/Building))"
- label: "build.sh (Shell script)"
- label: "AltStore Source (obtained from https://raw.githubusercontent.com/arichornlover/arichornlover.github.io/main/apps.json)"
- label: "Other (obtained from untrusted or potentially unsafe sources such as phishing sites, unknown individuals, or unofficial channels.)"
- type: textarea
attributes:
label: Additional context

View file

@ -54,13 +54,13 @@ concurrency:
jobs:
build:
name: Build uYouEnhanced
runs-on: macos-13
runs-on: macos-12
permissions:
contents: write
steps:
- name: Checkout Main
uses: actions/checkout@v4.2.1
uses: actions/checkout@v4.1.6
with:
path: main
ref: ${{ github.event.inputs.commit_id || github.ref }}
@ -73,7 +73,7 @@ jobs:
run: echo "$(brew --prefix make)/libexec/gnubin" >> $GITHUB_PATH
- name: Setup Theos
uses: actions/checkout@v4.2.1
uses: actions/checkout@v4.1.6
with:
repository: theos/theos
ref: 5bfdc3cb7133ec1cab43182115d902e2b57c9eac
@ -82,7 +82,7 @@ jobs:
- name: SDK Caching
id: SDK
uses: actions/cache@v4.1.1
uses: actions/cache@v4.0.2
env:
cache-name: iOS-${{ inputs.sdk_version }}-SDK
with:
@ -93,7 +93,7 @@ jobs:
- name: Download iOS SDK
if: steps.SDK.outputs.cache-hit != 'true'
run: |
git clone --quiet -n --depth=1 --filter=tree:0 https://github.com/theos/sdks/
git clone --quiet -n --depth=1 --filter=tree:0 https://github.com/arichornlover/sdks/
cd sdks
git sparse-checkout set --no-cone iPhoneOS${{ inputs.sdk_version }}.sdk
git checkout
@ -102,7 +102,7 @@ jobs:
THEOS: ${{ github.workspace }}/theos
- name: Setup Theos Jailed
uses: actions/checkout@v4.2.1
uses: actions/checkout@v4.1.6
with:
repository: qnblackcat/theos-jailed
ref: master
@ -137,7 +137,7 @@ jobs:
cd ${{ github.workspace }}/main
sed -i '' "27s#.*#BUNDLE_ID = ${{ env.BUNDLE_ID }}#g" Makefile # Modify the bundle ID
sed -i '' "26s#.*#DISPLAY_NAME = ${{ env.APP_NAME }}#g" Makefile # Modify the app name
sed -i '' "1s#.*#export TARGET = iphone:clang:${{ inputs.sdk_version }}:14.0#g" Makefile # Modify the SDK version
sed -i '' "1s#.*#export TARGET = iphone:clang:${{ inputs.sdk_version }}:15.0#g" Makefile # Modify the SDK version
make package THEOS_PACKAGE_SCHEME=rootless IPA=Payload/YouTube.app FINALPACKAGE=1
echo "package=$(ls -t packages | head -n1)" >>$GITHUB_OUTPUT
echo -e "==> \033[1mSHASUM256: $(shasum -a 256 packages/*.ipa | cut -f1 -d' ')\033[0m"
@ -151,7 +151,7 @@ jobs:
- name: Upload Artifact
if: ${{ inputs.upload_artifact }}
uses: actions/upload-artifact@v4.4.3
uses: actions/upload-artifact@v4.3.3
env:
UYOU_VERSION: ${{ inputs.uyou_version }}
YOUTUBE_VERSION: ${{ steps.prepare_youtube.outputs.youtube_version }}
@ -163,7 +163,7 @@ jobs:
- name: Create Release
if: ${{ inputs.create_release }}
id: create_release
uses: softprops/action-gh-release@v2.0.8
uses: softprops/action-gh-release@v2.0.5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
UYOU_VERSION: ${{ inputs.uyou_version }}

View file

@ -1,8 +1,6 @@
name: Update Submodules
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
jobs:
@ -11,7 +9,7 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4.2.1
uses: actions/checkout@v4.1.6
- name: Set up Git
run: |
@ -24,10 +22,14 @@ jobs:
git add .
git submodule update --init --recursive --remote Tweaks/DontEatMyContent
git add .
git submodule update --init --recursive --remote Tweaks/IAmYouTube
git add .
git submodule update --init --recursive --remote Tweaks/YTHoldForSpeed
git add .
git submodule update --init --recursive --remote Tweaks/YTSpeed
git add .
git submodule update --init --recursive --remote Tweaks/MrBeastify
git add .
git submodule update --init --recursive --remote Tweaks/Return-YouTube-Dislikes
git add .
git submodule update --init --recursive --remote Tweaks/uYouLocalization
@ -54,8 +56,6 @@ jobs:
git add .
git submodule update --init --recursive --remote Tweaks/iSponsorBlock
git add .
git submodule update --init --recursive --remote Tweaks/protobuf
git add .
git submodule update --init --recursive
git commit -m "updated submodules"
git push

45
.gitmodules vendored
View file

@ -8,7 +8,7 @@
branch = main
[submodule "Tweaks/YouMute"]
path = Tweaks/YouMute
url = https://github.com/PoomSmart/YouMute.git
url = https://github.com/arichornlover/YouMute.git
branch = main
[submodule "Tweaks/YouQuality"]
path = Tweaks/YouQuality
@ -20,10 +20,11 @@
branch = main
[submodule "Tweaks/Return-YouTube-Dislikes"]
path = Tweaks/Return-YouTube-Dislikes
url = https://github.com/PoomSmart/Return-YouTube-Dislikes.git
url = https://github.com/arichornloverALT/Return-YouTube-Dislikes.git
branch = uYouEnhanced
[submodule "Tweaks/YouTubeHeader"]
path = Tweaks/YouTubeHeader
url = https://github.com/arichornloverALT/YouTubeHeader.git
url = https://github.com/arichornlover/YouTubeHeader.git
branch = main
[submodule "Extensions"]
path = Extensions
@ -31,12 +32,8 @@
branch = main
[submodule "Tweaks/YTABConfig"]
path = Tweaks/YTABConfig
url = https://github.com/PoomSmart/YTABConfig.git
url = https://github.com/arichornlover/YTABConfig2.git
branch = main
[submodule "Tweaks/FLEXing"]
path = Tweaks/FLEXing
url = https://github.com/PoomSmart/FLEXing
branch = rootless
[submodule "Tweaks/Alderis"]
path = Tweaks/Alderis
url = https://github.com/hbang/Alderis.git
@ -45,11 +42,14 @@
url = https://github.com/Muirey03/RemoteLog
[submodule "Tweaks/DontEatMyContent"]
path = Tweaks/DontEatMyContent
url = https://github.com/arichornloverALT/DontEatMyContent
url = https://github.com/therealFoxster/DontEatMyContent
[submodule "Tweaks/iSponsorBlock"]
path = Tweaks/iSponsorBlock
url = https://github.com/Galactic-Dev/iSponsorBlock.git
branch = master
[submodule "Tweaks/IAmYouTube"]
path = Tweaks/IAmYouTube
url = https://github.com/PoomSmart/IAmYouTube.git
[submodule "Tweaks/YTClassicVideoQuality"]
path = Tweaks/YTClassicVideoQuality
url = https://github.com/PoomSmart/YTClassicVideoQuality.git
@ -58,32 +58,27 @@
url = https://github.com/PoomSmart/NoYTPremium.git
[submodule "Tweaks/YTSpeed"]
path = Tweaks/YTSpeed
url = https://github.com/arichornloverALT/YTSpeed.git
[submodule "Tweaks/YouTube-X"]
path = Tweaks/YouTube-X
url = https://github.com/PoomSmart/YouTube-X/
[submodule "Tweaks/IAmYouTube"]
path = Tweaks/IAmYouTube
url = https://github.com/PoomSmart/IAmYouTube.git
[submodule "Tweaks/YTHoldForSpeed"]
path = Tweaks/YTHoldForSpeed
url = https://github.com/arichornloverALT/YTHoldForSpeed.git
url = https://github.com/arichornlover/YTSpeed.git
[submodule "Tweaks/MrBeastify"]
path = Tweaks/MrBeastify
url = https://github.com/arichornloverALT/MrBeastify.git
url = https://github.com/arichornlover/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/arichornlover/YTHoldForSpeed.git
[submodule "Tweaks/uYouLocalization"]
path = Tweaks/uYouLocalization
url = https://github.com/dayanch96/uYouLocalization.git
[submodule "Tweaks/YouGroupSettings"]
path = Tweaks/YouGroupSettings
url = https://github.com/arichornloverALT/YouGroupSettings.git
url = https://github.com/arichornlover/YouGroupSettings.git
[submodule "Tweaks/YouTimeStamp"]
path = Tweaks/YouTimeStamp
url = https://github.com/arichornloverALT/YouTimeStamp.git
url = https://github.com/arichornlover/YouTimeStamp.git
branch = wip
[submodule "Tweaks/protobuf"]
path = Tweaks/protobuf
url = https://github.com/protocolbuffers/protobuf.git
[submodule "Tweaks/YouLoop"]
path = Tweaks/YouLoop
url = https://github.com/bhackel/YouLoop.git

View file

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

View file

@ -11,7 +11,8 @@ If I verify a reported Code of Conduct violation, my policy is:
<details>
<summary>Exclusive Rule for the original uYouPlus devs ⬇️</summary>
- Devs **qnblackcat** and **PoomSmart** are allowed to use any new or changed code from the arichornlover/uYouEnhanced fork. This rule is in place to also preserve any of the rejected features in uYouEnhanced, refering to (LowContrastMode, Hide Shadow Overlay Button, Dark theme Theme Customization & etc.)
- Devs **qnblackcat** and **PoomSmart** are not allowed to use any new or changed code from the uYouEnhanced fork (excludes **AppIconOptionsController.m** & **AppIconOptionsController.h**) unless it is absolutely necessary. Breaking this rule may result in consequences like access revocation. it is strictly forbidden to publicly share or showcase the content of this policy on any social media platforms. This rule is in place to protect any of the rejected features in uYouEnhanced, refering to (LowContrastMode, Hide Shadow Overlay Button, YTHoldForSpeed & etc.)
To prevent conflicts and misunderstandings related to donations, all users should use code from the uYouEnhanced fork responsibly and honor the permissions and restrictions provided by the project administrators and tweak developers. Failure to do so may result in access revocation.
</details>
## uYouEnhanced Version Info
@ -20,7 +21,7 @@ this following version of the uYouEnhanced Tweak is currently supported with fea
| Developer(s) | Version | LTS Support | YT Version Supported | App Stability | uYou Functionality | uYouEnhanced Functionality |
| - | - | - | - | - | - | - |
| MiRO92(uYou) & arichornlover(uYouEnhanced) | [latest](https://github.com/arichornlover/uYouEnhanced/releases/latest) | ✅ | ✅ | Stable | Fully functional | Change App Icon doesn't do anything |
| MiRO92(uYou) & arichornlover(uYouEnhanced) | [latest](https://github.com/arichornlover/uYouEnhanced/releases/latest) | ✅ | ✅ | Stable | Fully functional | Change App Icon isn't functional, Timestamping url isn't functional |
## uYouEnhanced Branches Info
@ -29,4 +30,4 @@ this following version of the uYouEnhanced Tweak is currently supported with fea
| `main` | The Default and Maintained Branch of uYouEnhanced. |
| `main-beta` | The Branch that is used for whenever Refreshing/Resetting the `main` branch. |
| `main-16.42.3LTS` | This Branch is an older version of `main` and includes outdated code for v16.42.3. This Version is discontinued but could still work in some cases. |
| `main-nightly` | The Branch that is similar to `main` but adds experimental features and other content for the app. |
| `main-nightly` | The Branch that is similar to `main` but adds experimental features like the tweak `YouTimeStamp` and other content in the app. |

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

View file

@ -26,7 +26,7 @@
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>AppIcon</string>
<string>logo_youtube_color</string>
</array>
</dict>
<key>CFBundleAlternateIcons</key>
@ -59,6 +59,13 @@
<string>Outline</string>
</array>
</dict>
<key>Shorts</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>Shorts</string>
</array>
</dict>
<key>2012</key>
<dict>
<key>CFBundleIconFiles</key>

View file

@ -66,8 +66,8 @@
"HIDE_AUTOPLAY_SWITCH" = "Ocultar interruptor de Reproducir automáticamente";
"HIDE_AUTOPLAY_SWITCH_DESC" = "Ocultar el interruptor de Reproducir automáticamente en los botones superpuestos.";
"HIDE_YTMUSIC_BUTTON" = "Ocultar botón de Youtube Music";
"HIDE_YTMUSIC_BUTTON_DESC" = "Oculta el botón de Youtube Music que aparece con Premium.";
"HIDE_YTMUSIC_BUTTON" = "Hide Youtube Music button";
"HIDE_YTMUSIC_BUTTON_DESC" = "Hides Youtube Music button that appears with Premium";
"HIDE_SUBTITLES_BUTTON" = "Ocultar botón de Subtítulos";
"HIDE_SUBTITLES_BUTTON_DESC" = "Ocultar el botón de Subtítulos en los botones superpuestos.";
@ -76,22 +76,22 @@
"HIDE_HUD_MESSAGES_DESC" = "Ejemplo: CC está activado/desactivado, Vídeo en bucle está activado,...";
"HIDE_PAID_PROMOTION_CARDS" = "Ocultar banner de contenido promocional";
"HIDE_PAID_PROMOTION_CARDS_DESC" = "Oculta el banner de 'Incluye contenido promocional' en algunos vídeos.";
"HIDE_PAID_PROMOTION_CARDS_DESC" = "Ocultar el banner de 'Incluye contenido promocional' en algunos vídeos.";
"HIDE_CHANNEL_WATERMARK" = "Ocultar marca de agua del canal";
"HIDE_CHANNEL_WATERMARK_DESC" = "Oculta la marca de agua del canal en la superposición de controles de vídeo. Es necesario reiniciar la aplicación.";
"HIDE_CHANNEL_WATERMARK_DESC" = "Ocultar la marca de agua del canal en la superposición de controles de vídeo. Es necesario reiniciar la aplicación.";
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Ocultar el botón de Anterior y Siguiente";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Oculta el botón de Anterior y Siguiente en los botones superpuestos.";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Ocultar el botón de Anterior y Siguiente en los botones superpuestos.";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Remplazar botón anterior y siguiente";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Remplaza el botón Anterior y Siguiente con el botón Avance rápido y Rebobinado. Es necesario reiniciar la aplicación.";
"REPLACE_PREVIOUS_NEXT_BUTTON" = "Reemplazar botón anterior y siguiente";
"REPLACE_PREVIOUS_NEXT_BUTTON_DESC" = "Reemplace el botón Anterior y Siguiente con el botón Avance rápido y Rebobinado. Es necesario reiniciar la aplicación.";
"RED_PROGRESS_BAR" = "Barra de progreso roja";
"RED_PROGRESS_BAR_DESC" = "Recupera la barra de progreso roja. Es necesario reiniciar la aplicación.";
"HIDE_HOVER_CARD" = "Ocultar tarjetas flotantes en las pantallas finales (YTNoHoverCards)";
"HIDE_HOVER_CARD_DESC" = "Oculta las tarjetas flotantes del creador (miniaturas) al final de los vídeos.";
"HIDE_HOVER_CARD_DESC" = "Ocultar tarjetas flotantes del creador (miniaturas) al final de los vídeos.";
"HIDE_RIGHT_PANEL" = "Ocultar el panel derecho en modo pantalla completa";
"HIDE_RIGHT_PANEL_DESC" = "Es necesario reiniciar la aplicación.";
@ -100,10 +100,10 @@
"SHORTS_CONTROLS_OVERLAY_OPTIONS" = "💥 Configurar superposición de Shorts";
"HIDE_SUPER_THANKS" = "Ocultar banner 'Comprar Supergracias";
"HIDE_SUPER_THANKS_DESC" = "Oculta el banner 'Comprar Supergracias' en Shorts.";
"HIDE_SUPER_THANKS_DESC" = "Ocultar el banner 'Comprar Supergracias' en Shorts.";
"HIDE_SUBCRIPTIONS" = "Ocultar el botón de suscripción";
"HIDE_SUBCRIPTIONS_DESC" = "Oculta el botón de suscripción del Reproductor.";
"HIDE_SUBCRIPTIONS_DESC" = "";
"DISABLE_RESUME_TO_SHORTS" = "Desactivar reanudación a Shorts";
"DISABLE_RESUME_TO_SHORTS_DESC" = "Si cierras YouTube mientras ves Shorts, éstos no se reproducirán automáticamente la próxima vez que inicies YouTube.";
@ -115,7 +115,7 @@
"HIDE_ISPONSORBLOCK" = "Ocultar botón iSponsorBlock";
"CAST_CONFIRM" = "Alerta de confirmación antes de Enviar contenido (YTCastConfirm)";
"CAST_CONFIRM_DESC" = "Muestra una alerta de confirmación antes de Enviar contenido para prevenir el secuestro accidental del TV.";
"CAST_CONFIRM_DESC" = "Mostrar una alerta de confirmación antes de Enviar contenido para prevenir el secuestro accidental del TV.";
"CASTING" = "Enviar contenido";
"MSG_ARE_YOU_SURE" = "¿Estás seguro de que deseas Enviar contenido?";
"MSG_YES" = "Sí";
@ -124,11 +124,11 @@
"DISABLE_HINTS" = "Desactivar sugerencias";
"DISABLE_HINTS_DESC" = "Desactiva las sugerencias de YouTube que suelen aparecer cuando la aplicación está recién instalada.";
"ENABLE_YT_STARTUP_ANIMATION" = "Activar animación de inicio de YouTube";
"ENABLE_YT_STARTUP_ANIMATION_DESC" = "Activa la animación al iniciar Youtube";
"ENABLE_YT_STARTUP_ANIMATION" = "Activar la animación de inicio de YouTube";
"ENABLE_YT_STARTUP_ANIMATION_DESC" = "";
"HIDE_CHIP_BAR" = "Ocultar barra superiorm";
"HIDE_CHIP_BAR_DESC" = "Oculta 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_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" = "Ocultar \"Reproducir siguiente en cola\"";
"HIDE_PLAY_NEXT_IN_QUEUE_DESC" = "";
@ -149,105 +149,105 @@
"FIX_GOOGLE_SIGNIN_DESC" = "Active esta opción solo cuando no pueda iniciar sesión con su cuenta de Google y la aplicación se instaló a través de TrollStore. Si puede iniciar sesión normalmente, manténgala desactivada. Es necesario reiniciar la aplicación.";
// uYouEnhanced Localization
"SUPPORT_THE_DEVELOPERS" = "Apoya a los desarrolladores";
"COPY_SETTINGS" = "Copiar Ajustes";
"COPY_SETTINGS_DESC" = "Copiar Ajustes actuales al Portapapeles";
"PASTE_SETTINGS" = "Pegar Ajustes";
"PASTE_SETTINGS_DESC" = "Pegar Ajustes desde el Portapapeles y aplicar";
"EXPORT_SETTINGS" = "Exportar Ajustes";
"EXPORT_SETTINGS_DESC" = "Exporta todos los Ajustes actuales en un archivo .txt";
"IMPORT_SETTINGS" = "Importar Ajustes";
"IMPORT_SETTINGS_DESC" = "Pulsa para importar Ajustes (.txt)";
"REPLACE_COPY_AND_PASTE_BUTTONS" = "Remplaza los botones 'Copiar Ajustes' y 'Pegar Ajustes'";
"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Remplaza los botones a 'Exportar Ajustes' e 'Importar Ajustes'";
"SUPPORT_THE_DEVELOPERS" = "Support the Developers";
"COPY_SETTINGS" = "Copy Settings";
"COPY_SETTINGS_DESC" = "Copy all current settings to the clipboard";
"PASTE_SETTINGS" = "Paste Settings";
"PASTE_SETTINGS_DESC" = "Paste settings from clipboard and apply";
"EXPORT_SETTINGS" = "Export Settings";
"EXPORT_SETTINGS_DESC" = "Exports all current settings into a .txt file";
"IMPORT_SETTINGS" = "Import Settings";
"IMPORT_SETTINGS_DESC" = "Press to import settings (.txt)";
"REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons";
"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'";
"UYOUENHANCED_ESSENTIAL_MENU" = "Menú Esencial de uYouEnhanced";
"CHANGE_APP_ICON" = "Cambiar Icono de Aplicación";
"CLEAR_NOTIFICATIONS" = "Borrar Notificaciones";
"CLEAR_NOTIFICATIONS_DESC" = "Forzar borrado de todas las notificaciones de la app (Recomendado para Sideload)";
"UYOUENHANCED_ESSENTIAL_MENU" = "uYouEnhanced Essential Menu";
"CHANGE_APP_ICON" = "Change App Icon";
"CLEAR_NOTIFICATIONS" = "Clear Notifications";
"CLEAR_NOTIFICATIONS_DESC" = "Force clear all app notifications (Recommended when Sideloaded)";
"CUSTOM_DARK_THEME" = "Tema Oscuro Personalizado";
"CUSTOM_DARK_THEME" = "Custom Dark Theme";
"ENABLE_PORTRAIT_FULLSCREEN" = "Habilitar Modo Retrato a Pantalla Completa";
"ENABLE_PORTRAIT_FULLSCREEN_DESC" = "Habilita Modo Retrato a Pantalla Completa en la aplicación de YouTube. Se requiere el reicio de la app.";
"ENABLE_TAP_TO_SEEK" = "Habilitar toque para buscar";
"ENABLE_TAP_TO_SEEK_DESC" = "Salta a cualquier parte de un vídeo con un simple toque en la barra de búsqueda";
"DISABLE_PULL_TO_FULLSCREEN_GESTURE" = "Deshabilitar gesto arrastrar para Pantalla Completa";
"DISABLE_PULL_TO_FULLSCREEN_GESTURE_DESC" = "Deshabilita el gesto de arrastrar para entrar en Pantalla Completa vertical. Sólo se aplica a vídeos en modo apaisado.";
"DISABLE_DOUBLE_TAP_TO_SKIP_CHAPTER" = "Deshabilitar Doble toque para saltar capítulo";
"DISABLE_DOUBLE_TAP_TO_SKIP_CHAPTER_DESC" = "Deshabilita el gesto de doble toque con 2 dedos para saltar adelante/atrás en un capítulo.";
"ALWAYS_USE_REMAINING_TIME" = "Usar siempre tiempo restante";
"ALWAYS_USE_REMAINING_TIME_DESC" = "Cambiar el tiempo restante por defecto en la barra del reproductor.";
"DISABLE_TOGGLE_TIME_REMAINING" = "Deshabilitar el selector de tiempo restante";
"DISABLE_TOGGLE_TIME_REMAINING_DESC" = "Deshabilita el cambio de tiempo transcurrido a tiempo restante. Usar junto con otros ajustes para mostrar siempre el tiempo restante.";
"ENABLE_PORTRAIT_FULLSCREEN" = "Enable Portrait Fullscreen";
"ENABLE_PORTRAIT_FULLSCREEN_DESC" = "Enables Portrait Fullscreen on the YouTube App. App restart is required.";
"ENABLE_TAP_TO_SEEK" = "Enable Tap To Seek";
"ENABLE_TAP_TO_SEEK_DESC" = "Jump to anywhere in a video by single-tapping the seek bar";
"DISABLE_PULL_TO_FULLSCREEN_GESTURE" = "Disable pull-to-fullscreen gesture";
"DISABLE_PULL_TO_FULLSCREEN_GESTURE_DESC" = "Disable the drag gesture to enter vertical fullscreen. Only applies to landscape videos.";
"DISABLE_DOUBLE_TAP_TO_SKIP_CHAPTER" = "Disable Double tap to skip chapter";
"DISABLE_DOUBLE_TAP_TO_SKIP_CHAPTER_DESC" = "Disable the 2-finger double tap gesture that skips forward/backward by a chapter.";
"ALWAYS_USE_REMAINING_TIME" = "Always use remaining time";
"ALWAYS_USE_REMAINING_TIME_DESC" = "Change the default to show time remaining in the player bar.";
"DISABLE_TOGGLE_TIME_REMAINING" = "Disable toggle time remaining";
"DISABLE_TOGGLE_TIME_REMAINING_DESC" = "Disables changing time elapsed to time remaining. Use with other setting to always show remaining time.";
"ENABLE_SHARE_BUTTON" = "Habilitar Botón de Compartir";
"ENABLE_SHARE_BUTTON_DESC" = "Habilita el Botón de Compartir en los controles de vídeo superpuestos.";
"ENABLE_SAVE_TO_PLAYLIST_BUTTON" = "Habilitar Botón Guardar en Lista de Reproducción";
"ENABLE_SAVE_TO_PLAYLIST_BUTTON_DESC" = "Habilita el Botón de Guardar en la Lista de Reproducción en los controles de vídeo superpuestos.";
"HIDE_YTMUSIC_BUTTON" = "Ocultar botón de Youtube Music";
"HIDE_YTMUSIC_BUTTON_DESC" = "Oculta el botón de Youtube Music que aparece con Premium";
"HIDE_VIDEO_TITLE_IN_FULLSCREEN" = "Ocultar Título de Vídeo en Pantalla Completa";
"HIDE_VIDEO_TITLE_IN_FULLSCREEN_DESC" = "Oculta el Título del Vídeo que aparece funcionalmente en la esquina superior izquierda del reproductor a Pantalla Completa.";
"HIDE_COLLAPSE_BUTTON" = "Ocultar Botón de Colapso";
"HIDE_COLLAPSE_BUTTON_DESC" = "Oculta el Botón de Colapso en Flecha que se encuentra en la parte superior izquierda del Reproductor de Vídeo.";
"HIDE_FULLSCREEN_BUTTON" = "Ocultar Botón de Pantalla Completa";
"HIDE_FULLSCREEN_BUTTON_DESC" = "Oculta el Botón de Pantalla Completa que se encuentra en la parte inferior derecha del Reproductor de Vídeo.";
"HIDE_SHADOW_OVERLAY_BUTTONS" = "Ocultar Botones de Superposición de Sombra";
"HIDE_SHADOW_OVERLAY_BUTTONS_DESC" = "Oculta la Superposición de Sombra en los Botones Reproducir/Pausa, Anterior, Siguiente, Adelatar y Retrasar.";
"HIDE_FULLSCREEN_ACTION_BUTTONS" = "Ocultar Botones de Acción en Pantalla Completa";
"HIDE_FULLSCREEN_ACTION_BUTTONS_DESC" = "Oculta los botones de la pantalla en modo apaisado.";
"HIDE_SUGGESTED_VIDEO" = "Ocultar Vídeos Sugeridos";
"HIDE_SUGGESTED_VIDEO_DESC" = "Elimina la ventana emergente de vídeos sugeridos al final de un vídeo. Esto impide que la reproducción automática fucione.";
"HIDE_HEATWAVES_BAR" = "Ocultar Barra de Momentos Destacados";
"HIDE_HEATWAVES_BAR_DESC" = "Oculta la Barra de Momentos Destacados que se muestra originalmente por defecto en la Barra de Progreso del Reproductor. Se requiere reiniciar la App.";
"HIDE_DOUBLE_TAP_TO_SEEK_OVERLAY" = "Ocultar Doble Toque para Superposición de Búsqueda";
"HIDE_DOUBLE_TAP_TO_SEEK_OVERLAY_DESC" = "Esto oculta el doble toque animado para la superposición de búsqueda del reproductor de vídeo. Se requiere reiniciar la App.";
"HIDE_DARK_OVERLAY_BACKGROUND" = "Ocultar Superposición de Fondo Oscuro";
"HIDE_DARK_OVERLAY_BACKGROUND_DESC" = "Oculta la Superposición de Fondo Oscuro en el reproductor de vídeo. Se requiere reiniciar la App.";
"HIDE_AMBIENT_MODE_IN_FULLSCREEN" = "Ocultar Modo Ambiente en Pantalla Completa";
"HIDE_AMBIENT_MODE_IN_FULLSCREEN_DESC" = "Oculta y Previene el uso del Modo Ambiente del Reproductor de Vídeo en Pantalla Completa. Se requiere reiniciar la App.";
"HIDE_SUGGESTED_VIDEOS_IN_FULLSCREEN" = "Ocultar Vídeos Sugeridos en Pantalla Completa";
"HIDE_SUGGESTED_VIDEOS_IN_FULLSCREEN_DESC" = "Oculta los vídeos sugeridos cuando el Reproductor de Vídeo está en Pantalla Completa. Se requiere reiniciar la App.";
"HIDE_ALL_VIDEOS_UNDER_PLAYER" = "Ocutar todos los vídeos bajo el reproductor";
"HIDE_ALL_VIDEOS_UNDER_PLAYER_DESC" = "Elimina todos los vídeos bajo el Reproductor de Vídeo. Depende de la Orientación de Dispositivo.";
"ENABLE_SHARE_BUTTON" = "Enable Share Button";
"ENABLE_SHARE_BUTTON_DESC" = "Enable the Share Button in video controls overlay.";
"ENABLE_SAVE_TO_PLAYLIST_BUTTON" = "Enable Save To Playlist Button";
"ENABLE_SAVE_TO_PLAYLIST_BUTTON_DESC" = "Enable the Save To Playlist Button in video controls overlay.";
"HIDE_YTMUSIC_BUTTON" = "Hide Youtube Music button";
"HIDE_YTMUSIC_BUTTON_DESC" = "Hides Youtube Music button that appears with Premium";
"HIDE_VIDEO_TITLE_IN_FULLSCREEN" = "Hide Video Title in Fullscreen";
"HIDE_VIDEO_TITLE_IN_FULLSCREEN_DESC" = "Hides the Video Title along with the functionality in the Top Left of the Fullscreen Video Player.";
"HIDE_COLLAPSE_BUTTON" = "Hide Collapse Button";
"HIDE_COLLAPSE_BUTTON_DESC" = "Hides the Arrow Collapse Button that was shown in the Top Left of the Video Player.";
"HIDE_FULLSCREEN_BUTTON" = "Hide Fullscreen Button";
"HIDE_FULLSCREEN_BUTTON_DESC" = "Hides the Fullscreen Button that was shown at the Bottom Right of the Video Player.";
"HIDE_SHADOW_OVERLAY_BUTTONS" = "Hide Shadow Overlay Buttons";
"HIDE_SHADOW_OVERLAY_BUTTONS_DESC" = "Hide the Shadow Overlay on the Play/Pause, Previous, Next, Forward & Rewind Buttons.";
"HIDE_FULLSCREEN_ACTION_BUTTONS" = "Hide Fullscreen Action Buttons";
"HIDE_FULLSCREEN_ACTION_BUTTONS_DESC" = "Hides the buttons at the bottom of the screen when in landscape.";
"HIDE_SUGGESTED_VIDEO" = "Hide Suggested Video";
"HIDE_SUGGESTED_VIDEO_DESC" = "Remove the suggested video popup when finishing a video. Note that this will prevent autoplay from working.";
"HIDE_HEATWAVES_BAR" = "Hide Heatwaves Bar";
"HIDE_HEATWAVES_BAR_DESC" = "Hides the Heatwaves Bar that is originally shown in the Progress Bar by Default in the video player. App restart is required.";
"HIDE_DOUBLE_TAP_TO_SEEK_OVERLAY" = "Hide Double Tap to Seek Overlay";
"HIDE_DOUBLE_TAP_TO_SEEK_OVERLAY_DESC" = "This hides the animated double tap to seek overlay in the video player. App restart is required.";
"HIDE_DARK_OVERLAY_BACKGROUND" = "Hide Dark Overlay Background";
"HIDE_DARK_OVERLAY_BACKGROUND_DESC" = "Hide the Dark Overlay Background in the video player. App restart is required.";
"HIDE_AMBIENT_MODE_IN_FULLSCREEN" = "Hide Ambient Mode in Fullscreen";
"HIDE_AMBIENT_MODE_IN_FULLSCREEN_DESC" = "Hides and Prevents Ambient Mode from being used in the Video Player when in Fullscreen. App restart is required.";
"HIDE_SUGGESTED_VIDEOS_IN_FULLSCREEN" = "Hide Suggested Videos in Fullscreen";
"HIDE_SUGGESTED_VIDEOS_IN_FULLSCREEN_DESC" = "Hide the suggested videos whenever in the Fullscreen Video Player. App restart is required.";
"HIDE_ALL_VIDEOS_UNDER_PLAYER" = "Hide all videos under player";
"HIDE_ALL_VIDEOS_UNDER_PLAYER_DESC" = "Remove all videos under the video player. Depends on which Device Orientation.";
"SHORTS_QUALITY_PICKER" = "Selector de Calidad en Shorts";
"SHORTS_QUALITY_PICKER_DESC" = "Habilita el Selector de Calidad en los Shorts YouTube.";
"SHORTS_QUALITY_PICKER" = "Shorts Quality Picker";
"SHORTS_QUALITY_PICKER_DESC" = "Enables the YouTube Shorts Quality Picker";
"VIDEO_PLAYER_BUTTON_OPTIONS" = "Opciones del Reproductor de Vídeo";
"VIDEO_PLAYER_BUTTON_OPTIONS" = "Video Player Button Options";
"RED_SUBSCRIBE_BUTTON" = "Botón de Suscripción Rojo";
"RED_SUBSCRIBE_BUTTON_DESC" = "Restaura el color Rojo al Botón de Suscripción.";
"HIDE_BUTTON_CONTAINERS_UNDER_PLAYER" = "Ocultar Contenedor de Botones bajo Reproductor";
"HIDE_BUTTON_CONTAINERS_UNDER_PLAYER_DESC" = "Oculta el Cuerpo de los Botones bajo el reproductor de vídeo.";
"HIDE_CONNECT_BUTTON" = "Ocultar Botón Conectar bajo el reproductor";
"HIDE_CONNECT_BUTTON_DESC" = "Oculta el Botón de Conectar bajo el reproductor de vídeo.";
"HIDE_SHARE_BUTTON" = "Ocultar Botón Compartir bajo el reproductor";
"HIDE_SHARE_BUTTON_DESC" = "Oculta el Botón de Compartir bajo el reproductor de vídeo.";
"HIDE_THANKS_BUTTON" = "Ocultar Botón Gracias bajo el reproductor";
"HIDE_THANKS_BUTTON_DESC" = "Oculta el Botón de Gracias bajo el reproductor de vídeo.";
"HIDE_SAVE_BUTTON" = "Ocultar Botón Guardar bajo el reproductor";
"HIDE_SAVE_BUTTON_DESC" = "Oculta el Botón de Guardar bajo el reproductor de vídeo.";
"HIDE_REPORT_BUTTON" = "Ocultar Boton Reportar bajo el reproductor";
"HIDE_REPORT_BUTTON_DESC" = "Oculta el Botón de Reportarbajo el reproductor de vídeo.";
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER" = "Ocultar Previsualización de Comentarios bajo el reproductor";
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC" = "Oculta la Previsualización de Comentariosbajo el reproductor de vídeo.";
"HIDE_COMMENT_SECTION_BUTTON" = "Ocultar Sección Comentarios bajo el reproductor";
"HIDE_COMMENT_SECTION_BUTTON_DESC" = "Oculta la Sección de Comentarios bajo el reproductor de vídeo.";
"RED_SUBSCRIBE_BUTTON" = "Red Subscribe Button";
"RED_SUBSCRIBE_BUTTON_DESC" = "Restores the Subscribe Button Color to be Red.";
"HIDE_BUTTON_CONTAINERS_UNDER_PLAYER" = "Hide Button Containers under player";
"HIDE_BUTTON_CONTAINERS_UNDER_PLAYER_DESC" = "Hides the Button Containers under the video player.";
"HIDE_CONNECT_BUTTON" = "Hide the Connect Button under player";
"HIDE_CONNECT_BUTTON_DESC" = "Hides the Connect Button under the video player.";
"HIDE_SHARE_BUTTON" = "Hide the Share Button under player";
"HIDE_SHARE_BUTTON_DESC" = "Hides the Share Button under the video player.";
"HIDE_THANKS_BUTTON" = "Hide the Thanks Button under player";
"HIDE_THANKS_BUTTON_DESC" = "Hides the Thanks Button under the video player.";
"HIDE_SAVE_BUTTON" = "Hide the Save Button under player";
"HIDE_SAVE_BUTTON_DESC" = "Hides the Save Button under the video player.";
"HIDE_REPORT_BUTTON" = "Hide the Report Button under player";
"HIDE_REPORT_BUTTON_DESC" = "Hides the Report Button under the video player.";
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER" = "Hide Comment previews under player";
"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC" = "Hides the comment previews under the video player.";
"HIDE_COMMENT_SECTION_BUTTON" = "Hide the comment section under player";
"HIDE_COMMENT_SECTION_BUTTON_DESC" = "Hides the Comment Section under the video player.";
"APP_SETTINGS_OVERLAY_OPTIONS" = "Opciones de Superposición de Ajustes";
"APP_SETTINGS_OVERLAY_OPTIONS" = "App Settings Overlay Options";
"HIDE_ACCOUNT_SECTION" = "Ocultar Sección `Cuenta`";
"HIDE_AUTOPLAY_SECTION" = "Ocultar Sección `Autoplay`";
"HIDE_TRY_NEW_FEATURES_SECTION" = "Ocultar Sección `Prueba las nuevas funciones experimentales`";
"HIDE_VIDEO_QUALITY_PREFERENCES_SECTION" = "Ocultar Sección `Preferencias de calidad de vídeo`";
"HIDE_NOTIFICATIONS_SECTION" = "Ocultar Sección `Notificaciones`";
"HIDE_MANAGE_ALL_HISTORY_SECTION" = "Ocultar Sección `Gestionar todo el historial`";
"HIDE_YOUR_DATA_IN_YOUTUBE_SECTION" = "Ocultar Sección `Tus datos en YouTube`";
"HIDE_PRIVACY_SECTION" = "Ocultar Sección `Privacidad`";
"HIDE_LIVE_CHAT_SECTION" = "Ocultar Sección `Chat en directo`";
"HIDE_GET_YOUTUBE_PREMIUM_SECTION" = "Ocultar Sección `Consigue Youtube Premium`";
"HIDE_ACCOUNT_SECTION" = "Hide `Account` Section";
"HIDE_AUTOPLAY_SECTION" = "Hide `Autoplay` Section";
"HIDE_TRY_NEW_FEATURES_SECTION" = "Hide `Try New Features` Section";
"HIDE_VIDEO_QUALITY_PREFERENCES_SECTION" = "Hide `Video quality preferences` Section";
"HIDE_NOTIFICATIONS_SECTION" = "Hide `Notifications` Section";
"HIDE_MANAGE_ALL_HISTORY_SECTION" = "Hide `Manage all history` Section";
"HIDE_YOUR_DATA_IN_YOUTUBE_SECTION" = "Hide `Your data in YouTube` Section";
"HIDE_PRIVACY_SECTION" = "Hide `Privacy` Section";
"HIDE_LIVE_CHAT_SECTION" = "Hide `Live Chat` Section";
"HIDE_GET_YOUTUBE_PREMIUM_SECTION" = "Hide `Get Youtube Premium` Section";
"UI_INTERFACE_OPTIONS" = "UI Interface Options";

View file

@ -277,7 +277,6 @@
"FAKE_PREMIUM_WARNING" = "You sekmesi v%@ 'de mevcut değil, sahte düğmeler oluşturulmayacak.\nAncak, *Sahte Premium Logosu* hala çalışacaktır.";
"FAKE_YOUR_PREMIUM_BENEFITS" = "Premium faydalarınız";
"FAKE_DOWNLOADS" = "İndirmeler";
"DISABLE_ANIMATED_YOUTUBE_LOGO" = "Animasyonlu YouTube Logosunu Devre Dışı Bırak";
"CENTER_YOUTUBE_LOGO" = "YouTube Logosunu Ortala";
"CENTER_YOUTUBE_LOGO_DESC" = "Resmi YouTube Logosunu ortalamak için bu seçeneği açın. Uygulama yeniden başlatılması gereklidir.";
"HIDE_YOUTUBE_LOGO" = "YouTube Logosunu Gizle";
@ -294,8 +293,6 @@
"HIDE_INDICATORS_DESC" = "Tüm göstergeleri gizler. (örneğin: Aşağı kaydırma, Yukarı Kaydırma, Kaydırma Durumu)";
"FIX_CASTING" = "Dökümü Düzelt";
"FIX_CASTING_DESC" = "Dökümü düzeltmek için belirli A/B bayraklarını değiştirir.";
"NEW_SETTINGS_UI" = "Yeni Ayarlar Arayüzünü Kullan";
"NEW_SETTINGS_UI_DESC" = "İnce ayar(Tweak) kategorileriyle yeni Ayarlar Arayüzünü etkinleştirir.";
"DEFAULT" = "Varsayılan";
"CUSTOM_COLOR" = "Özel Renk";

View file

@ -1,6 +1,4 @@
export TARGET = iphone:clang:16.5:15.0
export SDK_PATH = $(THEOS)/sdks/iPhoneOS16.5.sdk/
export SYSROOT = $(SDK_PATH)
export TARGET = iphone:clang:16.5:14.0
export ARCHS = arm64
export libcolorpicker_ARCHS = arm64
@ -16,12 +14,11 @@ MODULES = jailed
endif
ifndef YOUTUBE_VERSION
YOUTUBE_VERSION = 19.40.4
YOUTUBE_VERSION = 19.21.2
endif
ifndef UYOU_VERSION
UYOU_VERSION = 3.0.4
UYOU_VERSION = 3.0.3
endif
PACKAGE_NAME = $(TWEAK_NAME)
PACKAGE_VERSION = $(YOUTUBE_VERSION)-$(UYOU_VERSION)
INSTALL_TARGET_PROCESSES = YouTube
@ -34,7 +31,7 @@ $(TWEAK_NAME)_FRAMEWORKS = UIKit Foundation AVFoundation AVKit Photos Accelerate
$(TWEAK_NAME)_LIBRARIES = bz2 c++ iconv z
$(TWEAK_NAME)_CFLAGS = -fobjc-arc -Wno-deprecated-declarations -Wno-unused-but-set-variable -DTWEAK_VERSION=\"$(PACKAGE_VERSION)\"
#uYouLocalization $(TWEAK_NAME)_INJECT_DYLIBS = Tweaks/uYou/Library/MobileSubstrate/DynamicLibraries/uYou.dylib $(THEOS_OBJ_DIR)/uYouLocalization.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)/YTABConfig.dylib $(THEOS_OBJ_DIR)/YouGroupSettings.dylib $(THEOS_OBJ_DIR)/YouLoop.dylib $(THEOS_OBJ_DIR)/YouMute.dylib $(THEOS_OBJ_DIR)/YouPiP.dylib $(THEOS_OBJ_DIR)/YouQuality.dylib $(THEOS_OBJ_DIR)/YouTimeStamp.dylib $(THEOS_OBJ_DIR)/YouTubeDislikesReturn.dylib $(THEOS_OBJ_DIR)/DontEatMyContent.dylib $(THEOS_OBJ_DIR)/YTHoldForSpeed.dylib $(THEOS_OBJ_DIR)/YoutubeSpeed.dylib $(THEOS_OBJ_DIR)/YTUHD.dylib $(THEOS_OBJ_DIR)/YTVideoOverlay.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 $(THEOS_OBJ_DIR)/YouTimeStamp.dylib .theos/obj/YouGroupSettings.dylib $(THEOS_OBJ_DIR)/YoutubeSpeed.dylib # $(THEOS_OBJ_DIR)/MrBeastify-ObjC.dylib
$(TWEAK_NAME)_EMBED_LIBRARIES = $(THEOS_OBJ_DIR)/libcolorpicker.dylib
$(TWEAK_NAME)_EMBED_FRAMEWORKS = $(_THEOS_LOCAL_DATA_DIR)/$(THEOS_OBJ_DIR_NAME)/install_Alderis.xcarchive/Products/var/jb/Library/Frameworks/Alderis.framework
$(TWEAK_NAME)_EMBED_BUNDLES = $(wildcard Bundles/*.bundle)
@ -43,7 +40,7 @@ $(TWEAK_NAME)_EMBED_EXTENSIONS = $(wildcard Extensions/*.appex)
include $(THEOS)/makefiles/common.mk
ifneq ($(JAILBROKEN),1)
#uYouLocalization SUBPROJECTS += Tweaks/Alderis Tweaks/uYouLocalization
SUBPROJECTS += Tweaks/Alderis Tweaks/DontEatMyContent Tweaks/FLEXing/libflex Tweaks/iSponsorBlock Tweaks/Return-YouTube-Dislikes Tweaks/YTABConfig Tweaks/YouGroupSettings Tweaks/YouLoop Tweaks/YouMute Tweaks/YouPiP Tweaks/YouQuality Tweaks/YouTimeStamp Tweaks/YTHoldForSpeed Tweaks/YTSpeed Tweaks/YTUHD Tweaks/YTVideoOverlay
SUBPROJECTS += Tweaks/Alderis Tweaks/FLEXing/libflex Tweaks/iSponsorBlock Tweaks/YouPiP Tweaks/Return-YouTube-Dislikes Tweaks/YTABConfig Tweaks/YTUHD Tweaks/DontEatMyContent Tweaks/YTHoldForSpeed Tweaks/YTVideoOverlay Tweaks/YouMute Tweaks/YouQuality Tweaks/YouTimeStamp Tweaks/YouGroupSettings Tweaks/YTSpeed # Tweaks/MrBeastify
include $(THEOS_MAKE_PATH)/aggregate.mk
endif
include $(THEOS_MAKE_PATH)/tweak.mk

View file

@ -287,43 +287,40 @@
- **Compatibility:** Requires iOS/iPadOS 15.0 or later.
- For AltStore user:
- My official AltStore repo (uYouEnhanced - iOS 15+): https://therealfoxster.github.io/altsource-viewer/view/?source=https://raw.githubusercontent.com/arichornloverALT/arichornloverALT.github.io/main/apps.json
- My official AltStore repo: https://therealfoxster.github.io/altsource-viewer/view/?source=https://raw.githubusercontent.com/arichornlover/arichornlover.github.io/main/apps.json
- My alternative AltStore repo (uYouEnhanced - iOS 14+ - mainly for Trollstore users): https://therealfoxster.github.io/altsource-viewer/view/?source=https://raw.githubusercontent.com/arichornloverALT/arichornloverALT.github.io/main/apps-legacy.json - not sure if i can update this ipa. this IPA will be locked in YouTube Version **19.20.2**
- [Open in AltStore (v19.40.4-3.0.4)](https://tinyurl.com/44zmcw8t) - It will take a while to install because AltStore needs to download the IPA first.
- [Open in AltStore (v19.21.2-3.0.4)](https://tinyurl.com/2wea84xd) - It will take a while to install because AltStore needs to download the IPA first.
<details>
<summary>Version information (last updated: Oct 10, 2024)</summary>
<summary>Version information (last updated: May 28, 2024)</summary>
| **Tweaks/App** | **Developer** | **Version** | **Open source** |
| - | - | :-: | :-: |
| **YouTube** | Google Inc | 19.40.4 | ✖︎ |
| **YouTube** | Google Inc | 19.21.2 | ✖︎ |
| [uYou](https://github.com/MiRO92/uYou-for-YouTube) | [MiRO92](https://twitter.com/miro92) | 3.0.4 | ✖︎ |
| **Open in YouTube** | [CokePokes](https://github.com/CokePokes) | 1.2 | [✔︎](https://github.com/CokePokes/YoutubeExtensions) |
| **iSponsorBlock** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.2.9 | [✔︎](https://github.com/Galactic-Dev/iSponsorBlock) |
| **iSponsorBlock** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.2.5 | [✔︎](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.1.8 | [✔︎](https://github.com/therealFoxster/DontEatMyContent) |
| **DontEatMyContent** | [therealFoxster](https://github.com/therealFoxster) | 1.1.6 | [✔︎](https://github.com/therealFoxster/DontEatMyContent) |
| **YTSpeed** | [Lyvendia](https://github.com/Lyvendia) | 1.0.1 | [✔︎](https://github.com/Lyvendia/YTSpeed) |
| **Alderis Color Picker** | [HASHBANG Productions](https://github.com/hbang) | 1.2 | [✔︎](https://github.com/hbang/Alderis) |
| **YTUHD** | [PoomSmart](https://twitter.com/poomsmart) | 1.5.5 | [✔︎](https://github.com/PoomSmart/YTUHD) |
| **YouPiP** | [PoomSmart](https://twitter.com/poomsmart) | 1.8.14 | [✔︎](https://github.com/PoomSmart/YouPiP) |
| **YTUHD** | [PoomSmart](https://twitter.com/poomsmart) | 1.5.1 | [✔︎](https://github.com/PoomSmart/YTUHD) |
| **YouPiP** | [PoomSmart](https://twitter.com/poomsmart) | 1.8.9 | [✔︎](https://github.com/PoomSmart/YouPiP) |
| **IAmYouTube** | [PoomSmart](https://twitter.com/poomsmart) | 1.3.0 | [✔︎](https://github.com/PoomSmart/IAmYouTube) |
| **YTABConfig** | [PoomSmart](https://twitter.com/poomsmart) | 1.7.3 | [✔︎](https://github.com/PoomSmart/YTABConfig) |
| **YTABConfig** | [PoomSmart](https://twitter.com/poomsmart) | 1.7.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.12.7 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) |
| **YouMute** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.3 | [✔︎](https://github.com/PoomSmart/YouMute) |
| **Return YouTube Dislike** | [PoomSmart](https://twitter.com/poomsmart) | 1.11.11 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) |
| **YouMute** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.1-3 | [✔︎](https://github.com/PoomSmart/YouMute) |
| **YouQuality** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.1 | [✔︎](https://github.com/PoomSmart/YouQuality) |
| **YouTube-X** | [PoomSmart](https://twitter.com/poomsmart) | 1.7.3 | [✔︎](https://github.com/PoomSmart/YouTube-X) |
| **YTVideoOverlay** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.0 | [✔︎](https://github.com/PoomSmart/YTVideoOverlay) |
| **YTHoldForSpeed** | [joshuaseltzer](https://github.com/joshuaseltzer) | 1.2.1 | [✔︎](https://github.com/joshuaseltzer/YTHoldForSpeed) |
| **YTVideoOverlay** | [PoomSmart](https://twitter.com/poomsmart) | 1.1.6 | [✔︎](https://github.com/PoomSmart/YTVideoOverlay) |
| **YTHoldForSpeed** | [joshuaseltzer](https://github.com/joshuaseltzer) | 1.2.0 | [✔︎](https://github.com/joshuaseltzer/YTHoldForSpeed) |
| **LowContrastMode** | [arichornlover](https://github.com/arichornlover) | 1.5.2 | [✔︎](https://github.com/arichornlover/YTLowContrastMode) |
| **YouTimeStamp** | [arichornlover](https://github.com/arichornlover) | 1.0.1 | [✔︎](https://github.com/arichornlover/YouTimeStamp) |
| **YouTimeStamp** | [arichornlover](https://github.com/arichornlover) | 1.0.0 | [✔︎](https://github.com/arichornlover/YouTimeStamp) |
</details>
@ -335,7 +332,7 @@
| MiRO92 | uYou 3.0 | v18.06.6 - v18.18.2 | iOS 14.0 - iOS 15.8.2 |
| MiRO92 | uYou 3.0.1 | v18.19.1 - v18.41.5 | iOS 14.0 - iOS 17.5.1 |
| MiRO92 | uYou 3.0.2 / 3.0.3 | v19.06.2 - v19.15.1 | iOS 14.0 - iOS 17.5.1 |
| MiRO92 | uYou 3.0.4 | v19.06.2 - v19.22.6 | iOS 14.0 - 17.5.1 |
| MiRO92 | uYou 3.0.4 | v19.06.2 - latest | iOS 14.0 - 17.5.1 |
# Building
@ -373,19 +370,18 @@ See [Installation - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/Installati
# Wiki
See [arichornlover - Wiki](https://github.com/arichornlover/uYouEnhanced/wiki/) or [qnblackcat - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/)
See [arichornlover - Wiki](https://github.com/arichornlover/uYouenhanced/wiki/) or [qnblackcat - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/)
## Lightweight Alternative - YTLitePlus
<details>
<summary>Read more</summary><br>
- Change from uYouEnhanced to YTLitePlus (optional)
# Switch from uYouEnhanced 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.
Hello, this is here to showcase this tweak. I have been seeing the posts about the YTLitePlus tweak on Reddit for quite some time now and decided to add it here. Before you download or check out the tweak, you should take a look at the pros and cons below to learn more about YTLitePlus.
https://github.com/YTLitePlus/YTLitePlus/releases
https://github.com/Balackburn/YTLitePlus/releases
**Pros**
@ -393,9 +389,9 @@ https://github.com/YTLitePlus/YTLitePlus/releases
- YTLitePlus provides more features in YTLite & YTLitePlus Sections in Settings that uYouPlus/uYouEnhanced may not have.
- YTLitePlus includes a lightweight and simplified version of the App Version Spoofer, making it easier to use.
- YTLitePlus includes a lightweight version of the App Version Spoofer, making it easier to use.
- YTLitePlus does not cause your device to overheat, unlike uYouPlus/uYouEnhanced.
- YTLitePlus does not cause your device to overheat, unlike uYouEnhanced.
- YTLitePlus provides faster video & audio downloading than uYouPlus/uYouEnhanced.
@ -403,5 +399,5 @@ https://github.com/YTLitePlus/YTLitePlus/releases
- 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.
- Reordering the pivot bar tabs such as Home, Shorts, Explore, Trending, Create, Subscriptions & You is not available in YTLitePlus.
</details>

View file

@ -2,9 +2,11 @@
#import <YouTubeHeader/YTAssetLoader.h>
@interface AppIconOptionsController () <UITableViewDataSource, UITableViewDelegate>
@property (strong, nonatomic) UITableView *tableView;
@property (strong, nonatomic) NSArray<NSString *> *appIcons;
@property (assign, nonatomic) NSInteger selectedIconIndex;
@end
@implementation AppIconOptionsController
@ -13,6 +15,8 @@
[super viewDidLoad];
self.title = @"Change App Icon";
[self.navigationController.navigationBar setTitleTextAttributes:@{NSFontAttributeName: [UIFont fontWithName:@"YTSans-Bold" size:22], NSForegroundColorAttributeName: [UIColor whiteColor]}];
self.selectedIconIndex = -1;
self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
@ -21,11 +25,28 @@
[self.view addSubview:self.tableView];
self.backButton = [UIButton buttonWithType:UIButtonTypeCustom];
[self.backButton setImage:[UIImage customBackButtonImage] forState:UIControlStateNormal];
NSBundle *backIcon = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"uYouPlus" ofType:@"bundle"]];
UIImage *backImage = [UIImage imageNamed:@"Back.png" inBundle:backIcon compatibleWithTraitCollection:nil];
backImage = [self resizeImage:backImage newSize:CGSizeMake(24, 24)];
backImage = [backImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
[self.backButton setTintColor:[UIColor whiteColor]];
[self.backButton setImage:backImage forState:UIControlStateNormal];
[self.backButton addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];
[self.backButton setFrame:CGRectMake(0, 0, 24, 24)];
UIBarButtonItem *customBackButton = [[UIBarButtonItem alloc] initWithCustomView:self.backButton];
self.navigationItem.leftBarButtonItem = customBackButton;
UIColor *buttonColor = [UIColor colorWithRed:203.0/255.0 green:22.0/255.0 blue:51.0/255.0 alpha:1.0];
UIImage *resetImage = [UIImage systemImageNamed:@"arrow.clockwise.circle.fill"];
UIBarButtonItem *resetButton = [[UIBarButtonItem alloc] initWithImage:resetImage style:UIBarButtonItemStylePlain target:self action:@selector(resetIcon)];
resetButton.tintColor = buttonColor;
UIImage *saveImage = [UIImage systemImageNamed:@"square.and.arrow.up.fill"];
UIBarButtonItem *saveButton = [[UIBarButtonItem alloc] initWithImage:saveImage style:UIBarButtonItemStylePlain target:self action:@selector(saveIcon)];
saveButton.tintColor = buttonColor;
self.navigationItem.rightBarButtonItems = @[saveButton, resetButton];
NSString *path = [[NSBundle mainBundle] pathForResource:@"uYouPlus" ofType:@"bundle"];
NSBundle *bundle = [NSBundle bundleWithPath:path];
self.appIcons = [bundle pathsForResourcesOfType:@"png" inDirectory:@"AppIcons"];
@ -56,8 +77,14 @@
cell.imageView.image = iconImage;
cell.imageView.layer.cornerRadius = 10.0;
cell.imageView.clipsToBounds = YES;
cell.imageView.frame = CGRectMake(10, 10, 40, 40);
cell.textLabel.frame = CGRectMake(60, 10, self.view.frame.size.width - 70, 40);
cell.accessoryType = (indexPath.row == self.selectedIconIndex) ? UITableViewCellAccessoryCheckmark : UITableViewCellAccessoryNone;
if (indexPath.row == self.selectedIconIndex) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
} else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
return cell;
}
@ -70,6 +97,11 @@
}
- (void)resetIcon {
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Info" ofType:@"plist"];
NSMutableDictionary *infoDict = [NSMutableDictionary dictionaryWithContentsOfFile:plistPath];
[infoDict removeObjectForKey:@"ALTAppIcon"];
[infoDict writeToFile:plistPath atomically:YES];
[[UIApplication sharedApplication] setAlternateIconName:nil completionHandler:^(NSError * _Nullable error) {
if (error) {
NSLog(@"Error resetting icon: %@", error.localizedDescription);
@ -77,37 +109,70 @@
} else {
NSLog(@"Icon reset successfully");
[self showAlertWithTitle:@"Success" message:@"Icon reset successfully"];
[self.tableView reloadData];
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
});
}
}];
}
- (void)saveIcon {
if (self.selectedIconIndex < 0) {
[self showAlertWithTitle:@"Error" message:@"No icon selected"];
if (![UIApplication sharedApplication].supportsAlternateIcons) {
NSLog(@"Alternate icons are not supported on this device.");
return;
}
NSString *selectedIcon = self.appIcons[self.selectedIconIndex];
NSString *iconName = [selectedIcon.lastPathComponent stringByDeletingPathExtension];
[[UIApplication sharedApplication] setAlternateIconName:iconName completionHandler:^(NSError * _Nullable error) {
if (error) {
NSLog(@"Error setting alternate icon: %@", error.localizedDescription);
[self showAlertWithTitle:@"Error" message:@"Failed to set alternate icon"];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSString *selectedIcon = self.selectedIconIndex >= 0 ? self.appIcons[self.selectedIconIndex] : nil;
if (selectedIcon) {
NSString *iconName = [selectedIcon.lastPathComponent stringByDeletingPathExtension];
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Info" ofType:@"plist"];
NSMutableDictionary *infoDict = [NSMutableDictionary dictionaryWithContentsOfFile:plistPath];
[infoDict setObject:iconName forKey:@"ALTAppIcon"];
[infoDict writeToFile:plistPath atomically:YES];
[[UIApplication sharedApplication] setAlternateIconName:iconName completionHandler:^(NSError * _Nullable error) {
if (error) {
NSLog(@"Error setting alternate icon: %@", error.localizedDescription);
[self showAlertWithTitle:@"Error" message:@"Failed to set alternate icon"];
} else {
NSLog(@"Alternate icon set successfully");
[self showAlertWithTitle:@"Success" message:@"Alternate icon set successfully"];
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
});
}
}];
} else {
NSLog(@"Alternate icon set successfully");
[self showAlertWithTitle:@"Success" message:@"Alternate icon set successfully"];
[self.tableView reloadData];
NSLog(@"Selected icon path is nil");
}
}];
});
}
- (UIImage *)resizeImage:(UIImage *)image toSize:(CGSize)size {
UIGraphicsBeginImageContextWithOptions(size, NO, [UIScreen mainScreen].scale);
[image drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *resizedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resizedImage;
}
- (UIImage *)resizeImage:(UIImage *)image newSize:(CGSize)newSize {
UIGraphicsBeginImageContextWithOptions(newSize, NO, [UIScreen mainScreen].scale);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
- (void)showAlertWithTitle:(NSString *)title message:(NSString *)message {
UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil];
[alert addAction:okAction];
[self presentViewController:alert animated:YES completion:nil];
dispatch_async(dispatch_get_main_queue(), ^{
UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil];
[alert addAction:okAction];
[self presentViewController:alert animated:YES completion:nil];
});
}
- (void)back {

View file

@ -25,7 +25,7 @@
%end
%ctor {
if (IS_ENABLED(kBigYTMiniPlayer) && (UIDevice.currentDevice.userInterfaceIdiom != UIUserInterfaceIdiomPad)) {
if (IS_ENABLED(@"bigYTMiniPlayer_enabled") && (UIDevice.currentDevice.userInterfaceIdiom != UIUserInterfaceIdiomPad)) {
%init(BigYTMiniPlayer);
}
}

View file

@ -10,9 +10,6 @@ static BOOL lowContrastMode() {
static BOOL customContrastMode() {
return IS_ENABLED(@"lowContrastMode_enabled") && contrastMode() == 1;
}
// static UIColor *whiteTextColor() {
// return [UIColor whiteColor];
// }
UIColor *lcmHexColor;
@ -57,51 +54,39 @@ UIColor *lcmHexColor;
%end
%hook YTCommonColorPalette
- (UIColor *)textPrimary {
NSLog(@"LowContrastMode: textPrimary called");
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)textSecondary {
NSLog(@"LowContrastMode: textSecondary called");
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)overlayTextPrimary {
NSLog(@"LowContrastMode: overlayTextPrimary called");
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)overlayTextSecondary {
NSLog(@"LowContrastMode: overlayTextSecondary called");
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)iconActive {
NSLog(@"LowContrastMode: iconActive called");
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)iconActiveOther {
NSLog(@"LowContrastMode: iconActiveOther called");
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)brandIconActive {
NSLog(@"LowContrastMode: brandIconActive called");
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)staticBrandWhite {
NSLog(@"LowContrastMode: staticBrandWhite called");
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)overlayIconActiveOther {
NSLog(@"LowContrastMode: overlayIconActiveOther called");
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
}
- (UIColor *)overlayIconInactive {
NSLog(@"LowContrastMode: overlayIconInactive called");
return self.pageStyle == 1 ? [[UIColor whiteColor] colorWithAlphaComponent:0.7] : %orig;
}
- (UIColor *)overlayIconDisabled {
NSLog(@"LowContrastMode: overlayIconDisabled called");
return self.pageStyle == 1 ? [[UIColor whiteColor] colorWithAlphaComponent:0.3] : %orig;
}
- (UIColor *)overlayFilledButtonActive {
NSLog(@"LowContrastMode: overlayFilledButtonActive called");
return self.pageStyle == 1 ? [[UIColor whiteColor] colorWithAlphaComponent:0.2] : %orig;
}
%end
@ -579,18 +564,7 @@ UIColor *lcmHexColor;
%end
%hook CATextLayer
- (void)setTextColor:(CGColorRef)textColor {
%orig([[UIColor whiteColor] CGColor]);
}
%end
%hook _ASDisplayView
- (void)setAttributedText:(NSAttributedString *)attributedText {
NSMutableAttributedString *newAttributedString = [attributedText mutableCopy];
[newAttributedString addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(0, newAttributedString.length)];
%orig(newAttributedString);
}
- (void)setTextColor:(UIColor *)textColor {
textColor = [UIColor whiteColor];
%orig(textColor);
%orig([UIColor whiteColor].CGColor);
}
%end
%hook ASTextNode
@ -603,20 +577,20 @@ UIColor *lcmHexColor;
%end
%hook ASTextFieldNode
- (void)setTextColor:(UIColor *)textColor {
%orig([UIColor whiteColor]);
%orig([UIColor whiteColor]);
}
%end
%hook ASTextView
- (void)setTextColor:(UIColor *)textColor {
%orig([UIColor whiteColor]);
%orig([UIColor whiteColor]);
}
%end
%hook ASButtonNode
- (void)setTextColor:(UIColor *)textColor {
%orig([UIColor whiteColor]);
%orig([UIColor whiteColor]);
}
%end
%hook UIControl
%hook UIControl // snackbar fix for lcm
- (UIColor *)backgroundColor {
return [UIColor blackColor];
}

View file

@ -1,43 +0,0 @@
#import "uYouPlus.h"
#import "uYouPlusSettings.h"
// Keys for "Copy settings" button (for: uYouEnhanced)
// In alphabetical order for tweaks after uYouEnhanced
NSArray *NSUserDefaultsCopyKeys = @[
// uYouEnhanced - gathered using get_keys.py
kReplaceCopyandPasteButtons, kAppTheme, kOLEDKeyboard, kPortraitFullscreen, kFullscreenToTheRight, kSlideToSeek, kYTTapToSeek, kDoubleTapToSeek, kSnapToChapter, kPinchToZoom, kYTMiniPlayer, kStockVolumeHUD, kReplaceYTDownloadWithuYou, kDisablePullToFull, kDisableChapterSkip, kAlwaysShowRemainingTime, kDisableRemainingTime, kEnableShareButton, kEnableSaveToButton, kHideYTMusicButton, kHideAutoplaySwitch, kHideCC, kHideVideoTitle, kDisableCollapseButton, kDisableFullscreenButton, kHideHUD, kHidePaidPromotionCard, kHideChannelWatermark, kHideVideoPlayerShadowOverlayButtons, kHidePreviousAndNextButton, kRedProgressBar, kHideHoverCards, kHideRightPanel, kHideFullscreenActions, kHideSuggestedVideo, kHideHeatwaves, kHideDoubleTapToSeekOverlay, kHideOverlayDarkBackground, kDisableAmbientMode, kHideVideosInFullscreen, kHideRelatedWatchNexts, kHideBuySuperThanks, kHideSubscriptions, kShortsQualityPicker, kRedSubscribeButton, kHideButtonContainers, kHideConnectButton, kHideShareButton, kHideRemixButton, kHideThanksButton, kHideDownloadButton, kHideClipButton, kHideSaveToPlaylistButton, kHideReportButton, kHidePreviewCommentSection, kHideCommentSection, kDisableAccountSection, kDisableAutoplaySection, kDisableTryNewFeaturesSection, kDisableVideoQualityPreferencesSection, kDisableNotificationsSection, kDisableManageAllHistorySection, kDisableYourDataInYouTubeSection, kDisablePrivacySection, kDisableLiveChatSection, kHidePremiumPromos, kHideHomeTab, kLowContrastMode, kClassicVideoPlayer, kFixLowContrastMode, kDisableModernButtons, kDisableRoundedHints, kDisableModernFlags, kYTNoModernUI, kEnableVersionSpoofer, kGoogleSignInPatch, kAdBlockWorkaroundLite, kAdBlockWorkaround, kYouTabFakePremium, kDisableAnimatedYouTubeLogo, kCenterYouTubeLogo, kHideYouTubeLogo, kYTStartupAnimation, kDisableHints, kStickNavigationBar, kHideiSponsorBlockButton, kHideChipBar, kHidePlayNextInQueue, kHideCommunityPosts, kHideChannelHeaderLinks, kiPhoneLayout, kBigYTMiniPlayer, kReExplore, kAutoHideHomeBar, kHideSubscriptionsNotificationBadge, kFixCasting, kNewSettingsUI, kFlex, kGoogleSigninFix,
// uYou - https://github.com/MiRO92/uYou-for-YouTube
@"showedWelcomeVC", @"hideShortsTab", @"hideCreateTab", @"hideCastButton", @"relatedVideosAtTheEndOfYTVideos", @"removeYouTubeAds", @"backgroundPlayback", @"disableAgeRestriction", @"iPadLayout", @"noSuggestedVideoAtEnd", @"shortsProgressBar", @"hideShortsCells", @"removeShortsCell", @"startupPage",
// DEMC - https://github.com/therealFoxster/DontEatMyContent/blob/master/Tweak.h
@"DEMC_enabled", @"DEMC_colorViewsEnabled", @"DEMC_safeAreaConstant", @"DEMC_disableAmbientMode",
@"DEMC_limitZoomToFill", @"DEMC_enableForAllVideos",
// iSponsorBlock cannot be exported using this method - it is also being removed in v5
// Return-YouTube-Dislike - https://github.com/PoomSmart/Return-YouTube-Dislikes/blob/main/TweakSettings.h
@"RYD-ENABLED", @"RYD-VOTE-SUBMISSION", @"RYD-EXACT-LIKE-NUMBER", @"RYD-EXACT-NUMBER",
// All YTVideoOverlay Tweaks - https://github.com/PoomSmart/YTVideoOverlay/blob/0fc6d29d1aa9e75f8c13d675daec9365f753d45e/Tweak.x#L28C1-L41C84
@"YTVideoOverlay-YouLoop-Enabled", @"YTVideoOverlay-YouTimeStamp-Enabled", @"YTVideoOverlay-YouMute-Enabled",
@"YTVideoOverlay-YouQuality-Enabled", @"YTVideoOverlay-YouLoop-Position", @"YTVideoOverlay-YouTimeStamp-Position",
@"YTVideoOverlay-YouMute-Position", @"YTVideoOverlay-YouQuality-Position",
// YouPiP - https://github.com/PoomSmart/YouPiP/blob/main/Header.h
@"YouPiPPosition", @"CompatibilityModeKey", @"PiPActivationMethodKey", @"PiPActivationMethod2Key",
@"NoMiniPlayerPiPKey", @"NonBackgroundableKey",
// YTABConfig cannot be reasonably exported using this method
// YTHoldForSpeed will be removed in v5
// YouTube Plus / YTLite cannot be exported using this method
// YTUHD - https://github.com/PoomSmart/YTUHD/blob/master/Header.h
@"EnableVP9", @"AllVP9",
// Useful YouTube Keys
@"inline_muted_playback_enabled",
];
// Some default values to ignore when exporting settings
NSDictionary *NSUserDefaultsCopyKeysDefaults = @{
@"fixCasting_enabled": @1,
@"inline_muted_playback_enabled": @5,
@"newSettingsUI_enabled": @1,
@"DEMC_safeAreaConstant": @21.5,
@"RYD-ENABLED": @1,
@"RYD-VOTE-SUBMISSION": @1,
// Duplicate keys are not allowed in NSDictionary. If present, only the last one will be kept.
};

View file

@ -3,7 +3,7 @@
// YTMiniPlayerEnabler: https://github.com/level3tjg/YTMiniplayerEnabler/
%hook YTWatchMiniBarViewController
- (void)updateMiniBarPlayerStateFromRenderer {
if (IS_ENABLED(kYTMiniPlayer)) {}
if (IS_ENABLED(@"ytMiniPlayer_enabled")) {}
else { return %orig; }
}
%end

View file

@ -3,7 +3,7 @@
// YTNoHoverCards: https://github.com/level3tjg/YTNoHoverCards
%hook YTCreatorEndscreenView
- (void)setHidden:(BOOL)hidden {
if (IS_ENABLED(kHideHoverCards))
if (IS_ENABLED(@"hideHoverCards_enabled"))
hidden = YES;
%orig;
}

View file

@ -5,18 +5,18 @@
// YTNoPaidPromo: https://github.com/PoomSmart/YTNoPaidPromo
%hook YTMainAppVideoPlayerOverlayViewController
- (void)setPaidContentWithPlayerData:(id)data {
if (IS_ENABLED(kHidePaidPromotionCard)) {}
if (IS_ENABLED(@"hidePaidPromotionCard_enabled")) {}
else { return %orig; }
}
- (void)playerOverlayProvider:(YTPlayerOverlayProvider *)provider didInsertPlayerOverlay:(YTPlayerOverlay *)overlay {
if ([[overlay overlayIdentifier] isEqualToString:@"player_overlay_paid_content"] && IS_ENABLED(kHidePaidPromotionCard)) return;
if ([[overlay overlayIdentifier] isEqualToString:@"player_overlay_paid_content"] && IS_ENABLED(@"hidePaidPromotionCard_enabled")) return;
%orig;
}
%end
%hook YTInlineMutedPlaybackPlayerOverlayViewController
- (void)setPaidContentWithPlayerData:(id)data {
if (IS_ENABLED(kHidePaidPromotionCard)) {}
if (IS_ENABLED(@"hidePaidPromotionCard_enabled")) {}
else { return %orig; }
}
%end

View file

@ -38,7 +38,7 @@ static void replaceTab(YTIGuideResponse *response) {
%end
%ctor {
if (IS_ENABLED(kReExplore)) {
if (IS_ENABLED(@"reExplore_enabled")) {
%init(YTReExplore);
}
}

View file

@ -1,5 +1,4 @@
#import <UIKit/UIKit.h>
#import <HBLog.h>
#import <Foundation/Foundation.h>
#import <CaptainHook/CaptainHook.h>
#import <dlfcn.h>
@ -12,19 +11,11 @@
#import <YouTubeHeader/ASCollectionView.h>
#import <YouTubeHeader/ELMCellNode.h>
#import <YouTubeHeader/ELMNodeController.h>
#import <YouTubeHeader/ELMPBElement.h>
#import <YouTubeHeader/ELMPBProperties.h>
#import <YouTubeHeader/ELMPBIdentifierProperties.h>
#import <YouTubeHeader/GPBMessage.h>
#import <YouTubeHeader/MLPlayerStickySettings.h>
#import <YouTubeHeader/YTAppDelegate.h>
#import <YouTubeHeader/YTCollectionViewCell.h>
#import <YouTubeHeader/YTIBrowseRequest.h>
#import <YouTubeHeader/YTIButtonRenderer.h>
#import <YouTubeHeader/YTICompactLinkRenderer.h>
#import <YouTubeHeader/YTICompactListItemRenderer.h>
#import <YouTubeHeader/YTICompactListItemThumbnailSupportedRenderers.h>
#import <YouTubeHeader/YTIIconThumbnailRenderer.h>
#import <YouTubeHeader/YTIElementRenderer.h>
#import <YouTubeHeader/YTIFormattedString.h>
#import <YouTubeHeader/YTIGuideResponse.h>
@ -40,11 +31,9 @@
#import <YouTubeHeader/YTIStringRun.h>
#import <YouTubeHeader/YTMainAppVideoPlayerOverlayViewController.h>
#import <YouTubeHeader/YTMainAppVideoPlayerOverlayView.h>
#import <YouTubeHeader/YTNavigationBarTitleView.h>
#import <YouTubeHeader/YTPlayerBarController.h>
#import <YouTubeHeader/YTPlayerBarRectangleDecorationView.h>
#import <YouTubeHeader/YTPlayerOverlay.h>
#import <YouTubeHeader/YTPlayerOverlayProvider.h>
#import <YouTubeHeader/YTPlayerOverlayManager.h>
#import <YouTubeHeader/YTReelModel.h>
#import <YouTubeHeader/YTReelWatchPlaybackOverlayView.h>
@ -52,7 +41,6 @@
#import <YouTubeHeader/YTVideoQualitySwitchOriginalController.h>
#import <YouTubeHeader/YTVideoWithContextNode.h>
#import <YouTubeHeader/YTWatchNextResultsViewController.h>
#import <YouTubeHeader/YTWatchPlayerViewLayoutSource.h>
#import <YouTubeHeader/YTWatchPullToFullController.h>
#import <YouTubeHeader/YTWatchViewController.h>
#import "uYouPlusThemes.h" // uYouPlus Themes
@ -65,117 +53,6 @@
#define DEFAULT_RATE 1.0f // YTSpeed
#define LOWCONTRASTMODE_CUTOFF_VERSION @"17.38.10" // LowContrastMode (v17.33.2-17.38.10)
// Keys
// Copy/Paste Settings
static NSString *const kReplaceCopyandPasteButtons = @"replaceCopyandPasteButtons_enabled";
// App appearance
static NSString *const kAppTheme = @"appTheme";
static NSString *const kOLEDKeyboard = @"oledKeyBoard_enabled";
// Video player
static NSString *const kPortraitFullscreen = @"portraitFullscreen_enabled";
static NSString *const kFullscreenToTheRight = @"fullscreenToTheRight_enabled";
static NSString *const kSlideToSeek = @"slideToSeek_enabled";
static NSString *const kYTTapToSeek = @"YTTapToSeek_enabled";
static NSString *const kDoubleTapToSeek = @"doubleTapToSeek_enabled";
static NSString *const kSnapToChapter = @"snapToChapter_enabled";
static NSString *const kPinchToZoom = @"pinchToZoom_enabled";
static NSString *const kYTMiniPlayer = @"ytMiniPlayer_enabled";
static NSString *const kStockVolumeHUD = @"stockVolumeHUD_enabled";
static NSString *const kReplaceYTDownloadWithuYou = @"kReplaceYTDownloadWithuYou_enabled";
static NSString *const kDisablePullToFull = @"disablePullToFull_enabled";
static NSString *const kDisableChapterSkip = @"disableChapterSkip_enabled";
static NSString *const kAlwaysShowRemainingTime = @"alwaysShowRemainingTime_enabled";
static NSString *const kDisableRemainingTime = @"disableRemainingTime_enabled";
// Video controls overlay
static NSString *const kEnableShareButton = @"enableShareButton_enabled";
static NSString *const kEnableSaveToButton = @"enableSaveToButton_enabled";
static NSString *const kHideYTMusicButton = @"hideYTMusicButton_enabled";
static NSString *const kHideAutoplaySwitch = @"hideAutoplaySwitch_enabled";
static NSString *const kHideCC = @"hideCC_enabled";
static NSString *const kHideVideoTitle = @"hideVideoTitle_enabled";
static NSString *const kDisableCollapseButton = @"disableCollapseButton_enabled";
static NSString *const kDisableFullscreenButton = @"disableFullscreenButton_enabled";
static NSString *const kHideHUD = @"hideHUD_enabled";
static NSString *const kHidePaidPromotionCard = @"hidePaidPromotionCard_enabled";
static NSString *const kHideChannelWatermark = @"hideChannelWatermark_enabled";
static NSString *const kHideVideoPlayerShadowOverlayButtons = @"hideVideoPlayerShadowOverlayButtons_enabled";
static NSString *const kHidePreviousAndNextButton = @"hidePreviousAndNextButton_enabled";
static NSString *const kRedProgressBar = @"redProgressBar_enabled";
static NSString *const kHideHoverCards = @"hideHoverCards_enabled";
static NSString *const kHideRightPanel = @"hideRightPanel_enabled";
static NSString *const kHideFullscreenActions = @"hideFullscreenActions_enabled";
static NSString *const kHideSuggestedVideo = @"hideSuggestedVideo_enabled";
static NSString *const kHideHeatwaves = @"hideHeatwaves_enabled";
static NSString *const kHideDoubleTapToSeekOverlay = @"hideDoubleTapToSeekOverlay_enabled";
static NSString *const kHideOverlayDarkBackground = @"hideOverlayDarkBackground_enabled";
static NSString *const kDisableAmbientMode = @"disableAmbientMode_enabled";
static NSString *const kHideVideosInFullscreen = @"hideVideosInFullscreen_enabled";
static NSString *const kHideRelatedWatchNexts = @"hideRelatedWatchNexts_enabled";
// Shorts control overlay
static NSString *const kHideBuySuperThanks = @"hideBuySuperThanks_enabled";
static NSString *const kHideSubscriptions = @"hideSubscriptions_enabled";
static NSString *const kShortsQualityPicker = @"shortsQualityPicker_enabled";
// Video player buttons
static NSString *const kRedSubscribeButton = @"redSubscribeButton_enabled";
static NSString *const kHideButtonContainers = @"hideButtonContainers_enabled";
static NSString *const kHideConnectButton = @"hideConnectButton_enabled";
static NSString *const kHideShareButton = @"hideShareButton_enabled";
static NSString *const kHideRemixButton = @"hideRemixButton_enabled";
static NSString *const kHideThanksButton = @"hideRemixButton_enabled";
static NSString *const kHideDownloadButton = @"hideDownloadButton_enabled";
static NSString *const kHideClipButton = @"hideClipButton_enabled";
static NSString *const kHideSaveToPlaylistButton = @"hideSaveToPlaylistButton_enabled";
static NSString *const kHideReportButton = @"hideReportButton_enabled";
static NSString *const kHidePreviewCommentSection = @"hidePreviewCommentSection_enabled";
static NSString *const kHideCommentSection = @"hideCommentSection_enabled";
// App settings overlay
static NSString *const kDisableAccountSection = @"disableAccountSection_enabled";
static NSString *const kDisableAutoplaySection = @"disableAutoplaySection_enabled";
static NSString *const kDisableTryNewFeaturesSection = @"disableTryNewFeaturesSection_enabled";
static NSString *const kDisableVideoQualityPreferencesSection = @"disableVideoQualityPreferencesSection_enabled";
static NSString *const kDisableNotificationsSection = @"disableNotificationsSection_enabled";
static NSString *const kDisableManageAllHistorySection = @"disableManageAllHistorySection_enabled";
static NSString *const kDisableYourDataInYouTubeSection = @"disableYourDataInYouTubeSection_enabled";
static NSString *const kDisablePrivacySection = @"disablePrivacySection_enabled";
static NSString *const kDisableLiveChatSection = @"disableLiveChatSection_enabled";
static NSString *const kHidePremiumPromos = @"hidePremiumPromos_enabled";
// UI Interface
static NSString *const kHideHomeTab = @"hideHomeTab_enabled";
static NSString *const kLowContrastMode = @"lowContrastMode_enabled";
static NSString *const kClassicVideoPlayer = @"classicVideoPlayer_enabled";
static NSString *const kFixLowContrastMode = @"fixLowContrastMode_enabled";
static NSString *const kDisableModernButtons = @"disableModernButtons_enabled";
static NSString *const kDisableRoundedHints = @"disableRoundedHints_enabled";
static NSString *const kDisableModernFlags = @"disableModernFlags_enabled";
static NSString *const kYTNoModernUI = @"ytNoModernUI_enabled";
static NSString *const kEnableVersionSpoofer = @"enableVersionSpoofer_enabled";
// Miscellaneous
static NSString *const kGoogleSignInPatch = @"googleSignInPatch_enabled";
static NSString *const kAdBlockWorkaroundLite = @"adBlockWorkaroundLite_enabled";
static NSString *const kAdBlockWorkaround = @"adBlockWorkaround_enabled";
static NSString *const kYouTabFakePremium = @"youTabFakePremium_enabled";
static NSString *const kDisableAnimatedYouTubeLogo = @"disableAnimatedYouTubeLogo_enabled";
static NSString *const kCenterYouTubeLogo = @"centerYouTubeLogo_enabled";
static NSString *const kHideYouTubeLogo = @"hideYouTubeLogo_enabled";
static NSString *const kYTStartupAnimation = @"ytStartupAnimation_enabled";
static NSString *const kDisableHints = @"disableHints_enabled";
static NSString *const kStickNavigationBar = @"stickNavigationBar_enabled";
static NSString *const kHideiSponsorBlockButton = @"hideiSponsorBlockButton_enabled";
static NSString *const kHideChipBar = @"hideChipBar_enabled";
static NSString *const kHidePlayNextInQueue = @"hidePlayNextInQueue_enabled";
static NSString *const kHideCommunityPosts = @"hideCommunityPosts_enabled";
static NSString *const kHideChannelHeaderLinks = @"hideChannelHeaderLinks_enabled";
static NSString *const kiPhoneLayout = @"iPhoneLayout_enabled";
static NSString *const kBigYTMiniPlayer = @"bigYTMiniPlayer_enabled";
static NSString *const kReExplore = @"reExplore_enabled";
static NSString *const kAutoHideHomeBar = @"autoHideHomeBar_enabled";
static NSString *const kHideSubscriptionsNotificationBadge = @"hideSubscriptionsNotificationBadge_enabled";
static NSString *const kFixCasting = @"fixCasting_enabled";
static NSString *const kNewSettingsUI = @"newSettingsUI_enabled";
static NSString *const kFlex = @"flex_enabled";
// unused (uYouEnhanced)
static NSString *const kGoogleSigninFix = @"googleSigninFix_enabled";
// Always show remaining time in video player - @bhackel
// Header has been moved to https://github.com/PoomSmart/YouTubeHeader/blob/main/YTPlayerBarController.h
// Header has been moved to https://github.com/PoomSmart/YouTubeHeader/blob/main/YTInlinePlayerBarContainerView.h
@ -197,11 +74,6 @@ static NSString *const kGoogleSigninFix = @"googleSigninFix_enabled";
- (CABasicAnimation *)uYouEnhancedGetBlankColorAnimation;
@end
// OLED Live Chat - @bhackel
@interface YTLUserDefaults : NSUserDefaults
+ (void)exportYtlSettings;
@end
// Hide Home Tab - @bhackel
@interface YTPivotBarItemViewAccessibilityControl : UIControl
@end
@ -216,11 +88,30 @@ static NSString *const kGoogleSigninFix = @"googleSigninFix_enabled";
@end
// Hide Premium Promo in You tab - @bhackel
// YTIIconThumbnailRenderer Header has been moved to https://github.com/arichornloverALT/YouTubeHeader/blob/main/YTIIconThumbnailRenderer.h
// YTICompactListItemThumbnailSupportedRenderers Header has been moved to https://github.com/arichornloverALT/YouTubeHeader/blob/main/YTICompactListItemThumbnailSupportedRenderers.h
// YTICompactListItemRenderer Header has been moved to https://github.com/arichornloverALT/YouTubeHeader/blob/main/YTICompactListItemRenderer.h
// YTIIcon Header has been moved to https://github.com/arichornloverALT/YouTubeHeader/blob/main/YTIIcon.h
// YTICompactLinkRenderer Header has been moved to https://github.com/arichornloverALT/YouTubeHeader/blob/main/YTICompactLinkRenderer.h
@interface YTIIconThumbnailRenderer : GPBMessage
@property (nonatomic, strong) YTIIcon *icon;
- (BOOL)hasIcon;
@end
@interface YTICompactListItemThumbnailSupportedRenderers : GPBMessage
@property (nonatomic, strong) YTIIconThumbnailRenderer *iconThumbnailRenderer;
- (BOOL)hasIconThumbnailRenderer;
@end
@interface YTICompactListItemRenderer : GPBMessage
@property (nonatomic, strong) YTICompactListItemThumbnailSupportedRenderers *thumbnail;
@property (nonatomic, strong) YTIFormattedString *title;
- (BOOL)hasThumbnail;
- (BOOL)hasTitle;
@end
@interface YTIIcon (uYouEnhanced)
- (BOOL)hasIconType;
@end
@interface YTICompactLinkRenderer : GPBMessage
@property (nonatomic, strong) YTIIcon *icon;
@property (nonatomic, strong) YTIFormattedString *title;
@property (nonatomic, strong) YTICompactListItemThumbnailSupportedRenderers *thumbnail;
- (BOOL)hasIcon;
- (BOOL)hasThumbnail;
@end
// YTIItemSectionSupportedRenderers Header has been moved to https://github.com/arichornloverALT/YouTubeHeader/blob/main/YTIItemSectionSupportedRenderers.h
@interface YTAppCollectionViewController : YTInnerTubeCollectionViewController
- (void)uYouEnhancedFakePremiumModel:(YTISectionListRenderer *)model;
@ -236,12 +127,7 @@ static NSString *const kGoogleSigninFix = @"googleSigninFix_enabled";
@interface YTWatchViewController (uYouEnhanced)
- (UIInterfaceOrientationMask) supportedInterfaceOrientations;
- (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation;
@end
// Center YouTube Logo (Custom Version) - @arichornlover
@interface YTNavigationBarTitleView (uYouEnhanced)
@property (nonatomic, strong) UIView *customView;
- (void)alignCustomViewToCenterOfWindow;
- (void)forceRightFullscreenOrientation;
@end
// uYouPlus
@ -249,6 +135,9 @@ static NSString *const kGoogleSigninFix = @"googleSigninFix_enabled";
@property(readonly, nonatomic) long long pageStyle;
@end
@interface YTNavigationBarTitleView : UIView
@end
@interface YTChipCloudCell : UIView
@end
@ -281,9 +170,6 @@ static NSString *const kGoogleSigninFix = @"googleSigninFix_enabled";
@interface YTPlaybackButton : UIControl
@end
@interface HelperVC : UIViewController
@end
@interface YTPlaylistHeaderViewController : UIViewController
@property UIButton *downloadsButton;
@end
@ -315,7 +201,9 @@ static NSString *const kGoogleSigninFix = @"googleSigninFix_enabled";
- (void)internalSetRate;
@end
// MLPlayerStickySettings Header has been moved to https://github.com/arichornloverALT/YouTubeHeader/blob/main/MLPlayerStickySettings.h
@interface MLPlayerStickySettings (uYouPlus)
- (void)setRate:(float)rate;
@end
@interface MLPlayerEventCenter : NSObject
- (void)broadcastRateChange:(float)rate;
@ -355,9 +243,6 @@ static NSString *const kGoogleSigninFix = @"googleSigninFix_enabled";
@interface ELMContainerNode : NSObject
@end
@interface YTWrapperSplitView : UIView
@end
@interface YTAutonavEndscreenView : UIView
@end

File diff suppressed because it is too large Load diff

View file

@ -1,12 +1,10 @@
#import <UIKit/UIActivityViewController.h>
#import <YouTubeHeader/YTUIUtils.h>
#import <YouTubeHeader/YTCommonUtils.h>
#import <YouTubeHeader/YTColorPalette.h>
#import <YouTubeHeader/YTCommonColorPalette.h>
#import <YouTubeHeader/GOODialogView.h>
#import <YouTubeHeader/GPBDescriptor.h>
#import <YouTubeHeader/GPBUnknownField.h>
#import <YouTubeHeader/GPBUnknownFields.h>
#import "Tweaks/protobuf/objectivec/GPBDescriptor.h"
#import "Tweaks/protobuf/objectivec/GPBUnknownField.h"
#import "Tweaks/protobuf/objectivec/GPBUnknownFieldSet.h"
#import "uYouPlus.h"
@interface PlayerManager : NSObject
@ -75,15 +73,6 @@
@interface ELMPBShowActionSheetCommand : GPBMessage
@property (nonatomic, strong, readwrite) ELMPBCommand *onAppear;
@property (nonatomic, assign, readwrite) BOOL hasOnAppear;
- (id)listOptionArray;
@end
@interface ELMContext : NSObject
@property (nonatomic, strong, readwrite) UIView *fromView;
@end
@interface ELMCommandContext : NSObject
@property (nonatomic, strong, readwrite) ELMContext *context;
@end
@interface YTIUpdateShareSheetCommand
@ -98,7 +87,6 @@
@interface YTAccountScopedCommandResponderEvent
@property (nonatomic, strong, readwrite) YTICommand *command;
@property (nonatomic, strong, readwrite) UIView *fromView;
@end
@interface YTIShareEntityEndpoint

View file

@ -3,7 +3,6 @@
# pragma mark - YouTube patches
// Fix Google Sign in by @PoomSmart and @level3tjg (qnblackcat/uYouPlus#684)
%group gGoogleSignInPatch
%hook NSBundle
- (NSDictionary *)infoDictionary {
NSMutableDictionary *info = %orig.mutableCopy;
@ -12,7 +11,6 @@
return info;
}
%end
%end
// Workaround for MiRO92/uYou-for-YouTube#12, qnblackcat/uYouPlus#263
%hook YTDataUtils
@ -98,31 +96,30 @@ typedef NS_ENUM(NSInteger, ShareEntityType) {
ShareEntityFieldVideo = 1,
ShareEntityFieldPlaylist = 2,
ShareEntityFieldChannel = 3,
ShareEntityFieldPost = 6,
ShareEntityFieldClip = 8
};
static inline NSString* extractIdWithFormat(GPBUnknownFields *fields, NSInteger fieldNumber, NSString *format) {
NSArray<GPBUnknownField*> *fieldArray = [fields fields:fieldNumber];
if (!fieldArray)
static inline NSString* extractIdWithFormat(GPBUnknownFieldSet *fields, NSInteger fieldNumber, NSString *format) {
if (![fields hasField:fieldNumber])
return nil;
if ([fieldArray count] != 1)
GPBUnknownField *idField = [fields getField:fieldNumber];
if ([idField.lengthDelimitedList count] != 1)
return nil;
NSString *id = [[NSString alloc] initWithData:[fieldArray firstObject].lengthDelimited encoding:NSUTF8StringEncoding];
NSString *id = [[NSString alloc] initWithData:[idField.lengthDelimitedList firstObject] encoding:NSUTF8StringEncoding];
return [NSString stringWithFormat:format, id];
}
static BOOL showNativeShareSheet(NSString *serializedShareEntity, UIView *sourceView) {
static BOOL showNativeShareSheet(NSString *serializedShareEntity) {
GPBMessage *shareEntity = [%c(GPBMessage) deserializeFromString:serializedShareEntity];
GPBUnknownFields *fields = [[%c(GPBUnknownFields) alloc] initFromMessage:shareEntity];
GPBUnknownFieldSet *fields = shareEntity.unknownFields;
NSString *shareUrl;
NSArray<GPBUnknownField*> *shareEntityClip = [fields fields:ShareEntityFieldClip];
if (shareEntityClip) {
if ([shareEntityClip count] != 1)
return NO;
GPBMessage *clipMessage = [%c(GPBMessage) parseFromData:[shareEntityClip firstObject].lengthDelimited error:nil];
shareUrl = extractIdWithFormat([[%c(GPBUnknownFields) alloc] initFromMessage:clipMessage], 1, @"https://youtube.com/clip/%@");
if ([fields hasField:ShareEntityFieldClip]) {
GPBUnknownField *shareEntityClip = [fields getField:ShareEntityFieldClip];
if ([shareEntityClip.lengthDelimitedList count] != 1)
return FALSE;
GPBMessage *clipMessage = [%c(GPBMessage) parseFromData:[shareEntityClip.lengthDelimitedList firstObject] error:nil];
shareUrl = extractIdWithFormat(clipMessage.unknownFields, 1, @"https://youtube.com/clip/%@");
}
if (!shareUrl)
@ -141,47 +138,76 @@ static BOOL showNativeShareSheet(NSString *serializedShareEntity, UIView *source
shareUrl = extractIdWithFormat(fields, ShareEntityFieldVideo, @"https://youtube.com/watch?v=%@");
if (!shareUrl)
shareUrl = extractIdWithFormat(fields, ShareEntityFieldPost, @"https://youtube.com/post/%@");
return FALSE;
if (!shareUrl)
return NO;
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[shareUrl] applicationActivities:nil];
activityViewController.excludedActivityTypes = @[UIActivityTypeAssignToContact, UIActivityTypePrint];
UIViewController *topViewController = [%c(YTUIUtils) topViewControllerForPresenting];
if (activityViewController.popoverPresentationController) {
activityViewController.popoverPresentationController.sourceView = topViewController.view;
activityViewController.popoverPresentationController.sourceRect = [sourceView convertRect:sourceView.bounds toView:topViewController.view];
}
[topViewController presentViewController:activityViewController animated:YES completion:nil];
return YES;
UIActivityViewController *activityViewController = [[UIActivityViewController alloc]initWithActivityItems:@[shareUrl] applicationActivities:nil];
[[%c(YTUIUtils) topViewControllerForPresenting] presentViewController:activityViewController animated:YES completion:^{}];
return TRUE;
}
/* -------------------- iPad Layout -------------------- */
// %group gYouTubeNativeShare // YouTube Native Share Option - 0.2.3 - Supports YouTube v17.33.2-v19.34.2
%hook YTAccountScopedCommandResponderEvent
- (void)send {
GPBExtensionDescriptor *shareEntityEndpointDescriptor = [%c(YTIShareEntityEndpoint) shareEntityEndpoint];
if (![self.command hasExtension:shareEntityEndpointDescriptor])
return %orig;
YTIShareEntityEndpoint *shareEntityEndpoint = [self.command getExtension:shareEntityEndpointDescriptor];
if (!shareEntityEndpoint.hasSerializedShareEntity)
return %orig;
if (!showNativeShareSheet(shareEntityEndpoint.serializedShareEntity, self.fromView))
if (!showNativeShareSheet(shareEntityEndpoint.serializedShareEntity))
return %orig;
}
%end
/* OLD
%hook YTShareRequestViewController
- (id)initWithService:(id)_service parentResponder:(id)_parentResponder {
id result = %orig;
// disable the default share sheet behavior and force the app to call [YTAccountScopedCommandRouter handleCommand] if available
if ([_parentResponder respondsToSelector:@selector(handleCommand:entry:fromView:sender:completionBlock:)]) {
[_parentResponder handleCommand:nil entry:nil fromView:nil sender:nil completionBlock:nil];
}
return result;
}
%end
%hook YTAccountScopedCommandRouter
- (BOOL)handleCommand:(id)command entry:(id)_entry fromView:(id)_fromView sender:(id)_sender completionBlock:(id)_completionBlock {
GPBExtensionDescriptor *shareEntityEndpointDescriptor = [%c(YTIShareEntityEndpoint) shareEntityEndpoint];
if (![command hasExtension:shareEntityEndpointDescriptor])
return %orig;
YTIShareEntityEndpoint *shareEntityEndpoint = [command getExtension:shareEntityEndpointDescriptor];
if(!shareEntityEndpoint.hasSerializedShareEntity)
return %orig;
if (!showNativeShareSheet(shareEntityEndpoint.serializedShareEntity))
return %orig;
return TRUE;
}
%end
*/
/* EXPERIMENTAL
%hook YTAccountScopedCommandRouter
- (BOOL)handleCommand:(id)command entry:(id)_entry fromView:(id)_fromView sender:(id)_sender completionBlock:(id)_completionBlock {
GPBExtensionDescriptor *shareEntityEndpointDescriptor = [%c(YTIShareEntityEndpoint) shareEntityEndpoint];
if (![command hasExtension:shareEntityEndpointDescriptor])
return %orig;
YTIShareEntityEndpoint *shareEntityEndpoint = [command getExtension:shareEntityEndpointDescriptor];
if(!shareEntityEndpoint || !shareEntityEndpoint.hasSerializedShareEntity || !shareEntityEndpoint.serializedShareEntity) {
return %orig;
}
if (!showNativeShareSheet(shareEntityEndpoint.serializedShareEntity)) {
return %orig;
}
return TRUE;
}
%end
*/
/* ------------------- iPhone Layout ------------------- */
%hook ELMPBShowActionSheetCommand
- (void)executeWithCommandContext:(ELMCommandContext*)context handler:(id)_handler {
- (void)executeWithCommandContext:(id)_context handler:(id)_handler {
if (!self.hasOnAppear)
return %orig;
GPBExtensionDescriptor *innertubeCommandDescriptor = [%c(YTIInnertubeCommandExtensionRoot) innertubeCommand];
@ -194,13 +220,10 @@ static BOOL showNativeShareSheet(NSString *serializedShareEntity, UIView *source
YTIUpdateShareSheetCommand *updateShareSheetCommand = [innertubeCommand getExtension:updateShareSheetCommandDescriptor];
if (!updateShareSheetCommand.hasSerializedShareEntity)
return %orig;
if (!showNativeShareSheet(updateShareSheetCommand.serializedShareEntity, context.context.fromView))
if (!showNativeShareSheet(updateShareSheetCommand.serializedShareEntity))
return %orig;
}
%end
// %end
//
// iOS 16 uYou crash fix - @level3tjg: https://github.com/qnblackcat/uYouPlus/pull/224
// %group iOS16
@ -337,69 +360,8 @@ static void refreshUYouAppearance() {
- (void)beginEnlargeAnimation {}
%end
%hook GOODialogView
- (id)imageView {
UIImageView *imageView = %orig;
if ([[self titleLabel].text containsString:@"uYou\n"]) {
// // Invert uYou logo in download dialog if dark mode is enabled
// if ([[NSUserDefaults standardUserDefaults] integerForKey:@"page_style"] == 0)
// return imageView;
// // https://gist.github.com/coryalder/3113a43734f5e0e4b497
// UIImage *image = [imageView image];
// CIImage *ciImage = [[CIImage alloc] initWithImage:image];
// CIFilter *filter = [CIFilter filterWithName:@"CIColorInvert"];
// [filter setDefaults];
// [filter setValue:ciImage forKey:kCIInputImageKey];
// CIContext *context = [CIContext contextWithOptions:nil];
// CIImage *output = [filter outputImage];
// CGImageRef cgImage = [context createCGImage:output fromRect:[output extent]];
// UIImage *icon = [UIImage imageWithCGImage:cgImage];
// CGImageRelease(cgImage);
// Load icon_clipped.png from uYouBundle.bundle
NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"uYouBundle" ofType:@"bundle"];
NSBundle *bundle = [NSBundle bundleWithPath:bundlePath];
NSString *iconPath = [bundle pathForResource:@"icon_clipped" ofType:@"png"];
UIImage *icon = [UIImage imageWithContentsOfFile:iconPath];
[imageView setImage:icon];
// Resize image to 30x30
// https://stackoverflow.com/a/2658801/19227228
CGSize size = CGSizeMake(30, 30);
UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
[icon drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *resizedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[imageView setImage:resizedImage];
}
return imageView;
}
// Increase space between uYou label and video title
- (id)titleLabel {
UILabel *titleLabel = %orig;
if ([titleLabel.text containsString:@"uYou\n"] &&
![titleLabel.text containsString:@"uYou\n\n"]
) {
NSString *text = [titleLabel.text stringByReplacingOccurrencesOfString:@"uYou\n" withString:@"uYou\n\n"];
[titleLabel setText:text];
}
return titleLabel;
}
%end
%ctor {
%init;
if (IS_ENABLED(kGoogleSignInPatch)) {
%init(gGoogleSignInPatch);
}
/*
if (IS_ENABLED(kYouTubeNativeShare)) {
%init(gYouTubeNativeShare);
}
*/
// if (@available(iOS 16, *)) {
// %init(iOS16);
// }

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -24,7 +24,6 @@ jobs:
git submodule add https://github.com/arichornloverALT/YTHoldForSpeed.git Tweaks/YTHoldForSpeed
git submodule add https://github.com/arichornloverALT/YouGroupSettings.git Tweaks/YouGroupSettings
git submodule add https://github.com/arichornloverALT/YouTimeStamp.git Tweaks/YouTimeStamp
git submodule add https://github.com/bhackel/YouLoop.git Tweaks/YouLoop
git submodule add https://github.com/protocolbuffers/protobuf.git Tweaks/protobuf
git add .
git commit -m "added uYouEnhanced submodules"
@ -66,8 +65,6 @@ jobs:
git add .
git submodule update --init --recursive --remote Tweaks/YouMute
git add .
git submodule update --init --recursive --remote Tweaks/YouLoop
git add .
git submodule update --init --recursive --remote Tweaks/YouPiP
git add .
git submodule update --init --recursive --remote Tweaks/YouQuality
@ -90,7 +87,6 @@ jobs:
ln -s ../Tweaks/uYouLocalization/layout/Library/Application\ Support/uYouLocalization.bundle uYouLocalization.bundle
ln -s ../Tweaks/YTHoldForSpeed/layout/Library/Application\ Support/YTHoldForSpeed.bundle YTHoldForSpeed.bundle
ln -s ../Tweaks/YouGroupSettings/layout/Library/Application\ Support/YouGroupSettings.bundle YouGroupSettings.bundle
ln -s ../Tweaks/YouLoop/layout/Library/Application\ Support/YouLoop.bundle YouLoop.bundle
ln -s ../Tweaks/YouTimeStamp/layout/Library/Application\ Support/YouTimeStamp.bundle YouTimeStamp.bundle
git add .
git commit -m "Added bundles"
@ -101,11 +97,9 @@ jobs:
# - name: Delete .bundle files
# run: |
# cd Bundles
# rm -f MrBeastify.bundle
# rm -f uYouLocalization.bundle
# rm -f YTHoldForSpeed.bundle
# rm -f YouGroupSettings.bundle
# rm -f YouLoop.bundle
# rm -f YouTimeStamp.bundle
# git add .
# git commit -m "Deleted bundles"

@ -1 +1 @@
Subproject commit 15b061bf414cf29fd0d4e0e124e9e2ccb99326b0
Subproject commit 2aa3086244d296cfb3c8e782ef09c76316452a9d

@ -1 +1 @@
Subproject commit a9134c82b032b145541f3c06a3c4950487f01474
Subproject commit 95fecff296722df4a9938308c3bdb178cb690b7c

@ -1 +1 @@
Subproject commit 9ef7bbb3b7d7cd2218a9884d8680625db0d898f3
Subproject commit edf35a14fe99a53dc6d51a8aa2292bc8529316af

@ -1 +1 @@
Subproject commit a22ef4deb929c6622069290bb340d21b280f300e
Subproject commit 67e321458867029b1ffcdfa29759332835b80eca

@ -1 +1 @@
Subproject commit 5af54ea6bf3aed6a615094fa285669a0e46ece51
Subproject commit 2a4282fbdcbd0c8b586a64ad364fbb3ec880f606

@ -1 +1 @@
Subproject commit 96508bf22012d588a6ad29bfff3f694800a3a525
Subproject commit 3cda9a9035e9964c881191268c30a9c0a4fc52a1

@ -1 +1 @@
Subproject commit f5af14fc258cd84d7534bc55c51717f30172c79c
Subproject commit 159da3e9569e8f156a73df80b153c57cccc1dad1

@ -1 +0,0 @@
Subproject commit 58f76b1271c1ec05d6513e054f46e4080780a0d9

@ -1 +1 @@
Subproject commit 63fe2c05fd23a517191645cd450115dc6965e0d8
Subproject commit 1f3ee2c5eef13ceb4ddc478148a48ffa19e1a9a7

@ -1 +1 @@
Subproject commit a308e3eeb6eb60cb8f118cf7fdced0015e584ad4
Subproject commit 6691e4c307e7e6366ee7b715f558e91904f86d95

@ -1 +1 @@
Subproject commit e89ffe8be85564fe2bfc04345a186c4a02ef456a
Subproject commit 93ff6610f856a70917adcf7fb9af2c9a94dfeb63

@ -1 +1 @@
Subproject commit 128c9305d7e796b883d8563b3cb6e7eac7a33ea8
Subproject commit 2def430a6e70ddd6e0937f03d6ebd95a0c9382e6

@ -1 +1 @@
Subproject commit b4e1bc798149d68029c89510948600be2986968b
Subproject commit 58951f248bfe90298ca65007603d465f58369876

@ -1 +1 @@
Subproject commit 60ca6e06d78e68854f8b1bd1c644a7f4376f6168
Subproject commit 532f0c2ed52b60bc33492a2ee4cbf9c4ca960450

View file

@ -1,8 +1,8 @@
Package: com.arichorn.uyouenhanced
Package: com.arichornlover.uyouenhanced
Name: uYouEnhanced
Architecture: iphoneos-arm
Description: An expanded version of uYouPlus
Maintainer: arichorn
Maintainer: arichornlover
Author: qnblackcat
Section: Tweaks
Depends: mobilesubstrate (>= 0.9.5000), com.miro.uyou