From 969f373558772faa71eb931b19ba22188c9c66b0 Mon Sep 17 00:00:00 2001 From: Marius Storhaug Date: Sat, 5 Sep 2026 08:30:16 +0200 Subject: [PATCH 1/3] Document PR-based release notes Co-authored-by: GitHub Copilot <198982749+Copilot@users.noreply.github.com> --- .../guides/configuring-the-pipeline.md | 20 ++- .../content/guides/versioning-and-releases.md | 5 + .../guides/writing-release-note-prs.md | 148 ++++++++++++++++++ docs/zensical.toml | 1 + 4 files changed, 170 insertions(+), 4 deletions(-) create mode 100644 docs/content/guides/writing-release-note-prs.md diff --git a/docs/content/guides/configuring-the-pipeline.md b/docs/content/guides/configuring-the-pipeline.md index b77d4cdf..dd7d9258 100644 --- a/docs/content/guides/configuring-the-pipeline.md +++ b/docs/content/guides/configuring-the-pipeline.md @@ -145,13 +145,25 @@ Publish: This produces release notes like: ```markdown -# 🚀 Add new authentication feature (#42) +# 🚀 [Feature]: Commands can authenticate without browser callbacks (#42) -This PR adds OAuth2 support with the following changes: -- Added `Connect-OAuth2` function -- Updated documentation +Commands can now authenticate in environments where a browser callback is unavailable. + +## Adopting this release + +1. Update the module to the released version. +2. Replace interactive sign-in with the device-code command where browser callbacks are unavailable. + +## Release impact + +- **Configured label:** `minor` +- **SemVer change:** Minor. +- **Version transition:** `v1.4.2` -> `v1.5.0` ``` +Use [Writing release-note pull requests](writing-release-note-prs.md) for the complete user-facing structure, +including technical details and relevant issue links. + ### Version-only release names If you prefer version numbers as release names but still want PR-based notes: diff --git a/docs/content/guides/versioning-and-releases.md b/docs/content/guides/versioning-and-releases.md index fe226002..c7be84c0 100644 --- a/docs/content/guides/versioning-and-releases.md +++ b/docs/content/guides/versioning-and-releases.md @@ -9,6 +9,11 @@ Process-PSModule orchestrates the module lifecycle through GitHub Actions. Versi requests and resolved once, in the Plan stage, before anything is built. Stable publication occurs only from a push to the configured default branch. +With the default release-note settings, the pull request title becomes the release notes heading and its description +becomes the release notes body. The release name remains the resolved version by default. Treat the selected label and +the pull request content as the final decision about the release users receive; see +[Writing release-note pull requests](writing-release-note-prs.md) for the required user-facing format. + ## Flow 1. Resolve settings and release intent. diff --git a/docs/content/guides/writing-release-note-prs.md b/docs/content/guides/writing-release-note-prs.md new file mode 100644 index 00000000..7c4639ce --- /dev/null +++ b/docs/content/guides/writing-release-note-prs.md @@ -0,0 +1,148 @@ +--- +title: Writing release-note pull requests +description: Turn a pull request into clear release notes that explain outcomes, adoption steps, and version impact. +--- + +# Writing release-note pull requests + +For the default Process-PSModule configuration, a pull request title becomes the GitHub Release notes heading and its +description becomes the release notes body. The release name is the resolved version unless +`Publish.Module.UsePRTitleAsReleaseName` changes that setting. Treat the title, description, and selected version label +as the final decision about what users receive. + +This guide extends the [MSX PR format](https://msx.no/docs/Ways-of-Working/PR-Format/) with the release transition and +adoption information required by Process-PSModule consumers. It applies to any releasable artifact: a PowerShell +module, reusable workflow, GitHub Action, library, service, or infrastructure module. + +## Before starting + +- Identify the artifact and the people or systems that use it. +- Inspect the configured version-label mapping and select the label that matches the delivered compatibility impact. + Do not assume a label name: repositories can configure their own mappings. +- Find the latest published stable version and calculate the expected SemVer transition. If another release can merge + first, describe the semantic increment and re-check the numeric transition before the pull request is ready. +- Identify every user-visible change and the steps an existing user needs to take to use it safely. + +## Steps + +1. Write the title in the [MSX PR format](https://msx.no/docs/Ways-of-Working/PR-Format/#title). Describe the + user-facing outcome, not the implementation activity. +2. Open with one concise paragraph that says what users receive and why it matters. Use present tense and active voice. +3. Group the changes by experience using `## New:`, `## Changed:`, `## Fixed:`, and, for an incompatible release, + `## Breaking Changes`. Each group explains the outcome before any implementation detail. +4. Add `## Adopting this release` after the user-facing change groups. Give the steps in the order an existing user + takes them from the currently supported version, workflow reference, configuration, or invocation. State explicitly + when no configuration, code, or usage change is needed. This is normal release adoption, not a migration. +5. Add `## Release impact`. State the configured label, the resulting SemVer effect, and the transition from the + current published version to the planned release version. Explain whether the numeric value is provisional because + it is resolved from the current published version at release time. +6. Finish with the required `Technical details` and `Relevant issues (or links)` blocks from the + [MSX PR format](https://msx.no/docs/Ways-of-Working/PR-Format/#description-structure). Technical details explain + how the outcome was delivered; they do not replace the user-facing narrative or adoption steps. + +## Release-note structure + +Use only the user-facing change headings that apply, but always include an adoption answer and release impact for a +published change. + +````markdown + + +## New: + + + +## Changed: + + + +## Fixed: + + + +## Breaking Changes + + + +## Adopting this release + +1. +2. + + + +## Release impact + +- **Configured label:** `