Skip to content

[RELEASE] Promote dev to main#213

Merged
mpaulosky merged 23 commits into
mainfrom
dev
Apr 30, 2026
Merged

[RELEASE] Promote dev to main#213
mpaulosky merged 23 commits into
mainfrom
dev

Conversation

@mpaulosky

@mpaulosky mpaulosky commented Apr 26, 2026

Copy link
Copy Markdown
Owner

Release Checklist

  • Latest dev CI is green
  • Release scope reviewed
  • Breaking changes documented
  • Release notes drafted

Scope

Release Notes

  • Complete the xUnit v3 rollout across the remaining test projects, including AppHost, Web, Web.Tests.Bunit, and Web.Tests.Integration
  • Carry forward the Playwright/AppHost test fixes needed to run the Aspire + browser end-to-end suite cleanly in CI
  • Remove the unused central xunit package reference and standardize on xunit.v3 across the repo test surface
  • Refresh GitHub Actions dependencies and workflow scripts, including the Dependabot auto-merge workflow and safer workflow output handling
  • Add Sprint 7 and Sprint 8 ADRs/retrospectives documenting the xUnit v3 migration rollout

Notes

  • PR Reconcile main into dev before release #212 was merged with a merge commit specifically to preserve main ancestry in dev before this promotion.
  • The latest dev CI on commit 02cf370 completed green before this checklist was updated.
  • Release-readiness review found no blockers for promoting this payload to main.

mpaulosky and others added 23 commits April 24, 2026 08:45
Blog posts, README, and docs/index.html updated for v1.2.0. Reviewed and approved by Aragorn.
Fixes 3 review blockers identified in PR #126 review:

- docs/index.html: npm run css:watch → npm run tw:watch (matches root package.json)
- README.md + kickoff blog post: Aspire 13.2.2 → 13.2.3 (matches Directory.Packages.props)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
## Summary

Adds `workflow_dispatch` trigger to `squad-mark-released.yml` so the
Done → Released project board migration can be run manually.

## Problem

When v1.2.0 was published, `squad-mark-released.yml` did not fire —
likely because the release event and workflow landing on `main` had a
timing race. With no manual trigger, the only recovery path was direct
GraphQL mutations.

## Changes

- Add `workflow_dispatch: {}` trigger
- Update job `if` condition to always run on manual dispatch (skip the
pre-release/draft guard for `workflow_dispatch` events)
- Use `context.payload.release?.tag_name ?? 'manual dispatch'` to
prevent null-ref in the summary notice

## Testing

After merge to `dev` → `main`, the workflow will appear under **Actions
→ Squad Mark Released → Run workflow** for manual recovery use.

---
> ⚠️ This PR should be fast-tracked to `main` so `dev` and `main` stay
in sync.

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Boromir <boromir@squad.dev>
Closes #130

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Closes #133

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
## Sprint 6: Code Quality

**Goal:** Eliminate analyzer warnings, enforce internal visibility on
Web feature types, expand test coverage, and migrate Unit.Tests into
Web.Tests.

---

## Merged Feature PRs

- Closes #137 — PR #144 — fix(quality): rename `ct` →
`cancellationToken` in all MediatR handlers
- Closes #138 — PR #145 — test: add unit tests for BlogPost, Result, and
ValidationBehavior (42 tests)
- Closes #139 — PR #146 — test: add unit tests for UserManagementHandler
(16 tests)
- Closes #140 — PR #147 — fix(quality): make Web feature types
`internal` (CA1515, ~28 types)
- Closes #141 — PR #148 — test: add unit tests for BlogPostMappings (22
tests)
- Closes #142 — PR #149 — fix(quality): add ConfigureAwait(false) and
specific exception catches
- Closes #143 — PR #150 — fix(quality): address Domain and
ServiceDefaults analyzer warnings
- Closes #151 — PR #152 — feat(tests): migrate Unit.Tests → Web.Tests
and remove Unit.Tests project

---

## Test Summary

- **80+ new tests** added across all PRs
- **105 Web.Tests passing** (0 failures)
- `DynamicProxyGenAssembly2` added to `InternalsVisibleTo` in Web.csproj
for NSubstitute support

## Notable Changes

- `Unit.Tests` project removed; all tests now live in `Web.Tests`
- ~28 Web feature types changed from `public` to `internal` (CA1515
compliance)
- All MediatR handler parameters renamed from `ct` to
`cancellationToken` for clarity
- `ConfigureAwait(false)` applied to all async calls in service layer
- Domain and ServiceDefaults analyzer warnings resolved

---

## Checklist

