v0.4.0
macOS
- macOS tray: KVO on button effectiveAppearance for W glyph colour
- macOS tray: follow real menu-bar appearance; live-update open menu
- macOS tray: theme-aware coloured icons, green badge restored
- macOS tray: native click-to-open menu + template icons (issue #18)
Features
- feat(release): wire Ed25519 update signing into CI (fixes #21)
- feat(automation): open editor live-reflects external config edits (issue #12)
- feat(cli): install-skills — teach coding agents to use
wireguide ctl(issue #10) - feat(gui): watch config.json + tunnels dir so all CLI changes reflect live (issue #10)
- feat(cli): settings toggles + diagnostics (issue #10)
- feat(cli): automation rule config, rename, delete (issue #10)
- feat: drag-resizable tunnel-list column (issue #16)
- feat: tunnel list sort by date-added / last-used (issue #17)
- feat(wifi): Windows gateway-MAC via GetBestRoute + SendARP (issue #12)
- feat(automation): editor polish — live drag, scroll cues, validation, MAC canon
- feat(automation): drag-to-reorder priority + fixed-size scrolling editor
- feat(automation): network pick-list from a remembered-networks registry (issue #12)
- feat(automation): gateway-MAC "this network" condition (issue #12)
- feat: subnet suggestions + retire legacy Wi-Fi Rules screen (issue #12)
- feat: Automation rule editor UI (issue #12, 4/n)
- feat:
ctl automationread-only engine preview (issue #12/#10) - feat:
wireguide ctlcommand-line control interface (issue #10) - feat(helper): drive tunnels from Automation rules + hybrid triggers (issue #12, 3/n)
- feat(wifi): physical-interface IP enumeration for subnet rules (issue #12, 2/n)
- feat(wifi): per-tunnel Automation rule model + evaluator (issue #12, 1/n)
- feat: tunnel list sorting — name + active-on-top (issue #17)
- feat: compact tunnel list mode (issue #16)
- Add per-tunnel latency target
Bug fixes
- fix(build): forward SIGN_PUBKEY through the package task chain
- Fix NSIS build: add UTF-8 BOM to project.nsi
- fix(wifi): SSID lifecycle on macOS — stale invalidation + helper-restart resend (issue #12)
- fix: re-review round 2 — helper settings restore, latency prune, cleanups (issue #12)
- fix(storage): stable date-added sort via stamped creation time (issue #17)
- fix(windows): gateway-MAC underlay route + NSIS PATH injection (issues #12, #10)
- fix(automation): editor save/load races (issue #12)
- fix(storage): cross-process settings transaction + rule key migration (issue #12)
- fix(cli): correctness hardening from code review (issue #10)
- fix(automation): headless-safe engine + firewall parity + macOS SSID (issue #12)
- fix: reflect CLI-applied settings in a running GUI (issue #10)
- fix(automation): both subnet and gateway-MAC conditions, self-entry + autocomplete
- fix(wifi): migration translates only explicit rules, no forced disconnect
- Fix meta sidecar lost-update race; validate latency probe target
Reliability
- refactor: remove legacy per-tunnel Wi-Fi auto-connect UI (issue #12)
UI
- docs: document CLI + Automation; fix stale Wi-Fi-rules references
Build / CI
- build: put
wireguideCLI on PATH after install (macOS cask + Windows NSIS) (issue #10)
Other
- release: 0.4.0
- chore: regenerate stale bindings (SettingsChangedPayload) + gofmt flock
- chore: bump dev version to 0.3.1-dev7; CHANGELOG for code-review fixes
- storage: create config dir before writing settings
- storage: fsync parent directory after atomic rename (durability)
- update: reuse scheduler timer; validate initial update URL scheme/host
- helper/diag: prune latency cache on disconnect/rename; honour ctx in probes
- windows: don't fail full-tunnel connect on unusable IPv6 endpoint
- windows firewall: precise DNS-protection filter lifecycle
- linux network: validate DNS search domains; capture original DNS once
- linux firewall: validate endpoint port; oifname for tunnel; disable idempotency
- storage: reject reserved names and case-collisions; allow case rename
- tunnel: don't hold Manager.mu across slow teardown on connect race
- darwin: supervise route-monitor subprocess; fix Stop/reapply race
- linux: delete split-tunnel routes from the table they were added to
- windows: fix MIB_IPINTERFACE_ROW buffer overflow and NlMtu offset
- update: bind Ed25519 signature to the hash actually installed
Full Changelog: v0.3.1...v0.4.0