Compare commits

...

156 commits

Author SHA1 Message Date
arichorn
cb7ebc433b
Updated Security Policy for Contributors
The previous policy was confusing, so I enhanced it.
2023-08-18 23:04:23 -05:00
arichorn
28724844b0
Added YTLitePlus Tweak URL 2023-08-18 22:51:42 -05:00
arichorn
eb2deec5c3
Updated Headers 2023-08-18 21:55:09 -05:00
arichorn
f4dd193afc
Downgrade version 2023-08-18 16:17:39 -05:00
arichorn
43f5c23486
Update Altstore Release 2023-08-17 00:25:34 -05:00
arichorn
9ef500870b
Update Themes.xm 2023-08-15 18:38:35 -05:00
arichorn
38d8374294
Fix Old Dark Theme 2023-08-15 18:30:15 -05:00
arichorn
1357453b1e
v18.32.2-3.0.1 2023-08-15 17:58:44 -05:00
arichorn
0cbeb01da9
Overhauled LowContrastMode (v1.4.0) 2023-08-15 17:56:34 -05:00
arichorn
ec73d888f3
Update Themes.xm 2023-08-15 16:46:30 -05:00
arichorn
2fd65f7dfa
Update Themes.xm
From qnblackcat/uYouPlus
2023-08-15 16:44:53 -05:00
arichorn
ef36051ebe
Update Themes.xm 2023-08-15 16:41:19 -05:00
arichorn
484ec59d2c
New Headers from qnblackcat/uYouPlus 2023-08-15 16:20:52 -05:00
arichorn
19895b3943
Updated update-submodules.yml template
This Template has been modified because of the following commit. 0b9ae06040
2023-08-13 10:34:38 -05:00
GitHub Actions
df8424a89e updated submodules 2023-08-13 15:24:34 +00:00
arichorn
948e2a2df7
Fix themes building error 2023-08-11 17:56:22 -05:00
arichorn
708f1ecc16
Updated Security Policy (Updated Releases) 2023-08-11 05:19:34 -05:00
arichorn
dd8ee66488
Themes Improvements
Updated default dark theme
Updated _ASDisplayView and added support into modifying the YouTube Featured menu in homepage. (brand.promo_view)
2023-08-11 04:43:09 -05:00
arichorn
21ce93212c
Update Themes.xm 2023-08-08 18:17:15 -05:00
arichorn
754a5051f3
Fix Native Dark Theme
fixed Native Dark Theme with a new implementation
2023-08-08 18:04:24 -05:00
arichorn
a204bb1344
Fixed YTNoModernUI Option
Fixed Option not working on the latest version of YouTube.
2023-08-07 18:24:57 -05:00
GitHub Actions
2ec211d969 updated submodules 2023-08-06 16:16:29 +00:00
arichorn
504b77b6ad
Update Supported Versions 2023-08-06 07:09:08 -05:00
GitHub Actions
30fcb0c596 updated submodules 2023-08-05 06:08:37 +00:00
arichorn
c622a1c7c9
Synced README.md
README.md has been updated to match the qnblackcat/uYouPlus repository.
2023-08-05 00:56:16 -05:00
arichorn
603909e445
More improvements to README.md 2023-08-03 21:37:39 -05:00
arichorn
98165f23aa
Update README.md 2023-08-03 18:28:55 -05:00
arichorn
4ec6763ed1
Improved README.md
Saw a Reddit post https://www.reddit.com/r/sideloaded/comments/15f7v26/is_uyouplusextra_by_arichorn_safe/?utm_source=share&utm_medium=ios_app&utm_name=ioscss&utm_content=2&utm_term=1
and decided to improve the readme as requested.
2023-08-03 18:18:26 -05:00
arichorn
67a0a20a95
Update Themes.xm 2023-07-31 16:32:17 -05:00
arichorn
6a5fd21a49
Update Themes.xm 2023-07-31 16:25:55 -05:00
arichorn
4c866ceaf1
Update Themes.xm 2023-07-31 08:10:17 -05:00
arichorn
2b5d9c3bec
Fixed Hide Dark Overlay Background Again?
this was fixed by Dayanch96 from here https://github.com/dayanch96/YTLite
2023-07-31 07:54:00 -05:00
arichorn
592675ff4e
v18.30.6-3.0.1 2023-07-31 07:39:28 -05:00
GitHub Actions
075cecde52 updated submodules 2023-07-31 12:21:46 +00:00
arichorn
196b82f638
Update Themes.xm 2023-07-31 06:34:42 -05:00
arichorn
2d25428338
Update Settings.xm 2023-07-30 21:25:07 -05:00
arichorn
0e5f299038
Added New Option! Portrait Fullscreen 2023-07-30 21:22:36 -05:00
arichorn
147cf0c6b3
Update Themes.xm 2023-07-30 21:09:16 -05:00
arichorn
7ff43e13c3
More improvements 2023-07-30 20:32:14 -05:00
arichorn
7a0cbddd03
Update Themes.xm 2023-07-30 06:41:25 -05:00
arichorn
25046a3c1d
More Additions! 2023-07-30 06:31:39 -05:00
arichorn
44559b2919
OLED chip bar support
OLED & old Dark Themes will now have proper support into modifying the chip bar’s background color
2023-07-30 05:39:25 -05:00
arichorn
8bf69b4d1d
Update LowContrastMode.xm 2023-07-30 00:54:46 -05:00
arichorn
09ef1f54dd
Updated YTCommonColorPalette
Instead of UIView, I decided to do the implementation in a safer way due to new methods I found.
2023-07-30 00:52:02 -05:00
arichorn
d07ecb7428
Removed UIView ⚠️
UIView was very unstable. Had to immediately remove it due to a ton of UI Issues!
2023-07-30 00:28:59 -05:00
arichorn
db77aef6a0
Update Themes.xm 2023-07-29 23:42:41 -05:00
arichorn
b996a9682d
Improvements.. 🤦 2023-07-29 23:17:44 -05:00
arichorn
6afd17689d
Update uYouPlus.xm 2023-07-29 21:48:38 -05:00
arichorn
83ed531380
Improvements 2023-07-29 21:25:33 -05:00
arichorn
80f45d8c97
Update an Option 2023-07-29 20:12:02 -05:00
arichorn
dfc6cce94c
Removed Broken code
Some of the code is broken in the latest version so it’s been removed.
2023-07-29 20:04:49 -05:00
arichorn
0f9aabf2a5
removed some dark theme elements 2023-07-29 19:55:10 -05:00
arichorn
b1fcf429f6
Revert some OLED Dark Theme changes 2023-07-29 13:05:01 -05:00
arichorn
5c401620dd
Update Themes.xm 2023-07-29 12:48:54 -05:00
arichorn
8d19fbace1
Update Themes.xm 2023-07-29 12:37:40 -05:00
arichorn
1ac8815328
Re-added isDarkMode (not finished) 2023-07-29 10:27:20 -05:00
arichorn
47853db87d
Fix Live Chat not showing when using Themes 2023-07-29 09:49:14 -05:00
arichorn
0cd6daf677
Create delete-workflow-runs.yml 2023-07-28 22:18:59 -05:00
arichorn
1c5c1da0b9
Updated update-submodules template 2023-07-28 15:46:09 -05:00
arichorn
5ca48e2dba
switched YTNoCommunityPosts to main repo 2023-07-28 15:45:18 -05:00
arichorn
cce49a2a67
Update README.md 2023-07-27 22:29:22 -05:00
arichorn
e8343efe90
Update Themes.xm 2023-07-27 21:36:44 -05:00
arichorn
ecde382a4f
Fixed OLED & Old Dark Theme 2023-07-27 21:03:59 -05:00
arichorn
773f4ca668
Update Settings.xm 2023-07-27 20:23:33 -05:00
arichorn
bc19ad7eaf
Remove bundle command 2023-07-27 07:10:55 -05:00
GitHub Actions
56f35a9256 Added YTNoCommunityPost bundle 2023-07-27 12:08:58 +00:00
arichorn
5046b39557
Update update-submodules.yml 2023-07-27 07:08:24 -05:00
arichorn
007c962a12
Update update-submodules template
Updated template to include the localized YTNoCommunityPosts Tweak.
2023-07-27 07:06:18 -05:00
GitHub Actions
7a76cdda3a updated submodules 2023-07-27 12:02:26 +00:00
arichorn
247ecde7ce
Re-added “Fix streched artwork in uYou”
uYou 3.0.1 was supposed to have this but it wasn’t included in there. So I have re-added this patch back to uYouPlus.
2023-07-26 21:54:02 -05:00
arichorn
5e1064b8a6
Updated Security Policy
This has been updated in addition of uYou 3.0.1
2023-07-25 17:13:08 -05:00
arichorn
f7db36664a
Removed Outdated Code
Removed Outdated Code that no longer works on new YouTube/uYou Versions.
2023-07-25 04:02:30 -05:00
arichorn
0252ea6ab0
Fix https://github.com/arichorn/uYouPlusExtra/issues/57 2023-07-25 02:34:00 -05:00
arichorn
9695aa090e
Fixed Hide Dark Overlay Background Option 2023-07-25 02:27:16 -05:00
arichorn
0c20ac5305
Downgrade Theos ⚠️
Theos had an update which breaks the building
this is why I downgraded it: https://github.com/arichorn/uYouPlusExtra/actions/runs/5651520528
2023-07-24 20:37:03 -05:00
arichorn
4adff8cdc1
Update update-submodules.yml 2023-07-24 20:35:15 -05:00
arichorn
262f3665a4
Update Makefile 2023-07-24 20:17:37 -05:00
GitHub Actions
ec1d86d126 Added bundles 2023-07-25 01:11:48 +00:00
arichorn
1baa87aad9
Remove fake bundle file (3/3) 2023-07-24 20:09:58 -05:00
arichorn
0ad5862a1d
Remove fake bundle file (2/3) 2023-07-24 20:09:40 -05:00
arichorn
64669dfaf2
Remove fake bundle file (1/3) 2023-07-24 20:09:20 -05:00
arichorn
f0da48dc15
Added bundles command 2023-07-24 20:08:08 -05:00
arichorn
ddc86acd23
Updated update-submodules template
Improved template to now include bundles if required.
2023-07-24 20:06:57 -05:00
arichorn
b13b68708f
Update Themes.xm 2023-07-24 08:15:55 -05:00
arichorn
6667de67fe
Improved Old Dark Mode 2023-07-24 07:59:00 -05:00
arichorn
00e43bcce2
Remove Duplicated Option 2023-07-24 07:50:57 -05:00
arichorn
b3bca9a200
Declaring New OLED Dark Theme 2023-07-24 07:45:21 -05:00
arichorn
ff96ee83a9
OLED Dark Theme Improvements 2023-07-24 07:32:13 -05:00
arichorn
1478bb27aa
Update LowContrastMode.xm 2023-07-24 06:56:43 -05:00
arichorn
f4c800c3cd
New Changes 2023-07-24 06:36:27 -05:00
arichorn
e0f21cf533
Enabled Themes.xm 2023-07-24 06:33:51 -05:00
arichorn
d1f150b1fd
Updated README! 🎉 2023-07-24 02:48:46 -05:00
arichorn
e39df48ed2
uYou v3.0.1 Building 🎉 2023-07-24 02:27:53 -05:00
arichorn
67029e90c5
run macos-latest
buildapp.yml can now run this because I changed the Alderis Submodule.
2023-07-23 19:17:02 -05:00
GitHub Actions
8089737060 updated submodules 2023-07-24 00:14:33 +00:00
arichorn
9adc67f0c8
fix update-submodules.yml
to bypass and ignore the `Tweaks/FLEXing` error, I decided to update each Submodule separately.
2023-07-23 19:13:46 -05:00
arichorn
d33081f55b
Update Security Policy (fix spelling errors) 2023-07-21 20:13:23 -05:00
arichorn
10635e8a8e
Update Settings.xm 2023-07-21 06:33:46 -05:00
arichorn
83b7b883e2
Updated VersionSpoofer
Version Spoofer includes a new change based off of YouTube Revanced Extended. the new option Custom Version Spoofer number.
2023-07-20 22:11:39 -05:00
arichorn
3294e7c25e
Update README.md 2023-07-20 18:57:28 -05:00
arichorn
213cee8497
IPA Building
You can build your own ipa!
2023-07-20 18:56:54 -05:00
arichorn
98adbb3cc6
Revamped Security/LTS Policy
Re-did the whole entire security policy, I added new tables in the Supported Versions Section. And also added a section that shows which app versions are still supported by Google that still update. Also I added this because the older app versions do actually still update, if you ever see the () label under it then that indicates that the version will likely not work.
2023-07-19 01:53:36 -05:00
arichorn
6f3f1f2a15
Update update-submodules.txt 2023-07-15 23:11:12 -05:00
arichorn
03f8177ea8
Fix url 2023-07-15 23:10:48 -05:00
arichorn
1fbd1e6303
Updated Update-Submodules Template
This template is used if I’m specifically refreshing the branch. and Anyone can use this aswell!
2023-07-15 21:12:11 -05:00
arichorn
1827a84aca
New README.md
Revamped the readme with uYouPlusExtra stuff since the normal uYouPlus hasn’t updated this.
2023-07-15 20:58:18 -05:00
arichorn
1a6cdfccc4
Rebrand WorkFlow to uYouPlusExtra
Commit made by Yodaluca23
2023-07-14 02:55:46 -05:00
arichorn
cb724282de
Update uYouPlus.xm 2023-07-14 02:38:58 -05:00
arichorn
fa3eb37257
Updated YTPivotBarIndicatorView
This time, instead of grouping it, it will be using %orig(YES) & %orig(NO) instead
2023-07-14 02:23:48 -05:00
arichorn
b2e018ff45
Fix YTPivotBarIndicatorView header 2023-07-13 22:18:45 -05:00
arichorn
2f85e6031c
Changed option 2023-07-13 22:17:25 -05:00
arichorn
604f36f9a1
Added uYou Compatibility (README.md) 2023-07-13 21:47:27 -05:00
arichorn
22f017205d
Undo OLED & Old Dark Mode changes 2023-07-13 20:20:07 -05:00
arichorn
93cef9ed58
Create Themes.xm (DISABLED & BROKEN CODE) 2023-07-13 20:17:12 -05:00
arichorn
bd956b08b1
Update Makefile 2023-07-13 20:12:28 -05:00
arichorn
b2fb362f0a
Update Settings.xm 2023-07-13 20:03:56 -05:00
arichorn
7109d20eeb
Fix Option Name 2023-07-13 20:01:01 -05:00
arichorn
525fd8cb4d
New Option (Disable double tap to skip legacy)
I made another Disable Double tap to skip option in case the original option doesn’t work on an older version of the app.
2023-07-13 19:58:30 -05:00
arichorn
af135dee9f
Merge bug.yaml 2023-07-13 18:09:43 -05:00
arichorn
0e145353d7
Update bug.yaml 2023-07-13 18:02:58 -05:00
arichorn
44b1d265a2
Added value 2023-07-13 18:00:30 -05:00
arichorn
3617996377
Fix template 2023-07-13 17:50:26 -05:00
arichorn
0cdfa57793
Added optional uYou label [bug.yaml] 2023-07-13 17:46:37 -05:00
arichorn
ca24ed4dc4
Update Header.h 2023-07-13 04:38:26 -05:00
arichorn
2be0115841
Update Settings.xm 2023-07-13 03:52:41 -05:00
arichorn
102e84656f
New Option (Hide Subscriptions Notification Badge) 2023-07-13 03:47:13 -05:00
arichorn
4500f72969
New Header (YTPivotBarIndicatorView) 2023-07-13 03:41:51 -05:00
arichorn
7cfdc174be
Improvements 2023-07-12 11:16:30 -05:00
arichorn
81a68cc44b
v18.27.3-3.0 2023-07-11 16:53:47 -05:00
arichorn
ff9f333bbd
Create YouQuality.bundle 2023-07-11 16:46:16 -05:00
arichorn
c008483f1f
Create YouMute.bundle 2023-07-11 16:44:36 -05:00
arichorn
6573093b83
Create YTVideoOverlay.bundle 2023-07-11 16:42:57 -05:00
arichorn
2df6c20734
Simplified “Hide uYou Tab” Option 2023-07-11 16:39:14 -05:00
arichorn
ece3636915
LowContrastMode v1.3.1 2023-07-11 12:02:30 -05:00
arichorn
0c020280e7
Update _ASDisplayView Headers
Updated the headers in addition for the updated LowContrastMode
2023-07-11 11:58:59 -05:00
arichorn
12d3d650c1
Update uYouPlus.xm 2023-07-11 11:54:35 -05:00
arichorn
fb8749017b
Update Settings.xm 2023-07-11 11:50:01 -05:00
arichorn
43899908ce
Re-added “Hide uYou Tab” Option
Issue #45 suggested to reinject the option but this time it should actually work.
2023-07-11 11:36:53 -05:00
arichorn
c80d2edaec
Update update-submodules.yml 2023-07-10 18:04:24 -05:00
GitHub Actions
4c0cccfdd9 updated YouTubeHeader 2023-07-10 22:57:01 +00:00
arichorn
2a93acf62e
Update update-submodules.yml 2023-07-10 17:56:28 -05:00
arichorn
0960010131
Update update-submodules.yml 2023-07-10 15:42:49 -05:00
arichorn
efd9fe5ecf
Update update-submodules.yml 2023-07-10 15:32:33 -05:00
arichorn
d7b630cf94
Update update-submodules.yml 2023-07-10 03:58:01 -05:00
arichorn
746e88546f
Ignore FLEXing 2023-07-10 03:44:09 -05:00
arichorn
0c55f5b9d6
Update update-submodules.yml 2023-07-10 03:37:08 -05:00
arichorn
b60bdb98d9
Update update-submodules.yml 2023-07-10 03:34:01 -05:00
arichorn
b8e15dceb8
Update .gitmodules 2023-07-10 03:31:43 -05:00
arichorn
8e553218f3
Update buildapp.yml 2023-07-10 03:27:10 -05:00
arichorn
75f9e9a514
Update .gitmodules 2023-07-10 03:18:40 -05:00
arichorn
024b3141b8
Update update-submodules.yml 2023-07-10 03:15:01 -05:00
arichorn
12c1694bd5
Create update-submodule.txt 2023-07-10 03:07:28 -05:00
arichorn
e5930a8d2e
Update Makefile (New Tweaks!) 2023-07-10 00:15:55 -05:00
arichorn
bd10c43bfb
Refreshed Branch
the reason for the branch refresh was to completely add new submodules/tweaks that were made by PoomSmart.
2023-07-10 00:10:13 -05:00
arichorn
7ab80907f2 added uYouPlusExtra submodules 2023-07-10 05:02:00 +00:00
arichorn
11ebb4d4d7
Update update-submodules.yml 2023-07-10 00:01:19 -05:00
30 changed files with 6570 additions and 530 deletions

View file

@ -8,17 +8,24 @@ body:
label: Is there an existing issue for this?
description: _Please search to see if an issue already exists for the bug you encountered. **I DON\'T MAKE THIS TICK BOX FOR COSMETIC.**_
options:
- label: I have searched the existing issues
required: true
- label: I have searched the existing issues
required: true
- type: checkboxes
attributes:
label: Select uYou Label
description: 'Select the box if you think this is an issue from uYou 2.1/3.0.'
options:
- label: uYou
required: false
- type: checkboxes
attributes:
label: Have you read the FAQ?
description: _Make sure you actually visit the [**FAQ**](https://github.com/qnblackcat/uYouPlus/wiki/FAQ) page! **I DON\'T MAKE THIS TICK BOX FOR COSMETIC**_
options:
- label: Yes, I did read the FAQ
required: true
- label: Yes, I did read the FAQ
required: true
- type: textarea
attributes:
label: Device info

View file

@ -1,14 +1,14 @@
# Original idea by @ISnackable. Thanks to him for handling the hardest parts!
# https://github.com/ISnackable/CercubePlus/blob/main/.github/workflows/Build.yml
name: Build and Release uYouPlus
name: Build and Release uYouPlusExtra
on:
workflow_dispatch:
inputs:
uyou_version:
description: "The version of uYou"
default: "3.0"
default: "3.0.1"
required: true
type: string
decrypted_youtube_url:
@ -50,7 +50,7 @@ jobs:
steps:
- name: Checkout Main
uses: actions/checkout@v3.2.0
uses: actions/checkout@v3.5.3
with:
path: main
submodules: recursive
@ -62,16 +62,16 @@ jobs:
run: echo "$(brew --prefix make)/libexec/gnubin" >> $GITHUB_PATH
- name: Setup Theos
uses: actions/checkout@v3.2.0
uses: actions/checkout@v3.5.3
with:
repository: theos/theos
ref: master
ref: 3da31488281ecf4394d10302d2629607f4a1aa07
path: theos
submodules: recursive
- name: Caching
id: SDK
uses: actions/cache@v3.2.0
uses: actions/cache@v3.3.1
env:
cache-name: iOS-15.5-SDK
with:
@ -87,7 +87,7 @@ jobs:
THEOS: ${{ github.workspace }}/theos
- name: Setup Theos Jailed
uses: actions/checkout@v3.2.0
uses: actions/checkout@v3.5.3
with:
repository: qnblackcat/theos-jailed
ref: master
@ -116,7 +116,7 @@ jobs:
sed -i '' "27s#.*#BUNDLE_ID = ${{ env.BUNDLE_ID }}#g" Makefile
sed -i '' "26s#.*#DISPLAY_NAME = ${{ env.APP_NAME }}#g" Makefile
make package IPA=YouTube.ipa FINALPACKAGE=1
(mv "packages/$(ls -t packages | head -n1)" "packages/uYouPlus_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }}.ipa")
(mv "packages/$(ls -t packages | head -n1)" "packages/uYouPlusExtra_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }}.ipa")
echo "package=$(ls -t packages | head -n1)" >>$GITHUB_OUTPUT
echo -e "==> \033[1mSHASUM256: $(shasum -a 256 packages/*.ipa | cut -f1 -d' ')\033[0m"
echo -e "==> \033[1mBundle ID: ${{ env.BUNDLE_ID }}\033[0m"
@ -134,7 +134,7 @@ jobs:
UYOU_VERSION: ${{ inputs.uyou_version }}
YOUTUBE_VERSION: ${{ inputs.youtube_version }}
with:
name: uYouPlus_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }}
name: uYouPlusExtra_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }}
path: ${{ github.workspace }}/main/packages/${{ steps.build_package.outputs.package }}
if-no-files-found: error

