diff --git a/docs/release-notes/0.6.20.md b/docs/release-notes/0.6.20.md index dc03293..86f14d2 100644 --- a/docs/release-notes/0.6.20.md +++ b/docs/release-notes/0.6.20.md @@ -1,6 +1,4 @@ -> **DRAFT line - delete this block at release.** Written for 0.6.20; `version.txt` is not bumped yet. - -**This release makes the source-build installer safe on a host whose install folder was once self-contained, and makes both install paths replace the folder the same way.** +**This release adds optional update notifications (off by default) and makes the source-build installer safe on a host whose install folder was once self-contained.** ## What was happening @@ -29,3 +27,40 @@ If you upgrade with `install-service.ps1 -FromZip`, your existing `appsettings.j - New endpoints, all behind the API key when authentication is on: `GET /api/system/updates`, `POST /api/system/updates/check` (at most once a minute) and `POST /api/system/updates/settings`. - Turning checks on or off, by file or from the dashboard, takes effect without a restart. - The last result is cached in `C:\ProgramData\MultiSeat\update-check.json`, readable only by SYSTEM and Administrators. It is safe to delete. + +## How this was checked + +**The installer, live.** It was run for real on a host whose install folder was self-contained, which is exactly the situation that used to break the service. The source build staged the payload, verified it, checked the host's runtimes, stopped the service only after that, backed up the config files and the whole folder, replaced the folder, restored the config, and confirmed the installed folder is consistent. The service came back running, framework-dependent, with no `hostfxr.dll` left. The new backup folders were limited to SYSTEM, Administrators and the installing account, and the list of settings the build adds was printed correctly. + +**Update notifications, live.** On the same host: +- With checks off, the service held no connection outside the machine, sampled over ten seconds. +- Turned on through the API, the change took effect without a restart. A check from the SYSTEM account reached GitHub over TLS in about a second. MultiSeat read as up to date, ApolloVibe was identified as `2026.6.1-ms6` by the SHA-256 of its `sunshine.exe` and read as up to date, and MoonlightVibe showed the latest release only, labelled as not tied to a client. +- The scheduled check then ran on its own about every 12 hours for three days. +- `update-check.json` was readable only by SYSTEM and Administrators and held no host name or user name. +- Writing `appsettings.local.json` from the dashboard switch kept its access list and owner. Only the file's primary group field changed, which Windows does not use for access checks. + +**Tests.** The full suite passes, and each new group was mutation-checked. The tests for timing-dependent code prove that the reader and writer overlapped instead of hoping they would, after one such test failed on a slow CI runner. + +**Not verified:** a check behind a proxy, the failure and offline paths on a real network, the dashboard in a real browser (layout at phone width and the notices), and the settings switch on a host whose `appsettings.local.json` has a custom access list. + +## Known limitations + +- **On at least one host the scale override is still ignored** (issue #93): the dashboard shows "Running at 100%" beside the 200% that was asked for, with a note, and MultiSeat leaves the session alone. On the reference host the fix in 0.6.19 applies the scale correctly. We are working out what differs. +- Seats capture the remote desktop surface, not a dedicated virtual display. A Windows constraint, not a regression. +- The update check shows a MoonlightVibe release but cannot see which version your devices run. +- A failed update check keeps showing an earlier "update available" notice and shows the error beside it. + +## 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.20`. diff --git a/version.txt b/version.txt index 4528c7c..db94455 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -0.6.19 +0.6.20