A WireGuard-based client with custom backend
Find a file
avitoras 899395ddd1 Let a trusted hand steer another device's exit
Which exit a device rides is the panel's answer, and until now the app
could only ask it for the device it was running on — the servers tab.
The panel now takes the question for any peer of the caller's subnet:
POST /api/devices/{id}/exit, the same shape as rename/toggle/delete
next to it, agreed as a contract and then implemented on the server.

The ask lives where the exits themselves do: the servers tab gains a
device dropdown above its list. "This device" is the tab as it always
was; picking another controllable peer — the same set controllable()
already gates the devices screen's rename and delete rows for —
re-reads the same list on that peer's behalf: the rows mark the exit
it rides, a pick posts to its endpoint, and the "via" line that only
/api/home can say stays with the self. The dropdown hides itself
entirely without the rights to use it, and a failed pick says so
right under it, where the pick was. A pick is one ask: the view
model's guard is raised on the caller's thread, where it can stop a
second, faster tap, and the devices list refetches under the same
lock every writer of it takes.

The quick-settings tile learns to say the exit on the shades that
have no room to say it anywhere else. The ColorOS family redraws the
quick settings and drops Tile.subtitle, so the exit rides the label
there — folded by hand to the slot's own measure (a hair over eight
characters a line, two lines): words wrap at spaces, long ones
hyphenate across the break the way the OEM's own tiles do, a tail too
long for either ends in an ellipsis, and "auto" is the one word that
says itself rather than the exit it resolved to.

The peer's current exit is parsed out of /api/devices (it was always
there, labelled, for showing) and cached alongside the rest, so the
rows can mark the exit before the first fetch of their own answers.
2026-10-03 23:55:15 +03:00
app Let a trusted hand steer another device's exit 2026-10-03 23:55:15 +03:00
docs Let a trusted hand steer another device's exit 2026-10-03 23:55:15 +03:00
gradle Initial commit: ADHDium WireGuard client 2026-10-01 23:37:29 +03:00
tunnel Initial commit: ADHDium WireGuard client 2026-10-01 23:37:29 +03:00
.gitignore Initial commit: ADHDium WireGuard client 2026-10-01 23:37:29 +03:00
build.gradle.kts Initial commit: ADHDium WireGuard client 2026-10-01 23:37:29 +03:00
gradle.properties Initial commit: ADHDium WireGuard client 2026-10-01 23:37:29 +03:00
gradlew Initial commit: ADHDium WireGuard client 2026-10-01 23:37:29 +03:00
settings.gradle.kts Initial commit: ADHDium WireGuard client 2026-10-01 23:37:29 +03:00