From 76981e20c12f7faec719945dfa0d4e348356ba20 Mon Sep 17 00:00:00 2001 From: vibesoftwarecoder Date: Fri, 30 Oct 2026 08:35:24 -0500 Subject: [PATCH] Release 0.6.24 Bump version.txt to 0.6.24 and add the hand-written release notes. No code changes. Co-Authored-By: Claude Sonnet 5.5 --- docs/release-notes/0.6.24.md | 53 ++++++++++++++++++++++++++++++++++++ version.txt | 2 +- 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 docs/release-notes/0.6.24.md diff --git a/docs/release-notes/0.6.24.md b/docs/release-notes/0.6.24.md new file mode 100644 index 0000000..2e7fc55 --- /dev/null +++ b/docs/release-notes/0.6.24.md @@ -0,0 +1,53 @@ +**This release adds dashboard control of the host Apollo's USB forwarding, keeps USB forwarding off for seats, and fixes a 30-second delay when the service stops with a dashboard open.** + +## What changes + +- **A USB forwarding panel on the host card** (#135). It shows whether the console Apollo's USB tunnel is on, what is forwarded now, and which clients are paired. You can turn the tunnel on or off and block or allow a client's USB forwarding. + - It talks to the console Apollo through a local control pipe. That needs ApolloVibe `2026.6.1-ms7` or newer, with "USB Forwarding Control Pipe" ticked in Apollo's Network tab. Without that, nothing changes. + - MultiSeat never edits Apollo's config. A switch made in the panel lasts until that Apollo restarts, and the panel says so. + - **Only the person at the console can use it.** The API has no key on a host that chose that, and every seat user can reach it on loopback, so the whole `/api/host/usb` group, reading included, is refused to anyone else. A dashboard on another PC, or inside a seat, sees a USB card that says it cannot control USB forwarding. +- **Seats never forward USB** (#133). Each seat's generated Apollo config now writes `usb_forwarding_enabled = disabled`, and the seat firewall rules never open the USB tunnel port (main port + 7). The `usbip-win2` driver attaches a device to the whole machine, so a device forwarded into one seat would show up for every account on the host. +- **An opt-in driver install step** (#133): `install-prerequisites.ps1 -WithUsbForwarding`. It installs `usbip-win2` v0.9.8.1 after checking the file's SHA-256 and the installer's signature and signer name. It then checks that the installed drivers chain to Microsoft. It is never part of a default or unattended run and it never reboots; a reboot is needed before the driver works, and the script leaves that to you. `-UsbForwardingDryRun` prints every step and changes nothing. +- **The service stops promptly while a dashboard is open** (#131). On 2026-10-21 a stop took about 31 seconds because an open dashboard socket held up shutdown. The socket now closes when the host stops. In the new test, a stop that took 30.0 seconds before the fix takes about 0.1 seconds. +- Docs: audio for the `PerSession` default, with VoiceMeeter only for `SharedHost` (#130). A new test kills a stray Apollo using real processes (#132). + +## Who this affects + +- **Everyone:** the faster service stop. +- **Nobody else, unless they opt in:** the USB panel needs Apollo's control pipe turned on, and the driver step needs its own switch. Seats are forced to USB off whatever the host does. +- USB forwarding itself needs ApolloVibe `2026.6.1-ms7` and MoonlightVibe 6.3.11 or newer. It is experimental. Those releases carry the setup steps. + +## How this was checked + +- **Unit tests:** CI passed on `master` for every change here. The suite on the last change finished with 1927 passed, 18 skipped and 0 failed, and the dashboard tests passed 82 of 82. Each protection in the panel's access check, and each check in the driver step, was removed on purpose and a test failed every time. +- **An independent review** of the driver step found no Critical issues. Its two High findings and its Medium findings were fixed and tested. +- **USB forwarding end to end** was tested on 2026-10-29 with ApolloVibe `ms7`'s `sunshine.exe`, MoonlightVibe 6.3.11 and a USB stick. That test did not go through the MultiSeat panel or the driver step. + +## Not verified + +- **The USB panel in a real browser.** It has not been compared between a browser on the console and one inside a seat. The access rule is tested with this process as the caller, not from a live seat session. +- **A seat user moving their session to the console** (`tscon`) is covered by a unit test of the rule, not measured on a live seat. +- **The driver install step** has not run for real: no real download, and no check on a freshly installed driver. If the driver check is too strict it refuses, which is safe. +- **The faster stop** is measured by the test, not by a stop on a live host. + +## Known limitations + +- **After a Quit, the Moonlight client still lists the seat but cannot connect** until Apollo is started from the dashboard. +- **On at least one host the scale override is still ignored** (issue #93). This release does not change that. +- Seats capture the remote desktop surface, not a dedicated virtual display. That is a Windows constraint. +- Steam isolation is experimental and off by default. + +## Install + +```powershell +.\prerequisites\install-prerequisites.ps1 # drivers - needed either way +.\scripts\install-service.ps1 -FromZip . +``` + +Afterwards, confirm what landed: + +```powershell +& 'C:\Program Files\MultiSeat\MultiSeat.Service.exe' --config +``` + +It should report `0.6.24`. diff --git a/version.txt b/version.txt index 9d04cbd..0426003 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -0.6.23 +0.6.24