Skip to content

[Automated] Backmerge release/13.2 to main#14500

Merged
joperezr merged 9 commits intomainfrom
backmerge/release-13.2-to-main
Feb 14, 2026
Merged

[Automated] Backmerge release/13.2 to main#14500
joperezr merged 9 commits intomainfrom
backmerge/release-13.2-to-main

Conversation

@github-actions
Copy link
Contributor

Automated Backmerge

This PR merges changes from release/13.2 back into main.

Commits to merge: 8

This PR was created automatically to keep main up-to-date with release branch changes.
Once approved, please merge using a merge commit (not squash or rebase).


This PR was generated by the backmerge-release workflow.

joperezr and others added 9 commits February 13, 2026 13:15
…#14424)

* Improve detach mode: fix pipe handle inheritance and unify log naming

* Show child log file path on detach success

* Fix detach: redirect child output to suppress console bleed

* Suppress child console output via --log-file instead of pipe redirection

The previous approach (RedirectStandardOutput=true + close streams) still created
inheritable pipe handles. Instead, keep Redirect=false to avoid pipe inheritance
and have the child process suppress its own console output when --log-file is
specified (the signal that it's a detach child).

* Add DetachedProcessLauncher with native CreateProcess on Windows

Replace Process.Start with platform-specific launcher that suppresses child
output and prevents handle/fd inheritance to grandchildren:

- Windows: P/Invoke CreateProcess with STARTUPINFOEX and
  PROC_THREAD_ATTRIBUTE_HANDLE_LIST (same approach as Docker/hcsshim).
  Child stdout/stderr go to NUL, only NUL handle is inheritable.
- Linux/macOS: Process.Start with RedirectStdout=true + close streams.
  Pipes are O_CLOEXEC so grandchild never inherits them.

Removes the Console.SetOut(TextWriter.Null) workaround from Program.cs.

* Fix misleading O_CLOEXEC comments in Unix launcher

dup2 onto fd 0/1/2 clears O_CLOEXEC, so grandchildren DO inherit the pipe
as their stdio. With the parent's read-end closed, writes produce harmless
EPIPE. Updated comments to accurately describe the Unix fd inheritance model
based on dotnet/runtime pal_process.c source.

* Fix command-line quoting for Windows backslash escaping

* Fix detach log parsing and child log path handling
Co-authored-by: sebastienros <sebastienros@users.noreply.github.com>
* Handle polyglot settings package versions on read path

* Address review feedback for polyglot settings handling

* Encapsulate project-reference mode in apphost projects

* Prevent directory trasversal for release builds

* Fix build
* Use --exact-match in dotnet package search when stagingVersionPrefix is set

   dotnet package search only returns the latest version per package ID,
   so when the shared dotnet9 feed has both 13.2 and 13.3 prerelease
   packages, only 13.3 is returned. The stagingVersionPrefix filter then
   discards it, resulting in "no templates found".

   When VersionPrefix is set on a channel, pass --exact-match to get all
   versions from the feed, enabling the prefix filter to find the correct
   version line. Also update ParsePackageSearchResults to handle the
   "version" JSON field used by --exact-match (vs "latestVersion" in
   normal search).

* Use pinned CLI version for staging channel in shared feed mode

When the staging channel is configured with Prerelease quality and no
explicit feed override, packages are now pinned to the CLI's own version
instead of searching NuGet. This avoids the dotnet package search
limitation where only the latest version per package ID is returned,
which caused version mismatches when the shared feed contains packages
from multiple version lines (e.g. 13.2.x and 13.3.x).

New config flag stagingPinToCliVersion (boolean) controls this behavior.
When enabled alongside overrideStagingQuality=Prerelease:
- Templates (aspire new): synthetic result with CLI version
- Integrations (aspire add): discovers packages then overrides version
- Specific packages (aspire update): synthetic result with CLI version

Also cleans up reverted exact-match parameter plumbing from interfaces
and test fakes.

* Mark staging override settings as internal in JSON schemas

* Add E2E test for staging channel config and channel switching

* Fix E2E test: use correct global settings path (~/.aspire/globalsettings.json)

* Fix E2E test: config get doesn't support -g flag
)

Replace deprecated windows.vs2022preview.amd64 images with
windows.vs2026preview.scout.amd64 in internal pipeline definitions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Standard SKU doesn't work with private endpoints. It needs to be Premium.
* New NetworkEndpointSnapshotList API

* Make tests use new AllocatedEndpoint API

* Fix AllocatedEndpoint API usage in DcpExecutor

* Add test

* Fix inconsistent test value

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Do not use hardcoded delay in test

* Improve WaitingForAllocatedEndpointWorks test

* Make new test simpler

* Clean up AllocatedEndpoint API some more

* Suppress obsolete member errors

* Fix MAUI test

* Validate endpoint passed to AddOrUpdateAllocatedEndpoint()

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@github-actions
Copy link
Contributor Author

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/dotnet/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 14500

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/dotnet/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 14500"

@joperezr
Copy link
Member

I'll merge this PR to ensure it isn't squashed.

@github-actions
Copy link
Contributor Author

🎬 CLI E2E Test Recordings

The following terminal recordings are available for commit 4ecfe0d:

Test Recording
AgentCommands_AllHelpOutputs_AreCorrect ▶️ View Recording
AgentInitCommand_MigratesDeprecatedConfig ▶️ View Recording
Banner_DisplayedOnFirstRun ▶️ View Recording
Banner_DisplayedWithExplicitFlag ▶️ View Recording
CreateAndDeployToDockerCompose ▶️ View Recording
CreateAndDeployToDockerComposeInteractive ▶️ View Recording
CreateAndPublishToKubernetes ▶️ View Recording
CreateAndRunAspireStarterProject ▶️ View Recording
CreateAndRunAspireStarterProjectWithBundle ▶️ View Recording
CreateAndRunJsReactProject ▶️ View Recording
CreateAndRunPythonReactProject ▶️ View Recording
CreateEmptyAppHostProject ▶️ View Recording
CreateStartAndStopAspireProject ▶️ View Recording
CreateStartWaitAndStopAspireProject ▶️ View Recording
CreateTypeScriptAppHostWithViteApp ▶️ View Recording
DoctorCommand_DetectsDeprecatedAgentConfig ▶️ View Recording
DoctorCommand_WithSslCertDir_ShowsTrusted ▶️ View Recording
DoctorCommand_WithoutSslCertDir_ShowsPartiallyTrusted ▶️ View Recording
LogsCommandShowsResourceLogs ▶️ View Recording
PsCommandListsRunningAppHost ▶️ View Recording
ResourcesCommandShowsRunningResources ▶️ View Recording
StagingChannel_ConfigureAndVerifySettings_ThenSwitchChannels ▶️ View Recording

📹 Recordings uploaded automatically from CI run #22007659752

@joperezr joperezr merged commit 7990dfc into main Feb 14, 2026
677 of 680 checks passed
@joperezr joperezr deleted the backmerge/release-13.2-to-main branch February 14, 2026 01:09
@dotnet-policy-service dotnet-policy-service bot added this to the 13.3 milestone Feb 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-engineering-systems infrastructure helix infra engineering repo stuff Re-opened Github-Action PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants