-
Notifications
You must be signed in to change notification settings - Fork 962
13.5 Change log
19 new features, 52 improvements, 45 bug fixes
โน๏ธ This changelog is automatically generated from merged pull requests and may contain inaccuracies. For official release notes, see https://aka.ms/aspire/update-latest.
- 2026-06-20 05:12 โ ๐ Fix false CLI upgrade warning in VS Code extension
- 2026-06-20 03:31 โ ๐ฑ MAUI platform debugging in VS Code extension
- 2026-06-20 01:55 โ ๐ง Fix stale AppHost running state in VS Code extension
- 2026-06-19 22:10 โ ๐ Combined certificate and private key PEM file in TLS contexts
- 2026-06-19 19:33 โ ๐ Fix concurrent AppHost backchannel connection setup
- 2026-06-19 17:57 โ ๐ VS Code extension exposes AppHost and resource management APIs
- 2026-06-19 16:25 โ ๐ Fix port collision when running multiple isolated AppHost instances
- 2026-06-19 16:18 โ ๐ Fix terminal resources not connecting in IDE debug sessions
- 2026-06-19 06:04 โ ๐ Thread-safe ResourceAnnotationCollection
- 2026-06-19 04:59 โ โ๏ธ AppHost projects default to CLI bundle
6 new features, 22 improvements, 12 bug fixes
-
๐ Azure resource scope support
Aspire now supports targeting Azure resources outside the default deployment resource group. You can reference existing resources across subscriptions, resource groups, or at subscription and tenant scope when modeling your Azure infrastructure.
Owner: @davidfowl
Changes: #17988
๐ Documentation required -
๐ฅ๏ธ Interactive terminal sessions with WithTerminal()
AppHost authors can now call WithTerminal() on a resource to enable interactive terminal sessions. The dashboard and CLI can attach to and detach from the session at will, enabling interactive use of REPLs, shells, and other terminal programs running as Aspire resources.
Owner: @mitchdenny
Changes: #17866
Docs: microsoft/aspire.dev#1244
๐ Documentation required -
๐ IInteractionService available in polyglot app hosts
IInteractionService (prompts, message boxes, notifications, and dynamic inputs) is now available in polyglot app hosts written in TypeScript, Python, Go, Java, and Rust. Callback contexts such as IServiceProvider and builder overloads are also exposed to polyglot hosts, enabling feature parity with C# app hosts.
Owner: @sebastienros
Changes: #17959, #18059
๐ Documentation required -
๐ง HTTP resource commands support user-defined arguments
HTTP resource commands (WithHttpCommand) can now declare named arguments, allowing the Dashboard and CLI to prompt for input before invoking them. TypeScript AppHosts have full parity through ATS exports, and CLI callers can pass arguments with named options. The Foundry hosted-agent command now exposes a stable send-message command name.
Owner: @davidfowl
Changes: #17950
๐ Documentation required -
๐ Custom health checks for TypeScript AppHosts
TypeScript (ATS) AppHosts can now register custom health check callbacks using builder.addHealthCheck() and attach them to resources. Project resources also gain withEndpointsInEnvironment() to control which endpoints are injected into their environment variables.
Owner: @sebastienros
Changes: #17878
๐ Documentation required -
๐ณ TypeScript AppHosts support container file copying
TypeScript (ATS) AppHosts can now export withContainerFiles to copy host files into container resources, with support for owner, group, and umask options. This brings TypeScript polyglot AppHosts to parity with C# AppHosts that use WithContainerFiles.
Owner: @sebastienros
Changes: #17877
Docs: microsoft/aspire.dev#1204
๐ Documentation required
-
๐ Combined certificate and private key PEM file in TLS contexts
HTTPS certificate contexts now include a combined certificate-with-key PEM file alongside the separate certificate and key files, making it easier for containers and executables to consume TLS credentials without concatenating them manually.
Owner: @danegsta
Changes: #18216
๐ Community contribution by @aradalvand -
โ๏ธ AppHost projects default to CLI bundle
C# AppHost projects now use the Aspire CLI bundle by default, without requiring AspireUseCliBundle=true in the project file. If the CLI bundle cannot be resolved, the build reports ASPIRE009 with install guidance. Users can opt out by setting false in their project file, which emits ASPIRE010.
Owner: @DamianEdwards
Changes: #18188
โ ๏ธ Breaking change
๐ Documentation required -
๐ Smarter ignore for pre-release version update notifications
When dismissing a version update notification for a pre-release (e.g. 13.5.0-preview1), Aspire now stores a wildcard pattern (13.5.0-*) that suppresses notifications for all subsequent pre-releases of the same version. The notification reappears when the stable release (13.5.0) becomes available.
Owner: @JamesNK
Changes: #18233 -
๐ Azure Cosmos DB vNext emulator GA alignment
The Azure Cosmos DB Linux-based (vNext) emulator is now fully aligned with the GA vnext-latest image. RunAsPreviewEmulator() pulls mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-latest; the Data Explorer is now opt-in (call WithDataExplorer() to enable it instead of running unconditionally); and WithDataVolume() no longer sets the AZURE_COSMOS_EMULATOR_ENABLE_DATA_PERSISTENCE variable for the vNext emulator since the GA image uses implicit /data volume persistence instead.
Owner: @sebastienros
Changes: #18158, #18161
๐ Documentation required
๐ Community contribution by @guanzhousongmicrosoft -
๐ท๏ธ Resource property metadata moved to producers
Resource producers such as projects, containers, executables, parameters, and .NET tools now supply their own property display metadata (labels, default visibility, and ordering) via the resource snapshot protocol. The dashboard uses this producer-supplied metadata instead of hardcoded per-resource-type lookups, enabling custom resources to control how their properties appear in the resource details panel.
Owner: @davidfowl
Changes: #18202
๐ Documentation required -
๐ Improved Azure provisioning diagnostics
Azure provisioning failures now surface richer diagnostics with actionable recovery guidance in resource state andaspire deployoutput. Errors such as unsupported regions, missing subscriptions, and invalid resource properties are normalized into provider-specific details with targeted remediation steps instead of generic ARM wrapper messages.
Owner: @davidfowl
Changes: #18132
๐ Documentation required -
๐ Custom database creation scripts log execution details
When a custom database creation script is provided via WithCreationScript(), the resource logger now emits informational messages showing the script being executed and its outcome. This applies to SQL Server, PostgreSQL, MySQL, and Azure Kusto database resources.
Owner: @mitchdenny
Changes: #18138 -
๐ Consistent port allocation for proxyless endpoints
Proxyless endpoints without explicit public ports now receive deterministic host port assignments during DCP service preparation. The allocator scans a configurable port range (default 10000โ32767, overridable via ASPIRE_PROXYLESS_ENDPOINT_PORT_RANGE) and persists assigned ports for persistent resources in user secrets.
Owner: @danegsta
Changes: #17924
โ ๏ธ Breaking change
๐ Documentation required -
โ IInteractionService promoted to stable
IInteractionService and all related interaction types (InteractionInput, InteractionInputCollection, InputType, InteractionOptions, and others) have been promoted from experimental to stable and no longer require suppressing the ASPIREINTERACTION001 diagnostic.
Owner: @JamesNK
Changes: #18032
๐ Documentation required -
๐ ServiceProvider renamed to Services on context types
The ServiceProvider property on all hosting context types is now marked obsolete and replaced with a new Services property, consistent with existing patterns like BeforeStartEvent.Services and DistributedApplication.Services. The old property still works but will generate a compiler warning.
Owner: @JamesNK
Changes: #18034
โ ๏ธ Breaking change
๐ Documentation required -
๐ซ PublishAsConnectionString marked obsolete
ThePublishAsConnectionStringextension methods in Aspire.Hosting and Aspire.Hosting.Azure are now marked obsolete. This API only changes the manifest representation of a resource and can mislead callers into thinking it converts resources for all publishers. Callers should switch toAddConnectionStringin publish-mode app model code.
Owner: @davidfowl
Changes: #18044
โ ๏ธ Breaking change
๐ Documentation required -
โ๏ธ WithProcessCommand supports named arguments and TypeScript callbacks
WithProcessCommand now supports named arguments end-to-end, including process spec callbacks, result callbacks, CLI/backchannel invocation, and TypeScript/polyglot AppHosts, completing the argument-passing feature for process commands.
Owner: @davidfowl
Changes: #17968
๐ Documentation required -
๐ฉบ Friendly error messages for health check failures
Health check failures now display concise, actionable error messages instead of raw exception stack traces, making it easier to diagnose why a resource health check is failing in the Dashboard.
Owner: @davidfowl
Changes: #14072 -
๐ค Foundry Local integration updated to use foundry CLI
The Foundry Local integration (RunAsFoundryLocal) now uses the installed foundry CLI for service lifecycle management instead of internal SDK APIs, ensuring compatibility with Foundry Local 1.1.0. The AppHost API is unchanged, but the foundry CLI must be installed and available on PATH.
Owner: @sebastienros
Changes: #17889
Docs: microsoft/aspire.dev#1210
๐ Documentation required -
โธ๏ธ Defer explicit-start resource configuration
Session-scoped resources marked with WithExplicitStart() no longer run their execution configuration callbacks (arguments, environment variables, certificates) until the user manually starts them. Previously these callbacks ran at AppHost startup, which could prompt for user input prematurely.
Owner: @danegsta
Changes: #17825 -
๐ DevTunnel region configuration
Added a Region property to DevTunnelOptions, allowing you to specify the region where the dev tunnel is created. The fully qualified tunnel ID now includes the region.
Owner: @DamianEdwards
Changes: #14112
๐ Documentation required
๐ Community contribution by @kola-tm -
๐ค Updated Foundry hosted agent builder APIs
The Aspire.Hosting.Foundry hosted-agent builder APIs have been updated with a cleaner project-first API (AsHostedAgent). Publish-mode agents now attach the Foundry project reference to the correct deployment target resource, and Azure Container Registry is only added for publish/deploy scenarios.
Owner: @tommasodotNET
Changes: #17545, #17687
Docs: microsoft/aspire.dev#1130
๐ Documentation required -
๐ TypeScript/polyglot AppHost support is GA
TypeScript/polyglot AppHost support is now generally available. The ASPIREATS001 experimental diagnostic has been removed, so projects no longer need to suppress it.
Owner: @sebastienros
Changes: #17600
Docs: microsoft/aspire.dev#1230
๐ Documentation required -
โ๏ธ Standardize resource service endpoint URL config name
The resource service endpoint URL is now resolved using KnownConfigNames (ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL) with a legacy fallback to DOTNET_RESOURCE_SERVICE_ENDPOINT_URL, improving consistency with Aspire naming conventions.
Owner: @JamesNK
Changes: #17385 -
โ Helm v4.2.0+ version validation for Kubernetes deploy
Aspire now validates that Helm v4.2.0 or later is installed before running Kubernetes deployments. Previously, missing or outdated Helm produced cryptic low-level errors; users now see a clear, actionable message.
Owner: @mitchdenny
Changes: #17491
Docs: microsoft/aspire.dev#1090, microsoft/aspire.dev#1097
๐ Documentation required -
๐ Blazor gateway Docker Compose publish support
Adds Docker Compose publish support for the Blazor gateway and addresses various review feedback items including resource name attributes and improved OTLP warning placement.
Owner: @davidfowl
Changes: #17384
๐ Documentation required
๐ Community contribution by @javiercn -
๐ Backchannel property compatibility improvements
Preserves auxiliary backchannel backward compatibility while enabling rich JSON property values (numbers, booleans, arrays) for clients that advertise the new aux.v4 capability. The CLI now sends its client capabilities when using v2 resource snapshots.
Owner: @adamint
Changes: #17507
-
๐ Fix port collision when running multiple isolated AppHost instances
When running multiple AppHost instances with --isolated, each instance now binds its resource service endpoint to a random OS-assigned port instead of the fixed port from the launch profile. This prevents 'address already in use' errors when starting a second --isolated instance on the same machine.
Owner: @JamesNK
Changes: #18332 -
๐ Fix terminal resources not connecting in IDE debug sessions
Resources configured with WithTerminal() now always run as a plain process rather than through the IDE debugger, ensuring their terminal sessions connect correctly when debugging. Previously, IDE debug sessions would route terminal-attached resources through IDE execution, which bypasses the PTY bridging required for terminal attachment.
Owner: @mitchdenny
Changes: #18308 -
๐ Thread-safe ResourceAnnotationCollection
ResourceAnnotationCollection is now thread-safe, preventing race conditions when pipeline steps concurrently read and write annotations during publish and deploy operations. Reads are lock-free via snapshot enumeration, while writes are lock-protected.
Owner: @JamesNK
Changes: #18259 -
๐ง Fix ASPIREEXPORT001 false positive with C# 14 extension blocks
The ASPIREEXPORT001 analyzer no longer incorrectly flags [AspireExport]-decorated methods declared inside C# 14 extension blocks as non-static. Developers can now use C# 14 extension block syntax when defining TypeScript AppHost exports without spurious analyzer warnings.
Owner: @sebastienros
Changes: #18292 -
๐ Secret parameter values redacted in backchannel snapshots
Secret parameter values marked withsecret: truewere exposed in plaintext through the backchannel API (used byaspire describeand MCP resource tools) when consumed viaWithEnvironment. The AppHost now redacts these values before snapshots leave the host, covering all backchannel consumers.
Owner: @mitchdenny
Changes: #18089
๐ Community contribution by @shauryalowkeygotaura -
๐ Fix Foundry hosted agent deployment with explicit target port
Fixed a deployment failure when Foundry hosted agents were configured with an explicittargetPort(e.g.,.WithHttpEndpoint(targetPort: 9000).AsHostedAgent(...)). The publish path no longer attempts to emit unsupportedTargetPortendpoint metadata for Foundry deployment targets.
Owner: @tommasodotNET
Changes: #17903 -
๐ Fix addParameter error for invalid option combination
Fixed misleading error classification in TypeScript AppHost when addParameter() is called with both secret: true and publishValueAsDefault: true. The invalid option combination now correctly surfaces an INVALID_ARGUMENT error with a clear diagnostic message instead of a confusing TYPE_MISMATCH capability error.
Owner: @ellahathaway
Changes: #18024 -
๐ DCP reconnection included in request retry loop
Reconnecting to the DCP API server is now part of the DCP request retry loop, protecting against timing issues with missing or partially written DCP kubeconfig files on startup.
Owner: @karolz-ms
Changes: #18121 -
๐ง Fix WithBrowserLogs() startup timeout
Fixed a startup reliability issue with WithBrowserLogs() where tracked browser sessions could fail with Browser debug pipe closed errors even when the browser eventually became responsive. The CDP startup command timeout has been increased to accommodate slower browser starts.
Owner: @maddymontaquila
Changes: #18091 -
๐ Fix proxyless endpoint on-demand allocation
Fixed failures when proxyless container endpoint references were accessed before container creation. Endpoint allocation now uses dependency analysis to distinguish circular or unsafe references from safe lazy ones, so only truly unsafe references trigger early fallback allocation.
Owner: @danegsta
Changes: #17851, #17879 -
๐ Fix TypeScript AppHost async callback deadlock
Fixed a deadlock in TypeScript AppHosts where async callbacks stored in IOptions.Configure were invoked on the StreamJsonRpc non-concurrent dispatcher during BeforeStartEvent, causing the AppHost to hang.
Owner: @IEvangelist
Changes: #17575 -
๐ Fix aspire run with .dev.localhost resource service URLs
Fixed aspire run failing for polyglot AppHosts that use *.dev.localhost URLs. The resource service endpoint validation now accepts localhost subdomains in addition to loopback IPs.
Owner: @danegsta
Changes: #17639
2 new features, 19 improvements, 15 bug fixes
-
๐ฆ Aspire CLI available via npm
The Aspire CLI is now available as an npm package (@microsoft/aspire-cli), providing an alternative installation method. The update command and update notifier now detect and handle npm-installed versions.
Owner: @adamint
Changes: #17297
Docs: microsoft/aspire.dev#1239, microsoft/aspire.dev#1243, microsoft/aspire.dev#1252
๐ Documentation required -
๐ฆ Embedded Aspire skills bundle fallback
The Aspire skills bundle is now embedded in the CLI as a reliable fallback. When GitHub release asset acquisition is unavailable, the CLI uses the embedded bundle and shows a non-fatal warning instead of failing the entire command.
Owner: @IEvangelist
Changes: #17537, #17547
Docs: microsoft/aspire.dev#1137
๐ Documentation required
-
๐ผ๏ธ Aspire CLI displays application icon on Windows
Theaspire.exeandaspire-managed.exeprocesses now display the Aspire application icon in Windows Task Manager, File Explorer, and other shell surfaces.
Owner: @JamesNK
Changes: #18303 -
๐ DCP connection health check in aspire doctor
Theaspire doctorcommand now validates connectivity to the bundled Developer Control Plane (DCP), catching HTTPS trust problemsโsuch as untrusted or expired certificatesโbefore an AppHost is involved. The check covers both DCP-managed ephemeral certificate mode and ASP.NET Core developer certificate mode.
Owner: @danegsta
Changes: #18255 -
๐ Improved docs search relevance
Theaspire docs searchcommand now returns significantly more accurate results by normalizing query and document text consistently, applying inverse document frequency weighting, and rewarding phrase matches in titles, headings, and summaries over incidental body mentions. Benchmarks showed Top 1 accuracy improving from 31.5% to 86.5% on real aspire.dev content.
Owner: @davidfowl
Changes: #18074 -
๐ฅ๏ธ OS information in aspire doctor
Theaspire doctorcommand now reports the current operating system, including the OS version and, on Linux, the distro name from/etc/os-release. This information appears in both human-readable and structured JSON (--format json) output.
Owner: @danegsta
Changes: #18252 -
๐ท๏ธ Runtime CLI identity resolution
The Aspire CLI's channel, version, and commit identity is now resolved at runtime rather than baked into the binary at build time. Identity can be overridden via environment variables (ASPIRE_CLI_CHANNEL, ASPIRE_CLI_VERSION, ASPIRE_CLI_COMMIT, ASPIRE_CLI_NUGET_SERVICE_INDEX, ASPIRE_CLI_PACKAGES) or an .aspire-install.json sidecar file, enabling accurate staging and stable behavior testing in pre-release environments.
Owner: @mitchdenny
Changes: #18087
๐ Documentation required -
๐ฉบ aspire doctor detects legacy settings files
The aspire doctor command now detects workspaces that have a legacy .aspire/settings.json without a sibling aspire.config.json. When found, it surfaces a warning hint directing users to run aspire init (or any aspire run/add/update command) to trigger automatic migration to the current configuration format.
Owner: @ellahathaway
Changes: #17934 -
โ Strict SemVer validation for Playwright CLI version override
Specifying an invalid version string (such as a range like >=1.0.0, a dist-tag like 'latest', or a non-strict SemVer string) for the Playwright CLI version override configuration now fails with a clear, actionable error message instead of a confusing npm resolve failure.
Owner: @mitchdenny
Changes: #18225 -
๐งน No nuget.config generated for stable channel projects
When creating or updating projects using aspire new or aspire update with the stable channel, a project-level nuget.config is no longer generated since it only maps to nuget.org (the default NuGet source). Existing nuget.config files are still cleaned up to remove stale feed entries.
Owner: @JamesNK
Changes: #18211
๐ Documentation required -
๐ ๏ธ --skills and --skill-locations flags for init and new commands
The aspire init, aspire new, and aspire agent init commands now accept --skills and --skill-locations flags to control which agent skills are installed during initialization. These flags support non-interactive mode, allowing use in scripts and CI environments without interactive prompts.
Owner: @JamesNK
Changes: #18191, #18192
๐ Documentation required
๐ Community contribution by @nanookclaw -
๐ ๏ธ Actionable AppHost/CLI version mismatch errors
Version mismatch errors between the AppHost and CLI now specify which side is out of date and include the exact update command to run, replacing the previous generic incompatibility message. The error display was also updated to use an aligned grid with consistent lowercase labels for better readability.
Owner: @JamesNK
Changes: #18067, #18139
๐ Community contribution by @shauryalowkeygotaura -
๐ซ Resources excluded from MCP tools by ExcludeFromMcp property
Resources marked with the ExcludeFromMcp property are now filtered from all CLI MCP tool results, including resource listings, console logs, structured logs, traces, and command execution.
Owner: @JamesNK
Changes: #18106
๐ Documentation required -
๐ค CLI detects coding agent environment in telemetry
The Aspire CLI now detects known coding agent environments (such as GitHub Copilot, Cursor, and others) and records the detected agent name in CLI telemetry. This helps the team understand usage patterns when the CLI is invoked from AI-assisted workflows.
Owner: @DamianEdwards
Changes: #18065, #18094
Docs: microsoft/aspire.dev#1242 -
โก Faster TypeScript AppHost startup
TypeScript AppHost startup no longer waits a fixed delay before the CLI attempts to connect. The CLI now races the RPC connection retry loop against process exit, reducing the time from aspire run to an active AppHost.
Owner: @davidfowl
Changes: #18075 -
๐ dotnet run delegates to aspire run for bundled AppHosts
When AspireUseCliBundle is enabled, running dotnet run on an AppHost project now automatically delegates to aspire run, ensuring bundled CLI behavior is used consistently. This means aspire run orchestration is applied even when developers use the familiar dotnet run command.
Owner: @davidfowl
Changes: #17748
๐ Documentation required -
๐ Aspire skills catalog loaded from bundle manifest
The aspire agent init skill catalog is now loaded dynamically from the bundle manifest instead of being hardcoded to three skills. All skills published in the microsoft/aspire-skills bundle are now discoverable by the CLI.
Owner: @IEvangelist
Changes: #17553
Docs: microsoft/aspire.dev#1077
๐ Documentation required -
๐๏ธ aspire ps --resources flag removed
The --resources flag (and --include-hidden) has been removed from aspire ps, which now focuses on AppHost-level summaries. Use aspire describe to stream detailed resource data.
Owner: @mitchdenny
Changes: #17479
โ ๏ธ Breaking change
๐ Documentation required -
๐ Updated --search option help text
The --search option in aspire logs and telemetry commands now includes a link to aka.ms/aspire/cli-search and clarifies support for both full-text search and field filters.
Owner: @JamesNK
Changes: #17544
Docs: microsoft/aspire.dev#948, microsoft/aspire.dev#1081, microsoft/aspire.dev#1121 -
๐ Enriched AppHost codegen TypeLoadException diagnostics
When AppHost code generation fails due to a TypeLoadException (typically caused by a version mismatch between the CLI and the user project), the CLI now provides enriched diagnostic output to help identify the cause.
Owner: @IEvangelist
Changes: #17262
Docs: microsoft/aspire.dev#1101, microsoft/aspire.dev#1103
๐ Documentation required -
๐จ Improved aspire agent init install output
The aspire agent init command now collects updated skill/location pairs and prints one compact summary instead of repeating a success line for every skill at every install target.
Owner: @IEvangelist
Changes: #17519
-
๐ Fix --apphost commands with symlinked paths
aspire describe --apphost and other commands that accept --apphost now correctly resolve symlinked paths when locating the running AppHost backchannel socket, preventing spurious "No AppHost is currently running" errors on macOS (/tmp โ /private/tmp) and other systems with symlinked workspaces.
Owner: @mitchdenny
Changes: #18298 -
๐ Fix AppHost selection error in non-interactive mode
Non-interactive CLI commands such asaspire describenow return a clear, actionable error message instead of crashing when AppHost selection is ambiguous and an interactive prompt is unavailable.
Owner: @mitchdenny
Changes: #18297 -
๐ Fix aspire doctor text wrapping
Fixes text alignment in theaspire doctoroutput so that long messages wrap correctly, aligning continuation lines with the message text rather than indenting under the emoji icon.
Owner: @JamesNK
Changes: #18257 -
๐ง Fix false version-skew warning during aspire update
Fixes a false positive version-mismatch warning that appeared duringaspire update. The in-memory configuration was already updated to the CLI's current version but had not yet been flushed to disk, causing an incorrect version-skew warning to be shown to users.
Owner: @JamesNK
Changes: #18208 -
๐ Fix non-interactive self-update channel selection
Runningaspire update --self --non-interactivenow correctly auto-detects the update channel from the CLI's current identity, fixing a failure when--channelis not specified.
Owner: @JamesNK
Changes: #17512
๐ Community contribution by @alirezafzali -
โฑ๏ธ Fix CLI orphan detector process start time comparison
The CLI orphan detector now correctly compares process start times near second boundaries, preventing false PID-reuse exclusions that could cause orphaned processes to linger between CLI sessions.
Owner: @JamesNK
Changes: #18136 -
๐งน Fix stale backchannel sockets blocking CLI commands
Stale AppHost backchannel socket files left behind by exited processes no longer block CLI commands likeaspire add. The CLI now automatically prunes orphaned PID-qualified sockets before probing, preventing spurious connection errors.
Owner: @davidfowl
Changes: #18038 -
๐จ TypeScript AppHosts honor --no-build
TypeScript AppHosts now correctly skip the TypeScript compilation check (tsc --noEmit) when the --no-build flag is passed, so developers can skip all build steps consistently.
Owner: @davidfowl
Changes: #17994 -
๐ Fix CLI Ctrl+C/SIGTERM shutdown responsiveness
Multiple CLI shutdown improvements: fixed Ctrl+C responsiveness during AppHost startup, fixed a double-signal bug causing immediate force-kill, and added an immediate "Stopping Aspire..." message after 200ms when shutdown is in progress.
Owner: @JamesNK
Changes: #17588, #17652 -
๐ Fix duplicate profiles block in empty AppHost template
Fixed a bug where the empty C# AppHost template generated an aspire.config.json with a duplicated profiles block.
Owner: @mitchdenny
Changes: #17781 -
๐ Fix aspire ls discovery and settings bugs
Fixed five bugs in aspire ls related to the settings discovery pipeline: settings.json compatibility, aspire.config.json handling, parallel discovery races, macOS symlink resolution, and discovery path normalization.
Owner: @adamint
Changes: #17631 -
๐ง Fix localhive.sh CLI install with subdirectories
Fixed localhive.sh CLI installation failing when the publish output contains subdirectories such as culture-specific resource folders. The script now uses cp -r to correctly copy all files and directories.
Owner: @sebastienros
Changes: #17670
Docs: microsoft/aspire.dev#1128 -
๐ Fix aspire stop false failure on Unix
Fixed a bug where aspire stop falsely reported failure on Unix because the AppHost process was orphaned during the shutdown cascade instead of being properly reaped.
Owner: @danegsta
Changes: #17612 -
๐ฌ Friendly error for aspire do --list-steps without a step
Running aspire do --list-steps without specifying a step now gives a clear validation error instead of launching the AppHost and crashing with an obscure exception.
Owner: @mitchdenny
Changes: #17535
Docs: microsoft/aspire.dev#1091
๐ Documentation required -
๐ Fix Aspire skills attestation verification
Fixed a bug where aspire agent init failed to install the Aspire skills bundle because the attestation verifier used a stale SLSA build type URL. The verifier now accepts the current GitHub Actions build type URL.
Owner: @IEvangelist
Changes: #17521
2 new features, 7 improvements, 7 bug fixes
-
๐ Dashboard reconnects gracefully on resource service disconnect
When the gRPC connection between the dashboard and AppHost resource service is lost, the dashboard now shows a reconnect modal with a status message and animation. After 5 failed retry attempts, a Reconnect now button appears so users can trigger an immediate reconnect.
Owner: @JamesNK
Changes: #18111
๐ Documentation required -
๐ Timestamp filter for telemetry
You can now filter telemetry logs and traces by timestamp using a dedicated timestamp search qualifier in the Aspire Dashboard filter dialog.
Owner: @JamesNK
Changes: #17816
Docs: microsoft/aspire.dev#1181
๐ Documentation required
-
๐ท๏ธ Rename 'Export JSON' action to 'View JSON' in Dashboard
The resource action menu item previously labeled 'Export JSON' is now called 'View JSON', accurately reflecting that it opens a text visualizer rather than downloading a file. The sensitive value confirmation message is also clarified to indicate it is scoped to the current browser.
Owner: @JamesNK
Changes: #18107
๐ Community contribution by @nanookclaw -
โฟ Improved dashboard dialog and control accessibility
Dashboard dialogs now return focus to the launcher element after closing, improving keyboard navigation. Assistant feedback buttons now expose an aria-pressed state, the Text Visualizer format picker uses a proper select control with disabled unavailable options, and console resource prefix colors meet WCAG AA contrast requirements in both light and dark themes.
Owner: @adamint
Changes: #17929 -
๐ Troubleshooting links in dashboard connection error logs
Dashboard connection error logs now include a troubleshooting link when the dashboard fails to connect to the AppHost resource service, helping users quickly find the relevant documentation.
Owner: @JamesNK
Changes: #18194 -
โฟ Mobile navigation and Help dialog accessibility improvements
The dashboard mobile navigation now shows a visible checkmark for the active page and stays within the viewport at high zoom levels. The Help dialog keyboard shortcuts now use semantic term/definition pairs for improved screen reader compatibility.
Owner: @adamint
Changes: #17927 -
๐ Text visualizer hides markdown option for structured data
The TextVisualizerDialog now disables the markdown format option when content is detected as JSON or XML, preventing users from selecting a display mode that is not meaningful for structured data.
Owner: @JamesNK
Changes: #17970 -
๐ข Equality operators in numeric telemetry filter
The telemetry filter dialog now includes == and != operators for numeric fields, making it easier to filter for exact values in logs and traces.
Owner: @JamesNK
Changes: #17708
๐ Community contribution by @ellahathaway -
๐ Dashboard startup log formatting improvements
Dashboard startup log output now uses indented bullet formatting for URLs and emits the container access warning as a separate log entry. The legacy login URL line is also restored so dotnet watch can detect AppHost readiness and auto-launch the browser.
Owner: @JamesNK
Changes: #17595, #17610
-
๐ Metrics chart correctness improvements
Several correctness issues in the metrics charting pipeline have been fixed: histogram traces (P50/P90/P99) now appear in a guaranteed consistent order, the metrics table tab is correctly labeled "Table" instead of "Resources", and metric values are compared correctly across timezones.
Owner: @JamesNK
Changes: #18312 -
๐ Fix: filter removal preserves selected log entry
Removing a filter from the structured logs or resources list no longer incorrectly clears the currently selected entry. The selection is preserved when a filter is removed (which can only expand the result set), and is only cleared when the active filters actually exclude the selected item.
Owner: @JamesNK
Changes: #15825 -
โฟ Fix Manage Data selection accessibility semantics
Fixed accessibility semantics in the Manage Data dialog so screen reader users receive accessible names, checkbox roles, and aria-checked state for each selection control. Selection items now announce their name and checked state correctly.
Owner: @adamint
Changes: #17928 -
๐ Fix trace detail span pane on navigation
The span detail pane is now properly cleared when navigating between traces in the dashboard. Previously, navigating away from a trace left the pane open showing a span from the old trace.
Owner: @JamesNK
Changes: #18146 -
๐ค Fix duplicate replica display names in telemetry
Fixed a display name collision for telemetry resources with multiple replicas. The dashboard now uses the last 8 characters of the service.instance.id GUID instead of the first 8, which prevents identical display names when using version 7 GUIDs (Guid.CreateVersion7()).
Owner: @radical
Changes: #18064
๐ Community contribution by @shauryalowkeygotaura -
๐จ Fix button appearance in dashboard dialogs
Stealth and lightweight buttons in dashboard dialogs now use a transparent background instead of the dialog background color, fixing visual glitches when buttons appear inside table header rows such as the Manage Data dialog.
Owner: @JamesNK
Changes: #17984 -
๐ Fix telemetry streaming with resource filter
Fixed a bug where streaming telemetry (spans/logs) with a resource filter would return empty immediately if the resource had not yet emitted any telemetry. The stream now waits for the resource to appear before returning results.
Owner: @JamesNK
Changes: #17821
8 new features, 4 improvements, 7 bug fixes
-
๐ฑ MAUI platform debugging in VS Code extension
Aspire MAUI resources are now debuggable from the VS Code extension using the MAUI debugger. Supports iOS simulator, Mac Catalyst, Windows, and Android emulator/device targets when the ms-dotnettools.dotnet-maui extension is installed; falls back to process launch on IDEs without MAUI debug support.
Owner: @adamint
Changes: #17857
๐ Documentation required -
๐ VS Code extension exposes AppHost and resource management APIs
The Aspire VS Code extension now exposes AppHost query and resource management APIs through its extension API surface, enabling C# Dev Kit v2 and other tools to programmatically query AppHost state and manage Aspire resources from the extension.
Owner: @adamint
Changes: #17705
๐ Documentation required
๐ Community contribution by @LittleLittleCloud -
๐ช Open Aspire Dashboard in side panel from VS Code
A new VS Code command lets you open the Aspire Dashboard in a side-by-side panel instead of an external browser, making it easier to monitor your application while editing code.
Owner: @adamint
Changes: #17864
๐ Community contribution by @Jah-yee -
๐ Bun debugging support in VS Code extension
The Aspire VS Code extension now supports debugging Bun applications via the WebKit Inspector Protocol debug adapter. Set breakpoints in your Bun code and debug it directly from VS Code when running an AppHost with a Bun resource (requires the oven.bun-vscode extension).
Owner: @adamint
Changes: #17848
๐ Documentation required
๐ Community contribution by @ellahathaway -
๐ฎ Resource commands in VS Code tree view
Resource commands (such as Start, Stop, and custom commands) are now displayed as child items under each resource in the Aspire VS Code extension tree view. Both enabled and disabled commands are shown.
Owner: @adamint
Changes: #17698
๐ Documentation required
๐ Community contribution by @shivamgoel008 -
๐ก VS Code extension telemetry
The VS Code extension now collects telemetry signals including extension activation, debug session start/stop, and dashboard interactions to help improve the product. Data collection follows Microsoft privacy policies.
Owner: @adamint
Changes: #17723
๐ Documentation required -
๐ Support launchUrl in launchSettings.json
The VS Code extension now respects the launchUrl property in launchSettings.json, using it as the serverReadyAction URI format when launching the debugger.
Owner: @adamint
Changes: #17634
๐ Documentation required
๐ Community contribution by @neoGeneva -
๐๏ธ Show discovered AppHosts in VS Code Aspire pane
The VS Code Aspire pane now displays idle (non-running) AppHosts discovered via aspire ls, with right-click context menu actions to Run, Debug, Open Source, or Copy Path.
Owner: @adamint
Changes: #17506
๐ Documentation required
๐ Community contribution by @ellahathaway
-
โก VS Code AppHost discovery efficiency improvements
VS Code AppHost discovery now respects files.exclude and search.exclude workspace settings, debounces file-change events to prevent repeated refresh floods, and avoids overlapping discovery runs. Large workspaces with generated folders should see significantly less background scanning.
Owner: @adamint
Changes: #17897 -
๐ VS Code extension hardened against terminal command injection
VS Code extension terminal commands (Stop AppHost, View Resource Logs, Run Resource Commands) now use structured shell arguments instead of pre-built shell fragments, preventing shell injection via malicious workspace paths or resource names. Control characters are also rejected before terminal input.
Owner: @adamint
Changes: #17930 -
๐๏ธ Improved parameter display in VS Code extension
Parameters now display consistently in both the VS Code extension resource tree and inline AppHost CodeLens. Missing values show as "Value missing" with a warning icon, secret parameters show a masked value, non-secret values show inline text (truncated to 80 characters), and command order now matches the Aspire dashboard.
Owner: @adamint
Changes: #17881
๐ Community contribution by @ellahathaway -
๐ท๏ธ VS Code extension renamed to Aspire
The VS Code extension has been rebranded from ".NET Aspire" to "Aspire". Users will see the updated display name and icon in the VS Code marketplace and extension panel.
Owner: @adamint
Changes: #17843
Docs: microsoft/aspire.dev#1211
-
๐ Fix false CLI upgrade warning in VS Code extension
The VS Code extension no longer shows CLI upgrade guidance for generic fetch or runtime errors. Upgrade prompts now only appear when a genuine CLI compatibility or version mismatch is detected, reducing false-positive noise in the Aspire panel.
Owner: @ellahathaway
Changes: #18358 -
๐ง Fix stale AppHost running state in VS Code extension
Stopped AppHosts are now reliably cleared from the VS Code extension running state after debug sessions end. Stop-state transitions are command-aware, so only run command terminations trigger stop state; non-run commands like publish no longer incorrectly mark AppHosts as stopping.
Owner: @ellahathaway
Changes: #17965 -
๐ Fix concurrent AppHost backchannel connection setup
The CLI extension backchannel now serializes concurrent ConnectAsync calls, preventing a race condition that caused errors when multiple AppHost connections were initiated simultaneously.
Owner: @adamint
Changes: #18322 -
๐ Security fixes in VS Code extension dependencies
Multiple security vulnerabilities in VS Code extension npm dependencies have been patched. Upgrades include undici (7.27.0) for CRLF injection, WebSocket parser crash, and HTTP smuggling; and @nevware21/ts-utils (0.14.0), fast-uri (3.1.2), qs (6.15.2), and ws (8.21.0) for additional high and moderate severity CVEs.
Owner: @IEvangelist
Changes: #17868, #17951 -
๐ Fix extension compatibility error for empty AppHost describe
The VS Code extension now shows a compatibility error when a running AppHost successfully returns no resource data from aspire describe, instead of silently displaying no resources. This surfaces a clear message when the AppHost uses an older Aspire.Hosting version (13.1.0 or earlier) that does not support the describe protocol.
Owner: @adamint
Changes: #17925 -
๐ Security update: tmp package path traversal fix
Updated the tmp npm package to 0.2.6 in the VS Code extension to resolve a path traversal vulnerability (GHSA-ph9p-34f9-6g65).
Owner: @IEvangelist
Changes: #17594
Docs: microsoft/aspire.dev#1123 -
๐ ๏ธ Fix VS Code AppHost launch path resolution
Fixed an issue in the VS Code extension where starting an Aspire debug session from a source file (e.g., Program.cs) would pass the source path to the CLI instead of the project file path, causing the session to fail.
Owner: @davidfowl
Changes: #17408
1 new feature, 4 bug fixes
-
๐งฉ Redis module support via WithModule()
Redis resources can now load native Redis 8+ modules or custom .so modules using WithModule(). Supported built-in modules include RedisNativeModule.Json and RedisNativeModule.Search. TypeScript polyglot AppHosts get a matching withModule() export.
Owner: @sebastienros
Changes: #18025
๐ Documentation required
๐ Community contribution by @aradalvand
-
๐ Fix Entra ID auth in SqlServer client integrations
The SqlServer client integrations (Aspire.Microsoft.Data.SqlClient and Aspire.Microsoft.EntityFrameworkCore.SqlServer) now reference Microsoft.Data.SqlClient.Extensions.Azure, which contains the Entra ID authentication providers that were moved out of the core SqlClient driver in version 7.0. Apps using managed identity or Active Directory authentication against Azure SQL no longer fail at runtime with 'Cannot find an authentication provider for ActiveDirectoryDefault'.
Owner: @sebastienros
Changes: #18149
๐ Documentation required
๐ Community contribution by @0xharkirat -
๐ Fix RabbitMQ structured log event name display
RabbitMQ log entries no longer show misleading level names ('Error', 'Warn', 'Info') as the event name in the Aspire dashboard structured log view. The event name is now left unset, with log level still flowing correctly via LogLevel.
Owner: @radical
Changes: #17355
๐ Community contribution by @alirezafzali -
๐ Fix Redis TLS persistent container startup deadlock
Fixed a deadlock that could occur during Redis container startup when TLS was enabled and the container used a persistent lifetime. The TLS startup arguments now correctly use target-port bindings instead of allocated ports.
Owner: @danegsta
Changes: #17827 -
๐ Fix EF Hosting migration pipeline step handling
Fixed issues in the Entity Framework hosting integration migration pipeline where migration steps were unconditionally added to the bundle-generate step. Improves reliability of EF migration orchestration in AppHost.
Owner: @AndriySvyryd
Changes: #16966
To provide feedback, comment on the Changelog feedback issue (e.g., "Exclude PR #1234", "Rename: X โ Y", "Merge PRs #1234 and #5678").
PRs processed: โ
127 included ยท โ 114 excluded ยท โณ 0 unprocessed ยท 241 total merged in milestone
(View full PR tracker)
Docs PRs: โ
23 included ยท โ 61 excluded ยท โณ 0 unprocessed ยท 44 total from microsoft/aspire.dev
(View docs PR tracker)
PRs analyzed through: #18358 merged 2026-06-20 05:12 UTC