Revise "What's new in Aspire 13.5" for DX impact - #1509
Conversation
Reframe the 13.5 release notes as a developer-experience release: - Showcase all CLI installers (Homebrew, npm, NuGet, WinGet, mise, Nix) - Reframe the Interaction Service around C#/TypeScript parity - Lead the TypeScript AppHost section with GA (ASPIREATS001 removed) - Chain TypeScript fluent API samples to mirror the C# tabs - Reframe the .NET project/Go debugging section around AddDotnetProject, accurate VS Code debug-attach, and the publish limitation - Add ceremony to New & updated integrations - Rewrite "CLI bundle by default" (template opt-in, dnx acquisition, aspire run delegation, graceful diagnostics) - Embed refreshed dashboard screenshots - Add a C# AppHost CLI-bundle/dnx upgrade note - Add intro prose under every section heading (no sequential headings) - Reorder sections (CLI/Dashboard/VS Code before Deployment) for impact Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR revises the “What’s new in Aspire 13.5” documentation page to reposition the release as a developer-experience (DX) upgrade, including substantial re-organization and expanded guidance on CLI installation, AppHost parity (C# / TypeScript), and refreshed dashboard coverage.
Changes:
- Updates the intro and feature highlights to emphasize DX and C# + TypeScript parity, including TypeScript AppHost GA messaging.
- Expands and restructures the Upgrade / CLI guidance (more installer options, CLI bundle-by-default explanation, and command highlights).
- Adds new dashboard screenshots and reorganizes major sections for impact (CLI → Dashboard → VS Code before Deployment).
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Frontend HTML artifact readyThe latest frontend build uploaded the This comment updates automatically when a new frontend build artifact is uploaded. |
David Pine (IEvangelist)
left a comment
There was a problem hiding this comment.
📋 Docs-accuracy review — doc-pr-reviewer
Substantive verdict: 🔴 REQUEST_CHANGES — 1 claim is contradicted by source.
(Posted as a COMMENT review because GitHub does not allow a PR author's own account to formally "Request changes" on their own PR. Treat this as a REQUEST_CHANGES.)
Phase A source of truth: microsoft/aspire @ release/13.5 — SHA e076d8e427cb3afb528dbd605acd74c3aea69f94
Claims extracted & evaluated: 30 non-narrative claims → 27 verified, 1 verified-with-nuance, 1 contradicted, 1 unverifiable
Phase B (doc-tester, blind to source): exercised /whats-new/aspire-13-5/ + 18 linked routes on a local render of this PR head — 0 critical, 4 warnings.
Phase A — Claim verification
Two inline comments are attached to the diff:
contradicted— line 664, "Go resources … now default to multi-client Delve mode" (+ averified-with-nuancenote onGoDelveServerAnnotation).unverifiable— line 949, "requires foundry CLI 1.1.0+".
✅ Verified claims (27) — evidence
All paths below are in microsoft/aspire@release/13.5 (e076d8e).
- Fluent-chaining TypeScript AppHost (the headline change — chaining builder calls into a single
await) is valid: generated…ResourcePromiseinterfacesextends PromiseLike<T>and re-declare every builder method returning another…ResourcePromise. Evidence:tests/Aspire.Hosting.CodeGeneration.TypeScript.Tests/Snapshots/AtsGeneratedAspire.verified.ts:1571+ method sigs (670/715/753/1424/1479). Bothawait x.withY()and single-await chains type-check. WithTerminal()/TerminalOptions—Columnsdefault 120,Rowsdefault 30,ShowTerminalHost—src/Aspire.Hosting/ApplicationModel/TerminalAnnotation.cs:97-146.AddDotnetProject(name, path),DotnetProjectResource, diagnosticASPIREDOTNETPROJECT001—src/Aspire.Hosting.Dotnet/DotnetProjectHostingExtensions.cs:47,DotnetProjectResource.cs:31-33.SupportsDebuggingAnnotation—src/Aspire.Hosting/SupportsDebuggingAnnotation.cs.- Publish/deploy actionable error names
AddCSharpApp(...)/addCSharpApp(...)andPublishAsDockerFile(...)/publishAsDockerFile(...)—src/Aspire.Hosting.Dotnet/DotnetProjectResource.cs:207-211. --continueDelve flag viaContinueOnStart—src/Aspire.Hosting.Go/GoHostingExtensions.cs:140-142.- Interaction Service stability split —
PromptInputAsync/PromptInputsAsync/PromptNotificationAsyncare stable;PromptProgressAsyncretains[Experimental("ASPIREINTERACTION001")]—src/Aspire.Hosting/IInteractionService.cs:60-125. WithHttpsDeveloperCertificate(public, polyglot) —src/Aspire.Hosting/ResourceBuilderExtensions.cs:4174.- Redis modules —
WithModule(path)+RedisModulesconstantsJson/Search/BloomFilter/TimeSeries("Redis 8+") —src/Aspire.Hosting.Redis/RedisModules.cs. - Foundry —
RunAsFoundryLocal()drives thefoundryCLI (ProcessStartInfo("foundry"),foundry service start/stop) —FoundryExtensions.cs:166,FoundryLocalService.cs:105,244;AsHostedAgent(...)+HostedAgentProtocolvaluesResponses/Invocations—HostedAgent/HostedAgentProtocol.cs. - Radius (preview) —
AddRadiusEnvironment,WithNamespace,ConfigureRadiusInfrastructure(experimentalASPIRERADIUS004) —src/Aspire.Hosting.Radius/RadiusExtensions.cs:33,64,92. - Dev Tunnels —
DevTunnelOptions.RegionisDevTunnelRegion?—src/Aspire.Hosting.DevTunnels/DevTunnelOptions.cs:33,89. - Kubernetes persistent volumes —
AddPersistentVolume,WithStorageClass,WithCapacity,WithAccessMode,WithPersistentVolume—src/Aspire.Hosting.Kubernetes/KubernetesPersistentVolumeExtensions.cs; AKS variant —src/Aspire.Hosting.Azure.Kubernetes/AzureKubernetesPersistentVolumeExtensions.cs. - TypeScript AppHost is GA — no
ASPIREATS001experimental gate remains insrc/(only a stale testNoWarn). - CLI bundle —
AspireUseCliBundleSDK default isfalse(Aspire.AppHost.Sdk/SDK/Sdk.in.targets:25,Aspire.Hosting.AppHost/build/Aspire.Hosting.AppHost.props:7); templates set ittrue; warningsASPIRE010(opt-out)/ASPIRE009(error)/ASPIRE011(dnx missing),AspireCliInvocationMode=Dnx—Aspire.Hosting.AppHost.in.targets:157,433,620. aspire update --migratemigratesapphost.ts→apphost.mts—src/Aspire.Cli/Migrations/TypeScriptAppHostMigration.cs;--forcesupported.aspire stop --forceperforms a stop then cleans persistent resources —src/Aspire.Cli/Commands/StopCommand.cs:47,102-104,343,370.aspire doctor—operating-systemcheck reading/etc/os-release(Utils/EnvironmentChecker/OperatingSystemCheck.cs:16,163); VS Code detection (VsCodeExtensionCheck.cs,TERM_PROGRAM=vscode); DCP health checks (DcpConnectionHealthCheck.cs:dcp-bundle/dcp-connection/dcp-*-certificate).- Install identifiers — npm
@microsoft/aspire-cli(eng/clipack/Common.projitems:189); wingetMicrosoft.Aspire(eng/winget/microsoft.aspire/Aspire.yaml.template); Homebrew caskmicrosoft/aspire/aspire(eng/homebrew/aspire.rb.template, tapmicrosoft/aspire); Nixgithub:microsoft/aspire#aspire-cli(flake.nix);mise use -g aspire(extension/src/commands/walkthroughCommands.ts:59-61). - Templates target .NET 11 preview + LTS — every template offers
net10.0(default) andnet11.0Framework choices —src/Aspire.ProjectTemplates/templates/*/.template.config/template.json.
Phase B — Doc-tester results (blind to source)
The doc-tester ran against a local render of this PR head at http://localhost:4322/whats-new/aspire-13-5/, navigating only via playwright-cli. Report reproduced verbatim below.
Reviewer note: Warning 3 (
/rss.xmlfooter trailing-slash) is pre-existing site chrome, not introduced by this PR's diff — out of scope for this PR, included only to preserve the tester's full output. Warnings 1, 2 and 4 are on PR-changed content and worth a look.
📄 Full doc-tester report
# Documentation Test Report
**Focus Area:** What's new in Aspire 13.5 (PR under review, local render)
**Date:** 2026-08-17
**Tester:** doc-tester agent
## Summary
| Category | Passed | Failed | Warnings |
|----------|--------|--------|----------|
| Content Accuracy | 14 | 0 | 2 |
| Code Examples | 10 | 0 | 1 |
| CLI Commands | 12 | 0 | 1 |
| Links | 87 | 0 | 1 |
## Critical Issues
None found.
## Warnings
### Warning 1: Nix install guidance uses two different commands
**Location:** `/whats-new/aspire-13-5/` — "Upgrade to Aspire 13.5" and "Install via npm and Nix"
**Issue:** The install tab shows `nix run github:microsoft/aspire#aspire-cli`; later the page says Nix availability is via `nix profile add github:microsoft/aspire#aspire-cli`. Both may be valid, but the rendered page does not explain when to use "run" versus "profile add."
**Suggestion:** Clarify whether the tab is for one-time execution or installation.
### Warning 2: TypeScript file-upload example does not match the surrounding API description
**Location:** "📤 File uploads and progress dialogs"
**Issue:** The prose says uploaded content is available through `InteractionFile` via `ReadAllBytesAsync()` or `OpenRead()`. The TypeScript tab instead uses `file.filePath` and `statSync(file.filePath).size`.
**Suggestion:** Add a TypeScript-specific sentence explaining the file path behavior.
### Warning 3: Internal RSS link does not follow trailing-slash rule
**Location:** Footer
**Issue:** Rendered internal link `/rss.xml` is site-relative and resolves, but does not end with `/`, which violates the skill's internal-link convention.
**Suggestion:** Either document RSS as an exception or adjust link-validation rules for file endpoints.
### Warning 4: "Feature parity" language is slightly overbroad
**Location:** Intro and "Interactive terminal sessions with WithTerminal()"
**Issue:** The intro emphasizes "C# and TypeScript feature parity," but the TypeScript `withTerminal()` sample says `TerminalOptions.Columns/Rows can only be configured from C#.`
**Suggestion:** Temper the intro language or call out known parity exceptions.
## Passed Checks
- Primary page loaded at `/whats-new/aspire-13-5/`.
- All major sections rendered: upgrade, AppHost, TypeScript AppHost, CLI, dashboard, VS Code, deployment/integrations, templates, breaking changes, known issues.
- C# / TypeScript tabs switched correctly for sampled examples.
- Code snippets rendered as code blocks; no raw MDX component markup observed.
- Asides, tabs, LearnMore-style callouts, and images rendered correctly.
- Dashboard screenshots loaded after scrolling and had descriptive alt text.
- No browser console errors observed on the target page.
- Representative internal links loaded without 404.
## Recommendations
1. Clarify Nix install versus run command usage.
2. Add TypeScript-specific file-upload result handling text.
3. Clarify feature-parity wording where C#-only options remain.
4. Decide whether `/rss.xml` is exempt from trailing-slash internal-link rules.
### Knowledge Gap: Runtime API and CLI behavior
**What I needed to know:** Whether the shown APIs and commands execute exactly as described.
**Source of my knowledge:** Not verified; the task prohibited running Aspire CLI commands or test projects.
**User impact:** Users relying on release notes may need linked reference pages for executable confirmation.
**Recommendation:** Keep strong links to reference pages for each feature; treat runtime verification as not tester-verifiable for this run.
## Tester Run Metadata
**Server URL:** `http://localhost:4322/whats-new/aspire-13-5/`
**Routes/sections exercised:** upgrade, install tabs, AppHost, WithTerminal, Interaction Service, file uploads/progress, resource command arguments, certificates, Azure resources, AddDotnetProject, TypeScript AppHost, health checks, container files, CLI, dashboard, VS Code, Kubernetes persistent volumes, Azure Container Apps, integrations, templates, breaking changes, known issues.
**Links verified:** /get-started/install-cli/, /app-host/with-terminal/, /extensibility/interaction-service/, /diagnostics/aspireinteraction001/, /fundamentals/custom-resource-commands/, /app-host/certificate-configuration/, /integrations/cloud/azure/customize-resources/, /integrations/frameworks/dotnet/dotnet-host/, /app-host/typescript-apphost/, /fundamentals/health-checks/, /deployment/kubernetes/persistent-volumes/, /deployment/kubernetes/aks/, /integrations/cloud/azure/configure-container-apps/, /integrations/devtools/dev-tunnels/, /integrations/cloud/azure/azure-ai-foundry/azure-ai-foundry-get-started/, /integrations/caching/redis/redis-host/, /whats-new/upgrade-aspire/, /rss.xml.Recommendation summary
- Must fix (blocking): correct the Go/Delve "default to multi-client" claim (line 664) — the default is single-client; multi-client is opt-in.
- Please address: confirm or cite the "foundry CLI 1.1.0+" floor (line 949); tighten
GoDelveServerAnnotationwording (line 664) towardWithDelveServer/DelveServerOptions. - Nice to have (Phase B): Nix run-vs-
profile addclarification; a TS-specific note for file-upload results; temper "feature parity" whereTerminalOptionsremains C#-only.
🤖 Generated by the doc-pr-reviewer skill. Phase A read source at microsoft/aspire@release/13.5 e076d8e; Phase B (doc-tester) was blind to source and navigated only the local PR render.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
- Go/Delve: correct the debugging note — Delve accepts a single client by default and multi-client is opt-in via WithDelveServer(o => o.AcceptMultiClient = true); reference the public DelveServerOptions surface instead of the internal GoDelveServerAnnotation. - Foundry Local: drop the unverifiable "requires foundry CLI 1.1.0+" floor (1.1.0 is the Microsoft.AI.Foundry.Local package version, not a CLI gate). - Nix: retitle the install tab "Install with Nix" to match the committed ix profile add command. - File uploads: clarify that C# reads InteractionFile while TypeScript receives an on-disk path (file.filePath) read via Node's fs APIs. - Intro: temper "feature parity" to "closer parity" (TerminalOptions Columns/Rows remain C#-only). Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Revises What's new in Aspire 13.5 to pitch the release as a developer-experience upgrade and to address a round of editorial feedback. Content was verified against the product source of truth (
microsoft/aspirerelease/13.5and the 13.5 change log).What changed
ASPIREATS001removed), anchoring the DX pitch.awaitto mirror the C# tabs; every AppHost sample has matching C# + TypeScript tabs.AddDotnetProject(path-basedDotnetProjectResource) with accurate VS Code debug-attach (SupportsDebuggingAnnotation), the publish limitation, and Go multi-client Delve as a note.dnxacquisition,aspire rundelegation, and graceful diagnostics — with a matching C# AppHost upgrade note (dnx).Only
src/frontend/src/content/docs/whats-new/aspire-13-5.mdxis touched.