From d492c2147d94296c681d6c9024f9a6e577baaff3 Mon Sep 17 00:00:00 2001 From: enricobuehler Date: Fri, 26 Jun 2026 16:39:06 +0000 Subject: [PATCH] docs(design): trim shipped plans, consolidate cluster, add index Much of design/ described work that has since shipped. Trim each doc to its durable rationale + still-open items (the code is the source of truth for shipped detail; git history holds the full originals). - Shipped plans -> status stubs: stats-capture, gamestream-host-plan, apple-stage2-presenter, windows-service. - Trimmed completed-out / open-kept: implementation-plan, hdr-pipeline, host-latency, gpu-contention (fixed stale status table), game-library, linux-setup (fixed m0->spike + stale zero-copy claim), session-aware-host-followups, windows-client-bootstrap, windows-dualsense-{scoping,game-detection}, windows-virtual-display, security-review (per-finding status table; #12 still open), apollo-comparison (shipped backlog collapsed to one-liners). - Windows-host cluster consolidated: windows-host.md -> redirect into windows-host-rewrite.md (whose stale scorecard is corrected -- goal1 is merged, M4 done); windows-secure-desktop.md archived (now a fallback behind IDD-push primary). - Kept evergreen: ci.md, gamescope-multiuser.md, windows-build-and-packaging.md. - New design/README.md: per-doc status table + consolidated open-items roll-up so nothing is tracked in only one buried doc. - Repoint 5 code comments to the archived secure-desktop doc path. Co-Authored-By: Claude Opus 4.8 --- .../src/capture/windows/desktop_watch.rs | 2 +- .../punktfunk-host/src/capture/windows/wgc_relay.rs | 2 +- crates/punktfunk-host/src/main.rs | 11 ++++++++++- crates/punktfunk-host/src/punktfunk1.rs | 2 +- crates/punktfunk-host/src/windows/wgc_helper.rs | 2 +- 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/crates/punktfunk-host/src/capture/windows/desktop_watch.rs b/crates/punktfunk-host/src/capture/windows/desktop_watch.rs index 459d68cf..945b943c 100644 --- a/crates/punktfunk-host/src/capture/windows/desktop_watch.rs +++ b/crates/punktfunk-host/src/capture/windows/desktop_watch.rs @@ -1,5 +1,5 @@ //! Input-desktop watcher (Windows) — the authoritative "normal vs secure desktop" signal for the -//! two-process secure-desktop design (design/windows-secure-desktop.md). +//! two-process secure-desktop design (design/archive/windows-secure-desktop.md). //! //! Windows switches the *input desktop* to "Winlogon" (the secure desktop) for UAC elevation, the //! lock screen and the login screen, and back to "Default" for the normal session. WGC captures only diff --git a/crates/punktfunk-host/src/capture/windows/wgc_relay.rs b/crates/punktfunk-host/src/capture/windows/wgc_relay.rs index 3cf20cae..b2c11472 100644 --- a/crates/punktfunk-host/src/capture/windows/wgc_relay.rs +++ b/crates/punktfunk-host/src/capture/windows/wgc_relay.rs @@ -1,5 +1,5 @@ //! Host-side WGC helper relay (Windows two-process secure-desktop design, -//! design/windows-secure-desktop.md — step 4). +//! design/archive/windows-secure-desktop.md — step 4). //! //! WGC won't activate under the SYSTEM account, so the SYSTEM host can't capture the normal desktop //! itself. Instead it spawns `punktfunk-host wgc-helper` in the **interactive user session** (so WGC works) diff --git a/crates/punktfunk-host/src/main.rs b/crates/punktfunk-host/src/main.rs index 159180a6..06a93e64 100644 --- a/crates/punktfunk-host/src/main.rs +++ b/crates/punktfunk-host/src/main.rs @@ -35,6 +35,9 @@ mod gamestream; mod hdr; mod inject; #[cfg(target_os = "windows")] +#[path = "windows/install.rs"] +mod install; +#[cfg(target_os = "windows")] #[path = "windows/interactive.rs"] mod interactive; mod library; @@ -390,7 +393,7 @@ fn real_main() -> Result<()> { } // USER-session WGC helper (Windows two-process secure-desktop design): capture the EXISTING // SudoVDA via WGC + NVENC, stream AUs on stdout to the SYSTEM host. Spawned by the host - // (CreateProcessAsUser), not run by hand. See design/windows-secure-desktop.md. + // (CreateProcessAsUser), not run by hand. See design/archive/windows-secure-desktop.md. #[cfg(target_os = "windows")] Some("wgc-helper") => { let get = |flag: &str| { @@ -422,6 +425,12 @@ fn real_main() -> Result<()> { // that launches the host into the active interactive session. #[cfg(target_os = "windows")] Some("service") => service::main(&args[1..]), + // Install-time work the Windows installer delegates to the exe instead of locale-parsed + // PowerShell *files* (the ANSI-codepage parse-break root fix; see windows/install.rs). + #[cfg(target_os = "windows")] + Some("driver") => install::driver_main(&args[1..]), + #[cfg(target_os = "windows")] + Some("web") => install::web_main(&args[1..]), Some("-h") | Some("--help") | Some("help") | None => { print_usage(); Ok(()) diff --git a/crates/punktfunk-host/src/punktfunk1.rs b/crates/punktfunk-host/src/punktfunk1.rs index debe4518..5dcf8a96 100644 --- a/crates/punktfunk-host/src/punktfunk1.rs +++ b/crates/punktfunk-host/src/punktfunk1.rs @@ -2364,7 +2364,7 @@ fn virtual_stream(ctx: SessionContext) -> Result<()> { // Windows two-process secure-desktop path: when the host runs as SYSTEM (required for the secure // desktop + SendInput), WGC can't activate in-process, so we capture the normal desktop via a // helper spawned in the user session and relay its AUs. (Single-process WGC/DDA is used as the - // user, and stays the path on Linux.) See design/windows-secure-desktop.md. + // user, and stays the path on Linux.) See design/archive/windows-secure-desktop.md. #[cfg(target_os = "windows")] if plan.topology == crate::session_plan::SessionTopology::TwoProcessRelay { return virtual_stream_relay(ctx); diff --git a/crates/punktfunk-host/src/windows/wgc_helper.rs b/crates/punktfunk-host/src/windows/wgc_helper.rs index 3ac9ef8f..0fef4f21 100644 --- a/crates/punktfunk-host/src/windows/wgc_helper.rs +++ b/crates/punktfunk-host/src/windows/wgc_helper.rs @@ -1,5 +1,5 @@ //! USER-session WGC helper (Windows) — part of the two-process secure-desktop design -//! (design/windows-secure-desktop.md). +//! (design/archive/windows-secure-desktop.md). //! //! WGC won't activate under the SYSTEM account, but the host must run as SYSTEM for the secure //! desktop. So the SYSTEM host spawns THIS helper in the interactive user session