diff --git a/README.md b/README.md
index b538b29..ee74dc0 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,11 @@
# Nugget
Unlock your device's full potential!
-Sparserestore works on all versions iOS 17.0-17.7 and iOS 18.0-18.1 beta 4. There is partial support for iOS 17.7.1 and iOS 18.1 beta 5+.
+Sparserestore works on all versions iOS 17.0-17.7 and iOS 18.0-18.1 beta 4. There is partial support for iOS 17.7.1 and iOS 18.1b5-18.2 beta 2.
-This uses the sparserestore exploit to write to files outside of the intended restore location, like mobilegestalt.
+**iOS 18.2 developer beta 3 (public beta 2) and newer is not supported.**
+
+This uses the sparserestore exploit to write to files outside of the intended restore location, like mobilegestalt. Read the [Getting the File](#getting-the-file) section to learn how to get your mobilegestalt file.
Note: I am not responsible if your device bootloops. Please back up your data before using!
@@ -30,17 +32,22 @@ Note: I am not responsible if your device bootloops. Please back up your data be
- AI Enabler
- Springboard Options (from Cowabunga Lite)
- Internal Options (from Cowabunga Lite)
+- Risky (Hidden) Options:
+ - OTA Killer
+ - Custom Resolution
## Running the Program
**Requirements:**
-- pymobiledevice3
-- Python 3.8 or newer
-
- **Windows:**
- Either [Apple Devices (from Microsoft Store)](https://apps.microsoft.com/detail/9np83lwlpz9k%3Fhl%3Den-US%26gl%3DUS&ved=2ahUKEwjE-svo7qyJAxWTlYkEHQpbH3oQFnoECBoQAQ&usg=AOvVaw0rZTXCFmRaHAifkEEu9tMI) app or [iTunes (from Apple website)](https://support.apple.com/en-us/106372)
- **Linux:**
- [usbmuxd](https://github.com/libimobiledevice/usbmuxd) and [libimobiledevice](https://github.com/libimobiledevice/libimobiledevice)
+- **For Running Python:**
+ - pymobiledevice3
+ - PySide6
+ - Python 3.8 or newer
+
Note: It is highly recommended to use a virtual environment:
```
python3 -m venv .env # only needed once
@@ -69,10 +76,14 @@ To compile the resources file for Python, run the following command:
The application itself can be compiled by running `compile.py`.
+## Read More
+If you would like to read more about the inner workings of the exploit and iOS restore system, I made a write up which you can read [here](https://gist.github.com/leminlimez/c602c067349140fe979410ef69d39c28).
+
## Credits
- [LeminLimez](https://github.com/leminlimez) for [Nugget](https://github.com/leminlimez/Nugget)
- [JJTech](https://github.com/JJTech0130) for Sparserestore/[TrollRestore](https://github.com/JJTech0130/TrollRestore)
-- [pymobiledevice3](https://github.com/doronz88/pymobiledevice3)
- [disfordottie](https://x.com/disfordottie) for some global flag features
-- [sneakyf1shy](https://github.com/f1shy-dev) for [AI Enabler](https://gist.github.com/f1shy-dev/23b4a78dc283edd30ae2b2e6429129b5)
-
+- [sneakyf1shy](https://github.com/f1shy-dev) for [AI Eligibility](https://gist.github.com/f1shy-dev/23b4a78dc283edd30ae2b2e6429129b5) (iOS 18.1 beta 4 and below)
+- [lrdsnow](https://github.com/Lrdsnow) for [EU Enabler](https://github.com/Lrdsnow/EUEnabler)
+- [pymobiledevice3](https://github.com/doronz88/pymobiledevice3) for restoring and device algorithms.
+- [PySide6](https://doc.qt.io/qtforpython-6/) for the GUI library.
diff --git a/compile.py b/compile.py
index 781dc2b..d50c727 100644
--- a/compile.py
+++ b/compile.py
@@ -12,8 +12,10 @@
'--add-data=files/:./files',
'--copy-metadata=pyimg4',
'--onedir',
+ '--noconfirm',
'--name=Nugget',
- '--icon=nugget.ico'
+ '--icon=nugget.ico',
+ '--optimize=2'
]
if platform == "darwin":
diff --git a/devicemanagement/constants.py b/devicemanagement/constants.py
index 6fa2e0c..9967548 100644
--- a/devicemanagement/constants.py
+++ b/devicemanagement/constants.py
@@ -13,6 +13,14 @@ def __init__(self, uuid: int, name: str, version: str, build: str, model: str, h
self.locale = locale
self.ld = ld
+ def is_exploit_fully_patched(self) -> bool:
+ parsed_ver: Version = Version(self.version)
+ # mobile gestalt methods are completely patched on iOS 18.2 dev beta 3+
+ if (parsed_ver < Version("18.2")
+ or self.build == "22C5109p" or self.build == "22C5125e"):
+ return False
+ return True
+
def has_exploit(self) -> bool:
parsed_ver: Version = Version(self.version)
# make sure versions past 17.7.1 but before 18.0 aren't supported
diff --git a/devicemanagement/device_manager.py b/devicemanagement/device_manager.py
index 1088713..fb0f28e 100644
--- a/devicemanagement/device_manager.py
+++ b/devicemanagement/device_manager.py
@@ -11,19 +11,37 @@
from devicemanagement.constants import Device, Version
from devicemanagement.data_singleton import DataSingleton
-from tweaks.tweaks import tweaks, FeatureFlagTweak, EligibilityTweak, AITweak, BasicPlistTweak, RdarFixTweak
+from tweaks.tweaks import tweaks, FeatureFlagTweak, EligibilityTweak, AITweak, BasicPlistTweak, AdvancedPlistTweak, RdarFixTweak
from tweaks.custom_gestalt_tweaks import CustomGestaltTweaks
-from tweaks.basic_plist_locations import FileLocationsList
+from tweaks.basic_plist_locations import FileLocationsList, RiskyFileLocationsList
from Sparserestore.restore import restore_files, FileToRestore
-def show_error_msg(txt: str):
+def show_error_msg(txt: str, detailed_txt: str = None):
detailsBox = QMessageBox()
detailsBox.setIcon(QMessageBox.Critical)
detailsBox.setWindowTitle("Error!")
detailsBox.setText(txt)
- detailsBox.setDetailedText(str(traceback.format_exc()))
+ if detailed_txt != None:
+ detailsBox.setDetailedText(detailed_txt)
detailsBox.exec()
+def show_apply_error(e: Exception, update_label=lambda x: None):
+ if "Find My" in str(e):
+ show_error_msg("Find My must be disabled in order to use this tool.",
+ detailed_txt="Disable Find My from Settings (Settings -> [Your Name] -> Find My) and then try again.")
+ elif "Encrypted Backup MDM" in str(e):
+ show_error_msg("Nugget cannot be used on this device. Click Show Details for more info.",
+ detailed_txt="Your device is managed and MDM backup encryption is on. This must be turned off in order for Nugget to work. Please do not use Nugget on your school/work device!")
+ elif "SessionInactive" in str(e):
+ show_error_msg("The session was terminated. Refresh the device list and try again.")
+ elif "Password" in str(e):
+ show_error_msg("Device is password protected! You must trust the computer on your device.",
+ detailed_txt="Unlock your device. On the popup, click \"Trust\", enter your password, then try again.")
+ else:
+ show_error_msg(type(e).__name__ + ": " + repr(e), detailed_txt=str(traceback.format_exc()))
+ print(traceback.format_exc())
+ update_label("Failed to restore")
+
class DeviceManager:
## Class Functions
def __init__(self):
@@ -33,8 +51,11 @@ def __init__(self):
# preferences
self.apply_over_wifi = True
- self.skip_setup = True
self.auto_reboot = True
+ self.allow_risky_tweaks = False
+ self.skip_setup = True
+ self.supervised = False
+ self.organization_name = ""
def get_devices(self, settings: QSettings):
self.devices.clear()
@@ -48,7 +69,7 @@ def get_devices(self, settings: QSettings):
If you are on Windows, make sure you have the \"Apple Devices\" app from the Microsoft Store or iTunes from Apple's website.
If you are on Linux, make sure you have usbmuxd and libimobiledevice installed.
- """
+ """, detailed_txt=str(traceback.format_exc())
)
self.set_current_device(index=None)
return
@@ -97,7 +118,7 @@ def get_devices(self, settings: QSettings):
self.devices.append(dev)
except Exception as e:
print(f"ERROR with lockdown device with UUID {device.serial}")
- show_error_msg(type(e).__name__ + ": " + repr(e))
+ show_error_msg(type(e).__name__ + ": " + repr(e), detailed_txt=str(traceback.format_exc()))
connected_devices.remove(device)
else:
connected_devices.remove(device)
@@ -153,11 +174,23 @@ def get_current_device_uuid(self) -> str:
else:
return self.data_singleton.current_device.uuid
+ def get_current_device_model(self) -> str:
+ if self.data_singleton.current_device == None:
+ return ""
+ else:
+ return self.data_singleton.current_device.model
+
def get_current_device_supported(self) -> bool:
if self.data_singleton.current_device == None:
return False
else:
return self.data_singleton.current_device.supported()
+
+ def get_current_device_patched(self) -> bool:
+ if self.data_singleton.current_device == None:
+ return True
+ else:
+ return self.data_singleton.current_device.is_exploit_fully_patched()
def reset_device_pairing(self):
@@ -182,6 +215,9 @@ def add_skip_setup(self, files_to_restore: list[FileToRestore]):
"PostSetupProfileWasInstalled": True,
"IsSupervised": False,
}
+ if self.supervised == True:
+ cloud_config_plist["IsSupervised"] = True
+ cloud_config_plist["OrganizationName"] = self.organization_name
files_to_restore.append(FileToRestore(
contents=plistlib.dumps(cloud_config_plist),
restore_path="systemgroup.com.apple.configurationprofiles/Library/ConfigurationProfiles/CloudConfigurationDetails.plist",
@@ -198,7 +234,13 @@ def add_skip_setup(self, files_to_restore: list[FileToRestore]):
domain="ManagedPreferencesDomain"
))
- def get_domain_for_path(self, path: str) -> str:
+ def get_domain_for_path(self, path: str, fully_patched: bool = False) -> str:
+ # just make the Sys Containers to use the regular way (won't work for mga)
+ sysSharedContainer = "SysSharedContainerDomain-"
+ sysContainer = "SysContainerDomain-"
+ if not fully_patched:
+ sysSharedContainer += "."
+ sysContainer += "."
mappings: dict = {
"/var/Managed Preferences/": "ManagedPreferencesDomain",
"/var/root/": "RootDomain",
@@ -206,13 +248,19 @@ def get_domain_for_path(self, path: str) -> str:
"/var/MobileDevice/": "MobileDeviceDomain",
"/var/mobile/": "HomeDomain",
"/var/db/": "DatabaseDomain",
- "/var/containers/Shared/SystemGroup/": "SysSharedContainerDomain-.",
- "/var/containers/Data/SystemGroup/": "SysContainerDomain-."
+ "/var/containers/Shared/SystemGroup/": sysSharedContainer,
+ "/var/containers/Data/SystemGroup/": sysContainer
}
for mapping in mappings.keys():
if path.startswith(mapping):
new_path = path.replace(mapping, "")
- return mappings[mapping], new_path
+ new_domain = mappings[mapping]
+ # if patched, include the next part of the path in the domain
+ if fully_patched and (new_domain == sysSharedContainer or new_domain == sysContainer):
+ parts = new_path.split("/")
+ new_domain += parts[0]
+ new_path = new_path.replace(parts[0] + "/", "")
+ return new_domain, new_path
return None, path
def concat_file(self, contents: str, path: str, files_to_restore: list[FileToRestore]):
@@ -222,7 +270,7 @@ def concat_file(self, contents: str, path: str, files_to_restore: list[FileToRes
restore_path=path
))
else:
- domain, file_path = self.get_domain_for_path(path)
+ domain, file_path = self.get_domain_for_path(path, fully_patched=self.get_current_device_patched())
files_to_restore.append(FileToRestore(
contents=contents,
restore_path=file_path,
@@ -254,8 +302,8 @@ def apply_changes(self, resetting: bool = False, update_label=lambda x: None):
eligibility_files = tweak.apply_tweak()
elif isinstance(tweak, AITweak):
ai_file = tweak.apply_tweak()
- elif isinstance(tweak, BasicPlistTweak) or isinstance(tweak, RdarFixTweak):
- basic_plists = tweak.apply_tweak(basic_plists)
+ elif isinstance(tweak, BasicPlistTweak) or isinstance(tweak, RdarFixTweak) or isinstance(tweak, AdvancedPlistTweak):
+ basic_plists = tweak.apply_tweak(basic_plists, self.allow_risky_tweaks)
else:
if gestalt_plist != None:
gestalt_plist = tweak.apply_tweak(gestalt_plist)
@@ -320,6 +368,13 @@ def apply_changes(self, resetting: bool = False, update_label=lambda x: None):
path=location.value,
files_to_restore=files_to_restore
)
+ if self.allow_risky_tweaks:
+ for location in RiskyFileLocationsList:
+ self.concat_file(
+ contents=empty_data,
+ path=location.value,
+ files_to_restore=files_to_restore
+ )
# restore to the device
update_label("Restoring to device...")
@@ -331,23 +386,7 @@ def apply_changes(self, resetting: bool = False, update_label=lambda x: None):
QMessageBox.information(None, "Success!", "All done! " + msg)
update_label("Success!")
except Exception as e:
- if "Find My" in str(e):
- detailsBox = QMessageBox()
- detailsBox.setIcon(QMessageBox.Critical)
- detailsBox.setWindowTitle("Error!")
- detailsBox.setText("Find My must be disabled in order to use this tool.")
- detailsBox.setDetailedText("Disable Find My from Settings (Settings -> [Your Name] -> Find My) and then try again.")
- detailsBox.exec()
- elif "SessionInactive" in str(e):
- detailsBox = QMessageBox()
- detailsBox.setIcon(QMessageBox.Critical)
- detailsBox.setWindowTitle("Error!")
- detailsBox.setText("The session was terminated. Refresh the device list and try again.")
- detailsBox.exec()
- else:
- print(traceback.format_exc())
- update_label("Failed to restore")
- show_error_msg(type(e).__name__ + ": " + repr(e))
+ show_apply_error(e, update_label)
## RESETTING MOBILE GESTALT
def reset_mobilegestalt(self, settings: QSettings, update_label=lambda x: None):
@@ -358,7 +397,9 @@ def reset_mobilegestalt(self, settings: QSettings, update_label=lambda x: None):
settings.setValue(self.data_singleton.current_device.uuid + "_model", "")
settings.setValue(self.data_singleton.current_device.uuid + "_hardware", "")
settings.setValue(self.data_singleton.current_device.uuid + "_cpu", "")
- domain, file_path = self.get_domain_for_path("/var/containers/Shared/SystemGroup/systemgroup.com.apple.mobilegestaltcache/Library/Caches/com.apple.MobileGestalt.plist")
+ domain, file_path = self.get_domain_for_path(
+ "/var/containers/Shared/SystemGroup/systemgroup.com.apple.mobilegestaltcache/Library/Caches/com.apple.MobileGestalt.plist",
+ fully_patched=self.get_current_device_patched())
restore_files(files=[FileToRestore(
contents=b"",
restore_path=file_path,
@@ -370,14 +411,4 @@ def reset_mobilegestalt(self, settings: QSettings, update_label=lambda x: None):
QMessageBox.information(None, "Success!", "All done! " + msg)
update_label("Success!")
except Exception as e:
- if "Find My" in str(e):
- detailsBox = QMessageBox()
- detailsBox.setIcon(QMessageBox.Critical)
- detailsBox.setWindowTitle("Error!")
- detailsBox.setText("Find My must be disabled in order to use this tool.")
- detailsBox.setDetailedText("Disable Find My from Settings (Settings -> [Your Name] -> Find My) and then try again.")
- detailsBox.exec()
- else:
- print(traceback.format_exc())
- update_label("Failed to restore")
- show_error_msg(type(e).__name__ + ": " + repr(e))
+ show_apply_error(e)
diff --git a/gui/main_window.py b/gui/main_window.py
index f24d202..571b11e 100644
--- a/gui/main_window.py
+++ b/gui/main_window.py
@@ -22,8 +22,9 @@ class Page(Enum):
EUEnabler = 3
Springboard = 4
InternalOptions = 5
- Apply = 6
- Settings = 7
+ RiskyTweaks = 6
+ Apply = 7
+ Settings = 8
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, device_manager: DeviceManager):
@@ -47,6 +48,7 @@ def __init__(self, device_manager: DeviceManager):
self.ui.euEnablerPageBtn.clicked.connect(self.on_euEnablerPageBtn_clicked)
self.ui.springboardOptionsPageBtn.clicked.connect(self.on_springboardOptionsPageBtn_clicked)
self.ui.internalOptionsPageBtn.clicked.connect(self.on_internalOptionsPageBtn_clicked)
+ self.ui.advancedPageBtn.clicked.connect(self.on_advancedPageBtn_clicked)
self.ui.applyPageBtn.clicked.connect(self.on_applyPageBtn_clicked)
self.ui.settingsPageBtn.clicked.connect(self.on_settingsPageBtn_clicked)
@@ -77,7 +79,6 @@ def __init__(self, device_manager: DeviceManager):
self.ui.enableAIChk.toggled.connect(self.on_enableAIChk_toggled)
self.ui.eligFileChk.toggled.connect(self.on_eligFileChk_toggled)
- self.ui.experimentalChk.toggled.connect(self.on_experimentalChk_toggled)
self.ui.languageTxt.hide() # to be removed later
self.ui.languageLbl.hide() # to be removed later
self.ui.languageTxt.textEdited.connect(self.on_languageTxt_textEdited)
@@ -102,7 +103,6 @@ def __init__(self, device_manager: DeviceManager):
self.ui.buildVersionChk.toggled.connect(self.on_buildVersionChk_clicked)
self.ui.RTLChk.toggled.connect(self.on_RTLChk_clicked)
self.ui.metalHUDChk.toggled.connect(self.on_metalHUDChk_clicked)
- self.ui.accessoryChk.toggled.connect(self.on_accessoryChk_clicked)
self.ui.iMessageChk.toggled.connect(self.on_iMessageChk_clicked)
self.ui.IDSChk.toggled.connect(self.on_IDSChk_clicked)
self.ui.VCChk.toggled.connect(self.on_VCChk_clicked)
@@ -114,6 +114,12 @@ def __init__(self, device_manager: DeviceManager):
self.ui.pasteSoundChk.toggled.connect(self.on_pasteSoundChk_clicked)
self.ui.notifyPastesChk.toggled.connect(self.on_notifyPastesChk_clicked)
+ ## RISKY OPTIONS PAGE ACTIONS
+ self.ui.disableOTAChk.toggled.connect(self.on_disableOTAChk_clicked)
+ self.ui.enableResolutionChk.toggled.connect(self.on_enableResolutionChk_clicked)
+ self.ui.resHeightTxt.textEdited.connect(self.on_resHeightTxt_textEdited)
+ self.ui.resWidthTxt.textEdited.connect(self.on_resWidthTxt_textEdited)
+
## APPLY PAGE ACTIONS
self.ui.applyTweaksBtn.clicked.connect(self.on_applyPageBtn_clicked)
self.ui.removeTweaksBtn.clicked.connect(self.on_removeTweaksBtn_clicked)
@@ -122,9 +128,12 @@ def __init__(self, device_manager: DeviceManager):
## SETTINGS PAGE ACTIONS
self.ui.allowWifiApplyingChk.toggled.connect(self.on_allowWifiApplyingChk_toggled)
- self.ui.skipSetupChk.toggled.connect(self.on_skipSetupChk_toggled)
self.ui.autoRebootChk.toggled.connect(self.on_autoRebootChk_toggled)
+ self.ui.showRiskyChk.toggled.connect(self.on_showRiskyChk_toggled)
+ self.ui.skipSetupChk.toggled.connect(self.on_skipSetupChk_toggled)
+ self.ui.supervisionChk.toggled.connect(self.on_supervisionChk_toggled)
+ self.ui.supervisionOrganization.textEdited.connect(self.on_supervisionOrgTxt_textEdited)
self.ui.resetPairBtn.clicked.connect(self.on_resetPairBtn_clicked)
## MOBILE GESTALT PAGE ACTIONS
@@ -152,6 +161,10 @@ def __init__(self, device_manager: DeviceManager):
self.ui.aodChk.clicked.connect(self.on_aodChk_clicked)
self.ui.addGestaltKeyBtn.clicked.connect(self.on_addGestaltKeyBtn_clicked)
+ self.ui.aiEnablerContent.hide()
+ self.ui.resChangerContent.hide()
+ self.ui.resHeightWarningLbl.hide()
+ self.ui.resWidthWarningLbl.hide()
## GENERAL INTERFACE FUNCTIONS
@@ -176,7 +189,6 @@ def refresh_devices(self):
# hide all pages
self.ui.explorePageBtn.hide()
- self.ui.locSimPageBtn.hide()
self.ui.sidebarDiv1.hide()
self.ui.gestaltPageBtn.hide()
@@ -184,6 +196,7 @@ def refresh_devices(self):
self.ui.euEnablerPageBtn.hide()
self.ui.springboardOptionsPageBtn.hide()
self.ui.internalOptionsPageBtn.hide()
+ self.ui.advancedPageBtn.hide()
self.ui.sidebarDiv2.hide()
self.ui.applyPageBtn.hide()
@@ -197,11 +210,14 @@ def refresh_devices(self):
# show all pages
self.ui.explorePageBtn.hide()
- self.ui.locSimPageBtn.hide()
self.ui.sidebarDiv1.show()
- self.ui.gestaltPageBtn.show()
self.ui.springboardOptionsPageBtn.show()
self.ui.internalOptionsPageBtn.show()
+
+ if self.device_manager.allow_risky_tweaks:
+ self.ui.advancedPageBtn.show()
+ else:
+ self.ui.advancedPageBtn.hide()
self.ui.sidebarDiv2.show()
self.ui.applyPageBtn.show()
@@ -211,6 +227,7 @@ def refresh_devices(self):
self.ui.euEnablerPageContent.setDisabled(False)
self.ui.springboardOptionsPageContent.setDisabled(False)
self.ui.internalOptionsPageContent.setDisabled(False)
+ self.ui.advancedOptionsPageContent.setDisabled(False)
self.ui.resetPairBtn.show()
@@ -218,13 +235,31 @@ def refresh_devices(self):
self.ui.devicePicker.setCurrentIndex(0)
self.change_selected_device(0)
+ def setup_spoofedModelDrp_models(self):
+ # hide all the models first
+ for i in range(1, self.ui.spoofedModelDrp.count()):
+ try:
+ self.ui.spoofedModelDrp.removeItem(1)
+ except:
+ pass
+ # indexes 1-6 for iPhones, 7-(len(values) - 1) for iPads
+ # TODO: Make this get fetched from the gui on app startup
+ spoof_drp_options = ["iPhone 15 Pro (iPhone16,1)", "iPhone 15 Pro Max (iPhone16,2)", "iPhone 16 (iPhone17,3)", "iPhone 16 Plus (iPhone17,4)", "iPhone 16 Pro (iPhone17,1)", "iPhone 16 Pro Max (iPhone17,2)", "iPad Mini (A17 Pro) (W) (iPad16,1)", "iPad Mini (A17 Pro) (C) (iPad16,2)", "iPad Pro (13-inch) (M4) (W) (iPad16,5)", "iPad Pro (13-inch) (M4) (C) (iPad16,6)", "iPad Pro (11-inch) (M4) (W) (iPad16,3)", "iPad Pro (11-inch) (M4) (C) (iPad16,4)", "iPad Pro (12.9-inch) (M2) (W) (iPad14,5)", "iPad Pro (12.9-inch) (M2) (C) (iPad14,6)", "iPad Pro (11-inch) (M2) (W) (iPad14,3)", "iPad Pro (11-inch) (M2) (C) (iPad14,4)", "iPad Air (13-inch) (M2) (W) (iPad14,10)", "iPad Air (13-inch) (M2) (C) (iPad14,11)", "iPad Air (11-inch) (M2) (W) (iPad14,8)", "iPad Air (11-inch) (M2) (C) (iPad14,9)", "iPad Pro (11-inch) (M1) (W) (iPad13,4)", "iPad Pro (11-inch) (M1) (C) (iPad13,5)", "iPad Pro (12.9-inch) (M1) (W) (iPad13,8)", "iPad Pro (12.9-inch) (M1) (C) (iPad13,9)", "iPad Air (M1) (W) (iPad13,16)", "iPad Air (M1) (C) (iPad13,17)"]
+ if self.device_manager.get_current_device_model().startswith("iPhone"):
+ # re-enable iPhone spoof models
+ self.ui.spoofedModelDrp.addItems(spoof_drp_options[:6])
+ else:
+ # re-enable iPad spoof models
+ self.ui.spoofedModelDrp.addItems(spoof_drp_options[6:])
+
def change_selected_device(self, index):
if len(self.device_manager.devices) > 0:
self.device_manager.set_current_device(index=index)
# hide options that are for newer versions
# remove the new dynamic island options
MinTweakVersions = {
- "exploit": [("18.0", self.ui.featureFlagsPageBtn)],
+ "no_patch": [self.ui.chooseGestaltBtn, self.ui.gestaltPageBtn, self.ui.resetGestaltBtn, self.ui.gestaltLocationLbl],
+ "exploit": [("18.0", self.ui.featureFlagsPageBtn), ("18.1", self.ui.eligFileChk)],
"18.1": [self.ui.enableAIChk, self.ui.aiEnablerContent],
"18.0": [self.ui.aodChk, self.ui.iphone16SettingsChk]
}
@@ -239,6 +274,7 @@ def change_selected_device(self, index):
pass
self.set_rdar_fix_label()
device_ver = Version(self.device_manager.data_singleton.current_device.version)
+ patched: bool = self.device_manager.get_current_device_patched()
# toggle option visibility for the minimum versions
for version in MinTweakVersions.keys():
if version == "exploit":
@@ -248,6 +284,13 @@ def change_selected_device(self, index):
pair[1].show()
else:
pair[1].hide()
+ elif version == "no_patch":
+ # hide patched version items
+ for view in MinTweakVersions[version]:
+ if patched:
+ view.hide()
+ else:
+ view.show()
else:
# show views if the version is higher
parsed_ver = Version(version)
@@ -269,7 +312,7 @@ def change_selected_device(self, index):
self.ui.dynamicIslandDrp.addItem("2622 (iPhone 16 Pro Dynamic Island)")
self.ui.dynamicIslandDrp.addItem("2868 (iPhone 16 Pro Max Dynamic Island)")
# eligibility page button
- if device_ver >= Version("17.4") and (device_ver <= Version("17.7") or device_ver >= Version("18.1")):
+ if not patched and device_ver >= Version("17.4") and (device_ver <= Version("17.7") or device_ver >= Version("18.1")):
self.ui.euEnablerPageBtn.show()
else:
self.ui.euEnablerPageBtn.hide()
@@ -277,6 +320,7 @@ def change_selected_device(self, index):
# hide the ai content if not on
if device_ver >= Version("18.1") and not tweaks["AIGestalt"].enabled:
self.ui.aiEnablerContent.hide()
+ self.setup_spoofedModelDrp_models()
else:
self.device_manager.set_current_device(index=None)
@@ -288,16 +332,25 @@ def loadSettings(self):
try:
# load the settings
apply_over_wifi = self.settings.value("apply_over_wifi", True, type=bool)
- skip_setup = self.settings.value("skip_setup", True, type=bool)
auto_reboot = self.settings.value("auto_reboot", True, type=bool)
+ risky_tweaks = self.settings.value("show_risky_tweaks", False, type=bool)
+ skip_setup = self.settings.value("skip_setup", True, type=bool)
+ supervised = self.settings.value("supervised", False, type=bool)
+ organization_name = self.settings.value("organization_name", "", type=str)
self.ui.allowWifiApplyingChk.setChecked(apply_over_wifi)
- self.ui.skipSetupChk.setChecked(skip_setup)
self.ui.autoRebootChk.setChecked(auto_reboot)
+ self.ui.showRiskyChk.setChecked(risky_tweaks)
+ self.ui.skipSetupChk.setChecked(skip_setup)
+ self.ui.supervisionChk.setChecked(supervised)
+ self.ui.supervisionOrganization.setText(organization_name)
self.device_manager.apply_over_wifi = apply_over_wifi
- self.device_manager.skip_setup = skip_setup
self.device_manager.auto_reboot = auto_reboot
+ self.device_manager.allow_risky_tweaks = risky_tweaks
+ self.device_manager.skip_setup = skip_setup
+ self.device_manager.supervised = supervised
+ self.device_manager.organization_name = organization_name
except:
pass
@@ -321,6 +374,9 @@ def on_springboardOptionsPageBtn_clicked(self):
def on_internalOptionsPageBtn_clicked(self):
self.ui.pages.setCurrentIndex(Page.InternalOptions.value)
+ def on_advancedPageBtn_clicked(self):
+ self.ui.pages.setCurrentIndex(Page.RiskyTweaks.value)
+
def on_applyPageBtn_clicked(self):
self.ui.pages.setCurrentIndex(Page.Apply.value)
@@ -362,7 +418,7 @@ def toggle_version_label(self):
def show_version_text(self, version: str, build: str):
support_str: str = "Supported!"
- if Version(version) < Version("17.0"):
+ if Version(version) < Version("17.0") or self.device_manager.get_current_device_patched():
support_str = "Not Supported."
elif not self.device_manager.get_current_device_supported():
# sparserestore partially patched
@@ -414,7 +470,13 @@ def on_dynamicIslandDrp_activated(self, index: int):
tweaks["DynamicIsland"].set_enabled(False)
tweaks["RdarFix"].set_di_type(-1)
else:
- tweaks["DynamicIsland"].set_selected_option(index - 1)
+ # disable X gestures on devices other than iPhone SEs
+ # the lazy way, better option would be to remove it from the menu but I didn't want to rework all that
+ model = self.device_manager.get_current_device_model()
+ if index != 1 or (model == "iPhone12,8" or model == "iPhone14,6"):
+ tweaks["DynamicIsland"].set_selected_option(index - 1)
+ else:
+ tweaks["DynamicIsland"].set_enabled(False)
tweaks["RdarFix"].set_di_type(tweaks["DynamicIsland"].value[tweaks["DynamicIsland"].get_selected_option()])
self.set_rdar_fix_label()
def on_rdarFixChk_clicked(self, checked: bool):
@@ -560,21 +622,22 @@ def on_eligFileChk_toggled(self, checked: bool):
else:
self.ui.languageTxt.hide()
self.ui.languageLbl.hide()
- def on_experimentalChk_toggled(self, checked: bool):
- tweaks["AIExperiment"].set_enabled(checked)
def on_languageTxt_textEdited(self, text: str):
tweaks["AIEligibility"].set_language_code(text)
def on_spoofedModelDrp_activated(self, index: int):
- tweaks["SpoofModel"].set_selected_option(index)
- tweaks["SpoofHardware"].set_selected_option(index)
- if index == 0:
- tweaks["SpoofCPU"].set_selected_option(0)
- elif index == 1 or index == 2:
- tweaks["SpoofCPU"].set_selected_option(1)
- else:
- tweaks["SpoofCPU"].set_selected_option(2)
+ idx_to_apply = index
+ if index > 0 and not self.device_manager.get_current_device_model().startswith("iPhone"):
+ # offset the index for ipads
+ idx_to_apply += 6
+ tweaks["SpoofModel"].set_selected_option(idx_to_apply)
+ tweaks["SpoofHardware"].set_selected_option(idx_to_apply)
+ tweaks["SpoofCPU"].set_selected_option(idx_to_apply)
+ if idx_to_apply == 0:
+ tweaks["SpoofModel"].set_enabled(False)
+ tweaks["SpoofHardware"].set_enabled(False)
+ tweaks["SpoofCPU"].set_enabled(False)
## SPRINGBOARD OPTIONS PAGE
@@ -583,9 +646,9 @@ def on_footnoteTxt_textEdited(self, text: str):
def on_disableLockRespringChk_clicked(self, checked: bool):
tweaks["SBDontLockAfterCrash"].set_enabled(checked)
- def on_disableBatteryAlertsChk_clicked(self, checked: bool):
- tweaks["SBDontDimOrLockOnAC"].set_enabled(checked)
def on_disableDimmingChk_clicked(self, checked: bool):
+ tweaks["SBDontDimOrLockOnAC"].set_enabled(checked)
+ def on_disableBatteryAlertsChk_clicked(self, checked: bool):
tweaks["SBHideLowPowerAlerts"].set_enabled(checked)
def on_disableCrumbChk_clicked(self, checked: bool):
tweaks["SBNeverBreadcrumb"].set_enabled(checked)
@@ -602,8 +665,6 @@ def on_RTLChk_clicked(self, checked: bool):
tweaks["RTL"].set_enabled(checked)
def on_metalHUDChk_clicked(self, checked: bool):
tweaks["MetalForceHudEnabled"].set_enabled(checked)
- def on_accessoryChk_clicked(self, checked: bool):
- tweaks["AccessoryDeveloperEnabled"].set_enabled(checked)
def on_iMessageChk_clicked(self, checked: bool):
tweaks["iMessageDiagnosticsEnabled"].set_enabled(checked)
def on_IDSChk_clicked(self, checked: bool):
@@ -627,20 +688,72 @@ def on_pasteSoundChk_clicked(self, checked: bool):
def on_notifyPastesChk_clicked(self, checked: bool):
tweaks["AnnounceAllPastes"].set_enabled(checked)
+ ## Risky Options Page
+ def on_disableOTAChk_clicked(self, checked: bool):
+ tweaks["DisableOTA"].set_enabled(checked)
+
+ def on_enableResolutionChk_clicked(self, checked: bool):
+ tweaks["CustomResolution"].set_enabled(checked)
+ # toggle the ui content
+ if checked:
+ self.ui.resChangerContent.show()
+ else:
+ self.ui.resChangerContent.hide()
+ def on_resHeightTxt_textEdited(self, txt: str):
+ if txt == "":
+ # remove the canvas_height value
+ tweaks["CustomResolution"].value.pop("canvas_height", None)
+ self.ui.resHeightWarningLbl.hide()
+ return
+ try:
+ val = int(txt)
+ tweaks["CustomResolution"].value["canvas_height"] = val
+ self.ui.resHeightWarningLbl.hide()
+ except:
+ self.ui.resHeightWarningLbl.show()
+ def on_resWidthTxt_textEdited(self, txt: str):
+ if txt == "":
+ # remove the canvas_width value
+ tweaks["CustomResolution"].value.pop("canvas_width", None)
+ self.ui.resWidthWarningLbl.hide()
+ return
+ try:
+ val = int(txt)
+ tweaks["CustomResolution"].value["canvas_width"] = val
+ self.ui.resWidthWarningLbl.hide()
+ except:
+ self.ui.resWidthWarningLbl.show()
+
## SETTINGS PAGE
def on_allowWifiApplyingChk_toggled(self, checked: bool):
self.device_manager.apply_over_wifi = checked
# save the setting
self.settings.setValue("apply_over_wifi", checked)
- def on_skipSetupChk_toggled(self, checked: bool):
- self.device_manager.skip_setup = checked
+ def on_showRiskyChk_toggled(self, checked: bool):
+ self.device_manager.allow_risky_tweaks = checked
# save the setting
- self.settings.setValue("skip_setup", checked)
+ self.settings.setValue("show_risky_tweaks", checked)
+ # toggle the button visibility
+ if checked:
+ self.ui.advancedPageBtn.show()
+ else:
+ self.ui.advancedPageBtn.hide()
def on_autoRebootChk_toggled(self, checked: bool):
self.device_manager.auto_reboot = checked
# save the setting
self.settings.setValue("auto_reboot", checked)
+ def on_skipSetupChk_toggled(self, checked: bool):
+ self.device_manager.skip_setup = checked
+ # save the setting
+ self.settings.setValue("skip_setup", checked)
+ def on_supervisionOrgTxt_textEdited(self, text: str):
+ self.device_manager.organization_name = text
+ self.settings.setValue("organization_name", text)
+ def on_supervisionChk_toggled(self, checked: bool):
+ self.device_manager.supervised = checked
+ # save the setting
+ self.settings.setValue("supervised", checked)
# Device Options
def on_resetPairBtn_clicked(self):
diff --git a/mainwindow_ui.py b/mainwindow_ui.py
index ebdfe69..36ce427 100644
--- a/mainwindow_ui.py
+++ b/mainwindow_ui.py
@@ -320,19 +320,6 @@ def setupUi(self, Nugget):
self.verticalLayout.addWidget(self.explorePageBtn)
- self.locSimPageBtn = QToolButton(self.sidebar)
- self.locSimPageBtn.setObjectName(u"locSimPageBtn")
- sizePolicy2.setHeightForWidth(self.locSimPageBtn.sizePolicy().hasHeightForWidth())
- self.locSimPageBtn.setSizePolicy(sizePolicy2)
- icon4 = QIcon()
- icon4.addFile(u":/icon/geo-alt.svg", QSize(), QIcon.Normal, QIcon.Off)
- self.locSimPageBtn.setIcon(icon4)
- self.locSimPageBtn.setCheckable(True)
- self.locSimPageBtn.setAutoExclusive(True)
- self.locSimPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
-
- self.verticalLayout.addWidget(self.locSimPageBtn)
-
self.sidebarDiv1 = QFrame(self.sidebar)
self.sidebarDiv1.setObjectName(u"sidebarDiv1")
self.sidebarDiv1.setStyleSheet(u"QFrame {\n"
@@ -347,9 +334,9 @@ def setupUi(self, Nugget):
self.gestaltPageBtn.setObjectName(u"gestaltPageBtn")
sizePolicy2.setHeightForWidth(self.gestaltPageBtn.sizePolicy().hasHeightForWidth())
self.gestaltPageBtn.setSizePolicy(sizePolicy2)
- icon5 = QIcon()
- icon5.addFile(u":/icon/iphone-island.svg", QSize(), QIcon.Normal, QIcon.Off)
- self.gestaltPageBtn.setIcon(icon5)
+ icon4 = QIcon()
+ icon4.addFile(u":/icon/iphone-island.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.gestaltPageBtn.setIcon(icon4)
self.gestaltPageBtn.setIconSize(QSize(24, 28))
self.gestaltPageBtn.setCheckable(True)
self.gestaltPageBtn.setAutoExclusive(True)
@@ -365,9 +352,9 @@ def setupUi(self, Nugget):
font = QFont()
font.setFamilies([u".AppleSystemUIFont"])
self.featureFlagsPageBtn.setFont(font)
- icon6 = QIcon()
- icon6.addFile(u":/icon/flag.svg", QSize(), QIcon.Normal, QIcon.Off)
- self.featureFlagsPageBtn.setIcon(icon6)
+ icon5 = QIcon()
+ icon5.addFile(u":/icon/flag.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.featureFlagsPageBtn.setIcon(icon5)
self.featureFlagsPageBtn.setCheckable(True)
self.featureFlagsPageBtn.setAutoExclusive(True)
self.featureFlagsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
@@ -378,7 +365,9 @@ def setupUi(self, Nugget):
self.euEnablerPageBtn.setObjectName(u"euEnablerPageBtn")
sizePolicy2.setHeightForWidth(self.euEnablerPageBtn.sizePolicy().hasHeightForWidth())
self.euEnablerPageBtn.setSizePolicy(sizePolicy2)
- self.euEnablerPageBtn.setIcon(icon4)
+ icon6 = QIcon()
+ icon6.addFile(u":/icon/geo-alt.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.euEnablerPageBtn.setIcon(icon6)
self.euEnablerPageBtn.setCheckable(True)
self.euEnablerPageBtn.setAutoExclusive(True)
self.euEnablerPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
@@ -411,6 +400,19 @@ def setupUi(self, Nugget):
self.verticalLayout.addWidget(self.internalOptionsPageBtn)
+ self.advancedPageBtn = QToolButton(self.sidebar)
+ self.advancedPageBtn.setObjectName(u"advancedPageBtn")
+ sizePolicy2.setHeightForWidth(self.advancedPageBtn.sizePolicy().hasHeightForWidth())
+ self.advancedPageBtn.setSizePolicy(sizePolicy2)
+ icon9 = QIcon()
+ icon9.addFile(u":/icon/star.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.advancedPageBtn.setIcon(icon9)
+ self.advancedPageBtn.setCheckable(True)
+ self.advancedPageBtn.setAutoExclusive(True)
+ self.advancedPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.verticalLayout.addWidget(self.advancedPageBtn)
+
self.sidebarDiv2 = QFrame(self.sidebar)
self.sidebarDiv2.setObjectName(u"sidebarDiv2")
self.sidebarDiv2.setStyleSheet(u"QFrame {\n"
@@ -425,9 +427,9 @@ def setupUi(self, Nugget):
self.applyPageBtn.setObjectName(u"applyPageBtn")
sizePolicy2.setHeightForWidth(self.applyPageBtn.sizePolicy().hasHeightForWidth())
self.applyPageBtn.setSizePolicy(sizePolicy2)
- icon9 = QIcon()
- icon9.addFile(u":/icon/check-circle.svg", QSize(), QIcon.Normal, QIcon.Off)
- self.applyPageBtn.setIcon(icon9)
+ icon10 = QIcon()
+ icon10.addFile(u":/icon/check-circle.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.applyPageBtn.setIcon(icon10)
self.applyPageBtn.setCheckable(True)
self.applyPageBtn.setAutoExclusive(True)
self.applyPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
@@ -438,9 +440,9 @@ def setupUi(self, Nugget):
self.settingsPageBtn.setObjectName(u"settingsPageBtn")
sizePolicy2.setHeightForWidth(self.settingsPageBtn.sizePolicy().hasHeightForWidth())
self.settingsPageBtn.setSizePolicy(sizePolicy2)
- icon10 = QIcon()
- icon10.addFile(u":/icon/gear.svg", QSize(), QIcon.Normal, QIcon.Off)
- self.settingsPageBtn.setIcon(icon10)
+ icon11 = QIcon()
+ icon11.addFile(u":/icon/gear.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.settingsPageBtn.setIcon(icon11)
self.settingsPageBtn.setCheckable(True)
self.settingsPageBtn.setAutoExclusive(True)
self.settingsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
@@ -469,6 +471,7 @@ def setupUi(self, Nugget):
self.pages.setObjectName(u"pages")
self.homePage = QWidget()
self.homePage.setObjectName(u"homePage")
+ self.homePage.setFont(font)
self.verticalLayout_2 = QVBoxLayout(self.homePage)
self.verticalLayout_2.setObjectName(u"verticalLayout_2")
self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
@@ -550,9 +553,9 @@ def setupUi(self, Nugget):
" background-color: transparent;\n"
" padding: 0px;\n"
"}")
- icon11 = QIcon()
- icon11.addFile(u":/credits/big_nugget.png", QSize(), QIcon.Normal, QIcon.Off)
- self.bigNuggetBtn.setIcon(icon11)
+ icon12 = QIcon()
+ icon12.addFile(u":/credits/big_nugget.png", QSize(), QIcon.Normal, QIcon.Off)
+ self.bigNuggetBtn.setIcon(icon12)
self.bigNuggetBtn.setIconSize(QSize(150, 200))
self.horizontalLayout_27.addWidget(self.bigNuggetBtn)
@@ -587,18 +590,16 @@ def setupUi(self, Nugget):
self.horizontalLayout_8.setContentsMargins(-1, -1, 0, 0)
self.discordBtn = QToolButton(self.verticalWidget1)
self.discordBtn.setObjectName(u"discordBtn")
- icon12 = QIcon()
- icon12.addFile(u":/icon/discord.svg", QSize(), QIcon.Normal, QIcon.Off)
- self.discordBtn.setIcon(icon12)
+ icon13 = QIcon()
+ icon13.addFile(u":/icon/discord.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.discordBtn.setIcon(icon13)
self.discordBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.horizontalLayout_8.addWidget(self.discordBtn)
self.starOnGithubBtn = QToolButton(self.verticalWidget1)
self.starOnGithubBtn.setObjectName(u"starOnGithubBtn")
- icon13 = QIcon()
- icon13.addFile(u":/icon/star.svg", QSize(), QIcon.Normal, QIcon.Off)
- self.starOnGithubBtn.setIcon(icon13)
+ self.starOnGithubBtn.setIcon(icon9)
self.starOnGithubBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.horizontalLayout_8.addWidget(self.starOnGithubBtn)
@@ -896,7 +897,7 @@ def setupUi(self, Nugget):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
- self.toolButton_8.setIcon(icon5)
+ self.toolButton_8.setIcon(icon4)
self.toolButton_8.setIconSize(QSize(30, 30))
self.horizontalLayout_5.addWidget(self.toolButton_8)
@@ -937,6 +938,12 @@ def setupUi(self, Nugget):
self.verticalLayout_4.addWidget(self.line_8)
+ self.mgaWarningLbl = QLabel(self.gestaltPage)
+ self.mgaWarningLbl.setObjectName(u"mgaWarningLbl")
+ self.mgaWarningLbl.setFont(font2)
+
+ self.verticalLayout_4.addWidget(self.mgaWarningLbl)
+
self.scrollArea = QScrollArea(self.gestaltPage)
self.scrollArea.setObjectName(u"scrollArea")
self.scrollArea.setFrameShape(QFrame.NoFrame)
@@ -945,7 +952,7 @@ def setupUi(self, Nugget):
self.scrollArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.scrollAreaWidgetContents = QWidget()
self.scrollAreaWidgetContents.setObjectName(u"scrollAreaWidgetContents")
- self.scrollAreaWidgetContents.setGeometry(QRect(0, -420, 650, 1200))
+ self.scrollAreaWidgetContents.setGeometry(QRect(0, 0, 650, 1200))
self.scrollAreaWidgetContents.setMinimumSize(QSize(650, 1200))
self.scrollAreaWidgetContents.setMaximumSize(QSize(650, 1200))
self.verticalLayout_9 = QVBoxLayout(self.scrollAreaWidgetContents)
@@ -953,7 +960,7 @@ def setupUi(self, Nugget):
self.verticalLayout_9.setContentsMargins(0, 0, 0, 0)
self.gestaltPageContent = QWidget(self.scrollAreaWidgetContents)
self.gestaltPageContent.setObjectName(u"gestaltPageContent")
- self.gestaltPageContent.setEnabled(False)
+ self.gestaltPageContent.setEnabled(True)
self.verticalLayout_8 = QVBoxLayout(self.gestaltPageContent)
self.verticalLayout_8.setObjectName(u"verticalLayout_8")
self.verticalLayout_8.setContentsMargins(0, 0, 0, 0)
@@ -1049,14 +1056,6 @@ def setupUi(self, Nugget):
self.verticalLayout_8.addWidget(self.parallaxChk)
- self.horizontalWidget4 = QWidget(self.gestaltPageContent)
- self.horizontalWidget4.setObjectName(u"horizontalWidget4")
- self.horizontalLayout_10 = QHBoxLayout(self.horizontalWidget4)
- self.horizontalLayout_10.setObjectName(u"horizontalLayout_10")
- self.horizontalLayout_10.setContentsMargins(0, 0, 0, 0)
-
- self.verticalLayout_8.addWidget(self.horizontalWidget4)
-
self.line_7 = QFrame(self.gestaltPageContent)
self.line_7.setObjectName(u"line_7")
self.line_7.setStyleSheet(u"QFrame {\n"
@@ -1137,11 +1136,6 @@ def setupUi(self, Nugget):
self.verticalLayout_8.addWidget(self.collisionSOSChk)
- self.sleepApneaChk = QCheckBox(self.gestaltPageContent)
- self.sleepApneaChk.setObjectName(u"sleepApneaChk")
-
- self.verticalLayout_8.addWidget(self.sleepApneaChk)
-
self.aodChk = QCheckBox(self.gestaltPageContent)
self.aodChk.setObjectName(u"aodChk")
@@ -1162,12 +1156,13 @@ def setupUi(self, Nugget):
self.horizontalLayout_11.setContentsMargins(-1, -1, -1, 0)
self.label_10 = QLabel(self.gestaltPageContent)
self.label_10.setObjectName(u"label_10")
+ self.label_10.setEnabled(True)
self.horizontalLayout_11.addWidget(self.label_10)
self.addGestaltKeyBtn = QToolButton(self.gestaltPageContent)
self.addGestaltKeyBtn.setObjectName(u"addGestaltKeyBtn")
- self.addGestaltKeyBtn.setEnabled(False)
+ self.addGestaltKeyBtn.setEnabled(True)
icon18 = QIcon()
icon18.addFile(u":/icon/plus.svg", QSize(), QIcon.Normal, QIcon.Off)
self.addGestaltKeyBtn.setIcon(icon18)
@@ -1179,6 +1174,11 @@ def setupUi(self, Nugget):
self.verticalLayout_8.addLayout(self.horizontalLayout_11)
+ self.label_12 = QLabel(self.gestaltPageContent)
+ self.label_12.setObjectName(u"label_12")
+
+ self.verticalLayout_8.addWidget(self.label_12)
+
self.line_23 = QFrame(self.gestaltPageContent)
self.line_23.setObjectName(u"line_23")
self.line_23.setStyleSheet(u"QFrame {\n"
@@ -1191,8 +1191,14 @@ def setupUi(self, Nugget):
self.customKeysCnt = QWidget(self.gestaltPageContent)
self.customKeysCnt.setObjectName(u"customKeysCnt")
+ self.customKeysCnt.setEnabled(True)
self.verticalLayout_32 = QVBoxLayout(self.customKeysCnt)
self.verticalLayout_32.setObjectName(u"verticalLayout_32")
+ self.customKeysLayout = QVBoxLayout()
+ self.customKeysLayout.setObjectName(u"customKeysLayout")
+
+ self.verticalLayout_32.addLayout(self.customKeysLayout)
+
self.verticalLayout_8.addWidget(self.customKeysCnt)
@@ -1229,7 +1235,7 @@ def setupUi(self, Nugget):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
- self.toolButton_10.setIcon(icon6)
+ self.toolButton_10.setIcon(icon5)
self.horizontalLayout_20.addWidget(self.toolButton_10)
@@ -1335,7 +1341,7 @@ def setupUi(self, Nugget):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
- self.toolButton_11.setIcon(icon4)
+ self.toolButton_11.setIcon(icon6)
self.horizontalLayout_21.addWidget(self.toolButton_11)
@@ -1375,23 +1381,28 @@ def setupUi(self, Nugget):
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)
self.verticalLayout_16 = QVBoxLayout(self.euEnablerPageContent)
self.verticalLayout_16.setObjectName(u"verticalLayout_16")
self.verticalLayout_16.setContentsMargins(0, 0, 0, 0)
- self.label_5 = QLabel(self.euEnablerPageContent)
+ self.euEnablerContent = QWidget(self.euEnablerPageContent)
+ self.euEnablerContent.setObjectName(u"euEnablerContent")
+ self.verticalLayout_36 = QVBoxLayout(self.euEnablerContent)
+ self.verticalLayout_36.setObjectName(u"verticalLayout_36")
+ self.verticalLayout_36.setContentsMargins(0, 0, 0, 0)
+ self.euEnablerEnabledChk = QCheckBox(self.euEnablerContent)
+ self.euEnablerEnabledChk.setObjectName(u"euEnablerEnabledChk")
+
+ self.verticalLayout_36.addWidget(self.euEnablerEnabledChk)
+
+ self.label_5 = QLabel(self.euEnablerContent)
self.label_5.setObjectName(u"label_5")
- self.verticalLayout_16.addWidget(self.label_5)
+ self.verticalLayout_36.addWidget(self.label_5)
- self.methodChoiceDrp = QComboBox(self.euEnablerPageContent)
+ self.methodChoiceDrp = QComboBox(self.euEnablerContent)
self.methodChoiceDrp.addItem("")
self.methodChoiceDrp.addItem("")
self.methodChoiceDrp.setObjectName(u"methodChoiceDrp")
@@ -1429,19 +1440,19 @@ def setupUi(self, Nugget):
" color: #ffffff;\n"
"}")
- self.verticalLayout_16.addWidget(self.methodChoiceDrp)
+ self.verticalLayout_36.addWidget(self.methodChoiceDrp)
- self.label_6 = QLabel(self.euEnablerPageContent)
+ self.label_6 = QLabel(self.euEnablerContent)
self.label_6.setObjectName(u"label_6")
- self.verticalLayout_16.addWidget(self.label_6)
+ self.verticalLayout_36.addWidget(self.label_6)
- self.regionCodeTxt = QLineEdit(self.euEnablerPageContent)
+ self.regionCodeTxt = QLineEdit(self.euEnablerContent)
self.regionCodeTxt.setObjectName(u"regionCodeTxt")
- self.verticalLayout_16.addWidget(self.regionCodeTxt)
+ self.verticalLayout_36.addWidget(self.regionCodeTxt)
- self.line_16 = QFrame(self.euEnablerPageContent)
+ self.line_16 = QFrame(self.euEnablerContent)
self.line_16.setObjectName(u"line_16")
self.line_16.setEnabled(False)
self.line_16.setStyleSheet(u"QFrame {\n"
@@ -1450,7 +1461,16 @@ def setupUi(self, Nugget):
self.line_16.setFrameShadow(QFrame.Plain)
self.line_16.setFrameShape(QFrame.HLine)
- self.verticalLayout_16.addWidget(self.line_16)
+ self.verticalLayout_36.addWidget(self.line_16)
+
+
+ self.verticalLayout_16.addWidget(self.euEnablerContent)
+
+ self.mgaWarningLbl2 = QLabel(self.euEnablerPageContent)
+ self.mgaWarningLbl2.setObjectName(u"mgaWarningLbl2")
+ self.mgaWarningLbl2.setFont(font2)
+
+ self.verticalLayout_16.addWidget(self.mgaWarningLbl2)
self.enableAIChk = QCheckBox(self.euEnablerPageContent)
self.enableAIChk.setObjectName(u"enableAIChk")
@@ -1462,6 +1482,11 @@ def setupUi(self, Nugget):
self.verticalLayout_34 = QVBoxLayout(self.aiEnablerContent)
self.verticalLayout_34.setObjectName(u"verticalLayout_34")
self.verticalLayout_34.setContentsMargins(0, 5, 0, 5)
+ self.eligFileChk = QCheckBox(self.aiEnablerContent)
+ self.eligFileChk.setObjectName(u"eligFileChk")
+
+ self.verticalLayout_34.addWidget(self.eligFileChk)
+
self.languageLbl = QLabel(self.aiEnablerContent)
self.languageLbl.setObjectName(u"languageLbl")
@@ -1486,7 +1511,9 @@ def setupUi(self, Nugget):
self.aiInfoLabel.setObjectName(u"aiInfoLabel")
sizePolicy1.setHeightForWidth(self.aiInfoLabel.sizePolicy().hasHeightForWidth())
self.aiInfoLabel.setSizePolicy(sizePolicy1)
+ self.aiInfoLabel.setMaximumSize(QSize(16777215, 16777215))
self.aiInfoLabel.setTextFormat(Qt.AutoText)
+ self.aiInfoLabel.setScaledContents(False)
self.verticalLayout_34.addWidget(self.aiInfoLabel)
@@ -1501,6 +1528,28 @@ def setupUi(self, Nugget):
self.spoofedModelDrp.addItem("")
self.spoofedModelDrp.addItem("")
self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
self.spoofedModelDrp.setObjectName(u"spoofedModelDrp")
self.spoofedModelDrp.setMaximumSize(QSize(325, 16777215))
self.spoofedModelDrp.setStyleSheet(u"QComboBox {\n"
@@ -1768,11 +1817,6 @@ def setupUi(self, Nugget):
self.verticalLayout_131.addWidget(self.metalHUDChk)
- self.accessoryChk = QCheckBox(self.internalOptionsPageContent)
- self.accessoryChk.setObjectName(u"accessoryChk")
-
- self.verticalLayout_131.addWidget(self.accessoryChk)
-
self.iMessageChk = QCheckBox(self.internalOptionsPageContent)
self.iMessageChk.setObjectName(u"iMessageChk")
@@ -1861,6 +1905,144 @@ def setupUi(self, Nugget):
self.verticalLayout_141.addWidget(self.internalOptionsPageContent)
self.pages.addWidget(self.internalOptionsPage)
+ self.advancedOptionsPage = QWidget()
+ self.advancedOptionsPage.setObjectName(u"advancedOptionsPage")
+ self.verticalLayout_142 = QVBoxLayout(self.advancedOptionsPage)
+ self.verticalLayout_142.setObjectName(u"verticalLayout_142")
+ self.verticalLayout_142.setContentsMargins(0, 0, 0, 0)
+ self.horizontalWidget_52 = QWidget(self.advancedOptionsPage)
+ self.horizontalWidget_52.setObjectName(u"horizontalWidget_52")
+ self.horizontalLayout_202 = QHBoxLayout(self.horizontalWidget_52)
+ self.horizontalLayout_202.setSpacing(10)
+ self.horizontalLayout_202.setObjectName(u"horizontalLayout_202")
+ self.horizontalLayout_202.setContentsMargins(0, 9, 0, 9)
+ self.toolButton_102 = QToolButton(self.horizontalWidget_52)
+ self.toolButton_102.setObjectName(u"toolButton_102")
+ self.toolButton_102.setEnabled(False)
+ self.toolButton_102.setStyleSheet(u"QToolButton {\n"
+" icon-size: 24px;\n"
+" background-color: transparent;\n"
+" padding-left: 0px;\n"
+" padding-right: 5px;\n"
+" border-radius: 0px;\n"
+"}")
+ self.toolButton_102.setIcon(icon9)
+
+ self.horizontalLayout_202.addWidget(self.toolButton_102)
+
+ self.verticalWidget_42 = QWidget(self.horizontalWidget_52)
+ self.verticalWidget_42.setObjectName(u"verticalWidget_42")
+ self.verticalLayout_122 = QVBoxLayout(self.verticalWidget_42)
+ self.verticalLayout_122.setSpacing(6)
+ self.verticalLayout_122.setObjectName(u"verticalLayout_122")
+ self.verticalLayout_122.setContentsMargins(0, 0, 0, 0)
+ self.advancedOptionsLbl = QLabel(self.verticalWidget_42)
+ self.advancedOptionsLbl.setObjectName(u"advancedOptionsLbl")
+ self.advancedOptionsLbl.setFont(font1)
+
+ self.verticalLayout_122.addWidget(self.advancedOptionsLbl)
+
+ self.verticalSpacer_181 = QSpacerItem(20, 16, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
+
+ self.verticalLayout_122.addItem(self.verticalSpacer_181)
+
+
+ self.horizontalLayout_202.addWidget(self.verticalWidget_42)
+
+ self.horizontalSpacer_72 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_202.addItem(self.horizontalSpacer_72)
+
+
+ self.verticalLayout_142.addWidget(self.horizontalWidget_52)
+
+ self.line_122 = QFrame(self.advancedOptionsPage)
+ self.line_122.setObjectName(u"line_122")
+ self.line_122.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_122.setFrameShadow(QFrame.Plain)
+ self.line_122.setFrameShape(QFrame.HLine)
+
+ self.verticalLayout_142.addWidget(self.line_122)
+
+ self.advancedOptionsPageContent = QWidget(self.advancedOptionsPage)
+ self.advancedOptionsPageContent.setObjectName(u"advancedOptionsPageContent")
+ self.advancedOptionsPageContent.setEnabled(False)
+ self.verticalLayout_132 = QVBoxLayout(self.advancedOptionsPageContent)
+ self.verticalLayout_132.setObjectName(u"verticalLayout_132")
+ self.verticalLayout_132.setContentsMargins(0, 0, 0, 0)
+ self.label_17 = QLabel(self.advancedOptionsPageContent)
+ self.label_17.setObjectName(u"label_17")
+
+ self.verticalLayout_132.addWidget(self.label_17)
+
+ self.line_191 = QFrame(self.advancedOptionsPageContent)
+ self.line_191.setObjectName(u"line_191")
+ self.line_191.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_191.setFrameShadow(QFrame.Plain)
+ self.line_191.setFrameShape(QFrame.HLine)
+
+ self.verticalLayout_132.addWidget(self.line_191)
+
+ self.disableOTAChk = QCheckBox(self.advancedOptionsPageContent)
+ self.disableOTAChk.setObjectName(u"disableOTAChk")
+
+ self.verticalLayout_132.addWidget(self.disableOTAChk)
+
+ self.line_181 = QFrame(self.advancedOptionsPageContent)
+ self.line_181.setObjectName(u"line_181")
+ self.line_181.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_181.setFrameShadow(QFrame.Plain)
+ self.line_181.setFrameShape(QFrame.HLine)
+
+ self.verticalLayout_132.addWidget(self.line_181)
+
+ self.enableResolutionChk = QCheckBox(self.advancedOptionsPageContent)
+ self.enableResolutionChk.setObjectName(u"enableResolutionChk")
+
+ self.verticalLayout_132.addWidget(self.enableResolutionChk)
+
+ self.resolutionContent = QVBoxLayout()
+ self.resolutionContent.setObjectName(u"resolutionContent")
+ self.resolutionContent.setContentsMargins(-1, -1, -1, 10)
+ self.resHeightLbl = QLabel(self.advancedOptionsPageContent)
+ self.resHeightLbl.setObjectName(u"resHeightLbl")
+ self.resHeightLbl.setEnabled(False)
+
+ self.resolutionContent.addWidget(self.resHeightLbl)
+
+ self.resHeightTxt = QLineEdit(self.advancedOptionsPageContent)
+ self.resHeightTxt.setObjectName(u"resHeightTxt")
+ self.resHeightTxt.setEnabled(False)
+
+ self.resolutionContent.addWidget(self.resHeightTxt)
+
+ self.resWidthLbl = QLabel(self.advancedOptionsPageContent)
+ self.resWidthLbl.setObjectName(u"resWidthLbl")
+
+ self.resolutionContent.addWidget(self.resWidthLbl)
+
+ self.resWidthTxt = QLineEdit(self.advancedOptionsPageContent)
+ self.resWidthTxt.setObjectName(u"resWidthTxt")
+
+ self.resolutionContent.addWidget(self.resWidthTxt)
+
+
+ self.verticalLayout_132.addLayout(self.resolutionContent)
+
+ self.verticalSpacer_62 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_132.addItem(self.verticalSpacer_62)
+
+
+ self.verticalLayout_142.addWidget(self.advancedOptionsPageContent)
+
+ self.pages.addWidget(self.advancedOptionsPage)
self.applyPage = QWidget()
self.applyPage.setObjectName(u"applyPage")
self.verticalLayout_6 = QVBoxLayout(self.applyPage)
@@ -1887,7 +2069,7 @@ def setupUi(self, Nugget):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
- self.toolButton_18.setIcon(icon9)
+ self.toolButton_18.setIcon(icon10)
self.horizontalLayout_33.addWidget(self.toolButton_18)
@@ -1959,20 +2141,20 @@ def setupUi(self, Nugget):
self.verticalLayout_24.addLayout(self.horizontalLayout_7)
- self.horizontalWidget5 = QWidget(self.verticalWidget2)
- self.horizontalWidget5.setObjectName(u"horizontalWidget5")
- self.horizontalLayout_17 = QHBoxLayout(self.horizontalWidget5)
+ self.horizontalWidget4 = QWidget(self.verticalWidget2)
+ self.horizontalWidget4.setObjectName(u"horizontalWidget4")
+ self.horizontalLayout_17 = QHBoxLayout(self.horizontalWidget4)
self.horizontalLayout_17.setObjectName(u"horizontalLayout_17")
self.horizontalLayout_17.setContentsMargins(0, 0, 0, 0)
- self.applyTweaksBtn = QToolButton(self.horizontalWidget5)
+ self.applyTweaksBtn = QToolButton(self.horizontalWidget4)
self.applyTweaksBtn.setObjectName(u"applyTweaksBtn")
- self.applyTweaksBtn.setIcon(icon9)
+ self.applyTweaksBtn.setIcon(icon10)
self.applyTweaksBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.horizontalLayout_17.addWidget(self.applyTweaksBtn)
- self.verticalLayout_24.addWidget(self.horizontalWidget5)
+ self.verticalLayout_24.addWidget(self.horizontalWidget4)
self.statusLbl = QLabel(self.verticalWidget2)
self.statusLbl.setObjectName(u"statusLbl")
@@ -1994,21 +2176,21 @@ def setupUi(self, Nugget):
self.verticalLayout_24.addItem(self.verticalSpacer_2)
- self.horizontalWidget6 = QWidget(self.verticalWidget2)
- self.horizontalWidget6.setObjectName(u"horizontalWidget6")
- self.horizontalLayout_25 = QHBoxLayout(self.horizontalWidget6)
+ self.horizontalWidget5 = QWidget(self.verticalWidget2)
+ self.horizontalWidget5.setObjectName(u"horizontalWidget5")
+ self.horizontalLayout_25 = QHBoxLayout(self.horizontalWidget5)
self.horizontalLayout_25.setObjectName(u"horizontalLayout_25")
self.horizontalLayout_25.setContentsMargins(0, 0, 0, 0)
self.horizontalSpacer_14 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
self.horizontalLayout_25.addItem(self.horizontalSpacer_14)
- self.removeTweaksBtn = QToolButton(self.horizontalWidget6)
+ self.removeTweaksBtn = QToolButton(self.horizontalWidget5)
self.removeTweaksBtn.setObjectName(u"removeTweaksBtn")
self.horizontalLayout_25.addWidget(self.removeTweaksBtn)
- self.resetGestaltBtn = QToolButton(self.horizontalWidget6)
+ self.resetGestaltBtn = QToolButton(self.horizontalWidget5)
self.resetGestaltBtn.setObjectName(u"resetGestaltBtn")
self.horizontalLayout_25.addWidget(self.resetGestaltBtn)
@@ -2018,7 +2200,7 @@ def setupUi(self, Nugget):
self.horizontalLayout_25.addItem(self.horizontalSpacer_16)
- self.verticalLayout_24.addWidget(self.horizontalWidget6)
+ self.verticalLayout_24.addWidget(self.horizontalWidget5)
self.verticalLayout_6.addWidget(self.verticalWidget2)
@@ -2045,7 +2227,7 @@ def setupUi(self, Nugget):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
- self.toolButton_71.setIcon(icon10)
+ self.toolButton_71.setIcon(icon11)
self.horizontalLayout_131.addWidget(self.toolButton_71)
@@ -2098,12 +2280,54 @@ def setupUi(self, Nugget):
self._21.addWidget(self.allowWifiApplyingChk)
+ self.autoRebootChk = QCheckBox(self.settingsPageContent)
+ self.autoRebootChk.setObjectName(u"autoRebootChk")
+ self.autoRebootChk.setChecked(True)
+
+ self._21.addWidget(self.autoRebootChk)
+
+ self.showRiskyChk = QCheckBox(self.settingsPageContent)
+ self.showRiskyChk.setObjectName(u"showRiskyChk")
+
+ self._21.addWidget(self.showRiskyChk)
+
+ self.line_24 = QFrame(self.settingsPageContent)
+ self.line_24.setObjectName(u"line_24")
+ self.line_24.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_24.setFrameShadow(QFrame.Plain)
+ self.line_24.setFrameShape(QFrame.HLine)
+
+ self._21.addWidget(self.line_24)
+
self.skipSetupChk = QCheckBox(self.settingsPageContent)
self.skipSetupChk.setObjectName(u"skipSetupChk")
self.skipSetupChk.setChecked(True)
self._21.addWidget(self.skipSetupChk)
+ self.supervisionChk = QCheckBox(self.settingsPageContent)
+ self.supervisionChk.setObjectName(u"supervisionChk")
+ self.supervisionChk.setEnabled(True)
+ self.supervisionChk.setChecked(False)
+
+ self._21.addWidget(self.supervisionChk)
+
+ self.supervisionOrganization = QLineEdit(self.settingsPageContent)
+ self.supervisionOrganization.setObjectName(u"supervisionOrganization")
+
+ self._21.addWidget(self.supervisionOrganization)
+
+ self.verticalSpacer_21 = QSpacerItem(20, 10, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
+
+ self._21.addItem(self.verticalSpacer_21)
+
+ self.label_15 = QLabel(self.settingsPageContent)
+ self.label_15.setObjectName(u"label_15")
+
+ self._21.addWidget(self.label_15)
+
self.line_20 = QFrame(self.settingsPageContent)
self.line_20.setObjectName(u"line_20")
self.line_20.setStyleSheet(u"QFrame {\n"
@@ -2154,7 +2378,7 @@ def setupUi(self, Nugget):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
- self.toolButton_13.setIcon(icon4)
+ self.toolButton_13.setIcon(icon6)
self.horizontalLayout_28.addWidget(self.toolButton_13)
@@ -2238,18 +2462,18 @@ def setupUi(self, Nugget):
self.verticalLayout_29.addWidget(self.longitudeTxt)
- self.horizontalWidget7 = QWidget(self.verticalWidget3)
- self.horizontalWidget7.setObjectName(u"horizontalWidget7")
- self.horizontalLayout_3 = QHBoxLayout(self.horizontalWidget7)
+ self.horizontalWidget6 = QWidget(self.verticalWidget3)
+ self.horizontalWidget6.setObjectName(u"horizontalWidget6")
+ self.horizontalLayout_3 = QHBoxLayout(self.horizontalWidget6)
self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
- self.setLocationBtn = QToolButton(self.horizontalWidget7)
+ self.setLocationBtn = QToolButton(self.horizontalWidget6)
self.setLocationBtn.setObjectName(u"setLocationBtn")
self.horizontalLayout_3.addWidget(self.setLocationBtn)
- self.verticalLayout_29.addWidget(self.horizontalWidget7)
+ self.verticalLayout_29.addWidget(self.horizontalWidget6)
self.horizontalWidget_22 = QWidget(self.verticalWidget3)
self.horizontalWidget_22.setObjectName(u"horizontalWidget_22")
@@ -2490,7 +2714,7 @@ def setupUi(self, Nugget):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
- self.themesBtn.setIcon(icon5)
+ self.themesBtn.setIcon(icon4)
self.themesBtn.setIconSize(QSize(30, 30))
self.horizontalLayout_23.addWidget(self.themesBtn)
@@ -2514,12 +2738,12 @@ def setupUi(self, Nugget):
self.horizontalLayout_23.addItem(self.horizontalSpacer_10)
- self.horizontalWidget8 = QWidget(self.horizontalWidget_8)
- self.horizontalWidget8.setObjectName(u"horizontalWidget8")
- self.horizontalLayout_26 = QHBoxLayout(self.horizontalWidget8)
+ self.horizontalWidget7 = QWidget(self.horizontalWidget_8)
+ self.horizontalWidget7.setObjectName(u"horizontalWidget7")
+ self.horizontalLayout_26 = QHBoxLayout(self.horizontalWidget7)
self.horizontalLayout_26.setObjectName(u"horizontalLayout_26")
self.horizontalLayout_26.setContentsMargins(0, 0, 0, 0)
- self.importThemeBtn = QToolButton(self.horizontalWidget8)
+ self.importThemeBtn = QToolButton(self.horizontalWidget7)
self.importThemeBtn.setObjectName(u"importThemeBtn")
self.importThemeBtn.setEnabled(False)
self.importThemeBtn.setStyleSheet(u"QToolButton {\n"
@@ -2528,13 +2752,13 @@ def setupUi(self, Nugget):
self.horizontalLayout_26.addWidget(self.importThemeBtn)
- self.importThemeFolderBtn = QToolButton(self.horizontalWidget8)
+ self.importThemeFolderBtn = QToolButton(self.horizontalWidget7)
self.importThemeFolderBtn.setObjectName(u"importThemeFolderBtn")
self.importThemeFolderBtn.setIcon(icon19)
self.horizontalLayout_26.addWidget(self.importThemeFolderBtn)
- self.importThemeZipBtn = QToolButton(self.horizontalWidget8)
+ self.importThemeZipBtn = QToolButton(self.horizontalWidget7)
self.importThemeZipBtn.setObjectName(u"importThemeZipBtn")
icon22 = QIcon()
icon22.addFile(u":/icon/file-earmark-zip.svg", QSize(), QIcon.Normal, QIcon.Off)
@@ -2543,7 +2767,7 @@ def setupUi(self, Nugget):
self.horizontalLayout_26.addWidget(self.importThemeZipBtn)
- self.horizontalLayout_23.addWidget(self.horizontalWidget8)
+ self.horizontalLayout_23.addWidget(self.horizontalWidget7)
self.verticalLayout_23.addWidget(self.horizontalWidget_8)
@@ -2593,26 +2817,26 @@ def setupUi(self, Nugget):
self.verticalLayout_22.addItem(self.verticalSpacer_9)
- self.horizontalWidget9 = QWidget(self.themesPageContent)
- self.horizontalWidget9.setObjectName(u"horizontalWidget9")
- self.horizontalLayout_16 = QHBoxLayout(self.horizontalWidget9)
+ self.horizontalWidget8 = QWidget(self.themesPageContent)
+ self.horizontalWidget8.setObjectName(u"horizontalWidget8")
+ self.horizontalLayout_16 = QHBoxLayout(self.horizontalWidget8)
self.horizontalLayout_16.setObjectName(u"horizontalLayout_16")
self.horizontalLayout_16.setContentsMargins(0, 0, 0, 0)
- self.hideNamesBtn = QToolButton(self.horizontalWidget9)
+ self.hideNamesBtn = QToolButton(self.horizontalWidget8)
self.hideNamesBtn.setObjectName(u"hideNamesBtn")
sizePolicy2.setHeightForWidth(self.hideNamesBtn.sizePolicy().hasHeightForWidth())
self.hideNamesBtn.setSizePolicy(sizePolicy2)
self.horizontalLayout_16.addWidget(self.hideNamesBtn)
- self.borderAllBtn = QToolButton(self.horizontalWidget9)
+ self.borderAllBtn = QToolButton(self.horizontalWidget8)
self.borderAllBtn.setObjectName(u"borderAllBtn")
sizePolicy2.setHeightForWidth(self.borderAllBtn.sizePolicy().hasHeightForWidth())
self.borderAllBtn.setSizePolicy(sizePolicy2)
self.horizontalLayout_16.addWidget(self.borderAllBtn)
- self.addAllBtn = QToolButton(self.horizontalWidget9)
+ self.addAllBtn = QToolButton(self.horizontalWidget8)
self.addAllBtn.setObjectName(u"addAllBtn")
sizePolicy2.setHeightForWidth(self.addAllBtn.sizePolicy().hasHeightForWidth())
self.addAllBtn.setSizePolicy(sizePolicy2)
@@ -2620,7 +2844,7 @@ def setupUi(self, Nugget):
self.horizontalLayout_16.addWidget(self.addAllBtn)
- self.verticalLayout_22.addWidget(self.horizontalWidget9)
+ self.verticalLayout_22.addWidget(self.horizontalWidget8)
self.verticalLayout_23.addWidget(self.themesPageContent)
@@ -2640,7 +2864,7 @@ def setupUi(self, Nugget):
self.retranslateUi(Nugget)
self.devicePicker.setCurrentIndex(-1)
- self.pages.setCurrentIndex(0)
+ self.pages.setCurrentIndex(8)
self.dynamicIslandDrp.setCurrentIndex(0)
self.spoofedModelDrp.setCurrentIndex(0)
@@ -2658,8 +2882,6 @@ def retranslateUi(self, Nugget):
self.homePageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.explorePageBtn.setText(QCoreApplication.translate("Nugget", u" Explore", None))
self.explorePageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
- self.locSimPageBtn.setText(QCoreApplication.translate("Nugget", u" Location Simulation", None))
- self.locSimPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.gestaltPageBtn.setText(QCoreApplication.translate("Nugget", u" Mobile Gestalt", None))
self.gestaltPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.featureFlagsPageBtn.setText(QCoreApplication.translate("Nugget", u" Feature Flags", None))
@@ -2670,6 +2892,8 @@ def retranslateUi(self, Nugget):
self.springboardOptionsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.internalOptionsPageBtn.setText(QCoreApplication.translate("Nugget", u" Internal Options", None))
self.internalOptionsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
+ self.advancedPageBtn.setText(QCoreApplication.translate("Nugget", u" Advanced Options", None))
+ self.advancedPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.applyPageBtn.setText(QCoreApplication.translate("Nugget", u" Apply", None))
self.applyPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.settingsPageBtn.setText(QCoreApplication.translate("Nugget", u" Settings", None))
@@ -2695,8 +2919,9 @@ def retranslateUi(self, Nugget):
self.toolButton_15.setText(QCoreApplication.translate("Nugget", u"Additional Thanks", None))
self.libiBtn.setText(QCoreApplication.translate("Nugget", u"pymobiledevice3", None))
self.qtBtn.setText(QCoreApplication.translate("Nugget", u"Qt Creator", None))
- self.label.setText(QCoreApplication.translate("Nugget", u"Nugget GUI - Version 3.1 (beta 2)", None))
+ self.label.setText(QCoreApplication.translate("Nugget", u"Nugget GUI - Version 4.1 (beta 2)", None))
self.statusBarLbl.setText(QCoreApplication.translate("Nugget", u"Mobile Gestalt", None))
+ self.mgaWarningLbl.setText(QCoreApplication.translate("Nugget", u"! You will need a MobileGestalt file for this feature. Please select it in the Apply page !", None))
self.label_9.setText(QCoreApplication.translate("Nugget", u"Device Subtype Preset", None))
self.dynamicIslandDrp.setItemText(0, QCoreApplication.translate("Nugget", u"None", None))
self.dynamicIslandDrp.setItemText(1, QCoreApplication.translate("Nugget", u"2436 (iPhone X Gestures for SE phones)", None))
@@ -2725,10 +2950,11 @@ def retranslateUi(self, Nugget):
self.internalInstallChk.setText(QCoreApplication.translate("Nugget", u"Set as Apple Internal Install (ie Metal HUD in any app)", None))
self.internalStorageChk.setText(QCoreApplication.translate("Nugget", u"Enable Internal Storage (WARNING: risky for some devices, mainly iPads)", None))
self.collisionSOSChk.setText(QCoreApplication.translate("Nugget", u"Enable Collision SOS", None))
- self.sleepApneaChk.setText(QCoreApplication.translate("Nugget", u"Enable Sleep Apnea (real) [for Apple Watches]", None))
self.aodChk.setText(QCoreApplication.translate("Nugget", u"Enable Always On Display", None))
self.label_10.setText(QCoreApplication.translate("Nugget", u"Custom Gestalt Keys", None))
self.addGestaltKeyBtn.setText(QCoreApplication.translate("Nugget", u" Add Key", None))
+ self.label_12.setText(QCoreApplication.translate("Nugget", u"Warning: Using this feature incorrectly can lead to bootloops and data loss. Only use if you know\n"
+"what you are doing.", None))
self.internalOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Feature Flags", None))
self.clockAnimChk.setText(QCoreApplication.translate("Nugget", u"Enable Lockscreen Clock Animation", None))
self.lockscreenChk.setText(QCoreApplication.translate("Nugget", u"Enable Duplicate Lockscreen Button and Lockscreen Quickswitch", None))
@@ -2742,22 +2968,50 @@ def retranslateUi(self, Nugget):
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.mgaWarningLbl2.setText(QCoreApplication.translate("Nugget", u"! You will need a MobileGestalt file for this feature. Please select it in the Apply page !", None))
self.enableAIChk.setText(QCoreApplication.translate("Nugget", u"Enable Apple Intelligence (for Unsupported Devices)", None))
+ self.eligFileChk.setText(QCoreApplication.translate("Nugget", u"Enable Eligibility File", 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"
+ self.aiInfoLabel.setText(QCoreApplication.translate("Nugget", u"In order to download the AI models, you must spoof your device model. However, this may break \n"
+"Face ID until you revert back. \n"
"\n"
-"Once the model has downloaded, set \"Spoofed Device Model\" to \"None\" and click the \"Apply Tweaks\"\n"
-"button on the \"Apply\" page again to fix Face ID.", None))
+"WARNING: Do not go to the Apple Intelligence menu in the Settings app after unspoofing.\n"
+"\n"
+"Entering the menu on your original device model will cause a re-download and may require a full\n"
+"restore to fix. Furthermore, if you switch between model groups, like spoofing from the iPhone 16s\n"
+"to the iPhone 15 Pro series, a re-download may also occur. \n"
+"Please be careful!", None))
self.label_8.setText(QCoreApplication.translate("Nugget", u"Spoofed Device Model", None))
- self.spoofedModelDrp.setItemText(0, QCoreApplication.translate("Nugget", u"None", None))
- self.spoofedModelDrp.setItemText(1, QCoreApplication.translate("Nugget", u"iPhone16,2 (iPhone 15 Pro)", None))
- self.spoofedModelDrp.setItemText(2, QCoreApplication.translate("Nugget", u"iPhone17,3 (iPhone 16 Pro)", None))
- self.spoofedModelDrp.setItemText(3, QCoreApplication.translate("Nugget", u"iPhone17,4 (iPhone 16 Pro Max)", None))
- self.spoofedModelDrp.setItemText(4, QCoreApplication.translate("Nugget", u"iPad16,3 (iPad Pro M4)", None))
-
- self.spoofedModelDrp.setCurrentText(QCoreApplication.translate("Nugget", u"None", None))
+ self.spoofedModelDrp.setItemText(0, QCoreApplication.translate("Nugget", u"Original", None))
+ self.spoofedModelDrp.setItemText(1, QCoreApplication.translate("Nugget", u"iPhone 15 Pro (iPhone16,1)", None))
+ self.spoofedModelDrp.setItemText(2, QCoreApplication.translate("Nugget", u"iPhone 15 Pro Max (iPhone16,2)", None))
+ self.spoofedModelDrp.setItemText(3, QCoreApplication.translate("Nugget", u"iPhone 16 (iPhone17,3)", None))
+ self.spoofedModelDrp.setItemText(4, QCoreApplication.translate("Nugget", u"iPhone 16 Plus (iPhone17,4)", None))
+ self.spoofedModelDrp.setItemText(5, QCoreApplication.translate("Nugget", u"iPhone 16 Pro (iPhone17,1)", None))
+ self.spoofedModelDrp.setItemText(6, QCoreApplication.translate("Nugget", u"iPhone 16 Pro Max (iPhone17,2)", None))
+ self.spoofedModelDrp.setItemText(7, QCoreApplication.translate("Nugget", u"iPad Mini (A17 Pro) (W) (iPad16,1)", None))
+ self.spoofedModelDrp.setItemText(8, QCoreApplication.translate("Nugget", u"iPad Mini (A17 Pro) (C) (iPad16,2)", None))
+ self.spoofedModelDrp.setItemText(9, QCoreApplication.translate("Nugget", u"iPad Pro (13-inch) (M4) (W) (iPad16,5)", None))
+ self.spoofedModelDrp.setItemText(10, QCoreApplication.translate("Nugget", u"iPad Pro (13-inch) (M4) (C) (iPad16,6)", None))
+ self.spoofedModelDrp.setItemText(11, QCoreApplication.translate("Nugget", u"iPad Pro (11-inch) (M4) (W) (iPad16,3)", None))
+ self.spoofedModelDrp.setItemText(12, QCoreApplication.translate("Nugget", u"iPad Pro (11-inch) (M4) (C) (iPad16,4)", None))
+ self.spoofedModelDrp.setItemText(13, QCoreApplication.translate("Nugget", u"iPad Pro (12.9-inch) (M2) (W) (iPad14,5)", None))
+ self.spoofedModelDrp.setItemText(14, QCoreApplication.translate("Nugget", u"iPad Pro (12.9-inch) (M2) (C) (iPad14,6)", None))
+ self.spoofedModelDrp.setItemText(15, QCoreApplication.translate("Nugget", u"iPad Pro (11-inch) (M2) (W) (iPad14,3)", None))
+ self.spoofedModelDrp.setItemText(16, QCoreApplication.translate("Nugget", u"iPad Pro (11-inch) (M2) (C) (iPad14,4)", None))
+ self.spoofedModelDrp.setItemText(17, QCoreApplication.translate("Nugget", u"iPad Air (13-inch) (M2) (W) (iPad14,10)", None))
+ self.spoofedModelDrp.setItemText(18, QCoreApplication.translate("Nugget", u"iPad Air (13-inch) (M2) (C) (iPad14,11)", None))
+ self.spoofedModelDrp.setItemText(19, QCoreApplication.translate("Nugget", u"iPad Air (11-inch) (M2) (W) (iPad14,8)", None))
+ self.spoofedModelDrp.setItemText(20, QCoreApplication.translate("Nugget", u"iPad Air (11-inch) (M2) (C) (iPad14,9)", None))
+ self.spoofedModelDrp.setItemText(21, QCoreApplication.translate("Nugget", u"iPad Pro (11-inch) (M1) (W) (iPad13,4)", None))
+ self.spoofedModelDrp.setItemText(22, QCoreApplication.translate("Nugget", u"iPad Pro (11-inch) (M1) (C) (iPad13,5)", None))
+ self.spoofedModelDrp.setItemText(23, QCoreApplication.translate("Nugget", u"iPad Pro (12.9-inch) (M1) (W) (iPad13,8)", None))
+ self.spoofedModelDrp.setItemText(24, QCoreApplication.translate("Nugget", u"iPad Pro (12.9-inch) (M1) (C) (iPad13,9)", None))
+ self.spoofedModelDrp.setItemText(25, QCoreApplication.translate("Nugget", u"iPad Air (M1) (W) (iPad13,16)", None))
+ self.spoofedModelDrp.setItemText(26, QCoreApplication.translate("Nugget", u"iPad Air (M1) (C) (iPad13,17)", None))
+
+ self.spoofedModelDrp.setCurrentText(QCoreApplication.translate("Nugget", u"Original", 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))
@@ -2771,7 +3025,6 @@ def retranslateUi(self, Nugget):
self.buildVersionChk.setText(QCoreApplication.translate("Nugget", u"Show Build Version in Status Bar", None))
self.RTLChk.setText(QCoreApplication.translate("Nugget", u"Force Right-to-Left Layout", None))
self.metalHUDChk.setText(QCoreApplication.translate("Nugget", u"Enable Metal HUD Debug", None))
- self.accessoryChk.setText(QCoreApplication.translate("Nugget", u"Enable Accessory Developer", None))
self.iMessageChk.setText(QCoreApplication.translate("Nugget", u"Enable iMessage Debugging", None))
self.IDSChk.setText(QCoreApplication.translate("Nugget", u"Enable Continuity Debugging", None))
self.VCChk.setText(QCoreApplication.translate("Nugget", u"Enable FaceTime Debugging", None))
@@ -2782,6 +3035,19 @@ def retranslateUi(self, Nugget):
self.enableWakeVibrateChk.setText(QCoreApplication.translate("Nugget", u"Vibrate on Raise-to-Wake", None))
self.pasteSoundChk.setText(QCoreApplication.translate("Nugget", u"Play Sound on Paste", None))
self.notifyPastesChk.setText(QCoreApplication.translate("Nugget", u"Show Notifications for System Pastes", None))
+ self.advancedOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Advanced Options", None))
+ self.label_17.setText(QCoreApplication.translate("Nugget", u"Disclaimer:\n"
+"\n"
+"The options on this page may be unsafe for your device. Use these options at your own risk. Changing\n"
+"your device resolution has the potential to brick your device when used improperly.\n"
+"\n"
+"Nugget is not responsible if you mess up your device, especially with resolution changer.", None))
+ self.disableOTAChk.setText(QCoreApplication.translate("Nugget", u"Disable OTA Updates", None))
+ self.enableResolutionChk.setText(QCoreApplication.translate("Nugget", u"Set a Custom Device Resolution", None))
+ self.resHeightLbl.setText(QCoreApplication.translate("Nugget", u"Height:", None))
+ self.resHeightTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Resolution Height", None))
+ self.resWidthLbl.setText(QCoreApplication.translate("Nugget", u"Width:", None))
+ self.resWidthTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Resolution Width", None))
self.statusBarLbl_5.setText(QCoreApplication.translate("Nugget", u"Apply", None))
self.label_16.setText("")
self.modifiedTweaksLbl.setText(QCoreApplication.translate("Nugget", u"Current gestalt file location:", None))
@@ -2793,7 +3059,12 @@ def retranslateUi(self, Nugget):
self.resetGestaltBtn.setText(QCoreApplication.translate("Nugget", u"Reset Mobile Gestalt", None))
self.springboardOptionsLbl1.setText(QCoreApplication.translate("Nugget", u"Nugget Settings", None))
self.allowWifiApplyingChk.setText(QCoreApplication.translate("Nugget", u"Allow Applying Over WiFi", None))
- self.skipSetupChk.setText(QCoreApplication.translate("Nugget", u"Skip Setup (non-exploit files only)", None))
+ self.autoRebootChk.setText(QCoreApplication.translate("Nugget", u"Auto Reboot After Applying", None))
+ self.showRiskyChk.setText(QCoreApplication.translate("Nugget", u"Show Risky Tweak Options", None))
+ self.skipSetupChk.setText(QCoreApplication.translate("Nugget", u"Skip Setup * (non-exploit files only)", None))
+ self.supervisionChk.setText(QCoreApplication.translate("Nugget", u"Enable Supervision * (requires Skip Setup)", None))
+ self.supervisionOrganization.setPlaceholderText(QCoreApplication.translate("Nugget", u"Enter Organization Name", None))
+ self.label_15.setText(QCoreApplication.translate("Nugget", u"* Note: Skip Setup may cause issues with configuration profiles. Turn it off if you need that.", None))
self.resetPairBtn.setText(QCoreApplication.translate("Nugget", u"Reset Device Pairing", None))
self.statusBarLbl_2.setText(QCoreApplication.translate("Nugget", u"Location Simulation", None))
self.label_4.setText("")
diff --git a/qt/mainwindow.ui b/qt/mainwindow.ui
index 734c947..5c0103f 100644
--- a/qt/mainwindow.ui
+++ b/qt/mainwindow.ui
@@ -467,35 +467,6 @@ QSlider::tick:horizontal {
- -
-
-
-
- 0
- 0
-
-
-
- Location Simulation
-
-
-
- :/icon/geo-alt.svg:/icon/geo-alt.svg
-
-
- true
-
-
- true
-
-
- Qt::ToolButtonTextBesideIcon
-
-
- sidebarBtn
-
-
-
-
@@ -671,6 +642,35 @@ QSlider::tick:horizontal {
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Risky Options
+
+
+
+ :/icon/star.svg:/icon/star.svg
+
+
+ true
+
+
+ true
+
+
+ Qt::ToolButtonTextBesideIcon
+
+
+ sidebarBtn
+
+
+
-
@@ -1571,7 +1571,7 @@ QToolButton:pressed {
-
- Nugget GUI - Version 4.0.1
+ Nugget GUI - Version 4.1
Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
@@ -1722,7 +1722,7 @@ QToolButton:pressed {
- ! Your device's mobilegestalt file is required for this feature. Select it on the apply page.
+ ! You will need a MobileGestalt file for this feature. Please select it in the Apply page !
@@ -2673,7 +2673,7 @@ QComboBox QAbstractItemView::item:hover {
- ! Your device's mobilegestalt file is required for this feature. Select it on the apply page.
+ ! You will need a MobileGestalt file for this feature. Please select it in the Apply page !
@@ -2702,14 +2702,7 @@ QComboBox QAbstractItemView::item:hover {
-
- Enable Eligibility File (test)
-
-
-
- -
-
-
- Experimental Toggle
+ Enable Eligibility File
@@ -2750,17 +2743,29 @@ QComboBox QAbstractItemView::item:hover {
0
+
+
+ 16777215
+ 16777215
+
+
- In order to download the AI model, you must spoof the device model. This will break Face ID until
-you revert.
+ In order to download the AI models, you must spoof your device model. However, this may break
+Face ID until you revert back.
-Once the model has downloaded, turn off "Apple Intelligence" in Settings then set
-"Spoofed Device Model" to "None" and click the "Apply Tweaks" button on the "Apply" page
-again to fix Face ID.
+WARNING: Do not go to the Apple Intelligence menu in the Settings app after unspoofing.
+
+Entering the menu on your original device model will cause a re-download and may require a full
+restore to fix. Furthermore, if you switch between model groups, like spoofing from the iPhone 16s
+to the iPhone 15 Pro series, a re-download may also occur.
+Please be careful!
Qt::AutoText
+
+ false
+
-
@@ -2813,49 +2818,144 @@ QComboBox QAbstractItemView::item:hover {
}
- None
+ Original
0
-
- None
+ Original
+
+
+ -
+
+ iPhone 15 Pro (iPhone16,1)
+
+
+ -
+
+ iPhone 15 Pro Max (iPhone16,2)
+
+
+ -
+
+ iPhone 16 (iPhone17,3)
-
- iPhone16,1 (iPhone 15 Pro)
+ iPhone 16 Plus (iPhone17,4)
-
- iPhone16,2 (iPhone 15 Pro Max)
+ iPhone 16 Pro (iPhone17,1)
-
- iPhone17,3 (iPhone 16)
+ iPhone 16 Pro Max (iPhone17,2)
-
- iPhone17,4 (iPhone 16 Plus)
+ iPad Mini (A17 Pro) (W) (iPad16,1)
-
- iPhone17,1 (iPhone 16 Pro)
+ iPad Mini (A17 Pro) (C) (iPad16,2)
-
- iPhone17,2 (iPhone 16 Pro Max)
+ iPad Pro (13-inch) (M4) (W) (iPad16,5)
-
- iPad16,3 (iPad Pro M4)
+ iPad Pro (13-inch) (M4) (C) (iPad16,6)
+
+
+ -
+
+ iPad Pro (11-inch) (M4) (W) (iPad16,3)
+
+
+ -
+
+ iPad Pro (11-inch) (M4) (C) (iPad16,4)
+
+
+ -
+
+ iPad Pro (12.9-inch) (M2) (W) (iPad14,5)
+
+
+ -
+
+ iPad Pro (12.9-inch) (M2) (C) (iPad14,6)
+
+
+ -
+
+ iPad Pro (11-inch) (M2) (W) (iPad14,3)
+
+
+ -
+
+ iPad Pro (11-inch) (M2) (C) (iPad14,4)
+
+
+ -
+
+ iPad Air (13-inch) (M2) (W) (iPad14,10)
+
+
+ -
+
+ iPad Air (13-inch) (M2) (C) (iPad14,11)
+
+
+ -
+
+ iPad Air (11-inch) (M2) (W) (iPad14,8)
+
+
+ -
+
+ iPad Air (11-inch) (M2) (C) (iPad14,9)
+
+
+ -
+
+ iPad Pro (11-inch) (M1) (W) (iPad13,4)
+
+
+ -
+
+ iPad Pro (11-inch) (M1) (C) (iPad13,5)
+
+
+ -
+
+ iPad Pro (12.9-inch) (M1) (W) (iPad13,8)
+
+
+ -
+
+ iPad Pro (12.9-inch) (M1) (C) (iPad13,9)
+
+
+ -
+
+ iPad Air (M1) (W) (iPad13,16)
+
+
+ -
+
+ iPad Air (M1) (C) (iPad13,17)
@@ -3317,13 +3417,6 @@ QComboBox QAbstractItemView::item:hover {
- -
-
-
- Enable Accessory Developer
-
-
-
-
@@ -3457,6 +3550,362 @@ QComboBox QAbstractItemView::item:hover {
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
+ 10
+
+
+ 0
+
+
+ 9
+
+
+ 0
+
+
+ 9
+
+
-
+
+
+ false
+
+
+ QToolButton {
+ icon-size: 24px;
+ background-color: transparent;
+ padding-left: 0px;
+ padding-right: 5px;
+ border-radius: 0px;
+}
+
+
+
+ :/icon/star.svg:/icon/star.svg
+
+
+
+ -
+
+
+
+ 6
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ -1
+ false
+
+
+
+ Risky Options
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 16
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+ -
+
+
+ QFrame {
+ color: #414141;
+}
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ true
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Disclaimer:
+
+The options on this page may be unsafe for your device. Use these options at your own risk. Changing
+your device resolution has the potential to brick your device when used improperly.
+
+Nugget is not responsible if you mess up your device, especially with resolution changer.
+
+
+
+ -
+
+
+ QFrame {
+ color: #414141;
+}
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ Disable OTA Updates
+
+
+
+ -
+
+
+ QFrame {
+ color: #414141;
+}
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ Set a Custom Device Resolution
+
+
+
+ -
+
+
+ true
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ false
+
+
+ Height:
+
+
+
+ -
+
+
+ 5
+
+
-
+
+
+ true
+
+
+ Resolution Height
+
+
+
+ -
+
+
+
+ 22
+ 0
+
+
+
+ QLabel {
+ border: 2px solid red;
+ border-radius: 25px;
+ color: red;
+}
+
+
+ QFrame::NoFrame
+
+
+ QFrame::Plain
+
+
+ !
+
+
+ false
+
+
+ Qt::AlignCenter
+
+
+
+
+
+ -
+
+
+ Width:
+
+
+
+ -
+
+
+ 0
+
+
-
+
+
+ 5
+
+
-
+
+
+ Resolution Width
+
+
+
+ -
+
+
+
+ 22
+ 0
+
+
+
+ QLabel {
+ border: 2px solid red;
+ border-radius: 25px;
+ color: red;
+}
+
+
+ !
+
+
+ Qt::AlignCenter
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
+
@@ -3954,6 +4403,38 @@ QComboBox QAbstractItemView::item:hover {
+ -
+
+
+ Auto Reboot After Applying
+
+
+ true
+
+
+
+ -
+
+
+ Show Risky Tweak Options
+
+
+
+ -
+
+
+ QFrame {
+ color: #414141;
+}
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
-
@@ -3965,12 +4446,22 @@ QComboBox QAbstractItemView::item:hover {
-
-
+
+
+ true
+
- Auto Reboot After Applying
+ Enable Supervision * (requires Skip Setup)
- true
+ false
+
+
+
+ -
+
+
+ Enter Organization Name
diff --git a/qt/mainwindow_ui.py b/qt/mainwindow_ui.py
index e69221b..25de978 100644
--- a/qt/mainwindow_ui.py
+++ b/qt/mainwindow_ui.py
@@ -320,19 +320,6 @@ def setupUi(self, Nugget):
self.verticalLayout.addWidget(self.explorePageBtn)
- self.locSimPageBtn = QToolButton(self.sidebar)
- self.locSimPageBtn.setObjectName(u"locSimPageBtn")
- sizePolicy2.setHeightForWidth(self.locSimPageBtn.sizePolicy().hasHeightForWidth())
- self.locSimPageBtn.setSizePolicy(sizePolicy2)
- icon4 = QIcon()
- icon4.addFile(u":/icon/geo-alt.svg", QSize(), QIcon.Normal, QIcon.Off)
- self.locSimPageBtn.setIcon(icon4)
- self.locSimPageBtn.setCheckable(True)
- self.locSimPageBtn.setAutoExclusive(True)
- self.locSimPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
-
- self.verticalLayout.addWidget(self.locSimPageBtn)
-
self.sidebarDiv1 = QFrame(self.sidebar)
self.sidebarDiv1.setObjectName(u"sidebarDiv1")
self.sidebarDiv1.setStyleSheet(u"QFrame {\n"
@@ -347,9 +334,9 @@ def setupUi(self, Nugget):
self.gestaltPageBtn.setObjectName(u"gestaltPageBtn")
sizePolicy2.setHeightForWidth(self.gestaltPageBtn.sizePolicy().hasHeightForWidth())
self.gestaltPageBtn.setSizePolicy(sizePolicy2)
- icon5 = QIcon()
- icon5.addFile(u":/icon/iphone-island.svg", QSize(), QIcon.Normal, QIcon.Off)
- self.gestaltPageBtn.setIcon(icon5)
+ icon4 = QIcon()
+ icon4.addFile(u":/icon/iphone-island.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.gestaltPageBtn.setIcon(icon4)
self.gestaltPageBtn.setIconSize(QSize(24, 28))
self.gestaltPageBtn.setCheckable(True)
self.gestaltPageBtn.setAutoExclusive(True)
@@ -365,9 +352,9 @@ def setupUi(self, Nugget):
font = QFont()
font.setFamilies([u".AppleSystemUIFont"])
self.featureFlagsPageBtn.setFont(font)
- icon6 = QIcon()
- icon6.addFile(u":/icon/flag.svg", QSize(), QIcon.Normal, QIcon.Off)
- self.featureFlagsPageBtn.setIcon(icon6)
+ icon5 = QIcon()
+ icon5.addFile(u":/icon/flag.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.featureFlagsPageBtn.setIcon(icon5)
self.featureFlagsPageBtn.setCheckable(True)
self.featureFlagsPageBtn.setAutoExclusive(True)
self.featureFlagsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
@@ -378,7 +365,9 @@ def setupUi(self, Nugget):
self.euEnablerPageBtn.setObjectName(u"euEnablerPageBtn")
sizePolicy2.setHeightForWidth(self.euEnablerPageBtn.sizePolicy().hasHeightForWidth())
self.euEnablerPageBtn.setSizePolicy(sizePolicy2)
- self.euEnablerPageBtn.setIcon(icon4)
+ icon6 = QIcon()
+ icon6.addFile(u":/icon/geo-alt.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.euEnablerPageBtn.setIcon(icon6)
self.euEnablerPageBtn.setCheckable(True)
self.euEnablerPageBtn.setAutoExclusive(True)
self.euEnablerPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
@@ -411,6 +400,19 @@ def setupUi(self, Nugget):
self.verticalLayout.addWidget(self.internalOptionsPageBtn)
+ self.advancedPageBtn = QToolButton(self.sidebar)
+ self.advancedPageBtn.setObjectName(u"advancedPageBtn")
+ sizePolicy2.setHeightForWidth(self.advancedPageBtn.sizePolicy().hasHeightForWidth())
+ self.advancedPageBtn.setSizePolicy(sizePolicy2)
+ icon9 = QIcon()
+ icon9.addFile(u":/icon/star.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.advancedPageBtn.setIcon(icon9)
+ self.advancedPageBtn.setCheckable(True)
+ self.advancedPageBtn.setAutoExclusive(True)
+ self.advancedPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.verticalLayout.addWidget(self.advancedPageBtn)
+
self.sidebarDiv2 = QFrame(self.sidebar)
self.sidebarDiv2.setObjectName(u"sidebarDiv2")
self.sidebarDiv2.setStyleSheet(u"QFrame {\n"
@@ -425,9 +427,9 @@ def setupUi(self, Nugget):
self.applyPageBtn.setObjectName(u"applyPageBtn")
sizePolicy2.setHeightForWidth(self.applyPageBtn.sizePolicy().hasHeightForWidth())
self.applyPageBtn.setSizePolicy(sizePolicy2)
- icon9 = QIcon()
- icon9.addFile(u":/icon/check-circle.svg", QSize(), QIcon.Normal, QIcon.Off)
- self.applyPageBtn.setIcon(icon9)
+ icon10 = QIcon()
+ icon10.addFile(u":/icon/check-circle.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.applyPageBtn.setIcon(icon10)
self.applyPageBtn.setCheckable(True)
self.applyPageBtn.setAutoExclusive(True)
self.applyPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
@@ -438,9 +440,9 @@ def setupUi(self, Nugget):
self.settingsPageBtn.setObjectName(u"settingsPageBtn")
sizePolicy2.setHeightForWidth(self.settingsPageBtn.sizePolicy().hasHeightForWidth())
self.settingsPageBtn.setSizePolicy(sizePolicy2)
- icon10 = QIcon()
- icon10.addFile(u":/icon/gear.svg", QSize(), QIcon.Normal, QIcon.Off)
- self.settingsPageBtn.setIcon(icon10)
+ icon11 = QIcon()
+ icon11.addFile(u":/icon/gear.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.settingsPageBtn.setIcon(icon11)
self.settingsPageBtn.setCheckable(True)
self.settingsPageBtn.setAutoExclusive(True)
self.settingsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
@@ -551,9 +553,9 @@ def setupUi(self, Nugget):
" background-color: transparent;\n"
" padding: 0px;\n"
"}")
- icon11 = QIcon()
- icon11.addFile(u":/credits/big_nugget.png", QSize(), QIcon.Normal, QIcon.Off)
- self.bigNuggetBtn.setIcon(icon11)
+ icon12 = QIcon()
+ icon12.addFile(u":/credits/big_nugget.png", QSize(), QIcon.Normal, QIcon.Off)
+ self.bigNuggetBtn.setIcon(icon12)
self.bigNuggetBtn.setIconSize(QSize(150, 200))
self.horizontalLayout_27.addWidget(self.bigNuggetBtn)
@@ -588,18 +590,16 @@ def setupUi(self, Nugget):
self.horizontalLayout_8.setContentsMargins(-1, -1, 0, 0)
self.discordBtn = QToolButton(self.verticalWidget1)
self.discordBtn.setObjectName(u"discordBtn")
- icon12 = QIcon()
- icon12.addFile(u":/icon/discord.svg", QSize(), QIcon.Normal, QIcon.Off)
- self.discordBtn.setIcon(icon12)
+ icon13 = QIcon()
+ icon13.addFile(u":/icon/discord.svg", QSize(), QIcon.Normal, QIcon.Off)
+ self.discordBtn.setIcon(icon13)
self.discordBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.horizontalLayout_8.addWidget(self.discordBtn)
self.starOnGithubBtn = QToolButton(self.verticalWidget1)
self.starOnGithubBtn.setObjectName(u"starOnGithubBtn")
- icon13 = QIcon()
- icon13.addFile(u":/icon/star.svg", QSize(), QIcon.Normal, QIcon.Off)
- self.starOnGithubBtn.setIcon(icon13)
+ self.starOnGithubBtn.setIcon(icon9)
self.starOnGithubBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.horizontalLayout_8.addWidget(self.starOnGithubBtn)
@@ -897,7 +897,7 @@ def setupUi(self, Nugget):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
- self.toolButton_8.setIcon(icon5)
+ self.toolButton_8.setIcon(icon4)
self.toolButton_8.setIconSize(QSize(30, 30))
self.horizontalLayout_5.addWidget(self.toolButton_8)
@@ -1235,7 +1235,7 @@ def setupUi(self, Nugget):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
- self.toolButton_10.setIcon(icon6)
+ self.toolButton_10.setIcon(icon5)
self.horizontalLayout_20.addWidget(self.toolButton_10)
@@ -1341,7 +1341,7 @@ def setupUi(self, Nugget):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
- self.toolButton_11.setIcon(icon4)
+ self.toolButton_11.setIcon(icon6)
self.horizontalLayout_21.addWidget(self.toolButton_11)
@@ -1487,11 +1487,6 @@ def setupUi(self, Nugget):
self.verticalLayout_34.addWidget(self.eligFileChk)
- self.experimentalChk = QCheckBox(self.aiEnablerContent)
- self.experimentalChk.setObjectName(u"experimentalChk")
-
- self.verticalLayout_34.addWidget(self.experimentalChk)
-
self.languageLbl = QLabel(self.aiEnablerContent)
self.languageLbl.setObjectName(u"languageLbl")
@@ -1516,7 +1511,9 @@ def setupUi(self, Nugget):
self.aiInfoLabel.setObjectName(u"aiInfoLabel")
sizePolicy1.setHeightForWidth(self.aiInfoLabel.sizePolicy().hasHeightForWidth())
self.aiInfoLabel.setSizePolicy(sizePolicy1)
+ self.aiInfoLabel.setMaximumSize(QSize(16777215, 16777215))
self.aiInfoLabel.setTextFormat(Qt.AutoText)
+ self.aiInfoLabel.setScaledContents(False)
self.verticalLayout_34.addWidget(self.aiInfoLabel)
@@ -1534,6 +1531,25 @@ def setupUi(self, Nugget):
self.spoofedModelDrp.addItem("")
self.spoofedModelDrp.addItem("")
self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
self.spoofedModelDrp.setObjectName(u"spoofedModelDrp")
self.spoofedModelDrp.setMaximumSize(QSize(325, 16777215))
self.spoofedModelDrp.setStyleSheet(u"QComboBox {\n"
@@ -1801,11 +1817,6 @@ def setupUi(self, Nugget):
self.verticalLayout_131.addWidget(self.metalHUDChk)
- self.accessoryChk = QCheckBox(self.internalOptionsPageContent)
- self.accessoryChk.setObjectName(u"accessoryChk")
-
- self.verticalLayout_131.addWidget(self.accessoryChk)
-
self.iMessageChk = QCheckBox(self.internalOptionsPageContent)
self.iMessageChk.setObjectName(u"iMessageChk")
@@ -1894,6 +1905,192 @@ def setupUi(self, Nugget):
self.verticalLayout_141.addWidget(self.internalOptionsPageContent)
self.pages.addWidget(self.internalOptionsPage)
+ self.advancedOptionsPage = QWidget()
+ self.advancedOptionsPage.setObjectName(u"advancedOptionsPage")
+ self.verticalLayout_142 = QVBoxLayout(self.advancedOptionsPage)
+ self.verticalLayout_142.setObjectName(u"verticalLayout_142")
+ self.verticalLayout_142.setContentsMargins(0, 0, 0, 0)
+ self.horizontalWidget_52 = QWidget(self.advancedOptionsPage)
+ self.horizontalWidget_52.setObjectName(u"horizontalWidget_52")
+ self.horizontalLayout_202 = QHBoxLayout(self.horizontalWidget_52)
+ self.horizontalLayout_202.setSpacing(10)
+ self.horizontalLayout_202.setObjectName(u"horizontalLayout_202")
+ self.horizontalLayout_202.setContentsMargins(0, 9, 0, 9)
+ self.toolButton_102 = QToolButton(self.horizontalWidget_52)
+ self.toolButton_102.setObjectName(u"toolButton_102")
+ self.toolButton_102.setEnabled(False)
+ self.toolButton_102.setStyleSheet(u"QToolButton {\n"
+" icon-size: 24px;\n"
+" background-color: transparent;\n"
+" padding-left: 0px;\n"
+" padding-right: 5px;\n"
+" border-radius: 0px;\n"
+"}")
+ self.toolButton_102.setIcon(icon9)
+
+ self.horizontalLayout_202.addWidget(self.toolButton_102)
+
+ self.verticalWidget_42 = QWidget(self.horizontalWidget_52)
+ self.verticalWidget_42.setObjectName(u"verticalWidget_42")
+ self.verticalLayout_122 = QVBoxLayout(self.verticalWidget_42)
+ self.verticalLayout_122.setSpacing(6)
+ self.verticalLayout_122.setObjectName(u"verticalLayout_122")
+ self.verticalLayout_122.setContentsMargins(0, 0, 0, 0)
+ self.advancedOptionsLbl = QLabel(self.verticalWidget_42)
+ self.advancedOptionsLbl.setObjectName(u"advancedOptionsLbl")
+ self.advancedOptionsLbl.setFont(font1)
+
+ self.verticalLayout_122.addWidget(self.advancedOptionsLbl)
+
+ self.verticalSpacer_181 = QSpacerItem(20, 16, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
+
+ self.verticalLayout_122.addItem(self.verticalSpacer_181)
+
+
+ self.horizontalLayout_202.addWidget(self.verticalWidget_42)
+
+ self.horizontalSpacer_72 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_202.addItem(self.horizontalSpacer_72)
+
+
+ self.verticalLayout_142.addWidget(self.horizontalWidget_52)
+
+ self.line_122 = QFrame(self.advancedOptionsPage)
+ self.line_122.setObjectName(u"line_122")
+ self.line_122.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_122.setFrameShadow(QFrame.Plain)
+ self.line_122.setFrameShape(QFrame.HLine)
+
+ self.verticalLayout_142.addWidget(self.line_122)
+
+ self.advancedOptionsPageContent = QWidget(self.advancedOptionsPage)
+ self.advancedOptionsPageContent.setObjectName(u"advancedOptionsPageContent")
+ self.advancedOptionsPageContent.setEnabled(True)
+ self.verticalLayout_132 = QVBoxLayout(self.advancedOptionsPageContent)
+ self.verticalLayout_132.setObjectName(u"verticalLayout_132")
+ self.verticalLayout_132.setContentsMargins(0, 0, 0, 0)
+ self.label_17 = QLabel(self.advancedOptionsPageContent)
+ self.label_17.setObjectName(u"label_17")
+
+ self.verticalLayout_132.addWidget(self.label_17)
+
+ self.line_191 = QFrame(self.advancedOptionsPageContent)
+ self.line_191.setObjectName(u"line_191")
+ self.line_191.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_191.setFrameShadow(QFrame.Plain)
+ self.line_191.setFrameShape(QFrame.HLine)
+
+ self.verticalLayout_132.addWidget(self.line_191)
+
+ self.disableOTAChk = QCheckBox(self.advancedOptionsPageContent)
+ self.disableOTAChk.setObjectName(u"disableOTAChk")
+
+ self.verticalLayout_132.addWidget(self.disableOTAChk)
+
+ self.line_181 = QFrame(self.advancedOptionsPageContent)
+ self.line_181.setObjectName(u"line_181")
+ self.line_181.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_181.setFrameShadow(QFrame.Plain)
+ self.line_181.setFrameShape(QFrame.HLine)
+
+ self.verticalLayout_132.addWidget(self.line_181)
+
+ self.enableResolutionChk = QCheckBox(self.advancedOptionsPageContent)
+ self.enableResolutionChk.setObjectName(u"enableResolutionChk")
+
+ self.verticalLayout_132.addWidget(self.enableResolutionChk)
+
+ self.resChangerContent = QWidget(self.advancedOptionsPageContent)
+ self.resChangerContent.setObjectName(u"resChangerContent")
+ self.resChangerContent.setEnabled(True)
+ self.verticalLayout_35 = QVBoxLayout(self.resChangerContent)
+ self.verticalLayout_35.setObjectName(u"verticalLayout_35")
+ self.verticalLayout_35.setContentsMargins(0, 0, 0, 0)
+ self.resHeightLbl = QLabel(self.resChangerContent)
+ self.resHeightLbl.setObjectName(u"resHeightLbl")
+ self.resHeightLbl.setEnabled(False)
+
+ self.verticalLayout_35.addWidget(self.resHeightLbl)
+
+ self.horizontalLayout_9 = QHBoxLayout()
+ self.horizontalLayout_9.setObjectName(u"horizontalLayout_9")
+ self.horizontalLayout_9.setContentsMargins(-1, -1, -1, 5)
+ self.resHeightTxt = QLineEdit(self.resChangerContent)
+ self.resHeightTxt.setObjectName(u"resHeightTxt")
+ self.resHeightTxt.setEnabled(True)
+
+ self.horizontalLayout_9.addWidget(self.resHeightTxt)
+
+ self.resHeightWarningLbl = QLabel(self.resChangerContent)
+ self.resHeightWarningLbl.setObjectName(u"resHeightWarningLbl")
+ self.resHeightWarningLbl.setMinimumSize(QSize(22, 0))
+ self.resHeightWarningLbl.setStyleSheet(u"QLabel {\n"
+" border: 2px solid red;\n"
+" border-radius: 25px;\n"
+" color: red;\n"
+"}")
+ self.resHeightWarningLbl.setFrameShape(QFrame.NoFrame)
+ self.resHeightWarningLbl.setFrameShadow(QFrame.Plain)
+ self.resHeightWarningLbl.setScaledContents(False)
+ self.resHeightWarningLbl.setAlignment(Qt.AlignCenter)
+
+ self.horizontalLayout_9.addWidget(self.resHeightWarningLbl)
+
+
+ self.verticalLayout_35.addLayout(self.horizontalLayout_9)
+
+ self.resWidthLbl = QLabel(self.resChangerContent)
+ self.resWidthLbl.setObjectName(u"resWidthLbl")
+
+ self.verticalLayout_35.addWidget(self.resWidthLbl)
+
+ self.resolutionContent = QVBoxLayout()
+ self.resolutionContent.setObjectName(u"resolutionContent")
+ self.resolutionContent.setContentsMargins(-1, -1, -1, 0)
+ self.horizontalLayout_10 = QHBoxLayout()
+ self.horizontalLayout_10.setObjectName(u"horizontalLayout_10")
+ self.horizontalLayout_10.setContentsMargins(-1, -1, -1, 5)
+ self.resWidthTxt = QLineEdit(self.resChangerContent)
+ self.resWidthTxt.setObjectName(u"resWidthTxt")
+
+ self.horizontalLayout_10.addWidget(self.resWidthTxt)
+
+ self.resWidthWarningLbl = QLabel(self.resChangerContent)
+ self.resWidthWarningLbl.setObjectName(u"resWidthWarningLbl")
+ self.resWidthWarningLbl.setMinimumSize(QSize(22, 0))
+ self.resWidthWarningLbl.setStyleSheet(u"QLabel {\n"
+" border: 2px solid red;\n"
+" border-radius: 25px;\n"
+" color: red;\n"
+"}")
+ self.resWidthWarningLbl.setAlignment(Qt.AlignCenter)
+
+ self.horizontalLayout_10.addWidget(self.resWidthWarningLbl)
+
+
+ self.resolutionContent.addLayout(self.horizontalLayout_10)
+
+
+ self.verticalLayout_35.addLayout(self.resolutionContent)
+
+
+ self.verticalLayout_132.addWidget(self.resChangerContent)
+
+ self.verticalSpacer_62 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_132.addItem(self.verticalSpacer_62)
+
+
+ self.verticalLayout_142.addWidget(self.advancedOptionsPageContent)
+
+ self.pages.addWidget(self.advancedOptionsPage)
self.applyPage = QWidget()
self.applyPage.setObjectName(u"applyPage")
self.verticalLayout_6 = QVBoxLayout(self.applyPage)
@@ -1920,7 +2117,7 @@ def setupUi(self, Nugget):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
- self.toolButton_18.setIcon(icon9)
+ self.toolButton_18.setIcon(icon10)
self.horizontalLayout_33.addWidget(self.toolButton_18)
@@ -1999,7 +2196,7 @@ def setupUi(self, Nugget):
self.horizontalLayout_17.setContentsMargins(0, 0, 0, 0)
self.applyTweaksBtn = QToolButton(self.horizontalWidget4)
self.applyTweaksBtn.setObjectName(u"applyTweaksBtn")
- self.applyTweaksBtn.setIcon(icon9)
+ self.applyTweaksBtn.setIcon(icon10)
self.applyTweaksBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.horizontalLayout_17.addWidget(self.applyTweaksBtn)
@@ -2078,7 +2275,7 @@ def setupUi(self, Nugget):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
- self.toolButton_71.setIcon(icon10)
+ self.toolButton_71.setIcon(icon11)
self.horizontalLayout_131.addWidget(self.toolButton_71)
@@ -2131,17 +2328,44 @@ def setupUi(self, Nugget):
self._21.addWidget(self.allowWifiApplyingChk)
+ self.autoRebootChk = QCheckBox(self.settingsPageContent)
+ self.autoRebootChk.setObjectName(u"autoRebootChk")
+ self.autoRebootChk.setChecked(True)
+
+ self._21.addWidget(self.autoRebootChk)
+
+ self.showRiskyChk = QCheckBox(self.settingsPageContent)
+ self.showRiskyChk.setObjectName(u"showRiskyChk")
+
+ self._21.addWidget(self.showRiskyChk)
+
+ self.line_24 = QFrame(self.settingsPageContent)
+ self.line_24.setObjectName(u"line_24")
+ self.line_24.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_24.setFrameShadow(QFrame.Plain)
+ self.line_24.setFrameShape(QFrame.HLine)
+
+ self._21.addWidget(self.line_24)
+
self.skipSetupChk = QCheckBox(self.settingsPageContent)
self.skipSetupChk.setObjectName(u"skipSetupChk")
self.skipSetupChk.setChecked(True)
self._21.addWidget(self.skipSetupChk)
- self.autoRebootChk = QCheckBox(self.settingsPageContent)
- self.autoRebootChk.setObjectName(u"autoRebootChk")
- self.autoRebootChk.setChecked(True)
+ self.supervisionChk = QCheckBox(self.settingsPageContent)
+ self.supervisionChk.setObjectName(u"supervisionChk")
+ self.supervisionChk.setEnabled(True)
+ self.supervisionChk.setChecked(False)
- self._21.addWidget(self.autoRebootChk)
+ self._21.addWidget(self.supervisionChk)
+
+ self.supervisionOrganization = QLineEdit(self.settingsPageContent)
+ self.supervisionOrganization.setObjectName(u"supervisionOrganization")
+
+ self._21.addWidget(self.supervisionOrganization)
self.verticalSpacer_21 = QSpacerItem(20, 10, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
@@ -2202,7 +2426,7 @@ def setupUi(self, Nugget):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
- self.toolButton_13.setIcon(icon4)
+ self.toolButton_13.setIcon(icon6)
self.horizontalLayout_28.addWidget(self.toolButton_13)
@@ -2538,7 +2762,7 @@ def setupUi(self, Nugget):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
- self.themesBtn.setIcon(icon5)
+ self.themesBtn.setIcon(icon4)
self.themesBtn.setIconSize(QSize(30, 30))
self.horizontalLayout_23.addWidget(self.themesBtn)
@@ -2706,8 +2930,6 @@ def retranslateUi(self, Nugget):
self.homePageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.explorePageBtn.setText(QCoreApplication.translate("Nugget", u" Explore", None))
self.explorePageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
- self.locSimPageBtn.setText(QCoreApplication.translate("Nugget", u" Location Simulation", None))
- self.locSimPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.gestaltPageBtn.setText(QCoreApplication.translate("Nugget", u" Mobile Gestalt", None))
self.gestaltPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.featureFlagsPageBtn.setText(QCoreApplication.translate("Nugget", u" Feature Flags", None))
@@ -2718,6 +2940,8 @@ def retranslateUi(self, Nugget):
self.springboardOptionsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.internalOptionsPageBtn.setText(QCoreApplication.translate("Nugget", u" Internal Options", None))
self.internalOptionsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
+ self.advancedPageBtn.setText(QCoreApplication.translate("Nugget", u" Risky Options", None))
+ self.advancedPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.applyPageBtn.setText(QCoreApplication.translate("Nugget", u" Apply", None))
self.applyPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.settingsPageBtn.setText(QCoreApplication.translate("Nugget", u" Settings", None))
@@ -2743,9 +2967,9 @@ def retranslateUi(self, Nugget):
self.toolButton_15.setText(QCoreApplication.translate("Nugget", u"Additional Thanks", None))
self.libiBtn.setText(QCoreApplication.translate("Nugget", u"pymobiledevice3", None))
self.qtBtn.setText(QCoreApplication.translate("Nugget", u"Qt Creator", None))
- self.label.setText(QCoreApplication.translate("Nugget", u"Nugget GUI - Version 4.0.1", None))
+ self.label.setText(QCoreApplication.translate("Nugget", u"Nugget GUI - Version 4.1", None))
self.statusBarLbl.setText(QCoreApplication.translate("Nugget", u"Mobile Gestalt", None))
- self.mgaWarningLbl.setText(QCoreApplication.translate("Nugget", u"! Your device's mobilegestalt file is required for this feature. Select it on the apply page.", None))
+ self.mgaWarningLbl.setText(QCoreApplication.translate("Nugget", u"! You will need a MobileGestalt file for this feature. Please select it in the Apply page !", None))
self.label_9.setText(QCoreApplication.translate("Nugget", u"Device Subtype Preset", None))
self.dynamicIslandDrp.setItemText(0, QCoreApplication.translate("Nugget", u"None", None))
self.dynamicIslandDrp.setItemText(1, QCoreApplication.translate("Nugget", u"2436 (iPhone X Gestures for SE phones)", None))
@@ -2792,29 +3016,50 @@ def retranslateUi(self, Nugget):
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.mgaWarningLbl2.setText(QCoreApplication.translate("Nugget", u"! Your device's mobilegestalt file is required for this feature. Select it on the apply page.", None))
+ self.mgaWarningLbl2.setText(QCoreApplication.translate("Nugget", u"! You will need a MobileGestalt file for this feature. Please select it in the Apply page !", None))
self.enableAIChk.setText(QCoreApplication.translate("Nugget", u"Enable Apple Intelligence (for Unsupported Devices)", None))
- self.eligFileChk.setText(QCoreApplication.translate("Nugget", u"Enable Eligibility File (test)", None))
- self.experimentalChk.setText(QCoreApplication.translate("Nugget", u"Experimental Toggle", None))
+ self.eligFileChk.setText(QCoreApplication.translate("Nugget", u"Enable Eligibility File", 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"
+ self.aiInfoLabel.setText(QCoreApplication.translate("Nugget", u"In order to download the AI models, you must spoof your device model. However, this may break \n"
+"Face ID until you revert back. \n"
+"\n"
+"WARNING: Do not go to the Apple Intelligence menu in the Settings app after unspoofing.\n"
"\n"
-"Once the model has downloaded, turn off \"Apple Intelligence\" in Settings then set\n"
-"\"Spoofed Device Model\" to \"None\" and click the \"Apply Tweaks\" button on the \"Apply\" page\n"
-"again to fix Face ID.", None))
+"Entering the menu on your original device model will cause a re-download and may require a full\n"
+"restore to fix. Furthermore, if you switch between model groups, like spoofing from the iPhone 16s\n"
+"to the iPhone 15 Pro series, a re-download may also occur. \n"
+"Please be careful!", None))
self.label_8.setText(QCoreApplication.translate("Nugget", u"Spoofed Device Model", None))
- self.spoofedModelDrp.setItemText(0, QCoreApplication.translate("Nugget", u"None", None))
- self.spoofedModelDrp.setItemText(1, QCoreApplication.translate("Nugget", u"iPhone16,1 (iPhone 15 Pro)", None))
- self.spoofedModelDrp.setItemText(2, QCoreApplication.translate("Nugget", u"iPhone16,2 (iPhone 15 Pro Max)", None))
- self.spoofedModelDrp.setItemText(3, QCoreApplication.translate("Nugget", u"iPhone17,3 (iPhone 16)", None))
- self.spoofedModelDrp.setItemText(4, QCoreApplication.translate("Nugget", u"iPhone17,4 (iPhone 16 Plus)", None))
- self.spoofedModelDrp.setItemText(5, QCoreApplication.translate("Nugget", u"iPhone17,1 (iPhone 16 Pro)", None))
- self.spoofedModelDrp.setItemText(6, QCoreApplication.translate("Nugget", u"iPhone17,2 (iPhone 16 Pro Max)", None))
- self.spoofedModelDrp.setItemText(7, QCoreApplication.translate("Nugget", u"iPad16,3 (iPad Pro M4)", None))
-
- self.spoofedModelDrp.setCurrentText(QCoreApplication.translate("Nugget", u"None", None))
+ self.spoofedModelDrp.setItemText(0, QCoreApplication.translate("Nugget", u"Original", None))
+ self.spoofedModelDrp.setItemText(1, QCoreApplication.translate("Nugget", u"iPhone 15 Pro (iPhone16,1)", None))
+ self.spoofedModelDrp.setItemText(2, QCoreApplication.translate("Nugget", u"iPhone 15 Pro Max (iPhone16,2)", None))
+ self.spoofedModelDrp.setItemText(3, QCoreApplication.translate("Nugget", u"iPhone 16 (iPhone17,3)", None))
+ self.spoofedModelDrp.setItemText(4, QCoreApplication.translate("Nugget", u"iPhone 16 Plus (iPhone17,4)", None))
+ self.spoofedModelDrp.setItemText(5, QCoreApplication.translate("Nugget", u"iPhone 16 Pro (iPhone17,1)", None))
+ self.spoofedModelDrp.setItemText(6, QCoreApplication.translate("Nugget", u"iPhone 16 Pro Max (iPhone17,2)", None))
+ self.spoofedModelDrp.setItemText(7, QCoreApplication.translate("Nugget", u"iPad Mini (A17 Pro) (W) (iPad16,1)", None))
+ self.spoofedModelDrp.setItemText(8, QCoreApplication.translate("Nugget", u"iPad Mini (A17 Pro) (C) (iPad16,2)", None))
+ self.spoofedModelDrp.setItemText(9, QCoreApplication.translate("Nugget", u"iPad Pro (13-inch) (M4) (W) (iPad16,5)", None))
+ self.spoofedModelDrp.setItemText(10, QCoreApplication.translate("Nugget", u"iPad Pro (13-inch) (M4) (C) (iPad16,6)", None))
+ self.spoofedModelDrp.setItemText(11, QCoreApplication.translate("Nugget", u"iPad Pro (11-inch) (M4) (W) (iPad16,3)", None))
+ self.spoofedModelDrp.setItemText(12, QCoreApplication.translate("Nugget", u"iPad Pro (11-inch) (M4) (C) (iPad16,4)", None))
+ self.spoofedModelDrp.setItemText(13, QCoreApplication.translate("Nugget", u"iPad Pro (12.9-inch) (M2) (W) (iPad14,5)", None))
+ self.spoofedModelDrp.setItemText(14, QCoreApplication.translate("Nugget", u"iPad Pro (12.9-inch) (M2) (C) (iPad14,6)", None))
+ self.spoofedModelDrp.setItemText(15, QCoreApplication.translate("Nugget", u"iPad Pro (11-inch) (M2) (W) (iPad14,3)", None))
+ self.spoofedModelDrp.setItemText(16, QCoreApplication.translate("Nugget", u"iPad Pro (11-inch) (M2) (C) (iPad14,4)", None))
+ self.spoofedModelDrp.setItemText(17, QCoreApplication.translate("Nugget", u"iPad Air (13-inch) (M2) (W) (iPad14,10)", None))
+ self.spoofedModelDrp.setItemText(18, QCoreApplication.translate("Nugget", u"iPad Air (13-inch) (M2) (C) (iPad14,11)", None))
+ self.spoofedModelDrp.setItemText(19, QCoreApplication.translate("Nugget", u"iPad Air (11-inch) (M2) (W) (iPad14,8)", None))
+ self.spoofedModelDrp.setItemText(20, QCoreApplication.translate("Nugget", u"iPad Air (11-inch) (M2) (C) (iPad14,9)", None))
+ self.spoofedModelDrp.setItemText(21, QCoreApplication.translate("Nugget", u"iPad Pro (11-inch) (M1) (W) (iPad13,4)", None))
+ self.spoofedModelDrp.setItemText(22, QCoreApplication.translate("Nugget", u"iPad Pro (11-inch) (M1) (C) (iPad13,5)", None))
+ self.spoofedModelDrp.setItemText(23, QCoreApplication.translate("Nugget", u"iPad Pro (12.9-inch) (M1) (W) (iPad13,8)", None))
+ self.spoofedModelDrp.setItemText(24, QCoreApplication.translate("Nugget", u"iPad Pro (12.9-inch) (M1) (C) (iPad13,9)", None))
+ self.spoofedModelDrp.setItemText(25, QCoreApplication.translate("Nugget", u"iPad Air (M1) (W) (iPad13,16)", None))
+ self.spoofedModelDrp.setItemText(26, QCoreApplication.translate("Nugget", u"iPad Air (M1) (C) (iPad13,17)", None))
+
+ self.spoofedModelDrp.setCurrentText(QCoreApplication.translate("Nugget", u"Original", 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))
@@ -2828,7 +3073,6 @@ def retranslateUi(self, Nugget):
self.buildVersionChk.setText(QCoreApplication.translate("Nugget", u"Show Build Version in Status Bar", None))
self.RTLChk.setText(QCoreApplication.translate("Nugget", u"Force Right-to-Left Layout", None))
self.metalHUDChk.setText(QCoreApplication.translate("Nugget", u"Enable Metal HUD Debug", None))
- self.accessoryChk.setText(QCoreApplication.translate("Nugget", u"Enable Accessory Developer", None))
self.iMessageChk.setText(QCoreApplication.translate("Nugget", u"Enable iMessage Debugging", None))
self.IDSChk.setText(QCoreApplication.translate("Nugget", u"Enable Continuity Debugging", None))
self.VCChk.setText(QCoreApplication.translate("Nugget", u"Enable FaceTime Debugging", None))
@@ -2839,6 +3083,21 @@ def retranslateUi(self, Nugget):
self.enableWakeVibrateChk.setText(QCoreApplication.translate("Nugget", u"Vibrate on Raise-to-Wake", None))
self.pasteSoundChk.setText(QCoreApplication.translate("Nugget", u"Play Sound on Paste", None))
self.notifyPastesChk.setText(QCoreApplication.translate("Nugget", u"Show Notifications for System Pastes", None))
+ self.advancedOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Risky Options", None))
+ self.label_17.setText(QCoreApplication.translate("Nugget", u"Disclaimer:\n"
+"\n"
+"The options on this page may be unsafe for your device. Use these options at your own risk. Changing\n"
+"your device resolution has the potential to brick your device when used improperly.\n"
+"\n"
+"Nugget is not responsible if you mess up your device, especially with resolution changer.", None))
+ self.disableOTAChk.setText(QCoreApplication.translate("Nugget", u"Disable OTA Updates", None))
+ self.enableResolutionChk.setText(QCoreApplication.translate("Nugget", u"Set a Custom Device Resolution", None))
+ self.resHeightLbl.setText(QCoreApplication.translate("Nugget", u"Height:", None))
+ self.resHeightTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Resolution Height", None))
+ self.resHeightWarningLbl.setText(QCoreApplication.translate("Nugget", u"!", None))
+ self.resWidthLbl.setText(QCoreApplication.translate("Nugget", u"Width:", None))
+ self.resWidthTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Resolution Width", None))
+ self.resWidthWarningLbl.setText(QCoreApplication.translate("Nugget", u"!", None))
self.statusBarLbl_5.setText(QCoreApplication.translate("Nugget", u"Apply", None))
self.label_16.setText("")
self.modifiedTweaksLbl.setText(QCoreApplication.translate("Nugget", u"Current gestalt file location:", None))
@@ -2850,8 +3109,11 @@ def retranslateUi(self, Nugget):
self.resetGestaltBtn.setText(QCoreApplication.translate("Nugget", u"Reset Mobile Gestalt", None))
self.springboardOptionsLbl1.setText(QCoreApplication.translate("Nugget", u"Nugget Settings", None))
self.allowWifiApplyingChk.setText(QCoreApplication.translate("Nugget", u"Allow Applying Over WiFi", None))
- self.skipSetupChk.setText(QCoreApplication.translate("Nugget", u"Skip Setup * (non-exploit files only)", None))
self.autoRebootChk.setText(QCoreApplication.translate("Nugget", u"Auto Reboot After Applying", None))
+ self.showRiskyChk.setText(QCoreApplication.translate("Nugget", u"Show Risky Tweak Options", None))
+ self.skipSetupChk.setText(QCoreApplication.translate("Nugget", u"Skip Setup * (non-exploit files only)", None))
+ self.supervisionChk.setText(QCoreApplication.translate("Nugget", u"Enable Supervision * (requires Skip Setup)", None))
+ self.supervisionOrganization.setPlaceholderText(QCoreApplication.translate("Nugget", u"Enter Organization Name", None))
self.label_15.setText(QCoreApplication.translate("Nugget", u"* Note: Skip Setup may cause issues with configuration profiles. Turn it off if you need that.", None))
self.resetPairBtn.setText(QCoreApplication.translate("Nugget", u"Reset Device Pairing", None))
self.statusBarLbl_2.setText(QCoreApplication.translate("Nugget", u"Location Simulation", None))
diff --git a/qt/ui_mainwindow.py b/qt/ui_mainwindow.py
index 5abf8ca..7a2e0f2 100644
--- a/qt/ui_mainwindow.py
+++ b/qt/ui_mainwindow.py
@@ -320,19 +320,6 @@ def setupUi(self, Nugget):
self.verticalLayout.addWidget(self.explorePageBtn)
- self.locSimPageBtn = QToolButton(self.sidebar)
- self.locSimPageBtn.setObjectName(u"locSimPageBtn")
- sizePolicy2.setHeightForWidth(self.locSimPageBtn.sizePolicy().hasHeightForWidth())
- self.locSimPageBtn.setSizePolicy(sizePolicy2)
- icon4 = QIcon()
- icon4.addFile(u":/icon/geo-alt.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
- self.locSimPageBtn.setIcon(icon4)
- self.locSimPageBtn.setCheckable(True)
- self.locSimPageBtn.setAutoExclusive(True)
- self.locSimPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
-
- self.verticalLayout.addWidget(self.locSimPageBtn)
-
self.sidebarDiv1 = QFrame(self.sidebar)
self.sidebarDiv1.setObjectName(u"sidebarDiv1")
self.sidebarDiv1.setStyleSheet(u"QFrame {\n"
@@ -347,9 +334,9 @@ def setupUi(self, Nugget):
self.gestaltPageBtn.setObjectName(u"gestaltPageBtn")
sizePolicy2.setHeightForWidth(self.gestaltPageBtn.sizePolicy().hasHeightForWidth())
self.gestaltPageBtn.setSizePolicy(sizePolicy2)
- icon5 = QIcon()
- icon5.addFile(u":/icon/iphone-island.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
- self.gestaltPageBtn.setIcon(icon5)
+ icon4 = QIcon()
+ icon4.addFile(u":/icon/iphone-island.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.gestaltPageBtn.setIcon(icon4)
self.gestaltPageBtn.setIconSize(QSize(24, 28))
self.gestaltPageBtn.setCheckable(True)
self.gestaltPageBtn.setAutoExclusive(True)
@@ -365,9 +352,9 @@ def setupUi(self, Nugget):
font = QFont()
font.setFamilies([u".AppleSystemUIFont"])
self.featureFlagsPageBtn.setFont(font)
- icon6 = QIcon()
- icon6.addFile(u":/icon/flag.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
- self.featureFlagsPageBtn.setIcon(icon6)
+ icon5 = QIcon()
+ icon5.addFile(u":/icon/flag.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.featureFlagsPageBtn.setIcon(icon5)
self.featureFlagsPageBtn.setCheckable(True)
self.featureFlagsPageBtn.setAutoExclusive(True)
self.featureFlagsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
@@ -378,7 +365,9 @@ def setupUi(self, Nugget):
self.euEnablerPageBtn.setObjectName(u"euEnablerPageBtn")
sizePolicy2.setHeightForWidth(self.euEnablerPageBtn.sizePolicy().hasHeightForWidth())
self.euEnablerPageBtn.setSizePolicy(sizePolicy2)
- self.euEnablerPageBtn.setIcon(icon4)
+ icon6 = QIcon()
+ icon6.addFile(u":/icon/geo-alt.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.euEnablerPageBtn.setIcon(icon6)
self.euEnablerPageBtn.setCheckable(True)
self.euEnablerPageBtn.setAutoExclusive(True)
self.euEnablerPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
@@ -411,6 +400,19 @@ def setupUi(self, Nugget):
self.verticalLayout.addWidget(self.internalOptionsPageBtn)
+ self.advancedPageBtn = QToolButton(self.sidebar)
+ self.advancedPageBtn.setObjectName(u"advancedPageBtn")
+ sizePolicy2.setHeightForWidth(self.advancedPageBtn.sizePolicy().hasHeightForWidth())
+ self.advancedPageBtn.setSizePolicy(sizePolicy2)
+ icon9 = QIcon()
+ icon9.addFile(u":/icon/star.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.advancedPageBtn.setIcon(icon9)
+ self.advancedPageBtn.setCheckable(True)
+ self.advancedPageBtn.setAutoExclusive(True)
+ self.advancedPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+
+ self.verticalLayout.addWidget(self.advancedPageBtn)
+
self.sidebarDiv2 = QFrame(self.sidebar)
self.sidebarDiv2.setObjectName(u"sidebarDiv2")
self.sidebarDiv2.setStyleSheet(u"QFrame {\n"
@@ -425,9 +427,9 @@ def setupUi(self, Nugget):
self.applyPageBtn.setObjectName(u"applyPageBtn")
sizePolicy2.setHeightForWidth(self.applyPageBtn.sizePolicy().hasHeightForWidth())
self.applyPageBtn.setSizePolicy(sizePolicy2)
- icon9 = QIcon()
- icon9.addFile(u":/icon/check-circle.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
- self.applyPageBtn.setIcon(icon9)
+ icon10 = QIcon()
+ icon10.addFile(u":/icon/check-circle.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.applyPageBtn.setIcon(icon10)
self.applyPageBtn.setCheckable(True)
self.applyPageBtn.setAutoExclusive(True)
self.applyPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
@@ -438,9 +440,9 @@ def setupUi(self, Nugget):
self.settingsPageBtn.setObjectName(u"settingsPageBtn")
sizePolicy2.setHeightForWidth(self.settingsPageBtn.sizePolicy().hasHeightForWidth())
self.settingsPageBtn.setSizePolicy(sizePolicy2)
- icon10 = QIcon()
- icon10.addFile(u":/icon/gear.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
- self.settingsPageBtn.setIcon(icon10)
+ icon11 = QIcon()
+ icon11.addFile(u":/icon/gear.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.settingsPageBtn.setIcon(icon11)
self.settingsPageBtn.setCheckable(True)
self.settingsPageBtn.setAutoExclusive(True)
self.settingsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
@@ -551,9 +553,9 @@ def setupUi(self, Nugget):
" background-color: transparent;\n"
" padding: 0px;\n"
"}")
- icon11 = QIcon()
- icon11.addFile(u":/credits/big_nugget.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
- self.bigNuggetBtn.setIcon(icon11)
+ icon12 = QIcon()
+ icon12.addFile(u":/credits/big_nugget.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.bigNuggetBtn.setIcon(icon12)
self.bigNuggetBtn.setIconSize(QSize(150, 200))
self.horizontalLayout_27.addWidget(self.bigNuggetBtn)
@@ -588,18 +590,16 @@ def setupUi(self, Nugget):
self.horizontalLayout_8.setContentsMargins(-1, -1, 0, 0)
self.discordBtn = QToolButton(self.verticalWidget1)
self.discordBtn.setObjectName(u"discordBtn")
- icon12 = QIcon()
- icon12.addFile(u":/icon/discord.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
- self.discordBtn.setIcon(icon12)
+ icon13 = QIcon()
+ icon13.addFile(u":/icon/discord.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
+ self.discordBtn.setIcon(icon13)
self.discordBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.horizontalLayout_8.addWidget(self.discordBtn)
self.starOnGithubBtn = QToolButton(self.verticalWidget1)
self.starOnGithubBtn.setObjectName(u"starOnGithubBtn")
- icon13 = QIcon()
- icon13.addFile(u":/icon/star.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
- self.starOnGithubBtn.setIcon(icon13)
+ self.starOnGithubBtn.setIcon(icon9)
self.starOnGithubBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.horizontalLayout_8.addWidget(self.starOnGithubBtn)
@@ -897,7 +897,7 @@ def setupUi(self, Nugget):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
- self.toolButton_8.setIcon(icon5)
+ self.toolButton_8.setIcon(icon4)
self.toolButton_8.setIconSize(QSize(30, 30))
self.horizontalLayout_5.addWidget(self.toolButton_8)
@@ -1235,7 +1235,7 @@ def setupUi(self, Nugget):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
- self.toolButton_10.setIcon(icon6)
+ self.toolButton_10.setIcon(icon5)
self.horizontalLayout_20.addWidget(self.toolButton_10)
@@ -1341,7 +1341,7 @@ def setupUi(self, Nugget):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
- self.toolButton_11.setIcon(icon4)
+ self.toolButton_11.setIcon(icon6)
self.horizontalLayout_21.addWidget(self.toolButton_11)
@@ -1487,11 +1487,6 @@ def setupUi(self, Nugget):
self.verticalLayout_34.addWidget(self.eligFileChk)
- self.experimentalChk = QCheckBox(self.aiEnablerContent)
- self.experimentalChk.setObjectName(u"experimentalChk")
-
- self.verticalLayout_34.addWidget(self.experimentalChk)
-
self.languageLbl = QLabel(self.aiEnablerContent)
self.languageLbl.setObjectName(u"languageLbl")
@@ -1516,7 +1511,9 @@ def setupUi(self, Nugget):
self.aiInfoLabel.setObjectName(u"aiInfoLabel")
sizePolicy1.setHeightForWidth(self.aiInfoLabel.sizePolicy().hasHeightForWidth())
self.aiInfoLabel.setSizePolicy(sizePolicy1)
+ self.aiInfoLabel.setMaximumSize(QSize(16777215, 16777215))
self.aiInfoLabel.setTextFormat(Qt.AutoText)
+ self.aiInfoLabel.setScaledContents(False)
self.verticalLayout_34.addWidget(self.aiInfoLabel)
@@ -1534,6 +1531,25 @@ def setupUi(self, Nugget):
self.spoofedModelDrp.addItem("")
self.spoofedModelDrp.addItem("")
self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
+ self.spoofedModelDrp.addItem("")
self.spoofedModelDrp.setObjectName(u"spoofedModelDrp")
self.spoofedModelDrp.setMaximumSize(QSize(325, 16777215))
self.spoofedModelDrp.setStyleSheet(u"QComboBox {\n"
@@ -1801,11 +1817,6 @@ def setupUi(self, Nugget):
self.verticalLayout_131.addWidget(self.metalHUDChk)
- self.accessoryChk = QCheckBox(self.internalOptionsPageContent)
- self.accessoryChk.setObjectName(u"accessoryChk")
-
- self.verticalLayout_131.addWidget(self.accessoryChk)
-
self.iMessageChk = QCheckBox(self.internalOptionsPageContent)
self.iMessageChk.setObjectName(u"iMessageChk")
@@ -1894,6 +1905,192 @@ def setupUi(self, Nugget):
self.verticalLayout_141.addWidget(self.internalOptionsPageContent)
self.pages.addWidget(self.internalOptionsPage)
+ self.advancedOptionsPage = QWidget()
+ self.advancedOptionsPage.setObjectName(u"advancedOptionsPage")
+ self.verticalLayout_142 = QVBoxLayout(self.advancedOptionsPage)
+ self.verticalLayout_142.setObjectName(u"verticalLayout_142")
+ self.verticalLayout_142.setContentsMargins(0, 0, 0, 0)
+ self.horizontalWidget_52 = QWidget(self.advancedOptionsPage)
+ self.horizontalWidget_52.setObjectName(u"horizontalWidget_52")
+ self.horizontalLayout_202 = QHBoxLayout(self.horizontalWidget_52)
+ self.horizontalLayout_202.setSpacing(10)
+ self.horizontalLayout_202.setObjectName(u"horizontalLayout_202")
+ self.horizontalLayout_202.setContentsMargins(0, 9, 0, 9)
+ self.toolButton_102 = QToolButton(self.horizontalWidget_52)
+ self.toolButton_102.setObjectName(u"toolButton_102")
+ self.toolButton_102.setEnabled(False)
+ self.toolButton_102.setStyleSheet(u"QToolButton {\n"
+" icon-size: 24px;\n"
+" background-color: transparent;\n"
+" padding-left: 0px;\n"
+" padding-right: 5px;\n"
+" border-radius: 0px;\n"
+"}")
+ self.toolButton_102.setIcon(icon9)
+
+ self.horizontalLayout_202.addWidget(self.toolButton_102)
+
+ self.verticalWidget_42 = QWidget(self.horizontalWidget_52)
+ self.verticalWidget_42.setObjectName(u"verticalWidget_42")
+ self.verticalLayout_122 = QVBoxLayout(self.verticalWidget_42)
+ self.verticalLayout_122.setSpacing(6)
+ self.verticalLayout_122.setObjectName(u"verticalLayout_122")
+ self.verticalLayout_122.setContentsMargins(0, 0, 0, 0)
+ self.advancedOptionsLbl = QLabel(self.verticalWidget_42)
+ self.advancedOptionsLbl.setObjectName(u"advancedOptionsLbl")
+ self.advancedOptionsLbl.setFont(font1)
+
+ self.verticalLayout_122.addWidget(self.advancedOptionsLbl)
+
+ self.verticalSpacer_181 = QSpacerItem(20, 16, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
+
+ self.verticalLayout_122.addItem(self.verticalSpacer_181)
+
+
+ self.horizontalLayout_202.addWidget(self.verticalWidget_42)
+
+ self.horizontalSpacer_72 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_202.addItem(self.horizontalSpacer_72)
+
+
+ self.verticalLayout_142.addWidget(self.horizontalWidget_52)
+
+ self.line_122 = QFrame(self.advancedOptionsPage)
+ self.line_122.setObjectName(u"line_122")
+ self.line_122.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_122.setFrameShadow(QFrame.Plain)
+ self.line_122.setFrameShape(QFrame.Shape.HLine)
+
+ self.verticalLayout_142.addWidget(self.line_122)
+
+ self.advancedOptionsPageContent = QWidget(self.advancedOptionsPage)
+ self.advancedOptionsPageContent.setObjectName(u"advancedOptionsPageContent")
+ self.advancedOptionsPageContent.setEnabled(True)
+ self.verticalLayout_132 = QVBoxLayout(self.advancedOptionsPageContent)
+ self.verticalLayout_132.setObjectName(u"verticalLayout_132")
+ self.verticalLayout_132.setContentsMargins(0, 0, 0, 0)
+ self.label_17 = QLabel(self.advancedOptionsPageContent)
+ self.label_17.setObjectName(u"label_17")
+
+ self.verticalLayout_132.addWidget(self.label_17)
+
+ self.line_191 = QFrame(self.advancedOptionsPageContent)
+ self.line_191.setObjectName(u"line_191")
+ self.line_191.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_191.setFrameShadow(QFrame.Plain)
+ self.line_191.setFrameShape(QFrame.Shape.HLine)
+
+ self.verticalLayout_132.addWidget(self.line_191)
+
+ self.disableOTAChk = QCheckBox(self.advancedOptionsPageContent)
+ self.disableOTAChk.setObjectName(u"disableOTAChk")
+
+ self.verticalLayout_132.addWidget(self.disableOTAChk)
+
+ self.line_181 = QFrame(self.advancedOptionsPageContent)
+ self.line_181.setObjectName(u"line_181")
+ self.line_181.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_181.setFrameShadow(QFrame.Plain)
+ self.line_181.setFrameShape(QFrame.Shape.HLine)
+
+ self.verticalLayout_132.addWidget(self.line_181)
+
+ self.enableResolutionChk = QCheckBox(self.advancedOptionsPageContent)
+ self.enableResolutionChk.setObjectName(u"enableResolutionChk")
+
+ self.verticalLayout_132.addWidget(self.enableResolutionChk)
+
+ self.resChangerContent = QWidget(self.advancedOptionsPageContent)
+ self.resChangerContent.setObjectName(u"resChangerContent")
+ self.resChangerContent.setEnabled(True)
+ self.verticalLayout_35 = QVBoxLayout(self.resChangerContent)
+ self.verticalLayout_35.setObjectName(u"verticalLayout_35")
+ self.verticalLayout_35.setContentsMargins(0, 0, 0, 0)
+ self.resHeightLbl = QLabel(self.resChangerContent)
+ self.resHeightLbl.setObjectName(u"resHeightLbl")
+ self.resHeightLbl.setEnabled(False)
+
+ self.verticalLayout_35.addWidget(self.resHeightLbl)
+
+ self.horizontalLayout_9 = QHBoxLayout()
+ self.horizontalLayout_9.setObjectName(u"horizontalLayout_9")
+ self.horizontalLayout_9.setContentsMargins(-1, -1, -1, 5)
+ self.resHeightTxt = QLineEdit(self.resChangerContent)
+ self.resHeightTxt.setObjectName(u"resHeightTxt")
+ self.resHeightTxt.setEnabled(True)
+
+ self.horizontalLayout_9.addWidget(self.resHeightTxt)
+
+ self.resHeightWarningLbl = QLabel(self.resChangerContent)
+ self.resHeightWarningLbl.setObjectName(u"resHeightWarningLbl")
+ self.resHeightWarningLbl.setMinimumSize(QSize(22, 0))
+ self.resHeightWarningLbl.setStyleSheet(u"QLabel {\n"
+" border: 2px solid red;\n"
+" border-radius: 25px;\n"
+" color: red;\n"
+"}")
+ self.resHeightWarningLbl.setFrameShape(QFrame.NoFrame)
+ self.resHeightWarningLbl.setFrameShadow(QFrame.Plain)
+ self.resHeightWarningLbl.setScaledContents(False)
+ self.resHeightWarningLbl.setAlignment(Qt.AlignCenter)
+
+ self.horizontalLayout_9.addWidget(self.resHeightWarningLbl)
+
+
+ self.verticalLayout_35.addLayout(self.horizontalLayout_9)
+
+ self.resWidthLbl = QLabel(self.resChangerContent)
+ self.resWidthLbl.setObjectName(u"resWidthLbl")
+
+ self.verticalLayout_35.addWidget(self.resWidthLbl)
+
+ self.resolutionContent = QVBoxLayout()
+ self.resolutionContent.setObjectName(u"resolutionContent")
+ self.resolutionContent.setContentsMargins(-1, -1, -1, 0)
+ self.horizontalLayout_10 = QHBoxLayout()
+ self.horizontalLayout_10.setObjectName(u"horizontalLayout_10")
+ self.horizontalLayout_10.setContentsMargins(-1, -1, -1, 5)
+ self.resWidthTxt = QLineEdit(self.resChangerContent)
+ self.resWidthTxt.setObjectName(u"resWidthTxt")
+
+ self.horizontalLayout_10.addWidget(self.resWidthTxt)
+
+ self.resWidthWarningLbl = QLabel(self.resChangerContent)
+ self.resWidthWarningLbl.setObjectName(u"resWidthWarningLbl")
+ self.resWidthWarningLbl.setMinimumSize(QSize(22, 0))
+ self.resWidthWarningLbl.setStyleSheet(u"QLabel {\n"
+" border: 2px solid red;\n"
+" border-radius: 25px;\n"
+" color: red;\n"
+"}")
+ self.resWidthWarningLbl.setAlignment(Qt.AlignCenter)
+
+ self.horizontalLayout_10.addWidget(self.resWidthWarningLbl)
+
+
+ self.resolutionContent.addLayout(self.horizontalLayout_10)
+
+
+ self.verticalLayout_35.addLayout(self.resolutionContent)
+
+
+ self.verticalLayout_132.addWidget(self.resChangerContent)
+
+ self.verticalSpacer_62 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
+
+ self.verticalLayout_132.addItem(self.verticalSpacer_62)
+
+
+ self.verticalLayout_142.addWidget(self.advancedOptionsPageContent)
+
+ self.pages.addWidget(self.advancedOptionsPage)
self.applyPage = QWidget()
self.applyPage.setObjectName(u"applyPage")
self.verticalLayout_6 = QVBoxLayout(self.applyPage)
@@ -1920,7 +2117,7 @@ def setupUi(self, Nugget):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
- self.toolButton_18.setIcon(icon9)
+ self.toolButton_18.setIcon(icon10)
self.horizontalLayout_33.addWidget(self.toolButton_18)
@@ -1999,7 +2196,7 @@ def setupUi(self, Nugget):
self.horizontalLayout_17.setContentsMargins(0, 0, 0, 0)
self.applyTweaksBtn = QToolButton(self.horizontalWidget4)
self.applyTweaksBtn.setObjectName(u"applyTweaksBtn")
- self.applyTweaksBtn.setIcon(icon9)
+ self.applyTweaksBtn.setIcon(icon10)
self.applyTweaksBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.horizontalLayout_17.addWidget(self.applyTweaksBtn)
@@ -2078,7 +2275,7 @@ def setupUi(self, Nugget):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
- self.toolButton_71.setIcon(icon10)
+ self.toolButton_71.setIcon(icon11)
self.horizontalLayout_131.addWidget(self.toolButton_71)
@@ -2131,17 +2328,44 @@ def setupUi(self, Nugget):
self._21.addWidget(self.allowWifiApplyingChk)
+ self.autoRebootChk = QCheckBox(self.settingsPageContent)
+ self.autoRebootChk.setObjectName(u"autoRebootChk")
+ self.autoRebootChk.setChecked(True)
+
+ self._21.addWidget(self.autoRebootChk)
+
+ self.showRiskyChk = QCheckBox(self.settingsPageContent)
+ self.showRiskyChk.setObjectName(u"showRiskyChk")
+
+ self._21.addWidget(self.showRiskyChk)
+
+ self.line_24 = QFrame(self.settingsPageContent)
+ self.line_24.setObjectName(u"line_24")
+ self.line_24.setStyleSheet(u"QFrame {\n"
+" color: #414141;\n"
+"}")
+ self.line_24.setFrameShadow(QFrame.Plain)
+ self.line_24.setFrameShape(QFrame.Shape.HLine)
+
+ self._21.addWidget(self.line_24)
+
self.skipSetupChk = QCheckBox(self.settingsPageContent)
self.skipSetupChk.setObjectName(u"skipSetupChk")
self.skipSetupChk.setChecked(True)
self._21.addWidget(self.skipSetupChk)
- self.autoRebootChk = QCheckBox(self.settingsPageContent)
- self.autoRebootChk.setObjectName(u"autoRebootChk")
- self.autoRebootChk.setChecked(True)
+ self.supervisionChk = QCheckBox(self.settingsPageContent)
+ self.supervisionChk.setObjectName(u"supervisionChk")
+ self.supervisionChk.setEnabled(True)
+ self.supervisionChk.setChecked(False)
- self._21.addWidget(self.autoRebootChk)
+ self._21.addWidget(self.supervisionChk)
+
+ self.supervisionOrganization = QLineEdit(self.settingsPageContent)
+ self.supervisionOrganization.setObjectName(u"supervisionOrganization")
+
+ self._21.addWidget(self.supervisionOrganization)
self.verticalSpacer_21 = QSpacerItem(20, 10, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
@@ -2202,7 +2426,7 @@ def setupUi(self, Nugget):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
- self.toolButton_13.setIcon(icon4)
+ self.toolButton_13.setIcon(icon6)
self.horizontalLayout_28.addWidget(self.toolButton_13)
@@ -2538,7 +2762,7 @@ def setupUi(self, Nugget):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
- self.themesBtn.setIcon(icon5)
+ self.themesBtn.setIcon(icon4)
self.themesBtn.setIconSize(QSize(30, 30))
self.horizontalLayout_23.addWidget(self.themesBtn)
@@ -2706,8 +2930,6 @@ def retranslateUi(self, Nugget):
self.homePageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.explorePageBtn.setText(QCoreApplication.translate("Nugget", u" Explore", None))
self.explorePageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
- self.locSimPageBtn.setText(QCoreApplication.translate("Nugget", u" Location Simulation", None))
- self.locSimPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.gestaltPageBtn.setText(QCoreApplication.translate("Nugget", u" Mobile Gestalt", None))
self.gestaltPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.featureFlagsPageBtn.setText(QCoreApplication.translate("Nugget", u" Feature Flags", None))
@@ -2718,6 +2940,8 @@ def retranslateUi(self, Nugget):
self.springboardOptionsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.internalOptionsPageBtn.setText(QCoreApplication.translate("Nugget", u" Internal Options", None))
self.internalOptionsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
+ self.advancedPageBtn.setText(QCoreApplication.translate("Nugget", u" Risky Options", None))
+ self.advancedPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.applyPageBtn.setText(QCoreApplication.translate("Nugget", u" Apply", None))
self.applyPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.settingsPageBtn.setText(QCoreApplication.translate("Nugget", u" Settings", None))
@@ -2743,9 +2967,9 @@ def retranslateUi(self, Nugget):
self.toolButton_15.setText(QCoreApplication.translate("Nugget", u"Additional Thanks", None))
self.libiBtn.setText(QCoreApplication.translate("Nugget", u"pymobiledevice3", None))
self.qtBtn.setText(QCoreApplication.translate("Nugget", u"Qt Creator", None))
- self.label.setText(QCoreApplication.translate("Nugget", u"Nugget GUI - Version 4.0.1", None))
+ self.label.setText(QCoreApplication.translate("Nugget", u"Nugget GUI - Version 4.1", None))
self.statusBarLbl.setText(QCoreApplication.translate("Nugget", u"Mobile Gestalt", None))
- self.mgaWarningLbl.setText(QCoreApplication.translate("Nugget", u"! Your device's mobilegestalt file is required for this feature. Select it on the apply page.", None))
+ self.mgaWarningLbl.setText(QCoreApplication.translate("Nugget", u"! You will need a MobileGestalt file for this feature. Please select it in the Apply page !", None))
self.label_9.setText(QCoreApplication.translate("Nugget", u"Device Subtype Preset", None))
self.dynamicIslandDrp.setItemText(0, QCoreApplication.translate("Nugget", u"None", None))
self.dynamicIslandDrp.setItemText(1, QCoreApplication.translate("Nugget", u"2436 (iPhone X Gestures for SE phones)", None))
@@ -2792,29 +3016,50 @@ def retranslateUi(self, Nugget):
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.mgaWarningLbl2.setText(QCoreApplication.translate("Nugget", u"! Your device's mobilegestalt file is required for this feature. Select it on the apply page.", None))
+ self.mgaWarningLbl2.setText(QCoreApplication.translate("Nugget", u"! You will need a MobileGestalt file for this feature. Please select it in the Apply page !", None))
self.enableAIChk.setText(QCoreApplication.translate("Nugget", u"Enable Apple Intelligence (for Unsupported Devices)", None))
- self.eligFileChk.setText(QCoreApplication.translate("Nugget", u"Enable Eligibility File (test)", None))
- self.experimentalChk.setText(QCoreApplication.translate("Nugget", u"Experimental Toggle", None))
+ self.eligFileChk.setText(QCoreApplication.translate("Nugget", u"Enable Eligibility File", 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"
+ self.aiInfoLabel.setText(QCoreApplication.translate("Nugget", u"In order to download the AI models, you must spoof your device model. However, this may break \n"
+"Face ID until you revert back. \n"
+"\n"
+"WARNING: Do not go to the Apple Intelligence menu in the Settings app after unspoofing.\n"
"\n"
-"Once the model has downloaded, turn off \"Apple Intelligence\" in Settings then set\n"
-"\"Spoofed Device Model\" to \"None\" and click the \"Apply Tweaks\" button on the \"Apply\" page\n"
-"again to fix Face ID.", None))
+"Entering the menu on your original device model will cause a re-download and may require a full\n"
+"restore to fix. Furthermore, if you switch between model groups, like spoofing from the iPhone 16s\n"
+"to the iPhone 15 Pro series, a re-download may also occur. \n"
+"Please be careful!", None))
self.label_8.setText(QCoreApplication.translate("Nugget", u"Spoofed Device Model", None))
- self.spoofedModelDrp.setItemText(0, QCoreApplication.translate("Nugget", u"None", None))
- self.spoofedModelDrp.setItemText(1, QCoreApplication.translate("Nugget", u"iPhone16,1 (iPhone 15 Pro)", None))
- self.spoofedModelDrp.setItemText(2, QCoreApplication.translate("Nugget", u"iPhone16,2 (iPhone 15 Pro Max)", None))
- self.spoofedModelDrp.setItemText(3, QCoreApplication.translate("Nugget", u"iPhone17,3 (iPhone 16)", None))
- self.spoofedModelDrp.setItemText(4, QCoreApplication.translate("Nugget", u"iPhone17,4 (iPhone 16 Plus)", None))
- self.spoofedModelDrp.setItemText(5, QCoreApplication.translate("Nugget", u"iPhone17,1 (iPhone 16 Pro)", None))
- self.spoofedModelDrp.setItemText(6, QCoreApplication.translate("Nugget", u"iPhone17,2 (iPhone 16 Pro Max)", None))
- self.spoofedModelDrp.setItemText(7, QCoreApplication.translate("Nugget", u"iPad16,3 (iPad Pro M4)", None))
-
- self.spoofedModelDrp.setCurrentText(QCoreApplication.translate("Nugget", u"None", None))
+ self.spoofedModelDrp.setItemText(0, QCoreApplication.translate("Nugget", u"Original", None))
+ self.spoofedModelDrp.setItemText(1, QCoreApplication.translate("Nugget", u"iPhone 15 Pro (iPhone16,1)", None))
+ self.spoofedModelDrp.setItemText(2, QCoreApplication.translate("Nugget", u"iPhone 15 Pro Max (iPhone16,2)", None))
+ self.spoofedModelDrp.setItemText(3, QCoreApplication.translate("Nugget", u"iPhone 16 (iPhone17,3)", None))
+ self.spoofedModelDrp.setItemText(4, QCoreApplication.translate("Nugget", u"iPhone 16 Plus (iPhone17,4)", None))
+ self.spoofedModelDrp.setItemText(5, QCoreApplication.translate("Nugget", u"iPhone 16 Pro (iPhone17,1)", None))
+ self.spoofedModelDrp.setItemText(6, QCoreApplication.translate("Nugget", u"iPhone 16 Pro Max (iPhone17,2)", None))
+ self.spoofedModelDrp.setItemText(7, QCoreApplication.translate("Nugget", u"iPad Mini (A17 Pro) (W) (iPad16,1)", None))
+ self.spoofedModelDrp.setItemText(8, QCoreApplication.translate("Nugget", u"iPad Mini (A17 Pro) (C) (iPad16,2)", None))
+ self.spoofedModelDrp.setItemText(9, QCoreApplication.translate("Nugget", u"iPad Pro (13-inch) (M4) (W) (iPad16,5)", None))
+ self.spoofedModelDrp.setItemText(10, QCoreApplication.translate("Nugget", u"iPad Pro (13-inch) (M4) (C) (iPad16,6)", None))
+ self.spoofedModelDrp.setItemText(11, QCoreApplication.translate("Nugget", u"iPad Pro (11-inch) (M4) (W) (iPad16,3)", None))
+ self.spoofedModelDrp.setItemText(12, QCoreApplication.translate("Nugget", u"iPad Pro (11-inch) (M4) (C) (iPad16,4)", None))
+ self.spoofedModelDrp.setItemText(13, QCoreApplication.translate("Nugget", u"iPad Pro (12.9-inch) (M2) (W) (iPad14,5)", None))
+ self.spoofedModelDrp.setItemText(14, QCoreApplication.translate("Nugget", u"iPad Pro (12.9-inch) (M2) (C) (iPad14,6)", None))
+ self.spoofedModelDrp.setItemText(15, QCoreApplication.translate("Nugget", u"iPad Pro (11-inch) (M2) (W) (iPad14,3)", None))
+ self.spoofedModelDrp.setItemText(16, QCoreApplication.translate("Nugget", u"iPad Pro (11-inch) (M2) (C) (iPad14,4)", None))
+ self.spoofedModelDrp.setItemText(17, QCoreApplication.translate("Nugget", u"iPad Air (13-inch) (M2) (W) (iPad14,10)", None))
+ self.spoofedModelDrp.setItemText(18, QCoreApplication.translate("Nugget", u"iPad Air (13-inch) (M2) (C) (iPad14,11)", None))
+ self.spoofedModelDrp.setItemText(19, QCoreApplication.translate("Nugget", u"iPad Air (11-inch) (M2) (W) (iPad14,8)", None))
+ self.spoofedModelDrp.setItemText(20, QCoreApplication.translate("Nugget", u"iPad Air (11-inch) (M2) (C) (iPad14,9)", None))
+ self.spoofedModelDrp.setItemText(21, QCoreApplication.translate("Nugget", u"iPad Pro (11-inch) (M1) (W) (iPad13,4)", None))
+ self.spoofedModelDrp.setItemText(22, QCoreApplication.translate("Nugget", u"iPad Pro (11-inch) (M1) (C) (iPad13,5)", None))
+ self.spoofedModelDrp.setItemText(23, QCoreApplication.translate("Nugget", u"iPad Pro (12.9-inch) (M1) (W) (iPad13,8)", None))
+ self.spoofedModelDrp.setItemText(24, QCoreApplication.translate("Nugget", u"iPad Pro (12.9-inch) (M1) (C) (iPad13,9)", None))
+ self.spoofedModelDrp.setItemText(25, QCoreApplication.translate("Nugget", u"iPad Air (M1) (W) (iPad13,16)", None))
+ self.spoofedModelDrp.setItemText(26, QCoreApplication.translate("Nugget", u"iPad Air (M1) (C) (iPad13,17)", None))
+
+ self.spoofedModelDrp.setCurrentText(QCoreApplication.translate("Nugget", u"Original", 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))
@@ -2828,7 +3073,6 @@ def retranslateUi(self, Nugget):
self.buildVersionChk.setText(QCoreApplication.translate("Nugget", u"Show Build Version in Status Bar", None))
self.RTLChk.setText(QCoreApplication.translate("Nugget", u"Force Right-to-Left Layout", None))
self.metalHUDChk.setText(QCoreApplication.translate("Nugget", u"Enable Metal HUD Debug", None))
- self.accessoryChk.setText(QCoreApplication.translate("Nugget", u"Enable Accessory Developer", None))
self.iMessageChk.setText(QCoreApplication.translate("Nugget", u"Enable iMessage Debugging", None))
self.IDSChk.setText(QCoreApplication.translate("Nugget", u"Enable Continuity Debugging", None))
self.VCChk.setText(QCoreApplication.translate("Nugget", u"Enable FaceTime Debugging", None))
@@ -2839,6 +3083,21 @@ def retranslateUi(self, Nugget):
self.enableWakeVibrateChk.setText(QCoreApplication.translate("Nugget", u"Vibrate on Raise-to-Wake", None))
self.pasteSoundChk.setText(QCoreApplication.translate("Nugget", u"Play Sound on Paste", None))
self.notifyPastesChk.setText(QCoreApplication.translate("Nugget", u"Show Notifications for System Pastes", None))
+ self.advancedOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Risky Options", None))
+ self.label_17.setText(QCoreApplication.translate("Nugget", u"Disclaimer:\n"
+"\n"
+"The options on this page may be unsafe for your device. Use these options at your own risk. Changing\n"
+"your device resolution has the potential to brick your device when used improperly.\n"
+"\n"
+"Nugget is not responsible if you mess up your device, especially with resolution changer.", None))
+ self.disableOTAChk.setText(QCoreApplication.translate("Nugget", u"Disable OTA Updates", None))
+ self.enableResolutionChk.setText(QCoreApplication.translate("Nugget", u"Set a Custom Device Resolution", None))
+ self.resHeightLbl.setText(QCoreApplication.translate("Nugget", u"Height:", None))
+ self.resHeightTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Resolution Height", None))
+ self.resHeightWarningLbl.setText(QCoreApplication.translate("Nugget", u"!", None))
+ self.resWidthLbl.setText(QCoreApplication.translate("Nugget", u"Width:", None))
+ self.resWidthTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Resolution Width", None))
+ self.resWidthWarningLbl.setText(QCoreApplication.translate("Nugget", u"!", None))
self.statusBarLbl_5.setText(QCoreApplication.translate("Nugget", u"Apply", None))
self.label_16.setText("")
self.modifiedTweaksLbl.setText(QCoreApplication.translate("Nugget", u"Current gestalt file location:", None))
@@ -2850,8 +3109,11 @@ def retranslateUi(self, Nugget):
self.resetGestaltBtn.setText(QCoreApplication.translate("Nugget", u"Reset Mobile Gestalt", None))
self.springboardOptionsLbl1.setText(QCoreApplication.translate("Nugget", u"Nugget Settings", None))
self.allowWifiApplyingChk.setText(QCoreApplication.translate("Nugget", u"Allow Applying Over WiFi", None))
- self.skipSetupChk.setText(QCoreApplication.translate("Nugget", u"Skip Setup * (non-exploit files only)", None))
self.autoRebootChk.setText(QCoreApplication.translate("Nugget", u"Auto Reboot After Applying", None))
+ self.showRiskyChk.setText(QCoreApplication.translate("Nugget", u"Show Risky Tweak Options", None))
+ self.skipSetupChk.setText(QCoreApplication.translate("Nugget", u"Skip Setup * (non-exploit files only)", None))
+ self.supervisionChk.setText(QCoreApplication.translate("Nugget", u"Enable Supervision * (requires Skip Setup)", None))
+ self.supervisionOrganization.setPlaceholderText(QCoreApplication.translate("Nugget", u"Enter Organization Name", None))
self.label_15.setText(QCoreApplication.translate("Nugget", u"* Note: Skip Setup may cause issues with configuration profiles. Turn it off if you need that.", None))
self.resetPairBtn.setText(QCoreApplication.translate("Nugget", u"Reset Device Pairing", None))
self.statusBarLbl_2.setText(QCoreApplication.translate("Nugget", u"Location Simulation", None))
diff --git a/tweaks/basic_plist_locations.py b/tweaks/basic_plist_locations.py
index 40596a6..aa4e23d 100644
--- a/tweaks/basic_plist_locations.py
+++ b/tweaks/basic_plist_locations.py
@@ -16,9 +16,15 @@ class FileLocation(Enum):
pasteboard = "/var/Managed Preferences/mobile/com.apple.Pasteboard.plist"
notes = "/var/Managed Preferences/mobile/com.apple.mobilenotes.plist"
+ # Risky Options
+ ota = "/var/Managed Preferences/mobile/com.apple.MobileAsset.plist"
+
# support for older versions of python that cannot enumerate over enums
FileLocationsList: list[FileLocation] = [
FileLocation.resolution,
FileLocation.springboard, FileLocation.footnote,
FileLocation.globalPreferences, FileLocation.appStore, FileLocation.backboardd, FileLocation.coreMotion, FileLocation.pasteboard, FileLocation.notes
+]
+RiskyFileLocationsList: list[FileLocation] = [
+ FileLocation.ota
]
\ No newline at end of file
diff --git a/tweaks/tweak_classes.py b/tweaks/tweak_classes.py
index ad2199c..18c0ed3 100644
--- a/tweaks/tweak_classes.py
+++ b/tweaks/tweak_classes.py
@@ -49,13 +49,15 @@ def __init__(
value: any = True,
edit_type: TweakModifyType = TweakModifyType.TOGGLE,
min_version: Version = Version("1.0"),
+ is_risky: bool = False,
divider_below: bool = False
):
super().__init__(label=label, key=key, subkey=None, value=value, edit_type=edit_type, min_version=min_version, divider_below=divider_below)
self.file_location = file_location
+ self.is_risky = is_risky
- def apply_tweak(self, other_tweaks: dict) -> dict:
- if not self.enabled:
+ def apply_tweak(self, other_tweaks: dict, risky_allowed: bool = False) -> dict:
+ if not self.enabled or (self.is_risky and not risky_allowed):
return other_tweaks
if self.file_location in other_tweaks:
other_tweaks[self.file_location][self.key] = self.value
@@ -63,6 +65,27 @@ def apply_tweak(self, other_tweaks: dict) -> dict:
other_tweaks[self.file_location] = {self.key: self.value}
return other_tweaks
+class AdvancedPlistTweak(BasicPlistTweak):
+ def __init__(
+ self, label: str,
+ file_location: FileLocation,
+ keyValues: dict,
+ edit_type: TweakModifyType = TweakModifyType.TOGGLE,
+ min_version: Version = Version("1.0"),
+ is_risky: bool = False,
+ divider_below: bool = False
+ ):
+ super().__init__(label=label, file_location=file_location, key=None, value=keyValues, edit_type=edit_type, min_version=min_version, is_risky=is_risky, divider_below=divider_below)
+
+ def apply_tweak(self, other_tweaks: dict, risky_allowed: bool = False) -> dict:
+ if not self.enabled or (self.is_risky and not risky_allowed):
+ return other_tweaks
+ plist = {}
+ for key in self.value:
+ plist[key] = self.value[key]
+ other_tweaks[self.file_location] = plist
+ return other_tweaks
+
class RdarFixTweak(BasicPlistTweak):
def __init__(self, divider_below: bool = False):
@@ -75,8 +98,8 @@ def get_rdar_mode(self, model: str) -> int:
or model == "iPhone11,8"
or model == "iPhone12,1" or model == "iPhone12,3" or model == "iPhone12,5"):
self.mode = 1
- elif (model == "iPhone13,1" or model == "iPhone13,2" or model == "iPhone13,3" or model == "iPhone13,4"
- or model == "iPhone14,4" or model == "iPhone14,5" or model == "iPhone14,2" or model == "iPhone14,3"
+ elif (model == "iPhone13,2" or model == "iPhone13,3" or model == "iPhone13,4"
+ or model == "iPhone14,5" or model == "iPhone14,2" or model == "iPhone14,3"
or model == "iPhone14,7" or model == "iPhone14,8"):
self.mode = 2
elif (model == "iPhone12,8" or model == "iPhone14,6"):
@@ -97,19 +120,28 @@ def get_rdar_title(self) -> str:
def set_di_type(self, type: int):
self.di_type = type
- def apply_tweak(self, other_tweaks: dict) -> dict:
+ def apply_tweak(self, other_tweaks: dict, risky_allowed: bool = False) -> dict:
if not self.enabled:
return other_tweaks
if self.di_type == -1:
# revert the fix
other_tweaks[self.file_location] = {}
- elif self.mode == 1 or self.mode == 3:
+ elif self.mode == 1:
+ # iPhone XR, XS, and 11
plist = {
"canvas_height": 1791,
"canvas_width": 828
}
other_tweaks[self.file_location] = plist
+ elif self.mode == 3:
+ # iPhone SEs
+ plist = {
+ "canvas_height": 1779,
+ "canvas_width": 1000
+ }
+ other_tweaks[self.file_location] = plist
elif self.mode == 2:
+ # Status bar fix (iPhone 12+)
width = 2868
height = 1320
if self.di_type == 2556:
diff --git a/tweaks/tweaks.py b/tweaks/tweaks.py
index 3232620..3882f6d 100644
--- a/tweaks/tweaks.py
+++ b/tweaks/tweaks.py
@@ -1,5 +1,5 @@
from devicemanagement.constants import Version
-from .tweak_classes import MobileGestaltTweak, MobileGestaltMultiTweak, MobileGestaltPickerTweak, FeatureFlagTweak, TweakModifyType, BasicPlistTweak, RdarFixTweak
+from .tweak_classes import MobileGestaltTweak, MobileGestaltMultiTweak, MobileGestaltPickerTweak, FeatureFlagTweak, TweakModifyType, BasicPlistTweak, AdvancedPlistTweak, RdarFixTweak
from .eligibility_tweak import EligibilityTweak, AITweak
from .basic_plist_locations import FileLocation
@@ -42,10 +42,126 @@
## AI Enabler
"AIEligibility": AITweak(),
"AIGestalt": MobileGestaltTweak("Enable Apple Intelligence (for Unsupported Devices) (Gestalt)", "A62OafQ85EJAiiqKn4agtg", min_version=Version("18.1")),
- "AIExperiment": MobileGestaltTweak("Enable AI Experiment", "I3lidq+FVH2CeOi/ARa0tg", min_version=Version("18.1")),
- "SpoofModel": MobileGestaltPickerTweak("Spoofed Device Model", "h9jDsbgj7xIVeIQ8S3/X3Q", values=["Placeholder", "iPhone16,1", "iPhone16,2", "iPhone17,3", "iPhone17,4", "iPhone17,1", "iPhone17,2", "iPad16,3"], min_version=Version("18.1")),
- "SpoofHardware": MobileGestaltPickerTweak("Spoof Hardware Model", "oYicEKzVTz4/CxxE05pEgQ", values=["Placeholder", "D83AP", "D84AP", "D47AP", "D48AP", "D93AP", "D94AP", "J717AP"], min_version=Version("18.1")),
- "SpoofCPU": MobileGestaltPickerTweak("Spoof CPU Model", "5pYKlGnYYBzGvAlIU8RjEQ", values=["Placeholder", "t8130", "t8140"], min_version=Version("18.1"), divider_below=True),
+ "SpoofModel": MobileGestaltPickerTweak("Spoofed Device Model", "h9jDsbgj7xIVeIQ8S3/X3Q", values=[
+ # Default
+ "Placeholder", # 0 | Original
+
+ # iPhone
+ "iPhone16,1", # 1 | iPhone 15 Pro
+ "iPhone16,2", # 2 | iPhone 15 Pro Max
+ "iPhone17,3", # 3 | iPhone 16
+ "iPhone17,4", # 4 | iPhone 16 Plus
+ "iPhone17,1", # 5 | iPhone 16 Pro
+ "iPhone17,2", # 6 | iPhone 16 Pro Max
+
+ # A17 Pro iPads
+ "iPad16,1", # 7 | iPad Mini (A17 Pro) (W)
+ "iPad16,2", # 8 | iPad Mini (A17 Pro) (C)
+
+ # M4 iPads
+ "iPad16,5", # 9 | iPad Pro (13-inch) (M4) (W)
+ "iPad16,6", # 10 | iPad Pro (13-inch) (M4) (C)
+ "iPad16,3", # 11 | iPad Pro (11-inch) (M4) (W)
+ "iPad16,4", # 12 | iPad Pro (11-inch) (M4) (C)
+
+ # M2 iPads
+ "iPad14,5", # 13 | iPad Pro (12.9-inch) (M2) (W)
+ "iPad14,6", # 14 | iPad Pro (12.9-inch) (M2) (C)
+ "iPad14,3", # 15 | iPad Pro (11-inch) (M2) (W)
+ "iPad14,4", # 16 | iPad Pro (11-inch) (M2) (C)
+ "iPad14,10", # 17 | iPad Air (13-inch) (M2) (W)
+ "iPad14,11", # 18 | iPad Air (13-inch) (M2) (C)
+ "iPad14,8", # 19 | iPad Air (11-inch) (M2) (W)
+ "iPad14,9", # 20 | iPad Air (11-inch) (M2) (C)
+
+ # M1 iPads
+ "iPad13,4", # 21 | iPad Pro (11-inch) (M1) (W)
+ "iPad13,5", # 22 | iPad Pro (11-inch) (M1) (C)
+ "iPad13,8", # 23 | iPad Pro (12.9-inch) (M1) (W)
+ "iPad13,9", # 24 | iPad Pro (12.9-inch) (M1) (C)
+ "iPad13,16", # 25 | iPad Air (M1) (W)
+ "iPad13,17", # 26 | iPad Air (M1) (C)
+ ], min_version=Version("18.1")),
+ "SpoofHardware": MobileGestaltPickerTweak("Spoof Hardware Model", "oYicEKzVTz4/CxxE05pEgQ", values=[
+ # Default
+ "Placeholder", # 0 | Original
+
+ # iPhone
+ "D83AP", # 1 | iPhone 15 Pro
+ "D84AP", # 2 | iPhone 15 Pro Max
+ "D47AP", # 3 | iPhone 16
+ "D48AP", # 4 | iPhone 16 Plus
+ "D93AP", # 5 | iPhone 16 Pro
+ "D94AP", # 6 | iPhone 16 Pro Max
+
+ # A17 Pro iPads
+ "J410AP", # 7 | iPad Mini (A17 Pro) (W)
+ "J411AP", # 8 | iPad Mini (A17 Pro) (C)
+
+ # M4 iPads
+ "J720AP", # 9 | iPad Pro (13-inch) (M4) (W)
+ "J721AP", # 10 | iPad Pro (13-inch) (M4) (C)
+ "J717AP", # 11 | iPad Pro (11-inch) (M4) (W)
+ "J718AP", # 12 | iPad Pro (11-inch) (M4) (C)
+
+ # M2 iPads
+ "J620AP", # 13 | iPad Pro (12.9-inch) (M2) (W)
+ "J621AP", # 14 | iPad Pro (12.9-inch) (M2) (C)
+ "J617AP", # 15 | iPad Pro (11-inch) (M2) (W)
+ "J618AP", # 16 | iPad Pro (11-inch) (M2) (C)
+ "J537AP", # 17 | iPad Air (13-inch) (M2) (W)
+ "J538AP", # 18 | iPad Air (13-inch) (M2) (C)
+ "J507AP", # 19 | iPad Air (11-inch) (M2) (W)
+ "J508AP", # 20 | iPad Air (11-inch) (M2) (C)
+
+ # M1 iPads
+ "J517AP", # 21 | iPad Pro (11-inch) (M1) (W)
+ "J517xAP", # 22 | iPad Pro (11-inch) (M1) (C)
+ "J522AP", # 23 | iPad Pro (12.9-inch) (M1) (W)
+ "J522xAP", # 24 | iPad Pro (12.9-inch) (M1) (C)
+ "J407AP", # 25 | iPad Air (M1) (W)
+ "J408AP", # 26 | iPad Air (M1) (C)
+ ], min_version=Version("18.1")),
+ "SpoofCPU": MobileGestaltPickerTweak("Spoof CPU Model", "5pYKlGnYYBzGvAlIU8RjEQ", values=[
+ # Default
+ "Placeholder", # 0 | Original
+
+ # iPhone
+ "t8130", # 1 | iPhone 15 Pro
+ "t8130", # 2 | iPhone 15 Pro Max
+ "t8140", # 3 | iPhone 16
+ "t8140", # 4 | iPhone 16 Plus
+ "t8140", # 5 | iPhone 16 Pro
+ "t8140", # 6 | iPhone 16 Pro Max
+
+ # A17 Pro iPads
+ "t8130", # 7 | iPad Mini (A17 Pro) (W)
+ "t8130", # 8 | iPad Mini (A17 Pro) (C)
+
+ # M4 iPads
+ "t8182", # 9 | iPad Pro (13-inch) (M4) (W)
+ "t8182", # 10 | iPad Pro (13-inch) (M4) (C)
+ "t8182", # 11 | iPad Pro (11-inch) (M4) (W)
+ "t8182", # 12 | iPad Pro (11-inch) (M4) (C)
+
+ # M2 iPads
+ "t8112", # 13 | iPad Pro (12.9-inch) (M2) (W)
+ "t8112", # 14 | iPad Pro (12.9-inch) (M2) (C)
+ "t8112", # 15 | iPad Pro (11-inch) (M2) (W)
+ "t8112", # 16 | iPad Pro (11-inch) (M2) (C)
+ "t8112", # 17 | iPad Air (13-inch) (M2) (W)
+ "t8112", # 18 | iPad Air (13-inch) (M2) (C)
+ "t8112", # 19 | iPad Air (11-inch) (M2) (W)
+ "t8112", # 20 | iPad Air (11-inch) (M2) (C)
+
+ # M1 iPads
+ "t8103", # 21 | iPad Pro (11-inch) (M1) (W)
+ "t8103", # 22 | iPad Pro (11-inch) (M1) (C)
+ "t8103", # 23 | iPad Pro (12.9-inch) (M1) (W)
+ "t8103", # 24 | iPad Pro (12.9-inch) (M1) (C)
+ "t8103", # 25 | iPad Air (M1) (W)
+ "t8103", # 26 | iPad Air (M1) (C)
+ ], min_version=Version("18.1"), divider_below=True),
## Springboard Tweaks
"LockScreenFootnote": BasicPlistTweak(
@@ -102,11 +218,6 @@
FileLocation.globalPreferences,
"MetalForceHudEnabled"
),
- "AccessoryDeveloperEnabled": BasicPlistTweak(
- "Enable Accessory Debugging",
- FileLocation.globalPreferences,
- "AccessoryDeveloperEnabled"
- ),
"iMessageDiagnosticsEnabled": BasicPlistTweak(
"Enable iMessage Debugging",
FileLocation.globalPreferences,
@@ -156,5 +267,26 @@
"Show Notifications for System Pastes",
FileLocation.pasteboard,
"AnnounceAllPastes"
+ ),
+
+ ## Risky Options
+ "DisableOTA": AdvancedPlistTweak(
+ "Disable OTA Updates",
+ FileLocation.ota,
+ {
+ "MobileAssetServerURL-com.apple.MobileAsset.MobileSoftwareUpdate.UpdateBrain": "https://mesu.apple.com/assets/tvOS16DeveloperSeed",
+ "MobileAssetSUAllowOSVersionChange": False,
+ "MobileAssetSUAllowSameVersionFullReplacement": False,
+ "MobileAssetServerURL-com.apple.MobileAsset.RecoveryOSUpdate": "https://mesu.apple.com/assets/tvOS16DeveloperSeed",
+ "MobileAssetServerURL-com.apple.MobileAsset.RecoveryOSUpdateBrain": "https://mesu.apple.com/assets/tvOS16DeveloperSeed",
+ "MobileAssetServerURL-com.apple.MobileAsset.SoftwareUpdate": "https://mesu.apple.com/assets/tvOS16DeveloperSeed",
+ "MobileAssetAssetAudience": "65254ac3-f331-4c19-8559-cbe22f5bc1a6"
+ }, is_risky=True
+ ),
+ "CustomResolution": AdvancedPlistTweak(
+ "Set Custom Resolution real",
+ FileLocation.resolution,
+ {}, # empty as to not cause issues when only 1 value is inputted
+ is_risky=True
)
}
\ No newline at end of file