View file

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

View file

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

17
.gitmodules vendored
View file

@ -29,16 +29,29 @@
[submodule "Tweaks/FLEXing"]
path = Tweaks/FLEXing
url = https://github.com/NSExceptional/FLEXing
ignore = all
[submodule "Tweaks/Alderis"]
path = Tweaks/Alderis
url = https://github.com/hbang/Alderis.git
url = https://github.com/arichorn/Alderis.git
[submodule "Tweaks/RemoteLog"]
path = Tweaks/RemoteLog
url = https://github.com/Muirey03/RemoteLog
[submodule "Tweaks/DontEatMyContent"]
path = Tweaks/DontEatMyContent
url = https://github.com/therealFoxster/DontEatMyContent
url = https://github.com/therealFoxster/DontEatMyContent.git
[submodule "Tweaks/iSponsorBlock"]
path = Tweaks/iSponsorBlock
url = https://github.com/Galactic-Dev/iSponsorBlock.git
branch = master
[submodule "Tweaks/YouMute"]
path = Tweaks/YouMute
url = https://github.com/PoomSmart/YouMute.git
[submodule "Tweaks/YouQuality"]
path = Tweaks/YouQuality
url = https://github.com/PoomSmart/YouQuality.git
[submodule "Tweaks/YTVideoOverlay"]
path = Tweaks/YTVideoOverlay
url = https://github.com/PoomSmart/YTVideoOverlay.git
[submodule "Tweaks/YTNoCommunityPosts"]
path = Tweaks/YTNoCommunityPosts
url = https://github.com/michael-winay/YTNoCommunityPosts.git

View file

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

View file

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

1
Bundles/YouMute.bundle Symbolic link
View file

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

1
Bundles/YouQuality.bundle Symbolic link
View file

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

View file

@ -1,5 +1,6 @@
#import "Tweaks/YouTubeHeader/YTAppDelegate.h"
#import "Tweaks/YouTubeHeader/YTPlayerViewController.h"
#import "Tweaks/YouTubeHeader/YTQTMButton.h"
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <objc/runtime.h>
@ -15,6 +16,7 @@
#import "Tweaks/YouTubeHeader/YTIPivotBarSupportedRenderers.h"
#import "Tweaks/YouTubeHeader/YTIPivotBarRenderer.h"
#import "Tweaks/YouTubeHeader/YTIBrowseRequest.h"
#import "Tweaks/YouTubeHeader/YTColorPalette.h"
#import "Tweaks/YouTubeHeader/YTCommonColorPalette.h"
#import "Tweaks/YouTubeHeader/ASCollectionView.h"
#import "Tweaks/YouTubeHeader/YTPlayerOverlay.h"
@ -24,6 +26,11 @@
#import "Tweaks/YouTubeHeader/YTReelPlayerViewController.h"
#import "Tweaks/YouTubeHeader/YTAlertView.h"
#import "Tweaks/YouTubeHeader/YTISectionListRenderer.h"
#import "Tweaks/YouTubeHeader/YTIMenuConditionalServiceItemRenderer.h"
#import "Tweaks/YouTubeHeader/YTPivotBarItemView.h"
#import "Tweaks/YouTubeHeader/YTVideoWithContextNode.h" // YouTube-X
#import "Tweaks/YouTubeHeader/ELMCellNode.h" // YouTube-X
#import "Tweaks/YouTubeHeader/ELMNodeController.h" // YouTube-X
#define LOC(x) [tweakBundle localizedStringForKey:x value:nil table:nil]
#define YT_BUNDLE_ID @"com.google.ios.youtube"
@ -62,6 +69,9 @@
@interface boolSettingsVC : UIViewController
@end
@interface YTPlaybackButton : UIControl
@end
@interface PlayerManager : NSObject
- (float)progress;
@end
@ -74,6 +84,12 @@
@property UIButton *downloadsButton;
@end
// Buttons
@interface YTRightNavigationButtons : UIView
@property YTQTMButton *notificationButton;
@property YTQTMButton *sponsorBlockButton;
@end
// YTSpeed
@interface YTVarispeedSwitchControllerOption : NSObject
- (id)initWithTitle:(id)title rate:(float)rate;
@ -98,16 +114,6 @@
- (void)setRate:(float)rate;
@end
// iOS16 fix
@interface OBPrivacyLinkButton : UIButton
- (instancetype)initWithCaption:(NSString *)caption
buttonText:(NSString *)buttonText
image:(UIImage *)image
imageSize:(CGSize)imageSize
useLargeIcon:(BOOL)useLargeIcon
displayLanguage:(NSString *)displayLanguage;
@end
// uYouLocal fix
@interface YTLocalPlaybackController : NSObject
- (id)activeVideo;
@ -118,7 +124,6 @@
@property(nonatomic, strong) id downloadsVC;
@end
// BigYTMiniPlayer
@interface YTMainAppVideoPlayerOverlayView : UIView
- (UIViewController *)_viewControllerForAncestor;
@ -130,9 +135,6 @@
// YTAutoFullScreen
@interface YTPlayerViewController (YTAFS)
- (void)autoFullscreen;
// DontEatMycontent
- (id)activeVideoPlayerOverlay;
- (id)playerView;
// YTSpeed
@property id activeVideo;
@property float playbackRate;
@ -149,6 +151,9 @@
@interface YTRelatedVideosView : UIView
@end
@interface YTTopAlignedView : UIView
@end
@interface ELMView : UIView
@end
@ -167,6 +172,9 @@
@interface _ASDisplayView : UIView
@end
@interface YTPivotBarIndicatorView : UIView
@end
@interface YTCommentDetailHeaderCell : UIView
@end
@ -181,3 +189,13 @@
@interface UIPredictionViewController : UIViewController
@end
@interface FRPreferences : UITableViewController
@end
@interface FRPSelectListTable : UITableViewController
@end
@interface settingsReorderTable : UIViewController
@property(nonatomic, strong) UITableView *tableView;
@end

View file

@ -14,10 +14,10 @@ MODULES = jailed
endif
ifndef YOUTUBE_VERSION
YOUTUBE_VERSION = 18.14.1
YOUTUBE_VERSION = 18.31.3
endif
ifndef UYOU_VERSION
UYOU_VERSION = 3.0
UYOU_VERSION = 3.0.1
endif
PACKAGE_VERSION = $(YOUTUBE_VERSION)-$(UYOU_VERSION)
@ -26,10 +26,10 @@ TWEAK_NAME = uYouPlus
DISPLAY_NAME = YouTube
BUNDLE_ID = com.google.ios.youtube
$(TWEAK_NAME)_FILES = uYouPlus.xm Settings.xm
$(TWEAK_NAME)_FILES = uYouPlus.xm Settings.xm $(shell find Source -name '*.xm' -o -name '*.x' -o -name '*.m')
$(TWEAK_NAME)_FRAMEWORKS = UIKit Security
$(TWEAK_NAME)_CFLAGS = -fobjc-arc -DTWEAK_VERSION=\"$(PACKAGE_VERSION)\"
$(TWEAK_NAME)_INJECT_DYLIBS = Tweaks/uYou/Library/MobileSubstrate/DynamicLibraries/uYou.dylib $(THEOS_OBJ_DIR)/libFLEX.dylib $(THEOS_OBJ_DIR)/iSponsorBlock.dylib $(THEOS_OBJ_DIR)/YouPiP.dylib $(THEOS_OBJ_DIR)/YouTubeDislikesReturn.dylib $(THEOS_OBJ_DIR)/YTABConfig.dylib $(THEOS_OBJ_DIR)/YTUHD.dylib $(THEOS_OBJ_DIR)/DontEatMyContent.dylib
$(TWEAK_NAME)_INJECT_DYLIBS = Tweaks/uYou/Library/MobileSubstrate/DynamicLibraries/uYou.dylib $(THEOS_OBJ_DIR)/libFLEX.dylib $(THEOS_OBJ_DIR)/iSponsorBlock.dylib $(THEOS_OBJ_DIR)/YouPiP.dylib $(THEOS_OBJ_DIR)/YouTubeDislikesReturn.dylib $(THEOS_OBJ_DIR)/YTABConfig.dylib $(THEOS_OBJ_DIR)/YTUHD.dylib $(THEOS_OBJ_DIR)/DontEatMyContent.dylib $(THEOS_OBJ_DIR)/YTNoCommunityPosts.dylib $(THEOS_OBJ_DIR)/YTVideoOverlay.dylib $(THEOS_OBJ_DIR)/YouMute.dylib $(THEOS_OBJ_DIR)/YouQuality.dylib
$(TWEAK_NAME)_EMBED_LIBRARIES = $(THEOS_OBJ_DIR)/libcolorpicker.dylib
$(TWEAK_NAME)_EMBED_FRAMEWORKS = $(_THEOS_LOCAL_DATA_DIR)/$(THEOS_OBJ_DIR_NAME)/install/Library/Frameworks/Alderis.framework
$(TWEAK_NAME)_EMBED_BUNDLES = $(wildcard Bundles/*.bundle)
@ -37,7 +37,7 @@ $(TWEAK_NAME)_EMBED_EXTENSIONS = $(wildcard Extensions/*.appex)
include $(THEOS)/makefiles/common.mk
ifneq ($(JAILBROKEN),1)
SUBPROJECTS += Tweaks/Alderis Tweaks/FLEXing/libflex Tweaks/iSponsorBlock Tweaks/Return-YouTube-Dislikes Tweaks/YouPiP Tweaks/YTABConfig Tweaks/YTUHD Tweaks/DontEatMyContent
SUBPROJECTS += Tweaks/Alderis Tweaks/FLEXing/libflex Tweaks/iSponsorBlock Tweaks/Return-YouTube-Dislikes Tweaks/YouPiP Tweaks/YTABConfig Tweaks/YTUHD Tweaks/DontEatMyContent Tweaks/YTNoCommunityPosts Tweaks/YTVideoOverlay Tweaks/YouMute Tweaks/YouQuality
include $(THEOS_MAKE_PATH)/aggregate.mk
endif
include $(THEOS_MAKE_PATH)/tweak.mk

105
README.md
View file

@ -1,5 +1,4 @@
![IMG_2196](https://user-images.githubusercontent.com/52943116/189822859-8a0952db-9264-4b5b-9cbe-d0a87b2db5a0.PNG)
***
<p align="center">
<img src="https://img.shields.io/badge/Platform-iOS%20%7C%20iPadOS%2014.0%2B-yellow" alt="Badge"/>
@ -11,17 +10,17 @@
</p>
<p align="center">
<a href="https://github.com/qnblackcat/uYouPlus/releases/latest"><img src="https://custom-icon-badges.demolab.com/github/v/release/qnblackcat/uYouPlus?color=brightgreen&label=Latest%20release" alt="Badge"></img></a>
<a href="https://github.com/qnblackcat/uYouPlus/releases/latest"><img src="https://img.shields.io/github/downloads/qnblackcat/uYouPlus/total?label=Download" alt="Badge"></img></a>
<a href="https://github.com/qnblackcat/uYouPlus/commit"><img src="https://custom-icon-badges.demolab.com/github/last-commit/qnblackcat/uYouPlus?logo=history&logoColor=white&label=Last commit" alt="Badge"></img></a>
<a href="https://github.com/qnblackcat/uYouPlus/issues"><img src="https://custom-icon-badges.demolab.com/github/issues-raw/qnblackcat/uYouPlus?logo=issue-opened&label=Issues" alt="Badge"></img></a>
<a href="https://github.com/arichorn/uYouPlusExtra/releases/latest"><img src="https://custom-icon-badges.demolab.com/github/v/release/arichorn/uYouPlusExtra?color=brightgreen&label=Latest%20release" alt="Badge"></img></a>
<a href="https://github.com/arichorn/uYouPlusExtra/releases/latest"><img src="https://img.shields.io/github/downloads/qnblackcat/uYouPlus/total?label=Download" alt="Badge"></img></a>
<a href="https://github.com/arichorn/uYouPlusExtra/commit"><img src="https://custom-icon-badges.demolab.com/github/last-commit/arichorn/uYouPlusExtra?logo=history&logoColor=white&label=Last commit" alt="Badge"></img></a>
<a href="https://github.com/arichorn/uYouPlusExtra/issues"><img src="https://custom-icon-badges.demolab.com/github/issues-raw/arichorn/uYouPlusExtra?logo=issue-opened&label=Issues" alt="Badge"></img></a>
</p>
<p align="center">
<img src="https://img.shields.io/github/stars/qnblackcat/uYouPlus?style=social" alt="Badge"/>
<img src="https://img.shields.io/github/forks/qnblackcat/uYouPlus?style=social" alt="Badge"/>
<a href="https://github.com/qnblackcat/uYouPlus#support-the-developers"><img src="https://img.shields.io/badge/-Support-lightgrey?style=social&logo=paypal" alt="Badge"></img></a>
<img src="https://img.shields.io/github/stars/arichorn/uYouPlusExtra?style=social" alt="Badge"/>
<img src="https://img.shields.io/github/forks/arichorn/uYouPlusExtra?style=social" alt="Badge"/>
<a href="https://github.com/arichorn/uYouPlusExtra#support-the-developers"><img src="https://img.shields.io/badge/-Support-lightgrey?style=social&logo=paypal" alt="Badge"></img></a>
</p>
# Table of Contents
@ -46,6 +45,12 @@
</a>
<h4 align='center'><a href='https://twitter.com/miro92'>MiRO92</a></h4>
</td>
<td id='qnblackcat'>
<a href='https://github.com/qnblackcat'>
<img src='https://github.com/qnblackcat.png' width='140px;'>
</a>
<h4 align='center'><a href='https://twitter.com/qnblackcat'>qnblackcat</a></h4>
</td>
<td id='poomsmart'>
<a href='https://github.com/PoomSmart'>
<img src='https://github.com/PoomSmart.png' width='140px;'>
@ -64,15 +69,15 @@
</a>
<h4 align='center'><a href='https://twitter.com/bandarhl'>BandarHelal</a></h4>
</td>
</tr>
<tr>
<td id='galactic-dev'>
<a href='https://github.com/Galactic-Dev'>
<img src='https://github.com/Galactic-Dev.png' width='140px;'>
</a>
<h4 align='center'><a href='https://twitter.com/dev_galactic'>galactic</a></h4>
</td>
</tr>
<tr>
<td id='julioverne'>
<a href='https://github.com/julioverne'>
<img src='https://github.com/julioverne.png' width='140px;'>
@ -97,15 +102,15 @@
</a>
<h4 align='center'><a href='https://twitter.com/therealFoxster'>Foxster</a></h4>
</td>
</tr>
<tr>
<td id='ichitaso'>
<a href='https://github.com/ichitaso'>
<img src='https://github.com/ichitaso.png' width='140px;'>
</a>
<h4 align='center'><a href='https://twitter.com/ichitaso'>ichitaso</a></h4>
</td>
</tr>
<tr>
<td id='ahmed-bafkir'>
<a href='https://github.com/AhmedBafkir'>
<img src='https://github.com/AhmedBafkir.png' width='140px;'>
@ -162,6 +167,16 @@
12. **YTABConfig**: allow user to control over YouTube A/B testing flags.
13. **YouMute**: mute YouTube videos via a button.
14. **YouQuality**: change video quality via a button.
15. **YTVideoOverlay**: add buttons to overlay the video.
16. **YTNoCommunityPosts**: Tweak to disable all Community Posts on the YouTube app. **<-- uYouPlusExtra Exclusive Feature (may change)**
17. **LowContrastMode**: this tweak allows users to darken the text in the YouTube app. **<-- uYouPlusExtra Exclusive Feature (may change)**
</details>
# Known issues
@ -172,50 +187,62 @@
# Download
- **uYouPlus** (or you can call it uYou+) requires iOS or iPadOS 14.0 or later. The latest version of **uYouPlus** can be found in the [Release tab](https://github.com/qnblackcat/uYouPlus/releases/latest).
- **uYouPlusExtra** (or you can just call it uYou+) requires iOS or iPadOS 14.0 or later. The latest version of **uYouPlusExtra** ipa can be found in the [Release tab](https://github.com/arichorn/uYouPlusExtra/releases/latest).
- For AltStore user:
- My official AltStore repo: https://qnblackcat.github.io/AltStore/
- My official AltStore repo: https://therealfoxster.github.io/altsource-viewer/index.html?source=https://raw.githubusercontent.com/arichorn/arichorn.github.io/main/apps.json
- [Open in AltStore (v18.14.1-3.0)](https://tinyurl.com/yv6wrxjz) - It will take a while to install because AltStore needs to download the IPA first.
- [Open in AltStore (v18.31.3-3.0.1)](https://tinyurl.com/4srfmcm2) - It will take a while to install because AltStore needs to download the IPA first.
- Version info: _(last update: Apr 28)_
- Version info: _(last update: Aug 15)_
<details>
<summary>Expand </summary>
| **Tweaks/App** | **Developer** | **Version** | **Open source** |
| - | - | :-: | :-: |
| **YouTube** | Google Inc | 18.14.1 | ✖︎ |
| [uYou](https://github.com/MiRO92/uYou-for-YouTube) | [MiRO92](https://twitter.com/miro92) | 3.0 | ✖︎ |
| **YouTube** | Google Inc | 18.31.3 | ✖︎ |
| [uYou](https://github.com/MiRO92/uYou-for-YouTube) | [MiRO92](https://twitter.com/miro92) | 3.0.1 | ✖︎ |
| **Open in YouTube** | [CokePokes](https://github.com/CokePokes) | 1.2 | [✔︎](https://github.com/CokePokes/YoutubeExtensions) |
| **iSponsorBlock** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.0-15 | [✔︎](https://github.com/Galactic-Dev/iSponsorBlock) |
| **iSponsorBlock** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.2 | [✔︎](https://github.com/Galactic-Dev/iSponsorBlock) |
| **BigYTMiniPlayer** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.0-1 | [✔︎](https://github.com/Galactic-Dev/BigYTMiniPlayer) |
| **YTNoHoverCards** | [level3tjg](https://twitter.com/level3tjg) | 0.0.3 | [✔︎](https://github.com/level3tjg/YTNoHoverCards) |
| **YTMiniplayerEnabler** | [level3tjg](https://twitter.com/level3tjg) | 0.0.2 | [✔︎](https://github.com/level3tjg/YTMiniplayerEnabler) |
| **DontEatMyContent** | [therealFoxster](https://github.com/therealFoxster) | 1.0.6 | [✔︎](https://github.com/therealFoxster/DontEatMyContent) |
| **DontEatMyContent** | [therealFoxster](https://github.com/therealFoxster) | 1.0.10 | [✔︎](https://github.com/therealFoxster/DontEatMyContent) |
| **YTSpeed** | [Lyvendia](https://github.com/Lyvendia) | 1.0.1 | [✔︎](https://github.com/Lyvendia/YTSpeed) |
| **YTCastConfirm** | [JamieBerghmans](https://github.com/JamieBerghmans) | 1.0.0 | [✔︎](https://github.com/JamieBerghmans/YTCastConfirm) |
| **Alderis Color Picker** | [HASHBANG Productions](https://github.com/hbang) | 1.2| [✔︎](https://github.com/hbang/Alderis) |
| **YTUHD** | [PoomSmart](https://twitter.com/poomsmart) | 1.3.5-1 | [✔︎](https://github.com/PoomSmart/YTUHD) |
| **YouPiP** | [PoomSmart](https://twitter.com/poomsmart) | 1.7.19-1 | [✔︎](https://github.com/PoomSmart/YouPiP) |
| **YTUHD** | [PoomSmart](https://twitter.com/poomsmart) | 1.4.0 | [✔︎](https://github.com/PoomSmart/YTUHD) |
| **YouPiP** | [PoomSmart](https://twitter.com/poomsmart) | 1.7.20 | [✔︎](https://github.com/PoomSmart/YouPiP) |
| **IAmYouTube** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.0 | [✔︎](https://github.com/PoomSmart/IAmYouTube) |
| **YTABConfig** | [PoomSmart](https://twitter.com/poomsmart) | 1.5.0 | [✔︎](https://github.com/PoomSmart/YTABConfig) |
| **YTABConfig** | [PoomSmart](https://twitter.com/poomsmart) | 1.5.0-1 | [✔︎](https://github.com/PoomSmart/YTABConfig) |
| **YTReExplore** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.2 | [✔︎](https://github.com/PoomSmart/YTReExplore) |
| **NoYTPremium** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.4 | [✔︎](https://github.com/PoomSmart/NoYTPremium) |
| **YTNoPaidPromo** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.0 | [✔︎](https://github.com/PoomSmart/YTNoPaidPromo) |
| **YouRememberCaption** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.0 | [✔︎](https://poomsmart.github.io/repo/depictions/youremembercaption.html) |
| **Return YouTube Dislike** | [PoomSmart](https://twitter.com/poomsmart) | 1.11.3 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) |
| **YouMute** | [PoomSmart](https://twitter.com/poomsmart) | 1.2.1-2 | [✔︎](https://github.com/PoomSmart/YouMute) |
| **YouQuality** | [PoomSmart](https://twitter.com/poomsmart) | 1.1.4 | [✔︎](https://github.com/PoomSmart/YouQuality) |
| **YTVideoOverlay** | [PoomSmart](https://twitter.com/poomsmart) | 1.1.0-2 | [✔︎](https://github.com/PoomSmart/YTVideoOverlay) |
| **YTNoCommunityPosts** | [michael-winay](https://github.com/michael-winay) | 0.0.2 | [✔︎](https://github.com/michael-winay/YTNoCommunityPosts) |
| **LowContrastMode** | [arichorn](https://github.com/arichorn) | 1.4.0 | [✔︎](https://github.com/arichorn/YTLowContrastMode) |
</details>
# uYou Tweak Compatibility List
| Developer | Tweak Name and Version | App Version Compatibility |
|-----------|:----------------------:|:-------------------------:|
| MiRO92 | uYou 2.1/2.3~1 | Works on v16.42.3-18.01.6 |
| MiRO92 | uYou 3.0 | Works on v18.06.6-18.18.2 |
| MiRO92 | uYou 3.0.1 | Works on v18.06.6-latest |
# Installation
See [Installation - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/Installation).
# Support the developers
- [**MiRO92**](https://twitter.com/miro92): https://github.com/MiRO92/uYou-for-YouTube#support
- [**Poomsmart**](https://twitter.com/poomsmart): https://poomsmart.github.io
- [**level3tjg**](https://twitter.com/level3tjg): https://ko-fi.com/level3tjg
- [**BandarHL**](https://twitter.com/bandarhl): https://www.paypal.com/paypalme/BandarHL
- [**julioverne**](https://twitter.com/ijulioverne): https://www.patreon.com/julioverne
@ -229,4 +256,28 @@ See [FAQ - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/FAQ).
# Building (optional)
See [Building - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/Building).
See [qnblackcat/Building - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/Building)
or [arichorn/Building - Wiki](https://github.com/arichorn/uYouPlusExtra/wiki/Building).
<details>
<summary>Balackburn's YTLitePlus</summary>
# change from uYouPlus/uYouPlusExtra to YTLitePlus (optional)
hello, this is here to show yall this tweak. I've been seeing the YTLitePlus tweak on reddit for quite some time now and decided to join in. before you download the tweak you must look at the Pros and Cons below before downloading because it lets you know more about the tweak.
https://github.com/Balackburn/YTLitePlus/releases
**Pros**
- YTLitePlus is stable and more tweakable then uYouPlus/uYouPlusExtra.
- YTLitePlus has more features in YTLite Settings that uYouPlusExtra doesn't have.
- YTLitePlus has a lightweight Version of the App Version Spoofer which makes it easier to use.
**Cons**
- No Video Downloading in YTLitePlus.
- Video Quality on WiFi not in YTLitePlus.
</details>

20
SECURITY.md Normal file
View file

@ -0,0 +1,20 @@
# Security Policy for uYouPlus Developers
If I verify a reported security vulnerability, my policy is:
- the uYouPlusExtra Developer will patch the current main branch, as well as the immediate prior minor release branch.
- the Contributors are allowed to patch the current main branch with custom features and the ability to add new & updated Localizable Strings.
- After fully patching the main branch, the uYouPlusExtra Developer will issue a new release for the main branch along with LTS release branches.
## Supported Versions
these versions of the project are
currently being supported with security/feature updates.
| Version | LTS Support of the uYouPlusExtra Tweak | YT Version Supported by Google | App Stability |
| ------- | -------------------------------------- | ------------------------------ | -------------------- |
| [latest](https://github.com/arichorn/uYouPlusExtra/releases/latest) | ✅ | ✅ | The latest version is stable! |
| [17.49.6-2.3.1 LTS](https://github.com/arichorn/uYouPlusExtra/releases/tag/v17.49.6-2.3.1-F4) | ✅ | ✅ | This version is Stable, this version may be unstable to some if using it on iOS 17 Beta. |
| [17.38.10-2.1 LTS](https://github.com/arichorn/uYouPlusExtra/releases/latest) | N/A | ✅ | This new LTS Release will soon to replace **16.42.3-2.1** next year. |
| [16.42.3-2.1 LTS](https://github.com/arichorn/uYouPlusExtra/releases/tag/v16.42.3-2.1-F19) | ❌ | ✅ until 2024+ | Unstable if you are using iOS 16 or later, Stage Manager won't work correctly when playing videos in the video player, The App Pivot Bar does not hide when playing videos in iOS 16+ due to iOS/iPadOS Changes but this version can still get new features from Google like for these new ones that were recently added in as an example --> (Shorts, Continue Watching Section, Watch It Again Section, Handles & etc.) so overrall this YouTube Version is still supported by Google. |

File diff suppressed because it is too large Load diff

View file

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

1987
Source/LowContrastMode.xm Normal file

File diff suppressed because it is too large Load diff

1037
Source/Themes.xm Normal file

File diff suppressed because it is too large Load diff

1591
Source/VersionSpoofer.xm Normal file

File diff suppressed because it is too large Load diff

View file

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

@ -1 +1 @@
Subproject commit 2aa3086244d296cfb3c8e782ef09c76316452a9d
Subproject commit a8764bd86b357caa918165e4d9d03a2776e2195f

@ -1 +1 @@
Subproject commit 2ea5e7b3d992b7380fee5f816e38bb8c6cd5fae3
Subproject commit a514fbe4e063a1157da6e68fc05633ef9cec0f44

@ -1 +1 @@
Subproject commit 0d8d65844256441e7e9b8f6010eef57c6a5fe190
Subproject commit b836acf9c1f487879b74db63d077575e0bedc289

@ -0,0 +1 @@
Subproject commit 2bb300413a51c904b32d711104b1be180b96bddd

1
Tweaks/YTVideoOverlay Submodule

@ -0,0 +1 @@
Subproject commit 23dcadf5b418c4da60fb1dd76192f38f68530c48

1
Tweaks/YouMute Submodule

@ -0,0 +1 @@
Subproject commit bbab96d70fbb596f3fffde7898e27734c499ada7

@ -1 +1 @@
Subproject commit bd04bf37be3d01540db418061164ae17a8f0298e
Subproject commit 327d272a36988ae22ad1d118e67e72ee434127b8

1
Tweaks/YouQuality Submodule

@ -0,0 +1 @@
Subproject commit 8b23971bbf40f28acecda2855171918d241929c9

@ -1 +1 @@
Subproject commit 5bdbb9deffe91af7ce0e3215cdcb0e29e83d3d72
Subproject commit 99bb00ebbf77267567938787cb8bd775a07641de

View file

@ -5,6 +5,4 @@ Description: Modified version of uYou
Maintainer: qnblackcat
Author: qnblackcat
Section: Tweaks
Depends: mobilesubstrate (>= 0.9.5000), com.miro.uyou
Conflicts: com.level3tjg.ytminiplayerenabler, com.level3tjg.ytnohovercards, com.devvix.ytcastconfirm, com.ps.ytclassicvideoquality, com.ps.noytpremium, com.ps.ytnopaidpromo, com.ps.ytreexplore, com.galacticdev.bigytminiplayer, me.foxster.donteatmycontent, com.lyvendia.ytspeed, com.lilacvibes.ytstockvolumehud, net.sarahh12099.youtubereborn, com.twickd.sarahh12099.youtube-reborn, h.ryan.youtubereborn, weeb.lillie.enhancerforyoutubepremium, com.ps.uyoucompat, com.ichitaso.uyouplus
Recommends: com.ps.youpip, com.ps.ytabconfig, libflex, weeb.lillie.youtubedislikesreturn
Depends: mobilesubstrate (>= 0.9.5000), com.galacticdev.isponsorblock, com.miro.uyou, com.ps.youpip, com.ps.ytabconfig, com.ps.ytuhd, libflex, weeb.lillie.youtubedislikesreturn

View file

@ -19,15 +19,6 @@ NSBundle *tweakBundle = uYouPlusBundle();
static BOOL IsEnabled(NSString *key) {
return [[NSUserDefaults standardUserDefaults] boolForKey:key];
}
static BOOL isDarkMode() {
return ([[NSUserDefaults standardUserDefaults] integerForKey:@"page_style"] == 1);
}
static BOOL oledDarkTheme() {
return ([[NSUserDefaults standardUserDefaults] integerForKey:@"appTheme"] == 1);
}
static BOOL oldDarkTheme() {
return ([[NSUserDefaults standardUserDefaults] integerForKey:@"appTheme"] == 2);
}
//
# pragma mark - uYou's patches
@ -51,33 +42,6 @@ static BOOL oldDarkTheme() {
}
%end
// Workaround for issue #54
%hook YTMainAppVideoPlayerOverlayViewController
- (void)updateRelatedVideos {
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"relatedVideosAtTheEndOfYTVideos"] == NO) {}
else { return %orig; }
}
%end
// iOS 16 uYou crash fix - @level3tjg: https://github.com/qnblackcat/uYouPlus/pull/224
%group iOS16
%hook OBPrivacyLinkButton
%new
- (instancetype)initWithCaption:(NSString *)caption
buttonText:(NSString *)buttonText
image:(UIImage *)image
imageSize:(CGSize)imageSize
useLargeIcon:(BOOL)useLargeIcon {
return [self initWithCaption:caption
buttonText:buttonText
image:image
imageSize:imageSize
useLargeIcon:useLargeIcon
displayLanguage:[NSLocale currentLocale].languageCode];
}
%end
%end
%hook YTAppDelegate
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary<UIApplicationLaunchOptionsKey, id> *)launchOptions {
@ -91,51 +55,55 @@ static BOOL oldDarkTheme() {
}
- (void)appWillResignActive:(id)arg1 {
%orig;
if (IsEnabled(@"flex_enabled")) {
if (IsEnabled(@"flex_enabled")) {
[[%c(FLEXManager) performSelector:@selector(sharedManager)] performSelector:@selector(showExplorer)];
}
}
%end
# pragma mark - YouTube's patches
// Workaround for MiRO92/uYou-for-YouTube#12, qnblackcat/uYouPlus#263
%hook YTDataUtils
+ (NSMutableDictionary *)spamSignalsDictionary {
return nil;
}
+ (NSMutableDictionary *)spamSignalsDictionaryWithoutIDFA {
return nil;
}
%end
%hook YTHotConfig
- (BOOL)disableAfmaIdfaCollection { return NO; }
%end
// https://github.com/PoomSmart/YouTube-X/blob/1e62b68e9027fcb849a75f54a402a530385f2a51/Tweak.x#L27
// %hook YTAdsInnerTubeContextDecorator
// - (void)decorateContext:(id)context {}
// %end
// Hide YouTube annoying banner in Home page? - @MiRO92 - YTNoShorts: https://github.com/MiRO92/YTNoShorts
%hook YTAsyncCollectionView
- (id)cellForItemAtIndexPath:(NSIndexPath *)indexPath {
UICollectionViewCell *cell = %orig;
if ([cell isKindOfClass:NSClassFromString(@"_ASCollectionViewCell")]) {
_ASCollectionViewCell *cell = %orig;
if ([cell respondsToSelector:@selector(node)]) {
if ([[[cell node] accessibilityIdentifier] isEqualToString:@"statement_banner.view"]) { [self removeShortsAndFeaturesAdsAtIndexPath:indexPath]; }
if ([[[cell node] accessibilityIdentifier] isEqualToString:@"compact.view"]) { [self removeShortsAndFeaturesAdsAtIndexPath:indexPath]; }
// if ([[[cell node] accessibilityIdentifier] isEqualToString:@"id.ui.video_metadata_carousel"]) { [self removeShortsAndFeaturesAdsAtIndexPath:indexPath]; }
}
}
return %orig;
}
%new
- (void)removeShortsAndFeaturesAdsAtIndexPath:(NSIndexPath *)indexPath {
[self deleteItemsAtIndexPaths:[NSArray arrayWithObject:indexPath]];
// Remove “Play next in queue” from the menu (@PoomSmart) - qnblackcat/uYouPlus#1138
%group gHidePlayNextInQueue
%hook YTMenuItemVisibilityHandler
- (BOOL)shouldShowServiceItemRenderer:(YTIMenuConditionalServiceItemRenderer *)renderer {
return renderer.icon.iconType == 251 ? NO : %orig;
}
%end
%end
// Reposition "Create" Tab to the Center in the Pivot Bar - qnblackcat/uYouPlus#107
/*
static void repositionCreateTab(YTIGuideResponse *response) {
NSMutableArray<YTIGuideResponseSupportedRenderers *> *renderers = [response itemsArray];
for (YTIGuideResponseSupportedRenderers *guideRenderers in renderers) {
YTIPivotBarRenderer *pivotBarRenderer = [guideRenderers pivotBarRenderer];
NSMutableArray<YTIPivotBarSupportedRenderers *> *items = [pivotBarRenderer itemsArray];
NSUInteger createIndex = [items indexOfObjectPassingTest:^BOOL(YTIPivotBarSupportedRenderers *renderers, NSUInteger idx, BOOL *stop) {
return [[[renderers pivotBarItemRenderer] pivotIdentifier] isEqualToString:@"FEuploads"];
}];
if (createIndex != NSNotFound) {
YTIPivotBarSupportedRenderers *createTab = [items objectAtIndex:createIndex];
[items removeObjectAtIndex:createIndex];
NSUInteger centerIndex = items.count / 2;
[items insertObject:createTab atIndex:centerIndex]; // Reposition the "Create" tab at the center
}
}
}
%hook YTGuideServiceCoordinator
- (void)handleResponse:(YTIGuideResponse *)response withCompletion:(id)completion {
repositionCreateTab(response);
%orig(response, completion);
}
- (void)handleResponse:(YTIGuideResponse *)response error:(id)error completion:(id)completion {
repositionCreateTab(response);
%orig(response, error, completion);
}
%end
*/
// Fix streched artwork in uYou's player view
%hook ArtworkImageView
@ -240,7 +208,7 @@ static BOOL oldDarkTheme() {
}
%end
//YTCastConfirm: https://github.com/JamieBerghmans/YTCastConfirm
// YTCastConfirm: https://github.com/JamieBerghmans/YTCastConfirm
%hook MDXPlaybackRouteButtonController
- (void)didPressButton:(id)arg1 {
if (IsEnabled(@"castConfirm_enabled")) {
@ -257,15 +225,6 @@ static BOOL oldDarkTheme() {
}
%end
// Hide search ads by @PoomSmart - https://github.com/PoomSmart/YouTube-X
// %hook YTIElementRenderer
// - (NSData *)elementData {
// if (self.hasCompatibilityOptions && self.compatibilityOptions.hasAdLoggingData)
// return nil;
// return %orig;
// }
// %end
// %hook YTSectionListViewController
// - (void)loadWithModel:(YTISectionListRenderer *)model {
// NSMutableArray <YTISectionListSupportedRenderers *> *contentsArray = model.contentsArray;
@ -280,13 +239,19 @@ static BOOL oldDarkTheme() {
// %end
// YTClassicVideoQuality: https://github.com/PoomSmart/YTClassicVideoQuality
%hook YTVideoQualitySwitchControllerFactory
- (id)videoQualitySwitchControllerWithParentResponder:(id)responder {
Class originalClass = %c(YTVideoQualitySwitchOriginalController);
return originalClass ? [[originalClass alloc] initWithParentResponder:responder] : %orig;
}
%hook YTIMediaQualitySettingsHotConfig // (works for YouTube 18.19.1-latest)
%new(B@:) - (BOOL)enableQuickMenuVideoQualitySettings { return NO; }
%end
// %hook YTVideoQualitySwitchControllerFactory
// - (id)videoQualitySwitchControllerWithParentResponder:(id)responder {
// Class originalClass = %c(YTVideoQualitySwitchOriginalController);
// return originalClass ? [[originalClass alloc] initWithParentResponder:responder] : %orig;
// }
// %end
// A/B flags
%hook YTColdConfig
- (BOOL)respectDeviceCaptionSetting { return NO; } // YouRememberCaption: https://poomsmart.github.io/repo/depictions/youremembercaption.html
@ -320,6 +285,13 @@ static BOOL oldDarkTheme() {
- (void)showSurveyWithRenderer:(id)arg1 surveyParentResponder:(id)arg2 {}
%end
%hook YTIOfflineabilityFormat
%new
- (int)availabilityType { return 1; }
%new
- (BOOL)savedSettingShouldExpire { return NO; }
%end
// YTNoPaidPromo: https://github.com/PoomSmart/YTNoPaidPromo
%hook YTMainAppVideoPlayerOverlayViewController
- (void)setPaidContentWithPlayerData:(id)data {
@ -339,6 +311,141 @@ static BOOL oldDarkTheme() {
}
%end
// Disable Wifi Related Settings - @arichorn
%group gDisableWifiRelatedSettings
%hook YTSettingsSectionItemManager
- (void)updatePremiumEarlyAccessSectionWithEntry:(id)arg1 {} // Try New Features
- (void)updateAutoplaySectionWithEntry:(id)arg1 {} // Autoplay
- (void)updateNotificationSectionWithEntry:(id)arg1 {} // Notifications
- (void)updateHistorySectionWithEntry:(id)arg1 {} // History
- (void)updatePrivacySectionWithEntry:(id)arg1 {} // Privacy
- (void)updateHistoryAndPrivacySectionWithEntry:(id)arg1 {} // History & Privacy
- (void)updateLiveChatSectionWithEntry:(id)arg1 {} // Live chat
%end
%end
// YTNoModernUI - @arichorn
%group gYTNoModernUI
%hook YTVersionUtils // YTNoModernUI Original Version
+ (NSString *)appVersion { return @"17.38.10"; }
%end
%hook YTSettingsCell // made by Dayanch96
- (void)setDetailText:(id)arg1 {
NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
NSString *appVersion = infoDictionary[@"CFBundleShortVersionString"];
if ([arg1 isEqualToString:@"17.38.10"]) {
arg1 = appVersion;
} %orig(arg1);
}
%end
%hook YTInlinePlayerBarContainerView // Red Progress Bar - YTNoModernUI
- (id)quietProgressBarColor {
return [UIColor redColor];
}
%end
%hook YTSegmentableInlinePlayerBarView // Old Buffer Bar - YTNoModernUI
- (void)setBufferedProgressBarColor:(id)arg1 {
[UIColor colorWithRed:0.65 green:0.65 blue:0.65 alpha:0.60];
}
%end
%hook YTQTMButton
- (BOOL)buttonModernizationEnabled { return NO; }
%end
%hook YTSearchBarView
- (BOOL)_roundedSearchBarEnabled { return NO; }
%end
%hook YTColdConfig
// Disable Modern Content - YTNoModernUI
- (BOOL)creatorClientConfigEnableStudioModernizedMdeThumbnailPickerForClient { return NO; }
- (BOOL)cxClientEnableModernizedActionSheet { return NO; }
- (BOOL)enableClientShortsSheetsModernization { return NO; }
- (BOOL)enableTimestampModernizationForNative { return NO; }
- (BOOL)mainAppCoreClientIosEnableModernOssPage { return NO; }
- (BOOL)modernizeElementsTextColor { return NO; }
- (BOOL)modernizeElementsBgColor { return NO; }
- (BOOL)modernizeCollectionLockups { return NO; }
- (BOOL)uiSystemsClientGlobalConfigEnableEpUxUpdates { return NO; }
- (BOOL)uiSystemsClientGlobalConfigEnableModernButtonsForNative { return NO; }
- (BOOL)uiSystemsClientGlobalConfigEnableModernButtonsForNativeLongTail { return NO; }
- (BOOL)uiSystemsClientGlobalConfigEnableModernTabsForNative { return NO; }
- (BOOL)uiSystemsClientGlobalConfigIosEnableSnackbarModernization { return NO; }
// Disable Rounded Content - YTNoModernUI
- (BOOL)iosDownloadsPageRoundedThumbs { return NO; }
- (BOOL)iosRoundedSearchBarSuggestZeroPadding { return NO; }
- (BOOL)uiSystemsClientGlobalConfigEnableRoundedThumbnailsForNative { return NO; }
- (BOOL)uiSystemsClientGlobalConfigEnableRoundedThumbnailsForNativeLongTail { return NO; }
- (BOOL)uiSystemsClientGlobalConfigEnableRoundedTimestampForNative { return NO; }
- (BOOL)uiSystemsClientGlobalConfigEnableRoundedDialogForNative { return NO; }
// Disable Darker Dark Mode - YTNoModernUI
- (BOOL)enableDarkerDarkMode { return NO; }
- (BOOL)useDarkerPaletteBgColorForElements { return NO; }
- (BOOL)useDarkerPaletteTextColorForElements { return NO; }
- (BOOL)uiSystemsClientGlobalConfigUseDarkerPaletteTextColorForNative { return NO; }
- (BOOL)uiSystemsClientGlobalConfigUseDarkerPaletteBgColorForNative { return NO; }
// Disable Ambient Mode - YTNoModernUI
- (BOOL)disableCinematicForLowPowerMode { return NO; }
- (BOOL)enableCinematicContainer { return NO; }
- (BOOL)enableCinematicContainerOnClient { return NO; }
- (BOOL)enableCinematicContainerOnTablet { return NO; }
- (BOOL)iosCinematicContainerClientImprovement { return NO; }
- (BOOL)iosEnableGhostCardInlineTitleCinematicContainerFix { return NO; }
- (BOOL)iosUseFineScrubberMosaicStoreForCinematic { return NO; }
- (BOOL)mainAppCoreClientEnableClientCinematicPlaylists { return NO; }
- (BOOL)mainAppCoreClientEnableClientCinematicPlaylistsPostMvp { return NO; }
- (BOOL)mainAppCoreClientEnableClientCinematicTablets { return NO; }
// 16.42.3 Styled YouTube Channel Page Interface - YTNoModernUI
- (BOOL)channelsClientConfigIosChannelNavRestructuring { return NO; }
- (BOOL)channelsClientConfigIosMultiPartChannelHeader { return NO; }
// Disable Optional Content - YTNoModernUI
- (BOOL)elementsClientIosElementsEnableLayoutUpdateForIob { return NO; }
- (BOOL)supportElementsInMenuItemSupportedRenderers { return NO; }
- (BOOL)isNewRadioButtonStyleEnabled { return NO; }
- (BOOL)uiSystemsClientGlobalConfigEnableButtonSentenceCasingForNative { return NO; }
%end
%hook YTHotConfig
- (BOOL)liveChatIosUseModernRotationDetectiom { return NO; } // Disable Modern Content (YTHotConfig)
- (BOOL)iosShouldRepositionChannelBar { return NO; }
- (BOOL)enableElementRendererOnChannelCreation { return NO; }
%end
%end
// Hide YouTube Logo
%group gHideYouTubeLogo
%hook YTHeaderLogoController
- (YTHeaderLogoController *)init {
return NULL;
}
%end
%end
// Hide YouTube Heatwaves in Video Player (YouTube v17.19.2-latest) - @level3tjg - https://www.reddit.com/r/jailbreak/comments/v29yvk/
%group gHideHeatwaves
%hook YTInlinePlayerBarContainerView
- (BOOL)canShowHeatwave { return NO; }
%end
%end
# pragma mark - Hide Notification Button && SponsorBlock Button
%hook YTRightNavigationButtons
- (void)layoutSubviews {
%orig;
if (IsEnabled(@"hideNotificationButton_enabled")) {
self.notificationButton.hidden = YES;
}
if (IsEnabled(@"hideSponsorBlockButton_enabled")) {
self.sponsorBlockButton.hidden = YES;
}
}
%end
// YTReExplore: https://github.com/PoomSmart/YTReExplore/
%group gReExplore
static void replaceTab(YTIGuideResponse *response) {
@ -374,6 +481,16 @@ static void replaceTab(YTIGuideResponse *response) {
%end
%end
// Hide Subscriptions Notification Badge
%group gHideSubscriptionsNotificationBadge
%hook YTPivotBarIndicatorView
- (void)didMoveToWindow {
[self setHidden:YES];
%orig();
}
%end
%end
// BigYTMiniPlayer: https://github.com/Galactic-Dev/BigYTMiniPlayer
%group Main
%hook YTWatchMiniBarView
@ -400,12 +517,13 @@ static void replaceTab(YTIGuideResponse *response) {
%end
// YTSpeed - https://github.com/Lyvendia/YTSpeed
%group gYTSpeed
%hook YTVarispeedSwitchController
- (id)init {
id result = %orig;
const int size = 12;
float speeds[] = {0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0, 2.25, 2.5, 2.75, 3.0};
const int size = 17;
float speeds[] = {0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0, 2.25, 2.5, 2.75, 3.0, 3.25, 3.5, 3.75, 4.0, 5.0};
id varispeedSwitchControllerOptions[size];
for (int i = 0; i < size; ++i) {
@ -445,6 +563,7 @@ static void replaceTab(YTIGuideResponse *response) {
%orig;
}
%end
%end
# pragma mark - uYouPlus
// Video Player Options
@ -453,6 +572,15 @@ static void replaceTab(YTIGuideResponse *response) {
- (void)showConfirmAlert { [self confirmAlertDidPressConfirm]; }
%end
// Portrait Fullscreen by Dayanch96
%group gPortraitFullscreen
%hook YTWatchViewController
- (unsigned long long)allowedFullScreenOrientations {
return UIInterfaceOrientationMaskAllButUpsideDown;
}
%end
%end
// Disable snap to chapter
%hook YTSegmentableInlinePlayerBarView
- (void)didMoveToWindow {
@ -474,25 +602,26 @@ static void replaceTab(YTIGuideResponse *response) {
%group gStockVolumeHUD
%hook YTVolumeBarView
- (void)volumeChanged:(id)arg1 {
%orig(nil);
%orig(nil);
}
%end
%hook UIApplication
- (void)setSystemVolumeHUDEnabled:(BOOL)arg1 forAudioCategory:(id)arg2 {
%orig(true, arg2);
%orig(true, arg2);
}
%end
%end
%hook YTDoubleTapToSeekController
- (void)enableDoubleTapToSeek:(BOOL)arg1 {
return IsEnabled(@"doubleTapToSeek_disabled") ? %orig(NO) : %orig;
// Disable Double Tap to Seek
%hook YTMainAppVideoPlayerOverlayViewController
- (BOOL)allowDoubleTapToSeekGestureRecognizer {
return IsEnabled(@"disableDoubleTapToSkip_enabled") ? NO : %orig;
}
%end
// Video Controls Overlay Options
// Hide CC / Autoplay switch
// Hide CC / Autoplay switch / Enable Share Button / Enable Save to Playlist Button
%hook YTMainAppControlsOverlayView
- (void)setClosedCaptionsOrSubtitlesButtonAvailable:(BOOL)arg1 { // hide CC button
return IsEnabled(@"hideCC_enabled") ? %orig(NO) : %orig;
@ -501,6 +630,20 @@ static void replaceTab(YTIGuideResponse *response) {
if (IsEnabled(@"hideAutoplaySwitch_enabled")) {}
else { return %orig; }
}
- (void)setShareButtonAvailable:(BOOL)arg1 {
if (IsEnabled(@"enableShareButton_enabled")) {
%orig(YES);
} else {
%orig(NO);
}
}
- (void)setAddToButtonAvailable:(BOOL)arg1 {
if (IsEnabled(@"enableSaveToButton_enabled")) {
%orig(YES);
} else {
%orig(NO);
}
}
%end
// Hide HUD Messages
@ -524,6 +667,27 @@ static void replaceTab(YTIGuideResponse *response) {
- (BOOL)removeNextPaddleForSingletonVideos { return YES; }
- (BOOL)removePreviousPaddleForSingletonVideos { return YES; }
%end
// %hook YTMainAppControlsOverlayView // this is only used for v16.42.3 (incompatible with YouTube v17.xx.x-newer)
// - (void)layoutSubviews { // hide Next & Previous legacy buttons
// %orig;
// if (IsEnabled(@"hidePreviousAndNextButton_enabled")) {
// MSHookIvar<YTMainAppControlsOverlayView *>(self, "_nextButton").hidden = YES;
// MSHookIvar<YTMainAppControlsOverlayView *>(self, "_previousButton").hidden = YES;
// MSHookIvar<YTTransportControlsButtonView *>(self, "_nextButtonView").hidden = YES;
// MSHookIvar<YTTransportControlsButtonView *>(self, "_previousButtonView").hidden = YES;
// }
// }
// %end
%end
// Hide Dark Overlay Background
%group gHideOverlayDarkBackground
%hook YTMainAppVideoPlayerOverlayView
- (void)setBackgroundVisible:(BOOL)arg1 isGradientBackground:(BOOL)arg2 {
%orig(NO, arg2);
}
%end
%end
// Replace Next & Previous button with Fast forward & Rewind button
@ -534,13 +698,35 @@ static void replaceTab(YTIGuideResponse *response) {
%end
%end
// Bring back the red progress bar - Broken?!
// Hide Shadow Overlay Buttons (Play/Pause, Next, previous, Fast forward & Rewind buttons)
%group gHideVideoPlayerShadowOverlayButtons
%hook YTMainAppControlsOverlayView
- (void)layoutSubviews {
%orig();
MSHookIvar<YTTransportControlsButtonView *>(self, "_previousButtonView").backgroundColor = nil;
MSHookIvar<YTTransportControlsButtonView *>(self, "_nextButtonView").backgroundColor = nil;
MSHookIvar<YTTransportControlsButtonView *>(self, "_seekBackwardAccessibilityButtonView").backgroundColor = nil;
MSHookIvar<YTTransportControlsButtonView *>(self, "_seekForwardAccessibilityButtonView").backgroundColor = nil;
MSHookIvar<YTPlaybackButton *>(self, "_playPauseButton").backgroundColor = nil;
}
%end
%end
// Bring back the Red Progress Bar and Gray Buffer Progress
%group gRedProgressBar
%hook YTInlinePlayerBarContainerView
- (id)quietProgressBarColor {
return IsEnabled(@"redProgressBar_enabled") ? [UIColor redColor] : %orig;
return [UIColor redColor];
}
%end
%hook YTSegmentableInlinePlayerBarView
- (void)setBufferedProgressBarColor:(id)arg1 {
[UIColor colorWithRed:1.00 green:1.00 blue:1.00 alpha:0.90];
}
%end
%end
// Disable the right panel in fullscreen mode
%hook YTColdConfig
- (BOOL)isLandscapeEngagementPanelEnabled {
@ -571,297 +757,6 @@ static void replaceTab(YTIGuideResponse *response) {
}
%end
// Theme Options
// Old dark theme (gray)
%group gOldDarkTheme
%hook YTColdConfig
- (BOOL)uiSystemsClientGlobalConfigUseDarkerPaletteBgColorForNative { return NO; }
- (BOOL)uiSystemsClientGlobalConfigUseDarkerPaletteTextColorForNative { return NO; }
- (BOOL)enableCinematicContainerOnClient { return NO; }
%end
%hook _ASDisplayView
- (void)didMoveToWindow {
%orig;
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.comment_composer"]) { self.backgroundColor = [UIColor clearColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.video_list_entry"]) { self.backgroundColor = [UIColor clearColor]; }
}
%end
%hook ASCollectionView
- (void)didMoveToWindow {
%orig;
self.superview.backgroundColor = [UIColor colorWithRed:0.129 green:0.129 blue:0.129 alpha:1.0];
}
%end
%hook YTFullscreenEngagementOverlayView
- (void)didMoveToWindow {
%orig;
self.subviews[0].backgroundColor = [UIColor clearColor];
}
%end
%hook YTRelatedVideosView
- (void)didMoveToWindow {
%orig;
self.subviews[0].backgroundColor = [UIColor clearColor];
}
%end
%end
// OLED dark mode by BandarHL
UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha:1.0];
%group gOLED
%hook YTCommonColorPalette
- (UIColor *)brandBackgroundSolid {
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
}
- (UIColor *)brandBackgroundPrimary {
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
}
- (UIColor *)brandBackgroundSecondary {
return self.pageStyle == 1 ? [[UIColor blackColor] colorWithAlphaComponent:0.9] : %orig;
}
- (UIColor *)raisedBackground {
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
}
- (UIColor *)staticBrandBlack {
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
}
- (UIColor *)generalBackgroundA {
return self.pageStyle == 1 ? [UIColor blackColor] : %orig;
}
%end
%hook YTInnerTubeCollectionViewController
- (UIColor *)backgroundColor:(NSInteger)pageStyle {
return pageStyle == 1 ? [UIColor blackColor] : %orig;
}
%end
// Explore
%hook ASScrollView
- (void)didMoveToWindow {
%orig;
if (isDarkMode()) {
self.backgroundColor = [UIColor clearColor];
}
}
%end
// Your videos
%hook ASCollectionView
- (void)didMoveToWindow {
%orig;
if (isDarkMode() && [self.nextResponder isKindOfClass:%c(_ASDisplayView)]) {
self.superview.backgroundColor = [UIColor blackColor];
}
}
%end
// Sub menu?
%hook ELMView
- (void)didMoveToWindow {
%orig;
if (isDarkMode()) {
self.subviews[0].backgroundColor = [UIColor clearColor];
}
}
%end
// iSponsorBlock
%hook SponsorBlockSettingsController
- (void)viewDidLoad {
if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {
%orig;
self.tableView.backgroundColor = [UIColor blackColor];
} else { return %orig; }
}
%end
%hook SponsorBlockViewController
- (void)viewDidLoad {
if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {
%orig;
self.view.backgroundColor = [UIColor blackColor];
} else { return %orig; }
}
%end
// Search View
%hook YTSearchBarView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
}
%end
// History Search view
%hook YTSearchBoxView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
}
%end
// Comment view
%hook YTCommentView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
}
%end
%hook YTCreateCommentAccessoryView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
}
%end
%hook YTCreateCommentTextView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
}
- (void)setTextColor:(UIColor *)color { // fix black text in #Shorts video's comment
return isDarkMode() ? %orig([UIColor whiteColor]) : %orig;
}
%end
%hook YTCommentDetailHeaderCell
- (void)didMoveToWindow {
%orig;
if (isDarkMode()) {
self.subviews[2].backgroundColor = [UIColor blackColor];
}
}
%end
%hook YTFormattedStringLabel // YT is werid...
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig([UIColor clearColor]) : %orig;
}
%end
// Live chat comment
%hook YCHLiveChatActionPanelView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
}
%end
%hook YTEmojiTextView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
}
%end
%hook YCHLiveChatView
- (void)didMoveToWindow {
%orig;
if (isDarkMode()) {
self.subviews[1].backgroundColor = [UIColor blackColor];
}
}
%end
%hook YTCollectionView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
}
%end
//
%hook YTBackstageCreateRepostDetailView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig([UIColor blackColor]) : %orig;
}
%end
// Others
%hook _ASDisplayView
- (void)didMoveToWindow {
%orig;
if (isDarkMode()) {
if ([self.nextResponder isKindOfClass:%c(ASScrollView)]) { self.backgroundColor = [UIColor clearColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"eml.cvr"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"eml.live_chat_text_message"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"rich_header"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.ui.comment_cell"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.ui.cancel.button"]) { self.superview.backgroundColor = [UIColor clearColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.comment_composer"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.video_list_entry"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.guidelines_text"]) { self.superview.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_bottom_sheet_container"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.channel_guidelines_entry_banner_container"]) { self.backgroundColor = [UIColor blackColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.comment.comment_group_detail_container"]) { self.backgroundColor = [UIColor clearColor]; }
}
}
%end
// Open link with...
%hook ASWAppSwitchingSheetHeaderView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig(raisedColor) : %orig;
}
%end
%hook ASWAppSwitchingSheetFooterView
- (void)setBackgroundColor:(UIColor *)color {
return isDarkMode() ? %orig(raisedColor) : %orig;
}
%end
%hook ASWAppSwitcherCollectionViewCell
- (void)didMoveToWindow {
%orig;
if (isDarkMode()) {
self.backgroundColor = raisedColor;
self.subviews[1].backgroundColor = raisedColor;
self.superview.backgroundColor = raisedColor;
}
}
%end
// Incompatibility with the new YT Dark theme
%hook YTColdConfig
- (BOOL)uiSystemsClientGlobalConfigUseDarkerPaletteBgColorForNative { return NO; }
%end
%end
// OLED keyboard by @ichitaso <3 - http://gist.github.com/ichitaso/935100fd53a26f18a9060f7195a1be0e
%group gOLEDKB
%hook UIPredictionViewController
- (void)loadView {
%orig;
[self.view setBackgroundColor:[UIColor blackColor]];
}
%end
%hook UICandidateViewController
- (void)loadView {
%orig;
[self.view setBackgroundColor:[UIColor blackColor]];
}
%end
%hook UIKeyboardDockView
- (void)didMoveToWindow {
%orig;
self.backgroundColor = [UIColor blackColor];
}
%end
%hook UIKeyboardLayoutStar
- (void)didMoveToWindow {
%orig;
self.backgroundColor = [UIColor blackColor];
}
%end
%hook UIKBRenderConfig // Prediction text color
- (void)setLightKeyboard:(BOOL)arg1 { %orig(NO); }
%end
%end
// Miscellaneous
// Disable hints - https://github.com/LillieH001/YouTube-Reborn/blob/v4/
%group gDisableHints
@ -883,6 +778,13 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha:
%end
%end
// Stick Navigation bar
%group gStickNavigationBar
%hook YTHeaderView
- (BOOL)stickyNavHeaderEnabled { return YES; }
%end
%end
// Hide the Chip Bar (Upper Bar) in Home feed
%group gHideChipBar
%hook YTMySubsFilterHeaderView
@ -896,6 +798,14 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha:
%hook YTHeaderContentComboView
- (void)setFeedHeaderScrollMode:(int)arg1 { %orig(0); }
%end
// Hide the chip bar under the video player?
// %hook YTChipCloudCell //
// - (void)didMoveToWindow {
// %orig;
// self.hidden = YES;
// }
// %end
%end
%group giPhoneLayout
@ -911,12 +821,12 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha:
%end
%hook UIKBTree
- (long long)nativeIdiom {
return YES;
return NO;
}
%end
%hook UIKBRenderer
- (long long)assetIdiom {
return YES;
return NO;
}
%end
%end
@ -934,59 +844,83 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha:
// dlopen([[NSString stringWithFormat:@"%@/Frameworks/uYou.dylib", [[NSBundle mainBundle] bundlePath]] UTF8String], RTLD_LAZY);
%init;
if (@available(iOS 16, *)) {
%init(iOS16);
}
if (IsEnabled(@"reExplore_enabled")) {
%init(gReExplore);
}
if (IsEnabled(@"bigYTMiniPlayer_enabled") && (UIDevice.currentDevice.userInterfaceIdiom != UIUserInterfaceIdiomPad)) {
%init(Main);
}
if (IsEnabled(@"hideSubscriptionsNotificationBadge_enabled")) {
%init(gHideSubscriptionsNotificationBadge);
}
if (IsEnabled(@"hidePreviousAndNextButton_enabled")) {
%init(gHidePreviousAndNextButton);
}
if (IsEnabled(@"replacePreviousAndNextButton_enabled")) {
%init(gReplacePreviousAndNextButton);
}
if (oledDarkTheme()) {
%init(gOLED);
if (IsEnabled(@"hideOverlayDarkBackground_enabled")) {
%init(gHideOverlayDarkBackground);
}
if (oldDarkTheme()) {
%init(gOldDarkTheme)
if (IsEnabled(@"hideVideoPlayerShadowOverlayButtons_enabled")) {
%init(gHideVideoPlayerShadowOverlayButtons);
}
if (IsEnabled(@"oledKeyBoard_enabled")) {
%init(gOLEDKB);
if (IsEnabled(@"hidePlayNextInQueue_enabled")) {
%init(gHidePlayNextInQueue);
}
if (IsEnabled(@"disableWifiRelatedSettings_enabled")) {
%init(gDisableWifiRelatedSettings);
}
if (IsEnabled(@"disableHints_enabled")) {
%init(gDisableHints);
}
if (IsEnabled(@"redProgressBar_enabled")) {
%init(gRedProgressBar);
}
if (IsEnabled(@"stickNavigationBar_enabled")) {
%init(gStickNavigationBar);
}
if (IsEnabled(@"hideChipBar_enabled")) {
%init(gHideChipBar);
}
if (IsEnabled(@"ytSpeed_enabled")) {
%init(gYTSpeed);
}
if (IsEnabled(@"portraitFullscreen_enabled")) {
%init(gPortraitFullscreen);
}
if (IsEnabled(@"iPhoneLayout_enabled") && (UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad)) {
%init(giPhoneLayout);
}
if (IsEnabled(@"stockVolumeHUD_enabled")) {
%init(gStockVolumeHUD);
}
if (IsEnabled(@"hideYouTubeLogo_enabled")) {
%init(gHideYouTubeLogo);
}
if (IsEnabled(@"hideHeatwaves_enabled")) {
%init(gHideHeatwaves);
}
if (IsEnabled(@"ytNoModernUI_enabled")) {
%init(gYTNoModernUI);
}
// Disable updates
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"automaticallyCheckForUpdates"];
// Don't show uYou's welcome screen cuz it's currently broken (fix #1147)
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"showedWelcomeVC"];
// Disable broken options of uYou
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"disableAgeRestriction"];
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"disableAgeRestriction"]; // Disable Age Restriction Disabled - Reason is the same as above.
// Change the default value of some options
NSArray *allKeys = [[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys];
if (![allKeys containsObject:@"relatedVideosAtTheEndOfYTVideos"]) {
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"relatedVideosAtTheEndOfYTVideos"];
}
if (![allKeys containsObject:@"shortsProgressBar"]) {
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"shortsProgressBar"];
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"shortsProgressBar"];
}
if (![allKeys containsObject:@"RYD-ENABLED"]) {
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"RYD-ENABLED"];