All notable changes to this project are documented here.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning. Each release also has full notes on the Releases page.
0.2.3 - 2026-06-16
- Agent skill (
skills/net-auto-switch) — a Claude Code / cross-agent skill teaching an AI agent to operate and diagnose the tool (current node, operator behind a host, live connections, service status, update).install.shoffers to install it; or runnpx skills add OctopusGarage/net-auto-switch -y -g.
connections -w(watch) is now responsive:qor Ctrl-C quits immediately (previously Ctrl-C could hang while--whoisworker threads were mid-lookup), the redraw is flicker-free (in-place repaint instead of a full-screen clear), and the cursor is hidden during watch.connections --whoiscaches only successful lookups, so a transient DoH/whois failure retries on the next tick instead of being pinned as a permanent blank for the session.connections -wexits cleanly on stdin EOF instead of busy-looping.- The whois profile-scan test now passes on the windows-latest CI matrix (Windows tmp paths were breaking TOML parsing).
- Internal: the concurrent whois fan-out is shared between the profile scan and connections enrichment.
0.2.2 - 2026-06-15
net-auto-switch connections— list what the machine is contacting right now and through which outbound node, read from Clash's/connectionsAPI (host → node → rule). Rows are folded byhost + nodewith a connection count (--rawlists each);--whoislabels each target's IP / operator / country, resolving the domain itself when Clash exposes no IP (proxied connections);-w/--watchrefreshes live. Only sees traffic that goes through Clash (proxied / TUN), not direct/bypassed traffic.- zsh tab-completion for every subcommand and flag, bundled in the release tarball and registered idempotently by
install.sh— re-installing never duplicates the~/.zshrcblock, andupdaterefreshes the completion in place.
- The
whoisClash-profile scan now runs lookups concurrently (≤8) and prints per-server[n/N]progress to stderr, so a large profile no longer looks frozen for minutes. The stdout table is unchanged.
0.2.1 - 2026-06-15
net-auto-switch whoiswith no targets now reads the current Clash Verge profile and resolves each proxyserver, de-duplicating repeated hosts before lookup. Output groups rows under the current profile uid/name and includes node name, server, resolved IP, operator, and country.
- Split whois lookups into reusable result objects while preserving the existing explicit-target output path.
0.2.0 - 2026-06-15
- Cross-platform core — the Clash selection/switching loop only talks to the Clash Verge API over HTTP, so it runs on Linux/Windows too. macOS-only features degrade gracefully: WiFi switching and profile fallback are skipped off macOS; notifications use
notify-sendon Linux, no-op on Windows. (ADR-0015) service install / uninstall / status— one command, platform-native: launchd (macOS), systemd--user(Linux,Restart=always+ linger), Task Scheduler running--onceeverymain_intervalminutes (Windows). (ADR-0016)- CI matrix across ubuntu + macOS + windows.
- macOS behavior is unchanged. On Linux/Windows: copy
config.example.toml→config.toml, fill in your Clash API settings, thennet-auto-switch service install.
0.1.0 - 2026-06-15
Initial release — a layered network self-healing daemon for macOS that auto-switches WiFi and Clash Verge proxy nodes/profiles to keep you online with a good proxy.
- Layered auto-switch — WiFi (physical) then Clash (proxy) every cycle; config-driven region groups, latency-based selection with priority fallback, profile fallback when all nodes are dead.
- Guided
initwizard — auto-detects Clash Verge, infers regions, gates on a health check. - macOS switch notifications (with exit operator) and a standalone
whoislookup (DoH by default). curl | bashinstaller pulling a curated lean release asset; self-updatingupdate; launchd service.