# Maintenance
This crate is small on purpose. Its main promise is not broad Windows coverage;
it is documented behavior for the interactive desktop tasks it supports.
## Compatibility Contract
- Supported OS family: Windows 10 and Windows 11.
- Supported Rust: 1.82 and newer.
- Public API compatibility is checked with `cargo-semver-checks`.
- Non-Windows targets compile public stubs that return `Error::Unsupported`.
- Default features expose the full API; feature flags are available for smaller
dependency surfaces.
## Runtime Behavior Contract
The crate should validate inputs before starting side effects whenever practical.
User-visible behavior is documented instead of hidden:
- shell helpers may open files, folders, browsers, or registered handlers
- Explorer helpers start `explorer.exe`
- Recycle Bin helpers move or permanently delete Recycle Bin contents
- shortcut helpers create or overwrite `.lnk` and `.url` files
- elevation helpers may show UAC and start another process
- single-instance helpers hold a named mutex until the guard is dropped
See [`side-effects.md`](side-effects.md) for the longer behavior guide.
## CI Gates
GitHub Actions checks:
- MSRV compilation on Windows
- formatting
- unit tests, integration tests, and doctests
- clippy with warnings denied
- examples
- rustdoc warnings
- local Markdown links
- no-default, single-feature, and pairwise feature combinations
- package creation
- dependency advisories, licenses, duplicate versions, and source policy
- public API semver compatibility
- non-Windows stub compilation, tests, and linting
CI also runs on a weekly schedule so dependency, runner, and toolchain drift is
caught even when no code changes are active.
## Local Release Gates
`cargo xtask release-check` runs the full release verification suite. It includes
`cargo xtask release-audit`, which checks:
- `Cargo.toml` and `Cargo.lock` version agreement
- a dated changelog section for the package version
- README install snippets for the current minor line
- package contents for files that should not ship to crates.io
After publishing, the release checklist includes a docs.rs version-page check so
the published API docs are confirmed, not merely assumed.
Manual desktop behavior can be checked with:
```powershell
cargo xtask smoke
```
The smoke command runs ignored Windows desktop tests for shortcuts, Recycle Bin
behavior, and elevation state. UI-opening checks are opt-in with environment
variables so automated runs do not unexpectedly open windows or UAC prompts.
See [`overhead.md`](overhead.md) for the runtime model and dependency-surface
notes.
## What Is Not Guaranteed
This crate does not guarantee that a user's installed shell handlers support a
given verb, that Explorer is available in every account/session model, or that
service and scheduled-task environments behave like an interactive desktop. It
also does not own installer, updater, GUI framework, or package-manager policy.
When an application needs lower-level control, use the `windows` crate directly.