Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
190 commits
Select commit Hold shift + click to select a range
a2d5b95
[docs] Document timestamp search qualifier for telemetry filtering (#…
aspire-repo-bot[bot] Jun 6, 2026
27cf1ce
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 7, 2026
70fc7aa
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 8, 2026
a3fb06a
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 8, 2026
05a46fd
[docs] Fix persistent container endpoint proxy default docs (#1227)
IEvangelist Jun 8, 2026
935ad64
Add Aspire 13.5 release scaffold
IEvangelist Jun 8, 2026
69c9cb7
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 8, 2026
add6be9
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 8, 2026
956a98e
[docs] Update Foundry Local docs to reflect CLI-based lifecycle (aspi…
aspire-repo-bot[bot] Jun 9, 2026
b2af95a
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 9, 2026
df5f07b
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 10, 2026
9b28ec6
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 10, 2026
627f68f
docs: document coding agent telemetry detection (aspire#18065)
aspire-repo-bot[bot] Jun 10, 2026
81d4938
Merge pull request #1242 from microsoft/docs/coding-agent-telemetry-1…
DamianEdwards Jun 10, 2026
7aa48a8
[docs] Add WithTerminal() interactive terminal sessions page (#1244)
mitchdenny Jun 11, 2026
88769ea
docs: update 13.5 banners and release notes
IEvangelist Jun 11, 2026
52a4a0d
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 11, 2026
1619d44
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 12, 2026
643504f
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 16, 2026
43f1d24
Document OS information check in aspire doctor command
aspire-repo-bot[bot] Jun 17, 2026
ff5fe72
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 18, 2026
1dddc9a
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 22, 2026
612131f
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 22, 2026
2e4e93f
Fix broken WithTerminal link in 13.5 whats-new (#1281)
sebastienros Jun 22, 2026
76def87
Add dashboard troubleshooting page (#1255)
JamesNK Jun 23, 2026
becb334
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 23, 2026
5edf0f4
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 25, 2026
131768e
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 25, 2026
378ca1f
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 25, 2026
2550c15
[docs] Add deprecation notices to GitHub Models integration docs (#1279)
aspire-repo-bot[bot] Jun 25, 2026
32ccc5c
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 25, 2026
bc8c313
Fix forbidden phrases flagged by CI (#1301)
IEvangelist Jun 25, 2026
f0be337
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 25, 2026
1064f2b
docs: mention Cohere and MistralAI model families in Foundry host doc…
aspire-repo-bot[bot] Jun 25, 2026
8811d57
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 26, 2026
40baf73
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 26, 2026
0a92774
[docs] Clarify C# file-based AppHost launch profile location (#1176)
aspire-repo-bot[bot] Jun 26, 2026
ce8929c
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 26, 2026
0eb6148
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 26, 2026
93d0681
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 28, 2026
840be81
[docs] Document icon fallback behavior for resource commands (#1277)
aspire-repo-bot[bot] Jun 29, 2026
3892cf0
[docs] Add Nix installation path for Aspire CLI (#1286)
aspire-repo-bot[bot] Jun 29, 2026
bc33b3d
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 29, 2026
58647e1
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 29, 2026
2ec60a3
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 29, 2026
ba2ab8b
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 29, 2026
f4d564a
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 29, 2026
9a1db57
Address aspire doctor doc feedback
danegsta Jun 29, 2026
5951a0c
Merge pull request #1267 from microsoft/docs-aspire-18252-os-doctor-6…
danegsta Jun 29, 2026
70d4cdf
[docs] Document proxyless endpoint port pre-allocation (Aspire 13.5) …
aspire-repo-bot[bot] Jun 29, 2026
0b1f791
Add Aspire version placeholders to release docs (#1314)
danegsta Jun 30, 2026
9047b16
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 30, 2026
9d2a467
Fix OOM in aspire-version-placeholders build hook (#1318)
IEvangelist Jun 30, 2026
7389910
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 30, 2026
38d323b
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 30, 2026
17c8373
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jun 30, 2026
66a17d3
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 1, 2026
cec3703
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 1, 2026
64afd5e
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 2, 2026
2dbdea3
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 2, 2026
a969c9e
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 3, 2026
ce0566a
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 6, 2026
7ddc2cd
Add Kubernetes persistent volume documentation (#1328)
mitchdenny Jul 6, 2026
ec461ab
Add WithTerminal docs and aspire terminal CLI reference (#1329)
mitchdenny Jul 6, 2026
55c420e
Document AI agent skill-usage telemetry (#1229)
IEvangelist Jul 6, 2026
b7a0b74
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 6, 2026
c47764e
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 8, 2026
6844503
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 8, 2026
e6536d5
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 8, 2026
200a19a
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 9, 2026
38b76fa
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 9, 2026
cffc5a5
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 9, 2026
e09a070
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 9, 2026
2a666e1
Document --skills and --skill-locations flags for init and new comman…
JamesNK Jul 10, 2026
e3f3ed0
Document PromptProgressAsync API and add TypeScript examples to inter…
JamesNK Jul 10, 2026
e5b150c
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 10, 2026
8df6da7
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 10, 2026
554797d
[docs] CLI: mention 'Stopping Aspire...' feedback message on Ctrl+C (…
IEvangelist Jul 13, 2026
9aa8cdd
docs: note graceful backchannel stream cancellation during aspire run…
IEvangelist Jul 13, 2026
b9b32d3
docs: document command return values for custom resource commands (#1…
Copilot Jul 13, 2026
06b2cad
[docs] Update Bun integration docs for first-party Aspire.Hosting.Jav…
IEvangelist Jul 13, 2026
106eb9d
Address PR review feedback for release 13.5 docs
IEvangelist Jul 13, 2026
fc1d295
[docs] Document automatic HTTPS certificate generation for non-.NET A…
IEvangelist Jul 13, 2026
c5d7298
Document Go polyglot options flattening breaking change (#1360)
ellahathaway Jul 14, 2026
3024fb9
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 16, 2026
2a3ab06
[docs] Obsolete PublishAsConnectionString migration guidance (#1237)
aspire-repo-bot[bot] Jul 17, 2026
809d73c
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 17, 2026
7acb5a4
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 20, 2026
648831c
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 20, 2026
0379e95
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 20, 2026
6b14466
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 21, 2026
f07fc8d
Document Aspire VS Code AppHost polling (#1382)
ellahathaway Jul 21, 2026
e66ef30
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 21, 2026
05b58da
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 21, 2026
828de15
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 21, 2026
a574a66
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 21, 2026
36ae005
Merge main into release/13.5
IEvangelist Jul 21, 2026
c2ec25e
Document aspire stop --force resource cleanup (#1387)
danegsta Jul 21, 2026
3aeca89
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 22, 2026
02fa5ff
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 22, 2026
2f91aad
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 23, 2026
f045e99
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 23, 2026
288327a
[docs] Update aspire run/stop graceful shutdown documentation (#1291)
aspire-repo-bot[bot] Jul 23, 2026
0638b3f
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 24, 2026
f985c3a
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 24, 2026
f7108fa
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 27, 2026
903d99a
Merge remote-tracking branch 'origin/main' into release/13.5
github-actions[bot] Jul 27, 2026
6f3e085
[docs] Update 13.4 what's new: aspire.config.json template profiles r…
aspire-repo-bot[bot] Aug 5, 2026
793d9e0
[docs] Document aspire stop socket cleanup for detached AppHosts (#1283)
aspire-repo-bot[bot] Aug 5, 2026
6826de8
[docs] Document WithExplicitStart() callback deferral behavior (#1194)
aspire-repo-bot[bot] Aug 5, 2026
dcbfe0f
Merge main into release/13.5 (#1427)
IEvangelist Aug 5, 2026
6dcacf8
docs: clarify aspire ls --all excludes agent-skill AppHost snippets (…
aspire-repo-bot[bot] Aug 7, 2026
55cf7aa
docs: fix outdated VS Code CLI install command name (#1434)
aspire-repo-bot[bot] Aug 7, 2026
446aefb
docs: note that resource logs are flushed before terminal notificatio…
aspire-repo-bot[bot] Aug 7, 2026
c49acf3
docs: document certutil-missing warning in aspire doctor and certs cl…
aspire-repo-bot[bot] Aug 7, 2026
b78d22b
Document Console/Terminal view toggle for WithTerminal resources (#1438)
aspire-repo-bot[bot] Aug 7, 2026
0e51c97
docs: mention orphaned AppHost cleanup in aspire ps and aspire stop (…
aspire-repo-bot[bot] Aug 7, 2026
5476ba6
[docs] Add docs for Aspire.Hosting.Dotnet integration (#1437)
aspire-repo-bot[bot] Aug 7, 2026
ebc1481
Document aspire doctor VS Code extension check (#1440)
aspire-repo-bot[bot] Aug 7, 2026
142642c
docs: document App Service delegated subnet support (#1441)
aspire-repo-bot[bot] Aug 7, 2026
db38be7
[docs] Remove stale Dashboard:AI:Disabled config entry, document AI A…
aspire-repo-bot[bot] Aug 7, 2026
00b7567
Document removing empty resources in Manage logs and telemetry dialog…
aspire-repo-bot[bot] Aug 7, 2026
70e59c9
[docs] Document WithUniqueResourceNaming for Azure Container App envi…
aspire-repo-bot[bot] Aug 7, 2026
bce69de
Document dashboard run stop behavior and single shutdown message (#1445)
aspire-repo-bot[bot] Aug 7, 2026
84ca36b
[docs] Document Linux dev certificate trust improvements (#1446)
aspire-repo-bot[bot] Aug 7, 2026
c52c4e3
Update WithTerminal docs: default to Terminal view for live resources…
aspire-repo-bot[bot] Aug 7, 2026
672882f
docs: update Go Delve server headless debugging docs for new API shap…
aspire-repo-bot[bot] Aug 7, 2026
75b6e80
docs: update Kubernetes persistent volume parameterized method names …
aspire-repo-bot[bot] Aug 10, 2026
0bcb9c4
Document features.polyglotIntegrationFilterEnabled config flag (#1457)
aspire-repo-bot[bot] Aug 11, 2026
9331ed6
Fix TypeScript withEndpointsInEnvironment docs on project-resources p…
IEvangelist Aug 11, 2026
04b2599
Fix Dev Tunnels "Configure dev tunnel options" docs (#1468)
IEvangelist Aug 11, 2026
26a2450
docs: document asHostedAgentWithProtocol for polyglot hosted agents
aspire-repo-bot[bot] Aug 12, 2026
834ff1f
Fix AppHost terminology in hosted agent docs
IEvangelist Aug 12, 2026
bdd4ff4
[docs] Document WithLaunchToolArgs in ASPIREEXTENSION001 diagnostic p…
aspire-repo-bot[bot] Aug 12, 2026
a05775c
Apply suggestion from @sebastienros
sebastienros Aug 12, 2026
c7375b6
[docs] Document aspire doctor check timeouts (#1472)
aspire-repo-bot[bot] Aug 13, 2026
32f826f
docs: SHA-512 for Aspire Skills bundle integrity, hide remote-fetch t…
aspire-repo-bot[bot] Aug 13, 2026
9bcdd79
docs: remove hidden skills fetch flag (#1486)
IEvangelist Aug 13, 2026
8bd3837
docs: correct custom resource command CLI arguments to named options …
IEvangelist Aug 13, 2026
bf9d577
Merge main into release/13.5 (#1488)
IEvangelist Aug 13, 2026
a7cca9d
docs: rewrite What's new in Aspire 13.5 with verified detail (#1489)
IEvangelist Aug 13, 2026
e8d025b
Recapture dashboard screenshots for Aspire 13.5 UX (#1497)
IEvangelist Aug 14, 2026
07792a1
docs: document change-location delete confirmation for Azure resource…
aspire-repo-bot[bot] Aug 14, 2026
27fb4c7
docs: remove misleading WithTerminal Shell option (#1478)
aspire-repo-bot[bot] Aug 14, 2026
6141cfe
[docs] Document WithTerminal Columns/Rows validation (#1479)
aspire-repo-bot[bot] Aug 14, 2026
5316c7f
Apply suggestion from @alistairmatthews
sebastienros Aug 14, 2026
5fbf4ee
[docs] Document DotnetProjectResource namespace move to Aspire.Hostin…
aspire-repo-bot[bot] Aug 14, 2026
9db879a
[docs] Pin AKS credential command to the deployment subscription (#1476)
aspire-repo-bot[bot] Aug 15, 2026
cff2fd6
[docs] Document TypeScript AppHost dev-cert trust for outbound TLS co…
aspire-repo-bot[bot] Aug 15, 2026
5db4f1d
[docs] Document ASPIREWATCH001 run mode configuration diagnostic (#1471)
aspire-repo-bot[bot] Aug 15, 2026
d680255
Clarify hosted agent protocol APIs
IEvangelist Aug 17, 2026
14b753c
Correct hosted agent protocol guidance
IEvangelist Aug 17, 2026
4f4ef53
Fix WithTerminal columns default (#1506)
IEvangelist Aug 17, 2026
8bf18e1
docs: update ConfigureCustomDomain and CompletionState experimental s…
aspire-repo-bot[bot] Aug 17, 2026
0adc054
Restore CI-validated hosted agent protocol docs
IEvangelist Aug 17, 2026
b84fdfe
docs: remove stale ConfigureCustomDomain guidance
IEvangelist Aug 17, 2026
94da660
Clarify custom domain diagnostic history
IEvangelist Aug 17, 2026
27aa805
Use current Aspire terminology
IEvangelist Aug 17, 2026
37d3a8c
Clarify pipeline API graduation scope
IEvangelist Aug 17, 2026
62a0395
Merge pull request #1507 from microsoft/docs/pr-19007-32045148035-1-a…
IEvangelist Aug 17, 2026
df60b90
Merge release/13.5 into docs branch
IEvangelist Aug 17, 2026
0dae430
Merge pull request #1475 from microsoft/docs/pr-18980-31557036901-1-9…
IEvangelist Aug 17, 2026
cd2f532
Revise "What's new in Aspire 13.5" for DX impact
IEvangelist Aug 17, 2026
12606c1
Potential fix for pull request finding
IEvangelist Aug 18, 2026
1ea5cc2
Address PR review feedback on What's new in 13.5
IEvangelist Aug 18, 2026
aa27778
Merge pull request #1509 from microsoft/dapine/whats-new-13-5-dx
IEvangelist Aug 18, 2026
4d6e6d7
[docs] Document HTTP command timeout behavior (#1515)
aspire-repo-bot[bot] Aug 18, 2026
255920e
Document dashboard time format behavior (#1521)
IEvangelist Aug 18, 2026
ffab9b1
Update generated API data to Aspire 13.5 (#1514)
IEvangelist Aug 18, 2026
9a4b0b9
[docs] Document AzureBicepResourceScope.CreateForSubscription/CreateF…
aspire-repo-bot[bot] Aug 18, 2026
44c76a5
[docs] Document project serverReadyAction override in VS Code extensi…
aspire-repo-bot[bot] Aug 18, 2026
7bc6a13
docs: troubleshoot skipped Gateways/Ingresses in TLS deploys (#1470)
aspire-repo-bot[bot] Aug 18, 2026
5dbcb52
[docs] Document AddPersistentVolume on AKS environments (#1474)
aspire-repo-bot[bot] Aug 18, 2026
2c9919e
[docs] Document AspireCliInvocationMode for dotnet run DNX invocation…
aspire-repo-bot[bot] Aug 18, 2026
f749954
docs: describe automatic CLI bundle setup recovery at build time (#1496)
aspire-repo-bot[bot] Aug 18, 2026
0e09ba4
docs: document DotnetProjectResource publish limitation (#1501)
aspire-repo-bot[bot] Aug 18, 2026
1d662a0
[docs] Document WithServiceDelegation and AzureSubnetServiceDelegatio…
aspire-repo-bot[bot] Aug 18, 2026
6c85d38
[docs] Document ASPIRE009/010/011 and restored CLI bundle default (#1…
aspire-repo-bot[bot] Aug 18, 2026
503a344
[docs] Document ITokenCredentialProvider for reusing Aspire's Azure c…
aspire-repo-bot[bot] Aug 18, 2026
1a698c3
[docs] Document partial Linux certificate trust behavior for `aspire …
aspire-repo-bot[bot] Aug 18, 2026
93a1ae0
[docs] Document new experimental APIs from Aspire.Hosting.Dotnet deco…
aspire-repo-bot[bot] Aug 18, 2026
76e53cf
docs: document ASPIRE_CLI_START_TIMEOUT env var (#1529)
aspire-repo-bot[bot] Aug 18, 2026
b8ae5b7
[docs] Document mixed-quality staging package discovery in aspire add…
aspire-repo-bot[bot] Aug 18, 2026
4d58bbf
Remove duplicate DNX guidance (#1530)
IEvangelist Aug 18, 2026
71b43f7
docs: troubleshoot Azure Artifacts package search (#1523)
IEvangelist Aug 18, 2026
8de608f
Document ATS support in custom integration guides (#1498)
IEvangelist Aug 18, 2026
d9621bc
[docs] Document dashboard bundle preparation status message (#1508)
aspire-repo-bot[bot] Aug 18, 2026
e3c843d
Document staging channel refusal on daily/local/pr CLI builds (#1522)
IEvangelist Aug 18, 2026
7ba2ebb
[docs] Document default fsGroup for Kubernetes persistent volumes (#1…
aspire-repo-bot[bot] Aug 18, 2026
9775981
Merge main into release/13.5
IEvangelist Aug 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
34 changes: 34 additions & 0 deletions .agents/skills/doc-pr-reviewer/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,40 @@ For each non-`narrative` claim:
- `contradicted` — the source code says something different than the PR claims; include both texts
4. Do not infer from documentation, blog posts, or other branches. The branch you actually checked out and recorded for that repo (per the **Source of truth** section — the PR's matching branch, or the documented fallback when none matches) is the only source of truth.

## Current-version placeholder review

When a docs PR adds or edits Aspire version strings, check whether the version
is intended to represent the current release or an intentionally fixed version.
The docs site provides placeholders for current-version values:

| Placeholder | Use for |
|-------------|---------|
| `%ASPIRE_VERSION%` | Full current Aspire version, including patch (for example, `13.5.0`) |
| `%ASPIRE_VERSION_MAJOR_MINOR%` | Current Aspire major/minor display version (for example, `13.5`) |

Flag hard-coded Aspire versions as a review finding when they appear in current
copy/paste guidance that should track the active release, including:

- `Aspire.AppHost.Sdk` declarations in project files or file-based apps.
- `#:package Aspire.*@...` file-based app package directives.
- Aspire CLI or AppHost sample output that reports the current CLI/AppHost
version.
- Getting started, installation, or "use this today" examples that should move
with the release branch.

Do **not** require placeholders for intentionally fixed versions, including:

- What's-new or release-note pages that describe a specific historical release.
- Upgrade examples that deliberately compare old and new versions.
- CLI examples where the point is pinning a specific version with `--version`,
`-Version`, or `Aspire.ProjectTemplates::...`.
- Versioned schema URLs, package compatibility notes, minimum-version
requirements, third-party dependency versions, container image tags, or issue
reproduction snippets.

If the intent is ambiguous, leave a `COMMENT` asking whether the version should
track the current release instead of requesting changes outright.

## Phase A artifact

When Phase A finishes, write down (in memory) a frozen Phase A result containing:
Expand Down
21 changes: 18 additions & 3 deletions .github/agents/release-verifier.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,22 @@ Scan the documentation for version strings that should have been updated for thi

Determine the immediately prior version. For `13.2` the prior is `13.1`; for `13.0` the prior is `9.5` (or whatever the last release of the previous major is). Use the existing what's-new files to determine this.

#### 4b. Scan for stale version references
#### 4b. Verify shared version placeholders

Read `src/frontend/config/aspire-versions.mjs` and verify the exported current
version constants match the release being verified:

| Export | Expected value |
|--------|----------------|
| `currentAspireMajorMinorVersion` | `{VERSION}` (for example, `13.2`) |
| `currentAspireVersion` | `{NUGET_VERSION}` (for example, `13.2.0`) |

These constants drive the `%ASPIRE_VERSION_MAJOR_MINOR%` and
`%ASPIRE_VERSION%` documentation placeholders. If either value is stale, flag it
as a **critical** failure because generated docs can show the wrong current
release version.

#### 4c. Scan for stale version references

Search the docs content tree for references to the prior NuGet version that appear **outside** of intentional historical context (e.g., upgrade-from examples that deliberately show the old version).

Expand All @@ -139,7 +154,7 @@ grep -rn 'Aspire.AppHost.Sdk.*Version="{PRIOR_NUGET_VERSION}"' src/frontend/src/
--include="*.mdx"
```

#### 4c. Evaluate each match
#### 4d. Evaluate each match

For every match found:

Expand All @@ -149,7 +164,7 @@ For every match found:
- **Stale (should be updated)**: The reference is in current guidance, installation instructions, or sample code that a user would copy today. Flag these for update.
3. Log each stale reference with file path, line number, and surrounding context.

#### 4d. Verify new version references
#### 4e. Verify new version references

Spot-check that key documentation pages reference the release version:

Expand Down
7 changes: 6 additions & 1 deletion src/frontend/astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import { iconPacks } from './config/icon-packs.mjs';
import { locales } from './config/locales.ts';
import { headAttrs } from './config/head.attrs.ts';
import { socialConfig } from './config/socials.config.ts';
import { aspireVersionPlaceholdersIntegration } from './config/aspire-version-placeholders-integration.mjs';
import { remarkAspireVersionPlaceholders } from './config/remark-aspire-version-placeholders.mjs';
import catppuccin from '@catppuccin/starlight';
import lunaria from './config/lunaria-starlight.mjs';
import mermaid from 'astro-mermaid';
Expand Down Expand Up @@ -46,7 +48,9 @@ export default defineConfig({
site: 'https://aspire.dev',
trailingSlash: 'always',
markdown: {
processor: unified(),
processor: unified({
remarkPlugins: [remarkAspireVersionPlaceholders],
}),
},
redirects: redirects,
integrations: [
Expand Down Expand Up @@ -223,6 +227,7 @@ export default defineConfig({
gfm: true,
}),
...(isBuildTimingEnabled ? [buildTiming()] : []),
aspireVersionPlaceholdersIntegration(),
],
build: {
concurrency: buildConcurrency,
Expand Down
91 changes: 91 additions & 0 deletions src/frontend/config/aspire-version-placeholders-integration.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
import { readdir, readFile, writeFile } from 'node:fs/promises';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import { replaceAspireVersionPlaceholders } from './remark-aspire-version-placeholders.mjs';

// Per-page Markdown copies emitted by `starlight-page-actions` are the only
// generated artifacts that still contain raw `%ASPIRE_VERSION%` placeholders:
// that plugin `viteStaticCopy`s `src/content/docs/**/*.{md,mdx}` straight to
// `dist/**/*.md` through a regex-only transform, so it never runs through the
// `remarkAspireVersionPlaceholders` remark plugin.
//
// Everything else is already handled before it reaches `dist`:
// - `.html` pages -> rendered via the remark pipeline (placeholders replaced
// in the mdast before expressive-code renders code blocks)
// - `llms*.txt` -> `starlight-llms-txt` sources rendered HTML (`render(entry)`)
// - `reference/**.md` -> generated from API/sample data, not docs content
//
// So this post-build pass only needs to touch `.md` files. Scoping it this way
// (instead of walking every `.html`/`.txt` in `dist`) avoids re-reading the bulk
// of the output — including the large `llms-full.txt` assets — which is what
// previously exhausted the Node heap.
const placeholderCopyExtensions = new Set(['.md']);

// Process the Markdown copies through a small worker pool rather than a single
// recursive `Promise.all` over the whole tree, so peak memory stays proportional
// to the concurrency limit instead of the number of files held open at once.
const DEFAULT_CONCURRENCY = 16;

export function aspireVersionPlaceholdersIntegration() {
return {
name: 'aspire-version-placeholders',
hooks: {
'astro:build:done': async ({ dir }) => {
await replaceAspireVersionPlaceholdersInDirectory(fileURLToPath(dir));
},
},
};
}

export async function replaceAspireVersionPlaceholdersInDirectory(
directory,
concurrency = DEFAULT_CONCURRENCY
) {
const files = [];
await collectMarkdownCopies(directory, files);

if (files.length === 0) {
return;
}

// Normalize to a finite positive integer so a stray NaN/0/negative value can't
// collapse the worker pool to an empty array and silently skip every file.
const limit = Number.isFinite(concurrency) ? Math.floor(concurrency) : DEFAULT_CONCURRENCY;
const workerCount = Math.min(Math.max(1, limit), files.length);
let cursor = 0;

const runWorker = async () => {
while (cursor < files.length) {
const filePath = files[cursor++];
await replaceAspireVersionPlaceholdersInFile(filePath);
}
};

await Promise.all(Array.from({ length: workerCount }, runWorker));
}

async function collectMarkdownCopies(directory, files) {
const entries = await readdir(directory, { withFileTypes: true });

for (const entry of entries) {
const resolvedPath = path.join(directory, entry.name);

if (entry.isDirectory()) {
await collectMarkdownCopies(resolvedPath, files);
continue;
}

if (entry.isFile() && placeholderCopyExtensions.has(path.extname(entry.name))) {
files.push(resolvedPath);
}
}
}

async function replaceAspireVersionPlaceholdersInFile(filePath) {
const content = await readFile(filePath, 'utf8');
const updated = replaceAspireVersionPlaceholders(content);

if (updated !== content) {
await writeFile(filePath, updated);
}
}
7 changes: 7 additions & 0 deletions src/frontend/config/aspire-versions.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
export const currentAspireMajorMinorVersion = '13.5';
export const currentAspireVersion = '13.5.0';

export const aspireVersionPlaceholders = Object.freeze({
'%ASPIRE_VERSION_MAJOR_MINOR%': currentAspireMajorMinorVersion,
'%ASPIRE_VERSION%': currentAspireVersion,
});
40 changes: 40 additions & 0 deletions src/frontend/config/remark-aspire-version-placeholders.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import { aspireVersionPlaceholders } from './aspire-versions.mjs';

const placeholderEntries = Object.entries(aspireVersionPlaceholders);

export function replaceAspireVersionPlaceholders(value) {
return placeholderEntries.reduce(
(current, [placeholder, version]) => current.replaceAll(placeholder, version),
value
);
}

export function remarkAspireVersionPlaceholders() {
return (tree) => {
replaceNodeValues(tree);
};
}

function replaceNodeValues(node) {
if (!node || typeof node !== 'object') {
return;
}

if (typeof node.value === 'string') {
node.value = replaceAspireVersionPlaceholders(node.value);
}

if (Array.isArray(node.attributes)) {
for (const attribute of node.attributes) {
if (attribute && typeof attribute.value === 'string') {
attribute.value = replaceAspireVersionPlaceholders(attribute.value);
}
}
}

if (Array.isArray(node.children)) {
for (const child of node.children) {
replaceNodeValues(child);
}
}
}
21 changes: 21 additions & 0 deletions src/frontend/config/sidebar/dashboard.topics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,27 @@ export const dashboardTopics: StarlightSidebarTopicsUserConfig = {
},
slug: 'dashboard/security-considerations',
},
{
label: 'Troubleshooting',
translations: {
da: 'Fejlfinding',
de: 'Fehlerbehebung',
en: 'Troubleshooting',
es: 'Solución de problemas',
fr: 'Dépannage',
hi: 'समस्या निवारण',
id: 'Pemecahan masalah',
it: 'Risoluzione dei problemi',
ja: 'トラブルシューティング',
ko: '문제 해결',
'pt-BR': 'Solução de problemas',
ru: 'Устранение неполадок',
tr: 'Sorun giderme',
uk: 'Усунення неполадок',
'zh-CN': '故障排除',
},
slug: 'dashboard/troubleshooting',
},
{
label: 'Telemetry',
translations: {
Expand Down
4 changes: 4 additions & 0 deletions src/frontend/config/sidebar/deployment.topics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,10 @@ export const deploymentTopics: StarlightSidebarTopicsUserConfig = {
label: 'External Helm charts',
slug: 'deployment/kubernetes/helm-charts',
},
{
label: 'Persistent volumes',
slug: 'deployment/kubernetes/persistent-volumes',
},
{
label: 'Ingress & Gateway API',
slug: 'deployment/kubernetes-ingress',
Expand Down
8 changes: 8 additions & 0 deletions src/frontend/config/sidebar/docs.topics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,10 @@ export const docsTopics: StarlightSidebarTopicsUserConfig = {
label: "What's new",
collapsed: true,
items: [
{
label: 'Aspire 13.5',
slug: 'whats-new/aspire-13-5',
},
{
label: 'Aspire 13.4',
slug: 'whats-new/aspire-13-4',
Expand Down Expand Up @@ -957,6 +961,10 @@ export const docsTopics: StarlightSidebarTopicsUserConfig = {
ja: '実行可能リソース',
},
},
{
label: 'Interactive terminals',
slug: 'app-host/with-terminal',
},
],
},
{
Expand Down
14 changes: 14 additions & 0 deletions src/frontend/config/sidebar/integrations.topics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1365,6 +1365,20 @@ export const integrationTopics: StarlightSidebarTopicsUserConfig = {
},
],
},
{
label: '.NET / C#',
collapsed: true,
items: [
{
label: 'Get started',
slug: 'integrations/frameworks/dotnet/dotnet-get-started',
},
{
label: 'Set up .NET / C# apps in the AppHost',
slug: 'integrations/frameworks/dotnet/dotnet-host',
},
],
},
{
label: 'Go',
collapsed: true,
Expand Down
Loading
Loading