Skip to content

Revise "What's new in Aspire 13.5" for DX impact - #1509

Merged
David Pine (IEvangelist) merged 3 commits into
release/13.5from
dapine/whats-new-13-5-dx
Aug 18, 2026
Merged

Revise "What's new in Aspire 13.5" for DX impact#1509
David Pine (IEvangelist) merged 3 commits into
release/13.5from
dapine/whats-new-13-5-dx

Conversation

@IEvangelist

Copy link
Copy Markdown
Member

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/aspire release/13.5 and the 13.5 change log).

What changed

  • Installers, front and center. The Upgrade section now showcases every CLI installer — Homebrew, npm, NuGet, WinGet, mise, Nix — plus the one-line install script.
  • Interaction Service reframed around C#/TypeScript parity (dropped the broader polyglot enumeration, per feedback).
  • TypeScript AppHosts lead with GA (ASPIREATS001 removed), anchoring the DX pitch.
  • TypeScript samples now chain fluent calls into a single await to mirror the C# tabs; every AppHost sample has matching C# + TypeScript tabs.
  • Reframed the “.NET project and Go” debugging section around AddDotnetProject (path-based DotnetProjectResource) with accurate VS Code debug-attach (SupportsDebuggingAnnotation), the publish limitation, and Go multi-client Delve as a note.
  • More ceremony for New & updated integrations (Radius preview, Foundry Local + hosted agents, Redis modules, dev tunnel regions, Blazor gateway on Compose).
  • Rewrote “CLI bundle by default” — template opt-in vs. SDK default, on-the-fly dnx acquisition, aspire run delegation, and graceful diagnostics — with a matching C# AppHost upgrade note (dnx).
  • Dashboard screenshots embedded from the recaptured assets.
  • Structural cleanup: intro prose under every heading (no sequential H2→H3 without content) and sections reordered (CLI → Dashboard → VS Code before Deployment) for impact.

Only src/frontend/src/content/docs/whats-new/aspire-13-5.mdx is touched.

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>
Copilot AI lite review requested due to automatic review settings August 17, 2026 21:22

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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.

Comment thread src/frontend/src/content/docs/whats-new/aspire-13-5.mdx Outdated
@aspire-repo-bot

Copy link
Copy Markdown
Contributor

Frontend HTML artifact ready

The latest frontend build uploaded the frontend-dist artifact for PR #1509. Use the VS Code button below to open this PR with GitHub Artifacts Explorer and browse the built HTML locally.

VS Code: Open PR #1509 artifacts

This comment updates automatically when a new frontend build artifact is uploaded.

@IEvangelist David Pine (IEvangelist) left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

📋 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:

  1. contradicted — line 664, "Go resources … now default to multi-client Delve mode" (+ a verified-with-nuance note on GoDelveServerAnnotation).
  2. 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 …ResourcePromise interfaces extends 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). Both await x.withY() and single-await chains type-check.
  • WithTerminal() / TerminalOptionsColumns default 120, Rows default 30, ShowTerminalHostsrc/Aspire.Hosting/ApplicationModel/TerminalAnnotation.cs:97-146.
  • AddDotnetProject(name, path), DotnetProjectResource, diagnostic ASPIREDOTNETPROJECT001src/Aspire.Hosting.Dotnet/DotnetProjectHostingExtensions.cs:47, DotnetProjectResource.cs:31-33.
  • SupportsDebuggingAnnotationsrc/Aspire.Hosting/SupportsDebuggingAnnotation.cs.
  • Publish/deploy actionable error names AddCSharpApp(...)/addCSharpApp(...) and PublishAsDockerFile(...)/publishAsDockerFile(...)src/Aspire.Hosting.Dotnet/DotnetProjectResource.cs:207-211.
  • --continue Delve flag via ContinueOnStartsrc/Aspire.Hosting.Go/GoHostingExtensions.cs:140-142.
  • Interaction Service stability splitPromptInputAsync/PromptInputsAsync/PromptNotificationAsync are stable; PromptProgressAsync retains [Experimental("ASPIREINTERACTION001")]src/Aspire.Hosting/IInteractionService.cs:60-125.
  • WithHttpsDeveloperCertificate (public, polyglot) — src/Aspire.Hosting/ResourceBuilderExtensions.cs:4174.
  • Redis modulesWithModule(path) + RedisModules constants Json/Search/BloomFilter/TimeSeries ("Redis 8+") — src/Aspire.Hosting.Redis/RedisModules.cs.
  • FoundryRunAsFoundryLocal() drives the foundry CLI (ProcessStartInfo("foundry"), foundry service start/stop) — FoundryExtensions.cs:166, FoundryLocalService.cs:105,244; AsHostedAgent(...) + HostedAgentProtocol values Responses/InvocationsHostedAgent/HostedAgentProtocol.cs.
  • Radius (preview)AddRadiusEnvironment, WithNamespace, ConfigureRadiusInfrastructure (experimental ASPIRERADIUS004) — src/Aspire.Hosting.Radius/RadiusExtensions.cs:33,64,92.
  • Dev TunnelsDevTunnelOptions.Region is DevTunnelRegion?src/Aspire.Hosting.DevTunnels/DevTunnelOptions.cs:33,89.
  • Kubernetes persistent volumesAddPersistentVolume, WithStorageClass, WithCapacity, WithAccessMode, WithPersistentVolumesrc/Aspire.Hosting.Kubernetes/KubernetesPersistentVolumeExtensions.cs; AKS variant — src/Aspire.Hosting.Azure.Kubernetes/AzureKubernetesPersistentVolumeExtensions.cs.
  • TypeScript AppHost is GA — no ASPIREATS001 experimental gate remains in src/ (only a stale test NoWarn).
  • CLI bundleAspireUseCliBundle SDK default is false (Aspire.AppHost.Sdk/SDK/Sdk.in.targets:25, Aspire.Hosting.AppHost/build/Aspire.Hosting.AppHost.props:7); templates set it true; warnings ASPIRE010(opt-out)/ASPIRE009(error)/ASPIRE011(dnx missing), AspireCliInvocationMode=DnxAspire.Hosting.AppHost.in.targets:157,433,620.
  • aspire update --migrate migrates apphost.tsapphost.mtssrc/Aspire.Cli/Migrations/TypeScriptAppHostMigration.cs; --force supported.
  • aspire stop --force performs a stop then cleans persistent resources — src/Aspire.Cli/Commands/StopCommand.cs:47,102-104,343,370.
  • aspire doctoroperating-system check 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); winget Microsoft.Aspire (eng/winget/microsoft.aspire/Aspire.yaml.template); Homebrew cask microsoft/aspire/aspire (eng/homebrew/aspire.rb.template, tap microsoft/aspire); Nix github: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) and net11.0 Framework 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.xml footer 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 GoDelveServerAnnotation wording (line 664) toward WithDelveServer/DelveServerOptions.
  • Nice to have (Phase B): Nix run-vs-profile add clarification; a TS-specific note for file-upload results; temper "feature parity" where TerminalOptions remains 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.

Comment thread src/frontend/src/content/docs/whats-new/aspire-13-5.mdx Outdated
Comment thread src/frontend/src/content/docs/whats-new/aspire-13-5.mdx Outdated
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>
@IEvangelist
David Pine (IEvangelist) merged commit aa27778 into release/13.5 Aug 18, 2026
10 checks passed
@IEvangelist
David Pine (IEvangelist) deleted the dapine/whats-new-13-5-dx branch August 18, 2026 05:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants