Skip to content

Hide available features in 'aspire config list' behind --available flag#15017

Merged
maddymontaquila merged 2 commits intorelease/13.2from
maleger/config-list-hide-features
Mar 6, 2026
Merged

Hide available features in 'aspire config list' behind --available flag#15017
maddymontaquila merged 2 commits intorelease/13.2from
maleger/config-list-hide-features

Conversation

@maddymontaquila
Copy link
Contributor

Summary

The list of available feature flags in aspire config list was so long it scrolled the actual set configuration off the screen.

Changes

  • Added --available option to aspire config list
  • Without the flag: shows the Available Features heading with a hint: Run 'aspire config list --available' to see all available feature flags.
  • With the flag: shows the full feature list (previous behavior)

Before

aspire config list showed all unconfigured features, pushing config tables off screen.

After

aspire config list shows config tables + hint.
aspire config list --available shows config tables + full feature list.

The list of available feature flags was scrolling the set configuration
off the screen. Now 'aspire config list' shows a hint to use --available,
and 'aspire config list --available' shows the full feature list.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings March 6, 2026 18:53
@github-actions
Copy link
Contributor

github-actions bot commented Mar 6, 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/dotnet/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 15017

Or

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

Copy link
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 updates aspire config list to avoid overwhelming output by hiding the long “available features” list behind a new --available flag, while still guiding users to discover it.

Changes:

  • Added --available option to aspire config list to control whether the full unconfigured feature list is shown.
  • Default config list behavior now shows configuration tables plus an “Available Features” header with a hint to use --available.
  • Added new localized strings for the hint text and option description across supported CLI localizations.

Reviewed changes

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

Show a summary per file
File Description
src/Aspire.Cli/Commands/ConfigCommand.cs Implements --available option and conditional rendering of the available-features section.
src/Aspire.Cli/Resources/ConfigCommandStrings.resx Adds resource entries for the new hint text and option description.
src/Aspire.Cli/Resources/ConfigCommandStrings.Designer.cs Regenerates strongly-typed resource accessors for new strings.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.cs.xlf Adds new trans-units for the hint and option description.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.de.xlf Adds new trans-units for the hint and option description.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.es.xlf Adds new trans-units for the hint and option description.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.fr.xlf Adds new trans-units for the hint and option description.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.it.xlf Adds new trans-units for the hint and option description.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.ja.xlf Adds new trans-units for the hint and option description.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.ko.xlf Adds new trans-units for the hint and option description.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.pl.xlf Adds new trans-units for the hint and option description.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.pt-BR.xlf Adds new trans-units for the hint and option description.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.ru.xlf Adds new trans-units for the hint and option description.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.tr.xlf Adds new trans-units for the hint and option description.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.zh-Hans.xlf Adds new trans-units for the hint and option description.
src/Aspire.Cli/Resources/xlf/ConfigCommandStrings.zh-Hant.xlf Adds new trans-units for the hint and option description.
Files not reviewed (1)
  • src/Aspire.Cli/Resources/ConfigCommandStrings.Designer.cs: Language not supported

@davidfowl
Copy link
Contributor

Nice cleanup! A couple of small things:

  1. Minor duplication — both branches of the if (showAvailable) / else block emit the same empty line + 'Available Features' header. You could hoist those two lines above the conditional:

    InteractionService.DisplayEmptyLine();
    InteractionService.DisplayMarkdown($"**{ConfigCommandStrings.AvailableFeaturesHeader}:**");
    if (showAvailable)
    {
        // feature details...
    }
    else
    {
        // hint line...
    }
  2. Test coverage — the new --available behavior doesn't have any test assertions. Since ConfigCommandTests already exercises config list, it'd be low-effort to add cases verifying the hint text appears by default and the full list appears with --available.

@davidfowl
Copy link
Contributor

One more thing — the --available flag name feels a bit off. The features are already available (they exist and can be configured); what the flag actually shows is unconfigured features. The hint text ends up being circular too: "Available Features: Run 'aspire config list --available'..."

Established CLIs overwhelmingly use --all for "show me everything":

  • docker image ls --all
  • kubectl get pods -A
  • npm ls --all
  • dotnet list package --include-transitive (more explicit variant)

I'd suggest --all — shorter, universally understood, and avoids the semantic confusion. If you want to be more explicit, --include-unconfigured would also work (matches the dotnet list package --include-transitive pattern).

…ests

- Rename --available flag to --all (matches established CLI conventions)
- Hoist shared empty line + header above the conditional to reduce duplication
- Add tests for both config list paths (hint without --all, details with --all)

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

@davidfowl addressed all three items — renamed to --all, hoisted the shared header above the conditional, and added test coverage for both paths. Ready for re-review when you get a chance!

Copy link
Contributor

@davidfowl davidfowl left a comment

Choose a reason for hiding this comment

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

Looks good — all three items addressed cleanly. Thanks Maddy!

@maddymontaquila maddymontaquila enabled auto-merge (squash) March 6, 2026 19:20
@davidfowl davidfowl changed the base branch from main to release/13.2 March 6, 2026 19:41
@github-actions
Copy link
Contributor

