SteamWrapper v2 technology stack
Target design
Section titled “Target design”C#/XAML WinUI 3 is the sole Manager, backed by independently testable C# Application services and an independent Rust Runner. The Windows configuration preview and self-contained directory build are implemented. Dioxus, its Rust Manager service layer, Native E2E, and GUI release workflow are removed; their historical results do not define the current product. See the Windows design and WinUI assessment.
| Area | Current choice | Boundary |
|---|---|---|
| Manager UI | WinUI 3, C#, XAML | Native Windows controls, pickers and accessibility; supported system language by default, English fallback and complete Simplified Chinese |
| Manager services | C# Application | Profiles, local Steam discovery, Runner installation, logs; no Rust FFI or helper |
| Daily runtime | Independent Rust Runner | Existing CLI and process lifecycle; Manager closed during play |
| Configuration | profiles.toml v2 |
C# edits preserve unknown/unedited data; actual Rust consumption is tested |
| Covers | Custom/local Steam images, optional official Steam CDN fallback and placeholders | Offline by default; bounded requests and SteamWrapper cache |
| Delivery | Unpackaged self-contained Windows layout; version-tag portable ZIP or manual preview artifact | Unsigned prereleases; per-user installer, signing and updater remain unfinished |
| Platform | Windows 11 24H2 x64 preview | Existing Linux Runner compatibility/CI only; no Linux GUI |
C# uses Tomlyn 2.10.1 syntax trees and field spans rather than whole-model serialization. It generates a Rust-readable TOML 1.0 string subset and preserves other source text. Fields, defaults, legacy aliases, paths and arguments are constrained by cross-language and real Runner tests. Tomlyn package, syntax API
Runner remains Rust. The earlier NativeAOT alternative is an archived assessment, not another implementation or a planned simultaneous rewrite. Any future reconsideration needs complete CLI/TOML and platform process evidence. NativeAOT documentation
Current repository layout
Section titled “Current repository layout”apps/manager-winui/SteamWrapper.Manager # WinUI UIapps/manager-winui/SteamWrapper.Application # C# configuration servicesapps/manager-winui/SteamWrapper.Application.Tests # MSTestcrates/core # Rust configuration/path contractscrates/runner # headless runtime called by Steamtests/contracts # C# / Rust contracts and drivertests/fixtures # controlled test processesdocs # Astro/Starlight static siteRust core and services
Section titled “Rust core and services”steamwrapper-core defines Profile/TOML, path and Launch Options contracts, and existing metadata utilities. It depends on neither GUI nor platform process APIs. Runner uses its configuration semantics. WinUI calls C# Application directly; it does not call core through an ABI. No Rust Manager service crate remains.
Runner
Section titled “Runner”steamwrapper-runner uses clap, anyhow, tracing and steamwrapper-core. It starts the profile’s target/args and waits according to the selected mode, without GUI, WebView, .NET, or a persistent service.
New Windows profiles explicitly use job; legacy omitted wait_mode means root. Linux retains process_group support, with no current Linux Manager. %command% is received/logged, not executed or forwarded automatically. Proton integration remains unfinished. Platform process tests and actual Steam acceptance establish different facts.
Archived Dioxus implementation
Section titled “Archived Dioxus implementation”The removed Dioxus 0.7.10 Manager, WDIO Native E2E and Rust service layer are accessible only as historical source at ca6a09e. The 2026-09-07 comparison and 2026-09-08 package inspection retain their measurements and limitations. They do not provide current build commands, supported packages, or a fallback Manager.
Toolchain and delivery
Section titled “Toolchain and delivery”mise is optional. global.json selects .NET SDK 10.0.400; Rust 1.98.1 is the local reference in the optional mise configuration. Manifests, lockfiles, packageManager and .vsconfig define applicable versions/components. Direct PowerShell/pnpm commands do not require mise.
Manager uses the Windows App SDK 2.4.0 component set, directly pinning Microsoft.WindowsAppSDK.WinUI 2.3.6, Microsoft.WindowsAppSDK.InteractiveExperiences 2.1.6 and SDK.BuildTools 10.0.26100.7705. Package versions are not the framework name “WinUI 3”. Explicit InteractiveExperiences avoids its older minimum dependency. Selected dependency versions/hashes match the original 2.4.0 umbrella-package lockfile.
Selective component references are an officially supported self-contained deployment method. Manager omits unused AI, ML, Search, Widgets and DWrite components through project references, never manual removal of published DLLs. The 2026-09-07 component-reduction record measured about 171 MiB, 457 files uncompressed. Earlier 226.23 MiB startup/memory results remain historical and were not rerun for that smaller output. Later artifacts have their own inventories; these numbers are not a promise about every current build. Official component guidance, comparison record, preview record
The preview targets Windows 11 24H2 (26100) x64, self-contained with trimming disabled. Services use net10.0; tests use MSTest 4.4.0 / Test SDK 18.9.0, with NuGet lockfiles. The Manager project is maintained directly, without alpha templates or a WinApp MSIX debug identity package. Publishing builds and validates a fresh directory before replacing old output. See Windows development for commands and publish regressions.
Node/pnpm serve brand generation and the static docs site, not desktop runtime. pnpm brand:generate / pnpm brand:check use development-only @resvg/resvg-js for canonical SVG/PNG/ICO assets. The docs/ workspace uses Astro 7.3.1 / Starlight 0.42.0; see documentation maintenance.
Daily Windows CI tests/contracts and compiles the actual Manager without packaging it. The version-tag/manual release workflow produces the complete layout with Runner/SteamWrapperRunner.exe and version/hash metadata; tags add a portable ZIP, bilingual notes and checksums for an unsigned prerelease. Rust CI preserves Linux process compatibility. A WinUI installer, signing, updater and automatic Steam Launch Options writes remain roadmap work; no Linux GUI package is advertised. See distribution for release preparation.
Rejected directions
Section titled “Rejected directions”The current product does not retain Dioxus or restore Tauri/React, Electron, a Node UI runtime, or Python runtime components. It adds no C ABI, management helper, or all-C# Runner rewrite. Windows 10, ARM64, MSIX, Linux GUI and SteamOS/Proton expansion require separate decisions and evidence; Windows x64 preview results do not establish them.