You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
> 🤖 Auto-generated by .github/workflows/repo-pulse.md — do not edit.
> Your manual edits will be overwritten on the next run.
>
> - Generated: 2026-05-06 16:30 UTC
> - Covers: activity from the last 3 days (since 2026-05-03T16:30:13Z)
> - Run:workflow run
📦 Themes — last 3 days on origin/main
28 PRs landed on origin/main · 1 dependency auto-update collapsed (#16751 DCP 0.23.4) · plus 12 release/13.3 backports (listed at the bottom of the next section).
Python debug working directory aligned with CLI for IDE runs (#16668)
Hosting.Kubernetes API consolidation — 3 PRs (@mitchdenny, @eerhardt)
Kubernetes/Helm API surface tightening.
Show 3 PRs
Helm chart name/version/description options consolidated onto a single WithHelm(...) overload (#16759)
AddIngress/AddGateway/WithRoute/WithTls/WithHostname moved from Aspire.Hosting.Kubernetes to Aspire.Hosting (#16588)
API review feedback: AKS APIs refactored to Aspire.Hosting.Azure.Kubernetes, JS experimental ID renamed to ASPIREJAVASCRIPT001 (#16673)
Milestone changelog workflow — 3 PRs (@JamesNK)
The agentic milestone-changelog workflow gained backport handling, parameterization, and docs-PR tracking.
Show 3 PRs
Backport PRs are no longer silently excluded as bot-authored (#16712)
Prompt values parameterized so the workflow isn't hard-coded to one repo (#16715)
Docs PRs from microsoft/aspire.dev matched to changelog entries (#16777)
Plus standalone landings: Foundry hosted-agent endpoint resolution under aspire deploy (#16797), AtsJsonCodeWriter collapsed to internal shared helper (#16677), Ubuntu apt-mirror override for CLI E2E images (#16753), ConfigurationSchemaGenerator added to Aspire-Core.slnf (#16711).
🔥 Merged PRs by category — last 3 days
🐛 Fixes (9)
Show all 9 fixes
aspire new empty-AppHost language picker — #16666 by @maddymontaquila · fixes #16661, #16662
Empty-AppHost creation now has a single interactive top-level entry (Empty AppHost (Choose language…)) with the language follow-up nested underneath, instead of duplicating language entries at the top level. Adds direct shortcut template IDs for Python and Rust empty AppHosts.
HostUrl under the container tunnel — #16684 by @danegsta · fixes #16641, #16642
Containers referencing app-model host ports were hitting FailToStart because the endpoint was read before allocation. Now treated as a dependency and resolved via the endpoint's async port property.
Python debug working directory in VS Code — #16668 by @adamint · fixes #16575
Extension Python debug now sets working_directory on Python project launches so IDE-run resources see the same cwd that aspire run uses on the CLI.
Extension Run Without Debugging — three fixes — #16794 by @adamint
Restored the build (the watch expression wrongly skipped it for extension hosts without --start-debug-session).
Honored the IDE's SupportedLaunchConfigurations for "project", so VS Code without the C# extension falls back to ExecutionType.Process.
Removed the always-no-op NoExtensionLaunch flag.
apphost.run.json from aspire init single-file skeleton — #16812 by @mitchdenny · fixes #15986
Foundry hosted agent endpoint resolution under aspire deploy — #16797 by @eerhardt · fixes #16608
PublishAsHostedAgent(...) was resolving target env vars through context-free value providers, which could wait forever on endpoint allocation snapshots when a hosted agent referenced an Azure Container Apps endpoint. Resolution is now publish-aware via a new IComputeEnvironmentResource.GetEndpointPropertyExpression(...) with ACA + App Service overrides; referenced internal endpoints fail fast with an actionable exception instead of hanging.
aspire run when DisableDashboard = true — #16773 by @JamesNK · fixes #16619
aspire run returned DashboardFailure while aspire start succeeded for the same AppHost. AppHostRpcTarget now returns DashboardUrlsState { DashboardHealthy = false } instead of throwing, and RunCommand treats an unhealthy dashboard as a warning so the AppHost continues running with N/A in the dashboard URL summary.
--yes required with --non-interactive on aspire destroy — #16805 by @eerhardt · fixes #16623
aspire destroy --non-interactive previously skipped the confirmation prompt entirely. The command now rejects that combination with a localized error unless --yes is also passed, preventing accidental teardown from automation that forgot the flag.
ReparsePointTests cleanup on Windows without Developer Mode — #16814 by @JamesNK
CreateOrReplace_CreatesReparsePointToTargetDirectory and CreateOrReplace_ReplacesExistingReparsePoint were leaving reparse points (junctions) in their temp directories, causing the next test's directory cleanup to fail intermittently on Windows hosts without Developer Mode enabled. Wrapped the bodies in try/finally so junctions are removed before each test exits.
✨ New (7)
Show all 7 new features
TypeScript AppHost type-check before startup — #16689 by @sebastienros · fixes #16645
TS AppHosts run through tsx, which transpiles without type validation. A new PreExecute runtime hook now runs tsc --noEmit -p tsconfig.apphost.json before aspire run/start, so type errors surface as a single Spectre-formatted Aspire error instead of silently running broken code.
Yarn Classic rejected for TypeScript AppHosts — #16620 by @eerhardt · fixes #16616
Yarn Classic's command and argument-forwarding semantics differ enough from npm/pnpm/Yarn Berry that TS AppHosts running through it produce inconsistent behavior. The toolchain resolver now detects Yarn Classic and rejects it with an actionable error.
Polyglot AppHost DCP config priority — #16734 by @sebastienros
Explicit DcpPublisher:CliPath / DcpPublisher:DashboardPath settings now win over polyglot bundle discovery defaults, so power users can override DCP and dashboard paths without fighting bundle discovery.
Backport-PR support in milestone changelog workflow — #16712 by @JamesNK
Backport PRs were silently excluded as bot-authored. The changelog agentic workflow now treats backports as in-scope and links them back to the originating product PR.
Reserved container-tunnel name validation — #16748 by @copilot-swe-agent
When the container tunnel is enabled, DCP container preparation fails AppHost startup if any container resource is named aspire — the name reserved for the tunnel itself.
aspire update previously only consulted --channel/--quality from the command line; resolution now centralizes in UpdateCommand.ExecuteAsync and consults configuration first.
Docs PR tracking in milestone changelog workflow — #16777 by @JamesNK
Workflow now also fetches merged PRs from microsoft/aspire.dev and matches them to changelog entries, recording included/excluded status alongside the product PR tracker.
Latest DCP versions report richer detail on container-tunnel failures. The Aspire side now surfaces that detail to the user instead of swallowing it inside generic DCP errors.
aspire new output path handling — #16772 by @JamesNK
Default output directory now derives from the template name (e.g. ./aspire-starter) with auto-incrementing -2/-3 suffixes when occupied. Paths are validated for invalid chars before Path.GetFullPath, and explicit --output paths pointing at non-empty existing dirs are rejected with a clear error.
AppHost debug console output for TypeScript and C# — #16795 by @adamint
Filter trce/dbug debugger noise from the parent debug console while keeping fail/crit, uncaught exceptions on stderr.
Surface guest AppHost pre-launch failures (e.g. tsc --noEmit errors) before the backchannel wait, instead of leaving the extension stuck at Connecting to AppHost….
Line-buffer CLI stdout/stderr and decode UTF-8 so output isn't split mid-emoji.
aspire describe --follow no longer restarts forever when it exits before producing data.
🧹 Refactors (4)
Show all 4 refactors
API Review feedback — AKS / EF / JS experimental ID — #16673 by @eerhardt
Renames ASPIREEXTENSION001 → ASPIREJAVASCRIPT001 for JavaScript experimental APIs. Refactors AKS resource APIs into Aspire.Hosting.Azure.Kubernetes and tightens the EF resource API shape.
AtsJsonCodeWriter moved to internal shared helper — #16677 by @eerhardt
Was only used by the CLI and polyglot code-generation projects, so exposing it as public API on Aspire.TypeSystem was unnecessary surface area. Collapsed to internal shared helper.
Helm chart options consolidated on WithHelm(...) — #16759 by @mitchdenny
Two parallel APIs (annotation-based WithHelm(h => h.WithChartVersion(...)) and property-based env.WithProperties(k => k.HelmChartName = ...)) collapse onto a single WithHelm(...) overload on KubernetesEnvironmentResource.
AddIngress / AddGateway extensions in Aspire.Hosting namespace — #16588 by @mitchdenny
Extension methods moved from Aspire.Hosting.Kubernetes to Aspire.Hosting, so AddGateway, AddIngress, etc. are reachable from the default AppHost using set without an extra using Aspire.Hosting.Kubernetes;.
🏗️ Infrastructure (3)
Show all 3 infrastructure changes
ConfigurationSchemaGenerator in Aspire-Core.slnf — #16711 by @JamesNK
Adds the ConfigurationSchemaGenerator project to the Aspire-Core.slnf solution filter for easier development access.
Milestone changelog prompt parameterization — #16715 by @JamesNK
The agentic milestone-changelog workflow's prompt now reads repo-specific values from inputs/env instead of hard-coded strings, so the workflow isn't pinned to the current Aspire repo.
Ubuntu apt-mirror override for CLI E2E images — #16753 by @danegsta
Adds UBUNTU_APT_MIRROR build arg and ASPIRE_E2E_UBUNTU_APT_MIRROR env wiring to the CLI E2E Dockerfiles, letting CI swap to a faster/closer apt mirror when the default is slow.
> 🤖 Auto-generated by
.github/workflows/repo-pulse.md— do not edit.> Your manual edits will be overwritten on the next run.
>
> - Generated: 2026-05-06 16:30 UTC
> - Covers: activity from the last 3 days (since 2026-05-03T16:30:13Z)
> - Run: workflow run
📦 Themes — last 3 days on
origin/mainCLI command-surface tightening — 8 PRs (
@JamesNK,@mitchdenny,@eerhardt,@maddymontaquila)A sustained run of
aspire init/new/update/run/destroypolish — fixing rough edges that bit users in non-default configurations.Show 8 PRs
aspire newempty-AppHost language picker collapsed to one interactive entry (#16666)aspire updatehonors the channel saved viaaspire config set(#16716)aspire init's C# single-file skeleton emitsapphost.run.jsonsodotnet run apphost.csactually starts (#16812)aspire newderives default output dir from template name + auto-increments (#16772)aspire runno longer fails withDashboardFailurewhenDisableDashboard = true(#16773)aspire destroy --non-interactivenow refuses without--yes(#16805)ReparsePointTestscleanup on Windows without Developer Mode (#16814)TypeScript / polyglot AppHost toolchain — 3 PRs (
@sebastienros,@eerhardt)Pre-launch validation and toolchain selectivity for non-C# AppHosts.
Show 3 PRs
tsc --noEmit -p tsconfig.apphost.jsonruns beforeaspire run/startso type errors surface as a clean Spectre-formatted error (#16689)DcpPublisher:CliPath/DashboardPathconfig wins over polyglot bundle discovery (#16734)Container tunnel hardening — 3 PRs (
@danegsta,@karolz-ms,@copilot-swe-agent)Three independent improvements to the DCP container tunnel surface.
Show 3 PRs
HostUrlresolution under the tunnel — endpoints were read before allocation, treated as a dependency now (#16684)aspire(#16748)VS Code extension launch & debug output — 3 PRs (
@adamint)Extension AppHost debug-console output and pre-launch failure handling cleaned up across the C# + Python + TS paths.
Show 3 PRs
SupportedLaunchConfigurationshonored for"project", deadNoExtensionLaunchflag removed (#16794)Hosting.Kubernetes API consolidation — 3 PRs (
@mitchdenny,@eerhardt)Kubernetes/Helm API surface tightening.
Show 3 PRs
WithHelm(...)overload (#16759)AddIngress/AddGateway/WithRoute/WithTls/WithHostnamemoved fromAspire.Hosting.KubernetestoAspire.Hosting(#16588)Aspire.Hosting.Azure.Kubernetes, JS experimental ID renamed toASPIREJAVASCRIPT001(#16673)Milestone changelog workflow — 3 PRs (
@JamesNK)The agentic milestone-changelog workflow gained backport handling, parameterization, and docs-PR tracking.
Show 3 PRs
microsoft/aspire.devmatched to changelog entries (#16777)Plus standalone landings: Foundry hosted-agent endpoint resolution under
aspire deploy(#16797),AtsJsonCodeWritercollapsed to internal shared helper (#16677), Ubuntu apt-mirror override for CLI E2E images (#16753),ConfigurationSchemaGeneratoradded toAspire-Core.slnf(#16711).🔥 Merged PRs by category — last 3 days
🐛 Fixes (9)
Show all 9 fixes
aspire newempty-AppHost language picker — #16666 by@maddymontaquila· fixes #16661, #16662Empty-AppHost creation now has a single interactive top-level entry (
Empty AppHost (Choose language…)) with the language follow-up nested underneath, instead of duplicating language entries at the top level. Adds direct shortcut template IDs for Python and Rust empty AppHosts.HostUrlunder the container tunnel — #16684 by@danegsta· fixes #16641, #16642Containers referencing app-model host ports were hitting
FailToStartbecause the endpoint was read before allocation. Now treated as a dependency and resolved via the endpoint's async port property.Python debug working directory in VS Code — #16668 by
@adamint· fixes #16575Extension Python debug now sets
working_directoryon Python project launches so IDE-run resources see the same cwd thataspire runuses on the CLI.Extension Run Without Debugging — three fixes — #16794 by
@adamintwatchexpression wrongly skipped it for extension hosts without--start-debug-session).SupportedLaunchConfigurationsfor"project", so VS Code without the C# extension falls back toExecutionType.Process.NoExtensionLaunchflag.apphost.run.jsonfromaspire initsingle-file skeleton — #16812 by@mitchdenny· fixes #15986After
aspire init,dotnet run apphost.cswas crashing because dashboard / OTLP / resource-service env vars only get applied viaapphost.run.json(the .NET 10 file-based runner doesn't readaspire.config.json's profiles). Init now drops both files with matching ports. Regression entered with Fix config discovery to search from apphost directory and add aspire.config.json to .NET templates microsoft/aspire#15423.Foundry hosted agent endpoint resolution under
aspire deploy— #16797 by@eerhardt· fixes #16608PublishAsHostedAgent(...)was resolving target env vars through context-free value providers, which could wait forever on endpoint allocation snapshots when a hosted agent referenced an Azure Container Apps endpoint. Resolution is now publish-aware via a newIComputeEnvironmentResource.GetEndpointPropertyExpression(...)with ACA + App Service overrides; referenced internal endpoints fail fast with an actionable exception instead of hanging.aspire runwhenDisableDashboard = true— #16773 by@JamesNK· fixes #16619aspire runreturnedDashboardFailurewhileaspire startsucceeded for the same AppHost.AppHostRpcTargetnow returnsDashboardUrlsState { DashboardHealthy = false }instead of throwing, andRunCommandtreats an unhealthy dashboard as a warning so the AppHost continues running withN/Ain the dashboard URL summary.--yesrequired with--non-interactiveonaspire destroy— #16805 by@eerhardt· fixes #16623aspire destroy --non-interactivepreviously skipped the confirmation prompt entirely. The command now rejects that combination with a localized error unless--yesis also passed, preventing accidental teardown from automation that forgot the flag.ReparsePointTestscleanup on Windows without Developer Mode — #16814 by@JamesNKCreateOrReplace_CreatesReparsePointToTargetDirectoryandCreateOrReplace_ReplacesExistingReparsePointwere leaving reparse points (junctions) in their temp directories, causing the next test's directory cleanup to fail intermittently on Windows hosts without Developer Mode enabled. Wrapped the bodies intry/finallyso junctions are removed before each test exits.✨ New (7)
Show all 7 new features
TypeScript AppHost type-check before startup — #16689 by
@sebastienros· fixes #16645TS AppHosts run through
tsx, which transpiles without type validation. A newPreExecuteruntime hook now runstsc --noEmit -p tsconfig.apphost.jsonbeforeaspire run/start, so type errors surface as a single Spectre-formatted Aspire error instead of silently running broken code.Yarn Classic rejected for TypeScript AppHosts — #16620 by
@eerhardt· fixes #16616Yarn Classic's command and argument-forwarding semantics differ enough from npm/pnpm/Yarn Berry that TS AppHosts running through it produce inconsistent behavior. The toolchain resolver now detects Yarn Classic and rejects it with an actionable error.
Polyglot AppHost DCP config priority — #16734 by
@sebastienrosExplicit
DcpPublisher:CliPath/DcpPublisher:DashboardPathsettings now win over polyglot bundle discovery defaults, so power users can override DCP and dashboard paths without fighting bundle discovery.Backport-PR support in milestone changelog workflow — #16712 by
@JamesNKBackport PRs were silently excluded as bot-authored. The changelog agentic workflow now treats backports as in-scope and links them back to the originating product PR.
Reserved container-tunnel name validation — #16748 by
@copilot-swe-agentWhen the container tunnel is enabled, DCP container preparation fails AppHost startup if any container resource is named
aspire— the name reserved for the tunnel itself.aspire updatehonors configured channel — #16716 by@mitchdenny· fixes #16650aspire updatepreviously only consulted--channel/--qualityfrom the command line; resolution now centralizes inUpdateCommand.ExecuteAsyncand consults configuration first.Docs PR tracking in milestone changelog workflow — #16777 by
@JamesNKWorkflow now also fetches merged PRs from
microsoft/aspire.devand matches them to changelog entries, recording included/excluded status alongside the product PR tracker.🔧 Improvements (4)
Show all 4 improvements
CLI init output spacing — #16718 by
@JamesNKCleans up spacing around prompts and markdown rendering in the
init/newflows before chaining into agent-init.Container tunnel error reporting — #16537 by
@karolz-ms· fixes #13892Latest DCP versions report richer detail on container-tunnel failures. The Aspire side now surfaces that detail to the user instead of swallowing it inside generic DCP errors.
aspire newoutput path handling — #16772 by@JamesNKDefault output directory now derives from the template name (e.g.
./aspire-starter) with auto-incrementing-2/-3suffixes when occupied. Paths are validated for invalid chars beforePath.GetFullPath, and explicit--outputpaths pointing at non-empty existing dirs are rejected with a clear error.AppHost debug console output for TypeScript and C# — #16795 by
@adaminttrce/dbugdebugger noise from the parent debug console while keepingfail/crit, uncaught exceptions on stderr.tsc --noEmiterrors) before the backchannel wait, instead of leaving the extension stuck atConnecting to AppHost….aspire describe --followno longer restarts forever when it exits before producing data.🧹 Refactors (4)
Show all 4 refactors
API Review feedback — AKS / EF / JS experimental ID — #16673 by
@eerhardtRenames
ASPIREEXTENSION001→ASPIREJAVASCRIPT001for JavaScript experimental APIs. Refactors AKS resource APIs intoAspire.Hosting.Azure.Kubernetesand tightens the EF resource API shape.AtsJsonCodeWritermoved to internal shared helper — #16677 by@eerhardtWas only used by the CLI and polyglot code-generation projects, so exposing it as public API on
Aspire.TypeSystemwas unnecessary surface area. Collapsed to internal shared helper.Helm chart options consolidated on
WithHelm(...)— #16759 by@mitchdennyTwo parallel APIs (annotation-based
WithHelm(h => h.WithChartVersion(...))and property-basedenv.WithProperties(k => k.HelmChartName = ...)) collapse onto a singleWithHelm(...)overload onKubernetesEnvironmentResource.AddIngress/AddGatewayextensions inAspire.Hostingnamespace — #16588 by@mitchdennyExtension methods moved from
Aspire.Hosting.KubernetestoAspire.Hosting, soAddGateway,AddIngress, etc. are reachable from the default AppHostusingset without an extrausing Aspire.Hosting.Kubernetes;.🏗️ Infrastructure (3)
Show all 3 infrastructure changes
ConfigurationSchemaGeneratorinAspire-Core.slnf— #16711 by@JamesNKAdds the
ConfigurationSchemaGeneratorproject to theAspire-Core.slnfsolution filter for easier development access.Milestone changelog prompt parameterization — #16715 by
@JamesNKThe agentic milestone-changelog workflow's prompt now reads repo-specific values from inputs/env instead of hard-coded strings, so the workflow isn't pinned to the current Aspire repo.
Ubuntu apt-mirror override for CLI E2E images — #16753 by
@danegstaAdds
UBUNTU_APT_MIRRORbuild arg andASPIRE_E2E_UBUNTU_APT_MIRRORenv wiring to the CLI E2E Dockerfiles, letting CI swap to a faster/closer apt mirror when the default is slow.🍒 Release-branch backports (12)
Show 12 backports to release/13.3
@mitchdenny@mitchdenny@aspire-repo-bot@aspire-repo-bot@aspire-repo-bot@aspire-repo-bot@sebastienros@aspire-repo-bot@JamesNK@JamesNK@adamint@aspire-repo-bot— See all 46 PRs merged in the last 3 days (across all branches).
🚧 Recently Opened PRs
@JamesNK@mitchdenny@mitchdenny@mitchdenny@radical@adamint@radical@adamint@DamianEdwards@aspire-repo-bot@aspire-repo-bot@Copilot@danegsta@sebastienros@crutkas@adamint@IEvangelist@davidfowl@mitchdenny@Copilot@IEvangelist@sebastienros@IEvangelist@afscrome@CopilotShowing 25 of 29 — see all.
🐛 Recently Filed Issues
Showing 25 of 55 — see all.
👀 PRs Awaiting Review
@marshalhayes@Copilot@TheRubble@afscrome@danegsta@icyca@dkattan@Copilot@ShilpiRach@bbartels@Falco20019@github-actions@davidfowl@jmprieur@mcumming@github-actions@github-actions@tmat@SimonCropp@YandyZaldivar@github-actions@Copilot@danegsta@afscrome@javiercnShowing 25 of 77 — see all.
💬 Activity Highlights
@mitchdenny@aspire-repo-bot@mitchdenny@adamint@danegsta@afscrome@eerhardt@radical@JamesNK@mitchdenny@aspire-repo-bot@radical@eerhardt@mitchdenny@radical@radical@radical@radical@radical@radical@davidfowl@JamesNK@mitchdenny@mitchdenny@sebastienrosShowing 25 of 273 — see all.
> Generated by Repo Pulse — Daily Report · ● 675.1K · ◷