v0.1.3
This release cleans up the client lifecycle so it can run under systemd or another supervisor without daemonizing itself.
What changed
- Handle SIGINT and SIGTERM through one application context.
- Cancel API polling, nomination waits, reconnect backoff, and tunnel supervision promptly.
- Return operational errors to the CLI instead of exiting deep inside the connection workflow.
- Stop and join tunnel workers, candidate probes, and the SOCKS5 serving goroutine during shutdown.
- Add tests for canceled polling, in-flight HTTP cancellation, and nomination shutdown.
The binary remains a foreground process; the service manager owns restart policy, logging, and boot persistence.