Skip to content

migrate to sing-box tunnel and delete tun2socks :)) - #224

Open
CluvexStudio wants to merge 9 commits into
devfrom
feat/replace-tun2socks-with-singbox
Open

migrate to sing-box tunnel and delete tun2socks :))#224
CluvexStudio wants to merge 9 commits into
devfrom
feat/replace-tun2socks-with-singbox

Conversation

@CluvexStudio

Copy link
Copy Markdown
Collaborator

Replaced tun2socks with sing-box

What changed:
--- Android: Removed manual TUN interface setup, now uses core StartTunnel/StopTunnel
--- iOS/macOS: Removed Tun2SocksKit dependency, integrated sing-box directly
--- Cleaned up unused startTun2socks/stopTun2Socks bridge methods
--- Unified tunnel flow across platforms

Related: Core PR #111 (sing-box integration)

CluvexStudio and others added 9 commits July 5, 2026 19:22
switched from tun2socks to sing-box for tunnel handling.
cleaned up manual TUN setup on android and removed Tun2SocksKit from ios/macos.
now using core's StartTunnel/StopTunnel across all platforms.
The service now builds the interface itself and passes the descriptor
to the tunnel, since a sandboxed process cannot open a tun device.
Sockets the tunnel opens are protected through the service, and the
descriptor is closed before the tunnel is stopped, so a disconnect
really ends the session instead of leaving it up until the app is
killed.
the ui process starts itself again with --tun through pkexec on linux and
runas on windows, that second process has no window and only turns the
tunnel on and off, the two talk over a loopback socket with a token from a
session file, and only one of each process can run
forceUpdate and changeLog are read safely now, and nothing is written when
the payload has no flowLine, so a partial answer from the api no longer
wipes the configs
the countdown ticks and the state dumps around it are gone, the secure
storage no longer calls itself windows on linux, and the vpn status is
printed once instead of twice
…n ui

the clone never called verifyGateway because that call sits in the ui, so
the handshake never happened and the core refused to start the tunnel, it
runs once in the tunnel process now, service mode starts on vpn on both
platforms, and a tunnel that does not come up stops the vpn and shows the
error instead of pretending to be connected
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants