Version: 0.3.1
Commit: c8ada4a403c43b96780b87abc454cba51f649c60
Breaking Changes
winapp ui --jsonenvelope reshape (#511) — JSON output shapes are not backward compatible. Update any scripts/tools parsing these outputs:ui inspect --json— elements are now nested under{ depth, interactive, hideDisabled, hideOffscreen, windows: [{ hwnd, title, className, elementCount, elements: [{ ..., children: [...] }] }] }(was a flat{ elements: [...] }list). Per-elementid,depth,parentSelector, andwindowHandlefields have been removed —selectoris the public handle.ui inspect --ancestors --json— ancestors are now nested via aDepth=iparent → child chain (previously emitted as sibling roots).ui get-focused --json— emits a{ hasFocus: false }or{ hasFocus: true, element: {...} }envelope (was a barenullwhen nothing was focused).ui search --json/ui wait-for --json— internalid,parentSelector, andwindowHandlefields are scrubbed from results (top-level and nestedinvokableAncestor).
New Features
winapp runsupport for--passthrough arguments (#506) — Pass application arguments directly using--without escaping them in quotes. For example, instead of:you can now write:winapp run . --args "--my-flag value"
winapp run . -- --my-flag value- Plain progress streaming in CI and AI-agent terminals (#507) — Auto-detects environments that can't honour cursor control (GitHub Actions, Azure DevOps, Copilot CLI, Claude Code, etc.) and falls back to append-only line-buffered progress output. Real interactive terminals continue to render the animated spinner tree;
--quiet/--jsonremain silent. No new flags or env vars. ui inspect --interactiveancestor surfacing (#511) — Non-interactive ancestors are collapsed and surfaced asancestorPathon surviving descendants;+moremarkers indicate truncated subtrees in both text and JSON modes.
Bug Fixes
winapp runno longer pickscreatedump.exe(#496) — Fixed an issue wherewinapp runcould incorrectly selectcreatedump.exeover the intended application executable when multiple.exefiles existed. Detection logic is now shared withwinapp package.winapp register: accurate error for package-already-exists conflicts (#512) — HRESULT0x80073CFBwas being misreported as a Developer Mode error. The Developer Mode mapping is now correctly scoped to0x800704EC, and conflicts emit an actionable hint with the real package identity (parsed from the manifest).winapp unregister: safer per-package unregistration (#512) — Fixed two data-loss bugs: a per-package safety check that could be bypassed when multiple packages were classified together, and sibling-directory misclassification caused by a prefixStartsWithcontainment check. Rewritten as a two-pass classify-then-remove loop with segment-aware path containment.- Status output: real exception messages instead of
(null)(#512) — Failed operations now surfaceex.Message; falls back to"Operation failed without an error message."when no message is available. Stack traces are appended only at Debug log level. - NuGet version range parsing on cache-warm runs (#512) —
ParseMinimumVersionno longer silently breaks when brackets are pre-stripped (which only manifested aftergit cleanof.winappwhile the global NuGet cache still had the package). - WinAppSDK 2.0.1 forward compatibility (#512) — Supports the new major-only framework package naming (
Microsoft.WindowsAppRuntime.2instead ofMicrosoft.WindowsAppRuntime.2.0).
Compliance
- NuGet package metadata (#489) —
Microsoft.Windows.SDK.BuildTools.WinAppnow includes a compliant<Copyright>element required by Microsoft NuGet policy.
Installation Options
MSIX Installer (Recommended)
- Download
winappcli_x64.msixfor x64 orwinappcli_arm64.msixfor ARM64 - Double-click to install
- Automatically added to PATH
Standalone CLI Binaries
- Download
winappcli-x64.zipfor x64 orwinappcli-arm64.zipfor ARM64 - Extract to your desired location
- Add to PATH or run directly:
winapp.exe
NPM Package (for Electron or NodeJS)
npm install microsoft-winappcli.tgzWhat's Included
- MSIX installer packages (x64 and ARM64)
- Standalone CLI binaries (x64 and ARM64)
- NPM package for NodeJS/Electron integration