Skip to content

Releases: nledez/tun-manager

v0.7.1

Choose a tag to compare

@github-actions github-actions released this 21 Aug 18:02

Changelog

Features

  • 707de74: feat(macos): publish the application, signed and notarised, on the tag (@nledez)

Fixes

  • 6073165: fix(macos): a signed-out gh is not a release CI has yet to cut (@nledez)

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 doctor

The 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

Choose a tag to compare

@github-actions github-actions released this 21 Aug 10:50

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 doctor

The 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

Choose a tag to compare

@github-actions github-actions released this 19 Aug 12:50

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 doctor

The 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

Choose a tag to compare

@github-actions github-actions released this 18 Aug 20:21

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

  • 802ceb3: fix(macos): show counters as fresh as the chart beside them (@nledez)

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 doctor

The 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

Choose a tag to compare

@github-actions github-actions released this 18 Aug 14:31

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 doctor

The 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

Choose a tag to compare

@github-actions github-actions released this 18 Aug 09:43

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 backup to archive the configuration and every tunnel (@nledez)
  • 0db61d0: feat: add import to 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 doctor

The 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

Choose a tag to compare

@github-actions github-actions released this 17 Aug 10:01

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

  • 84dd8ea: fix(tui): move the activity indicator beside the context (@nledez)

Other

  • 6208d33: refactor: run a batch behind an event stream, all tunnels at once (@nledez)

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 doctor

The 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

Choose a tag to compare

@github-actions github-actions released this 16 Aug 21:37

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

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 doctor

The 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

Choose a tag to compare

@github-actions github-actions released this 16 Aug 18:58

Changelog

Features

Fixes

Other

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 doctor

The 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.