From 730d248a0af1c747479c93ae3aed37bd82c76ecc Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 16 Feb 2026 00:09:15 +0100 Subject: [PATCH 1/5] Add GitHub Actions workflow for rootless DEB artifacts --- .github/workflows/build-rootless-deb.yml | 33 +++++++++++++++++++ Tweak.xm | 41 ++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 .github/workflows/build-rootless-deb.yml diff --git a/.github/workflows/build-rootless-deb.yml b/.github/workflows/build-rootless-deb.yml new file mode 100644 index 0000000..bde6bb4 --- /dev/null +++ b/.github/workflows/build-rootless-deb.yml @@ -0,0 +1,33 @@ +name: Build rootless DEB + +on: + push: + pull_request: + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Setup Theos + uses: Randomblock1/theos-action@v1 + + - name: Build rootless package + env: + THEOS_PACKAGE_SCHEME: rootless + run: | + make clean package FINALPACKAGE=1 + + - name: Upload DEB artifacts + uses: actions/upload-artifact@v4 + with: + name: flexing-rootless-debs + path: | + packages/*.deb + if-no-files-found: error diff --git a/Tweak.xm b/Tweak.xm index 4f2150c..66e1754 100644 --- a/Tweak.xm +++ b/Tweak.xm @@ -21,6 +21,7 @@ BOOL initialized = NO; id manager = nil; SEL show = nil; +BOOL didAutoShowExplorer = NO; static NSHashTable *windowsWithGestures = nil; @@ -51,6 +52,36 @@ inline BOOL flexAlreadyLoaded() { return NSClassFromString(@"FLEXExplorerToolbar") != nil; } +inline BOOL isSpringBoardProcess() { + return [NSBundle.mainBundle.bundleIdentifier isEqualToString:@"com.apple.springboard"]; +} + +inline void enableNetworkMonitoringIfPossible() { + if (!manager) { + return; + } + + // FLEX exposes this as the setter for the `networkDebuggingEnabled` property + // (from FLEXManager+Networking), but keep a fallback for older/variant builds. + SEL selectors[] = { + @selector(setNetworkDebuggingEnabled:), + NSSelectorFromString(@"enableNetworkDebugging") + }; + + for (NSUInteger i = 0; i < sizeof(selectors) / sizeof(SEL); i++) { + SEL selector = selectors[i]; + if ([manager respondsToSelector:selector]) { + if (selector == @selector(setNetworkDebuggingEnabled:)) { + ((void (*)(id, SEL, BOOL))[manager methodForSelector:selector])(manager, selector, YES); + } else { + ((void (*)(id, SEL))[manager methodForSelector:selector])(manager, selector); + } + HBLogInfo(@"FLEXing: Enabled network monitoring via %@", NSStringFromSelector(selector)); + break; + } + } +} + %ctor { #if TARGET_OS_SIMULATOR NSString *standardPath = realPath(@"/Library/MobileSubstrate/DynamicLibraries/libFLEX.dylib"); @@ -111,6 +142,7 @@ inline BOOL flexAlreadyLoaded() { if (FLXGetManager && FLXRevealSEL) { manager = FLXGetManager(); show = FLXRevealSEL(); + enableNetworkMonitoringIfPossible(); windowsWithGestures = [NSHashTable weakObjectsHashTable]; initialized = YES; @@ -133,6 +165,15 @@ inline BOOL flexAlreadyLoaded() { BOOL needsGesture = ![windowsWithGestures containsObject:self]; BOOL isFLEXWindow = [self isKindOfClass:FLXWindowClass()]; BOOL isStatusBar = [self isKindOfClass:[UIStatusBarWindow class]]; + BOOL shouldAutoShow = !didAutoShowExplorer && !isSpringBoardProcess(); + + if (shouldAutoShow && !isFLEXWindow && manager && show) { + didAutoShowExplorer = YES; + dispatch_async(dispatch_get_main_queue(), ^{ + [manager performSelector:show]; + }); + } + if (needsGesture && !isFLEXWindow && !isStatusBar) { [windowsWithGestures addObject:self]; From 09574d67a46ac6f30401bf05f9da3baf7d2ca441 Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 16 Feb 2026 00:12:16 +0100 Subject: [PATCH 2/5] Fix CI deps install for missing libtinfo5 on ubuntu-latest --- .github/workflows/build-rootless-deb.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/.github/workflows/build-rootless-deb.yml b/.github/workflows/build-rootless-deb.yml index bde6bb4..b17ca1b 100644 --- a/.github/workflows/build-rootless-deb.yml +++ b/.github/workflows/build-rootless-deb.yml @@ -15,6 +15,27 @@ jobs: with: submodules: recursive + - name: Install build dependencies + run: | + sudo apt-get update + if apt-cache show libtinfo5 >/dev/null 2>&1; then + TINFO_PACKAGE=libtinfo5 + else + TINFO_PACKAGE=libtinfo6 + fi + + sudo apt-get install -y \ + build-essential \ + fakeroot \ + "$TINFO_PACKAGE" \ + libz3-dev \ + rsync \ + curl \ + perl \ + unzip \ + git \ + libplist-utils + - name: Setup Theos uses: Randomblock1/theos-action@v1 From 8d0d424c031e4c7a20ac366873186795c9d30eac Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 16 Feb 2026 00:20:55 +0100 Subject: [PATCH 3/5] Update build workflow for rootless DEB Removed installation of build dependencies and updated Theos action. --- .github/workflows/build-rootless-deb.yml | 24 +----------------------- 1 file changed, 1 insertion(+), 23 deletions(-) diff --git a/.github/workflows/build-rootless-deb.yml b/.github/workflows/build-rootless-deb.yml index b17ca1b..2efae6c 100644 --- a/.github/workflows/build-rootless-deb.yml +++ b/.github/workflows/build-rootless-deb.yml @@ -2,7 +2,6 @@ name: Build rootless DEB on: push: - pull_request: workflow_dispatch: jobs: @@ -15,29 +14,8 @@ jobs: with: submodules: recursive - - name: Install build dependencies - run: | - sudo apt-get update - if apt-cache show libtinfo5 >/dev/null 2>&1; then - TINFO_PACKAGE=libtinfo5 - else - TINFO_PACKAGE=libtinfo6 - fi - - sudo apt-get install -y \ - build-essential \ - fakeroot \ - "$TINFO_PACKAGE" \ - libz3-dev \ - rsync \ - curl \ - perl \ - unzip \ - git \ - libplist-utils - - name: Setup Theos - uses: Randomblock1/theos-action@v1 + uses: opa334/theos-action@main - name: Build rootless package env: From 4f9188a22cbe0c89f9572b9e11c2532babd4ce9e Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 16 Feb 2026 00:26:51 +0100 Subject: [PATCH 4/5] Change build environment to macOS and update Theos action --- .github/workflows/build-rootless-deb.yml | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build-rootless-deb.yml b/.github/workflows/build-rootless-deb.yml index 2efae6c..099b8d1 100644 --- a/.github/workflows/build-rootless-deb.yml +++ b/.github/workflows/build-rootless-deb.yml @@ -6,7 +6,7 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: macos-latest steps: - name: Checkout @@ -14,14 +14,21 @@ jobs: with: submodules: recursive - - name: Setup Theos - uses: opa334/theos-action@main - + - uses: waruhachi/theos-action@v2.4.6 + with: + theos-src: 'theos/theos' + theos-branch: 'master' + sdks-src: 'theos/sdks' + sdks-branch: 'master' + libgcuniversal: true + libgcuniversal-src: 'MrGcGamer/LibGcUniversalDocumentation' + libgcuniversal-branch: 'master' + altlist: true + altlist-src: 'opa334/AltList' + altlist-branch: 'main' + - name: Build rootless package - env: - THEOS_PACKAGE_SCHEME: rootless - run: | - make clean package FINALPACKAGE=1 + run: make clean package FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless - name: Upload DEB artifacts uses: actions/upload-artifact@v4 From 75d38fcb35e3308a4df5f2a2dff69c8ab606dbe3 Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 16 Feb 2026 00:39:09 +0100 Subject: [PATCH 5/5] Update package name and version in control file --- control | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/control b/control index 0ce4eb7..d034be8 100644 --- a/control +++ b/control @@ -1,12 +1,12 @@ -Package: com.pantsthief.flexing +Package: com.github.devnoname120.flexing Name: FLEXing Pre-Depends: firmware (>= 8.0) -Version: 1.5.1 +Version: 1.5.2 Architecture: iphoneos-arm Description: Open FLEX anywhere! Maintainer: Tanner Bennett Author: Tanner Bennett Section: Tweaks -Conflicts: com.dgh0st.flexall, gg.gh0stbyte.flexivator, com.shmoopillic.flexible, applebetas.ios.tweak.devtools.flexgesture, com.creaturecoding.flexer, com.lacertosusrepo.flex4me, me.nepeta.flexxx, com.ipadkid.flexit, com.qiop1379.flexbar, com.leftyfl1p.reflex +Conflicts: com.dgh0st.flexall, gg.gh0stbyte.flexivator, com.shmoopillic.flexible, applebetas.ios.tweak.devtools.flexgesture, com.creaturecoding.flexer, com.lacertosusrepo.flex4me, me.nepeta.flexxx, com.ipadkid.flexit, com.qiop1379.flexbar, com.leftyfl1p.reflex, com.pantsthief.flexing Depiction: https://nscake.github.io/package.html?package=com.pantsthief.flexing SileoDepiction: https://nscake.github.io/depictions/com.pantsthief.flexing.sileo.json