Release process
This project keeps release hygiene lightweight and explicit.
What is automated
release-drafterupdates a rolling draft release onmain.- GitHub release note categories are configured in
.github/release.yml. - NuGet publication runs from
.github/workflows/publish.ymlwhen a GitHub Release is published. - Documentation site publication runs from
.github/workflows/docs.yml:- PRs build docs and upload a site artifact for inspection.
mainbuilds docs and deploys to GitHub Pages.
API docs generation policy
Generated DocFX API metadata (docs/api/*.yml) is not versioned.
- API metadata is generated during doc builds from current source projects.
docs/api/is ignored in git to avoid generated-file churn.docs/_site/is also generated output and is not versioned.
Before publishing a release
- Ensure CI is green on
main. - Confirm behavior changes are covered by tests.
- Ensure user-visible changes are clearly documented in PR descriptions.
- Add migration notes for any breaking or security-sensitive behavior.
- Verify docs and samples reflect the shipped API.
- Execute maintainer smoke checks on real Windows/macOS environments (see Manual validation).
Release notes guidance
Draft notes are grouped under practical headings:
- Added
- Changed
- Fixed
- Security
- Docs / Maintenance
To improve draft quality, apply clear PR labels (feat, fix, security, docs, etc.).
Use skip-release-notes (or release:skip) for PRs that should be omitted from user-facing notes.
Publish trigger
NuGet publication is explicit and GitHub-native:
- publish a GitHub Release (not just a tag), or
- run the publish workflow manually via
workflow_dispatch.
The publish workflow restores, builds, tests, packs, and then pushes generated .nupkg files with --skip-duplicate.
Symbol packages are not pushed by this workflow.
Docs trigger and inspection
Documentation workflow behavior:
- On pull requests to
main, docs build runs and uploads adocs-siteartifact. - On push to
main(or manual docs dispatch), docs build runs and deploys to GitHub Pages.
Maintainers can inspect the docs-site artifact to verify output before merge/release.
One-time setup
- Configure NuGet Trusted Publishing for the repository.
- In nuget.org, create a Trusted Publisher for
Sofiane-77/Threshand scope it to.github/workflows/publish.yml. - Keep
id-token: writepermission enabled in the publish workflow. - Add repository variable
NUGET_TRUSTED_PUBLISHER_PROFILEwith the exact NuGet profile name used byNuGet/login@v1.
- In nuget.org, create a Trusted Publisher for
- Ensure repository maintainers use release labels on PRs to keep draft notes well categorized.
- Recommended labels:
feat,fix,security,docs,maintenance,dependencies,chore. - Optional exclusion labels:
skip-release-notesorrelease:skip.
- Recommended labels:
- Enable GitHub Pages in repository settings with GitHub Actions as the source.
- Keep GitHub Actions enabled for
mainand release events.
Versioning guidance
- Follow SemVer intent.
- Patch: fixes and non-breaking polish.
- Minor: additive APIs and non-breaking improvements.
- Major: breaking API or behavior shifts.
Release notes quality bar
Each release should state:
- what changed,
- why it changed,
- whether there is a migration impact,
- and any known limitations.