-
v0.6.0
Stablewindows / build (aarch64-pc-windows-msvc) (push) Has been cancelledwindows / build (x86_64-pc-windows-msvc) (push) Has been cancelledapple / swift (push) Has been cancelledapple / screenshots (push) Has been cancelledaudit / cargo-audit (push) Has been cancelledandroid-screenshots / screenshots (push) Successful in 2m18sandroid / android (push) Successful in 4m13sdecky / build-publish (push) Successful in 26swindows-host / package (push) Successful in 6m36swindows-msix / package (arm64, C:\Users\Public\ffmpeg-arm64, aarch64-pc-windows-msvc, C:\t-a64) (push) Successful in 1m10sdocker / build-push (--build-arg FEDORA_VERSION=44, ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora44-rpm) (push) Successful in 2m50sdocker / build-push (., web/Dockerfile, punktfunk-web) (push) Successful in 35srelease / apple (push) Successful in 7m53swindows-msix / package (x64, C:\Users\Public\ffmpeg, x86_64-pc-windows-msvc, C:\t) (push) Successful in 1m10sdocker / build-push (ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora-rpm) (push) Successful in 2m32sdeb / build-publish (push) Successful in 9m52sdocker / build-push (ci, ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Successful in 2m21sdocker / build-push (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Successful in 53sweb-screenshots / screenshots (push) Successful in 2m38sci / web (push) Successful in 48sci / rust (push) Successful in 11m43slinux-client-screenshots / screenshots (push) Successful in 1m33sflatpak / build-publish (push) Successful in 4m8srpm / build-publish (bazzite, punktfunk-fedora-rpm) (push) Successful in 10m10srpm / build-publish (fedora-44, punktfunk-fedora44-rpm) (push) Successful in 9m49sdocker / deploy-docs (push) Successful in 25sci / docs-site (push) Successful in 57sci / bench (push) Successful in 5m9sreleased this
2026-07-03 12:19:18 +00:00 | 13 commits to main since this release⚠️ Changed
- The Windows host now requires Windows 11 22H2 (build 22621) or newer. Its virtual display driver is built against the IddCx 1.10 framework, which older Windows doesn't ship — on Windows 10 (including LTSC) and Windows 11 21H2 previous installers appeared to work but the display device failed with Code 10. The installer now refuses up front with an explanation instead.
- Windows host and its bundled drivers upgrade together. The host↔driver channels moved to a sealed v2 protocol (below); mixed old/new combinations fail closed with a diagnosis in the log rather than misbehaving. The installer handles this automatically — just don't hand-mix a new
punktfunk-host.exewith old drivers. - Fully wire-compatible with 0.5.x clients — no protocol change; existing pairings keep working.
New: status tray icon (Windows + Linux hosts)
No more digging through logs or opening a terminal to check whether the host survived a reboot or an update.
punktfunk-traysits in the notification area and shows the service state at a glance — running / stopped / starting / degraded / failed, with the live session in the tooltip ("streaming 2560×1440@120") — and one right-click offers:- Open web console (also the left-click action) — shown only when a console is actually answering on this machine (detected live, works for package and repo-run consoles alike)
- Approve pairing request… — appears when a device is waiting for approval
- Start / Stop / Restart the host — one UAC prompt per action on Windows, plain
systemctl --useron Linux - Open logs folder and Exit tray
Windows: installed by the new "status icon" installer task (on by default), one icon per signed-in session, survives Explorer restarts. Linux: ships in the host packages with an autostart entry that only activates for users who actually run a host; KDE renders it natively (GNOME needs the AppIndicator extension). Status is read from the service manager first plus a new loopback-only
GET /api/v1/local/summary(non-sensitive counts/booleans — no PINs or fingerprints), andpunktfunk-host service restartis a new subcommand.Security — Windows host↔driver channels sealed
The frame ring (host → virtual display) and the virtual-gamepad channels no longer use named shared objects that a sibling service account could open by name. All shared sections/events are now unnamed, and their handles are duplicated directly into the driver's host process with least access — only the two endpoint processes can reach a frame or a pad's input, matching Desktop Duplication's isolation in user mode. The drivers verify what they're handed (pad index + magic), and the denial of the old sibling-service vector was verified empirically. The gamepad drivers' logic is now 100 % safe Rust over a small audited unsafe layer (
pf-umdf-util).If you host on Windows, upgrade — older host builds with the named channels have been pulled from the package registry.
Windows host reliability
- One binary for every GPU vendor, for real this time: NVENC entry points are resolved at runtime from the driver's DLL, so
punktfunk-host.exeno longer crashes at service start on AMD/Intel-only machines — it just falls through to AMF/QSV/software. - Gamepad driver upgrades actually take effect: leftover virtual-pad device nodes from a crashed or stopped host used to keep the old driver bound after an upgrade (pads silently played dead).
driver install --gamepadnow sweeps them; fresh pads bind the new driver. - Installer text and upgrade/uninstall cleanups now reference the web console's real port (
:47992, moved in 0.5.0) — old:3000leftovers from early installs are cleaned up too.
Web console
- The sidebar stays pinned at viewport height on long pages (the language switcher no longer scrolls out below the fold).
Downloads