Skip to content

CLI: Make update notifications opt-in and suppress when --format json#17350

Merged
JamesNK merged 8 commits into
mainfrom
jamesn/update-notifications-opt-in
May 22, 2026
Merged

CLI: Make update notifications opt-in and suppress when --format json#17350
JamesNK merged 8 commits into
mainfrom
jamesn/update-notifications-opt-in

Conversation

@JamesNK
Copy link
Copy Markdown
Member

@JamesNK JamesNK commented May 21, 2026

Summary

Two changes to update notification behavior in the CLI:

  1. Default flipped to opt-in: BaseCommand.UpdateNotificationsEnabled now defaults to false. Commands must explicitly override to true to show the update notification banner. This prevents new commands from accidentally displaying notifications and ensures machine-readable output commands stay clean by default.

  2. Suppress when --format json: Even if a command opts in to notifications, they are suppressed when the user requests JSON output (--format json), ensuring machine-parseable stdout is never polluted.

Changes

  • BaseCommand.UpdateNotificationsEnabled default changed from true to false
  • Added !IsJsonFormatRequested(parseResult) guard to the notification check in BaseCommand
  • Added explicit => true to user-facing interactive commands
  • Removed all now-redundant => false overrides
  • Added parameterized test covering both scenarios

Commands that display update notifications (=> true)

Command Description
AddCommand Add integrations to a project
DashboardRunCommand Run the Aspire dashboard
DescribeCommand Describe a resource
ExportCommand Export telemetry data
InitCommand Initialize an Aspire project
LogsCommand View resource logs
LsCommand List Aspire projects
NewCommand Create a new Aspire project
PsCommand List running resources
ResourceCommand Manage a resource (start/stop/restart)
RestoreCommand Restore project dependencies
RunCommand Run an AppHost (when not in detach mode)
SetupCommand Set up the Aspire layout
StartCommand Start an AppHost in the background
StopCommand Stop a running AppHost
WaitCommand Wait for a resource to reach a state
PipelineCommandBase Deploy/Destroy/Do/Publish commands

Commands that do not display update notifications (default)

Command Reason
AgentInitCommand Agent/machine consumer
AgentMcpCommand Agent/machine consumer
ApiGetCommand, ApiListCommand, ApiSearchCommand Machine-readable output
CacheCommand.ClearCommand Quick utility
CertificatesCleanCommand, CertificatesTrustCommand Quick utility
ConfigCommand + subcommands Quick utility
DoctorCommand Embeds update info in its own output
DocsGetCommand, DocsListCommand, DocsSearchCommand Machine-readable output
ExtensionInternalCommand Hidden/internal
IntegrationSearchCommand / IntegrationListCommand Machine-readable output
McpCallCommand, McpInitCommand, McpStartCommand, McpToolsCommand MCP/machine consumer
ParentCommand subclasses Only display help
RenderCommand Hidden/internal
RunCommand (detach mode) Non-interactive
SdkDumpCommand, SdkGenerateCommand Machine-readable / code generation
SecretDeleteCommand, SecretGetCommand, SecretListCommand, SecretPathCommand, SecretSetCommand Quick utility
TelemetryLogsCommand, TelemetrySpansCommand, TelemetryTracesCommand Streaming/JSON output
TemplateCommand Sub-command of NewCommand (which shows it)
UpdateCommand Would be redundant
Any command with --format json Suppressed automatically

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 21, 2026

🚀 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/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 17350

Or

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

@JamesNK JamesNK force-pushed the jamesn/update-notifications-opt-in branch from c4a2075 to 0c50f27 Compare May 21, 2026 07:12
@JamesNK JamesNK changed the title Make update notifications opt-in instead of opt-out CLI: Make update notifications opt-in and suppress when --format json May 21, 2026
@JamesNK JamesNK marked this pull request as ready for review May 21, 2026 07:14
Copilot AI review requested due to automatic review settings May 21, 2026 07:14
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR changes Aspire CLI update-notification behavior to be opt-in per command, and adds suppression when JSON output is requested so machine-readable stdout isn’t polluted.

