Skip to content

Releases: aklkbqx/wol

v0.4.18

Choose a tag to compare

@aklkbqx aklkbqx released this 15 Oct 08: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=1 to 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 update

The 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

Choose a tag to compare

@aklkbqx aklkbqx released this 12 Oct 18:47

What's Changed

  • Fix: wol shutdown --cancel could 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 --cancel dropped --cancel and sent an immediate
    shutdown; --sudo, --force and --delay after 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 as wol shutdown pc --cancel (name
    first) were not affected. All earlier releases have this bug; please update.
    (#16)
  • Tests cover wol export, wol shutdown status and wol 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.sig

Existing 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

Choose a tag to compare

@aklkbqx aklkbqx released this 12 Oct 18:20

What's Changed

  • Signed releases. This is the first release with SHA256SUMS.sig, an
    Ed25519 signature over SHA256SUMS. The public key is in
    docs/wol-release-public.pem,
    fingerprint
    ac3979581b0ada7f53a4309a2cfefa983283f62cf914f87b5aa0e8619607f1be.
    Run wol update with WOL_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 import and wol remote accept flags after
    machine names and files, for example wol 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 verify runs 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.sig

Existing installs can run:

wol update

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

WOL v0.4.15

Choose a tag to compare

@aklkbqx aklkbqx released this 12 Oct 06:05

What's Changed

  • wol wake accepts flags after the MAC address, so
    wol wake AA:BB:CC:DD:EE:FF --destination 192.0.2.255 works. Arguments after
    -- stay positional. (#11)
  • wol wake --verify returns within its timeout instead of up to a second
    later. (#12)
  • On Windows, the wol.exe.old that 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 update

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

WOL v0.4.14

Choose a tag to compare

@aklkbqx aklkbqx released this 12 Oct 05:09

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 as failed: 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 import and 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 --pin through 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-fingerprint or
    SUNSHINE_TLS_FINGERPRINT. Usage output no longer prints SUNSHINE_PASS,
    --pass warns 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/sqlite v1.60.1 (SQLite 3.53.4), x/sys v0.49.0,
    x/term v0.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 update

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

WOL v0.4.13

Choose a tag to compare

@aklkbqx aklkbqx released this 11 Oct 10:02

What's Changed

  • wol doctor warns on macOS when the executable lacks the embedded Local
    Network usage description (for example after go install or 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 update

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

Choose a tag to compare

@aklkbqx aklkbqx released this 21 Sep 14:00

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 update

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

Choose a tag to compare

@aklkbqx aklkbqx released this 21 Sep 08:01

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.exe on Windows, and --sudo=false.
  • TUI SIGINT/SIGTERM cancel in-flight work; remote sessions cannot leak after Close.
  • wol update --version surfaces 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@latest

Or self-update if already installed:

wol update

v0.4.10

Choose a tag to compare

@aklkbqx aklkbqx released this 17 Sep 08:44

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@latest

Or self-update if already installed:

wol update

WOL v0.4.9

Choose a tag to compare

@aklkbqx aklkbqx released this 17 Sep 01:14

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@latest

Or self-update if already installed:

wol update