github-actions bot commented Mar 6, 2026

🎬 CLI E2E Test Recordings

The following terminal recordings are available for commit 1bd4a5d:

Test Recording
AddPackageInteractiveWhileAppHostRunningDetached ▶️ View Recording
AddPackageWhileAppHostRunningDetached ▶️ View Recording
AgentCommands_AllHelpOutputs_AreCorrect ▶️ View Recording
AgentInitCommand_MigratesDeprecatedConfig ▶️ View Recording
AgentInitCommand_WithMalformedMcpJson_ShowsErrorAndExitsNonZero ▶️ View Recording
AspireUpdateRemovesAppHostPackageVersionFromDirectoryPackagesProps ▶️ View Recording
Banner_DisplayedOnFirstRun ▶️ View Recording
Banner_DisplayedWithExplicitFlag ▶️ View Recording
Banner_NotDisplayedWithNoLogoFlag ▶️ View Recording
CreateAndDeployToDockerCompose ▶️ View Recording
CreateAndDeployToDockerComposeInteractive ▶️ View Recording
CreateAndPublishToKubernetes ▶️ View Recording
CreateAndRunAspireStarterProject ▶️ View Recording
CreateAndRunAspireStarterProjectWithBundle ▶️ View Recording
CreateAndRunJsReactProject ▶️ View Recording
CreateAndRunPythonReactProject ▶️ View Recording
CreateAndRunTypeScriptStarterProject ▶️ View Recording
CreateEmptyAppHostProject ▶️ View Recording
CreateStartAndStopAspireProject ▶️ View Recording
CreateStartWaitAndStopAspireProject ▶️ View Recording
CreateTypeScriptAppHostWithViteApp ▶️ View Recording
DescribeCommandResolvesReplicaNames ▶️ View Recording
DescribeCommandShowsRunningResources ▶️ View Recording
DetachFormatJsonProducesValidJson ▶️ View Recording
DoctorCommand_DetectsDeprecatedAgentConfig ▶️ View Recording
DoctorCommand_WithSslCertDir_ShowsTrusted ▶️ View Recording
DoctorCommand_WithoutSslCertDir_ShowsPartiallyTrusted ▶️ View Recording
LogsCommandShowsResourceLogs ▶️ View Recording
PsCommandListsRunningAppHost ▶️ View Recording
PsFormatJsonOutputsOnlyJsonToStdout ▶️ View Recording
SecretCrudOnDotNetAppHost ▶️ View Recording
SecretCrudOnTypeScriptAppHost ▶️ View Recording
StagingChannel_ConfigureAndVerifySettings_ThenSwitchChannels ▶️ View Recording
StopAllAppHostsFromAppHostDirectory ▶️ View Recording
StopAllAppHostsFromUnrelatedDirectory ▶️ View Recording
StopNonInteractiveMultipleAppHostsShowsError ▶️ View Recording
StopNonInteractiveSingleAppHost ▶️ View Recording
StopWithNoRunningAppHostExitsSuccessfully ❌ Upload failed

📹 Recordings uploaded automatically from CI run #22778109479

@maddymontaquila maddymontaquila merged commit c678ba2 into release/13.2 Mar 6, 2026
757 of 761 checks passed
@maddymontaquila maddymontaquila deleted the maleger/config-list-hide-features branch March 6, 2026 20:05
@dotnet-policy-service dotnet-policy-service bot added this to the 13.2 milestone Mar 6, 2026
radical pushed a commit that referenced this pull request Mar 6, 2026
…5017)

* Hide available features in 'aspire config list' behind --available flag

The list of available feature flags was scrolling the set configuration
off the screen. Now 'aspire config list' shows a hint to use --available,
and 'aspire config list --available' shows the full feature list.

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

* Address PR feedback: rename --available to --all, hoist header, add tests

- Rename --available flag to --all (matches established CLI conventions)
- Hoist shared empty line + header above the conditional to reduce duplication
- Add tests for both config list paths (hint without --all, details with --all)

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
eerhardt pushed a commit to eerhardt/aspire that referenced this pull request Mar 7, 2026
…crosoft#15017)

* Hide available features in 'aspire config list' behind --available flag

The list of available feature flags was scrolling the set configuration
off the screen. Now 'aspire config list' shows a hint to use --available,
and 'aspire config list --available' shows the full feature list.

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

* Address PR feedback: rename --available to --all, hoist header, add tests

- Rename --available flag to --all (matches established CLI conventions)
- Hoist shared empty line + header above the conditional to reduce duplication
- Add tests for both config list paths (hint without --all, details with --all)

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI pushed a commit that referenced this pull request Mar 10, 2026
…5017)

* Hide available features in 'aspire config list' behind --available flag

The list of available feature flags was scrolling the set configuration
off the screen. Now 'aspire config list' shows a hint to use --available,
and 'aspire config list --available' shows the full feature list.

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

* Address PR feedback: rename --available to --all, hoist header, add tests

- Rename --available flag to --all (matches established CLI conventions)
- Hoist shared empty line + header above the conditional to reduce duplication
- Add tests for both config list paths (hint without --all, details with --all)

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants