Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
3bdfb73
Recreated 99% of ytlite features
daisuke1227 May 4, 2026
411d811
fixed everything i was told hope it works
daisuke1227 May 4, 2026
956a29f
made the skipping more better
daisuke1227 May 4, 2026
c76e4a2
OKAY HOPEFULLY THIS IS GOOD
daisuke1227 May 4, 2026
7ad6158
removed skip to segment its useless
daisuke1227 May 4, 2026
da2e35e
Add FFmpeg built-in to the tweak
Tonwalter888 May 4, 2026
cd097ea
Remove some features
Tonwalter888 May 4, 2026
dfde7c1
Remove unworkable settings
Tonwalter888 May 4, 2026
375b85f
Cleanup headers and values
Tonwalter888 May 4, 2026
c76a22d
Try to make things work as much as possible
Tonwalter888 May 4, 2026
1efa751
Cleanup
Tonwalter888 May 4, 2026
a9c137c
Bump version\
Tonwalter888 May 4, 2026
65a5bbc
Update Player.x
Tonwalter888 May 4, 2026
847f515
Rename YTLiteExtras.x to Extras.x
Tonwalter888 May 4, 2026
92be0af
Fix errors
Tonwalter888 May 4, 2026
af334ad
Try to fix errors
Tonwalter888 May 4, 2026
7389f88
oh
Tonwalter888 May 4, 2026
5fb04a4
oh
Tonwalter888 May 4, 2026
0705d26
oh
Tonwalter888 May 4, 2026
a71010e
Update Extras.x
Tonwalter888 May 4, 2026
a15d4ff
:(
Tonwalter888 May 4, 2026
73c930f
Update Extras.x
Tonwalter888 May 4, 2026
e4d401f
oh
Tonwalter888 May 4, 2026
7fee03f
Update Tabbar.x
Tonwalter888 May 4, 2026
13bce4a
Update YouModPerferences.x
Tonwalter888 May 4, 2026
7c3e3ee
Update YouModPerferences.x
Tonwalter888 May 4, 2026
a9d0787
Update Headers.h
Tonwalter888 May 4, 2026
03cb5ac
Update Download.x
Tonwalter888 May 5, 2026
ecae97a
Merge branch 'Tonwalter888:main' into main
daisuke1227 May 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
path: YouMod

- name: Install dependencies
run: brew install make ldid
run: brew install make ldid dpkg

- name: Set PATH environment variables
run: |
Expand Down Expand Up @@ -61,6 +61,9 @@ jobs:
git checkout --quiet
mv *.sdk "$THEOS/sdks"

- name: Fix Theos od broken pipe issue
run: sed -i '' 's/od -c "$i" | head/od -c "$i" 2>\/dev\/null | head/g' $THEOS/bin/convert_xml_plist.sh || true

- name: Clone headers
run: |
if [ ! -d "$THEOS/include/YouTubeHeader" ]; then
Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/ipa.yml
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ jobs:
echo "YT_VERSION=$(grep -A 1 '<key>CFBundleVersion</key>' ytextracted/Payload/YouTube.app/Info.plist | grep '<string>' | awk -F'[><]' '{print $3}')" >> $GITHUB_ENV

- name: Install Dependencies
run: brew install make ldid swiftlint
run: brew install make ldid dpkg swiftlint

- name: Set PATH Environment Variables
run: |
Expand Down Expand Up @@ -197,6 +197,9 @@ jobs:
git checkout --quiet
mv *.sdk "$THEOS/sdks"

- name: Fix Theos od broken pipe issue
run: sed -i '' 's/od -c "$i" | head/od -c "$i" 2>\/dev\/null | head/g' $THEOS/bin/convert_xml_plist.sh || true

- name: Clone headers
run: |
if [ ! -d "$THEOS/include/YouTubeHeader" ]; then
Expand Down
2,413 changes: 2,413 additions & 0 deletions Files/Download.x

Large diffs are not rendered by default.

1,116 changes: 1,116 additions & 0 deletions Files/Extras.x

Large diffs are not rendered by default.

84 changes: 79 additions & 5 deletions Files/Headers.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#import <YouTubeHeader/YTWatchController.h>
#import <YouTubeHeader/YTIMenuConditionalServiceItemRenderer.h>
#import <YouTubeHeader/YTIPivotBarRenderer.h>
#import <YouTubeHeader/YTIBrowseRequest.h>
#import <YouTubeHeader/YTPivotBarItemView.h>
#import <YouTubeHeader/YTActionSheetAction.h>
#import <YouTubeHeader/YTIMenuItemSupportedRenderers.h>
Expand All @@ -35,7 +36,10 @@
#import <YouTubeHeader/YTPlayerView.h>
#import <YouTubeHeader/YTLabel.h>
#import <YouTubeHeader/YTCommonColorPalette.h>
#import <YouTubeHeader/MLFormat.h>
#import <YouTubeHeader/MLQuickMenuVideoQualitySettingFormatConstraint.h>
#import <MediaPlayer/MediaPlayer.h>
#import <objc/runtime.h>
#import <dlfcn.h>

// For Settings.x
Expand Down Expand Up @@ -108,14 +112,31 @@
#define DisableHints @"YouModDisableHints"
#define ForceMiniPlayer @"YouModForceMiniPlayer"
#define AlwaysShowSeekbar @"YouModAlwaysShowSeekbar"
#define PersistentProgressBar @"YouModPersistentProgressBar"
#define StockVolumeHUD @"YouModStockVolumeHUD"
#define RedProgressBar @"YouModRedProgressBar"
#define PauseOnOverlay @"YouModPauseOnOverlay"
#define NoTwoFingerSnapToChapter @"YouModNoTwoFingerSnapToChapter"
#define NoFreeZoom @"YouModNoFreeZoom"
#define VideoEndTime @"YouModVideoEndTime"
#define Use24HourTime @"YouModUse24HourTime"
#define CopyWithTimestamp @"YouModCopyWithTimestamp"
#define HoldToSpeedIndex @"YouModHoldToSpeedIndex"
#define DefaultPlaybackRateIndex @"YouModDefaultPlaybackRateIndex"
#define AutoQualityWiFiIndex @"YouModAutoQualityWiFiIndex"
#define AutoQualityCellularIndex @"YouModAutoQualityCellularIndex"
#define HideLikeButton @"YouModHideLikeButton"
#define HideDisLikeButton @"YouModHideDisLikeButton"
#define HideShareButton @"YouModHideShareButton"
#define HideDownloadButton @"YouModHideDownloadButton"
#define HideClipButton @"YouModHideClipButton"
#define HideRemixButton @"YouModHideRemixButton"
#define HideSaveButton @"YouModHideSaveButton"
// Shorts

#define DownloadManager @"YouModDownloadManager"
#define DownloadSaveToPhotos @"YouModDownloadSaveToPhotos"
#define DownloadPreferDRCAudio @"YouModDownloadPreferDRCAudio"

#define HideShortsLikeButton @"YouModHideShortsLikeButton"
#define HideShortsDisLikeButton @"YouModHideShortsDisLikeButton"
#define HideShortsCommentButton @"YouModHideShortsCommentButton"
Expand All @@ -132,15 +153,32 @@
#define HideShortsToVideo @"YouModHideShortsToVideo"
#define EnablesShortsQuality @"YouModEnablesShortsQuality"
#define ShowShortsSeekbar @"YouModShowShortsSeekbar"
// Tab bar
#define ShortsOnlyMode @"YouModShortsOnlyMode"
#define AutoSkipShorts @"YouModAutoSkipShorts"
#define ShortsToRegular @"YouModShortsToRegular"
#define ResumeShorts @"YouModResumeShorts"
#define PinchToFullscreenShorts @"YouModPinchToFullscreenShorts"
#define HideShortsLogo @"YouModHideShortsLogo"
#define HideShortsSearchButton @"YouModHideShortsSearchButton"
#define HideShortsCameraButton @"YouModHideShortsCameraButton"
#define HideShortsMoreButton @"YouModHideShortsMoreButton"
#define HideShortsAvatar @"YouModHideShortsAvatar"
#define HideShortsChannelName @"YouModHideShortsChannelName"
#define HideShortsDescription @"YouModHideShortsDescription"
#define HideShortsAudioTrack @"YouModHideShortsAudioTrack"
#define HideShortsPromoCards @"YouModHideShortsPromoCards"
#define HideShortsThanks @"YouModHideShortsThanks"
#define HideShortsSource @"YouModHideShortsSource"

#define DefaultTab @"YouModDefaultStartupTab"
#define HideTabIndi @"YouModHideTabIndicators"
#define HideTabLabels @"YouModHideTabLabels"
#define HideHomeTab @"YouModHideHomeTab"
#define HideShortsTab @"YouModHideShortsTab"
#define HideCreateButton @"YouModHideCreateButton"
#define HideSubscriptTab @"YouModHideSubscriptionsTab"
// Miscellaneous
// #define HideLibraryTab @"YouModHideLibraryTab"

#define BackgroundPlayback @"YouModEnablesBackgroundPlayback"
#define DisablesShortsPiP @"YouModTrytoDisablesShortsPiP"
#define BlockUpgradeDialogs @"YouModBlockUpgradeDialogs"
Expand All @@ -151,7 +189,26 @@
#define HideStartupAni @"YouModHideStartupAnimations"
#define HidePlayInNextQueue @"YouModHidePlayInNextQueue"
#define HideLikeDislikeVotes @"YouModHideLikeDislikeVotes"
// #define CustomStartup @"YouModUseCustomVideoStartup"
#define NativeShare @"YouModNativeShare"
#define CopyVideoInfoPanel @"YouModCopyVideoInfoPanel"
#define PostManager @"YouModPostManager"
#define SaveProfilePhoto @"YouModSaveProfilePhoto"
#define CommentManager @"YouModCommentManager"
#define FixAlbums @"YouModFixAlbums"
#define RemoveDownloadMenu @"YouModRemoveDownloadMenu"
#define RemoveWatchLaterMenu @"YouModRemoveWatchLaterMenu"
#define RemoveSaveToPlaylistMenu @"YouModRemoveSaveToPlaylistMenu"
#define RemoveShareMenu @"YouModRemoveShareMenu"
#define RemoveNotInterestedMenu @"YouModRemoveNotInterestedMenu"
#define RemoveDontRecommendMenu @"YouModRemoveDontRecommendMenu"
#define RemoveReportMenu @"YouModRemoveReportMenu"
#define HideContinueWatching @"YouModHideContinueWatching"
#define HideRelatedWatchNexts @"YouModHideRelatedWatchNexts"
#define StickSortComments @"YouModStickSortComments"
#define HideSortComments @"YouModHideSortComments"
#define PlaylistOldMinibar @"YouModPlaylistOldMinibar"
#define DisableRTL @"YouModDisableRTL"
#define SleepTimerEnabled @"YouModSleepTimerEnabled"

#define YT_BUNDLE_ID @"com.google.ios.youtube"
#define YT_NAME @"YouTube"
Expand Down Expand Up @@ -194,9 +251,15 @@ typedef NS_ENUM(NSUInteger, GestureSection) {
@end

@interface YTPivotBarViewController : UIViewController
@property (nonatomic, weak, readwrite) UIViewController *parentViewController;
- (void)selectItemWithPivotIdentifier:(id)pivotIndentifier;
@end

@interface YTAppViewController : UIViewController
- (void)hidePivotBar;
- (void)showPivotBar;
@end

@interface YTPlayerViewController (YouMod) <UIGestureRecognizerDelegate>
@property (nonatomic, retain) UIPanGestureRecognizer *YouModPanGesture;
@property (nonatomic, retain) UILabel *YouModGestureHUD;
Expand Down Expand Up @@ -264,6 +327,8 @@ typedef NS_ENUM(NSUInteger, GestureSection) {

@interface YTMainAppVideoPlayerOverlayViewController (YouMod)
@property (nonatomic, strong, readwrite) YTPlayerBarController *playerBarController;
- (NSString *)videoID;
- (CGFloat)mediaTime;
@end

@interface YTInlinePlayerBarContainerView (YouMod)
Expand All @@ -275,4 +340,13 @@ typedef NS_ENUM(NSUInteger, GestureSection) {

@interface YTSingleVideoController (YouMod)
@property (nonatomic, assign, readonly) CGFloat totalMediaTime;
@end
@end

@interface YTReelContentView : UIView
@end

@interface YTImageZoomNode : NSObject
@end

@interface YTEngagementPanelView : UIView
@end
23 changes: 0 additions & 23 deletions Files/Others.x
Original file line number Diff line number Diff line change
Expand Up @@ -111,29 +111,6 @@ Class YTILikeResponseClass, YTIDislikeResponseClass, YTIRemoveLikeResponseClass;
}
%end

/* untested
// Remove Download button from the menu
%hook YTDefaultSheetController
- (void)addAction:(YTActionSheetAction *)action {
NSString *identifier = [action valueForKey:@"_accessibilityIdentifier"];

NSDictionary *actionsToRemove = @{
@"7": @(ytlBool(@"removeDownloadMenu")),
@"1": @(ytlBool(@"removeWatchLaterMenu")),
@"3": @(ytlBool(@"removeSaveToPlaylistMenu")),
@"5": @(ytlBool(@"removeShareMenu")),
@"12": @(ytlBool(@"removeNotInterestedMenu")),
@"31": @(ytlBool(@"removeDontRecommendMenu")),
@"58": @(ytlBool(@"removeReportMenu"))
};

if (![actionsToRemove[identifier] boolValue]) {
%orig;
}
}
%end
*/

// YTSlientVote (https://github.com/PoomSmart/YTSilentVote)
%group SlientVote
%hook YTInnerTubeResponseWrapper
Expand Down
31 changes: 24 additions & 7 deletions Files/Player.x
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
#import "Headers.h"

extern void YouModDownloadSetCurrentPlayer(YTPlayerViewController *player);
extern void YouModApplyYTLitePlaybackDefaults(YTPlayerViewController *player);
extern void YouModHandleYTLiteTimeUpdate(YTPlayerViewController *player, YTSingleVideoController *video, YTSingleVideoTime *time);

float playbackRate = 1.0;

/*
Expand Down Expand Up @@ -39,7 +43,7 @@ static void YouModAddEndTime(YTPlayerViewController *self, YTSingleVideoControll
- (void)setClosedCaptionsOrSubtitlesButtonAvailable:(BOOL)arg1 { if (!IS_ENABLED(HideCaptionsButton)) %orig; }
- (void)setPreviousButtonHidden:(BOOL)arg { IS_ENABLED(HidePrevButton) ? %orig(YES) : %orig; }
- (void)setNextButtonHidden:(BOOL)arg { IS_ENABLED(HideNextButton) ? %orig(YES) : %orig; }
// Hide video title in full screen

- (BOOL)titleViewHidden { return IS_ENABLED(HideFullvidTitle) ? YES : %orig; }
%end

Expand Down Expand Up @@ -92,9 +96,10 @@ static void YouModAddEndTime(YTPlayerViewController *self, YTSingleVideoControll
%end

%hook YTMainAppVideoPlayerOverlayViewController
// Disable Double Tap To Seek

- (BOOL)allowDoubleTapToSeekGestureRecognizer { return IS_ENABLED(DisablesDoubleTap) ? NO : %orig; }
// Disable long hold
- (BOOL)allowTwoFingerDoubleTapGestureRecognizer { return IS_ENABLED(NoTwoFingerSnapToChapter) ? NO : %orig; }

- (BOOL)allowLongPressGestureRecognizerInView:(id)arg { return IS_ENABLED(DisablesLongHold) ? NO : %orig; }
%end

Expand Down Expand Up @@ -176,9 +181,9 @@ static void YouModAddEndTime(YTPlayerViewController *self, YTSingleVideoControll
- (void)showConfirmAlert { IS_ENABLED(HideContentWarning) ? [self confirmAlertDidPressConfirm] : %orig; }
%end

// Always show seekbar

%hook YTInlinePlayerBarContainerView
- (void)setPlayerBarAlpha:(CGFloat)alpha { IS_ENABLED(AlwaysShowSeekbar) ? %orig(1.0) : %orig; }
- (void)setPlayerBarAlpha:(CGFloat)alpha { (IS_ENABLED(AlwaysShowSeekbar) || IS_ENABLED(PersistentProgressBar)) ? %orig(1.0) : %orig; }
%end

// Portrait Fullscreen
Expand Down Expand Up @@ -311,15 +316,17 @@ static void YouModAddEndTime(YTPlayerViewController *self, YTSingleVideoControll
%hook YTPlayerViewController
- (void)loadWithPlayerTransition:(id)arg1 playbackConfig:(id)arg2 {
%orig;
YouModDownloadSetCurrentPlayer(self);
YouModApplyYTLitePlaybackDefaults(self);
if (IS_ENABLED(AutoFullScreen)) [self performSelector:@selector(YouModAutoFullscreen) withObject:nil afterDelay:0.75];
// if (ytlBool(@"shortsToRegular")) [self performSelector:@selector(shortsToRegular) withObject:nil afterDelay:0.75];
if (IS_ENABLED(DisablesCaptions)) [self performSelector:@selector(YouModTurnOffCaptions) withObject:nil afterDelay:1.0];
}

- (void)prepareToLoadWithPlayerTransition:(id)arg1 expectedLayout:(id)arg2 {
%orig;
YouModDownloadSetCurrentPlayer(self);
YouModApplyYTLitePlaybackDefaults(self);
if (IS_ENABLED(AutoFullScreen)) [self performSelector:@selector(YouModAutoFullscreen) withObject:nil afterDelay:0.75];
// if (ytlBool(@"shortsToRegular")) [self performSelector:@selector(shortsToRegular) withObject:nil afterDelay:0.75];
if (IS_ENABLED(DisablesCaptions)) [self performSelector:@selector(YouModTurnOffCaptions) withObject:nil afterDelay:1.0];
}

Expand Down Expand Up @@ -348,6 +355,16 @@ static void YouModAddEndTime(YTPlayerViewController *self, YTSingleVideoControll
}
*/

- (void)singleVideo:(YTSingleVideoController *)video currentVideoTimeDidChange:(YTSingleVideoTime *)time {
%orig;
YouModHandleYTLiteTimeUpdate(self, video, time);
}

- (void)potentiallyMutatedSingleVideo:(YTSingleVideoController *)video currentVideoTimeDidChange:(YTSingleVideoTime *)time {
%orig;
YouModHandleYTLiteTimeUpdate(self, video, time);
}

- (void)setPlaybackRate:(float)rate {
playbackRate = rate;
%orig;
Expand Down
Loading