Changes:

  • Flips the default for BaseCommand.UpdateNotificationsEnabled so commands must explicitly opt in to show update notifications.
  • Suppresses update notifications when --format json is requested.
  • Updates command implementations to opt in (=> true) or remove now-redundant opt-out overrides, and adds a test for JSON suppression behavior.

Reviewed changes

Copilot reviewed 39 out of 39 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
tests/Aspire.Cli.Tests/Commands/BaseCommandTests.cs Adds a theory validating update-notification suppression for --format json.
src/Aspire.Cli/Commands/BaseCommand.cs Changes default update-notification behavior and adds JSON suppression guard.
src/Aspire.Cli/Commands/AddCommand.cs Explicitly opts into update notifications.
src/Aspire.Cli/Commands/DashboardRunCommand.cs Explicitly opts into update notifications.
src/Aspire.Cli/Commands/DescribeCommand.cs Explicitly opts into update notifications.
src/Aspire.Cli/Commands/ExportCommand.cs Explicitly opts into update notifications.
src/Aspire.Cli/Commands/InitCommand.cs Explicitly opts into update notifications.
src/Aspire.Cli/Commands/LogsCommand.cs Explicitly opts into update notifications.
src/Aspire.Cli/Commands/LsCommand.cs Explicitly opts into update notifications.
src/Aspire.Cli/Commands/NewCommand.cs Explicitly opts into update notifications.
src/Aspire.Cli/Commands/PipelineCommandBase.cs Explicitly opts into update notifications for pipeline-style commands.
src/Aspire.Cli/Commands/PsCommand.cs Explicitly opts into update notifications.
src/Aspire.Cli/Commands/ResourceCommand.cs Explicitly opts into update notifications.
src/Aspire.Cli/Commands/RestoreCommand.cs Explicitly opts into update notifications.
src/Aspire.Cli/Commands/RunCommand.cs Keeps conditional enablement (detach vs non-detach).
src/Aspire.Cli/Commands/SetupCommand.cs Explicitly opts into update notifications.
src/Aspire.Cli/Commands/StartCommand.cs Explicitly opts into update notifications.
src/Aspire.Cli/Commands/StopCommand.cs Explicitly opts into update notifications.
src/Aspire.Cli/Commands/WaitCommand.cs Explicitly opts into update notifications.
src/Aspire.Cli/Commands/UpdateCommand.cs Removes explicit opt-out (now covered by default).
src/Aspire.Cli/Commands/Sdk/SdkDumpCommand.cs Removes explicit opt-out (now covered by default).
src/Aspire.Cli/Commands/RenderCommand.cs Removes explicit opt-out (now covered by default).
src/Aspire.Cli/Commands/ParentCommand.cs Removes explicit opt-out (now covered by default).
src/Aspire.Cli/Commands/McpStartCommand.cs Removes explicit opt-out (now covered by default).
src/Aspire.Cli/Commands/McpInitCommand.cs Removes explicit opt-out (now covered by default).
src/Aspire.Cli/Commands/IntegrationSearchCommand.cs Removes explicit opt-out (now covered by default).
src/Aspire.Cli/Commands/ExtensionInternalCommand.cs Removes explicit opt-out (now covered by default).
src/Aspire.Cli/Commands/DoctorCommand.cs Removes explicit opt-out (now covered by default).
src/Aspire.Cli/Commands/DocsSearchCommand.cs Removes explicit opt-out (now covered by default).
src/Aspire.Cli/Commands/DocsListCommand.cs Removes explicit opt-out (now covered by default).
src/Aspire.Cli/Commands/DocsGetCommand.cs Removes explicit opt-out (now covered by default).
src/Aspire.Cli/Commands/ConfigCommand.cs Removes explicit opt-out across config commands (now covered by default).
src/Aspire.Cli/Commands/CertificatesTrustCommand.cs Removes explicit opt-out (now covered by default).
src/Aspire.Cli/Commands/CertificatesCleanCommand.cs Removes explicit opt-out (now covered by default).
src/Aspire.Cli/Commands/CacheCommand.cs Removes explicit opt-out (now covered by default).
src/Aspire.Cli/Commands/ApiSearchCommand.cs Removes explicit opt-out (now covered by default).
src/Aspire.Cli/Commands/ApiListCommand.cs Removes explicit opt-out (now covered by default).
src/Aspire.Cli/Commands/ApiGetCommand.cs Removes explicit opt-out (now covered by default).
src/Aspire.Cli/Commands/AgentMcpCommand.cs Removes explicit opt-out (now covered by default).
src/Aspire.Cli/Commands/AgentInitCommand.cs Removes explicit opt-out (now covered by default).
Comments suppressed due to low confidence (1)

