Skip to content
Merged
Show file tree
Hide file tree
Changes from 12 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
141 changes: 89 additions & 52 deletions .github/prompts/createprs-for-preview.prompt.md
Original file line number Diff line number Diff line change
@@ -1,62 +1,94 @@
# Create PRs for .NET 10 RC 1
# Create PRs for .NET Preview or RC

Use this workflow to create one PR per release-notes file for .NET 10 RC 1.
Use this workflow to create one PR per release-notes file for a specific .NET Preview or RC milestone. You will supply three inputs when you invoke it:

Fixed settings:
- DOTNET_VERSION (major only, e.g. 10, 11)
- MILESTONE_KIND (`preview` or `rc`)
- MILESTONE_NUMBER (preview: 1–7, rc: 1–2)

- Version Major: 10
- Version Path: 10.0
- Milestone Kind: `rc`
- Milestone Number: `1`
PR numbers and historical references remain concrete; only version and milestone values change per cycle.

Derived values:
## Sample Inputs (Example)

- Release notes folder: `release-notes/10.0/preview/rc1`
- Base branch: `dotnet10-rc1`
- Per-file working branch: `dotnet10-rc1-{name}`
- Milestone label: `RC 1`
Example below uses: DOTNET_VERSION=10, MILESTONE_KIND=rc, MILESTONE_NUMBER=2 (".NET 10 RC 2"). Replace these values when running for a different milestone.

Process (repeat per file in the RC1 folder):
## Runtime Inputs (provide these when invoking)

1. Create a new branch from the base branch `dotnet10-rc1` with name `dotnet10-rc1-{name}`
1. Modify the corresponding file by replacing any "TBD" placeholder text with: `Something about the feature`.
1. Validate markdown formatting using markdownlint with the repository's settings (`.github/linters/.markdown-lint.yml`).
1. Commit with message: `Update {name} for RC 1`.
1. Push the branch to the remote repository.
1. Create a pull request with:
Required:

- Title: `Update {name} for RC 1`
- Body: `Please update the release notes here as needed for RC 1.\n\n/cc @{assignees}`
- DOTNET_VERSION (major) – e.g. 10
- MILESTONE_KIND – `preview` or `rc`
- MILESTONE_NUMBER – preview: 1–7, rc: 1–2

1. Assign the PR using GitHub CLI: `gh pr edit <PR_NUMBER> --add-assignee <username>` (use the first listed person for files with multiple assignees)
1. Switch back to the base branch `dotnet10-rc1` and repeat for the next file.
Derived (logic performed mentally / by assistant at run time):

Notes:
- Version Path = `${DOTNET_VERSION}.0`
- Milestone Label = if preview → `Preview ${MILESTONE_NUMBER}` else `RC ${MILESTONE_NUMBER}`
- Milestone Prefix = preview → `p${MILESTONE_NUMBER}` ; rc → `rc${MILESTONE_NUMBER}`
- Base Branch = `dotnet${DOTNET_VERSION}-${MilestonePrefix}` (example: `dotnet10-rc2`)
- Working Branch Pattern = `dotnet${DOTNET_VERSION}-${MilestonePrefix}-{name}`
- Release Notes Folder = `release-notes/${DOTNET_VERSION}.0/preview/${MilestonePrefix}` (historical path keeps `preview/rcX` for RC)

- All RC 1 release notes are in the `release-notes/10.0/preview/rc1/` directory.
Example (NOT to be edited into the file): DOTNET_VERSION=10, MILESTONE_KIND=rc, MILESTONE_NUMBER=2 ⇒ label `RC 2`, prefix `rc2`.

## Process (assistant substitutes variables at execution time)

1. Create a new branch from the base branch: `git switch -c dotnet${DOTNET_VERSION}-${MilestonePrefix}-{name} origin/dotnet${DOTNET_VERSION}-${MilestonePrefix}`
1. Modify the file content. If the file contains a neutral/no-new-features sentence such as `This ${Milestone Label} release does not contain new ...` (or the equivalent for a specific RC) replace that entire sentence block with the scaffold below. If no neutral sentence exists, insert the scaffold directly below the heading (only once; do not duplicate it).

```markdown
Here's a summary of what's new in <Product/Area> in this ${Milestone Label} release:

- [Feature](#feature)

## Feature

Feature summary
```

1. Run markdown lint: `npx markdownlint --config .github/linters/.markdown-lint.yml release-notes/${DOTNET_VERSION}.0/preview/${MilestonePrefix}/{name}`
1. Commit: `Update {name} for ${Milestone Label}`
1. Push the branch
1. Create a pull request with title `Update {name} for ${Milestone Label}` and body:

```text
Please update the release notes here as needed for ${Milestone Label}.

/cc @{assignees}
```

1. Assign the PR (first listed person if multiple): `gh pr edit <PR_NUMBER> --add-assignee <username>`
1. Switch back to `dotnet${DOTNET_VERSION}-${MilestonePrefix}` and continue with the next file.

## Notes

- All milestone release notes live under `release-notes/${DOTNET_VERSION}.0/preview/${MilestonePrefix}/`.
- Keep the same file-to-assignee mapping unless explicitly changed.
- Use GitHub CLI for assignments as it's more reliable than the API: `gh pr edit <PR_NUMBER> --add-assignee <username>`
- For files with multiple assignees, assign to the first listed person only.
- Replace "TBD" placeholders rather than adding content to avoid duplication.
- Run markdownlint validation before committing: The repository uses `.github/linters/.markdown-lint.yml` for linting rules.
- Ensure all markdown files have proper trailing newlines and follow the established formatting standards.

## Assignment Table (based on Preview 7 PRs)

| File | Assignee(s) | Based on Preview 7 PR |
|------|-------------|-----------------------|
| aspnetcore.md | @danroth27 | #10023 |
| containers.md | @lbussell | #9995 |
| csharp.md | @BillWagner @MadsTorgersen @jcouv | #9996 |
| dotnetmaui.md | @davidortinau | #9997 |
| efcore.md | @roji | #9998 |
| fsharp.md | @T-Gro | #9999 |
| libraries.md | @richlander @tarekgh | #10000 |
| runtime.md | @ericstj @kunalspathak @AndyAyersMS | #10001 |
| sdk.md | @baronfel @mariam-abdulla @nohwnd @DamianEdwards | #10002 |
| visualbasic.md | @BillWagner | #10003 |
| winforms.md | @merriemcgaw @KlausLoeffelmann | #10004 |
| wpf.md | @harshit7962 @adegeo | #10005 |
- Use GitHub CLI for assignee setting; it's more reliable than reviewer assignment for this workflow.
- Always replace placeholders rather than appending text to avoid duplicates.
- Ensure trailing newline, consistent heading style, and no stray whitespace.
- Optional: for JSON meta changes run `npx prettier --check "release-notes/${DOTNET_VERSION}.0/**/*.json"` (do not auto-fix when only reporting).

No need to edit this file between milestones. Provide DOTNET_VERSION, MILESTONE_KIND, MILESTONE_NUMBER each time; assistant derives the rest. Leave PR number references and assignment history intact unless ownership changes.

## Assignment Table (updated using .NET 10 RC 1 assignees)

