Add split tunneling, the panel's geoip-ru mode and a reconnect offer #1

Closed
xraydeath wants to merge 0 commits from xraydeath/ADHDium:main into main
First-time contributor

Which apps ride the tunnel and which stay out of it, decided on the
connection settings page and woven into the profile so it travels with
the config. "Only these" and "all but these" are two readings of one
list; "all of them" is the absence of a list, so the picks are parked in
the settings rather than lost when a direction is chosen.

Which addresses leave from the server rather than from the exit is the
panel's answer and not the phone's: geoip:ru goes out through a freedom
outbound on the server, so only the server can produce that address.
The app's part is the switch — POST /api/routing over the panel client
it already had, no token, identity by tunnel source address.

Either change under a live tunnel leaves it carrying routing the profile
no longer says, and VpnService takes its app set once at establish, so
the offer to bring it back is a bar over the navigation bar: Home's
connect button whole — same measure, same wavy bar, same haptics — and
it leaves when the bar has finished filling, not when the tunnel reports
up, which it still does a good half second earlier.

Devices gain a delete button where the panel's own rule allows it, and
this app stays on the tunnel's side of its own split: a non-empty
include list put every socket of this process outside the VPN, and the
panel lives inside the tunnel. That took the exit list, the routing
switch and the device list with it, and had the loss probe reporting a
flat hundred percent because it was measuring whether the panel is
reachable without the tunnel.

Which apps ride the tunnel and which stay out of it, decided on the connection settings page and woven into the profile so it travels with the config. "Only these" and "all but these" are two readings of one list; "all of them" is the absence of a list, so the picks are parked in the settings rather than lost when a direction is chosen. Which addresses leave from the server rather than from the exit is the panel's answer and not the phone's: geoip:ru goes out through a freedom outbound on the server, so only the server can produce that address. The app's part is the switch — POST /api/routing over the panel client it already had, no token, identity by tunnel source address. Either change under a live tunnel leaves it carrying routing the profile no longer says, and VpnService takes its app set once at establish, so the offer to bring it back is a bar over the navigation bar: Home's connect button whole — same measure, same wavy bar, same haptics — and it leaves when the bar has finished filling, not when the tunnel reports up, which it still does a good half second earlier. Devices gain a delete button where the panel's own rule allows it, and this app stays on the tunnel's side of its own split: a non-empty include list put every socket of this process outside the VPN, and the panel lives inside the tunnel. That took the exit list, the routing switch and the device list with it, and had the loss probe reporting a flat hundred percent because it was measuring whether the panel is reachable without the tunnel.
Which apps ride the tunnel and which stay out of it, decided on the
connection settings page and woven into the profile so it travels with
the config. "Only these" and "all but these" are two readings of one
list; "all of them" is the absence of a list, so the picks are parked in
the settings rather than lost when a direction is chosen.

Which addresses leave from the server rather than from the exit is the
panel's answer and not the phone's: geoip:ru goes out through a freedom
outbound on the server, so only the server can produce that address.
The app's part is the switch — POST /api/routing over the panel client
it already had, no token, identity by tunnel source address.

Either change under a live tunnel leaves it carrying routing the profile
no longer says, and VpnService takes its app set once at establish, so
the offer to bring it back is a bar over the navigation bar: Home's
connect button whole — same measure, same wavy bar, same haptics — and
it leaves when the bar has finished filling, not when the tunnel reports
up, which it still does a good half second earlier.

Devices gain a delete button where the panel's own rule allows it, and
this app stays on the tunnel's side of its own split: a non-empty
include list put every socket of this process outside the VPN, and the
panel lives inside the tunnel. That took the exit list, the routing
switch and the device list with it, and had the loss probe reporting a
flat hundred percent because it was measuring whether the panel is
reachable without the tunnel.
Author
First-time contributor

я хуесос

я хуесос
The reconnect offer said its bar had finished before the tunnel was up —
the wave reaches full while the handshake is still running, so the bar
left and the run settled in the middle of connecting, and the success it
had come to report was never said: the collector gates on the run it had
just ended. The wave now lands only over a tunnel that is up, and
leaving the page the bar lives on ends a run without touching an offer
still waiting — going to another page is not an answer to it.

The cache writes crashed instead of failing: two writers of one cache
raced for a single temp file, and the loser's rename took the app down
with it. Every write rolls its own temp name now, a refused rename is a
warning that leaves the previous snapshot standing, and the three
writers of the servers cache — a refresh, a selection, the exit-IP
write-back — take the same lock. The selection's double-tap guard moved
to the caller's thread, where the flag it raises can stop the second
tap.

The picker's bar coverage was frozen at "loading" from its first
composition, and the wallpaper's blur was a live GPU pass over the whole
screen on every animated frame. The one is read off the list state
alone; the other arrives pre-blurred on a worker thread and crossfades
in at the depth the setting asks for, and the rainbow accent rebuilds
the scheme five times a second instead of thirty.

wireguard-go gives up on a dead session after ninety seconds and never
tries again unless traffic wants out — and nothing ever does, every app
behind the tunnel sitting on sockets too dead to send. The tunnel's
newest handshake is asked for directly now, and a session older than its
own lifetime raises a card on Home offering the one thing that fixes it.

0.2.0.
avitoras closed this pull request 2026-10-03 22:49:28 +03:00

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
miho/ADHDium!1
No description provided.