When you enable JIT for an app and switch to it (e.g. a game), StikDebug
gets backgrounded. If iOS suspends it, the debug connection it holds — and
the marco/polo heartbeat that keeps that connection trusted — goes idle, the
device tears it down, and the app loses its session after a while. The app
also assumed Wi-Fi even though the tunnel rides LocalDevVPN and works on
cellular.
Session survival (backgrounding):
- DebugKeepAliveLease now forces the silent-audio and background-location
keep-alive on for the whole debug session, regardless of the user's
keep-alive toggles, so a session survives being switched out even if those
toggles are off.
- Stop the background-task expiration handler from tearing the whole
keep-alive down. It used to call invalidate() (killing audio/location) the
moment the ~30s assertion elapsed; now it just renews the assertion while
the silent-audio keep-alive continues to sustain background execution, so a
long backgrounded session keeps running instead of dropping.
- Play an inaudible non-zero signal instead of digital silence so iOS does
not treat the audio session as idle and reclaim it (suspending the app).
Cellular support:
- Add NetworkPathMonitor (NWPathMonitor) so the app observes the real path
(Wi-Fi, cellular, or VPN) instead of assuming Wi-Fi.
- Retry the tunnel connect with backoff so transient cellular failures
recover instead of erroring, skipping permanent errors (bad/missing pairing
file, invalid target IP).
- Reconnect the tunnel on network-path changes (Wi-Fi<->cellular handoff).
- Remove the false "Wi-Fi required" wording from the connection alerts and
the README.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qznh32XffG6vwFLMcwm1Mq
* Change default UPLOAD_IPA value to 'false'
* Part 1 of the great debloat
* Remove Mini Tools, adopt native alerts in StikJITApp, and update HomeView UI
* Refactor views to use native SwiftUI alerts instead of CustomErrorView
* Update ProfileView to use minimal List UI style with native alerts
* Fix up homeview
* Squash: Redesign HomeView, remove Feature Flags, enable all tabs, refactor alerts, and updates
- Redesign HomeView to a simpler style with 'Enable JIT' action.
- Remove 'Help & Info' and 'Quick Launch' from Home.
- Fix DDI false positive by starting heartbeat on HomeView appear.
- Restore robust DDI checks and update app name to 'StikDebug'.
- Remove FeatureFlags and Beta tags; enable 'profiles', 'processes', 'location' tabs by default.
- Remove 'Devices' tab; add 'Target Device IP' field in Settings.
- Hardcode 'Settings' tab to 4th position.
- Refactor 'SettingsView' tab customization to be reorder-only.
- Remove 'Appearance' theme section from Settings.
- Refactor custom error cards to use native SwiftUI/UIKit alerts across the app (HomeView, ConsoleLogsView, ProfileView, etc).
- Restore JS callback support and script execution logic in HomeView.
- Add necessary Color extensions.
- Update project version to 3.0.0.
* Clean up: Remove In-App Purchases, update checker, and unused IPA installer code
* delete more bloat
* fix build issue
* Remove widget to save on App IDs
* Attempt heartbeat restart when Enable JIT button is pressed
* Get rid of PIP
* Update Tab Naming
* remove more bloat
* final changes for today
* Remove unused packages
* UX Improvements
* revert bundle id
* Update README.md
* remove old idevice
* add updated idevice
* Fix ddi false positive errors and add templates for GitHub stuff
* Remove more unused stuff.
* Fix links and update README content
* Update compatibility table in README.md
* Improve performance of console logs
* Remove old code
* Change default UPLOAD_IPA value to 'true'
* remove the welcome sheet
* import support for .mobiledevicepair
* Add back LC JIT stuff
* Fix heartbeat issues with LC JIT
* update the build yml for nightly stuff
* Update README.md
* Update README.md
* Update GitHub Actions workflow for IPA build
* Update GitHub Actions workflow for nightly builds
* Add URL scheme to kill tasks stikjit://kill-process?pid=1234
* fix build issues
* Added App Intents
* Unify the error handling style across the app