diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md
index c72b57f..c6ec5da 100644
--- a/.github/ISSUE_TEMPLATE/bug.md
+++ b/.github/ISSUE_TEMPLATE/bug.md
@@ -27,6 +27,7 @@ _(Please attach videos or screenshots if possible)_
### Crash log (if possible)
_(The crash log can be found in the Settings app - Privacy - Analytics & Improvements - Analytics Data - Youtube...)_
+### Does the issue happen with the official YouTube from AppStore?
+_(Well, YouTube itself is buggy sometimes...)_
-### Additional context:
-
+### Additional context:
diff --git a/.github/workflows/buildapp.yml b/.github/workflows/buildapp.yml
index d707e72..4d40153 100644
--- a/.github/workflows/buildapp.yml
+++ b/.github/workflows/buildapp.yml
@@ -56,13 +56,10 @@ jobs:
path: theos
submodules: recursive
- - name: Download iOS 15 SDK
+ - name: Download iOS 15.5 SDK
run: |
- curl -LO https://github.com/chrisharper22/sdks/archive/main.zip
- TMP=$(mktemp -d)
- unzip -qq main.zip -d $TMP
- mv $TMP/sdks-main/*.sdk $THEOS/sdks
- rm -r main.zip $TMP
+ svn checkout -q https://github.com/chrisharper22/sdks/trunk/iPhoneOS15.5.sdk
+ mv *.sdk $THEOS/sdks
env:
THEOS: ${{ github.workspace }}/theos
diff --git a/Header.h b/Header.h
index b925c77..8e6718a 100644
--- a/Header.h
+++ b/Header.h
@@ -12,8 +12,8 @@
@interface YTMainAppControlsOverlayView : UIView
@end
-// @interface YTTransportControlsButtonView : UIView
-// @end
+@interface YTTransportControlsButtonView : UIView
+@end
@interface _ASCollectionViewCell : UICollectionViewCell
- (id)node;
diff --git a/README.md b/README.md
index 9393190..da4f1ca 100644
--- a/README.md
+++ b/README.md
@@ -21,7 +21,9 @@
- [PoomSmart](https://twitter.com/poomsmart) - the developer of many tweaks used by uYouPlus, see [Version info - Download](#download) for more details.
-- [level3tjg](https://twitter.com/level3tjg) - for [YTNoHoverCards](https://github.com/level3tjg/YTNoHoverCards) and [YTMiniplayerEnabler](https://github.com/level3tjg/YTMiniplayerEnabler).
+- [level3tjg](https://twitter.com/level3tjg) for [YTNoHoverCards](https://github.com/level3tjg/YTNoHoverCards), [YTMiniplayerEnabler](https://github.com/level3tjg/YTMiniplayerEnabler) and many hot patches for uYou.
+
+- [BandarHL](https://twitter.com/bandarhl) for a bunch of improvements.
- [Lyvendia](https://github.com/Lyvendia/) for [YTSpeed](https://github.com/Lyvendia/YTSpeed/)
@@ -29,6 +31,8 @@
- [theos team](https://github.com/theos/theos) for theos & theos-jailed.
+- Thanks to all the translators who have contributed to uYouPlus. Your contribution is highly appreciated!
+
# Features
1. **uYou:** uYou has a ton of features that I can't list them all. Visit [here](https://miro92.com/repo/depictions/?p=com.miro.uyou) for more info!
@@ -48,17 +52,15 @@
7. **YTNoHoverCards:** offer an option to enable/disable the annoying suggested videos show up at the end of the videos.
-8. **YTSystemAppearance**: sync the YouTube theme (dark/light) with the system theme.
+8. **YTNoCheckLocalNetwork**: block the Local Network permission popup.
-9. **YTNoCheckLocalNetwork**: block the Local Network permission popup.
+9. **YouRememberCaption**: make YouTube remember your video caption setting (if not already).
-10. **YouRememberCaption**: make YouTube remember your video caption setting (if not already).
+10. **NoYTPremium**: remove YouTube Premium upshells.
-11. **NoYTPremium**: remove YouTube Premium upshells.
+11. **YTSpeed**: add 2.25, 2.5, 2.75, and 3x playback speed
-12. **YTSpeed**: add 2.25, 2.5, 2.75, and 3x playback speed
-
-13. **YTMiniplayerEnabler**: enable Miniplayer for all YouTube videos.
+12. **YTMiniplayerEnabler**: enable Miniplayer for all YouTube videos.
@@ -76,16 +78,16 @@
- My official AltStore repo: https://qnblackcat.github.io/AltStore/
- - [Open in AltStore (v17.26.2-2.1)](https://tinyurl.com/2y86dh6b) - It will take a while to install because AltStore needs to download the IPA.
+ - [Open in AltStore (v17.30.3-2.1)](https://tinyurl.com/4usrjzzk) - It will take a while to install because AltStore needs to download the IPA.
-- Version info: _(last update: Jul 11)_
+- Version info: _(last update: Aug 05)_
Expand
| **Tweaks/App** | **Developer** | **Version** | **Open source** |
| - | - | :-: | :-: |
-| **YouTube** | Google Inc | 17.26.2 | ✖︎ |
+| **YouTube** | Google Inc | 17.30.3 | ✖︎ |
| [uYou](https://github.com/MiRO92/uYou-for-YouTube) | [MiRO92](https://twitter.com/miro92) | 2.1 | ✖︎ |
| [Open in YouTube](https://github.com/CokePokes/YoutubeExtensions) | [CokePokes](https://github.com/CokePokes) | 1.2 | ✖︎ |
| **iSponsorBlock** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.0-14 | [✔︎](https://github.com/Galactic-Dev/iSponsorBlock) |
@@ -103,7 +105,6 @@
| **YTNoPaidPromo** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.0 | [✔︎](https://github.com/PoomSmart/YTNoPaidPromo) |
| **YTAutoFullScreen** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.3 | [✔︎](https://github.com/PoomSmart/YTAutoFullScreen) |
| **YouRememberCaption** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.0 | [✔︎](https://poomsmart.github.io/repo/depictions/youremembercaption.html) |
-| **YTSystemAppearance** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.0 | [✔︎](https://poomsmart.github.io/repo/depictions/ytsystemappearance.html) |
| **YTClassicVideoQuality** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.1 | [✔︎](https://github.com/PoomSmart/YTClassicVideoQuality) |
| **Return YouTube Dislike** | [PoomSmart](https://twitter.com/poomsmart) | 1.6.5 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) |
| **YTNoCheckLocalNetwork** | [PoomSmart](https://twitter.com/poomsmart) | 1.0.2 | [✔︎](https://poomsmart.github.io/repo/depictions/ytnochecklocalnetwork.html) |
@@ -130,6 +131,12 @@ See [Installation - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/Installati
+
+ Bandar Alruwaili (BandarHL)
+
+- Paypal: https://www.paypal.com/paypalme/BandarHL
+
+
Galactic-dev
diff --git a/Settings.xm b/Settings.xm
index f5f737b..b1ac918 100644
--- a/Settings.xm
+++ b/Settings.xm
@@ -42,6 +42,15 @@ extern BOOL hidePaidPromotionCard();
YTSettingsViewController *delegate = [self valueForKey:@"_dataDelegate"];
NSBundle *tweakBundle = uYouPlusBundle();
+ YTSettingsSectionItem *killApp = [%c(YTSettingsSectionItem) // https://github.com/PoomSmart/YTABConfig/blob/b74d7f28151c407cffc21cce12908c49e9e65999/Tweak.x#L76
+ itemWithTitle:LOC(@"KILL_APP")
+ titleDescription:LOC(@"KILL_APP_DESC")
+ accessibilityIdentifier:nil
+ detailTextBlock:nil
+ selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) {
+ exit(0);
+ }];
+
YTSettingsSectionItem *hidePaidPromotionCard = [[%c(YTSettingsSectionItem) alloc] initWithTitle:LOC(@"HIDE_PAID_PROMOTION_CARDS") titleDescription:LOC(@"HIDE_PAID_PROMOTION_CARDS_DESC")];
hidePaidPromotionCard.hasSwitch = YES;
hidePaidPromotionCard.switchVisible = YES;
@@ -159,7 +168,7 @@ extern BOOL hidePaidPromotionCard();
return YES;
};
- NSMutableArray *sectionItems = [NSMutableArray arrayWithArray:@[autoFull, castConfirm, ytMiniPlayer, hideAutoplaySwitch, hideCC, hideHUD, hidePaidPromotionCard, hidePreviousAndNextButton, hideHoverCard, bigYTMiniPlayer, oledDarkMode, oledKeyBoard, reExplore]];
+ NSMutableArray *sectionItems = [NSMutableArray arrayWithArray:@[killApp, autoFull, castConfirm, ytMiniPlayer, hideAutoplaySwitch, hideCC, hideHUD, hidePaidPromotionCard, hidePreviousAndNextButton, hideHoverCard, bigYTMiniPlayer, oledDarkMode, oledKeyBoard, reExplore]];
[delegate setSectionItems:sectionItems forCategory:uYouPlusSection title:@"uYouPlus" titleDescription:nil headerHidden:NO];
}
diff --git a/Tweaks/Alderis b/Tweaks/Alderis
index 978ca5c..c5b3ed5 160000
--- a/Tweaks/Alderis
+++ b/Tweaks/Alderis
@@ -1 +1 @@
-Subproject commit 978ca5c48372c6047e06e26860839bf82a2e6da1
+Subproject commit c5b3ed5761b49542bd9bb8f011d97e68ab5ed293
diff --git a/Tweaks/Return-YouTube-Dislikes b/Tweaks/Return-YouTube-Dislikes
index 5f86ef7..deae67a 160000
--- a/Tweaks/Return-YouTube-Dislikes
+++ b/Tweaks/Return-YouTube-Dislikes
@@ -1 +1 @@
-Subproject commit 5f86ef7d91c984f3797902e230f3e542ba231b6d
+Subproject commit deae67afeacfd6ab9ee12552a1eb2220c97f4607
diff --git a/Tweaks/YTSpeed b/Tweaks/YTSpeed
index 7c11d9c..3fec2df 160000
--- a/Tweaks/YTSpeed
+++ b/Tweaks/YTSpeed
@@ -1 +1 @@
-Subproject commit 7c11d9c91686c6ea205bebf50e6ffc283be6d482
+Subproject commit 3fec2dfcf0714a23e96d3cf523c7e86c019c2020
diff --git a/Tweaks/YTUHD b/Tweaks/YTUHD
index 5f4f9cf..b0d24c0 160000
--- a/Tweaks/YTUHD
+++ b/Tweaks/YTUHD
@@ -1 +1 @@
-Subproject commit 5f4f9cf1f051eb6d8774155a791b5c8522397321
+Subproject commit b0d24c0859f24c714334b60154ceaef9c09fb663
diff --git a/Tweaks/YouPiP b/Tweaks/YouPiP
index 9ce79c2..a8c4224 160000
--- a/Tweaks/YouPiP
+++ b/Tweaks/YouPiP
@@ -1 +1 @@
-Subproject commit 9ce79c280cb0965155717d8216dfc91fe9525e5b
+Subproject commit a8c4224f7d44cb81efd9bf8075cd25aefa327f7f
diff --git a/Tweaks/YouTubeHeader b/Tweaks/YouTubeHeader
index c34699b..291a6cf 160000
--- a/Tweaks/YouTubeHeader
+++ b/Tweaks/YouTubeHeader
@@ -1 +1 @@
-Subproject commit c34699b33c6f5dbfd59e1a0ed3023ca41cb831bd
+Subproject commit 291a6cfaa0d6c029790025d4b31c2104bb930c89
diff --git a/Tweaks/iSponsorBlock b/Tweaks/iSponsorBlock
index a936217..09a485c 160000
--- a/Tweaks/iSponsorBlock
+++ b/Tweaks/iSponsorBlock
@@ -1 +1 @@
-Subproject commit a936217c38ee0786ab5787935b905090056e717f
+Subproject commit 09a485c8a085cc599c3ca2c1b3f2a377ec0d4711
diff --git a/lang/uYouPlus.bundle/cz.lproj/Localizable.strings b/lang/uYouPlus.bundle/cz.lproj/Localizable.strings
new file mode 100644
index 0000000..c600782
--- /dev/null
+++ b/lang/uYouPlus.bundle/cz.lproj/Localizable.strings
@@ -0,0 +1,58 @@
+// How to translate uYouPlus to your languate:
+//
+// 1. Fork uYouPlus repo
+// 2. Duplicate the template.lproj folder, and edit the duplicated folder's name to your .lproj id.
+// For example: for Russia. For more details, visit: https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes
+// 3. Translate each line below after each =
+// 4. Open a Pull Request
+//
+// If your language already exists then feel free to check it and/or improve it!
+// You can also add your localiztion to YouPiP here, the process is the same
+// https://github.com/PoomSmart/YouPiP/tree/main/layout/Library/Application%20Support/YouPiP.bundle
+//
+// Settings
+
+"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Skrýt tlačítka předchozí a následující";
+"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Skryje tlačítka předchozí a následující v překrytí ovládání videa.";
+
+"YT_MINIPLAYER" = "Povolit Minipřehrávač pro všechna videa";
+"YT_MINIPLAYER_DESC" = "Například u videa pro děti";
+
+"CAST_CONFIRM" = "Zobrazit potvrzení před začátkem sdílení obrazu (YTCastConfirm)";
+"CAST_CONFIRM_DESC" = "Zobrazí potvrzení aby se zamezilo nechtěnému sdílení do televize.";
+
+"HIDE_HOVER_CARD" = "Skrýt karty na konci videa (YTNoHoverCards)";
+"HIDE_HOVER_CARD_DESC" = "Skryje náhledy jiných videjí na konci videa.";
+
+"NEW_MINIPLAYER_STYLE" = "Nový styl minipřehrávače (BigYTMiniPlayer)";
+"NEW_MINIPLAYER_STYLE_DESC" = "Je potřeba restart aplikace.";
+
+"YT_RE_EXPLORE" = "Nahradit záložku Shorts tab záložkou Explore (YTReExplore)";
+"YT_RE_EXPLORE_DESC" = "Je potřeba restart aplikace.";
+
+"HIDE_SUBTITLES_BUTTON" = "Skrýt tlačítko titulky";
+"HIDE_SUBTITLES_BUTTON_DESC" = "Skryje tlačítko titulky v překrytí ovládání videa.";
+
+"HIDE_AUTOPLAY_SWITCH" = "Skrýt přepínač automatického přehrávání";
+"HIDE_AUTOPLAY_SWITCH_DESC" = "Skryje přepínač automatického přehrávání v překrytí ovládání videa.";
+
+"AUTO_FULLSCREEN" = "Přes celou obrazovku (YTAutoFullScreen)";
+"AUTO_FULLSCREEN_DESC" = "Automaticky spouští videa přes celou obrazovku.";
+
+"HIDE_HUD_MESSAGES" = "Skrýt vyskakující zprávy";
+"HIDE_HUD_MESSAGES_DESC" = "Příklad: Titulky zapnuty/vypnuty, Smyčka videa zapnuta,...";
+
+"OLED_DARKMODE" = "Tmavý OLED režim (Experimentální)";
+"OLED_DARKMODE_DESC" = "Mohou se vyskytnout chyby. Je potřeba restart aplikace.";
+
+"OLED_KEYBOARD" = "OLED Klávesnice (Experimentální)";
+"OLED_KEYBOARD_DESC" = "Mohou se vyskytnout chyby. Je potřeba restart aplikace.";
+
+"HIDE_PAID_PROMOTION_CARDS" = "Skrýt kartu placené propagace";
+"HIDE_PAID_PROMOTION_CARDS_DESC" = "Skryje 'Obsahuje placenou propagaci' u některých videjí.";
+
+// YTCastConfirm
+"CASTING" = "Sdílení obrazu";
+"MSG_ARE_YOU_SURE" = "Opravdu chcete začít sdílet obraz?";
+"MSG_YES" = "Ano";
+"MSG_CANCEL" = "Zrušit";
\ No newline at end of file
diff --git a/lang/uYouPlus.bundle/de.lproj/Localizable.strings b/lang/uYouPlus.bundle/de.lproj/Localizable.strings
index 66a8ff7..b825e5a 100644
--- a/lang/uYouPlus.bundle/de.lproj/Localizable.strings
+++ b/lang/uYouPlus.bundle/de.lproj/Localizable.strings
@@ -1,53 +1,46 @@
-// How to translate uYouPlus to your languate:
- //
- // 1. Fork uYouPlus repo
- // 2. Duplicate the template.lproj folder, and edit the duplicated folder's name to your .lproj id. For example: ru.lproj
- // for Russia. For more details, visit: https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes
- // 3. Translate each line below after each =
- // 4. Open a Pull Request
- //
- // If your language already exists then feel free to check it and/or improve it!
- //
- // Settings
+// Settings
- "HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Spultasten ausblenden";
- "HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Spultasten im Video ausblenden";
+"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Vor- und Zurücktasten ausblenden";
+"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Vor- und Zurückspultasten vom Videoplayer ausblenden.";
- "YT_MINIPLAYER" = "Miniplayer für alle YouTube-Videos aktivieren";
- "YT_MINIPLAYER_DESC" = "Zum Beispiel bei Videos für Kinder.";
+"YT_MINIPLAYER" = "Miniplayer für alle YT Videos aktivieren";
+"YT_MINIPLAYER_DESC" = "z.B. bei Videos für Kinder";
- "CAST_CONFIRM" = "Warnung vor Starten einer Übertragung (YTCastConfirm)";
- "CAST_CONFIRM_DESC" = "Warnung vor Starten einer Übertragung, um ein versehentliches Übernehmen des TVs zu verhindern.";
+"CAST_CONFIRM" = "Warnung vor TV-Übertragungen (YTCastConfirm)";
+"CAST_CONFIRM_DESC" = "Zeigt eine Warnung an, um eine ausversehene TV-Übertragung zu verhindern.";
- "HIDE_HOVER_CARD" = "Endkarten ausblenden (YTNoHoverCards)";
- "HIDE_HOVER_CARD_DESC" = "Endkarten (Thumbnails) am Ende von Videos ausblenden.";
+"HIDE_HOVER_CARD" = "Endkarten ausblenden (YTNoHoverCards)";
+"HIDE_HOVER_CARD_DESC" = "Endkarten (Thumbnails) am Ende des Videos ausblenden.";
- "NEW_MINIPLAYER_STYLE" = "Neue Miniplayer-Leiste (BigYTMiniPlayer)";
- "NEW_MINIPLAYER_STYLE_DESC" = "App-Neustart erforderlich.";
+"NEW_MINIPLAYER_STYLE" = "Neuer Miniplayer Style (BigYTMiniPlayer)";
+"NEW_MINIPLAYER_STYLE_DESC" = "App-Neustart erforderlich!";
- "YT_RE_EXPLORE" = "Registerkarte Shorts durch Registerkarte Entdecken ersetzen (YTReExplore)";
- "YT_RE_EXPLORE_DESC" = "App-Neustart erforderlich.";
+"YT_RE_EXPLORE" = "Shorts-Tab durch Entdecken-Tab ersetzen (YTReExplore)";
+"YT_RE_EXPLORE_DESC" = "App-Neustart erforderlich!";
- "HIDE_SUBTITLES_BUTTON" = "Schaltfläche Untertitel ausblenden";
- "HIDE_SUBTITLES_BUTTON_DESC" = "Schaltfläche Untertitel im Video ausblenden.";
+"HIDE_SUBTITLES_BUTTON" = "Untertitel-Button ausblenden";
+"HIDE_SUBTITLES_BUTTON_DESC" = "Untertitel-Button vom Videoplayer ausblenden.";
- "HIDE_AUTOPLAY_SWITCH" = "Schaltfläche Autoplay ausblenden";
- "HIDE_AUTOPLAY_SWITCH_DESC" = "Schaltfläche Autoplay im Video ausblenden.";
+"HIDE_AUTOPLAY_SWITCH" = "Autoplay-Schalter ausblenden";
+"HIDE_AUTOPLAY_SWITCH_DESC" = "Autoplay-Schalter vom Videoplayer ausblenden.";
- "AUTO_FULLSCREEN" = "Auto-Vollbild (YTAutoFullScreen)";
- "AUTO_FULLSCREEN_DESC" = "Auto. Videos im Vollbild starten.";
+"AUTO_FULLSCREEN" = "Automatisches Vollbild (YTAutoFullScreen)";
+"AUTO_FULLSCREEN_DESC" = "Automatisch Videos im Vollbild starten.";
- "HIDE_HUD_MESSAGES" = "HUD-Meldungen ausblenden";
- "HIDE_HUD_MESSAGES_DESC" = "Beispiel: CC ist ein/ausgeschaltet, Videoschleife ist eingeschaltet,...";
+"HIDE_HUD_MESSAGES" = "HUD-Nachrichten ausblenden";
+"HIDE_HUD_MESSAGES_DESC" = "z.B.: Untertitel sind akti-/deaktiviert, Videoschleife ist an, ...";
- "OLED_DARKMODE" = "OLED-Dunkelmodus (Experimentell)";
- "OLED_DARKMODE_DESC" = "Funktioniert in einigen Fällen möglicherweise nicht richtig. Ein App-Neustart ist nach Aktiv-/Deaktivierung erforderlich.";
+"OLED_DARKMODE" = "OLED-Dunkelmodus (Experimental)";
+"OLED_DARKMODE_DESC" = "Könnte in manchen Fällen nicht richtig funktionieren. App-Neustart ist erforderlich, wenn diese Option akti-/deaktiviert wird!";
- "OLED_KEYBOARD" = "OLED-Tastatur (Experimentell)";
- "OLED_KEYBOARD_DESC" = "Funktioniert in einigen Fällen möglicherweise nicht richtig. App-Neustart erforderlich.";
+"OLED_KEYBOARD" = "OLED-Tastatur (Experimental)";
+"OLED_KEYBOARD_DESC" = "Könnte in manchen Fällen nicht richtig funktionieren. App-Neustart erforderlich1";
- // YTCastConfirm
- "CASTING" = "Übertragen";
- "MSG_ARE_YOU_SURE" = "Sind Sie sicher, dass Sie mit der Übertragung beginnen wollen?";
- "MSG_YES" = "Ja";
- "MSG_CANCEL" = "Abbrechen";
+"HIDE_PAID_PROMOTION_CARDS" = "Enthält bezahlte Werbung Info ausblenden";
+"HIDE_PAID_PROMOTION_CARDS_DESC" = "Enthält bezahlte Werbung Infobanner bei manchen Videos ausblenden.";
+
+// YTCastConfirm
+"CASTING" = "TV-Übertragung";
+"MSG_ARE_YOU_SURE" = "Sind Sie sicher, dass Sie mit der Videoübertragung beginnen wollen?";
+"MSG_YES" = "Ja";
+"MSG_CANCEL" = "Abbrechen";
diff --git a/lang/uYouPlus.bundle/en.lproj/Localizable.strings b/lang/uYouPlus.bundle/en.lproj/Localizable.strings
index 394ef12..e73104c 100644
--- a/lang/uYouPlus.bundle/en.lproj/Localizable.strings
+++ b/lang/uYouPlus.bundle/en.lproj/Localizable.strings
@@ -1,5 +1,8 @@
// Settings
+"KILL_APP" = "Close YouTube";
+"KILL_APP_DESC" = "Tap here to close YouTube!";
+
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Hide Previous and Next button";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Hide Previous and Next button in video controls overlay.";
diff --git a/lang/uYouPlus.bundle/fr.lproj/Localizable.strings b/lang/uYouPlus.bundle/fr.lproj/Localizable.strings
index d5047f0..7b6717c 100644
--- a/lang/uYouPlus.bundle/fr.lproj/Localizable.strings
+++ b/lang/uYouPlus.bundle/fr.lproj/Localizable.strings
@@ -1,5 +1,8 @@
// Settings
+"KILL_APP" = "Fermer YouTube";
+"KILL_APP_DESC" = "Appuyez ici pour fermer YouTube !";
+
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Masquer les boutons Précédent et Suivant";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Masquer les boutons Précédent et Suivant dans la superposition des contrôles vidéo";
@@ -36,6 +39,9 @@
"OLED_KEYBOARD" = "Clavier OLED (Expérimental)";
"OLED_KEYBOARD_DESC" = "Peut ne pas fonctionner correctement dans certains cas. Un redémarrage de l'application est nécessaire.";
+"HIDE_PAID_PROMOTION_CARDS" = "Masquer la bannière des communications commerciales";
+"HIDE_PAID_PROMOTION_CARDS_DESC" = "Masque la bannière 'Inclut une communication commerciale' dans certaines vidéos.";
+
// YTCastConfirm
"CASTING" = "Castings";
"MSG_ARE_YOU_SURE" = "Êtes-vous sûr de vouloir commencer le casting ?";
diff --git a/lang/uYouPlus.bundle/pt.lproj/Localizable.strings b/lang/uYouPlus.bundle/pt.lproj/Localizable.strings
new file mode 100644
index 0000000..9f1705d
--- /dev/null
+++ b/lang/uYouPlus.bundle/pt.lproj/Localizable.strings
@@ -0,0 +1,49 @@
+// Settings
+
+"KILL_APP" = "Fechar o YouTube";
+"KILL_APP_DESC" = "Toque aqui para fechar o YouTube!";
+
+"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Ocultar botão Anterior e Próximo";
+"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Oculta o botão Anterior e Próximo na sobreposição de controles de vídeo.";
+
+"YT_MINIPLAYER" = "Ative o Miniplayer para todos os vídeos do YouTube";
+"YT_MINIPLAYER_DESC" = "Vídeos infantis, por exemplo.";
+
+"CAST_CONFIRM" = "Alerta de confirmação antes de transmitir (YTCastConfirm)";
+"CAST_CONFIRM_DESC" = "Mostra um alerta de confirmação antes da transmissão para evitar o sequestro acidental da TV.";
+
+"HIDE_HOVER_CARD" = "Ocultar Cartões flutuantes de telas finais (YTNoHoverCards)";
+"HIDE_HOVER_CARD_DESC" = "Oculta telas finais do criador (miniaturas) no final dos vídeos.";
+
+"NEW_MINIPLAYER_STYLE" = "Novo estilo de barra de miniplayer (BigYTMiniPlayer)";
+"NEW_MINIPLAYER_STYLE_DESC" = "A reinicialização do app é necessária.";
+
+"YT_RE_EXPLORE" = "Substituir a guia Shorts pela guia Explorar (YTReExplore)";
+"YT_RE_EXPLORE_DESC" = "A reinicialização do app é necessária.";
+
+"HIDE_SUBTITLES_BUTTON" = "Ocultar botão de Legendas";
+"HIDE_SUBTITLES_BUTTON_DESC" = "Oculta o botão de Legendas na sobreposição de controles de vídeo.";
+
+"HIDE_AUTOPLAY_SWITCH" = "Ocultar interruptor de Reprodução automática";
+"HIDE_AUTOPLAY_SWITCH_DESC" = "Oculta o interruptor de Reprodução automática na sobreposição de controles de vídeo.";
+
+"AUTO_FULLSCREEN" = "Tela cheia automática (YTAutoFullScreen)";
+"AUTO_FULLSCREEN_DESC" = "Reproduz videos em tela cheia automaticamente.";
+
+"HIDE_HUD_MESSAGES" = "Ocultar Mensagens do HUD";
+"HIDE_HUD_MESSAGES_DESC" = "Exemplo: Legendas/CC ativadas/desativadas, A repetição do vídeo está ativada,...";
+
+"OLED_DARKMODE" = "Modo escuro OLED (Experimental)";
+"OLED_DARKMODE_DESC" = "Pode não funcionar corretamente em alguns casos. A reinicialização do app é necessária após você ativar/desativar essa opção.";
+
+"OLED_KEYBOARD" = "Teclado OLED (Experimental)";
+"OLED_KEYBOARD_DESC" = "Pode não funcionar corretamente em alguns casos. A reinicialização do app é necessária.";
+
+"HIDE_PAID_PROMOTION_CARDS" = "Ocultar Banner de promoção paga";
+"HIDE_PAID_PROMOTION_CARDS_DESC" = "Oculta o banner 'Contém promoção paga' em alguns vídeos.";
+
+// YTCastConfirm
+"CASTING" = "Transmissão";
+"MSG_ARE_YOU_SURE" = "Tem certeza de que deseja começar a transmitir?";
+"MSG_YES" = "Sim";
+"MSG_CANCEL" = "Cancelar";
diff --git a/lang/uYouPlus.bundle/template.lproj/Localizable.strings b/lang/uYouPlus.bundle/template.lproj/Localizable.strings
index 3f7025b..76c40db 100644
--- a/lang/uYouPlus.bundle/template.lproj/Localizable.strings
+++ b/lang/uYouPlus.bundle/template.lproj/Localizable.strings
@@ -1,17 +1,20 @@
-// How to translate uYouPlus to your languate:
+// How to translate uYouPlus to your language:
//
// 1. Fork uYouPlus repo
// 2. Duplicate the template.lproj folder, and edit the duplicated folder's name to your .lproj id.
-// For example: for Russia. For more details, visit: https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes
+// For example: for Russia. For more details, visit: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
// 3. Translate each line below after each =
// 4. Open a Pull Request
//
// If your language already exists then feel free to check it and/or improve it!
-// You can also add your localiztion to YouPiP here, the process is the same
+// You can also add your localization to YouPiP here, the process is the same
// https://github.com/PoomSmart/YouPiP/tree/main/layout/Library/Application%20Support/YouPiP.bundle
//
// Settings
+"KILL_APP" = "Close YouTube";
+"KILL_APP_DESC" = "Tap here to close YouTube!";
+
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Hide Previous and Next button";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Hide Previous and Next button in video controls overlay.";
@@ -55,4 +58,4 @@
"CASTING" = "Castings";
"MSG_ARE_YOU_SURE" = "Are you sure you want to start casting?";
"MSG_YES" = "Yes";
-"MSG_CANCEL" = "Cancel";
\ No newline at end of file
+"MSG_CANCEL" = "Cancel";
diff --git a/lang/uYouPlus.bundle/vi.lproj/Localizable.strings b/lang/uYouPlus.bundle/vi.lproj/Localizable.strings
index a201374..3432327 100644
--- a/lang/uYouPlus.bundle/vi.lproj/Localizable.strings
+++ b/lang/uYouPlus.bundle/vi.lproj/Localizable.strings
@@ -1,16 +1,19 @@
// Settings
+"KILL_APP" = "Đóng ứng dụng";
+"KILL_APP_DESC" = "Chạm để đóng YouTube!";
+
"HIDE_PREVIOUS_AND_NEXT_BUTTON" = "Ẩn nút Next và nút Previous";
"HIDE_PREVIOUS_AND_NEXT_BUTTON_DESC" = "Ẩn nút Next và nút Previous trong trình phát video.";
-"YT_MINIPLAYER" = "Cho phép trình phát thu nhỏ chạy với mọi video";
+"YT_MINIPLAYER" = "Cho phép sử dụng trình phát thu nhỏ với mọi video";
"YT_MINIPLAYER_DESC" = "Ví dụ: Video cho trẻ em.";
"CAST_CONFIRM" = "Xác nhận trước khi cast video (YTCastConfirm)";
-"CAST_CONFIRM_DESC" = "Hiện hộp thoại xác nhận trước khi cast video sang TV để ngăn việc vô tình làm gián đoạn TV.";
+"CAST_CONFIRM_DESC" = "Hiện hộp thoại xác nhận trước khi cast video sang TV để tránh vô tình chiếm quyền điều khiển TV.";
"HIDE_HOVER_CARD" = "Ẩn video dạng thumbnails (YTNoHoverCards)";
-"HIDE_HOVER_CARD_DESC" = "Ẩn các video dạng thu nhỏ (thumbnails) xuất hiện ở gần cuối video.";
+"HIDE_HOVER_CARD_DESC" = "Ẩn thumbnail của các video đề xuất xuất hiện ở cuối video.";
"NEW_MINIPLAYER_STYLE" = "Giao diện trình phát thu nhỏ kiểu mới (BigYTMiniPlayer)";
"NEW_MINIPLAYER_STYLE_DESC" = "Cần khởi động lại ứng dụng.";
@@ -21,26 +24,26 @@
"HIDE_SUBTITLES_BUTTON" = "Ẩn nút bật Phụ đề";
"HIDE_SUBTITLES_BUTTON_DESC" = "Ẩn nút bật phụ đề trong trình phát video.";
-"HIDE_AUTOPLAY_SWITCH" = "Ẩn công tắc Tự động phát";
-"HIDE_AUTOPLAY_SWITCH_DESC" = "Ẩn công tắc Tự động phát trong trình phát video.";
+"HIDE_AUTOPLAY_SWITCH" = "Ẩn nút Tự động phát";
+"HIDE_AUTOPLAY_SWITCH_DESC" = "Ẩn nút Tự động phát trong trình phát video.";
"AUTO_FULLSCREEN" = "Tự động toàn màn hình (YTAutoFullScreen)";
"AUTO_FULLSCREEN_DESC" = "Tự động phát video ở chế độ toàn màn hình.";
-"HIDE_HUD_MESSAGES" = "Ẩn tin nhắn HUD";
+"HIDE_HUD_MESSAGES" = "Ẩn thông báo HUD";
"HIDE_HUD_MESSAGES_DESC" = "Ví dụ: Đã bật/tắt phụ đề, Tính năng phát video lặp lại đang bật,...";
-"OLED_DARKMODE" = "Chế độ tối OLED (Thử nghiệm)";
-"OLED_DARKMODE_DESC" = "Cần khởi động lại ứng dụng nếu bạn bật/tắt tính năng này, nhưng không cần khởi động lại ứng dụng nếu chuyển giữa chế độ Sáng và chế độ Tối.";
+"OLED_DARKMODE" = "Chế độ tối cho màn OLED (Thử nghiệm)";
+"OLED_DARKMODE_DESC" = "Có thể không hoạt động tốt trong một số trường hợp. Cần khởi động lại ứng dụng nếu bạn bật/tắt tính năng này, nhưng không cần khởi động lại ứng dụng nếu chuyển giữa chế độ Sáng và chế độ Tối.";
-"OLED_KEYBOARD" = "Bàn phím OLED (Thử nghiệm)";
-"OLED_KEYBOARD_DESC" = "Tính năng này có thể không hoạt động tốt trong một vài trường hợp. Cần khởi động lại ứng dụng.";
+"OLED_KEYBOARD" = "Bàn phím tối cho màn OLED (Thử nghiệm)";
+"OLED_KEYBOARD_DESC" = "Có thể không hoạt động tốt trong một vài trường hợp. Cần khởi động lại ứng dụng.";
-"HIDE_PAID_PROMOTION_CARDS" = "Ẩn popup quảng cáo được trả tiền";
-"HIDE_PAID_PROMOTION_CARDS_DESC" = "Ẩn popup 'Chứa nội dung được trả tiền để quảng cáo' trong một số video.";
+"HIDE_PAID_PROMOTION_CARDS" = "Ẩn banner quảng cáo được trả tiền";
+"HIDE_PAID_PROMOTION_CARDS_DESC" = "Ẩn banner 'Chứa nội dung được trả tiền để quảng cáo' trong một số video.";
// YTCastConfirm
"CASTING" = "Truyền video";
"MSG_ARE_YOU_SURE" = "Bạn có muốn bắt đầu truyền video không?";
"MSG_YES" = "Có";
-"MSG_CANCEL" = "Không";
\ No newline at end of file
+"MSG_CANCEL" = "Không";
diff --git a/lang/uYouPlus.bundle/zh_tw.lproj/Localizable.strings b/lang/uYouPlus.bundle/zh_tw.lproj/Localizable.strings
index 4e8a34e..1d6e2c5 100644
--- a/lang/uYouPlus.bundle/zh_tw.lproj/Localizable.strings
+++ b/lang/uYouPlus.bundle/zh_tw.lproj/Localizable.strings
@@ -36,8 +36,11 @@
"OLED_KEYBOARD" = "OLED 鍵盤(實驗性)";
"OLED_KEYBOARD_DESC" = "在某些情況下可能無法正常工作。需要重新啟動應用程式。";
+"HIDE_PAID_PROMOTION_CARDS" = "隱藏付費促銷橫幅";
+"HIDE_PAID_PROMOTION_CARDS_DESC" = "在某些影片中隱藏“包括付費促銷”橫幅。";
+
// YTCastConfirm
"CASTING" = "投放中";
"MSG_ARE_YOU_SURE" = "確定要開始投放嗎?";
-"MSG_YES" = "是";
+"MSG_YES" = "確定";
"MSG_CANCEL" = "取消";
diff --git a/uYouPlus.xm b/uYouPlus.xm
index af74b55..338d762 100644
--- a/uYouPlus.xm
+++ b/uYouPlus.xm
@@ -78,7 +78,6 @@ BOOL hidePaidPromotionCard() {
%new
- (BOOL)canReorder { return YES; }
%end
-//
// YTMiniPlayerEnabler: https://github.com/level3tjg/YTMiniplayerEnabler/
%hook YTWatchMiniBarViewController
@@ -103,8 +102,8 @@ BOOL hidePaidPromotionCard() {
if (hidePreviousAndNextButton()) {
MSHookIvar(self, "_nextButton").hidden = YES;
MSHookIvar(self, "_previousButton").hidden = YES;
- // MSHookIvar(self, "_nextButtonView").hidden = YES;
- // MSHookIvar(self, "_previousButtonView").hidden = YES;
+ MSHookIvar(self, "_nextButtonView").hidden = YES;
+ MSHookIvar(self, "_previousButtonView").hidden = YES;
}
}
%end
@@ -209,12 +208,9 @@ BOOL hidePaidPromotionCard() {
- (BOOL)isPromptForLocalNetworkPermissionsEnabled { return NO; }
%end
-// YTSystemAppearance: https://poomsmart.github.io/repo/depictions/ytsystemappearance.html
// YouRememberCaption: https://poomsmart.github.io/repo/depictions/youremembercaption.html
%hook YTColdConfig
-- (BOOL)shouldUseAppThemeSetting { return YES; }
- (BOOL)respectDeviceCaptionSetting { return NO; }
-- (BOOL)isEnhancedSearchBarEnabled { return YES; }
%end
// NOYTPremium - https://github.com/PoomSmart/NoYTPremium/
@@ -244,9 +240,13 @@ BOOL hidePaidPromotionCard() {
- (void)showSurveyWithRenderer:(id)arg1 surveyParentResponder:(id)arg2 {}
%end
-// Enable Shorts scroll bar - @level3tjg - https://reddit.com/r/jailbreak/comments/v29yvk/_/iasl1l0/
+// Enable Shorts scroll bar - @PoomSmart & @level3tjg
%hook YTReelPlayerViewController
-- (BOOL)shouldEnablePlayerBar { return YES; }
+- (BOOL)shouldAlwaysEnablePlayerBar { return YES; }
+%end
+
+%hook YTInlinePlayerBarContainerView
+- (void)setUserInteractionEnabled:(BOOL)enabled { %orig(YES); }
%end
// Workaround for issue #54
@@ -387,7 +387,7 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha:
}
- (UIColor *)raisedBackground {
if (self.pageStyle == 1) {
- return raisedColor;
+ return [UIColor blackColor];
}
return %orig;
}
@@ -550,11 +550,11 @@ UIColor* raisedColor = [UIColor colorWithRed:0.035 green:0.035 blue:0.035 alpha:
- (void)didMoveToWindow {
%orig;
if (isDarkMode()) {
- if ([self.nextResponder isKindOfClass:%c(ASScrollView)]) { self.backgroundColor = raisedColor; }
+ if ([self.nextResponder isKindOfClass:%c(ASScrollView)]) { self.backgroundColor = [UIColor clearColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"eml.cvr"]) { 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 = raisedColor; }
+ if ([self.accessibilityIdentifier isEqualToString:@"id.ui.cancel.button"]) { self.superview.backgroundColor = [UIColor clearColor]; }
if ([self.accessibilityIdentifier isEqualToString:@"id.elements.components.filter_chip_bar"]) { self.backgroundColor = [UIColor blackColor]; }
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]; }