- Windows 11 x64
- .NET SDK 10.0.302 or a compatible patch in the feature band selected by
global.json - Git
- Optional: Visual Studio 2022 with the .NET desktop development workload
- Optional for MSI packaging: the WiX SDK is restored through the installer project
QuickPods is Windows-specific. WPF, Win32, shell hooks and window event hooks, Core Audio, Configuration Manager, UI Automation, registry, and MSI behavior cannot be validated on Linux or macOS.
git clone https://github.com/rimtty/QuickPods.git
Set-Location QuickPods
dotnet restore QuickPods.sln --locked-mode
dotnet restore installer/QuickPods.Setup/QuickPods.Setup.wixproj --locked-modeCommitted NuGet lock files are authoritative. Update packages intentionally and commit every affected lock file.
dotnet build QuickPods.sln -c Release --no-restore
./src/QuickPods.App/bin/Release/net10.0-windows10.0.26100.0/QuickPods.exeOnly one QuickPods instance is allowed per user session. Exit the notification-area instance before launching another build from a different path.
./build/Test-DependencyVulnerabilities.ps1
dotnet format QuickPods.sln --verify-no-changes --no-restore --severity warn
dotnet build QuickPods.sln -c Release --no-restore
dotnet test QuickPods.sln -c Release --no-build --no-restore `
--logger "trx;LogFilePrefix=quickpods" `
--results-directory TestResults `
-- RunConfiguration.TreatNoTestsAsError=true
./build/Test-RepositoryPublicReadiness.ps1CI runs the same locked restore, dependency audit, formatting, Release build, tests, and repository-publication checks on Windows.
Automated tests cannot prove every Windows integration behavior. Changes in these areas require focused local-console validation:
- Bluetooth enumeration, connect, disconnect, and default-output changes;
- taskbar placement, Start/Search interaction, DPI, monitor, and Explorer recovery;
- notification-area lifetime and explicit exit;
- Windows sign-in startup;
- MSI install, upgrade, and uninstall.
Do not infer local Bluetooth or taskbar behavior from Remote Desktop. Record the commit, Windows build, relevant driver versions, exact steps, and sanitized result in the pull request. Do not commit raw diagnostic logs merely to preserve a one-time test run.
Create a self-contained portable package:
./build/Publish-ReleaseCandidate.ps1 -Version 0.1.0-rc.1Create the per-user MSI:
./build/Publish-Installer.ps1 -Version 0.1.0-rc.1Outputs are written under ignored artifacts/ directories. See the release guide and installer guide before distributing them.
- Production projects live in
src/; experiments remain underspikes/. - Cross-process contracts live in
QuickPods.Contractsand are versioned explicitly. - Core logic should remain independent of Windows adapters when practical.
- Treat mutation boundaries as fail-closed and confirm resulting OS state.
- Never commit generated outputs, raw logs, dumps, certificates, keys, or machine-specific configuration.