Releases: nledez/tun-manager
Release list
v0.7.1
Changelog
Features
Fixes
Install
tar xzf tun-manager_0.7.1_darwin_universal.tar.gz
sudo install -m 0755 tun-manager /usr/local/bin/tun-manager
tun-manager doctorThe binaries are not notarized, so macOS quarantines them on first run.
Clear it with xattr -d com.apple.quarantine ./tun-manager, or build from
source with make build.
tun-manager runs as root: the WireGuard control sockets are root-only.
The menu bar application
tun-manager-menubar_0.7.1_darwin_universal.zip is optional: a
menu bar item showing what tun-manager knows about your tunnels. Unlike
the binaries above it is signed and notarized, so it opens on a double
click with nothing to clear first.
unzip tun-manager-menubar_0.7.1_darwin_universal.zip
mv "Tun Manager.app" /Applications/It is built and attached separately, and appears here shortly after the
release itself: notarization is Apple's time, not this workflow's. It needs
macOS 26.
v0.7.0
Changelog
Features
- a99f061: feat(cli): feed-key, and a rotation that says what it costs (@nledez)
- 004c751: feat(cli): init-privileged lays out the half that belongs to root (@nledez)
- 7cc1a5e: feat(cli): show a configuration before importing it, and ask (@nledez)
- 2adb6e9: feat(cli): the modes stop being advice (@nledez)
- e78f714: feat(config)!: what root runs comes from a file only root can write (@nledez)
- cfef68e: feat(feed): the publisher asks the kernel who is connecting (@nledez)
- a94cdaa: feat(feed): the publisher can be made to prove which one it is (@nledez)
- f74fa8b: feat(macos): a panel for a key that changed, and one way out of it (@nledez)
- dfbb7e4: feat(macos): a way into the table, a window that closes, and the key in About (@nledez)
- 4ea3740: feat(macos): ask the kernel who is answering, not only what it signs (@nledez)
- 7aed4b5: feat(macos): double-clicking a row opens that tunnel (@nledez)
- fdeef7d: feat(macos): the application checks the proof, and remembers the key (@nledez)
- c5932b6: feat(wg): check the binary root is about to run, in the code that runs it (@nledez)
- abbaa35: feat(wg): let an installation that root owns be held to it (@nledez)
- 9e04cea: feat: the button that posts a notification lives where it can say what happened (@nledez)
Fixes
- ff24b5f: fix(cli): the archive of every private key lands where root says (@nledez)
- 821a6cc: fix(feed): bound what one client can cost the publisher (@nledez)
- 05d280b: fix(feed): stop refusing /var/run, and say it where somebody reads it (@nledez)
- dac1d9b: fix(feed): the floor on signatures belongs to the client, not the publisher (@nledez)
- 4a08be1: fix(feed): the publisher unlinks a stale socket, and nothing else (@nledez)
- b0dfac8: fix(feed): the socket is 0600 from the moment it exists (@nledez)
- d0ecad3: fix(macos): the real socket is not root's, and that is by design (@nledez)
- f7a0ba8: fix(macos): what an abandoned connection says is not about the next one (@nledez)
- 7c93c43: fix(privdrop): root stops writing wherever it was pointed (@nledez)
- 6d5f347: fix(profile): a refresh interval below a second is raised, and said (@nledez)
- 11933c5: fix(profile): reading the user's configuration has to end, and say nothing (@nledez)
- 6501df4: fix(wgconf): what a tunnel may be called is a fact about tunnels, not about import (@nledez)
- 5932062: fix: a hard link is not a symbolic link, and O_NOFOLLOW knows nothing about it (@nledez)
- 780e68c: fix: a terminal runs what it is handed, and a menu draws it (@nledez)
- daa1303: fix: the feed never got the key it was supposed to publish under (@nledez)
Other
- 9016f62: ci: a linter older than the toolchain cannot read the standard library (@nledez)
- 8afbb20: ci: the release waits for the application it ships alongside (@nledez)
- 0fdc0a6: refactor(notify): one absolute path, and no PATH at all (@nledez)
- b9321e5: refactor: tun-manager posts no notifications, and starts no process for one (@nledez)
Install
tar xzf tun-manager_0.7.0_darwin_universal.tar.gz
sudo install -m 0755 tun-manager /usr/local/bin/tun-manager
tun-manager doctorThe binaries are not notarized, so macOS quarantines them on first run.
Clear it with xattr -d com.apple.quarantine ./tun-manager, or build from
source with make build.
tun-manager runs as root: the WireGuard control sockets are root-only.
v0.6.0
Changelog
Features
- 4df5138: feat(cli): check the modes and owners of everything holding a key (@nledez)
- 3b12e10: feat(demo): a stand-in for a machine with tunnels on it (@nledez)
- b88b139: feat(macos): --socket, and the demo written down (@nledez)
- c2a89fc: feat(macos): the overview asks for a round covering every tunnel (@nledez)
- a8d0609: feat(wg): read the UAPI sockets of a directory this program chooses (@nledez)
- e86a83b: feat: flags that point the program somewhere other than this machine (@nledez)
Fixes
Install
tar xzf tun-manager_0.6.0_darwin_universal.tar.gz
sudo install -m 0755 tun-manager /usr/local/bin/tun-manager
tun-manager doctorThe binaries are not notarized, so macOS quarantines them on first run.
Clear it with xattr -d com.apple.quarantine ./tun-manager, or build from
source with make build.
tun-manager runs as root: the WireGuard control sockets are root-only.
v0.5.0
Changelog
Features
- 7cd962b: feat(feed): let a client ask for a ping, and publish the result (@nledez)
- cfb7772: feat(macos): a development build that cannot disturb the installed one (@nledez)
- dd0db7d: feat(macos): open the window wide enough to read the table (@nledez)
- 2f6b4a0: feat(macos): ping on "p", and an echo rather than a stopwatch (@nledez)
- 202c644: feat(macos): show handshake, traffic, ping and endpoint for every tunnel (@nledez)
Fixes
Install
tar xzf tun-manager_0.5.0_darwin_universal.tar.gz
sudo install -m 0755 tun-manager /usr/local/bin/tun-manager
tun-manager doctorThe binaries are not notarized, so macOS quarantines them on first run.
Clear it with xattr -d com.apple.quarantine ./tun-manager, or build from
source with make build.
tun-manager runs as root: the WireGuard control sockets are root-only.
v0.4.0
Changelog
Features
- a94c93f: feat(macos): a menu bar item that shows the tunnels (@nledez)
- bdc6739: feat(macos): a window for the tunnels, with live traffic (@nledez)
- 8519675: feat(macos): decide what the menu says (@nledez)
- 00b6c7c: feat(macos): decide when to reconnect, and why (@nledez)
- 7588434: feat(macos): decode the status feed (@nledez)
- 6809b23: feat(macos): draw the small icon sizes from simplified artwork (@nledez)
- 24f2cf0: feat(macos): hold a watch across the link going away (@nledez)
- 4dfb8c3: feat(macos): needed first, and an About panel instead of a status line (@nledez)
- ef577b0: feat(macos): notarise, once there is a Developer ID to do it with (@nledez)
- 06a42ad: feat(macos): notify when a tunnel changes health (@nledez)
- fc74a99: feat(macos): read the feed's socket (@nledez)
- 6ccbf48: feat(macos): run the link (@nledez)
- ce886ba: feat(macos): watch a tunnel, and turn its counters into rates (@nledez)
- 0b52d9e: feat(profile): refuse a configuration key this program does not know (@nledez)
- 3438cc6: feat: make install put both halves where they belong (@nledez)
- d2b49d8: feat: new artwork, split into a banner and an icon (@nledez)
Fixes
- 95bf37a: fix(macos): judge the menu bar icon on the needed group (@nledez)
- 8c643a5: fix(macos): make the tunnel details readable (@nledez)
- 42edfd2: fix(macos): show the window in front, in the Dock, and keep the history (@nledez)
- 4087a1c: fix(macos): three bugs the flaky suite was hiding (@nledez)
- b1f22f2: fix(profile): a key left out means its default, including for booleans (@nledez)
Install
tar xzf tun-manager_0.4.0_darwin_universal.tar.gz
sudo install -m 0755 tun-manager /usr/local/bin/tun-manager
tun-manager doctorThe binaries are not notarized, so macOS quarantines them on first run.
Clear it with xattr -d com.apple.quarantine ./tun-manager, or build from
source with make build.
tun-manager runs as root: the WireGuard control sockets are root-only.
v0.3.0
Changelog
Features
- 5c5dfcb: feat(feed): bind the status socket and hand it to the real user (@nledez)
- 3ceb2a3: feat(feed): declare the messages that travel on the status socket (@nledez)
- c717c88: feat(feed): greet clients, fan views out, say goodbye (@nledez)
- b388636: feat(feed): let a client ask for a fresh view, at most every 2s (@nledez)
- 0ce4539: feat(feed): sample a tunnel only while somebody is watching it (@nledez)
- fb3df0d: feat(tui): publish every view to the feed, and honour a refresh (@nledez)
- 47114e2: feat: add
backupto archive the configuration and every tunnel (@nledez) - 0db61d0: feat: add
importto take a .conf into the managed set (@nledez) - fc94880: feat: switch the status feed on, diagnose it and document it (@nledez)
Fixes
- c70a3c6: fix(feed): close a stalled writer, reject a client mid-shutdown, cancel the ctx watcher on every return (@nledez)
- 4b3bb3e: fix(feed): close the six gaps from the whole-branch review (@nledez)
- d1d7663: fix(feed): protect s.ln with mutex, skip test when root, remove dead nolint directives (@nledez)
- a622627: fix(feed): stop t.TempDir() from overflowing the socket path limit (@nledez)
- 32ecad5: fix(tui): make the feed-wiring test assert the wiring (@nledez)
Other
- 7559b2b: refactor: give status --json and the coming feed one JSON vocabulary (@nledez)
- 9b7b575: test(feed): add tests for helper methods to meet coverage floor (@nledez)
- b6d38c3: test(feed): cover filesystem error paths in Listen and Close (@nledez)
- a3d3062: test(feed): fix TestDroppingOneClientLeavesTheOthersServed flakiness (@nledez)
- 92b7831: test(feed): pin the policy that a slow client is dropped (@nledez)
- c92e3b8: test(feed): replace sleep with proper synchronization in TestDroppingOneClientLeavesTheOthersServed (@nledez)
- 6e2ea89: test(feed): wait for backpressure connections to register before publishing (@nledez)
Install
tar xzf tun-manager_0.3.0_darwin_universal.tar.gz
sudo install -m 0755 tun-manager /usr/local/bin/tun-manager
tun-manager doctorThe binaries are not notarized, so macOS quarantines them on first run.
Clear it with xattr -d com.apple.quarantine ./tun-manager, or build from
source with make build.
tun-manager runs as root: the WireGuard control sockets are root-only.
v0.2.0
Changelog
Features
- 5fa97b4: feat(notify): attach the logo beside the notification text (@nledez)
- a6a4ab9: feat(notify): show the project icon on notifications (@nledez)
- 29580ae: feat(tui): graph the traffic of a tunnel with
g(@nledez) - 1ca9400: feat(tui): let one tunnel be acted on while another runs (@nledez)
- 2f24727: feat(tui): mark the tunnel a batch is working on (@nledez)
- e38daee: feat: add a notify subcommand, and a probe for the icon (@nledez)
Fixes
Other
Install
tar xzf tun-manager_0.2.0_darwin_universal.tar.gz
sudo install -m 0755 tun-manager /usr/local/bin/tun-manager
tun-manager doctorThe binaries are not notarized, so macOS quarantines them on first run.
Clear it with xattr -d com.apple.quarantine ./tun-manager, or build from
source with make build.
tun-manager runs as root: the WireGuard control sockets are root-only.
v0.1.1
Changelog
Fixes
- af91b8a: fix(tui): cut what does not fit instead of folding it (@nledez)
- 04ac6d4: fix(tui): report each tunnel as it finishes, not the batch at the end (@nledez)
Other
- 2522253: ci: run the release pipeline on every push (@nledez)
- acd9089: test(tui): pin the interface with golden frames (@nledez)
Install
tar xzf tun-manager_0.1.1_darwin_universal.tar.gz
sudo install -m 0755 tun-manager /usr/local/bin/tun-manager
tun-manager doctorThe binaries are not notarized, so macOS quarantines them on first run.
Clear it with xattr -d com.apple.quarantine ./tun-manager, or build from
source with make build.
tun-manager runs as root: the WireGuard control sockets are root-only.
v0.1.0
Changelog
Features
- 2ad4b56: feat: WireGuard tunnel manager TUI and CLI (Nicolas Ledez 247138+nledez@users.noreply.github.com)
Fixes
- b08f575: fix(test): stop the doctor checks depending on the host (Nicolas Ledez 247138+nledez@users.noreply.github.com)
Other
- 843afe5: build: add make release (Nicolas Ledez 247138+nledez@users.noreply.github.com)
- b0bfb16: build: do not print a GitHub URL for a remote that is not GitHub (Nicolas Ledez 247138+nledez@users.noreply.github.com)
- 12c445b: build: ship the third-party licence notices with the binaries (Nicolas Ledez 247138+nledez@users.noreply.github.com)
- 2c63bc4: build: tell ahead from behind when refusing a release (Nicolas Ledez 247138+nledez@users.noreply.github.com)
- e37a1d9: ci: pin every action by SHA and gate the release on the whole suite (Nicolas Ledez 247138+nledez@users.noreply.github.com)
Install
tar xzf tun-manager_0.1.0_darwin_universal.tar.gz
sudo install -m 0755 tun-manager /usr/local/bin/tun-manager
tun-manager doctorThe binaries are not notarized, so macOS quarantines them on first run.
Clear it with xattr -d com.apple.quarantine ./tun-manager, or build from
source with make build.
tun-manager runs as root: the WireGuard control sockets are root-only.