Skip to content

13.5 Change log

github-actions[bot] edited this page Jun 17, 2026 · 165 revisions

Table of Contents

17 new features, 47 improvements, 34 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.

What's New

๐Ÿ  AppHost

6 new features, 20 improvements, 7 bug fixes

New features

  1. ๐ŸŒ 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

  2. ๐Ÿ–ฅ๏ธ 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

  3. ๐ŸŒ 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

  4. ๐Ÿ”ง 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

  5. ๐Ÿ’š 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

  6. ๐Ÿณ 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

Improvements

  1. ๐Ÿ”” 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

  2. ๐ŸŒŒ 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

  3. ๐Ÿท๏ธ 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

  4. ๐Ÿ” Improved Azure provisioning diagnostics
    Azure provisioning failures now surface richer diagnostics with actionable recovery guidance in resource state and aspire deploy output. 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

  5. ๐Ÿ“‹ 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

  6. ๐Ÿ”Œ 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

  7. โœ… 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

  8. ๐Ÿ”„ 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

  9. ๐Ÿšซ PublishAsConnectionString marked obsolete
    The PublishAsConnectionString extension 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 to AddConnectionString in publish-mode app model code.
    Owner: @davidfowl
    Changes: #18044
    โš ๏ธ Breaking change
    ๐Ÿ“ Documentation required

  10. โš™๏ธ 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

  11. ๐Ÿฉบ 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

  12. ๐Ÿค– 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

  13. โธ๏ธ 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

  14. ๐ŸŒ 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

  15. ๐Ÿค– 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

  16. ๐ŸŽ‰ 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

  17. โš™๏ธ 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

  18. โš“ 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

  19. ๐ŸŒ 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

  20. ๐Ÿ”Œ 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

Bug fixes

  1. ๐Ÿ› Fix Foundry hosted agent deployment with explicit target port
    Fixed a deployment failure when Foundry hosted agents were configured with an explicit targetPort (e.g., .WithHttpEndpoint(targetPort: 9000).AsHostedAgent(...)). The publish path no longer attempts to emit unsupported TargetPort endpoint metadata for Foundry deployment targets.
    Owner: @tommasodotNET
    Changes: #17903

  2. ๐Ÿ› 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

  3. ๐Ÿ”„ 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

  4. ๐Ÿ”ง 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

  5. ๐Ÿ”— 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

  6. ๐Ÿ”“ 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

  7. ๐ŸŒ 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

๐Ÿ’ป CLI

2 new features, 17 improvements, 13 bug fixes

New features

  1. ๐Ÿ“ฆ 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#1243, microsoft/aspire.dev#1252
    ๐Ÿ“ Documentation required

  2. ๐Ÿ“ฆ 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

Improvements

  1. ๐Ÿ” Improved docs search relevance
    The aspire docs search command 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

  2. ๐Ÿ–ฅ๏ธ OS information in aspire doctor
    The aspire doctor command 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

  3. ๐Ÿท๏ธ 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

  4. ๐Ÿฉบ 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

  5. โœ… 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

  6. ๐Ÿงน 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

  7. ๐Ÿ› ๏ธ --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

  8. ๐Ÿ› ๏ธ 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

  9. ๐Ÿšซ 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

  10. ๐Ÿค– 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

  11. โšก 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

  12. ๐Ÿ”€ 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

  13. ๐Ÿ“š 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

  14. ๐Ÿ—‘๏ธ 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

  15. ๐Ÿ”Ž 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

  16. ๐Ÿ” 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

  17. ๐ŸŽจ 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

Bug fixes

  1. ๐Ÿ“ Fix aspire doctor text wrapping
    Fixes text alignment in the aspire doctor output so that long messages wrap correctly, aligning continuation lines with the message text rather than indenting under the emoji icon.
    Owner: @JamesNK
    Changes: #18257

  2. ๐Ÿ”ง Fix false version-skew warning during aspire update
    Fixes a false positive version-mismatch warning that appeared during aspire 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

  3. ๐Ÿ› Fix non-interactive self-update channel selection
    Running aspire update --self --non-interactive now correctly auto-detects the update channel from the CLI's current identity, fixing a failure when --channel is not specified.
    Owner: @JamesNK
    Changes: #17512
    ๐ŸŒ Community contribution by @alirezafzali

  4. โฑ๏ธ 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

  5. ๐Ÿงน Fix stale backchannel sockets blocking CLI commands
    Stale AppHost backchannel socket files left behind by exited processes no longer block CLI commands like aspire add. The CLI now automatically prunes orphaned PID-qualified sockets before probing, preventing spurious connection errors.
    Owner: @davidfowl
    Changes: #18038

  6. ๐Ÿ”จ 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

  7. ๐Ÿ›‘ 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

  8. ๐Ÿ› 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

  9. ๐Ÿ“‹ 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

  10. ๐Ÿ”ง 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

  11. ๐Ÿ› 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

  12. ๐Ÿ’ฌ 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

  13. ๐Ÿ”’ 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

๐Ÿ“Š Dashboard

2 new features, 6 improvements, 6 bug fixes

New features

  1. ๐Ÿ” 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

  2. ๐Ÿ• 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

Improvements

  1. โ™ฟ 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

  2. ๐Ÿ”— 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

  3. โ™ฟ 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

  4. ๐Ÿ” 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

  5. ๐Ÿ”ข 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

  6. ๐Ÿ“‹ 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

Bug fixes

  1. ๐Ÿ› 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

  2. โ™ฟ 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

  3. ๐Ÿ” 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

  4. ๐Ÿ”ค 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

  5. ๐ŸŽจ 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

  6. ๐Ÿ”„ 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

๐Ÿงฉ Extensions

6 new features, 4 improvements, 4 bug fixes

New features

  1. ๐ŸชŸ 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

  2. ๐Ÿ› 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

  3. ๐ŸŽฎ 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

  4. ๐Ÿ“ก 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

  5. ๐Ÿ”— 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

  6. ๐Ÿ—‚๏ธ 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

Improvements

  1. โšก 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

  2. ๐Ÿ”’ 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

  3. ๐ŸŽ›๏ธ 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

  4. ๐Ÿท๏ธ 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

Bug fixes

  1. ๐Ÿ”’ 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

  2. ๐Ÿ”Œ 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

  3. ๐Ÿ”’ 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

  4. ๐Ÿ› ๏ธ 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

๐Ÿ”Œ Integrations

1 new feature, 4 bug fixes

New features

  1. ๐Ÿงฉ 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

Bug fixes

  1. ๐Ÿ” 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

  2. ๐Ÿ› 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

  3. ๐Ÿ”’ 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

  4. ๐Ÿ› 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: โœ… 109 included ยท โŒ 89 excluded ยท โณ 0 unprocessed ยท 198 total merged in milestone (View full PR tracker) Docs PRs: โœ… 22 included ยท โŒ 61 excluded ยท โณ 0 unprocessed ยท 43 total from microsoft/aspire.dev (View docs PR tracker) PRs analyzed through: #18274 merged 2026-06-17 18:06 UTC

Clone this wiki locally