Skip to content

Testing And Releases

Riqqqque edited this page Aug 16, 2026 · 2 revisions

Testing And Releases

WindowAutoLayout is tested as source, a packaged Windows bundle, and an installed tray application. A green compilation alone is not a release approval.

Required Local Checks

From the repository root:

npm ci --no-audit --no-fund
npm audit --audit-level=moderate
npm run check
npm run build
cd src-tauri
cargo fmt --all -- --check
cargo check --all-targets
cargo test --all-targets
cargo clippy --all-targets -- -D warnings
cd ..
npm run desktop:build

Run a RustSec audit with a project-local cargo-audit binary when available. Separate maintenance warnings outside the Windows target graph from real vulnerabilities.

Install The Exact Bundle

powershell -ExecutionPolicy Bypass -File scripts\install-current.ps1 -SkipBuild

The helper verifies the installer path and SHA256, Windows uninstall entry, installed exe, installed version, and startup/tray launch smoke.

Installed Runtime Gate

Before release:

  1. Open every page at 1180x760 and the 980x640 minimum.
  2. Exercise save, capture, delete, restore, automatic toggle, and every tray command.
  3. Close to tray and confirm no owned WebView2 child remains.
  4. Sample tray-only CPU for at least 20 seconds.
  5. Confirm one WindowAutoLayout process and Below normal priority.
  6. Verify the startup Run command points to the installed exe with --startup-restore.
  7. Confirm user profiles survive the update.

Exact Placement Gate

Test a profile on mixed-scale displays, including a 4K monitor with negative desktop coordinates. Compare current DWM extended frame bounds to saved physical rectangles and require no more than one pixel of error.

Repeat after:

  • moving all windows away
  • minimizing a target
  • hiding a tray target
  • launching a fully closed target
  • changing resolution
  • moving/resizing the taskbar
  • waiting at least 30 seconds after an Electron app launches

OBS Gate

For every OBS, tray, launch, presentation, or window-action change:

  1. Use the installed build.
  2. Leave OBS running with its main window hidden in the tray.
  3. Confirm one obs64.exe process before restore.
  4. Run Restore from the tray and from the app.
  5. Do not click OBS afterward.
  6. Confirm the full OBS client paints on its own.
  7. Confirm final DWM bounds match the saved layout.
  8. Confirm no duplicate-process prompt and still one OBS process.
  9. Confirm Logs report success.

An OBS path change is not release-ready when this live installed-app case cannot be run.

Game Safety Gate

  • confirm there are no global input hooks, raw-input registrations, system hotkeys, or synthetic input calls
  • verify Automatic restore pauses while Valorant or another game/fullscreen app is foreground
  • verify a pending desktop restore cancels if the game becomes foreground again
  • confirm automatic restores do not launch closed apps or force focus
  • confirm repeated shell events coalesce into one restore
  • verify CPU returns to idle after restore

Version Surfaces

Update together:

  • package.json
  • package-lock.json
  • src-tauri/tauri.conf.json
  • src-tauri/Cargo.toml
  • src-tauri/Cargo.lock
  • src/lib/api.ts
  • examples/windowautolayout.example.json
  • CHANGELOG.md

For version 0.1.28, the release tag would be v0.1.28.

Public Release Gates

Do not create the public tag until all are true:

  • LICENSE contains final distribution terms
  • NSIS and MSI installers are Authenticode-signed and timestamped
  • the updater channel verifies signed artifacts
  • all source, dependency, installed-runtime, exact-placement, OBS, and game-safety gates pass

The GitHub workflow intentionally rejects a release tag while the pending no-redistribution license text remains.

Expected assets:

WindowAutoLayout_<version>_x64-setup.exe
WindowAutoLayout_<version>_x64-setup.exe.sha256
WindowAutoLayout_<version>_x64_en-US.msi
WindowAutoLayout_<version>_x64_en-US.msi.sha256

After publication, verify the release page, asset hashes, installer signatures, clean install, update install, startup launch, and tray-only runtime from the downloaded artifact.

Clone this wiki locally