From 6e9e0aee0a9a493cd9b86d1a7c50b5b68d2c6fe3 Mon Sep 17 00:00:00 2001 From: ny Date: Sat, 28 Feb 2026 18:03:35 -0500 Subject: [PATCH 1/5] fix: revert 26.4 fix partially to fix everywhere --- Dependencies/minimuxer | 2 +- SideStore/MinimuxerWrapper.swift | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/Dependencies/minimuxer b/Dependencies/minimuxer index 9ceaaf01..f9432a08 160000 --- a/Dependencies/minimuxer +++ b/Dependencies/minimuxer @@ -1 +1 @@ -Subproject commit 9ceaaf01ea0c36a6508fa316eb26778229f08f61 +Subproject commit f9432a085b19de1bbcd744c600f510f499703a97 diff --git a/SideStore/MinimuxerWrapper.swift b/SideStore/MinimuxerWrapper.swift index 83544f24..cf5c8f4e 100644 --- a/SideStore/MinimuxerWrapper.swift +++ b/SideStore/MinimuxerWrapper.swift @@ -14,11 +14,11 @@ var isMinimuxerReady: Bool { return true #else IfManager.shared.query() - let dest = IfManager.shared.nextProbableSideVPN?.destIP if #available(iOS 26.4, *) { - return minimuxer.ready(dest) && IfManager.shared.sideVPNPatched + print("Running patched check") + return minimuxer.ready() && IfManager.shared.sideVPNPatched } else { - return minimuxer.ready(dest) + return minimuxer.ready() } #endif } @@ -27,10 +27,8 @@ func minimuxerStartWithLogger(_ pairingFile: String, _ logPath: String, _ loggin #if targetEnvironment(simulator) print("minimuxerStartWithLogger(\(pairingFile), \(logPath), \(loggingEnabled)) is no-op on simulator") #else - IfManager.shared.query() - let dest = IfManager.shared.nextProbableSideVPN?.destIP - print("minimuxerStartWithLogger(\(pairingFile), \(logPath), \(dest), \(loggingEnabled)) is no-op on simulator") - try minimuxer.startWithLogger(pairingFile, logPath, dest, loggingEnabled) + print("minimuxerStartWithLogger(\(pairingFile), \(logPath), \(loggingEnabled))") + try minimuxer.startWithLogger(pairingFile, logPath, loggingEnabled) #endif } From 8624a8e9198218dbeb20ab82a7f5b920b6bf59f6 Mon Sep 17 00:00:00 2001 From: suprstarrd Date: Tue, 17 Mar 2026 09:28:56 -0700 Subject: [PATCH 2/5] feat: add Mona to Trusted Sources (#1210) * feat: add Mona to Trusted Sources Signed-off-by: suprstarrd --- trustedapps.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/trustedapps.json b/trustedapps.json index 8047e934..227dfafa 100644 --- a/trustedapps.json +++ b/trustedapps.json @@ -75,6 +75,10 @@ { "identifier": "thatstel.la.altsource", "sourceURL": "https://alt.thatstel.la/" + }, + { + "identifier": "com.deliacheminot.mona", + "sourceURL": "https://raw.githubusercontent.com/delia-cheminot/mona-hrt/refs/heads/main/ios_source.json" } ], "sources": [ @@ -148,6 +152,10 @@ { "identifier": "thatstel.la.altsource", "sourceURL": "https://alt.thatstel.la/" + }, + { + "identifier": "com.deliacheminot.mona", + "sourceURL": "https://raw.githubusercontent.com/delia-cheminot/mona-hrt/refs/heads/main/ios_source.json" } ] } From a1f71a8149d851302b7b4b4f792b5218fd900929 Mon Sep 17 00:00:00 2001 From: Huge_Black Date: Sat, 21 Mar 2026 11:58:20 +0800 Subject: [PATCH 3/5] Fix widget not working --- AltStore.xcodeproj/project.pbxproj | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/AltStore.xcodeproj/project.pbxproj b/AltStore.xcodeproj/project.pbxproj index 78f8fc38..4e8a13ec 100644 --- a/AltStore.xcodeproj/project.pbxproj +++ b/AltStore.xcodeproj/project.pbxproj @@ -2937,6 +2937,13 @@ /* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ /* Begin PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet section */ + 173100732F6E4550001FBB19 /* PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet */ = { + isa = PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet; + buildPhase = BFD247682284B9A500981D42 /* Resources */; + membershipExceptions = ( + Intents/ViewApp.intentdefinition, + ); + }; A8EEC8CC2F4B146B00F2436D /* PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet */ = { isa = PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet; buildPhase = BFD247682284B9A500981D42 /* Resources */; @@ -2959,7 +2966,7 @@ A8A5AFE32F4C343200572B4A /* .github */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = .github; sourceTree = ""; }; A8A5AFEA2F4C343200572B4A /* keys */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = keys; sourceTree = ""; }; A8A5C85B2F4C68BF00572B4A /* libfragmentzip */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = libfragmentzip; sourceTree = ""; }; - A8EEC0502F4AF7FB00F2436D /* AltStoreCore */ = {isa = PBXFileSystemSynchronizedRootGroup; exceptions = (A8EEC0BF2F4AF7FB00F2436D /* PBXFileSystemSynchronizedBuildFileExceptionSet */, ); explicitFileTypes = {}; explicitFolders = (); path = AltStoreCore; sourceTree = ""; }; + A8EEC0502F4AF7FB00F2436D /* AltStoreCore */ = {isa = PBXFileSystemSynchronizedRootGroup; exceptions = (173100732F6E4550001FBB19 /* PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet */, A8EEC0BF2F4AF7FB00F2436D /* PBXFileSystemSynchronizedBuildFileExceptionSet */, ); explicitFileTypes = {}; explicitFolders = (); path = AltStoreCore; sourceTree = ""; }; A8EEC3482F4B0D8600F2436D /* Shared */ = {isa = PBXFileSystemSynchronizedRootGroup; exceptions = (A8EEC36A2F4B0D8700F2436D /* PBXFileSystemSynchronizedBuildFileExceptionSet */, A8EEC36C2F4B0D8700F2436D /* PBXFileSystemSynchronizedBuildFileExceptionSet */, A8EEC36B2F4B0D8700F2436D /* PBXFileSystemSynchronizedBuildFileExceptionSet */, ); explicitFileTypes = {}; explicitFolders = (); path = Shared; sourceTree = ""; }; A8EEC3B92F4B0EFC00F2436D /* AltWidget */ = {isa = PBXFileSystemSynchronizedRootGroup; exceptions = (A8EEC3CA2F4B0EFC00F2436D /* PBXFileSystemSynchronizedBuildFileExceptionSet */, ); explicitFileTypes = {}; explicitFolders = (); path = AltWidget; sourceTree = ""; }; A8EEC3D92F4B0FC800F2436D /* AltBackup */ = {isa = PBXFileSystemSynchronizedRootGroup; exceptions = (A8EEC3E22F4B0FC800F2436D /* PBXFileSystemSynchronizedBuildFileExceptionSet */, ); explicitFileTypes = {}; explicitFolders = (); path = AltBackup; sourceTree = ""; }; From 01e73328f8bf757879b5b496c442ff8ae3dcfc83 Mon Sep 17 00:00:00 2001 From: Huge_Black Date: Sat, 21 Mar 2026 12:01:16 +0800 Subject: [PATCH 4/5] Only run turn off data shortcut when minimuxer is not ready and below 26.4 --- AltStore/Operations/InstallAppOperation.swift | 11 +++++---- AltStore/Operations/OperationContexts.swift | 2 ++ AltStore/Operations/SendAppOperation.swift | 23 +++++++++++++++---- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/AltStore/Operations/InstallAppOperation.swift b/AltStore/Operations/InstallAppOperation.swift index 9e94206c..1e68be03 100644 --- a/AltStore/Operations/InstallAppOperation.swift +++ b/AltStore/Operations/InstallAppOperation.swift @@ -214,9 +214,10 @@ final class InstallAppOperation: ResultOperation alert.addAction(UIAlertAction(title: NSLocalizedString("Continue", comment: ""), style: .default, handler: { _ in print("Going home") // Cell Shortcut - UIApplication.shared.open(shortcutURLonDelay, options: [:]) { _ in - print("Cell OFF Shortcut finished execution.")} - + if self.context.shouldTurnOffData { + UIApplication.shared.open(shortcutURLonDelay, options: [:]) { _ in + print("Cell OFF Shortcut finished execution.")} + } UIApplication.shared.perform(#selector(NSXPCConnection.suspend)) })) @@ -234,7 +235,9 @@ final class InstallAppOperation: ResultOperation } } // Cell Shortcut - UIApplication.shared.open(shortcutURLonDelay, options: [:]) { _ in print("Cell OFF Shortcut finished execution.")} + if self.context.shouldTurnOffData { + UIApplication.shared.open(shortcutURLonDelay, options: [:]) { _ in print("Cell OFF Shortcut finished execution.")} + } UIApplication.shared.perform(#selector(NSXPCConnection.suspend)) } } diff --git a/AltStore/Operations/OperationContexts.swift b/AltStore/Operations/OperationContexts.swift index a1327c66..fdbc87bc 100644 --- a/AltStore/Operations/OperationContexts.swift +++ b/AltStore/Operations/OperationContexts.swift @@ -123,6 +123,8 @@ class InstallAppOperationContext: AppOperationContext var alternateIconURL: URL? + var shouldTurnOffData: Bool = false + // Non-nil when installing from a source. @AsyncManaged var appVersion: AppVersion? diff --git a/AltStore/Operations/SendAppOperation.swift b/AltStore/Operations/SendAppOperation.swift index 9a92930d..4d5849dd 100644 --- a/AltStore/Operations/SendAppOperation.swift +++ b/AltStore/Operations/SendAppOperation.swift @@ -42,10 +42,25 @@ final class SendAppOperation: ResultOperation<()> let fileURL = InstalledApp.refreshedIPAURL(for: app) print("AFC App `fileURL`: \(fileURL.absoluteString)") - // Wait for Shortcut to Finish Before Proceeding - UIApplication.shared.open(shortcutURLoff, options: [:]) { _ in - print("Shortcut finished execution. Proceeding with file transfer.") - + // only when minimuxer is not ready and below 26.4 should we turn off data + if #available(iOS 26.4, *) { + context.shouldTurnOffData = false + } else if !isMinimuxerReady { + context.shouldTurnOffData = true + } else { + context.shouldTurnOffData = false + } + + if context.shouldTurnOffData { + // Wait for Shortcut to Finish Before Proceeding + UIApplication.shared.open(shortcutURLoff, options: [:]) { _ in + print("Shortcut finished execution. Proceeding with file transfer.") + + DispatchQueue.global().async { + self.processFile(at: fileURL, for: app.bundleIdentifier) + } + } + } else { DispatchQueue.global().async { self.processFile(at: fileURL, for: app.bundleIdentifier) } From 75edfad1322fb9dc3752ef6b0e2ded74154acbed Mon Sep 17 00:00:00 2001 From: Huge_Black Date: Sat, 21 Mar 2026 15:30:49 +0800 Subject: [PATCH 5/5] Fix AltBackup.ipa is not included Added a symlink in AltSotore/Resources/AltBackup.ipa that points to build/AltBackup.ipa It seems Xcode reads all contents in AltSotore/Resources before ipa-altbackup runs, so AltBackup.ipa is missing in the first build. Adding a symlink will cause Xcode to always include that file --- AltStore/Resources/AltBackup.ipa | 1 + Makefile | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) create mode 120000 AltStore/Resources/AltBackup.ipa diff --git a/AltStore/Resources/AltBackup.ipa b/AltStore/Resources/AltBackup.ipa new file mode 120000 index 00000000..395e0998 --- /dev/null +++ b/AltStore/Resources/AltBackup.ipa @@ -0,0 +1 @@ +../../build/AltBackup.ipa \ No newline at end of file diff --git a/Makefile b/Makefile index 937e80d7..a5d653f2 100755 --- a/Makefile +++ b/Makefile @@ -374,8 +374,7 @@ ipa-altbackup: checkPaths copy-altbackup @echo " Copying from $(ALT_APP_SRC) into $(ALT_APP_PAYLOAD_DST)" @cp -R -f "$(ALT_APP_SRC)/." "$(ALT_APP_PAYLOAD_DST)/$(TARGET_NAME)" @pushd "$(ALT_APP_DST_ARCHIVE)" && zip -r "../../$(ALT_APP_IPA_DST)" Payload || popd - @cp -f "$(ALT_APP_IPA_DST)" AltStore/Resources - @echo " IPA created: AltStore/Resources/AltBackup.ipa" + @echo " IPA created: build/AltBackup.ipa" clean-altbackup: @echo ""