src/Aspire.Cli/Commands/BaseCommand.cs:121

  • The JSON-format suppression relies on IsJsonFormatRequested(parseResult), but that helper only recognizes an option typed as Option. At least one command (SecretListCommand) defines --format as Option<OutputFormat?>, so JSON won’t be detected there (meaning console redirection and this new update-notification suppression won’t apply even when --format json is used). Consider updating IsJsonFormatRequested to also handle Option<OutputFormat?> (and treat null as non-JSON).
            if (UpdateNotificationsEnabled && !IsJsonFormatRequested(parseResult) && features.IsFeatureEnabled(KnownFeatures.UpdateNotificationsEnabled, true))
            {
                try
                {
                    updateNotifier.NotifyIfUpdateAvailable();

Comment thread tests/Aspire.Cli.Tests/Commands/BaseCommandTests.cs
@github-actions
Copy link
Copy Markdown
Contributor

Re-running the failed jobs in the CI workflow for this pull request because 3 jobs were identified as retry-safe transient failures in the CI run attempt.
GitHub was asked to rerun all failed jobs for that attempt, and the rerun is being tracked in the rerun attempt.
The job links below point to the failed attempt jobs that matched the retry-safe transient failure rules.

Matched test failure patterns (1 test)
  • Aspire.Cli.EndToEnd.Tests.KubernetesDeployWithRedisTests.DeployK8sWithRedis — Unable to access container registry during publish

Copy link
Copy Markdown
Contributor

Copilot AI commented May 21, 2026

Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh gh pr view 17350 --comments --json comments (http block)
  • https://api.github.com/repos/microsoft/aspire/pulls/17350/comments
    • Triggering command: /usr/bin/curl curl -s -H Accept: application/vnd.github.v3&#43;json REDACTED (http block)
  • https://api.github.com/repos/microsoft/aspire/pulls/17350/comments/3279366291
    • Triggering command: /home/REDACTED/work/_temp/ghcca-node/node/bin/node /home/REDACTED/work/_temp/ghcca-node/node/bin/node --enable-source-maps /home/REDACTED/work/_temp/copilot-developer-action-main/dist/index.js (http block)
  • https://api.github.com/repos/microsoft/aspire/pulls/comments/3279366291
    • Triggering command: /usr/bin/gh gh api repos/microsoft/aspire/pulls/comments/3279366291 (http block)

If you need me to access, download, or install something from one of these locations, you can either:

Copy link
Copy Markdown
Member

@adamint adamint left a comment

Choose a reason for hiding this comment

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

I'm l little unsure about showing this message for the commands I indicated.

private static readonly int[] s_suppressErrorLogsMessageExitCodes = [CliExitCodes.Cancelled, CliExitCodes.MissingRequiredArgument];

protected virtual bool UpdateNotificationsEnabled { get; } = true;
protected virtual bool UpdateNotificationsEnabled { get; }
Copy link
Copy Markdown
Member

@adamint adamint May 21, 2026

Choose a reason for hiding this comment

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

Since with Damian's changes we'll have two update messages, I think we should consider clarifying this member and renaming to UpdateAppHostNotificationsEnabled

{
internal override HelpGroup HelpGroup => HelpGroup.Monitoring;

protected override bool UpdateNotificationsEnabled => true;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

why?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

It was enabled before. A follow up PR can turn it off

Comment thread src/Aspire.Cli/Commands/LogsCommand.cs Outdated
{
internal override HelpGroup HelpGroup => HelpGroup.Monitoring;

protected override bool UpdateNotificationsEnabled => true;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

why?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

It was enabled before. A follow up PR can turn it off

{
internal override HelpGroup HelpGroup => HelpGroup.Monitoring;

protected override bool UpdateNotificationsEnabled => true;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

why?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

It was enabled before. A follow up PR can turn it off

Comment thread src/Aspire.Cli/Commands/PsCommand.cs Outdated
{
internal override HelpGroup HelpGroup => HelpGroup.AppCommands;

protected override bool UpdateNotificationsEnabled => true;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I would only expect to see an aspire cli update msg, not apphost

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

It was enabled before. A follow up PR can turn it off

{
internal override HelpGroup HelpGroup => HelpGroup.ResourceManagement;

protected override bool UpdateNotificationsEnabled => true;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

why?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

It was enabled before. A follow up PR can turn it off

Comment thread src/Aspire.Cli/Commands/WaitCommand.cs Outdated
{
internal override HelpGroup HelpGroup => HelpGroup.ResourceManagement;

protected override bool UpdateNotificationsEnabled => true;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

why?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

It was enabled before. A follow up PR can turn it off

@JamesNK JamesNK enabled auto-merge (squash) May 22, 2026 00:08
@sebastienros sebastienros disabled auto-merge May 22, 2026 01:05
Comment thread src/Aspire.Cli/Commands/NewCommand.cs
JamesNK and others added 4 commits May 22, 2026 09:23
Change BaseCommand.UpdateNotificationsEnabled default from true to false,
so commands must explicitly opt-in to showing the update notification banner.

Commands that opt-in are user-facing interactive commands where the notification
is helpful. Commands that rely on the default (disabled) include machine-readable
output commands, internal/utility commands, agent/MCP commands, and parent group
commands where extra output would be noise.
@JamesNK JamesNK force-pushed the jamesn/update-notifications-opt-in branch from 54e32bd to 4c156c9 Compare May 22, 2026 01:23
Update tests to use commands that have UpdateNotificationsEnabled set:
- Use 'stop' (which has the override) instead of 'ps' for tests that
  assert notifications fire.
- Use 'run --format json' instead of 'ps --format json' to properly test
  JSON format suppression (RunCommand has both --format and notifications
  enabled when not in detach mode).
@github-actions
Copy link
Copy Markdown
Contributor

Re-running the failed jobs in the CI workflow for this pull request because 1 job was identified as retry-safe transient failures in the CI run attempt.
GitHub was asked to rerun all failed jobs for that attempt, and the rerun is being tracked in the rerun attempt.
The job links below point to the failed attempt jobs that matched the retry-safe transient failure rules.

@JamesNK JamesNK merged commit a4c4d9e into main May 22, 2026
912 of 918 checks passed
@microsoft-github-policy-service microsoft-github-policy-service Bot added this to the 13.4 milestone May 22, 2026
@github-actions
Copy link
Copy Markdown
Contributor

CLI E2E Tests unknown — 95 passed, 0 failed, 5 unknown (commit 341e9eb)

View all recordings
Status Test Recording
AddPackageInteractiveWhileAppHostRunningDetached ▶️ View recording
AddPackageWhileAppHostRunningDetached ▶️ View recording
AgentCommands_AllHelpOutputs_AreCorrect ▶️ View recording
AgentInitCommand_DefaultSelection_InstallsDefaultSkills ▶️ View recording
AgentInitCommand_MigratesDeprecatedConfig ▶️ View recording
AgentMcpListStructuredLogsFromStarterAppCore ▶️ View recording
AllPublishMethodsBuildDockerImages ▶️ View recording
AspireAddPackageVersionToDirectoryPackagesProps ▶️ View recording
AspireInitSingleFileAppHostRunsViaDotnetRunAppHost ▶️ View recording
AspireInitWithExistingAppHostDirRecreatesMissingNuGetConfigAndPreservesFiles ▶️ View recording
AspireInitWithSolutionFileGeneratesAppHostThatBuildsAgainstChannelHive ▶️ View recording
AspireUpdateRemovesAppHostPackageVersionFromDirectoryPackagesProps ▶️ View recording
AspireUpdateRemovesOrphanAppHostPackageVersionWhenSdkAlreadyCurrent ▶️ View recording
Banner_DisplayedOnFirstRun ▶️ View recording
Banner_DisplayedWithExplicitFlag ▶️ View recording
Banner_NotDisplayedWithNoLogoFlag ▶️ View recording
CertificatesClean_RemovesCertificates ▶️ View recording
CertificatesTrust_WithNoCert_CreatesAndTrustsCertificate ▶️ View recording
CertificatesTrust_WithUntrustedCert_TrustsCertificate ▶️ View recording
ConfigSetGet_CreatesNestedJsonFormat ▶️ View recording
CreateAndRunAspireStarterProject ▶️ View recording
CreateAndRunAspireStarterProjectWithBundle ▶️ View recording
CreateAndRunEmptyAppHostProject ▶️ View recording
CreateAndRunJavaEmptyAppHostProject ▶️ View recording
CreateAndRunJsReactProject ▶️ View recording
CreateAndRunPythonReactProject ▶️ View recording
CreateAndRunTypeScriptEmptyAppHostProject ▶️ View recording
CreateAndRunTypeScriptStarterProject ▶️ View recording
CreateJavaAppHostWithViteApp ▶️ View recording
CreateTypeScriptAppHostWithViteApp_UsesConfiguredToolchain ▶️ View recording
DashboardRunWithAgentMcpCore ▶️ View recording
DashboardRunWithOtelTracesReturnsNoTracesCore ▶️ View recording
DeployK8sBasicApiService ▶️ View recording
DeployK8sWithExternalHelmChart ▶️ View recording
DeployK8sWithGarnet ▶️ View recording
DeployK8sWithMongoDB ▶️ View recording
DeployK8sWithMySql ▶️ View recording
DeployK8sWithPostgres ▶️ View recording
DeployK8sWithRabbitMQ ▶️ View recording
DeployK8sWithRedis ▶️ View recording
DeployK8sWithSqlServer ▶️ View recording
DeployK8sWithValkey ▶️ View recording
DeployTypeScriptAppToKubernetes ▶️ View recording
DescribeCommandResolvesReplicaNames ▶️ View recording
DescribeCommandShowsRunningResources ▶️ View recording
DetachFormatJsonProducesValidJson ▶️ View recording
DetachFormatJsonProducesValidJsonWhenRestartingExistingInstance ▶️ View recording
DoListStepsShowsPipelineSteps ▶️ View recording
DocsCommand_RendersInteractiveMarkdownFromLocalSource ▶️ View recording
DoctorCommand_DetectsDeprecatedAgentConfig ▶️ View recording
DoctorCommand_TypeScriptAppHostReportsMissingConfiguredToolchain ▶️ View recording
DoctorCommand_WithSslCertDir_ShowsTrusted ▶️ View recording
DoctorCommand_WithoutSslCertDir_ShowsPartiallyTrusted ▶️ View recording
GeneratedAspireDevScript_StartsWatchMode_WithConfiguredToolchain ▶️ View recording
GlobalMigration_HandlesCommentsAndTrailingCommas ▶️ View recording
GlobalMigration_HandlesMalformedLegacyJson ▶️ View recording
GlobalMigration_PreservesAllValueTypes ▶️ View recording
GlobalMigration_SkipsWhenNewConfigExists ▶️ View recording
GlobalSettings_MigratedFromLegacyFormat ▶️ View recording
InitTypeScriptAppHost_AugmentsExistingViteRepoAtRoot ▶️ View recording
InteractiveCSharpInitCreatesExpectedFiles ▶️ View recording
InvalidAppHostPathWithComments_IsHealedOnRun ▶️ View recording
JavaScriptHostingApisRunFromTypeScriptAppHost ▶️ View recording
LatestCliCanStartStableChannelAppHost ▶️ View recording
LatestCliCanStartStableChannelTypeScriptAppHost ▶️ View recording
LegacySettingsMigration_AdjustsRelativeAppHostPath ▶️ View recording
LogLevelTrace_ProducesTraceEntriesInCliLogFile ▶️ View recording
LogsCommandShowsResourceLogs ▶️ View recording
OtelLogsReturnsStructuredLogsFromStarterApp ▶️ View recording
OtelLogsReturnsStructuredLogsFromStarterAppIsolated ▶️ View recording
PsCommandListsRunningAppHost ▶️ View recording
PsFormatJsonOutputsOnlyJsonToStdout ▶️ View recording
PublishJavaScriptPatternsGeneratesExpectedDockerComposeArtifacts ▶️ View recording
PublishWithConfigureEnvFileUpdatesEnvOutput ▶️ View recording
PublishWithDockerComposeServiceCallbackSucceeds ▶️ View recording
PublishWithoutOutputPathUsesAppHostDirectoryDefault ▶️ View recording
ResourceCommand_FailedExecution_DisplaysAppHostLogPathAndLogContainsEntries ▶️ View recording
ResourceCommand_FailsWhenInteractionServiceIsRequired ▶️ View recording
ResourceCommand_SetAndDeleteParameterUpdatesDescribeOutput ▶️ View recording
RestoreGeneratesSdkFiles ▶️ View recording
RestoreGeneratesSdkFiles_WithConfiguredToolchain ▶️ View recording
RestoreRefreshesGeneratedSdkAfterAddingIntegration ▶️ View recording
RestoreSupportsConfigOnlyHelperPackageAndCrossPackageTypes ▶️ View recording
RunFromParentDirectory_UsesExistingConfigNearAppHost ▶️ View recording
RunPublishFailureScenarioAsync ▶️ View recording
RunReportsSyntaxErrorsForDotNetAppHost ▶️ View recording
RunReportsSyntaxErrorsForTypeScriptAppHost ▶️ View recording
SecretCrudOnDotNetAppHost ▶️ View recording
SecretCrudOnTypeScriptAppHost ▶️ View recording
StagingChannel_ConfigureAndVerifySettings_ThenSwitchChannels ▶️ View recording
StartAndWaitForTypeScriptSqlServerAppHostWithNativeAssets ▶️ View recording
StartReportsSyntaxErrorsForDotNetAppHost ▶️ View recording
StartReportsSyntaxErrorsForTypeScriptAppHost ▶️ View recording
StopAllAppHostsFromAppHostDirectory ▶️ View recording
StopJavaPolyglotAppHostUsingApphostDirectory ▶️ View recording
StopNonInteractiveSingleAppHost ▶️ View recording
StopTypeScriptPolyglotAppHostUsingApphostDirectory ▶️ View recording
StopWithNoRunningAppHostExitsSuccessfully ▶️ View recording
UnAwaitedChainsCompileWithAutoResolvePromises ▶️ View recording
UpdateProjectChannelToStable_TypeScript_PicksUpStablePackages ▶️ View recording

📹 Recordings uploaded automatically from CI run #26272065216

@aspire-repo-bot
Copy link
Copy Markdown
Contributor

✅ No documentation update needed.

Documentation changes are needed for this PR (docs_required), but the docs PR could not be automatically created due to a workspace configuration issue in the agent environment.

Triggered signals: cli_command_file_changed (30 command files modified in src/Aspire.Cli/Commands/), pr_body_has_cli_flag_mention (--format json mentioned in PR body).

Proposed changes (ready to apply manually to microsoft/aspire.dev on release/13.4):

  • src/frontend/src/content/docs/whats-new/aspire-13-4.mdx: Add to "Behavior changes to audit": "Update notifications are suppressed when --format json is used — commands producing JSON output no longer print an update banner to stdout. Disable all notifications via features.updateNotificationsEnabled."
  • src/frontend/src/content/docs/reference/cli/includes/config-settings-table.md: Expand features.updateNotificationsEnabled description to mention the --format json auto-suppression.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants