mirror of
https://github.com/leminlimez/Nugget.git
synced 2025-04-08 04:23:05 +08:00
ai enabler
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
from Sparserestore.restore import restore_files, FileToRestore, restore_file
|
||||
from tweaks.tweaks import tweaks, TweakModifyType, FeatureFlagTweak, EligibilityTweak, BasicPlistTweak
|
||||
from tweaks.tweaks import tweaks, TweakModifyType, FeatureFlagTweak, EligibilityTweak, AITweak, BasicPlistTweak
|
||||
from tweaks.basic_plist_locations import FileLocation
|
||||
from devicemanagement.constants import Device
|
||||
|
||||
@@ -103,6 +103,7 @@ while running:
|
||||
# create the other plists
|
||||
flag_plist: dict = {}
|
||||
eligibility_files = None
|
||||
ai_file = None
|
||||
basic_plists: dict = {}
|
||||
|
||||
# verify the device credentials before continuing
|
||||
@@ -122,6 +123,8 @@ while running:
|
||||
elif isinstance(tweak, EligibilityTweak):
|
||||
tweak.set_region_code(device.locale[-2:])
|
||||
eligibility_files = tweak.apply_tweak()
|
||||
elif isinstance(tweak, AITweak):
|
||||
ai_file = tweak.apply_tweak()
|
||||
elif isinstance(tweak, BasicPlistTweak):
|
||||
basic_plists = tweak.apply_tweak(basic_plists)
|
||||
else:
|
||||
@@ -142,6 +145,8 @@ while running:
|
||||
]
|
||||
if eligibility_files != None:
|
||||
files_to_restore += eligibility_files
|
||||
if ai_file != None:
|
||||
files_to_restore.append(ai_file)
|
||||
for location, plist in basic_plists:
|
||||
files_to_restore.append(FileToRestore(
|
||||
contents=plistlib.dumps(plist),
|
||||
|
||||
@@ -10,7 +10,7 @@ from pymobiledevice3.lockdown import create_using_usbmux
|
||||
from devicemanagement.constants import Device, Version
|
||||
from devicemanagement.data_singleton import DataSingleton
|
||||
|
||||
from tweaks.tweaks import tweaks, FeatureFlagTweak, EligibilityTweak, BasicPlistTweak
|
||||
from tweaks.tweaks import tweaks, FeatureFlagTweak, EligibilityTweak, AITweak, BasicPlistTweak
|
||||
from tweaks.basic_plist_locations import FileLocation
|
||||
from Sparserestore.restore import restore_files, FileToRestore
|
||||
|
||||
@@ -106,6 +106,7 @@ class DeviceManager:
|
||||
# create the other plists
|
||||
flag_plist: dict = {}
|
||||
eligibility_files = None
|
||||
ai_file = None
|
||||
basic_plists: dict = {}
|
||||
|
||||
# set the plist keys
|
||||
@@ -116,6 +117,8 @@ class DeviceManager:
|
||||
flag_plist = tweak.apply_tweak(flag_plist)
|
||||
elif isinstance(tweak, EligibilityTweak):
|
||||
eligibility_files = tweak.apply_tweak()
|
||||
elif isinstance(tweak, AITweak):
|
||||
ai_file = tweak.apply_tweak()
|
||||
elif isinstance(tweak, BasicPlistTweak):
|
||||
basic_plists = tweak.apply_tweak(basic_plists)
|
||||
else:
|
||||
@@ -146,6 +149,8 @@ class DeviceManager:
|
||||
))
|
||||
if eligibility_files:
|
||||
files_to_restore += eligibility_files
|
||||
if ai_file != None:
|
||||
files_to_restore.append(ai_file)
|
||||
for location, plist in basic_plists:
|
||||
files_to_restore.append(FileToRestore(
|
||||
contents=plistlib.dumps(plist),
|
||||
|
||||
@@ -68,11 +68,15 @@ class MainWindow(QtWidgets.QMainWindow):
|
||||
|
||||
self.ui.discordBtn.clicked.connect(self.on_discordBtn_clicked)
|
||||
|
||||
## EU ENABLER PAGE ACTIONS
|
||||
## ELIGIBILITY PAGE ACTIONS
|
||||
self.ui.euEnablerEnabledChk.toggled.connect(self.on_euEnablerEnabledChk_toggled)
|
||||
self.ui.methodChoiceDrp.activated.connect(self.on_methodChoiceDrp_activated)
|
||||
self.ui.regionCodeTxt.textEdited.connect(self.on_regionCodeTxt_textEdited)
|
||||
|
||||
self.ui.enableAIChk.toggled.connect(self.on_enableAIChk_toggled)
|
||||
self.ui.languageTxt.textEdited.connect(self.on_languageTxt_textEdited)
|
||||
self.ui.spoofModelChk.toggled.connect(self.on_spoofModelChk_toggled)
|
||||
|
||||
## FEATURE FLAGS PAGE
|
||||
self.ui.clockAnimChk.toggled.connect(self.on_clockAnimChk_toggled)
|
||||
self.ui.lockscreenChk.toggled.connect(self.on_lockscreenChk_clicked)
|
||||
@@ -188,6 +192,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
||||
|
||||
self.ui.gestaltPageContent.setDisabled(False)
|
||||
self.ui.featureFlagsPageContent.setDisabled(False)
|
||||
self.ui.euEnablerPageContent.setDisabled(False)
|
||||
self.ui.springboardOptionsPageContent.setDisabled(False)
|
||||
self.ui.internalOptionsPageContent.setDisabled(False)
|
||||
|
||||
@@ -208,6 +213,14 @@ class MainWindow(QtWidgets.QMainWindow):
|
||||
self.ui.dynamicIslandDrp.removeItem(5)
|
||||
except:
|
||||
pass
|
||||
if Version(self.device_manager.data_singleton.current_device.version) >= Version("18.0"):
|
||||
self.ui.enableAIChk.show()
|
||||
else:
|
||||
self.ui.enableAIChk.hide()
|
||||
self.ui.languageLbl.hide()
|
||||
self.ui.languageTxt.hide()
|
||||
self.ui.aiInfoLabel.hide()
|
||||
self.ui.spoofModelChk.hide()
|
||||
if Version(self.device_manager.data_singleton.current_device.version) >= Version("18.0"):
|
||||
self.ui.aodChk.show()
|
||||
self.ui.sleepApneaChk.show()
|
||||
@@ -388,15 +401,33 @@ class MainWindow(QtWidgets.QMainWindow):
|
||||
tweaks["AI"].set_enabled(checked)
|
||||
|
||||
|
||||
## EU ENABLER PAGE
|
||||
## ELIGIBILITY PAGE
|
||||
def on_euEnablerEnabledChk_toggled(self, checked: bool):
|
||||
tweaks["EUEnabler"].set_enabled(checked)
|
||||
self.ui.euEnablerPageContent.setDisabled(not checked)
|
||||
def on_methodChoiceDrp_activated(self, index: int):
|
||||
tweaks["EUEnabler"].set_selected_option(index)
|
||||
def on_regionCodeTxt_textEdited(self, text: str):
|
||||
tweaks["EUEnabler"].set_region_code(text)
|
||||
|
||||
def on_enableAIChk_toggled(self, checked: bool):
|
||||
tweaks["AIEligibility"].set_enabled(checked)
|
||||
tweaks["AIGestalt"].set_enabled(checked)
|
||||
# change the visibility of stuff
|
||||
if checked:
|
||||
self.ui.languageLbl.show()
|
||||
self.ui.languageTxt.show()
|
||||
self.ui.aiInfoLabel.show()
|
||||
self.ui.spoofModelChk.show()
|
||||
else:
|
||||
self.ui.languageLbl.hide()
|
||||
self.ui.languageTxt.hide()
|
||||
self.ui.aiInfoLabel.hide()
|
||||
self.ui.spoofModelChk.hide()
|
||||
def on_languageTxt_textEdited(self, text: str):
|
||||
tweaks["AIEligibility"].set_language_code(text)
|
||||
def on_spoofModelChk_toggled(self, checked: bool):
|
||||
tweaks["SpoofModel"].set_enabled(checked)
|
||||
|
||||
|
||||
## SPRINGBOARD OPTIONS PAGE
|
||||
def on_footnoteTxt_textEdited(self, text: str):
|
||||
|
||||
@@ -593,7 +593,7 @@ QSlider::tick:horizontal {
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string> EU Enabler</string>
|
||||
<string> Eligibility</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset>
|
||||
@@ -2372,7 +2372,7 @@ QComboBox QAbstractItemView::item:hover {
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="setupOptionsLbl">
|
||||
<widget class="QLabel" name="eligibilityLbl">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>-1</pointsize>
|
||||
@@ -2380,16 +2380,25 @@ QComboBox QAbstractItemView::item:hover {
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>EU Enabler</string>
|
||||
<string>Eligibility Tweaks</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="euEnablerEnabledChk">
|
||||
<property name="text">
|
||||
<string>Enabled</string>
|
||||
<spacer name="verticalSpacer_20">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
</widget>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>16</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
@@ -2425,6 +2434,13 @@ QComboBox QAbstractItemView::item:hover {
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="euEnablerEnabledChk">
|
||||
<property name="text">
|
||||
<string>Enable EU Enabler</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="euEnablerPageContent" native="true">
|
||||
<property name="enabled">
|
||||
@@ -2518,6 +2534,72 @@ QComboBox QAbstractItemView::item:hover {
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="Line" name="line_16">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">QFrame {
|
||||
color: #414141;
|
||||
}</string>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Plain</enum>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="enableAIChk">
|
||||
<property name="text">
|
||||
<string>Enable Apple Intelligence (for Unsupported Devices)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="languageLbl">
|
||||
<property name="text">
|
||||
<string>Language Code (not needed for English)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="languageTxt">
|
||||
<property name="placeholderText">
|
||||
<string>Language Code (i.e. en)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="aiInfoLabel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>In order to download the AI model, you must spoof the device model. This will break Face ID until
|
||||
you revert.
|
||||
|
||||
Once the model has downloaded, disable "Spoof Device Model" and click the "Apply Tweaks"
|
||||
button on the "Apply" page again to fix Face ID.</string>
|
||||
</property>
|
||||
<property name="textFormat">
|
||||
<enum>Qt::AutoText</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="spoofModelChk">
|
||||
<property name="text">
|
||||
<string>Spoof Device Model</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer_7">
|
||||
<property name="orientation">
|
||||
|
||||
@@ -1286,16 +1286,15 @@ class Ui_Nugget(object):
|
||||
self.verticalLayout_15.setSpacing(6)
|
||||
self.verticalLayout_15.setObjectName(u"verticalLayout_15")
|
||||
self.verticalLayout_15.setContentsMargins(0, 0, 0, 0)
|
||||
self.setupOptionsLbl = QLabel(self.verticalWidget_5)
|
||||
self.setupOptionsLbl.setObjectName(u"setupOptionsLbl")
|
||||
self.setupOptionsLbl.setFont(font1)
|
||||
self.eligibilityLbl = QLabel(self.verticalWidget_5)
|
||||
self.eligibilityLbl.setObjectName(u"eligibilityLbl")
|
||||
self.eligibilityLbl.setFont(font1)
|
||||
|
||||
self.verticalLayout_15.addWidget(self.setupOptionsLbl)
|
||||
self.verticalLayout_15.addWidget(self.eligibilityLbl)
|
||||
|
||||
self.euEnablerEnabledChk = QCheckBox(self.verticalWidget_5)
|
||||
self.euEnablerEnabledChk.setObjectName(u"euEnablerEnabledChk")
|
||||
self.verticalSpacer_20 = QSpacerItem(20, 16, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
|
||||
|
||||
self.verticalLayout_15.addWidget(self.euEnablerEnabledChk)
|
||||
self.verticalLayout_15.addItem(self.verticalSpacer_20)
|
||||
|
||||
|
||||
self.horizontalLayout_21.addWidget(self.verticalWidget_5)
|
||||
@@ -1317,6 +1316,11 @@ class Ui_Nugget(object):
|
||||
|
||||
self.verticalLayout_17.addWidget(self.line_13)
|
||||
|
||||
self.euEnablerEnabledChk = QCheckBox(self.euEnablerPage)
|
||||
self.euEnablerEnabledChk.setObjectName(u"euEnablerEnabledChk")
|
||||
|
||||
self.verticalLayout_17.addWidget(self.euEnablerEnabledChk)
|
||||
|
||||
self.euEnablerPageContent = QWidget(self.euEnablerPage)
|
||||
self.euEnablerPageContent.setObjectName(u"euEnablerPageContent")
|
||||
self.euEnablerPageContent.setEnabled(False)
|
||||
@@ -1378,6 +1382,45 @@ class Ui_Nugget(object):
|
||||
|
||||
self.verticalLayout_16.addWidget(self.regionCodeTxt)
|
||||
|
||||
self.line_16 = QFrame(self.euEnablerPageContent)
|
||||
self.line_16.setObjectName(u"line_16")
|
||||
self.line_16.setEnabled(False)
|
||||
self.line_16.setStyleSheet(u"QFrame {\n"
|
||||
" color: #414141;\n"
|
||||
"}")
|
||||
self.line_16.setFrameShadow(QFrame.Plain)
|
||||
self.line_16.setFrameShape(QFrame.HLine)
|
||||
|
||||
self.verticalLayout_16.addWidget(self.line_16)
|
||||
|
||||
self.enableAIChk = QCheckBox(self.euEnablerPageContent)
|
||||
self.enableAIChk.setObjectName(u"enableAIChk")
|
||||
|
||||
self.verticalLayout_16.addWidget(self.enableAIChk)
|
||||
|
||||
self.languageLbl = QLabel(self.euEnablerPageContent)
|
||||
self.languageLbl.setObjectName(u"languageLbl")
|
||||
|
||||
self.verticalLayout_16.addWidget(self.languageLbl)
|
||||
|
||||
self.languageTxt = QLineEdit(self.euEnablerPageContent)
|
||||
self.languageTxt.setObjectName(u"languageTxt")
|
||||
|
||||
self.verticalLayout_16.addWidget(self.languageTxt)
|
||||
|
||||
self.aiInfoLabel = QLabel(self.euEnablerPageContent)
|
||||
self.aiInfoLabel.setObjectName(u"aiInfoLabel")
|
||||
sizePolicy1.setHeightForWidth(self.aiInfoLabel.sizePolicy().hasHeightForWidth())
|
||||
self.aiInfoLabel.setSizePolicy(sizePolicy1)
|
||||
self.aiInfoLabel.setTextFormat(Qt.AutoText)
|
||||
|
||||
self.verticalLayout_16.addWidget(self.aiInfoLabel)
|
||||
|
||||
self.spoofModelChk = QCheckBox(self.euEnablerPageContent)
|
||||
self.spoofModelChk.setObjectName(u"spoofModelChk")
|
||||
|
||||
self.verticalLayout_16.addWidget(self.spoofModelChk)
|
||||
|
||||
self.verticalSpacer_7 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
|
||||
|
||||
self.verticalLayout_16.addItem(self.verticalSpacer_7)
|
||||
@@ -2475,7 +2518,7 @@ class Ui_Nugget(object):
|
||||
self.gestaltPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
|
||||
self.featureFlagsPageBtn.setText(QCoreApplication.translate("Nugget", u" Feature Flags", None))
|
||||
self.featureFlagsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
|
||||
self.euEnablerPageBtn.setText(QCoreApplication.translate("Nugget", u" EU Enabler", None))
|
||||
self.euEnablerPageBtn.setText(QCoreApplication.translate("Nugget", u" Eligibility", None))
|
||||
self.euEnablerPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
|
||||
self.springboardOptionsPageBtn.setText(QCoreApplication.translate("Nugget", u" Springboard Options", None))
|
||||
self.springboardOptionsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
|
||||
@@ -2541,14 +2584,23 @@ class Ui_Nugget(object):
|
||||
self.lockscreenChk.setText(QCoreApplication.translate("Nugget", u"Enable Duplicate Lockscreen Button and Lockscreen Quickswitch", None))
|
||||
self.photosChk.setText(QCoreApplication.translate("Nugget", u"Enable Old Photo UI", None))
|
||||
self.aiChk.setText(QCoreApplication.translate("Nugget", u"Enable Apple Intelligence", None))
|
||||
self.setupOptionsLbl.setText(QCoreApplication.translate("Nugget", u"EU Enabler", None))
|
||||
self.euEnablerEnabledChk.setText(QCoreApplication.translate("Nugget", u"Enabled", None))
|
||||
self.eligibilityLbl.setText(QCoreApplication.translate("Nugget", u"Eligibility Tweaks", None))
|
||||
self.euEnablerEnabledChk.setText(QCoreApplication.translate("Nugget", u"Enable EU Enabler", None))
|
||||
self.label_5.setText(QCoreApplication.translate("Nugget", u"Method Type", None))
|
||||
self.methodChoiceDrp.setItemText(0, QCoreApplication.translate("Nugget", u"Method 1", None))
|
||||
self.methodChoiceDrp.setItemText(1, QCoreApplication.translate("Nugget", u"Method 2", None))
|
||||
|
||||
self.label_6.setText(QCoreApplication.translate("Nugget", u"Region Code (Should be 2 letters)", None))
|
||||
self.regionCodeTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Region Code (Default: US)", None))
|
||||
self.enableAIChk.setText(QCoreApplication.translate("Nugget", u"Enable Apple Intelligence (for Unsupported Devices)", None))
|
||||
self.languageLbl.setText(QCoreApplication.translate("Nugget", u"Language Code (not needed for English)", None))
|
||||
self.languageTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Language Code (i.e. en)", None))
|
||||
self.aiInfoLabel.setText(QCoreApplication.translate("Nugget", u"In order to download the AI model, you must spoof the device model. This will break Face ID until\n"
|
||||
"you revert.\n"
|
||||
"\n"
|
||||
"Once the model has downloaded, disable \"Spoof Device Model\" and click the \"Apply Tweaks\"\n"
|
||||
"button on the \"Apply\" page again to fix Face ID.", None))
|
||||
self.spoofModelChk.setText(QCoreApplication.translate("Nugget", u"Spoof Device Model", None))
|
||||
self.springboardOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Springboard Options", None))
|
||||
self.label_13.setText(QCoreApplication.translate("Nugget", u"Lock Screen Footnote Text", None))
|
||||
self.footnoteTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Footnote Text", None))
|
||||
|
||||
@@ -1286,16 +1286,15 @@ class Ui_Nugget(object):
|
||||
self.verticalLayout_15.setSpacing(6)
|
||||
self.verticalLayout_15.setObjectName(u"verticalLayout_15")
|
||||
self.verticalLayout_15.setContentsMargins(0, 0, 0, 0)
|
||||
self.setupOptionsLbl = QLabel(self.verticalWidget_5)
|
||||
self.setupOptionsLbl.setObjectName(u"setupOptionsLbl")
|
||||
self.setupOptionsLbl.setFont(font1)
|
||||
self.eligibilityLbl = QLabel(self.verticalWidget_5)
|
||||
self.eligibilityLbl.setObjectName(u"eligibilityLbl")
|
||||
self.eligibilityLbl.setFont(font1)
|
||||
|
||||
self.verticalLayout_15.addWidget(self.setupOptionsLbl)
|
||||
self.verticalLayout_15.addWidget(self.eligibilityLbl)
|
||||
|
||||
self.euEnablerEnabledChk = QCheckBox(self.verticalWidget_5)
|
||||
self.euEnablerEnabledChk.setObjectName(u"euEnablerEnabledChk")
|
||||
self.verticalSpacer_20 = QSpacerItem(20, 16, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
|
||||
|
||||
self.verticalLayout_15.addWidget(self.euEnablerEnabledChk)
|
||||
self.verticalLayout_15.addItem(self.verticalSpacer_20)
|
||||
|
||||
|
||||
self.horizontalLayout_21.addWidget(self.verticalWidget_5)
|
||||
@@ -1317,6 +1316,11 @@ class Ui_Nugget(object):
|
||||
|
||||
self.verticalLayout_17.addWidget(self.line_13)
|
||||
|
||||
self.euEnablerEnabledChk = QCheckBox(self.euEnablerPage)
|
||||
self.euEnablerEnabledChk.setObjectName(u"euEnablerEnabledChk")
|
||||
|
||||
self.verticalLayout_17.addWidget(self.euEnablerEnabledChk)
|
||||
|
||||
self.euEnablerPageContent = QWidget(self.euEnablerPage)
|
||||
self.euEnablerPageContent.setObjectName(u"euEnablerPageContent")
|
||||
self.euEnablerPageContent.setEnabled(False)
|
||||
@@ -1378,6 +1382,45 @@ class Ui_Nugget(object):
|
||||
|
||||
self.verticalLayout_16.addWidget(self.regionCodeTxt)
|
||||
|
||||
self.line_16 = QFrame(self.euEnablerPageContent)
|
||||
self.line_16.setObjectName(u"line_16")
|
||||
self.line_16.setEnabled(False)
|
||||
self.line_16.setStyleSheet(u"QFrame {\n"
|
||||
" color: #414141;\n"
|
||||
"}")
|
||||
self.line_16.setFrameShadow(QFrame.Plain)
|
||||
self.line_16.setFrameShape(QFrame.Shape.HLine)
|
||||
|
||||
self.verticalLayout_16.addWidget(self.line_16)
|
||||
|
||||
self.enableAIChk = QCheckBox(self.euEnablerPageContent)
|
||||
self.enableAIChk.setObjectName(u"enableAIChk")
|
||||
|
||||
self.verticalLayout_16.addWidget(self.enableAIChk)
|
||||
|
||||
self.languageLbl = QLabel(self.euEnablerPageContent)
|
||||
self.languageLbl.setObjectName(u"languageLbl")
|
||||
|
||||
self.verticalLayout_16.addWidget(self.languageLbl)
|
||||
|
||||
self.languageTxt = QLineEdit(self.euEnablerPageContent)
|
||||
self.languageTxt.setObjectName(u"languageTxt")
|
||||
|
||||
self.verticalLayout_16.addWidget(self.languageTxt)
|
||||
|
||||
self.aiInfoLabel = QLabel(self.euEnablerPageContent)
|
||||
self.aiInfoLabel.setObjectName(u"aiInfoLabel")
|
||||
sizePolicy1.setHeightForWidth(self.aiInfoLabel.sizePolicy().hasHeightForWidth())
|
||||
self.aiInfoLabel.setSizePolicy(sizePolicy1)
|
||||
self.aiInfoLabel.setTextFormat(Qt.AutoText)
|
||||
|
||||
self.verticalLayout_16.addWidget(self.aiInfoLabel)
|
||||
|
||||
self.spoofModelChk = QCheckBox(self.euEnablerPageContent)
|
||||
self.spoofModelChk.setObjectName(u"spoofModelChk")
|
||||
|
||||
self.verticalLayout_16.addWidget(self.spoofModelChk)
|
||||
|
||||
self.verticalSpacer_7 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
|
||||
|
||||
self.verticalLayout_16.addItem(self.verticalSpacer_7)
|
||||
@@ -2475,7 +2518,7 @@ class Ui_Nugget(object):
|
||||
self.gestaltPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
|
||||
self.featureFlagsPageBtn.setText(QCoreApplication.translate("Nugget", u" Feature Flags", None))
|
||||
self.featureFlagsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
|
||||
self.euEnablerPageBtn.setText(QCoreApplication.translate("Nugget", u" EU Enabler", None))
|
||||
self.euEnablerPageBtn.setText(QCoreApplication.translate("Nugget", u" Eligibility", None))
|
||||
self.euEnablerPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
|
||||
self.springboardOptionsPageBtn.setText(QCoreApplication.translate("Nugget", u" Springboard Options", None))
|
||||
self.springboardOptionsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
|
||||
@@ -2541,14 +2584,23 @@ class Ui_Nugget(object):
|
||||
self.lockscreenChk.setText(QCoreApplication.translate("Nugget", u"Enable Duplicate Lockscreen Button and Lockscreen Quickswitch", None))
|
||||
self.photosChk.setText(QCoreApplication.translate("Nugget", u"Enable Old Photo UI", None))
|
||||
self.aiChk.setText(QCoreApplication.translate("Nugget", u"Enable Apple Intelligence", None))
|
||||
self.setupOptionsLbl.setText(QCoreApplication.translate("Nugget", u"EU Enabler", None))
|
||||
self.euEnablerEnabledChk.setText(QCoreApplication.translate("Nugget", u"Enabled", None))
|
||||
self.eligibilityLbl.setText(QCoreApplication.translate("Nugget", u"Eligibility Tweaks", None))
|
||||
self.euEnablerEnabledChk.setText(QCoreApplication.translate("Nugget", u"Enable EU Enabler", None))
|
||||
self.label_5.setText(QCoreApplication.translate("Nugget", u"Method Type", None))
|
||||
self.methodChoiceDrp.setItemText(0, QCoreApplication.translate("Nugget", u"Method 1", None))
|
||||
self.methodChoiceDrp.setItemText(1, QCoreApplication.translate("Nugget", u"Method 2", None))
|
||||
|
||||
self.label_6.setText(QCoreApplication.translate("Nugget", u"Region Code (Should be 2 letters)", None))
|
||||
self.regionCodeTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Region Code (Default: US)", None))
|
||||
self.enableAIChk.setText(QCoreApplication.translate("Nugget", u"Enable Apple Intelligence (for Unsupported Devices)", None))
|
||||
self.languageLbl.setText(QCoreApplication.translate("Nugget", u"Language Code (not needed for English)", None))
|
||||
self.languageTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Language Code (i.e. en)", None))
|
||||
self.aiInfoLabel.setText(QCoreApplication.translate("Nugget", u"In order to download the AI model, you must spoof the device model. This will break Face ID until\n"
|
||||
"you revert.\n"
|
||||
"\n"
|
||||
"Once the model has downloaded, disable \"Spoof Device Model\" and click the \"Apply Tweaks\"\n"
|
||||
"button on the \"Apply\" page again to fix Face ID.", None))
|
||||
self.spoofModelChk.setText(QCoreApplication.translate("Nugget", u"Spoof Device Model", None))
|
||||
self.springboardOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Springboard Options", None))
|
||||
self.label_13.setText(QCoreApplication.translate("Nugget", u"Lock Screen Footnote Text", None))
|
||||
self.footnoteTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Footnote Text", None))
|
||||
|
||||
@@ -90,3 +90,43 @@ class EligibilityTweak(Tweak):
|
||||
# return the new files to restore
|
||||
return files_to_restore
|
||||
|
||||
|
||||
class AITweak(Tweak):
|
||||
def __init__(self):
|
||||
super().__init__(label="Enable Apple Intelligence (for Unsupported Devices) (Eligibility)", key=None, value="", min_version=Version("18.1"))
|
||||
|
||||
def set_language_code(self, lang: str):
|
||||
self.value = lang
|
||||
|
||||
def apply_tweak(self) -> FileToRestore:
|
||||
if not self.enabled:
|
||||
return None
|
||||
langs = ["en"]
|
||||
if self.value != "":
|
||||
langs.append(self.value)
|
||||
plist = {
|
||||
"OS_ELIGIBILITY_DOMAIN_CALCIUM": {
|
||||
"os_eligibility_answer_source_t": 1,
|
||||
"os_eligibility_answer_t": 2,
|
||||
"status": {
|
||||
"OS_ELIGIBILITY_INPUT_CHINA_CELLULAR": 2
|
||||
}
|
||||
},
|
||||
"OS_ELIGIBILITY_DOMAIN_GREYMATTER": {
|
||||
"context": {
|
||||
"OS_ELIGIBILITY_CONTEXT_ELIGIBLE_DEVICE_LANGUAGES": langs
|
||||
},
|
||||
"os_eligibility_answer_source_t": 1,
|
||||
"os_eligibility_answer_t": 4,
|
||||
"status": {
|
||||
"OS_ELIGIBILITY_INPUT_DEVICE_LANGUAGE": 3,
|
||||
"OS_ELIGIBILITY_INPUT_DEVICE_REGION_CODE": 3,
|
||||
"OS_ELIGIBILITY_INPUT_EXTERNAL_BOOT_DRIVE": 3,
|
||||
"OS_ELIGIBILITY_INPUT_GENERATIVE_MODEL_SYSTEM": 3,
|
||||
"OS_ELIGIBILITY_INPUT_SHARED_IPAD": 3,
|
||||
"OS_ELIGIBILITY_INPUT_SIRI_LANGUAGE": 3
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return FileToRestore(contents=plistlib.dumps(plist), restore_path="/var/db/eligibilityd/eligibility.plist")
|
||||
@@ -1,6 +1,6 @@
|
||||
from devicemanagement.constants import Version
|
||||
from .tweak_classes import MobileGestaltTweak, MobileGestaltMultiTweak, MobileGestaltPickerTweak, FeatureFlagTweak, TweakModifyType, BasicPlistTweak
|
||||
from .eligibility_tweak import EligibilityTweak
|
||||
from .eligibility_tweak import EligibilityTweak, AITweak
|
||||
from .basic_plist_locations import FileLocation
|
||||
|
||||
|
||||
@@ -37,6 +37,11 @@ tweaks = {
|
||||
"PhotoUI": FeatureFlagTweak("Enable Old Photo UI", flag_category='Photos', flag_names=['Lemonade'], is_list=False, inverted=True, min_version=Version("18.0")),
|
||||
"AI": FeatureFlagTweak("Enable Apple Intelligence", flag_category='SpringBoard', flag_names=['Domino', 'SuperDomino'], min_version=Version("18.1"), divider_below=True),
|
||||
|
||||
## AI Enabler
|
||||
"AIEligibility": AITweak(),
|
||||
"AIGestalt": MobileGestaltTweak("Enable Apple Intelligence (for Unsupported Devices) (Gestalt)", "A62OafQ85EJAiiqKn4agtg", min_version=Version("18.1")),
|
||||
"SpoofModel": MobileGestaltTweak("Spoof Device Model", "h9jDsbgj7xIVeIQ8S3/X3Q", value="iPhone17,3", min_version=Version("18.1"), divider_below=True),
|
||||
|
||||
## Springboard Tweaks
|
||||
"LockScreenFootnote": BasicPlistTweak(
|
||||
"Set Lock Screen Footnote Text",
|
||||
|
||||
Reference in New Issue
Block a user