Skip to content

Releases: YELrhilassi/kvmshare

kvmshare v0.8.9

Choose a tag to compare

@YELrhilassi YELrhilassi released this 25 Sep 06:08

Bugfix release: kills the full-core CPU spins in the GUI.

The bug: after a Wi-Fi blackout, sleep/resume, or any interface flap, kvmshare-gui burned 100% of one core indefinitely (both machines observed: 42 CPU-minutes on the PC, 96% live on the HP). Two mDNS paths kept looping on dead state:

  • the mDNS browser spun on its resolver's closed entries channel (a closed channel is always ready in a select — every session transition fed the spin)
  • the zeroconf responders spun on dead sockets that error instantly after the interface came back

Both now end their goroutine; the next discovery cycle rebuilds them.

Also: the GUI now self-diagnoses — if the process ever burns ~a full core for 12 seconds, it dumps every goroutine's stack to gui-cpudump.txt in the state dir, naming the culprit without a debugger.

Install from a terminal (no SmartScreen/Gatekeeper prompts):

curl -fsSL https://github.com/YELrhilassi/kvmshare/releases/download/v0.8.9/install.sh | sh
irm https://github.com/YELrhilassi/kvmshare/releases/download/v0.8.9/install.ps1 | iex
npx github:YELrhilassi/kvmshare

Every download is verified against SHA256SUMS (GitHub per-asset digests as fallback) before anything executes. Pin: sh install.sh v0.8.9. Uninstall: sh install.sh --uninstall.

kvmshare v0.8.8

Choose a tag to compare

@YELrhilassi YELrhilassi released this 25 Sep 04:55

Portable kvmshare release.

Install from a terminal (no SmartScreen/Gatekeeper prompts):

curl -fsSL https://github.com/YELrhilassi/kvmshare/releases/download/v0.8.8/install.sh | sh   # Linux / macOS / WSL
irm https://github.com/YELrhilassi/kvmshare/releases/download/v0.8.8/install.ps1 | iex   # Windows
npx github:YELrhilassi/kvmshare   # anywhere Node 18+ runs

The bootstrap scripts verify every download against SHA256SUMS (with GitHub's per-asset digests as fallback) before executing anything, then hand off to the Go installer: archive download + verify + atomic binary apply + desktop integration (udev input access on Linux; shortcuts, elevation tasks, firewall on Windows). Pin a version: sh install.sh v0.8.8 / install.ps1 -Tag v0.8.8. Uninstall: sh install.sh --uninstall.

In this release

  • Terminal bootstrap installers (sh / PowerShell / npx) — the no-clicks path for unsigned binaries
  • Security hardening: UDP cursor stream bound to the TCP handshake's IP (forged beacons/crossings from another machine rejected), frame-length caps enforced before buffering, unknown frame flags rejected, strict ScreenInfo/config validation
  • Reconnect: bounded connection attempts (a revived Wi-Fi link is caught in seconds, not minutes); accept-loop handshakes no longer block other clients
  • GUI: idle CPU cut (config cache, tray cadence) — Task Manager shows the webview's helper processes next to kvmshare-gui; the tray icon is drawn by the GUI process, while KVM sessions survive a GUI restart
  • Client injectors now log dropped unmapped keys (throttled) — 'some keys do nothing' is no longer silent
  • Trust model documented honestly in docs/04-wire-protocol.md §4.7

v0.8.7 — shortcut recording fixed

Choose a tag to compare

@YELrhilassi YELrhilassi released this 19 Sep 08:28

Shortcut recording could silently swallow the whole keyboard: the capture bridge waited forever on the hook's pump thread while the session was already armed, so no key ever reached the page and every recording hung. The hook now installs in the background, the bridge returns instantly, and the session state machine is unit-tested (arm/disarm/replace/TTL). Held-only chords (e.g. Super pressed and released with no second key) complete cleanly instead of hanging the recording. Super+Tab records with live chip feedback and fires as an OS-override.

🤖 Generated with Codebuff
Co-Authored-By: Codebuff noreply@codebuff.com

kvmshare v0.8.6

Choose a tag to compare

@YELrhilassi YELrhilassi released this 19 Sep 06:39

Portable kvmshare release. Download the installer for your platform (or the full archive) and run it — it fetches and verifies everything itself.

v0.8.5 — duty-cycled discovery, fail-proof manual refresh

Choose a tag to compare

@YELrhilassi YELrhilassi released this 19 Sep 03:36

Discovery rebuilt: bounded sessions instead of free-running loops

  • Duty cycle: announce/probe traffic now runs in bounded sessions owned by a coordinator. A role start seeks at full rate; an attached session drops to the connected rate; a session that expires without hearing anyone grounds the engine (idle) — no background churn, and the UI's new DiscoveryStatus shows the state and failed-session count verbatim.
  • Manual refresh is fail-proof: it rebuilds a dead listener on the spot, clears the peer map, runs several announce+probe rounds, and reports a real error to the UI when it cannot run (previously it could silently no-op when the listener socket was down — exactly when users press Refresh).
  • ProbeHost: a direct "are you a kvmshare machine?" call to any address — no broadcast, no multicast, no cached state. The manual path of last resort that works whenever IP reachability works.
  • Probe sweeps now cover non-/24 subnets via directed broadcast instead of dropping them.
  • Health warnings fire only while a session is actually listening; an idle engine is quiet by design.
  • Frontend surfaces refresh errors as plain sentences.

Upgrade: run the installer (or kvmshare-install). After updating both machines, each shows the other's true state instantly; pressing Refresh always re-probes from scratch or tells you why it could not.

v0.8.4

Choose a tag to compare

@YELrhilassi YELrhilassi released this 19 Sep 02:09

Protocol version range negotiation: machines running different kvmshare releases pair as long as their wire protocols are in range, and refusals now say both versions and point at the fix (update the older machine). Wheel-daemon Windows stub no longer console-based.

v0.8.3

Choose a tag to compare

@YELrhilassi YELrhilassi released this 19 Sep 01:51

Hardened chord-capture lifecycle: deterministic hook/DOM ear selection, real TTL-expiry notification with DOM re-arm, serialized hook startup. Ships the v0.8.2 fixes (OS-boundary chord recording, no console flash).

v0.8.2

Choose a tag to compare

@YELrhilassi YELrhilassi released this 19 Sep 01:29

Shortcut recording at the OS boundary: while recording, every physical key is swallowed before the shell sees it — register Super+Tab (or any OS-bound chord) without the native action firing. Roles no longer flash a console window on Windows (windowsgui subsystem). LiveKeys panel removed.

v0.8.1

Choose a tag to compare

@YELrhilassi YELrhilassi released this 19 Sep 00:41

Per-role elevation tasks with an argv args-file contract: roles the GUI starts on Windows run elevated (Task Manager / installer input works). Task creation rides the install and self-heals from the GUI for admin users. Fixes the v0.8.0 elevation model, whose task XML value was rejected by schtasks (RunLevel must be HighestAvailable in XML — the /RL HIGHEST CLI equivalent), which silently degraded every elevated spawn to non-elevated.

kvmshare v0.8.0

Choose a tag to compare

@YELrhilassi YELrhilassi released this 18 Sep 23:42

Windows role elevation (scheduled-task spawn, standard-user fallback), cross-process config locking, id-based session matching.