diff --git a/docs/WINDOWS.md b/docs/WINDOWS.md index 9cb8346..18b2d8a 100644 --- a/docs/WINDOWS.md +++ b/docs/WINDOWS.md @@ -1,10 +1,12 @@ # PeerSpeak on Windows -Current status: PeerSpeak cross-compiles to `x86_64-pc-windows-gnu` from Linux and -has passed an older native Windows 11 VM smoke test for launch, GUI render, call -join, and audio flow. The build environment is **not** the Windows VM; current -Windows binaries are built from Linux, normally inside the `peerspeak-win` -distrobox or with the same GNU target environment. +Current status: PeerSpeak cross-compiles to `x86_64-pc-windows-gnu` from Linux. +PeerSpeak v0.6.7 at commit `7217015d` passed a fresh Windows 10 22H2/build 19045 +VM smoke test on 2026-08-22 for install/upgrade, launch, GUI/settings render, +device selection and persistence, microphone capture startup, WASAPI playback +pacing, room create/leave, and the missing-PixelPass guard. The build environment +is **not** the Windows VM; current Windows binaries are built from Linux in a +distrobox with the GNU target environment. The Windows runtime still trails Linux in a few important areas. See the Claude handoff file `windows-parity-audit.md` for the full audit and task breakdown. @@ -13,8 +15,8 @@ handoff file `windows-parity-audit.md` for the full audit and task breakdown. | Area | Status | |---|---| -| GUI | Iced/wgpu builds for Windows and rendered in the Windows 11 VM. | -| Networking | Iroh QUIC transport and gossip compile on Windows; VM call reached two peers. | +| GUI | Iced/wgpu renders on Windows 10; the current build's landing and settings screens were smoke-tested. | +| Networking | Iroh QUIC transport and gossip compile on Windows; the current build creates/leaves a room, and an older VM build completed a two-peer call. | | Audio backend | `cpal` drives WASAPI capture/playback behind `AudioBackend`. | | Device selection | cpal enumerates input/output devices; see caveat below about stable IDs. | | Resampling/remap | WASAPI devices can run non-48 kHz formats; PeerSpeak converts at the backend boundary. | @@ -75,6 +77,44 @@ UDP for QUIC plus relay traffic when direct NAT traversal is unavailable. The default network mode keeps the n0 relay available for NAT traversal without publishing presence to n0 DNS. Relayed connections are expected and valid. +## Fresh Windows 10 smoke — 2026-08-22 + +Validated on Windows 10 Enterprise Evaluation 22H2/build 19045 in the +`peerspeak-windows10` libvirt VM. The installed title screen reported +`PeerSpeak v0.6.7 (7217015d)`. + +Definitive artifacts built from committed `main`: + +- `peerspeak.exe`: 80,601,595 bytes, SHA-256 + `a9225ca8878acdbc54a424427a591b3f55774a9fc4d20decd40993274b9336ff` +- `peerspeak-0.6.7-setup.exe`: 18,578,658 bytes, SHA-256 + `5ac551709814918f9c75a49aabed929d3f6618cdbeaf3cb4b22add8dfcbb68d9` + +Proven in this run: + +- The final installer transferred with a matching Windows-side hash, installed + under `C:\Program Files\PeerSpeak`, and upgraded in place without losing config. +- Upgrade testing exposed duplicate firewall rules. Commit `7217015d` made the + installer replace its owned rule; a final upgrade left exactly one enabled + inbound `PeerSpeak` rule and logged exit code 0 for delete/add. +- The landing screen and all Settings categories rendered. Input `Line In (High + Definition Audio Device)` and output `Speakers (High Definition Audio Device)` + were selectable and restored after a clean app restart. +- Test Mic opened the real cpal/WASAPI capture path. The VM endpoint negotiated + 44.1 kHz stereo and PeerSpeak resampled it to 48 kHz as designed. +- `audio_probe.exe 440 30` exited 0. After one startup-fill event, every + steady-state health line reported `underrun +0` and `dropped +0`; the expected + drain after tone generation stopped registered at shutdown. No human audible + tone assessment was available during this automated run. +- A one-participant room connected and left cleanly. With no `pixelpass.exe`, + Share Screen opened the dependency instructions rather than crashing. +- The app log ended with the correct version/hash and Windows Event Viewer had + no PeerSpeak application errors. + +Still manual or two-party: current-build Linux↔Windows audio in both directions, +chimes, chat/files/music/recording, friends/presence, game detection, audible +probe quality, and uninstall/firewall cleanup. + ## Known gaps | Item | Status | @@ -83,21 +123,22 @@ publishing presence to n0 DNS. Relayed connections are expected and valid. | Screen share | Blocked by PixelPass, which is currently Linux-only in practice. PeerSpeak can spawn `pixelpass.exe`, but there is no Windows PixelPass host/viewer parity yet. | | Device persistence | Uses cpal friendly names as keys. These can duplicate or change across Windows driver/profile changes; stable WASAPI endpoint IDs are still needed. | | Release hygiene | Keep `.iss` and installer output in sync with `Cargo.toml`; rebuild Windows artifacts during each release. | -| Runtime coverage | The Windows VM smoke test proved an older tester build. Current `main` needs a fresh VM smoke matrix before calling parity current. | +| Runtime coverage | The current 0.6.7 build passed the bounded Windows 10 smoke above; the remaining two-party and feature-specific rows still need coverage. | ## Current smoke checklist -Before calling a Windows build current, verify on the Windows VM or real Windows -hardware: +Before calling Windows feature parity complete, finish these checks on the +Windows VM or real Windows hardware. Items checked below passed for v0.6.7 at +`7217015d`: -- Launch current `peerspeak.exe`; GUI renders and settings open. -- Run `audio_probe.exe 440 30`; listen for glitches and inspect `playout-health`. -- Create/join a Linux <-> Windows room; confirm mic and playback both directions. -- Select input/output devices, restart, and confirm selections persist or fall back clearly. -- Play chimes and custom chime paths. -- Send chat, image/file attachments, and save an attachment through the native dialog. -- Import/play/share/listen to music from Windows file paths. -- Record mixed/stems/both and inspect the WAV output path. -- Exercise friends/presence/recents and the clock-skew banner. -- Test Steam and non-Steam game detection on a real Windows Steam install. -- Install/upgrade/uninstall through the Inno installer, including firewall rule cleanup. +- [x] Launch current `peerspeak.exe`; GUI renders and settings open. +- [ ] Run `audio_probe.exe 440 30`; automated `playout-health` passed, but listen for glitches on physical hardware. +- [ ] Create/join a Linux <-> Windows room; confirm mic and playback both directions. +- [x] Select input/output devices, restart, and confirm selections persist or fall back clearly. +- [ ] Play chimes and custom chime paths. +- [ ] Send chat, image/file attachments, and save an attachment through the native dialog. +- [ ] Import/play/share/listen to music from Windows file paths. +- [ ] Record mixed/stems/both and inspect the WAV output path. +- [ ] Exercise friends/presence/recents and the clock-skew banner. +- [ ] Test Steam and non-Steam game detection on a real Windows Steam install. +- [ ] Install/upgrade/uninstall through the Inno installer, including firewall rule cleanup. Clean install and idempotent upgrade passed; uninstall remains.