The table below reflects the assignee(s) actually used on the most recent component PRs for .NET 10 RC 1 (PRs #10049–#10060). Use these as the current default owners for upcoming milestones unless ownership changes again. Notable change: libraries and runtime primary owners effectively swapped compared to Preview 7 (libraries → @ericstj, runtime → @richlander). Additional previously listed secondary owners were trimmed where they were not present as assignees on the RC 1 PR.

| File | Assignee(s) | .NET 10 RC 1 PR |
|------|-------------|-----------------|
| aspnetcore.md | @danroth27 | #10049 |
| containers.md | @lbussell | #10050 |
| csharp.md | @BillWagner | #10051 |
| dotnetmaui.md | @davidortinau | #10052 |
| efcore.md | @roji | #10053 |
| fsharp.md | @T-Gro | #10054 |
| libraries.md | @ericstj @artl93 | #10055 |
| runtime.md | @richlander | #10056 |
| sdk.md | @baronfel | #10057 |
| visualbasic.md | @BillWagner | #10058 |
| winforms.md | @KlausLoeffelmann @merriemcgaw | #10059 |
| wpf.md | @harshit7962 @adegeo | #10060 |

Here are the files to process one at a time:

Expand All @@ -75,9 +107,14 @@ Here are the files to process one at a time:

## Master Consolidation PR

After creating all individual component PRs, create a master consolidation PR:
After all component PRs are opened for the milestone, create a consolidation PR:

1. Source: `dotnet${DOTNET_VERSION}-${MilestonePrefix}` → Target: `main`
2. Title: `Add release notes for .NET ${DOTNET_VERSION} ${Milestone Label} across various components`
3. Body sections:
- Intro sentence
- Bullet list of component PRs (e.g. `- ASP.NET Core: #<PR>`)
- CC release management (e.g. `@leecow @rbhanda @victorisr`)
4. Match the structure used previously (see Preview 7 consolidation PR #10006) for consistency.

1. Create a PR from `dotnet10-rc1` to `main` with:
- Title: `Add release notes for .NET 10 RC 1 across various components`
- Body: Include references to all component PRs and cc the release management team
- Pattern: Follow the same structure as the Preview 7 master PR (#10006)
When adapting for another milestone, update only the branch name, title milestone label, and intro sentence.
65 changes: 52 additions & 13 deletions .github/prompts/scaffoldpreview.prompt.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,63 @@
# Scaffold Preview
# Scaffold Release Notes Folder (Preview or RC)

Create a new folder in the releasenotes/10.0/preview folder for preview7. Inside of it duplicate the folder structure and files that are in the preview6 folder and for each of the files use the following template based on the names of the product that the file is in. You can use the previous file as a reference for the content. Ignore the api-diff folder. Ignore the release.json file.
This prompt guides creating the next milestone release-notes folder for a .NET Preview or RC. Supply three inputs when invoking it (no file edits required between runs):

Here is a sample of what aspnetcore.md should look like:
- DOTNET_VERSION (major, e.g. 10, 11)
- MILESTONE_KIND (`preview` or `rc`)
- MILESTONE_NUMBER (preview: 1–7, rc: 1–2)

```markdown
# ASP.NET Core in .NET 10 Preview 7 - Release Notes
Only these values should change between cycles. Keep concrete links and historical references intact unless they genuinely change.

Here's a summary of what's new in ASP.NET Core in this preview release:
## Runtime Derivations

- [Feature](#feature)
Given inputs:

ASP.NET Core updates in .NET 10:
- Milestone Label = if MILESTONE_KIND=preview → `Preview ${MILESTONE_NUMBER}` else `RC ${MILESTONE_NUMBER}`
- Milestone Prefix = preview → `p${MILESTONE_NUMBER}` ; rc → `rc${MILESTONE_NUMBER}`
- Base Branch = `dotnet${DOTNET_VERSION}-${MilestonePrefix}`
- Target Folder = `release-notes/${DOTNET_VERSION}.0/preview/${MilestonePrefix}`

- [What's new in ASP.NET Core in .NET 10](https://learn.microsoft.com/aspnet/core/release-notes/aspnetcore-10.0) documentation.
- [Breaking changes](https://docs.microsoft.com/dotnet/core/compatibility/10.0#aspnet-core)
- [Roadmap](https://github.com/dotnet/aspnetcore/issues/59443)
Example (not baked in): DOTNET_VERSION=10, MILESTONE_KIND=rc, MILESTONE_NUMBER=2 ⇒ Label `RC 2`, Prefix `rc2`.

## Steps

1. Navigate to `release-notes/${DOTNET_VERSION}.0/preview/`.
1. Duplicate the previous milestone folder (prior prefix → new prefix, e.g. `rc1` → `${MilestonePrefix}` or `p6` → `${MilestonePrefix}`).
1. Remove (do NOT copy):
- `api-diff` directory (if present) – will be regenerated later.
- `release.json` – create a fresh one if required by process.
1. For each component markdown file, update the heading and milestone label only; preserve existing anchor structure.
1. If there are no new feature items yet, insert a neutral placeholder sentence (e.g. `This ${Milestone Label} release does not introduce new ${Product} features.`) instead of a generic "Something about the feature" line. Avoid duplicating placeholder lines.
1. Run markdown lint: `npx markdownlint --config .github/linters/.markdown-lint.yml release-notes/${DOTNET_VERSION}.0/preview/${MilestonePrefix}/*.md`.
1. Commit on the base milestone branch (`dotnet${DOTNET_VERSION}-${MilestonePrefix}`) with message: `Scaffold .NET ${DOTNET_VERSION} ${Milestone Label} release notes folder`.

## Sample File Template (aspnetcore.md – dynamic)

```markdown
# ASP.NET Core in .NET ${DOTNET_VERSION} ${Milestone Label} - Release Notes

## Feature
Here's a summary of what's new in ASP.NET Core in this release (add or remove sections as needed).

Something about the feature
ASP.NET Core updates in .NET ${DOTNET_VERSION}:

- [What's new in ASP.NET Core in .NET ${DOTNET_VERSION}](https://learn.microsoft.com/aspnet/core/release-notes/aspnetcore-${DOTNET_VERSION}.0) documentation.
- [Breaking changes](https://docs.microsoft.com/dotnet/core/compatibility/${DOTNET_VERSION}.0#aspnet-core)
- [Roadmap](https://github.com/dotnet/aspnetcore/issues/59443)

This ${Milestone Label} release does not contain new ASP.NET Core feature additions.
```

## Conventions (stable across milestones)

- Top-level heading: `# <Product> in .NET <Major> <Milestone Label> - Release Notes`
- Use sentence case for section headings after the H1.
- Keep relative links; avoid hardcoding version unless the doc page is versioned (as above for 10.0 links).
- One blank line between blocks; file ends with a newline.

## After Scaffolding

- Proceed with per-file PR creation using the separate PR creation prompt.
- Do not add real feature text until component owners update their individual PRs.
- Run a Prettier check if any JSON metadata was added: `npx prettier --check "release-notes/${DOTNET_VERSION}.0/**/*.json"`.

No file edits needed between milestones—provide inputs at execution. Leave roadmap issue numbers unless they genuinely change upstream.
40 changes: 40 additions & 0 deletions release-notes/10.0/preview/rc2/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# .NET 10 RC 2 - Release Notes

.NET 10 RC 2 released on <REPLACE_WITH_RELEASE_DATE>. Find more information on new features released in .NET 10 RC 2 by browsing through the release notes below:

- [Libraries](./libraries.md)
- [Runtime](./runtime.md)
- [SDK](./sdk.md)

## Languages

- [C#](./csharp.md)
- [F#](./fsharp.md)
- [Visual Basic](./visualbasic.md)

## Workloads, Libraries, & More

- [.NET MAUI](./dotnetmaui.md)
- [ASP.NET Core](./aspnetcore.md)
- [Container images](./containers.md)
- [EF Core & Data](./efcore.md)
- [Windows Forms](./winforms.md)
- [WPF](./wpf.md)

## Get Started

Instructions on getting started with .NET 10 can be found in the [getting started guide](../../get-started.md). Installers and binaries for .NET 10 RC 2 can be found [here on GitHub](./10.0.0-rc.2.md).

## Stay up-to-date

You can find a detailed overview of all new features in .NET 10:

- [What's new in .NET 10](https://learn.microsoft.com/dotnet/core/whats-new/dotnet-10/overview)
- [What's new in C# 14](https://learn.microsoft.com/dotnet/csharp/whats-new/csharp-14)
- [What's new in .NET MAUI](https://learn.microsoft.com/dotnet/maui/whats-new/dotnet-10)
- [What's new in ASP.NET Core](https://learn.microsoft.com/aspnet/core/release-notes/aspnetcore-10.0)
- [What's new in Entity Framework Core](https://learn.microsoft.com/ef/core/what-is-new/ef-core-10.0/whatsnew)
- [What's new in Windows Forms](https://learn.microsoft.com/dotnet/desktop/winforms/whats-new/net100)
- [What's new in WPF](https://learn.microsoft.com/dotnet/desktop/wpf/whats-new/net100)

The latest .NET 10 release is always available at [dotnet.microsoft.com](https://dotnet.microsoft.com/download/dotnet/10.0) and [.NET 10 Releases](../../README.md).
18 changes: 18 additions & 0 deletions release-notes/10.0/preview/rc2/aspnetcore.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# ASP.NET Core in .NET 10 RC 2 - Release Notes

This release was focused on bug fixes and other quality improvements.

ASP.NET Core updates in .NET 10 RC2:

- [What's new in ASP.NET Core in .NET 10](https://learn.microsoft.com/aspnet/core/release-notes/aspnetcore-10.0) documentation.
- [Breaking changes](https://docs.microsoft.com/dotnet/core/compatibility/10.0#aspnet-core)
- [Roadmap](https://aka.ms/aspnet/roadmap)

.NET 10 RC2:

- [Discussion](https://aka.ms/dotnet/10/rc2)
- [Release notes](README.md)

## Community contributors

Thank you everyone who tested and provided feedback on the .NET 10 Release Candidate!
3 changes: 3 additions & 0 deletions release-notes/10.0/preview/rc2/containers.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Containers in .NET 10 RC 2 - Release Notes

This RC 2 release does not contain new Container image features.
8 changes: 8 additions & 0 deletions release-notes/10.0/preview/rc2/csharp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# C# 14 updates in .NET 10 RC 2 - Release Notes

This RC 2 release does not contain new C# features.

C# 14 updates:

- [What's new in C# 14](https://learn.microsoft.com/dotnet/csharp/whats-new/csharp-14) documentation
- [Breaking changes in C# 14](https://learn.microsoft.com/dotnet/csharp/whats-new/breaking-changes/compiler%20breaking%20changes%20-%20dotnet%2010)
Loading