Skip to content
This repository was archived by the owner on Nov 12, 2026. It is now read-only.

Tailscale app: no stalls, route-all-traffic controls, VPN connections - #55

Merged
techmore merged 1 commit into
mainfrom
claude/tailscale-app-vpn
Oct 29, 2026
Merged

techmore merged 1 commit into
mainfrom
claude/tailscale-app-vpn

Conversation

@techmore

Copy link
Copy Markdown
Owner

Follow-up to #54, from owner feedback ("we stalled once we connected", "route all traffic through the VPN").

Stall

  • The app wasn't blocked (no stuck child process), but every change failed silently: the operator isn't set, so tailscaled answers "Access denied" and the switch springs back. Refreshes also queued behind any slow command, and a tailscale up that waits on the network would freeze updates.
  • Every command now runs with a time limit and is stopped when it runs out: 8 s for reads, 15 s for set, 25 s for up/down, 90 s for VPN changes (a polkit prompt can wait). The window says "Tailscale isn't answering. Retrying…" instead of freezing.
  • Refreshes never stack. A network change (GNetworkMonitor) triggers a refresh, since Wi-Fi switches make tailscaled reconnect.
  • Refused changes show the one-time sudo tailscale set --operator=$USER banner (unchanged from Tailscale: native Pantheon app for the tailnet #54).

Route all traffic

  • Status card: "All internet traffic goes through " when one is in use.
  • The "Route All Traffic Through" section has the exit-node picker (None turns it off, --exit-node) and "Allow local network access" (--exit-node-allow-lan-access). With no exit node on the tailnet, it explains how to add one (sudo tailscale set --advertise-exit-node on an always-on device such as sdolbec-ser8, then approve it in the Admin Console).
  • New VPN Connections section for NetworkManager VPNs (the owner's BFS L2TP). Each has a connect switch and macOS's Send all traffic over VPN connection switch (ipv4/ipv6.never-default = no). The card says which mode is active, and a connected VPN shows Reconnect after the mode changes. Add VPN… opens Network settings, which owns the add-VPN dialog; that dialog is not changed here.

Checked: 6 unit tests (new nmcli parser test), clippy clean, conventions test. Fixture renders in light and dark, plus a render against the real tailscaled and NetworkManager (BFS read as not connected, split tunnel). Installed to ~/.local and the running app restarted by PID. I did not toggle BFS or any Tailscale setting: the owner is changing BFS, and Tailscale changes need the operator setting.

🤖 Generated with Claude Code

- Every command has a time limit and is stopped when it runs out; refreshes no
  longer stack behind a slow command; network changes trigger a refresh.
- Status card shows "All internet traffic goes through <exit node>".
- Exit node section is now "Route All Traffic Through", and explains how to add
  an exit node when the tailnet has none.
- New VPN Connections section: NetworkManager VPNs with connect and macOS-style
  "Send all traffic over VPN connection" (never-default), Reconnect after a
  mode change, Add VPN... to Network settings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@techmore
techmore merged commit 7e4b55a into main Oct 29, 2026
1 check failed
@techmore
techmore deleted the claude/tailscale-app-vpn branch October 29, 2026 13:39
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant