win-desktop-utils 0.5.7

Windows desktop helpers for shell, shortcuts, app data, elevation, and single-instance Rust apps
Documentation
# Contributing

Thanks for improving `win-desktop-utils`.

## Scope

This crate is intentionally small. Contributions should fit Windows desktop app
workflows and keep new APIs narrow enough to document and test fully.

Good fits include:

- shell and Explorer helpers
- shortcut helpers
- app-data and known-folder helpers
- single-instance helpers
- elevation helpers
- documentation, examples, tests, CI, and release automation

Please avoid broad framework features or unrelated Windows APIs unless there is a clear desktop app workflow behind them.

## Local Checks

Run these before opening a PR:

```powershell
cargo xtask docs-check
cargo xtask feature-check
cargo xtask release-audit
cargo fmt --all -- --check
cargo test
cargo clippy --all-targets --all-features -- -D warnings
cargo check --examples
cargo package
cargo deny check
```

Before release, run the full local gate:

```powershell
cargo xtask release-check
```

For manual Windows desktop behavior, run:

```powershell
cargo xtask smoke
```

The smoke command is intentionally ignored by default test runs because some
checks can touch the desktop shell. See [`docs/testing.md`](docs/testing.md) for
UI and elevation opt-in variables.

`cargo xtask feature-check` covers the empty feature set, every individual public
feature, and every pairwise public feature combination.

If you change cross-platform behavior, also run:

```powershell
rustup target add x86_64-unknown-linux-gnu
cargo check --target x86_64-unknown-linux-gnu --all-targets --all-features
cargo check --target x86_64-unknown-linux-gnu --no-default-features
```

The Linux CI job runs the non-Windows unit tests natively.

If you change public API, also run:

```powershell
cargo semver-checks check-release
```

## New API Criteria

Before proposing a new public API, check it against [`docs/design.md`](docs/design.md).

A new API should have:

- a common interactive Windows desktop workflow behind it
- a clear feature flag home
- explicit input validation before side effects start
- rustdoc explaining purpose, errors, and side effects
- Markdown docs when the behavior has user-visible consequences
- tests that cover validation failures
- non-Windows stub behavior returning `Error::Unsupported`
- an example when users are likely to copy the workflow

APIs that only expose another Win32 call without a common workflow are usually
outside this crate's scope.

## MSRV

The minimum supported Rust version is `1.82`. Changes should keep:

```powershell
cargo +1.82.0-x86_64-pc-windows-msvc check --all-targets
```

working on Windows.

## Release Notes

User-visible changes should be added to `CHANGELOG.md`. Release steps live in `RELEASE.md`.

## Conduct

By participating, you agree to follow the project [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md).