Repository navigation
Releases: aklkbqx/wol
Release list
v0.4.18
Changes
- Improve normal-text contrast on dark TUI panels while preserving the theme and existing ASCII/NO_COLOR controls (#19).
- Add
WOL_TUI_REDACT=1to hide machine/network identifiers, form values and diagnostic details in Wake Desk. Actual wake/presence inputs, inventory, exports and logs are unchanged. Power/action indicators remain visible; turn redaction off to inspect diagnostic details (#19).
Validation
Built from commit 9e44d7c81bb9d2a59bb2a186dad17d7d31ad2eb9 with Go 1.27.2 on macOS. The clean release checkout passed make verify (race tests, vet, staticcheck, native build and whitespace), the Go 1.26.9 minimum passed the race suite, and govulncheck v1.9.0 reported no vulnerabilities in the source scan.
All five archives passed member/path/type and declared architecture inspection. Complete archive checksums match SHA256SUMS; its detached Ed25519 signature verified before publication. Trust-key fingerprint: ac3979581b0ada7f53a4309a2cfefa983283f62cf914f87b5aa0e8619607f1be (release signing).
| Platform | Runtime validation |
|---|---|
| macOS arm64 | Version, ad-hoc signature, empty-inventory TUI at 120×32 and 40×28; Unicode, ASCII, NO_COLOR, reduced motion and redaction; q/Ctrl+C exit 0 (20 cases) |
| macOS amd64 | Same 20 TUI cases and signature check under Rosetta 2 on Apple silicon; native Intel Mac unverified (#13) |
| Linux amd64 | Executable checksum on host, version and same 20 TUI cases with temporary empty inventories |
| Linux arm64 | Archive/member/architecture/checksum verified; runtime unverified (#13) |
| Windows amd64 | Archive/member/architecture/checksum verified; runtime and Windows Terminal GUI unverified |
The first Rosetta smoke attempt timed out while the build host was under memory pressure; the subsequent complete 20-case run passed. No physical wake, shutdown, relay, native remote or network-permission acceptance was performed for this release. Existing hardware/user acceptance gates remain open in #6 and #13. macOS executables are ad-hoc signed, not notarized.
Download the archive for your platform and verify SHA256SUMS. To require signature verification for self-update:
WOL_UPDATE_PUBLIC_KEY=/path/to/wol-release-public.pem wol updateThe trusted public key is in docs/wol-release-public.pem. On macOS, build from source with make install BINDIR="$HOME/.local/bin" so the Local Network usage description is embedded.
v0.4.17 — shutdown --cancel fix
What's Changed
- Fix:
wol shutdown --cancelcould shut the machine down. When a flag came
before the machine name, every flag after the name was ignored. So
wol shutdown --db FILE pc --canceldropped--canceland sent an immediate
shutdown;--sudo,--forceand--delayafter the name were dropped the
same way. Flags now work on either side of the name, and two machine names
are a usage error. Commands written aswol shutdown pc --cancel(name
first) were not affected. All earlier releases have this bug; please update.
(#16) - Tests cover
wol export,wol shutdown statusandwol shutdown cancel.
(#17)
Platform validation
The archives were built from commit 2de3e05 on 2026-10-13 with Go 1.27.2 and
a clean working tree. make verify (race tests, vet, staticcheck, native build,
whitespace check) passed, the minimum Go 1.26.9 passed the race suite, vet
passed for all five targets, and govulncheck reported no vulnerabilities in a
source scan or in binary scans of all five executables. SHA256SUMS.sig is
signed with the release key (fingerprint
ac3979581b0ada7f53a4309a2cfefa983283f62cf914f87b5aa0e8619607f1be, see
release signing)
and was verified before publication.
| Platform | Validation | Result |
|---|---|---|
| macOS arm64 | Archive checksum, version, doctor Packaging OK, ad-hoc signature; TUI in Unicode, ASCII, NO_COLOR and reduced-motion with q/Ctrl+C exit 0; three-site batch run with an unavailable relay; the #16 cancel check below |
PASS |
| macOS amd64 | The same checks under Rosetta 2 on Apple silicon (translated, not a native Intel Mac, #13) | PASS (Rosetta) |
| Linux amd64 | Debian 13: archive checksum on the host, version, doctor, wol wake MAC --destination … --port … to loopback, TUI q/Ctrl+C exit 0 through OpenSSH PTY in all four modes; three-site batch run |
PASS |
| Windows amd64 | The test machine was powered off, so this archive was not run | UNVERIFIED |
| Linux arm64 | Cross-build, archive contents/checksum checked; no arm64 Linux runtime test (#13) | UNVERIFIED runtime |
#16 check. With a temporary inventory whose machine pointed at a closed
local SSH port, wol shutdown --db FILE pc --cancel recorded a
shutdown_now attempt with the v0.4.16 binary and a cancel attempt with the
v0.4.17 binary. No real machine was contacted.
macOS executables are ad-hoc signed, not notarized. Windows Terminal GUI
behavior was not checked.
After publication, all seven assets were downloaded back and matched the
reviewed files, and the downloaded signature verified. Live v0.4.16-to-v0.4.17
self-updates passed on macOS arm64, macOS amd64 (Rosetta) and Linux amd64, both
plain and with WOL_UPDATE_PUBLIC_KEY set; each installed binary matches its
release archive.
This is a maintenance release. The public-beta gate remains open in #6.
Installation
Download the archive for your platform below, check it against SHA256SUMS,
extract it, and put wol on your PATH. To check the signature as well:
go run ./cmd/wol-release-sign verify --key docs/wol-release-public.pem \
--manifest SHA256SUMS --signature SHA256SUMS.sigExisting installs can run wol update, or
WOL_UPDATE_PUBLIC_KEY=/path/to/wol-release-public.pem wol update to require
the signature.
On macOS, do not use go install: it skips the embedded Local Network usage
description, so status checks can report machines as unknown. To build from
source, use make install BINDIR="$HOME/.local/bin".
v0.4.16 — signed releases and CLI flag order
What's Changed
- Signed releases. This is the first release with
SHA256SUMS.sig, an
Ed25519 signature overSHA256SUMS. The public key is in
docs/wol-release-public.pem,
fingerprint
ac3979581b0ada7f53a4309a2cfefa983283f62cf914f87b5aa0e8619607f1be.
Runwol updatewithWOL_UPDATE_PUBLIC_KEY=/path/to/wol-release-public.pem
to require the signature; see
release signing
for the trust and rotation plan. (#14) wol batch,wol status,wol importandwol remoteaccept flags after
machine names and files, for examplewol batch wake NAME --json --yes. (#15)- The browser-remote proxy sends Guacamole only its own
X-Forwarded-*
headers; values supplied by the browser are dropped. (#9) make verifyruns staticcheck again, and the code it reported is fixed. (#9)- New first-user test:
a 30-minute checklist for people trying WOL for the first time. (#6)
Platform validation
The archives were built from commit 144bcf5 on 2026-10-13 with Go 1.27.2 and
a clean working tree. make verify (race tests, vet, staticcheck, native build,
whitespace check) passed, the minimum Go 1.26.9 passed the race suite, vet
passed for all five targets, and govulncheck reported no vulnerabilities in a
source scan or in binary scans of all five executables. The manifest signature
was verified against the committed public key before publication.
| Platform | Validation | Result |
|---|---|---|
| macOS arm64 | Archive checksum, version, doctor Packaging OK, ad-hoc signature; TUI renders and q/Ctrl+C exit 0 in a local PTY with Unicode, ASCII, NO_COLOR and reduced-motion settings (ASCII output has no box drawing, NO_COLOR output no colour codes); three-site batch run below |
PASS |
| Linux amd64 | Debian 13: archive checksum on the host, version, doctor, wol wake MAC --destination … --port … to loopback, TUI q/Ctrl+C exit 0 through OpenSSH PTY in all four modes; three-site batch run below |
PASS |
| Windows amd64 | The test machine was powered off and did not answer a wake packet, so this archive was not run | UNVERIFIED |
| macOS amd64 | Under Rosetta 2 on Apple silicon (translated, not a native Intel Mac): archive checksum, version, doctor Packaging OK, ad-hoc signature, TUI in all four modes with q/Ctrl+C exit 0, the three-site batch run, and plain and signed self-updates from v0.4.15 matching the archive. Native Intel runtime is still untested (#13) |
PASS (Rosetta) |
| Linux arm64 | Cross-build, archive contents/checksum checked; no arm64 Linux runtime test (#13) | UNVERIFIED runtime |
Three sites, one unavailable relay (macOS arm64 and Linux amd64 release
binaries). A temporary inventory of 100 synthetic machines: two direct sites
of 40 and a site of 20 behind a relay at a TEST-NET address that never answers.
Wake packets went to loopback only. On both platforms wol batch check --all
returned one result per machine with mixed outcomes (exit 3) in 7.5 s;
wol batch wake --all sent all 80 direct wakes within 2.9 s while the 20 relay
wakes failed with an SSH connect error by 10.5 s, so the dead relay did not
delay the other sites; SIGINT and SIGTERM during a relay batch exited 130 at
once, cancelled queued machines and left no ssh processes.
Database upgrade and rollback (macOS arm64). Every pair of 0.4.12, 0.4.13,
0.4.14, 0.4.15 and 0.4.16 (25 pairs) created, read and wrote the same SQLite
database in both directions with synthetic data, and a stopped-writer file
backup restored in every version.
No real machine was addressed by these tests. The Windows wake attempt above
used the Linux release binary; the target was off rather than asleep. Windows
Terminal GUI behavior was not checked. macOS executables are ad-hoc signed, not
notarized.
After publication, all seven release assets were downloaded back and matched
the reviewed files, and the downloaded signature verified. Live
v0.4.15-to-v0.4.16 self-updates passed on macOS arm64 and Linux amd64, both
plain and with WOL_UPDATE_PUBLIC_KEY set to the release key; each installed
binary matches the release archive. With a different public key the update was
refused (invalid manifest signature) and the installed v0.4.15 was left in
place.
This is a maintenance release. The public-beta gate remains open in #6.
Installation
Download the archive for your platform below, check it against SHA256SUMS,
extract it, and put wol on your PATH. To check the signature as well:
go run ./cmd/wol-release-sign verify --key docs/wol-release-public.pem \
--manifest SHA256SUMS --signature SHA256SUMS.sigExisting installs can run:
wol updateOn macOS, do not use go install: it skips the embedded Local Network usage
description, so status checks can report machines as unknown. To build from
source, use make install BINDIR="$HOME/.local/bin".
WOL v0.4.15
What's Changed
wol wakeaccepts flags after the MAC address, so
wol wake AA:BB:CC:DD:EE:FF --destination 192.0.2.255works. Arguments after
--stay positional. (#11)wol wake --verifyreturns within its timeout instead of up to a second
later. (#12)- On Windows, the
wol.exe.oldthat a self-update leaves behind is removed the
next time WOL starts. (#10)
Platform validation
The archives were built from commit b4ce844 on 2026-10-12 with Go 1.27.2 and
a clean working tree. make verify (race tests, vet, native build, whitespace
check) passed, the minimum Go 1.26.9 passed the race suite, vet passed for all
five targets, and govulncheck reported no vulnerabilities in a source scan or
in binary scans of all five executables.
| Platform | Validation | Result |
|---|---|---|
| macOS arm64 | Archive checksum, version, doctor Packaging OK; TUI renders and q/Ctrl+C exit 0 in a PTY with Unicode, ASCII, NO_COLOR and reduced-motion settings |
PASS |
| Linux amd64 | Debian 13: archive checksum on the host, version, doctor, wol wake MAC --destination … --port … to loopback, TUI q/Ctrl+C exit 0 through OpenSSH PTY in all four modes |
PASS |
| Windows amd64 | Windows 11 Pro: the same checks through Windows OpenSSH PTY; a dev build of this change removed a stale wol.exe.old on start |
PASS |
| macOS amd64 | Cross-build, archive contents/checksum, source metadata, embedded plist and ad-hoc signature checked; no Intel Mac runtime test (#13) | UNVERIFIED runtime |
| Linux arm64 | Cross-build, archive contents/checksum and source metadata checked; no arm64 Linux runtime test (#13) | UNVERIFIED runtime |
Terminal tests used isolated empty inventories. No wake packets left the test
hosts for this release; physical wake was last validated with v0.4.14.
Windows Terminal GUI behavior was not checked. macOS executables are ad-hoc
signed, not notarized, and releases through v0.4.15 are unsigned (#14).
After publication, all six release assets were downloaded back and matched the
reviewed files. Live v0.4.14-to-v0.4.15 self-updates passed on macOS arm64,
Linux amd64 and Windows amd64; each installed binary matches the release
archive, and on Windows the leftover wol.exe.old was gone after the first
start of the new version.
This is a maintenance release. The public-beta gate remains open in #6.
Installation
Download the archive for your platform below, check it against SHA256SUMS,
extract it, and put wol on your PATH. Existing installs can run:
wol updateOn macOS, do not use go install: it skips the embedded Local Network usage
description, so status checks can report machines as unknown. To build from
source, use make install BINDIR="$HOME/.local/bin".
WOL v0.4.14
What's Changed
- Batch wake history is reliable again. Since 0.4.12, batch wake workers
that finished together could generate the same attempt ID, so a wake whose
packets were sent was reported asfailed: record conflicts with an existing item, left out of history and re-sent by "retry unsuccessful". Generated IDs
now carry a random suffix. A stubbed 100-machine batch went from 1–9 false
failures per run to none. - Imports are validated.
wol importand TUI import apply the machine
form's rules (name, unicast MAC, IPv4 address/broadcast, ports 0–65535) and
reject groups or machines that reference machines or relays missing from the
file. The whole file is rejected and the offending entry is named. - Sunshine pairing verifies TLS before sending credentials.
wol remote pair --pinthrough the Sunshine admin API no longer skips certificate checks.
Untrusted certificates are refused before any request is sent and their
SHA-256 is printed; pin it with--tls-fingerprintor
SUNSHINE_TLS_FINGERPRINT. Usage output no longer printsSUNSHINE_PASS,
--passwarns that arguments are visible to other processes, and the
password is prompted for on a terminal. - Updates can require an Ed25519-signed checksum manifest through
WOL_UPDATE_PUBLIC_KEY; archives are size- and entry-limited before
extraction. No production key exists yet, so this release is unsigned. - Prerelease versions compare numerically, the latest-release redirect fallback
uses the configured HTTP client, and replaced executables are flushed before
the atomic rename. - SQLite driver
modernc.org/sqlitev1.60.1 (SQLite 3.53.4),x/sysv0.49.0,
x/termv0.47.0.
Behavior changes
- Sunshine admin pairing against the default self-signed certificate now stops
until you pass the fingerprint you verified on that machine. Moonlight
pairing is unchanged. - Inventory files with invalid fields or dangling references, which earlier
versions accepted, are now rejected.
Platform validation
The archives were built from commit d78e53b on 2026-10-12 with Go 1.27.2 and
a clean working tree. Local release verification passed: race tests, vet,
native build and whitespace checks. Each of the seven commits since v0.4.13
also passed vet and tests on its own. The declared minimum Go 1.26.9 passed the
race suite, and vet passed for all five targets.
| Platform | Validation | Result |
|---|---|---|
| macOS arm64 | Archive checksum, version, doctor Packaging OK; TUI renders and q/Ctrl+C exit 0 in a PTY with default, NO_COLOR, LANG=C, reduced-motion and color-off settings |
PASS |
| macOS amd64 | Cross-build, archive contents/checksum, source metadata, embedded plist and ad-hoc signature checked; no Intel Mac runtime test | UNVERIFIED runtime |
| Linux amd64 | Debian 13: archive checksum on the host, version, doctor; TUI renders and q/Ctrl+C exit 0 through OpenSSH PTY with Unicode, ASCII, NO_COLOR and reduced-motion settings; live v0.4.13-to-v0.4.14 self-update and forced reinstall |
PASS |
| Linux arm64 | Cross-build, archive contents/checksum and source metadata checked; not run for this release | UNVERIFIED runtime |
| Windows amd64 | Windows 11 Pro: archive checksum on the host, version, doctor; TUI renders and q/Ctrl+C exit 0 through Windows OpenSSH PTY with Unicode, ASCII, NO_COLOR and reduced-motion settings; live v0.4.13-to-v0.4.14 self-update and forced reinstall |
PASS |
Terminal tests used isolated empty inventories; Linux and Windows checks ran on 2026-10-12 after publication. govulncheck reported no
vulnerabilities in a source scan or in binary scans of all five release
executables. Gitleaks was not run for this release. Windows Terminal GUI behavior was not checked. macOS executables are ad-hoc signed, not notarized.
Physical wake
On 2026-10-12 the Linux amd64 release binary woke a Windows 11 machine on the
same LAN from S3 sleep: wol batch wake reported sent, Windows logged its
wake within about a second of the packet, wol status reported it online
6 seconds later, and wol wake --verify reported the SSH port reachable. The
packets were also captured on a third machine with the correct target MAC.
A relay wake through an OpenWrt router (wol wake --router, etherwake) also
woke the machine from S3 sleep; Windows logged the wake 3.5 seconds after the
command. Windows records the wake source as unknown for this adapter, so the
attribution rests on timing. No multi-site or unavailable-relay scenario was
run.
After publication, all six release assets were downloaded back and matched the
reviewed files. A live v0.4.13-to-v0.4.14 self-update passed on macOS arm64 in an
isolated directory: the installed bytes match the release archive, version reports
0.4.14 and doctor Packaging remains OK. The new updater also verified and
reinstalled v0.4.14 from the published checksums.
This is a maintenance release. Independent first-user acceptance and real
multi-site, native remote and platform runtime checks remain open in #6 and #8;
this release does not announce completion of the public-beta gate.
Installation
Download the archive for your platform below, check it against SHA256SUMS,
extract it, and put wol on your PATH. Existing installs can run:
wol updateOn macOS, do not use go install: it skips the embedded Local Network usage
description, so status checks can report machines as unknown. To build from
source, use make install BINDIR="$HOME/.local/bin".
WOL v0.4.13
What's Changed
-
wol doctorwarns on macOS when the executable lacks the embedded Local
Network usage description (for example aftergo installor a
source-build update), which otherwise makes status checks report unknown. -
Updates verify archive SHA256 checksums before extracting/installing. Missing,
malformed, duplicate or mismatched checksums preserve the existing executable. -
Automatic source fallback stops on macOS with packaging-aware install guidance.
-
Restore omitted Apache-2.0 section 5 text and enable private security reporting.
-
Use patched Go toolchains: minimum 1.26.9, preferred release build 1.27.2.
Platform validation
The final archives were built from commit 2bb86f0 and checked on 2026-10-11.
Local release verification passed: race tests, vet, native build and whitespace
checks. All five archives match SHA256SUMS, include README and LICENSE, and
record the release source revision with a clean working tree.
| Platform | Validation | Result |
|---|---|---|
| macOS arm64 | Archive checksum, version, doctor Packaging OK, TUI renders and q exits with code 0 through a terminal PTY | PASS |
| Linux amd64 | Archive checksum, version, doctor, TUI renders and q exits with code 0 through OpenSSH PTY | PASS |
| Windows amd64 | Archive checksum, version, doctor, TUI renders and q exits with code 0 through Windows OpenSSH PTY | PASS |
| macOS amd64 | Cross-build, archive contents/checksum, source metadata, embedded plist section and ad-hoc signature checked; no Intel Mac runtime test | UNVERIFIED runtime |
| Linux arm64 | Cross-build, archive contents/checksum and source metadata checked; no arm64 Linux runtime test | UNVERIFIED runtime |
Terminal tests used isolated empty inventories. Windows Terminal GUI behavior
and independent first-user acceptance have not been validated by these checks.
macOS executables are ad-hoc signed, not notarized. Builds used patched Go 1.27.2. The declared minimum Go 1.26.9 passed the race suite;
local govulncheck source scans found no vulnerabilities on either patched toolchain.
A separate govulncheck binary scan of all five final release executables also
reported zero findings.
Synthetic integration acceptance passed with real SQLite/TUI/fleet components:
100 devices across three sites, mixed probe outcomes, search/navigation during
checks, unavailable mocked relay isolated from two successful sites, failed-only
retry after mocked recovery, and semantic inventory export/restore. No real
network packets were sent. Existing cancellation/concurrency tests passed.
Gitleaks scans of tracked files, reachable Git history and final archives reported
zero findings; this is scanner evidence, not a guarantee of absence.
Earlier field records from 2026-10-03/04 report PASS for macOS doctor/status,
direct wake of a Windows target, routed connectivity through ZeroTier and an
RDP sign-in screen. Those hardware checks were not repeated on 2026-10-11.
Relay wake is NOT RUN because no test relay was configured.
The live public v0.4.12-to-v0.4.13 self-update passed on macOS arm64 after
publication: installed bytes match the final archive, version reports 0.4.13 and
doctor Packaging remains OK. The new updater also successfully verified and
reinstalled v0.4.13 from the published checksums/archive. Public-beta acceptance remains tracked in #6 and #8.
This is a maintenance release. Independent first-user acceptance, broader native
remote/theme/terminal checks and real multi-site acceptance remain open in #6;
this release does not announce completion of the public-beta gate.
Installation
Download the archive for your platform below, check it against SHA256SUMS,
extract it, and put wol on your PATH. Existing installs can run:
wol updateOn macOS, do not use go install: it skips the embedded Local Network usage
description, so status checks can report machines as unknown. To build from
source, use make install BINDIR="$HOME/.local/bin".
v0.4.12
What's Changed
• Homelab & Multi-Site Routing: manage separate physical or virtual network sites with custom subnets, broadcast addresses, and direct/SSH relay routes.
• Batch Automation & Operations: multi-select machines in TUI with Space bar, batch wake/check with per-site concurrency limits and context cancellation; CLI wol batch command with JSON reporting and dry-run preview.
• IPv4 Subnet & Directed Broadcast Calculations: auto-detect and compute directed broadcasts, preventing cross-subnet packet drops.
• LAN Discovery & Native Remote Access: scan local network neighbors with auto ARP resolution and one-click machine onboarding.
• Local-First Packaging & Verification: reproducible cross-platform builds and checksums without external CI dependencies.
Installation
Download the archive for your platform below, check it against SHA256SUMS,
extract it, and put wol on your PATH. Existing installs can run:
wol updateOn macOS, do not use go install: it skips the embedded Local Network usage
description, so status checks can report machines as unknown. To build from
source, use make install BINDIR="$HOME/.local/bin".
v0.4.11
What's Changed
- Atomic inventory export/import (v5): remaps site IDs, includes SSH power profiles, and rolls back on failure.
- Shutdown: merge-only configure, no Windows platform guess, whole-minute Unix delays,
shutdown.exeon Windows, and--sudo=false. - TUI SIGINT/SIGTERM cancel in-flight work; remote sessions cannot leak after Close.
wol update --versionsurfaces GitHub HTTP errors; CLI timeout now bounds HTTP.- SQLite busy timeout + WAL; missing wake interface is reported instead of silent fallback.
Installation
go install github.com/aklkbqx/wol/cmd/wol@latestOr self-update if already installed:
wol updatev0.4.10
What's Changed
• Remote SSH shutdown & scheduling: added wol shutdown command, duration scheduling (now, 15m, 1h, cancel), TUI modal form (P), and SQLite power attempt history.
• Continuous shutdown animation & verification: rotating Braille spinner (⠋ stop), animated signal path (DESK ──> SSH ──> TARGET), and automated backoff polling that transitions machine status to asleep without manual reload.
• Hardened security: OpenSSH option injection protection (-- delimiter, safe token validation), key path validation, and remote etherwake host sanitization.
• Core stability & concurrency: fixed potential TUI lock on missing devices, safe index bounds clamping, universal Ctrl+C handling, SQLite transaction rollback protection, Moonlight session data race resolution, and Sunshine IPv6 URL compatibility.
Installation
go install github.com/aklkbqx/wol/cmd/wol@latestOr self-update if already installed:
wol updateWOL v0.4.9
What's Changed
• Modular TUI components: upgraded machine list, inspector, tabs, and theme rendering.
• Wake forms & interactive workflows: modernized form ergonomics and enhanced test coverage.
• Toolchain & verification diagnostics: tightened device presence checks and status reporting.
Installation
go install github.com/aklkbqx/wol/cmd/wol@latestOr self-update if already installed:
wol update