- [x] All sprint issues closed (#137#143, #151)
- [x] CI green (0 build errors)
- [x] 105 Web.Tests passing
- [x] Milestone at 100%

---------

Co-authored-by: Boromir <boromir@squad.dev>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Closes milestone: Sprint 7 — xUnit v3 Pilot (Domain.Tests)

## Sprint Summary
- ✅ Added xUnit v3 packages (v3.2.2) to Directory.Packages.props
alongside xUnit v2
- ✅ Domain.Tests migrated to xUnit v3: 42/42 tests passing
- ✅ Zero source-level breaking changes required
- ✅ CI validation complete — xUnit v3 fully compatible
- ✅ ADR recorded with performance analysis (5–15% improvement projected)
- ✅ Retrospective template prepared for Phase 2 validation

## Issues Closed
- Closes #162
- Closes #163
- Closes #164
- Closes #165
- Closes #166
- Closes #167

## Checklist
- [x] All sprint issues closed
- [x] CI green
- [x] Milestone at 100%
- [x] All PRs merged to sprint branch

---------

Co-authored-by: Boromir <boromir@squad.dev>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
## Sprint 8 Retrospective — xUnit v3 Architecture.Tests Pilot

Closes #181

**Working as Aragorn (Lead Developer)**

---

## Summary

This PR delivers the Sprint 8 retrospective document for the xUnit v3
Architecture.Tests pilot. It captures what went well, areas for
improvement, key learnings, and recommendations for completing the xUnit
v3 rollout across the MyBlog test suite.

## Files Changed

- `docs/sprint-8-xunit-v3-pilot-retro.md` — Full retrospective document
- `.squad/agents/aragorn/history.md` — Aragorn's learnings from Sprint 8
appended

## Retrospective Highlights

### What Went Well
- Wave 1 PRs (#176, #177) merged with **zero rework**
- CI passed **immediately** after package update
- NetArchTest `[Fact]` attributes require **zero changes** for xUnit v3
— easiest migration surface in the test suite
- Wave dependency chain worked perfectly — 0 blocking issues between
waves
- Side effect: Boromir fixed a CI gap where `Domain.Tests` was missing
from `squad-preview.yml`

### Key Metrics
| Metric | Value |
|---|---|
| Sprint issues | 6 (#176#181) |
| Architecture.Tests passing | 11 tests @ 72ms |
| Domain.Tests passing | 42 tests |
| Combined passing | 53+ tests |
| Rework PRs | 0 |
| Blocking inter-wave issues | 0 |

### Key Decisions Referenced
- `boromir-xunit-v3-package-strategy.md` — meta-package pattern, CI gap
fix
- `gimli-xunit-v3-migration-pattern.md` — AAA comment pattern for
NetArchTest
- `aragorn-xunit-v3-rollout-strategy.md` (local inbox) — rollout
ordering, standardization

### Recommendations
1. **Blazor.Tests → Sprint 9** (bUnit has explicit xUnit v3 support)
2. **Unit.Tests → Sprint 9–10** (simpler migration surface)
3. **New test projects start with xUnit v3** — no more v2 projects
4. **Integration.Tests** requires a separate spike (IAsyncLifetime +
Docker concerns)
5. **Capture CI baseline metrics before migration** (Sprint 7 gap —
don't repeat)

---

## xUnit v3 Rollout Status

| Test Project | Status | Sprint |
|---|---|---|
| `tests/Domain.Tests` | ✅ Migrated | Sprint 7 |
| `tests/Architecture.Tests` | ✅ Migrated | Sprint 8 |
| `tests/Blazor.Tests` | 🔜 Recommended next | Sprint 9 |
| `tests/Unit.Tests` | 🔜 Planned | Sprint 9–10 |
| `tests/Integration.Tests` | ⚠️ Assess separately | TBD |

---------

Co-authored-by: Boromir <boromir@squad.dev>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…189)

## Problem
Sprint 6's migration of Unit.Tests to Web.Tests left 2 test files
orphaned:
- `tests/Unit.Tests/Data/BlogPostMappingsTests.cs` (~22 tests)
- `tests/Unit.Tests/Handlers/UserManagementHandlerTests.cs` (~16 tests)

These files were never compiled because Unit.Tests.csproj was deleted
during the migration. Result: ~38 test cases invisible to coverage
reporting.

**Current coverage:** 77.5% (threshold: 80%) — blocked from merge

## Solution
- Move 2 orphaned test files to Web.Tests
- Delete empty tests/Unit.Tests/ directory
- Restore 38 test cases to coverage measurement

## Verification
✅ Web.Tests compiles with moved files (0 errors)
✅ All 127 tests in Web.Tests pass

## Expected Outcome
Coverage restored to 80%+ and unblocks Sprint 9

---------

Co-authored-by: Boromir <boromir@squad.dev>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Aragorn gate: ✅ OPEN (xUnit v3 pattern proven via Sprint 7–8 pilots)
- Gimli plan: Issue #190, 127 tests across 3 phases (package → API → verify)
- Pippin docs: Session log created (not committed per .gitignore)
- Inbox: No new decisions this round

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ix indentation

- Upgrade xunit → xunit.v3 in Web.Tests.csproj
- Remove coverlet.msbuild (not used with v3); keep coverlet.collector
- Add xunit.runner.json with parallelism settings matching Domain.Tests
- Fix file headers: 'Unit.Tests' → 'Web.Tests' across all affected files
- Remove duplicate old-format header from ResultTests.cs
- Add AAA pattern (// Arrange, // Act, // Assert) to all test methods lacking them
- Fix indentation in 4 handler test files (entire class body was at col 0)
- All 127 tests pass

Closes #190

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ration

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Completes Sprint 9 Web.Tests xUnit v3 migration.

## Changes
- Upgrade xUnit package from v2 to v3 meta-package
- Update all 15 test file headers (Unit.Tests → Web.Tests)
- Add AAA comments to ~77 test methods (Arrange/Act/Assert)
- Fix indentation in 4 handler test files
- Add xunit.runner.json with parallelism configuration
- Remove coverlet.msbuild (incompatible with xUnit v3 runner)

## Test Results
- All 127 Web.Tests pass ✅
- Runtime: 122ms
- Coverage: 80%+ (restored by PR #189)

Closes #190

Co-authored-by: Gimli <gimli@squad.dev>
## Overview
Completes Sprint 10 Task #193: Migrate Web.Tests.Bunit test suite from
xUnit v2 to xUnit v3, following the proven pattern from Sprint 9's
Web.Tests migration.

## Changes
- **Package Upgrade:** xunit v2 → xunit.v3 (v3.2.2)
- **Build Configuration:** Added coverlet.msbuild for code coverage
tracking
- **Test Runner:** Created xunit.runner.json with parallelization
enabled (matches Sprint 9 pattern)
- **File Headers:** Updated 6 test files with consistent
'Web.Tests.Bunit' namespace references
- **Test Structure:** Validated all 61 bUnit tests follow AAA
(Arrange-Act-Assert) pattern

## Testing & Validation
✅ **Debug Build:** 61/61 tests passed (439 ms)
✅ **Release Build:** 61/61 tests passed (486 ms)
✅ **Gate 3 (Full Suite):** 261/261 tests passed across all projects
  - Architecture.Tests: 11/11 ✅
  - Domain.Tests: 42/42 ✅
  - Web.Tests: 127/127 ✅ (Sprint 9 — verified stable)
  - AppHost.Tests: 20/20 ✅ (Integration tests)
✅ **Pre-Push Hooks:** All gates passed (0–4)

## No Regressions
- Web.Tests migration (Sprint 9) remains stable: 127/127 passing
- Architecture.Tests and Domain.Tests fully passing
- Integration tests functioning correctly

## Files Modified
- tests/Web.Tests.Bunit/Web.Tests.Bunit.csproj
- tests/Web.Tests.Bunit/xunit.runner.json (NEW)
- tests/Web.Tests.Bunit/Components/RazorSmokeTests.cs
- tests/Web.Tests.Bunit/Components/Layout/NavMenuTests.cs
- tests/Web.Tests.Bunit/Components/Theme/ThemeProviderTests.cs
- tests/Web.Tests.Bunit/Components/Theme/ThemeSelectorTests.cs
- tests/Web.Tests.Bunit/Features/ProfileTests.cs
- tests/Web.Tests.Bunit/Testing/TestAuthorizationService.cs

Closes #193

Co-authored-by: Boromir <boromir@squad.dev>
## Summary

Migrates `tests/Web.Tests.Integration` from xUnit v2 to xUnit v3
(3.2.2), matching the pattern already established by `Web.Tests` and
`Web.Tests.Bunit`.

Working as Gimli (Tester)

Closes #199

---

## Changes

| File | Change |
|------|--------|
| `Web.Tests.Integration.csproj` | `xunit` → `xunit.v3`; runner JSON
item: `<None Update>` → `<Content Include>` |
| `IntegrationTest1.cs` | **Deleted** — stale Aspire starter template,
all methods commented out |
| `MongoDbFixture.cs` / `RedisFixture.cs` | `IAsyncLifetime`: `async
Task` → `async ValueTask` (xUnit v3 requirement); file headers fixed |
| `BlogPostIntegrationCollection.cs` / `RedisCachingCollection.cs` |
File headers fixed |
| `MongoDbBlogPostRepositoryTests.cs` | File header fixed; all async
calls thread `TestContext.Current.CancellationToken` |
| `BlogPostCacheServiceTests.cs` | File header fixed; all async calls
thread `TestContext.Current.CancellationToken` |

## xUnit v3 migration notes

- **`IAsyncLifetime`** now requires `ValueTask` for `InitializeAsync`
and `DisposeAsync` — fixtures updated accordingly.
- **`xUnit1051`** (use `TestContext.Current.CancellationToken`) resolved
by threading `ct` through all repository and cache service calls. All
methods already accepted `CancellationToken` as an optional parameter —
no production code changes required.
- **Runner JSON settings preserved**: `parallelizeAssembly: false` /
`parallelizeTestCollections: true` kept to avoid Docker container
conflicts during parallel collection runs.

## Verification

All pre-push gates passed:
- ✅ Release build (0 errors)
- ✅ Unit/arch tests: 241 passed
- ✅ **Integration tests: 12/12 passed** (MongoDB + Redis via
Testcontainers)

---------

Co-authored-by: Boromir <boromir@squad.dev>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ions group (#196)

Bumps the all-actions group with 1 update:
[dotnet-sdk](https://github.com/dotnet/sdk).

Updates `dotnet-sdk` from 10.0.202 to 10.0.203
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/dotnet/sdk/commits">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=dotnet-sdk&package-manager=dotnet_sdk&previous-version=10.0.202&new-version=10.0.203)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mpaulosky <60372079+mpaulosky@users.noreply.github.com>
Bumps the all-actions group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `4` | `6` |
|
[peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request)
| `8.1.0` | `8.1.1` |
| [actions/setup-dotnet](https://github.com/actions/setup-dotnet) | `4`
| `5` |
| [github/codeql-action](https://github.com/github/codeql-action) | `3`
| `4` |
|
[actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact)
| `4` | `5` |

Updates `actions/checkout` from 4 to 6
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/releases">actions/checkout's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update README to include Node.js 24 support details and requirements
by <a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li>
<li>Persist creds to a separate file by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li>
<li>v6-beta by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2298">actions/checkout#2298</a></li>
<li>update readme/changelog for v6 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2311">actions/checkout#2311</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v5.0.0...v6.0.0">https://github.com/actions/checkout/compare/v5.0.0...v6.0.0</a></p>
<h2>v6-beta</h2>
<h2>What's Changed</h2>
<p>Updated persist-credentials to store the credentials under
<code>$RUNNER_TEMP</code> instead of directly in the local git
config.</p>
<p>This requires a minimum Actions Runner version of <a
href="https://github.com/actions/runner/releases/tag/v2.329.0">v2.329.0</a>
to access the persisted credentials for <a
href="https://docs.github.com/en/actions/tutorials/use-containerized-services/create-a-docker-container-action">Docker
container action</a> scenarios.</p>
<h2>v5.0.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Port v6 cleanup to v5 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v5...v5.0.1">https://github.com/actions/checkout/compare/v5...v5.0.1</a></p>
<h2>v5.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update actions checkout to use node 24 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li>
<li>Prepare v5.0.0 release by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2238">actions/checkout#2238</a></li>
</ul>
<h2>⚠️ Minimum Compatible Runner Version</h2>
<p><strong>v2.327.1</strong><br />
<a
href="https://github.com/actions/runner/releases/tag/v2.327.1">Release
Notes</a></p>
<p>Make sure your runner is updated to this version or newer to use this
release.</p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v4...v5.0.0">https://github.com/actions/checkout/compare/v4...v5.0.0</a></p>
<h2>v4.3.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Port v6 cleanup to v4 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2305">actions/checkout#2305</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v4...v4.3.1">https://github.com/actions/checkout/compare/v4...v4.3.1</a></p>
<h2>v4.3.0</h2>
<h2>What's Changed</h2>
<ul>
<li>docs: update README.md by <a
href="https://github.com/motss"><code>@​motss</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
<li>Add internal repos for checking out multiple repositories by <a
href="https://github.com/mouismail"><code>@​mouismail</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
<li>Documentation update - add recommended permissions to Readme by <a
href="https://github.com/benwells"><code>@​benwells</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>v6.0.2</h2>
<ul>
<li>Fix tag handling: preserve annotations and explicit fetch-tags by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2356">actions/checkout#2356</a></li>
</ul>
<h2>v6.0.1</h2>
<ul>
<li>Add worktree support for persist-credentials includeIf by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2327">actions/checkout#2327</a></li>
</ul>
<h2>v6.0.0</h2>
<ul>
<li>Persist creds to a separate file by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li>
<li>Update README to include Node.js 24 support details and requirements
by <a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li>
</ul>
<h2>v5.0.1</h2>
<ul>
<li>Port v6 cleanup to v5 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li>
</ul>
<h2>v5.0.0</h2>
<ul>
<li>Update actions checkout to use node 24 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li>
</ul>
<h2>v4.3.1</h2>
<ul>
<li>Port v6 cleanup to v4 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2305">actions/checkout#2305</a></li>
</ul>
<h2>v4.3.0</h2>
<ul>
<li>docs: update README.md by <a
href="https://github.com/motss"><code>@​motss</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
<li>Add internal repos for checking out multiple repositories by <a
href="https://github.com/mouismail"><code>@​mouismail</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
<li>Documentation update - add recommended permissions to Readme by <a
href="https://github.com/benwells"><code>@​benwells</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
<li>Adjust positioning of user email note and permissions heading by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2044">actions/checkout#2044</a></li>
<li>Update README.md by <a
href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li>
<li>Update CODEOWNERS for actions by <a
href="https://github.com/TingluoHuang"><code>@​TingluoHuang</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2224">actions/checkout#2224</a></li>
<li>Update package dependencies by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li>
</ul>
<h2>v4.2.2</h2>
<ul>
<li><code>url-helper.ts</code> now leverages well-known environment
variables by <a href="https://github.com/jww3"><code>@​jww3</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/1941">actions/checkout#1941</a></li>
<li>Expand unit test coverage for <code>isGhes</code> by <a
href="https://github.com/jww3"><code>@​jww3</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1946">actions/checkout#1946</a></li>
</ul>
<h2>v4.2.1</h2>
<ul>
<li>Check out other refs/* by commit if provided, fall back to ref by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1924">actions/checkout#1924</a></li>
</ul>
<h2>v4.2.0</h2>
<ul>
<li>Add Ref and Commit outputs by <a
href="https://github.com/lucacome"><code>@​lucacome</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1180">actions/checkout#1180</a></li>
<li>Dependency updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>- <a
href="https://redirect.github.com/actions/checkout/pull/1777">actions/checkout#1777</a>,
<a
href="https://redirect.github.com/actions/checkout/pull/1872">actions/checkout#1872</a></li>
</ul>
<h2>v4.1.7</h2>
<ul>
<li>Bump the minor-npm-dependencies group across 1 directory with 4
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1739">actions/checkout#1739</a></li>
<li>Bump actions/checkout from 3 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1697">actions/checkout#1697</a></li>
<li>Check out other refs/* by commit by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1774">actions/checkout#1774</a></li>
<li>Pin actions/checkout's own workflows to a known, good, stable
version. by <a href="https://github.com/jww3"><code>@​jww3</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1776">actions/checkout#1776</a></li>
</ul>
<h2>v4.1.6</h2>
<ul>
<li>Check platform to set archive extension appropriately by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1732">actions/checkout#1732</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/checkout/commit/de0fac2e4500dabe0009e67214ff5f5447ce83dd"><code>de0fac2</code></a>
Fix tag handling: preserve annotations and explicit fetch-tags (<a
href="https://redirect.github.com/actions/checkout/issues/2356">#2356</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/064fe7f3312418007dea2b49a19844a9ee378f49"><code>064fe7f</code></a>
Add orchestration_id to git user-agent when ACTIONS_ORCHESTRATION_ID is
set (...</li>
<li><a
href="https://github.com/actions/checkout/commit/8e8c483db84b4bee98b60c0593521ed34d9990e8"><code>8e8c483</code></a>
Clarify v6 README (<a
href="https://redirect.github.com/actions/checkout/issues/2328">#2328</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/033fa0dc0b82693d8986f1016a0ec2c5e7d9cbb1"><code>033fa0d</code></a>
Add worktree support for persist-credentials includeIf (<a
href="https://redirect.github.com/actions/checkout/issues/2327">#2327</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/c2d88d3ecc89a9ef08eebf45d9637801dcee7eb5"><code>c2d88d3</code></a>
Update all references from v5 and v4 to v6 (<a
href="https://redirect.github.com/actions/checkout/issues/2314">#2314</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/1af3b93b6815bc44a9784bd300feb67ff0d1eeb3"><code>1af3b93</code></a>
update readme/changelog for v6 (<a
href="https://redirect.github.com/actions/checkout/issues/2311">#2311</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/71cf2267d89c5cb81562390fa70a37fa40b1305e"><code>71cf226</code></a>
v6-beta (<a
href="https://redirect.github.com/actions/checkout/issues/2298">#2298</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/069c6959146423d11cd0184e6accf28f9d45f06e"><code>069c695</code></a>
Persist creds to a separate file (<a
href="https://redirect.github.com/actions/checkout/issues/2286">#2286</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493"><code>ff7abcd</code></a>
Update README to include Node.js 24 support details and requirements (<a
href="https://redirect.github.com/actions/checkout/issues/2248">#2248</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/08c6903cd8c0fde910a37f88322edcfb5dd907a8"><code>08c6903</code></a>
Prepare v5.0.0 release (<a
href="https://redirect.github.com/actions/checkout/issues/2238">#2238</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/checkout/compare/v4...v6">compare
view</a></li>
</ul>
</details>
<br />

Updates `peter-evans/create-pull-request` from 8.1.0 to 8.1.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/peter-evans/create-pull-request/releases">peter-evans/create-pull-request's
releases</a>.</em></p>
<blockquote>
<h2>Create Pull Request v8.1.1</h2>
<h2>What's Changed</h2>
<ul>
<li>build(deps-dev): bump the npm group with 2 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4305">peter-evans/create-pull-request#4305</a></li>
<li>build(deps): bump minimatch by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4311">peter-evans/create-pull-request#4311</a></li>
<li>build(deps): bump the github-actions group with 2 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4316">peter-evans/create-pull-request#4316</a></li>
<li>build(deps): bump <code>@​tootallnate/once</code> and
jest-environment-jsdom by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4323">peter-evans/create-pull-request#4323</a></li>
<li>build(deps-dev): bump undici from 6.23.0 to 6.24.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4328">peter-evans/create-pull-request#4328</a></li>
<li>build(deps-dev): bump flatted from 3.3.1 to 3.4.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4334">peter-evans/create-pull-request#4334</a></li>
<li>build(deps): bump picomatch by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4339">peter-evans/create-pull-request#4339</a></li>
<li>build(deps-dev): bump handlebars from 4.7.8 to 4.7.9 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4344">peter-evans/create-pull-request#4344</a></li>
<li>build(deps-dev): bump the npm group with 3 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4349">peter-evans/create-pull-request#4349</a></li>
<li>fix: retry post-creation API calls on 422 eventual consistency
errors by <a
href="https://github.com/peter-evans"><code>@​peter-evans</code></a> in
<a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4356">peter-evans/create-pull-request#4356</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/peter-evans/create-pull-request/compare/v8.1.0...v8.1.1">https://github.com/peter-evans/create-pull-request/compare/v8.1.0...v8.1.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/5f6978faf089d4d20b00c7766989d076bb2fc7f1"><code>5f6978f</code></a>
fix: retry post-creation API calls on 422 eventual consistency errors
(<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4356">#4356</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/d32e88dac789dcc7906e7d26f69f24116fa9c97d"><code>d32e88d</code></a>
build(deps-dev): bump the npm group with 3 updates (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4349">#4349</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/8170bccad11c0df62542c04dcaefe36d342dfd39"><code>8170bcc</code></a>
build(deps-dev): bump handlebars from 4.7.8 to 4.7.9 (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4344">#4344</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/00418193b417f888dbf1d993c5c0d31d27fdc7de"><code>0041819</code></a>
build(deps): bump picomatch (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4339">#4339</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/b993918c8536b6d44706130734d5456879762b27"><code>b993918</code></a>
build(deps-dev): bump flatted from 3.3.1 to 3.4.2 (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4334">#4334</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/36d7c8468b48f9c2f8f29e260e82f10d4b90d2bd"><code>36d7c84</code></a>
build(deps-dev): bump undici from 6.23.0 to 6.24.0 (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4328">#4328</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/a45d1fb447fcaf601166e405fd4f335cde1a8aa8"><code>a45d1fb</code></a>
build(deps): bump <code>@​tootallnate/once</code> and
jest-environment-jsdom (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4323">#4323</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/3499eb61835cc0015c0b786e203d74b1e8f55e43"><code>3499eb6</code></a>
build(deps): bump the github-actions group with 2 updates (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4316">#4316</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/3f3b473b8c148f5a7520efb4d1f9a70eea3d9d1f"><code>3f3b473</code></a>
build(deps): bump minimatch (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4311">#4311</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/6699836a213cf8b28c4f0408a404a6ac79d4458a"><code>6699836</code></a>
build(deps-dev): bump the npm group with 2 updates (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4305">#4305</a>)</li>
<li>See full diff in <a
href="https://github.com/peter-evans/create-pull-request/compare/v8.1.0...v8.1.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/setup-dotnet` from 4 to 5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/setup-dotnet/releases">actions/setup-dotnet's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.0</h2>
<h2>What's Changed</h2>
<h3>Breaking Changes</h3>
<ul>
<li>Upgrade to Node.js 24 and modernize async usage by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/654">actions/setup-dotnet#654</a></li>
</ul>
<p>Make sure your runner is updated to this version or newer to use this
release. v2.327.1 <a
href="https://github.com/actions/runner/releases/tag/v2.327.1">Release
Notes</a></p>
<h3>Dependency Updates</h3>
<ul>
<li>Upgrade <code>@​action/cache</code> from 4.0.2 to 4.0.3 by <a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/622">actions/setup-dotnet#622</a></li>
<li>Upgrade husky from 8.0.3 to 9.1.7 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/591">actions/setup-dotnet#591</a></li>
<li>Upgrade <code>@​actions/glob</code> from 0.4.0 to 0.5.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/594">actions/setup-dotnet#594</a></li>
<li>Upgrade eslint-config-prettier from 9.1.0 to 10.1.5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/639">actions/setup-dotnet#639</a></li>
<li>Upgrade undici from 5.28.5 to 5.29.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/641">actions/setup-dotnet#641</a></li>
<li>Upgrade form-data to bring in fix for critical vulnerability by <a
href="https://github.com/gowridurgad"><code>@​gowridurgad</code></a> in
<a
href="https://redirect.github.com/actions/setup-dotnet/pull/652">actions/setup-dotnet#652</a></li>
<li>Upgrade actions/checkout from 4 to 5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/662">actions/setup-dotnet#662</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Remove Support for older .NET Versions and Update installers scripts
by <a
href="https://github.com/gowridurgad"><code>@​gowridurgad</code></a> in
<a
href="https://redirect.github.com/actions/setup-dotnet/pull/647">actions/setup-dotnet#647</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/gowridurgad"><code>@​gowridurgad</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/647">actions/setup-dotnet#647</a></li>
<li><a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/654">actions/setup-dotnet#654</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-dotnet/compare/v4...v5.0.0">https://github.com/actions/setup-dotnet/compare/v4...v5.0.0</a></p>
<h2>v4.3.1</h2>
<h2>What's Changed</h2>
<ul>
<li><code>v4</code> - Remove <code>azureedge.net</code> fallback logic
and update install scripts by <a
href="https://github.com/zaataylor"><code>@​zaataylor</code></a> in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/572">actions/setup-dotnet#572</a>
As outlined in<a
href="https://devblogs.microsoft.com/dotnet/critical-dotnet-install-links-are-changing/#call-to-action">
Critical .NET Install Links Are Changing</a>, remove the storage account
fallback logic added for v4 in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/566">actions/setup-dotnet#566</a>
and update the install scripts accordingly.
<strong>Related issue</strong>: <a
href="https://redirect.github.com/dotnet/install-scripts/issues/559">dotnet/install-scripts#559</a></li>
<li>upgrade <code>@​actions/cache</code> to 4.0.2 by <a
href="https://github.com/HarithaVattikuti"><code>@​HarithaVattikuti</code></a>
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/615">actions/setup-dotnet#615</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-dotnet/compare/v4...v4.3.1">https://github.com/actions/setup-dotnet/compare/v4...v4.3.1</a></p>
<h2>v4.3.0</h2>
<h2>What's Changed</h2>
<ul>
<li>README update - add permissions section by <a
href="https://github.com/benwells"><code>@​benwells</code></a> in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/587">actions/setup-dotnet#587</a></li>
<li>Configure Dependabot settings by <a
href="https://github.com/HarithaVattikuti"><code>@​HarithaVattikuti</code></a>
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/585">actions/setup-dotnet#585</a></li>
<li>Upgrade <strong>cache</strong> from 3.2.4 to 4.0.0 by <a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/586">actions/setup-dotnet#586</a></li>
<li>Upgrade <strong>actions/publish-immutable-action</strong> from 0.0.3
to 0.0.4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/590">actions/setup-dotnet#590</a></li>
<li>Upgrade <strong><code>@​actions/http-client</code></strong> from
2.2.1 to 2.2.3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/592">actions/setup-dotnet#592</a></li>
<li>Upgrade <strong>undici</strong> from 5.28.4 to 5.28.5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/596">actions/setup-dotnet#596</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/benwells"><code>@​benwells</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/587">actions/setup-dotnet#587</a></li>
<li><a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/586">actions/setup-dotnet#586</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/setup-dotnet/commit/c2fa09f4bde5ebb9d1777cf28262a3eb3db3ced7"><code>c2fa09f</code></a>
Bump minimatch from 3.1.2 to 3.1.5 (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/705">#705</a>)</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/02574b18e2dc57a218ee4e11ba1e1603c67236e8"><code>02574b1</code></a>
Add support for optional architecture input for cross-architecture .NET
insta...</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/16c7b3c2fa55a0e394467d22512b84fda46adf63"><code>16c7b3c</code></a>
Bump fast-xml-parser from 4.4.1 to 5.3.6 (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/671">#671</a>)</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/131b410979e0b49e2162c0718030257b22d6dc2c"><code>131b410</code></a>
Add support for workloads input (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/693">#693</a>)</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/baa11fbfe1d6520db94683bd5c7a3818018e4309"><code>baa11fb</code></a>
Bump test dependencies to resolve System.Net.Http vulnerability, update
workf...</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/24ec4f204bea672fb937f8f9f3bfec35ba0dc7b5"><code>24ec4f2</code></a>
Upgrade to latest actions packages (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/687">#687</a>)</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/4c100cb5e4b37e8b502c0ca5acbab36ee401b85f"><code>4c100cb</code></a>
Fix icons (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/604">#604</a>)</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/25328d894dc34d01d191df4849cb7f5402e3f142"><code>25328d8</code></a>
Bump actions/checkout from 5 to 6 (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/684">#684</a>)</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/937b8dd3814c642a65e599b368dfac491d9c83da"><code>937b8dd</code></a>
Update README with note on setting DOTNET_INSTALL_DIR for Linux
permission is...</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/2016bd2012dba4e32de620c46fe006a3ac9f0602"><code>2016bd2</code></a>
Bump actions/publish-action from 0.3.0 to 0.4.0 and update macos-13 to
macos-...</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/setup-dotnet/compare/v4...v5">compare
view</a></li>
</ul>
</details>
<br />

Updates `github/codeql-action` from 3 to 4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v3.35.2</h2>
<ul>
<li>The undocumented TRAP cache cleanup feature that could be enabled
using the <code>CODEQL_ACTION_CLEANUP_TRAP_CACHES</code> environment
variable is deprecated and will be removed in May 2026. If you are
affected by this, we recommend disabling TRAP caching by passing the
<code>trap-caching: false</code> input to the <code>init</code> Action.
<a
href="https://redirect.github.com/github/codeql-action/pull/3795">#3795</a></li>
<li>The Git version 2.36.0 requirement for improved incremental analysis
now only applies to repositories that contain submodules. <a
href="https://redirect.github.com/github/codeql-action/pull/3789">#3789</a></li>
<li>Python analysis on GHES no longer extracts the standard library,
relying instead on models of the standard library. This should result in
significantly faster extraction and analysis times, while the effect on
alerts should be minimal. <a
href="https://redirect.github.com/github/codeql-action/pull/3794">#3794</a></li>
<li>Fixed a bug in the validation of OIDC configurations for private
registries that was added in CodeQL Action 4.33.0 / 3.33.0. <a
href="https://redirect.github.com/github/codeql-action/pull/3807">#3807</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.2">2.25.2</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3823">#3823</a></li>
</ul>
<h2>v3.35.1</h2>
<ul>
<li>Fix incorrect minimum required Git version for <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a>: it should have been 2.36.0, not 2.11.0. <a
href="https://redirect.github.com/github/codeql-action/pull/3781">#3781</a></li>
</ul>
<h2>v3.35.0</h2>
<ul>
<li>Reduced the minimum Git version required for <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> from 2.38.0 to 2.11.0. <a
href="https://redirect.github.com/github/codeql-action/pull/3767">#3767</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.1">2.25.1</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3773">#3773</a></li>
</ul>
<h2>v3.34.1</h2>
<ul>
<li>Downgrade default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.24.3">2.24.3</a>
due to issues with a small percentage of Actions and JavaScript
analyses. <a
href="https://redirect.github.com/github/codeql-action/pull/3762">#3762</a></li>
</ul>
<h2>v3.34.0</h2>
<ul>
<li>Added an experimental change which disables TRAP caching when <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> is enabled, since improved incremental analysis
supersedes TRAP caching. This will improve performance and reduce
Actions cache usage. We expect to roll this change out to everyone in
March. <a
href="https://redirect.github.com/github/codeql-action/pull/3569">#3569</a></li>
<li>We are rolling out improved incremental analysis to C/C++ analyses
that use build mode <code>none</code>. We expect this rollout to be
complete by the end of April 2026. <a
href="https://redirect.github.com/github/codeql-action/pull/3584">#3584</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.0">2.25.0</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3585">#3585</a></li>
</ul>
<h2>v3.33.0</h2>
<ul>
<li>Upcoming change: Starting April 2026, the CodeQL Action will skip
collecting file coverage information on pull requests to improve
analysis performance. File coverage information will still be computed
on non-PR analyses. Pull request analyses will log a warning about this
upcoming change. <a
href="https://redirect.github.com/github/codeql-action/pull/3562">#3562</a>
To opt out of this change:
<ul>
<li><strong>Repositories owned by an organization:</strong> Create a
custom repository property with the name
<code>github-codeql-file-coverage-on-prs</code> and the type
&quot;True/false&quot;, then set this property to <code>true</code> in
the repository's settings. For more information, see <a
href="https://docs.github.com/en/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization">Managing
custom properties for repositories in your organization</a>.
Alternatively, if you are using an advanced setup workflow, you can set
the <code>CODEQL_ACTION_FILE_COVERAGE_ON_PRS</code> environment variable
to <code>true</code> in your workflow.</li>
<li><strong>User-owned repositories using default setup:</strong> Switch
to an advanced setup workflow and set the
<code>CODEQL_ACTION_FILE_COVERAGE_ON_PRS</code> environment variable to
<code>true</code> in your workflow.</li>
<li><strong>User-owned repositories using advanced setup:</strong> Set
the <code>CODEQL_ACTION_FILE_COVERAGE_ON_PRS</code> environment variable
to <code>true</code> in your workflow.</li>
</ul>
</li>
<li>Fixed <a
href="https://redirect.github.com/github/codeql-action/issues/3555">a
bug</a> which caused the CodeQL Action to fail loading repository
properties if a &quot;Multi select&quot; repository property was
configured for the repository. <a
href="https://redirect.github.com/github/codeql-action/pull/3557">#3557</a></li>
<li>The CodeQL Action now loads <a
href="https://docs.github.com/en/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization">custom
repository properties</a> on GitHub Enterprise Server, enabling the
customization of features such as
<code>github-codeql-disable-overlay</code> that was previously only
available on GitHub.com. <a
href="https://redirect.github.com/github/codeql-action/pull/3559">#3559</a></li>
<li>Once <a
href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">private
package registries</a> can be configured with OIDC-based authentication
for organizations, the CodeQL Action will now be able to accept such
configurations. <a
href="https://redirect.github.com/github/codeql-action/pull/3563">#3563</a></li>
<li>Fixed the retry mechanism for database uploads. Previously this
would fail with the error &quot;Response body object should not be
disturbed or locked&quot;. <a
href="https://redirect.github.com/github/codeql-action/pull/3564">#3564</a></li>
<li>A warning is now emitted if the CodeQL Action detects a repository
property whose name suggests that it relates to the CodeQL Action, but
which is not one of the properties recognised by the current version of
the CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3570">#3570</a></li>
</ul>
<h2>v3.32.6</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.24.3">2.24.3</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3548">#3548</a></li>
</ul>
<h2>v3.32.5</h2>
<ul>
<li>Repositories owned by an organization can now set up the
<code>github-codeql-disable-overlay</code> custom repository property to
disable <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis for CodeQL</a>. First, create a custom repository
property with the name <code>github-codeql-disable-overlay</code> and
the type &quot;True/false&quot; in the organization's settings. Then in
the repository's settings, set this property to <code>true</code> to
disable improved incremental analysis. For more information, see <a
href="https://docs.github.com/en/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization">Managing
custom properties for repositories in your organization</a>. This
feature is not yet available on GitHub Enterprise Server. <a
href="https://redirect.github.com/github/codeql-action/pull/3507">#3507</a></li>
<li>Added an experimental change so that when <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> fails on a runner — potentially due to
insufficient disk space — the failure is recorded in the Actions cache
so that subsequent runs will automatically skip improved incremental
analysis until something changes (e.g. a larger runner is provisioned or
a new CodeQL version is released). We expect to roll this change out to
everyone in March. <a
href="https://redirect.github.com/github/codeql-action/pull/3487">#3487</a></li>
<li>The minimum memory check for improved incremental analysis is now
skipped for CodeQL 2.24.3 and later, which has reduced peak RAM usage.
<a
href="https://redirect.github.com/github/codeql-action/pull/3515">#3515</a></li>
<li>Reduced log levels for best-effort private package registry
connection check failures to reduce noise from workflow annotations. <a
href="https://redirect.github.com/github/codeql-action/pull/3516">#3516</a></li>
<li>Added an experimental change which lowers the minimum disk space
requirement for <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a>, enabling it to run on standard GitHub Actions
runners. We expect to roll this change out to everyone in March. <a
href="https://redirect.github.com/github/codeql-action/pull/3498">#3498</a></li>
<li>Added an experimental change which allows the
<code>start-proxy</code> action to resolve the CodeQL CLI version from
feature flags instead of using the linked CLI bundle version. We expect
to roll this change out to everyone in March. <a
href="https://redirect.github.com/github/codeql-action/pull/3512">#3512</a></li>
<li>The previously experimental changes from versions 4.32.3, 4.32.4,
3.32.3 and 3.32.4 are now enabled by default. <a
href="https://redirect.github.com/github/codeql-action/pull/3503">#3503</a>,
<a
href="https://redirect.github.com/github/codeql-action/pull/3504">#3504</a></li>
</ul>
<h2>v3.32.4</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.24.2">2.24.2</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3493">#3493</a></li>
<li>Added an experimental change which improves how certificates are
generated for the authentication proxy that is used by the CodeQL Action
in Default Setup when <a
href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">private
package registries are configured</a>. This is expected to generate more
widely compatible certificates and should have no impact on analyses
which are working correctly already. We expect to roll this change out
to everyone in February. <a
href="https://redirect.github.com/github/codeql-action/pull/3473">#3473</a></li>
<li>When the CodeQL Action is run <a
href="https://docs.github.com/en/code-security/how-tos/scan-code-for-vulnerabilities/troubleshooting/troubleshooting-analysis-errors/logs-not-detailed-enough#creating-codeql-debugging-artifacts-for-codeql-default-setup">with
debugging enabled in Default Setup</a> and <a
href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">private
package registries are configured</a>, the &quot;Setup proxy for
registries&quot; step will output additional diagnostic information that
can be used for troubleshooting. <a
href="https://redirect.github.com/github/codeql-action/pull/3486">#3486</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h2>4.32.3 - 13 Feb 2026</h2>
<ul>
<li>Added experimental support for testing connections to <a
href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">private
package registries</a>. This feature is not currently enabled for any
analysis. In the future, it may be enabled by default for Default Setup.
<a
href="https://redirect.github.com/github/codeql-action/pull/3466">#3466</a></li>
</ul>
<h2>4.32.2 - 05 Feb 2026</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.24.1">2.24.1</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3460">#3460</a></li>
</ul>
<h2>4.32.1 - 02 Feb 2026</h2>
<ul>
<li>A warning is now shown in Default Setup workflow logs if a <a
href="https://docs.github.com/en/code-security/how-tos/secure-at-scale/configure-organization-security/manage-usage-and-access/giving-org-access-private-registries">private
package registry is configured</a> using a GitHub Personal Access Token
(PAT), but no username is configured. <a
href="https://redirect.github.com/github/codeql-action/pull/3422">#3422</a></li>
<li>Fixed a bug which caused the CodeQL Action to fail when repository
properties cannot successfully be retrieved. <a
href="https://redirect.github.com/github/codeql-action/pull/3421">#3421</a></li>
</ul>
<h2>4.32.0 - 26 Jan 2026</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.24.0">2.24.0</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3425">#3425</a></li>
</ul>
<h2>4.31.11 - 23 Jan 2026</h2>
<ul>
<li>When running a Default Setup workflow with <a
href="https://docs.github.com/en/actions/how-tos/monitor-workflows/enable-debug-logging">Actions
debugging enabled</a>, the CodeQL Action will now use more unique names
when uploading logs from the Dependabot authentication proxy as workflow
artifacts. This ensures that the artifact names do not clash between
multiple jobs in a build matrix. <a
href="https://redirect.github.com/github/codeql-action/pull/3409">#3409</a></li>
<li>Improved error handling throughout the CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3415">#3415</a></li>
<li>Added experimental support for automatically excluding <a
href="https://docs.github.com/en/repositories/working-with-files/managing-files/customizing-how-changed-files-appear-on-github">generated
files</a> from the analysis. This feature is not currently enabled for
any analysis. In the future, it may be enabled by default for some
GitHub-managed analyses. <a
href="https://redirect.github.com/github/codeql-action/pull/3318">#3318</a></li>
<li>The changelog extracts that are included with releases of the CodeQL
Action are now shorter to avoid duplicated information from appearing in
Dependabot PRs. <a
href="https://redirect.github.com/github/codeql-action/pull/3403">#3403</a></li>
</ul>
<h2>4.31.10 - 12 Jan 2026</h2>
<ul>
<li>Update default CodeQL bundle version to 2.23.9. <a
href="https://redirect.github.com/github/codeql-action/pull/3393">#3393</a></li>
</ul>
<h2>4.31.9 - 16 Dec 2025</h2>
<p>No user facing changes.</p>
<h2>4.31.8 - 11 Dec 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.23.8. <a
href="https://redirect.github.com/github/codeql-action/pull/3354">#3354</a></li>
</ul>
<h2>4.31.7 - 05 Dec 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.23.7. <a
href="https://redirect.github.com/github/codeql-action/pull/3343">#3343</a></li>
</ul>
<h2>4.31.6 - 01 Dec 2025</h2>
<p>No user facing changes.</p>
<h2>4.31.5 - 24 Nov 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.23.6. <a
href="https://redirect.github.com/github/codeql-action/pull/3321">#3321</a></li>
</ul>
<h2>4.31.4 - 18 Nov 2025</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/43d8420a422ee51e6e1fb42471cc4d81bcb9de36"><code>43d8420</code></a>
Do not run Swift in debug artifacts after failure check</li>
<li><a
href="https://github.com/github/codeql-action/commit/76a687e1d810ec603951c060d5afa98f121364a7"><code>76a687e</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3804">#3804</a>
from github/dependabot/npm_and_yarn/npm-minor-e84c60...</li>
<li><a
href="https://github.com/github/codeql-action/commit/751f3e2f7c70f1b35c8409fff7733427119273d1"><code>751f3e2</code></a>
Bump eslint-plugin-jsdoc from 62.8.1 to 62.9.0 in the npm-minor
group</li>
<li><a
href="https://github.com/github/codeql-action/commit/808513f0486bc371babf5ba9bc8cfdd90ae751c4"><code>808513f</code></a>
Update language aliases test</li>
<li><a
href="https://github.com/github/codeql-action/commit/e452857e57abf124ce8bc6415dd025417a9640ee"><code>e452857</code></a>
Throw error early rather than warning</li>
<li><a
href="https://github.com/github/codeql-action/commit/b623f5fd572a69d335c9da3487c1ce53741a09bf"><code>b623f5f</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3799">#3799</a>
from github/mario-campos/test-multiple-registries</li>
<li>See full diff in <a
href="https://github.com/github/codeql-action/compare/v3...v4">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/upload-pages-artifact` from 4 to 5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/upload-pages-artifact/releases">actions/upload-pages-artifact's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.0</h2>
<h1>Changelog</h1>
<ul>
<li>Update upload-artifact action to version 7 <a
href="https://github.com/Tom-van-Woudenberg"><code>@​Tom-van-Woudenberg</code></a>
(<a
href="https://redirect.github.com/actions/upload-pages-artifact/issues/139">#139</a>)</li>
<li>feat: add <code>include-hidden-files</code> input <a
href="https://github.com/jonchurch"><code>@​jonchurch</code></a> (<a
href="https://redirect.github.com/actions/upload-pages-artifact/issues/137">#137</a>)</li>
</ul>
<p>See details of <a
href="https://github.com/actions/upload-pages-artifact/compare/v4.0.0...v4.0.1">all
code changes</a> since previous release.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/upload-pages-artifact/commit/fc324d3547104276b827a68afc52ff2a11cc49c9"><code>fc324d3</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/upload-pages-artifact/issues/139">#139</a>
from Tom-van-Woudenberg/patch-1</li>
<li><a
href="https://github.com/actions/upload-pages-artifact/commit/fe9d4b7d84090e1d8d9c53a0236f810d4e00d2c3"><code>fe9d4b7</code></a>
Merge branch 'main' into patch-1</li>
<li><a
href="https://github.com/actions/upload-pages-artifact/commit/0ca16172ca884f0a37117fed41734f29784cc980"><code>0ca1617</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/upload-pages-artifact/issues/137">#137</a>
from jonchurch/include-hidden-files</li>
<li><a
href="https://github.com/actions/upload-pages-artifact/commit/57f0e8492b437b7818227931fef2faa1a379839b"><code>57f0e84</code></a>
Update action.yml</li>
<li><a
href="https://github.com/actions/upload-pages-artifact/commit/4a90348b2933470dc78cec55534259872a6d3c0d"><code>4a90348</code></a>
v7 --&gt; hash</li>
<li><a
href="https://github.com/actions/upload-pages-artifact/commit/56f665a6f297fa95f8d735b314187fb2d7764569"><code>56f665a</code></a>
Update upload-artifact action to version 7</li>
<li><a
href="https://github.com/actions/upload-pages-artifact/commit/f7615f5917213b24245d49ba96693d0f5375a414"><code>f7615f5</code></a>
Add <code>include-hidden-files</code> input</li>
<li>See full diff in <a
href="https://github.com/actions/upload-pages-artifact/compare/v4...v5">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mpaulosky <60372079+mpaulosky@users.noreply.github.com>
Updated [Aspire.Hosting.MongoDB](https://github.com/microsoft/aspire)
from 13.2.3 to 13.2.4.

<details>
<summary>Release notes</summary>

_Sourced from [Aspire.Hosting.MongoDB's
releases](https://github.com/microsoft/aspire/releases)._

## 13.2.4

# Aspire 13.2.4

## What's New in Aspire 13.2.4

Patch release addressing a security advisory in OpenTelemetry
dependencies.


### 🐛 Fixes

- 🔒 Bumped OpenTelemetry dependencies to address CVE-2026-40894
(#​16420)

### 🏷️ Housekeeping

 - 🚀 Bumped branding to
  13.2.4 (#​16436)

Commits viewable in [compare
view](microsoft/aspire@v13.2.3...v13.2.4).
</details>

Updated [Aspire.Hosting.Redis](https://github.com/microsoft/aspire) from
13.2.3 to 13.2.4.

<details>
<summary>Release notes</summary>

_Sourced from [Aspire.Hosting.Redis's
releases](https://github.com/microsoft/aspire/releases)._

## 13.2.4

# Aspire 13.2.4

## What's New in Aspire 13.2.4

Patch release addressing a security advisory in OpenTelemetry
dependencies.


### 🐛 Fixes

- 🔒 Bumped OpenTelemetry dependencies to address CVE-2026-40894
(#​16420)

### 🏷️ Housekeeping

 - 🚀 Bumped branding to
  13.2.4 (#​16436)

Commits viewable in [compare
view](microsoft/aspire@v13.2.3...v13.2.4).
</details>

Updated [Aspire.Hosting.Testing](https://github.com/microsoft/aspire)
from 13.2.3 to 13.2.4.

<details>
<summary>Release notes</summary>

_Sourced from [Aspire.Hosting.Testing's
releases](https://github.com/microsoft/aspire/releases)._

## 13.2.4

# Aspire 13.2.4

## What's New in Aspire 13.2.4

Patch release addressing a security advisory in OpenTelemetry
dependencies.


### 🐛 Fixes

- 🔒 Bumped OpenTelemetry dependencies to address CVE-2026-40894
(#​16420)

### 🏷️ Housekeeping

 - 🚀 Bumped branding to
  13.2.4 (#​16436)

Commits viewable in [compare
view](microsoft/aspire@v13.2.3...v13.2.4).
</details>

Updated [Aspire.MongoDB.Driver](https://github.com/microsoft/aspire)
from 13.2.3 to 13.2.4.

<details>
<summary>Release notes</summary>

_Sourced from [Aspire.MongoDB.Driver's
releases](https://github.com/microsoft/aspire/releases)._

## 13.2.4

# Aspire 13.2.4

## What's New in Aspire 13.2.4

Patch release addressing a security advisory in OpenTelemetry
dependencies.


### 🐛 Fixes

- 🔒 Bumped OpenTelemetry dependencies to address CVE-2026-40894
(#​16420)

### 🏷️ Housekeeping

 - 🚀 Bumped branding to
  13.2.4 (#​16436)

Commits viewable in [compare
view](microsoft/aspire@v13.2.3...v13.2.4).
</details>

Updated
[Aspire.StackExchange.Redis.DistributedCaching](https://github.com/microsoft/aspire)
from 13.2.3 to 13.2.4.

<details>
<summary>Release notes</summary>

_Sourced from [Aspire.StackExchange.Redis.DistributedCaching's
releases](https://github.com/microsoft/aspire/releases)._

## 13.2.4

# Aspire 13.2.4

## What's New in Aspire 13.2.4

Patch release addressing a security advisory in OpenTelemetry
dependencies.


### 🐛 Fixes

- 🔒 Bumped OpenTelemetry dependencies to address CVE-2026-40894
(#​16420)

### 🏷️ Housekeeping

 - 🚀 Bumped branding to
  13.2.4 (#​16436)

Commits viewable in [compare
view](microsoft/aspire@v13.2.3...v13.2.4).
</details>

Updated
[Microsoft.Playwright](https://github.com/microsoft/playwright-dotnet)
from 1.48.0 to 1.59.0.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Playwright's
releases](https://github.com/microsoft/playwright-dotnet/releases)._

## 1.59.0

## 🎬 Screencast

New
[Page.Screencast](https://playwright.dev/dotnet/docs/api/class-page#page-screencast)
API provides a unified interface for capturing page content with:
- Screencast recordings
- Action annotations
- Visual overlays
- Real-time frame capture
- Agentic video receipts

<center>

<img
src="https://raw.githubusercontent.com/microsoft/playwright/main/docs/src/images/release-notes-1.59-screencast-demo.gif"
alt="Demo" width="500" height="313" />

</center>

**Screencast recording** — record video with precise start/stop control,
as an alternative to the
[`recordVideoDir`](https://playwright.dev/dotnet/docs/api/class-browser#browser-new-context-option-record-video-dir)
option:

```csharp
await page.Screencast.StartAsync(new() { Path = "video.webm" });
// ... perform actions ...
await page.Screencast.StopAsync();
```

**Action annotations** — enable built-in visual annotations that
highlight interacted elements and display action titles during
recording:

```csharp
await page.Screencast.ShowActionsAsync(new() { Position = "top-right" });
```

`ShowActionsAsync` accepts `Position` (`"top-left"`, `"top"`,
`"top-right"`, `"bottom-left"`, `"bottom"`, `"bottom-right"`),
`Duration` (ms per annotation), and `FontSize` (px). Returns a
disposable to stop showing actions.

**Visual overlays** — add chapter titles and custom HTML overlays on top
of the page for richer narration:

```csharp
await page.Screencast.ShowChapterAsync("Adding TODOs", new() {
    Description = "Type and press enter for each TODO",
    Duration = 1000,
});

await page.Screencast.ShowOverlayAsync("<div style=\"color: red\">Recording</div>");
```

**Real-time frame capture** — stream JPEG-encoded frames for custom
processing like thumbnails, live previews, AI vision, and more:

```csharp
await page.Screencast.StartAsync(new() {
    OnFrame = frame => SendToVisionModel(frame.Data),
});
```

 ... (truncated)

## 1.58.0

## Trace Viewer Improvements
- New 'system' theme option follows your OS dark/light mode preference
- Search functionality (Cmd/Ctrl+F) is now available in code editors
- Network details panel has been reorganized for better usability
- JSON responses are now automatically formatted for readability

Thanks to [@​cpAdm](https://github.com/cpAdm) for contributing these
improvements!

## Miscellaneous


[BrowserType.ConnectOverCDPAsync()](https://playwright.dev/dotnet/docs/api/class-browsertype#browser-type-connect-over-cdp)
now accepts an `IsLocal` option. When set to `true`, it tells Playwright
that it runs on the same host as the CDP server, enabling file system
optimizations.

## Breaking Changes ⚠️
- Removed `_react` and `_vue` selectors. See [locators
guide](https://playwright.dev/dotnet/docs/locators) for alternatives.
- Removed `:light` selector engine suffix. Use standard CSS selectors
instead.
- Option `Devtools` from
[BrowserType.LaunchAsync()](https://playwright.dev/dotnet/docs/api/class-browsertype#browser-type-launch)
has been removed. Use `Args = new[] { "--auto-open-devtools-for-tabs" }`
instead.
- Removed macOS 13 support for WebKit.

## Browser Versions
- Chromium 145.0.7632.6
- Mozilla Firefox 146.0.1
- WebKit 26.0

## 1.57.0

## Chrome for Testing

Starting with this release, Playwright switches from Chromium, to using
[Chrome for
Testing](https://developer.chrome.com/blog/chrome-for-testing/) builds.
Both headed and headless browsers are subject to this. Your tests should
still be passing after upgrading to Playwright 1.57.

We're expecting no functional changes to come from this switch. The
biggest change is the new icon and title in your toolbar.

<img width="500" alt="new and old logo"
src="https://github.com/user-attachments/assets/e9a5c4f2-9f35-4c27-9382-0f5eda377097"
/>

If you still see an unexpected behaviour change, please [file an
issue](https://github.com/microsoft/playwright/issues/new).

On Arm64 Linux, Playwright continues to use Chromium.

## Breaking Change

After 3 years of being deprecated, we removed `Page.Accessibility` from
our API. Please use other libraries such as
[Axe](https://www.deque.com/axe/) if you need to test page
accessibility. See our Node.js
[guide](https://playwright.dev/docs/accessibility-testing) for
integration with Axe.

## New APIs
-
[Worker.Console](https://playwright.dev/dotnet/docs/api/class-worker#worker-event-console)
event is emitted when JavaScript within the worker calls one of console
API methods, e.g. console.log or console.dir.
-
[Locator.Description](https://playwright.dev/dotnet/docs/api/class-locator#locator-description)
returns locator description previously set with
[Locator.Describe()](https://playwright.dev/dotnet/docs/api/class-locator#locator-describe).
- New option
[`Steps`](https://playwright.dev/dotnet/docs/api/class-locator#locator-click-option-steps)
in
[Locator.ClickAsync()](https://playwright.dev/dotnet/docs/api/class-locator#locator-click)
and
[Locator.DragToAsync()](https://playwright.dev/dotnet/docs/api/class-locator#locator-drag-to)
that configures the number of `mousemove` events emitted while moving
the mouse pointer to the target element.

## Browser Versions
- Chromium 143.0.7499.4
- Mozilla Firefox 144.0.2
- WebKit 26.0


## 1.56.0

## New APIs
- New methods
[Page.ConsoleMessagesAsync()](https://playwright.dev/dotnet/docs/api/class-page#page-console-messages)
and
[Page.PageErrorsAsync()](https://playwright.dev/dotnet/docs/api/class-page#page-page-errors)
for retrieving the most recent console messages from the page
- New method
[Page.RequestsAsync()](https://playwright.dev/dotnet/docs/api/class-page#page-requests)
for retrieving the most recent network requests from the page

## Breaking Changes
- Event
[BrowserContext.BackgroundPage](https://playwright.dev/dotnet/docs/api/class-browsercontext#browser-context-event-background-page)
has been deprecated and will not be emitted. Property
[BrowserContext.BackgroundPages](https://playwright.dev/dotnet/docs/api/class-browsercontext#browser-context-background-pages)
will return an empty list

## Miscellaneous
- Aria snapshots render and compare `input` `placeholder`

## Browser Versions
- Chromium 141.0.7390.37
- Mozilla Firefox 142.0.1
- WebKit 26.0


## 1.55.0

## Codegen
- Automatic `ToBeVisibleAsync()` assertions: Codegen can now generate
automatic `ToBeVisibleAsync()` assertions for common UI interactions.
This feature can be enabled in the Codegen settings UI.

## Breaking Changes
- ⚠️ Dropped support for Chromium extension manifest v2.

## Miscellaneous
- Added support for Debian 13 "Trixie".
- Added support for Xunit v3 as part of
[`Microsoft.Playwright.Xunit.v3`](https://www.nuget.org/packages/Microsoft.Playwright.Xunit.v3)
- Added support for MSTest v4 as part of
[`Microsoft.Playwright.MSTest.v4`](https://www.nuget.org/packages/Microsoft.Playwright.MSTest.v4)

## Browser Versions
- Chromium 140.0.7339.16
- Mozilla Firefox 141.0
- WebKit 26.0

This version was also tested against the following stable channels:
- Google Chrome 139
- Microsoft Edge 139


## 1.54.0

## Highlights
- New cookie property `PartitionKey` in
[browserContext.cookies()](https://playwright.dev/dotnet/docs/api/class-browsercontext#browser-context-cookies)
and
[browserContext.addCookies()](https://playwright.dev/dotnet/docs/api/class-browsercontext#browser-context-add-cookies).
This property allows to save and restore partitioned cookies. See [CHIPS
MDN
article](https://developer.mozilla.org/en-US/docs/Web/Privacy/Guides/Privacy_sandbox/Partitioned_cookies)
for more information. Note that browsers have different support and
defaults for cookie partitioning.
- New option `--user-data-dir` in multiple commands. You can specify the
same user data dir to reuse browsing state, like authentication, between
sessions.
  
  ```bash
  pwsh bin/Debug/netX/playwright.ps1 codegen --user-data-dir=./user-data
  ```
  
- `pwsh bin/Debug/netX/playwright.ps1 open` does not open the test
recorder anymore. Use `pwsh bin/Debug/netX/playwright.ps1 codegen`
instead.

## Browser Versions
- Chromium 139.0.7258.5
- Mozilla Firefox 140.0.2
- WebKit 26.0

This version was also tested against the following stable channels:
- Google Chrome 140
- Microsoft Edge 140


## 1.53.0

## Miscellaneous
- New Steps in Trace Viewer: 
<img
src="https://github.com/user-attachments/assets/1963ff7d-4070-41be-a79b-4333176921a2"
alt="New Trace Viewer Steps" height="500">
- New method
[Locator.Describe()](https://playwright.dev/dotnet/docs/api/class-locator#locator-describe)
to describe a locator. Used for trace viewer.
  
  ```csharp
  var button = Page.GetByTestId("btn-sub").Describe("Subscribe button");
  await button.ClickAsync();
  ```
  
- `pwsh bin/Debug/netX/playwright.ps1 install --list` will now list all
installed browsers, versions and locations.

## Browser Versions
- Chromium 138.0.7204.4
- Mozilla Firefox 139.0
- WebKit 18.5

This version was also tested against the following stable channels:
- Google Chrome 137
- Microsoft Edge 137


## 1.52.0

## Highlights
- New method
[Expect(locator).ToContainClassAsync()](https://playwright.dev/dotnet/docs/api/class-locatorassertions#locator-assertions-to-contain-class)
to ergonomically assert individual class names on the element.
  
  ```csharp
await Expect(Page.GetByRole(AriaRole.Listitem, new() { Name = "Ship
v1.52" })).ToContainClassAsync("done");
  ```
  
- [Aria Snapshots](https://playwright.dev/dotnet/docs/aria-snapshots)
got two new properties:
[`/children`](https://playwright.dev/dotnet/docs/aria-snapshots#strict-matching)
for strict matching and `/url` for links.
  
  ```csharp
  await Expect(locator).ToMatchAriaSnapshotAsync(@"
    - list
      - /children: equal
      - listitem: Feature A
      - listitem:
        - link ""Feature B"":
          - /url: ""https://playwright.dev""
  ");
  ```
  
## Miscellaneous
- New option
[`MaxRedirects`](https://playwright.dev/dotnet/docs/api/class-apirequest#api-request-new-context-option-max-redirects)
in
[apiRequest.NewContextAsync()](https://playwright.dev/dotnet/docs/api/class-apirequest#api-request-new-context)
to control the maximum number of redirects.
- New option
[`Ref`](https://playwright.dev/dotnet/docs/api/class-locator#locator-aria-snapshot-option-ref)
in
[locator.AriaSnapshotAsync()](https://playwright.dev/dotnet/docs/api/class-locator#locator-aria-snapshot)
to generate reference for each element in the snapshot which can later
be used to locate the element.

## Breaking Changes

- Method
[route.ContinueAsync()](https://playwright.dev/dotnet/docs/api/class-route#route-continue)
does not allow to override the `Cookie` header anymore. If a `Cookie`
header is provided, it will be ignored, and the cookie will be loaded
from the browser's cookie store. To set custom cookies, use
[browserContext.AddCookiesAsync()](https://playwright.dev/dotnet/docs/api/class-browsercontext#browser-context-add-cookies).
- macOS 13 is now deprecated and will no longer receive WebKit updates.
Please upgrade to a more recent macOS version to continue benefiting
from the latest WebKit improvements.

## Browser Versions
- Chromium 136.0.7103.25
- Mozilla Firefox 137.0
- WebKit 18.4

This version was also tested against the following stable channels:
- Google Chrome 135
- Microsoft Edge 135


## 1.51.0

## Highlights
* New option
[`IndexedDB`](https://playwright.dev/dotnet/docs/api/class-browsercontext#browser-context-storage-state-option-indexed-db)
for
[BrowserContext.StorageStateAsync()](https://playwright.dev/dotnet/docs/api/class-browsercontext#browser-context-storage-state)
allows to save and restore IndexedDB contents. Useful when your
application uses [IndexedDB
API](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API) to
store authentication tokens, like Firebase Authentication.
  
Here is an example following the [authentication
guide](https://playwright.dev/dotnet/docs/auth#reusing-signed-in-state):
  
  ```csharp
  // Save storage state into the file. Make sure to include IndexedDB.
  await context.StorageStateAsync(new()
  {
      Path = "../../../playwright/.auth/state.json",
      IndexedDB = true
  });
  
  // Create a new context with the saved storage state.
  var context = await browser.NewContextAsync(new()
  {
      StorageStatePath = "../../../playwright/.auth/state.json"
  });
  ```
  
* New option
[`Visible`](https://playwright.dev/dotnet/docs/api/class-locator#locator-filter-option-visible)
for
[locator.filter()](https://playwright.dev/dotnet/docs/api/class-locator#locator-filter)
allows matching only visible elements.
  
  ```csharp
  // Ignore invisible todo items.
var todoItems = Page.GetByTestId("todo-item").Filter(new() { Visible =
true });
  // Check there are exactly 3 visible ones.
  await Expect(todoItems).ToHaveCountAsync(3);
  ```
  
* New option `Contrast` for methods
[page.emulateMedia()](https://playwright.dev/dotnet/docs/api/class-page#page-emulate-media)
and
[Browser.NewContextAsync()](https://playwright.dev/dotnet/docs/api/class-browser#browser-new-context)
allows to emulate the `prefers-contrast` media feature.
* New option
[`FailOnStatusCode`](https://playwright.dev/dotnet/docs/api/class-apirequest#api-request-new-context-option-fail-on-status-code)
makes all fetch requests made through the
[APIRequestContext](https://playwright.dev/dotnet/docs/api/class-apirequestcontext)
throw on response codes other than 2xx and 3xx.

## Browser Versions
* Chromium 134.0.6998.35
* Mozilla Firefox 135.0
* WebKit 18.4

This version was also tested against the following stable channels:
* Google Chrome 133
* Microsoft Edge 133


## 1.50.0

## Support for Xunit
* Support for xUnit 2.8+ via
[Microsoft.Playwright.Xunit](https://www.nuget.org/packages/Microsoft.Playwright.Xunit).
Follow our [Getting Started](https://playwright.dev/dotnet/docs/intro)
guide to learn more.

## Miscellaneous
* Added method
[Expect(locator).toHaveAccessibleErrorMessage()](https://playwright.dev/dotnet/docs/api/class-locatorassertions#locator-assertions-to-have-accessible-error-message)
to assert the Locator points to an element with a given [aria
errormessage](https://w3c.github.io/aria/#aria-errormessage).

## UI updates
* New button in Codegen for picking elements to produce aria snapshots.
* Additional details (such as keys pressed) are now displayed alongside
action API calls in traces.
* Display of `canvas` content in traces is error-prone. Display is now
disabled by default, and can be enabled via the `Display canvas content`
UI setting.
* `Call` and `Network` panels now display additional time information.

## Breaking
*
[Expect(locator).toBeEditable()](https://playwright.dev/dotnet/docs/api/class-locatorassertions#locator-assertions-to-be-editable)
and
[locator.isEditable()](https://playwright.dev/dotnet/docs/api/class-locator#locator-is-editable)
now throw if the target element is not `<input>`, `<select>`, or a
number of other editable elements.

## Browser Versions
* Chromium 133.0.6943.16
* Mozilla Firefox 134.0
* WebKit 18.2

This version was also tested against the following stable channels:
* Google Chrome 132
* Microsoft Edge 132


## 1.49.0

## Aria snapshots

New assertion
[Expect(locator).toMatchAriaSnapshot()](https://playwright.dev/dotnet/docs/api/class-locatorassertions#locator-assertions-to-match-aria-snapshot)
verifies page structure by comparing to an expected accessibility tree,
represented as YAML.

```csharp
await page.GotoAsync("https://playwright.dev");
await Expect(page.Locator("body")).ToMatchAriaSnapshotAsync(@"
  - banner:
    - heading /Playwright enables reliable/ [level=1]
    - link ""Get started""
    - link ""Star microsoft/playwright on GitHub""
  - main:
    - img ""Browsers (Chromium, Firefox, WebKit)""
    - heading ""Any browser • Any platform • One API""
");
```

You can generate this assertion with [Test
Generator](https://playwright.dev/dotnet/docs/codegen) or by calling
[locator.ariaSnapshot()](https://playwright.dev/dotnet/docs/api/class-locator#locator-aria-snapshot).

Learn more in the [aria snapshots
guide](https://playwright.dev/dotnet/docs/aria-snapshots).

## Tracing groups

New method
[tracing.group()](https://playwright.dev/dotnet/docs/api/class-tracing#tracing-group)
allows you to visually group actions in the trace viewer.

```csharp
// All actions between GroupAsync and GroupEndAsync
// will be shown in the trace viewer as a group.
await Page.Context.Tracing.GroupAsync("Open Playwright.dev > API");
await Page.GotoAsync("https://playwright.dev/");
await Page.GetByRole(AriaRole.Link, new() { Name = "API" }).ClickAsync();
await Page.Context.Tracing.GroupEndAsync();
```

## Breaking: `chrome` and `msedge` channels switch to new headless mode

This change affects you if you're using one of the following channels in
your `playwright.config.ts`:
- `chrome`, `chrome-dev`, `chrome-beta`, or `chrome-canary`
- `msedge`, `msedge-dev`, `msedge-beta`, or `msedge-canary`

After updating to Playwright v1.49, run your test suite. If it still
passes, you're good to go. If not, you will probably need to update your
snapshots, and adapt some of your test code around PDF viewers and
extensions. See [issue
#​33566](microsoft/playwright#33566) for more
details.

## Try new Chromium headless

You can opt into the new headless mode by using `'chromium'` channel. As
[official Chrome documentation puts
it](https://developer.chrome.com/blog/chrome-headless-shell):

> New Headless on the other hand is the real Chrome browser, and is thus
more authentic, reliable, and offers more features. This makes it more
suitable for high-accuracy end-to-end web app testing or browser
extension testing.

See [issue
#​33566](microsoft/playwright#33566) for the
list of possible breakages you could encounter and more details on
Chromium headless. Please file an issue if you see any problems after
opting in.

 ... (truncated)

Commits viewable in [compare
view](microsoft/playwright-dotnet@v1.48.0...v1.59.0).
</details>

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mpaulosky <60372079+mpaulosky@users.noreply.github.com>
- promote Sprint 12 from sprint/12-xunit-v3-apphost-tests into dev
- add the Dependabot auto-merge workflow validated in PR #202
- complete Sprint 12 milestone closeout

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Merges Sprint 13 into dev, including the milestone workflow-chain repair and AppHost.Tests xUnit v3 / Playwright E2E updates.
Closes #211

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- preserve main ancestry in dev so the release PR no longer hits reconciliation conflicts
- keep dev's xUnit v3 test layout while resolving backport drift
- carry forward the reviewed Gimli history fix

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings April 26, 2026 22:36
@github-actions github-actions Bot added the squad Squad triage inbox — Lead will assign to a member label Apr 26, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🏗️ PR Added to Squad Triage Queue

This PR has been labeled with squad and added to the triage queue.

Next steps:

  • The squad Lead will review and assign to an appropriate team member
  • A squad:member label will be added after triage

If you know which squad member should handle this, you can add the appropriate squad:member label yourself.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results Summary

273 tests  +64   273 ✅ +64   15s ⏱️ -1s
  6 suites + 1     0 💤 ± 0 
  6 files   + 1     0 ❌ ± 0 

Results for commit 02cf370. ± Comparison against base commit 1e1fb57.

@codecov

codecov Bot commented Apr 26, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 78.64%. Comparing base (1e1fb57) to head (02cf370).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #213      +/-   ##
==========================================
+ Coverage   72.12%   78.64%   +6.51%     
==========================================
  Files          43       43              
  Lines         721      721              
  Branches      112      112              
==========================================
+ Hits          520      567      +47     
+ Misses        150      108      -42     
+ Partials       51       46       -5     

see 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Promotes dev to main for the Sprint 13 release while aligning the repo on the current xUnit v3 test layout and updating supporting CI/workflow + documentation artifacts that accompany the release state.

Changes:

  • Migrates remaining test projects to xunit.v3, adds xunit.runner.json where needed, and updates test code/fixtures for xUnit v3 conventions.
  • Updates central package/tooling versions (Directory.Packages.props, global.json) and refreshes multiple GitHub workflows.
  • Adds Sprint 7/8 retrospectives and ADRs documenting the xUnit v3 rollout.

Reviewed changes

Copilot reviewed 63 out of 67 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
tests/Web.Tests/xunit.runner.json Adds xUnit runner settings (parallelization + display options).
tests/Web.Tests/Web.Tests.csproj Switches to xunit.v3 and copies xunit.runner.json to output.
tests/Web.Tests/Security/RoleClaimsHelperTests.cs Updates header project name.
tests/Web.Tests/ResultTests.cs Updates header + trims duplicate header + adds AAA comments.
tests/Web.Tests/Handlers/UserManagementHandlerTests.cs Updates header + adds AAA comments.
tests/Web.Tests/Handlers/GetBlogPostsHandlerTests.cs Formatting/indentation normalization.
tests/Web.Tests/Handlers/EditBlogPostHandlerTests.cs Formatting/indentation normalization + AAA comments.
tests/Web.Tests/Handlers/DeleteBlogPostHandlerTests.cs Formatting/indentation normalization + AAA comments.
tests/Web.Tests/Handlers/CreateBlogPostHandlerTests.cs Formatting/indentation normalization + AAA comments.
tests/Web.Tests/Features/BlogPosts/Commands/EditBlogPostCommandValidatorTests.cs Updates header + adds AAA comments.
tests/Web.Tests/Features/BlogPosts/Commands/DeleteBlogPostCommandValidatorTests.cs Updates header + adds AAA comments.
tests/Web.Tests/Features/BlogPosts/Commands/CreateBlogPostCommandValidatorTests.cs Updates header + adds AAA comments.
tests/Web.Tests/Data/BlogPostMappingsTests.cs Updates header project name.
tests/Web.Tests/BlogPostTests.cs Updates header + adds AAA comments.
tests/Web.Tests/Behaviors/ValidationBehaviorTests.cs Updates header + adds AAA comments.
tests/Web.Tests.Integration/Web.Tests.Integration.csproj Switches to xunit.v3 and standardizes runner json as Content.
tests/Web.Tests.Integration/IntegrationTest1.cs Removes unused starter template test file.
tests/Web.Tests.Integration/Infrastructure/RedisFixture.cs Updates header + migrates IAsyncLifetime methods to ValueTask.
tests/Web.Tests.Integration/Infrastructure/RedisCachingCollection.cs Updates header project name.
tests/Web.Tests.Integration/Infrastructure/MongoDbFixture.cs Updates header + migrates IAsyncLifetime methods to ValueTask.
tests/Web.Tests.Integration/Infrastructure/BlogPostIntegrationCollection.cs Updates header project name.
tests/Web.Tests.Integration/Caching/BlogPostCacheServiceTests.cs Threads xUnit v3 TestContext cancellation token into async calls.
tests/Web.Tests.Integration/BlogPosts/MongoDbBlogPostRepositoryTests.cs Threads xUnit v3 TestContext cancellation token into async calls.
tests/Web.Tests.Bunit/xunit.runner.json Adds xUnit runner settings for bUnit test project.
tests/Web.Tests.Bunit/Web.Tests.Bunit.csproj Switches to xunit.v3 and adds runner json content copy.
tests/Web.Tests.Bunit/Testing/TestAuthorizationService.cs Removes duplicate/legacy header block.
tests/Web.Tests.Bunit/Features/ProfileTests.cs Updates header + renames test methods.
tests/Web.Tests.Bunit/Components/Theme/ThemeSelectorTests.cs Updates header + renames tests + minor comment text update.
tests/Web.Tests.Bunit/Components/Theme/ThemeProviderTests.cs Updates header + renames tests.
tests/Web.Tests.Bunit/Components/RazorSmokeTests.cs Updates header + renames tests + removes duplicate header block.
tests/Web.Tests.Bunit/Components/Layout/NavMenuTests.cs Updates header + renames tests + removes duplicate header block.
tests/Domain.Tests/xunit.runner.json Adds xUnit runner settings for Domain tests.
tests/Domain.Tests/Domain.Tests.csproj Switches to xunit.v3 and adds runner json content copy.
tests/Architecture.Tests/xunit.runner.json Adds xUnit runner settings for Architecture tests.
tests/Architecture.Tests/VsaLayerTests.cs Refactors AAA comments/variable naming in architecture rules.
tests/Architecture.Tests/ThemeLayerTests.cs Adds explicit AAA comments.
tests/Architecture.Tests/DomainLayerTests.cs Adds explicit AAA comments and extracts assembly var.
tests/Architecture.Tests/CachingLayerTests.cs Adds explicit AAA comments.
tests/Architecture.Tests/Architecture.Tests.csproj Adds xunit.v3 + xunit.analyzers + runner json content copy.
tests/AppHost.Tests/xunit.runner.json Adds runner config (disables assembly parallelization).
tests/AppHost.Tests/Infrastructure/PlaywrightManager.cs Updates IAsyncLifetime methods to ValueTask + suppress finalize.
tests/AppHost.Tests/Infrastructure/AspireManager.cs Updates IAsyncLifetime methods to ValueTask + suppress finalize.
tests/AppHost.Tests/EnvVarTests.cs Threads TestContext.Current.CancellationToken into app host builder call.
tests/AppHost.Tests/AppHost.Tests.csproj Switches to xunit.v3 and adds runner json content copy + formatting.
global.json Bumps pinned .NET SDK version.
docs/sprint-8-xunit-v3-pilot-retro.md Adds Sprint 8 retrospective doc for xUnit v3 pilot rollout.
docs/sprint-7-xunit-v3-pilot-retro.md Adds Sprint 7 pilot retrospective template/doc.
docs/adr/sprint8-architecture-tests-xunit-v3-rollout.md Adds ADR for Architecture.Tests xUnit v3 migration decision.
docs/adr/sprint7-xunit-v3-migration.md Adds ADR for initial xUnit v3 pilot decision.
Directory.Packages.props Updates Aspire + Playwright versions; updates centralized xUnit package set.
.squad/agents/pippin/history.md Updates squad agent history with sprint documentation work.
.squad/agents/gimli/history.md Updates squad agent history with migration details/learnings.
.squad/agents/boromir/history.md Updates squad agent history with packaging/CI learnings.
.squad/agents/aragorn/history.md Updates squad agent history with release/migration learnings.
.github/workflows/sync-readme.yml Updates action versions used by sync workflow.
.github/workflows/static.yml Updates Pages artifact action version.
.github/workflows/squad-test.yml Adds Domain.Tests job and updates workflow dependencies/summary.
.github/workflows/squad-promote.yml Updates setup-dotnet action version.
.github/workflows/squad-preview.yml Updates setup-dotnet action version and adds Domain.Tests run.
.github/workflows/squad-label-enforce.yml Updates checkout action version.
.github/workflows/squad-ci.yml Updates checkout + setup-dotnet action versions.
.github/workflows/release-blog.yml Improves output writing + ensures gh issue create uses explicit repo.
.github/workflows/milestone-release-decision.yml Uses explicit --repo for gh commands and output grouping.
.github/workflows/milestone-blog.yml Uses explicit --repo for gh issue create and output grouping.
.github/workflows/dependabot-auto-merge.yml Adds workflow to enable/refresh auto-merge for Dependabot PRs.
.github/workflows/codeql-analysis.yml Updates checkout, setup-dotnet, and CodeQL action major versions.
.github/workflows/code-metrics.yml Bumps create-pull-request action patch version.
Comments suppressed due to low confidence (2)

tests/Web.Tests/Data/BlogPostMappingsTests.cs:11

  • The file header now says Web.Tests, but the namespace is still Unit.Data. Since Web.Tests.csproj sets <RootNamespace>Web</RootNamespace>, keeping Unit.* namespaces in this project is confusing and makes it harder to navigate/find tests. Consider renaming the namespace to align with the project (e.g., Web.Data or Web.Tests.Data).
    tests/Web.Tests/Handlers/UserManagementHandlerTests.cs:11
  • This file is in the Web.Tests project, but it still declares namespace Unit.Handlers; (left over from the old Unit.Tests project naming). Aligning the namespace with the project (Web.Handlers) will keep discovery/navigation consistent with the rest of the test suite.

Comment on lines +48 to +60
### Per-project versioning strategy

Use `Directory.Packages.props` to manage xUnit versions per project:

```xml
<ItemGroup>
<PackageVersion Include="xunit" Version="2.9.3" />
<PackageVersion Include="xunit.v3" Version="3.0.x" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5" />
</ItemGroup>
```

Each project's `.csproj` declares which version it uses. This allows coexistence during migration — projects can upgrade independently without blocking each other.

Copilot AI Apr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The "Per-project versioning strategy" snippet still documents a central PackageVersion Include="xunit" Version="2.9.3" entry and xunit.v3 Version="3.0.x", but Directory.Packages.props in this PR removes the xUnit v2 entry and pins xunit.v3 to 3.2.2. Please update this section to reflect the current centralized package strategy used by the repo (and remove guidance about v2/v3 coexistence if it's no longer supported/needed).

Copilot uses AI. Check for mistakes.
```

Versions are centralized in `Directory.Packages.props` (3.2.2, 1.27.0, 3.1.1 respectively).
No individual `.csproj` version pins. See `.squad/decisions/inbox/boromir-xunit-v3-package-strategy.md`.

Copilot AI Apr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This doc links to .squad/decisions/inbox/... files, but .squad/decisions/inbox/ is gitignored (so readers on GitHub won't be able to open those references). Please replace these with links to tracked sources (e.g., .squad/decisions.md after Scribe merge, or a tracked ADR under docs/adr/).

Suggested change
No individual `.csproj` version pins. See `.squad/decisions/inbox/boromir-xunit-v3-package-strategy.md`.
No individual `.csproj` version pins. See the tracked team decisions in
[`.squad/decisions.md`](../.squad/decisions.md).

Copilot uses AI. Check for mistakes.
Comment on lines +211 to +233
| xUnit v3 Rollout Strategy (Architecture → Blazor) | Aragorn | `aragorn-xunit-v3-rollout-strategy.md` |

---

## Next Steps & Recommendations

### Should Blazor.Tests adopt xUnit v3 next?

**Yes — recommended for Sprint 9.** The two projects with the most complex
migration surface are `Unit.Tests` and `Blazor.Tests`. `Blazor.Tests` uses
bUnit which has explicit xUnit v3 support. Migrating it next would complete
the pilot phase and establish the bUnit + xUnit v3 pattern.

**Suggested Sprint 9 scope:**
- Wave 1 (Boromir): Update `Blazor.Tests` packages
- Wave 2 (Gimli): Migrate test code, confirm bUnit compatibility
- Wave 3 (Pippin): ADR, (Aragorn): Retrospective

### Should Unit.Tests be migrated alongside or after Blazor.Tests?

`Unit.Tests` and `Blazor.Tests` can potentially be done in the same sprint
in parallel waves if CI capacity allows. If sequenced, do `Blazor.Tests` first
(higher value, more interesting migration surface) and `Unit.Tests` second.

Copilot AI Apr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This retrospective refers to Blazor.Tests and tests/Blazor.Tests, but this repository's bUnit project is tests/Web.Tests.Bunit (and there is no tests/Blazor.Tests directory). Please update the project names/tables in this section to match the actual test project layout so future readers aren't sent looking for non-existent projects.

Suggested change
| xUnit v3 Rollout Strategy (Architecture → Blazor) | Aragorn | `aragorn-xunit-v3-rollout-strategy.md` |
---
## Next Steps & Recommendations
### Should Blazor.Tests adopt xUnit v3 next?
**Yes — recommended for Sprint 9.** The two projects with the most complex
migration surface are `Unit.Tests` and `Blazor.Tests`. `Blazor.Tests` uses
bUnit which has explicit xUnit v3 support. Migrating it next would complete
the pilot phase and establish the bUnit + xUnit v3 pattern.
**Suggested Sprint 9 scope:**
- Wave 1 (Boromir): Update `Blazor.Tests` packages
- Wave 2 (Gimli): Migrate test code, confirm bUnit compatibility
- Wave 3 (Pippin): ADR, (Aragorn): Retrospective
### Should Unit.Tests be migrated alongside or after Blazor.Tests?
`Unit.Tests` and `Blazor.Tests` can potentially be done in the same sprint
in parallel waves if CI capacity allows. If sequenced, do `Blazor.Tests` first
(higher value, more interesting migration surface) and `Unit.Tests` second.
| xUnit v3 Rollout Strategy (Architecture → Web.Tests.Bunit) | Aragorn | `aragorn-xunit-v3-rollout-strategy.md` |
---
## Next Steps & Recommendations
### Should Web.Tests.Bunit adopt xUnit v3 next?
**Yes — recommended for Sprint 9.** The two projects with the most complex
migration surface are `Unit.Tests` and `Web.Tests.Bunit`.
`Web.Tests.Bunit` uses bUnit which has explicit xUnit v3 support.
Migrating it next would complete the pilot phase and establish the
bUnit + xUnit v3 pattern.
**Suggested Sprint 9 scope:**
- Wave 1 (Boromir): Update `Web.Tests.Bunit` packages
- Wave 2 (Gimli): Migrate test code, confirm bUnit compatibility
- Wave 3 (Pippin): ADR, (Aragorn): Retrospective
### Should Unit.Tests be migrated alongside or after Web.Tests.Bunit?
`Unit.Tests` and `Web.Tests.Bunit` can potentially be done in the same
sprint in parallel waves if CI capacity allows. If sequenced, do
`Web.Tests.Bunit` first (higher value, more interesting migration
surface) and `Unit.Tests` second.

Copilot uses AI. Check for mistakes.
Comment on lines 13 to 23
<PackageReference Include="bunit"/>
<PackageReference Include="coverlet.collector"/>
<PackageReference Include="coverlet.msbuild">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="FluentAssertions"/>
<PackageReference Include="Microsoft.NET.Test.Sdk" />
<PackageReference Include="NSubstitute"/>
<PackageReference Include="xunit"/>
<PackageReference Include="xunit.v3"/>
<PackageReference Include="xunit.runner.visualstudio"/>

Copilot AI Apr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tests/Web.Tests.Bunit now targets xunit.v3 and already includes coverlet.collector, but it still references coverlet.msbuild. Other test projects in this PR removed coverlet.msbuild, and having both is redundant and can complicate coverage runs. Consider removing coverlet.msbuild here and standardizing on coverlet.collector only.

Copilot uses AI. Check for mistakes.
Comment on lines +39 to +44
Adopt xUnit v3 for **Architecture.Tests** in Sprint 8 Wave 2, following the same pattern established by Domain.Tests pilot:

1. **Package reference** — Use `xunit.v3` (v3.2.2) via `Directory.Packages.props`
2. **Output type** — Set `<OutputType>Exe</OutputType>` for standalone MTP execution
3. **API rewrite** — Update attribute naming (`[Fact]` → `[Test]`) and assertion patterns
4. **Test validation** — All 11 architecture tests pass with xUnit v3

Copilot AI Apr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This ADR lists migration steps that don't match the actual repo changes: the test projects still use [Fact] (no [Test] rename) and the csproj files shown in this PR do not set <OutputType>Exe</OutputType>. Please update the "Decision" section so it describes the real migration steps used here (package swap + runner json + any actual API changes).

Suggested change
Adopt xUnit v3 for **Architecture.Tests** in Sprint 8 Wave 2, following the same pattern established by Domain.Tests pilot:
1. **Package reference** — Use `xunit.v3` (v3.2.2) via `Directory.Packages.props`
2. **Output type** — Set `<OutputType>Exe</OutputType>` for standalone MTP execution
3. **API rewrite** — Update attribute naming (`[Fact]``[Test]`) and assertion patterns
4. **Test validation** — All 11 architecture tests pass with xUnit v3
Adopt xUnit v3 for **Architecture.Tests** in Sprint 8 Wave 2, following the
same rollout shape validated by the Domain.Tests pilot, but reflecting the
actual changes made in this project:
1. **Package reference** — Replace xUnit v2 package usage with `xunit.v3`
(v3.2.2) via `Directory.Packages.props`
2. **Runner configuration** — Add/update `xunit.runner.json` settings needed
for the v3 runner and test execution model used in this repo
3. **Test code changes** — Keep existing `[Fact]`-based tests; do not rename
attributes to `[Test]`; apply only the minimal API/compatibility updates
actually required by the Architecture.Tests project
4. **Test validation** — All 11 architecture tests pass with xUnit v3 after
the package and runner configuration changes

Copilot uses AI. Check for mistakes.
|---|---|---|
| `tests/Domain.Tests` | ✅ Migrated | Sprint 7 |
| `tests/Architecture.Tests` | ✅ Migrated | Sprint 8 |
| `tests/Blazor.Tests` | 🔜 Recommended next | Sprint 9 |

Copilot AI Apr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This rollout status table lists tests/Blazor.Tests, but the repo currently has tests/Web.Tests.Bunit (and no Blazor.Tests project). Please update the table to reflect the actual test projects under tests/ so the status summary remains accurate.

Suggested change
| `tests/Blazor.Tests` | 🔜 Recommended next | Sprint 9 |
| `tests/Web.Tests.Bunit` | 🔜 Recommended next | Sprint 9 |

Copilot uses AI. Check for mistakes.
Comment on lines +142 to +151
## Next Steps

> **📋 If decision = Proceed:**

| Sprint | Scope | Owner |
|---|---|---|
| Sprint 8 | Migrate `tests/Unit.Tests` | Gimli |
| Sprint 9 | Migrate `tests/Architecture.Tests` | Gimli |
| Sprint 10 | Migrate `tests/Blazor.Tests` (bUnit) | Gimli + Legolas |

Copilot AI Apr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This Sprint 7 retro template refers to Blazor.Tests / tests/Blazor.Tests, but the repo's bUnit project is tests/Web.Tests.Bunit (and no Blazor.Tests project exists). Please update these references so the planned rollout targets match the actual test project layout.

Copilot uses AI. Check for mistakes.

### Issues Encountered

- _TBD — see tracking doc `.squad/decisions/inbox/aragorn-sprint7-xunit-pilot-tracking.md`_

Copilot AI Apr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This doc references a tracking file under .squad/decisions/inbox/, but that directory is gitignored and won't be available to readers/reviewers on GitHub. Consider moving the tracking info to a tracked doc (or remove the link and reference an issue/PR instead).

Suggested change
- _TBD — see tracking doc `.squad/decisions/inbox/aragorn-sprint7-xunit-pilot-tracking.md`_
- _TBD — summarize sprint issues here after sprint close_

Copilot uses AI. Check for mistakes.

steps:
- name: Enable auto-merge
uses: actions/github-script@v8

Copilot AI Apr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This workflow uses actions/github-script@v8, but the rest of the repo's workflows standardize on actions/github-script@v9. Please bump to @v9 here as well to stay consistent and pick up the latest fixes/security updates.

Suggested change
uses: actions/github-script@v8
uses: actions/github-script@v9

Copilot uses AI. Check for mistakes.
Comment on lines +36 to +37
2. **Output type** — Set `<OutputType>Exe</OutputType>` to enable standalone test execution via MTP
3. **Compatibility** — Confirm existing test code compiles without major rewrites

Copilot AI Apr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The ADR states the pilot requires setting <OutputType>Exe</OutputType> and implies [Fact] becomes [Test], but the test projects in this PR continue to use [Fact] and do not set OutputType in their csproj files. Please revise the pilot requirements to match the migration pattern actually implemented in this repository.

Suggested change
2. **Output type**Set `<OutputType>Exe</OutputType>` to enable standalone test execution via MTP
3. **Compatibility** — Confirm existing test code compiles without major rewrites
2. **Project-file compatibility**Keep the existing test project shape used in this repository; the pilot does not require setting `<OutputType>Exe</OutputType>`
3. **Test-code compatibility** — Confirm existing test code compiles and runs with minimal changes, including continued use of current xUnit attributes such as `[Fact]`

Copilot uses AI. Check for mistakes.
@mpaulosky
mpaulosky merged commit 12d3bf7 into main Apr 30, 2026
131 checks passed
@mpaulosky mpaulosky mentioned this pull request May 8, 2026
4 tasks
mpaulosky added a commit that referenced this pull request May 8, 2026
## Release Checklist
- [x] Latest dev CI is green on `0dc7e88`
- [x] Release scope reviewed
- [x] No breaking changes identified
- [x] Release notes drafted

## Release Scope
- Sprint 14 — Board Automation Reliability (#215, #238, #239, #240,
#244)
- Sprint 15 — Local Mongo Clear Command (#246, #247, #248, #249, #252)
- Supporting squad maintenance, docs, lint, dependency, and test updates
already merged into `dev` since PR #213
- Sync PR #256 merged `main` into `dev` to clear the release conflicts
on this PR

## Release Notes
- Sprint 14 ships board automation hardening, theme toggle/theme
selector persistence fixes, workspace skill cleanup, and higher Web
project coverage.
- Sprint 15 ships the local-only AppHost `clear-myblog-data` command
plus Mongo clear hardening and test coverage.
- This release also includes accumulated docs, test-migration, lint, and
maintenance updates already validated on `dev`.

## Notes
- Sprint 15 milestone was closed during release prep because it had 0
open issues.
- PR #256 reconciled `main` into `dev` with a merge commit so this
release PR is mergeable again.
- This PR promotes the current `dev` branch to `main` per the
release-only branch model.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

squad Squad triage inbox — Lead will assign to a member

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants