Skip to content

[release/13.6] Remove dashboard terminal navigation entry points - #20562

Merged
Jose Perez Rodriguez (joperezr) merged 1 commit into
release/13.6from
mitchdenny-backport-terminal-navigation
Sep 28, 2026
Merged

Jose Perez Rodriguez (joperezr) merged 1 commit into
release/13.6from
mitchdenny-backport-terminal-navigation

Conversation

@mitchdenny

Copy link
Copy Markdown
Member

Backport of #20528 to release/13.6

/cc Mitch Denny (@mitchdenny)

Customer Impact

Intentionally removes the Terminals button from the desktop dashboard header and the Terminal entry from the mobile navigation menu to reduce navigation clutter. The backtick (`) shortcut remains available to open, collapse, and reopen the terminal dock on both layouts. Removing touch-only manual opening is a deliberate team decision; automatic terminal opening remains unchanged.

Testing

On this release/13.6 backport, all 126 focused MainLayoutTests, TerminalDockTests, and MobileNavMenuTests passed on net11.0 (0 failed, 0 skipped), including shortcut open/collapse/reopen on both layouts, absence of navigation entry points, resource-service gating, and live/historical run selection. Quarantined and outerloop tests were excluded.

dotnet test --project tests/Aspire.Dashboard.Components.Tests/Aspire.Dashboard.Components.Tests.csproj --no-launch-profile -- --filter-class '*.MainLayoutTests' --filter-class '*.TerminalDockTests' --filter-class '*.MobileNavMenuTests' --filter-not-trait 'quarantined=true' --filter-not-trait 'outerloop=true'

The source PR separately passed 128 focused tests on main and was manually verified in Chromium with the live CustomResources dashboard: no terminal button in the desktop header, and the backtick shortcut opens and closes the dock. That browser verification was performed on the source change, not repeated on the release branch.

Screenshots / Recordings

Source PR Chromium verification (not a new release-branch capture):

Source dashboard with no terminal icon in the top-right header

Risk

Low. Localized navigation removal with no changes to terminal lifetime, keyboard shortcut behavior, or automatic opening. The accepted limitation is that touch-only users no longer have a navigation control for manually opening the dock. The exact squash commit da280d0b8fd86aa9b4a8ca4abd76488d53805d88 applied cleanly without conflict resolution or patch changes.

Regression?

No — intentional UX change, not a regression fix.

(cherry picked from commit da280d0)
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: cefa6302-c433-4ef8-86bc-69c5e6bbedce
@github-actions

Copy link
Copy Markdown
Contributor

🚀 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 -- 20562

Or

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

@github-actions

Copy link
Copy Markdown
Contributor

Tests selector

13 / 99 PR test projects · 2 PR jobs, from 6 changed files.

Selected PR test projects (13 / 99)

Aspire.Dashboard.Components.Tests, Aspire.Dashboard.Tests, Aspire.Hosting.Azure.Kubernetes.Tests, Aspire.Hosting.Azure.Tests, Aspire.Hosting.Blazor.Tests, Aspire.Hosting.Dotnet.Tests, Aspire.Hosting.DotnetTool.Tests, Aspire.Hosting.JavaScript.Tests, Aspire.Hosting.Radius.Tests, Aspire.Hosting.Testing.Tests, Aspire.Hosting.Tests, Aspire.Playground.Tests, Aspire.Templates.Tests

Selected PR jobs (2)

extension-e2e, native-dashboard-validation


How these were chosen — grouped by what changed

⚠️ 11 of the 13 selected test projects come from a single change — src/Aspire.Dashboard/Components/Layout/MainLayout.razor.

🔧 src/Aspire.Dashboard/Components/Layout/MainLayout.razor (changed source)
→ 11 via the project graph: Aspire.Dashboard.Tests, Aspire.Hosting.Azure.Kubernetes.Tests (3 hops), Aspire.Hosting.Azure.Tests (2 hops), Aspire.Hosting.Blazor.Tests (2 hops), Aspire.Hosting.Dotnet.Tests (2 hops), Aspire.Hosting.DotnetTool.Tests (2 hops), Aspire.Hosting.JavaScript.Tests, Aspire.Hosting.Radius.Tests (2 hops), Aspire.Hosting.Testing.Tests, Aspire.Hosting.Tests, Aspire.Playground.Tests (2 hops)

📦 affected project Aspire.Dashboard
→ 1 test: Aspire.Templates.Tests

🧪 tests/Aspire.Dashboard.Components.Tests/Layout/MainLayoutTerminalTests.cs (changed test)
→ 1 directly: Aspire.Dashboard.Components.Tests

🧪 tests/Aspire.Dashboard.Components.Tests/Layout/MobileNavMenuTests.cs (changed test)
→ 1 directly: Aspire.Dashboard.Components.Tests

Job reasons

Job Triggered by
extension-e2e • src/Aspire.Dashboard/Components/Layout/MainLayout.razor, src/Aspire.Dashboard/Components/Layout/MainLayout.razor.cs, src/Aspire.Dashboard/Components/Layout/MobileNavMenu.razor.cs, src/Aspire.Dashboard/Components/Layout/TerminalDock.razor.cs
• affected project Aspire.Dashboard
native-dashboard-validation affected project Aspire.Dashboard

Selection computed for commit 660a073.

@github-actions

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Note

This error may be related to your runner configuration. You can now configure runners for Copilot code review separately from Copilot cloud agent by creating a copilot-code-review.yml file with your setup steps. Read the docs for details.

@joperezr
Jose Perez Rodriguez (joperezr) merged commit f4c27f2 into release/13.6 Sep 28, 2026
302 of 305 checks passed
@microsoft-github-policy-service microsoft-github-policy-service Bot added this to the 13.6 milestone Sep 28, 2026
@aspire-repo-bot

Copy link
Copy Markdown
Contributor

✅ No documentation update needed.

Step 5 branch: excluded → base_branch_is_release, title_release_prefix, body_backport_marker

Triggered signals (1): pr_body_has_cli_flag_mention (the hint is only a dotnet test command in the PR body's Testing section).

This is a backport of #20528 to release/13.6 (title prefixed [release/13.6], body says 'Backport of #20528'). Docs belong to the original forward PR, so no duplicate docs PR was drafted.

David Pine (IEvangelist) added a commit to microsoft/aspire.dev that referenced this pull request Sep 29, 2026
Regenerate the integration catalog, C# package API JSON, TypeScript API
modules, and Twoslash types from the darc-pub-microsoft-aspire-f4c27f2d
staging feed (microsoft/aspire release/13.6 f4c27f2d, Aspire 13.6.0 and
13.6.0-preview.1.26478.8) with a locally fixed ATS scanner.

Fix the package JSON generator so Provisioning overlays restore the
resolved Aspire.Hosting version instead of their own prerelease version.
Correct the Blazor gateway diagnostic aside, and describe the backtick
shortcut as the way to open the dashboard terminal dock now that its
navigation entry points are removed (microsoft/aspire#20562).

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
David Pine (IEvangelist) added a commit to microsoft/aspire.dev that referenced this pull request Sep 29, 2026
Follow-up to #1780, which merged with two open checkboxes. Both are now
validated against the latest staging build.

This is a single commit on top of the current `release/13.6` tip
(`5589ce6d`), so it merges cleanly.

- [x] Generated API catalog refreshed from genuine 13.6 packages,
including the late `WithRepl` additions and removed attributes.
- [x] REPL samples and all other new samples checked against the real
13.6 SDK, not stale Twoslash types.

## Provenance

- **Feed:** `darc-pub-microsoft-aspire-f4c27f2d`
(`https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-microsoft-aspire-f4c27f2d/nuget/v3/index.json`).
- **Source:** microsoft/aspire `release/13.6` at
`f4c27f2d43ddc1cacd0dd083b30d1fea1cee7a62`, the newest staging build.
Every regenerated official TS module records `sourceCommit: f4c27f2d…`,
and the restored nuspecs (for example Redis, Blazor and
CodeGeneration.TypeScript) report that commit.
- **Versions:** stable packages are `13.6.0`; prerelease packages are
`13.6.0-preview.1.26478.8`. The codegen package is
`Aspire.Hosting.CodeGeneration.TypeScript 13.6.0`, mapped exclusively to
the staging feed. nuget.org has no `13.6.0`, so resolution is
unambiguous.
- **Scanner:** a locally fixed CLI/ATS scanner, built from `a11eca96`
plus `320eed42` (the microsoft/aspire#20438 content) and `435fd4eb` (the
microsoft/aspire#20443 content). Both upstream PRs are still unmerged.
- Nothing in `a11eca96..f4c27f2d` touches `AtsCapabilityScanner`,
`Aspire.TypeSystem` or `Aspire.Hosting.CodeGeneration.TypeScript`. The
last two commits (microsoft/aspire#20566 and microsoft/aspire#20562)
only change dashboard layout code and Dockerfiles.
- The layout's `dashboard` and `dcp` folders are copies from the
`8230626c` staging CLI bundle. Layout discovery requires them, but they
aren't used for scanning or code generation.
- **Isolation:** the stable version number didn't change between builds,
so generation used fresh process-local `NUGET_PACKAGES`, HTTP cache,
`TEMP` and `ASPIRE_HOME` folders. That rules out reusing `e8fd6fbb`
bits. `ASPIRE_REPO_ROOT` and `ASPIRE_REPO_PATH` were unset, and there
was no source-project substitution.
- **Pipeline:** the repo's own pipeline, in this order:
`update:integrations` → `generate-package-json.ps1` →
`normalize:api-data -- --pkgs` → `update:ts-api` (with Twoslash `.d.ts`)
→ `validate:api-data`.
- Generated JSON and `d.ts` were not hand-edited, and nothing from 14.x
was imported.

### Deviation: no `ASPIRE_RELEASE_VERSION` pin

Pinning `13.6.0` left the 50 prerelease packages stale. The feed is
commit-specific, so the unpinned run resolves every package from the
same build.

### Packages absent from the feed

These seven official packages aren't in this build, so they are carried
forward unchanged:

- `Aspire.Elastic.Clients.Elasticsearch` 13.3.0
- `Aspire.Hosting.AgentFramework.DevUI` 1.22.0-preview.260918.1
- `Aspire.Hosting.AWS` 13.7.2
- `Aspire.Hosting.ClickHouse` 13.5.3
- `Aspire.Hosting.DocumentDB` 0.116.0
- `Aspire.Hosting.Elasticsearch` 13.3.0
- `Aspire.Hosting.GitHub.Models` 13.5.4

## Changes

- **Generated data:** regenerated `aspire-integrations.json` (still 217
packages; 82 at `13.6.0` and 50 at `13.6.0-preview.1.26478.8`), `pkgs/`
(210 succeeded, 0 failed), `ts-modules/` (146 succeeded, 0 failed) and
`twoslash/aspire.d.ts`. `integration-docs.json` needed no change.
- **Generator fix** (`generate-package-json.ps1`): the 24 Provisioning
overlays restored `Aspire.Hosting` at the overlay's own prerelease
version, which doesn't exist now that `Aspire.Hosting` is stable
`13.6.0`. The script now uses the resolved `Aspire.Hosting` version, via
a new `-HostingVersion` parameter with a feed-lookup fallback for
selective runs.
- **Blazor docs:** `AddDotnetProjectBlazorGateway` and
`WithBlazorClientApp` report their own `ASPIREDOTNETPROJECT001`
diagnostic. `ASPIREBLAZOR001` applies to other experimental Blazor
hosting types, such as `BlazorWasmAppResource`.
- A compile check with the pragma removed reports only
`ASPIREDOTNETPROJECT001`, on exactly those two methods.
- The previous wording, from #1564, said the gateway methods carry both
diagnostics.
- **Dashboard docs (microsoft/aspire#20562):** the dashboard no longer
has a terminal button in the header or a terminal entry in the mobile
menu.
- `dashboard/explore.mdx` and the What's new bullet now describe the
backtick key as the way to open and hide the terminal dock.

## Validation

- **`WithRepl` coverage:** present in the C# and TS API data for all six
REPL packages (PostgreSQL, MySql, MongoDB, SqlServer, Redis, Valkey) and
in `aspire.d.ts`.
- **C# compile:** every new sample compiles with 0 warnings and 0 errors
against exact packages from the `f4c27f2d` feed (16 at `13.6.0`, 9 at
`26478.8`). This covers REPL×6, Rust, ConnectorNamespace, Foundry
Toolbox, Radius, CSI, Helm, Blazor (now matching #1564's
`WithExternalHttpEndpoints` sample), Provisioning and Dotnet. The Dotnet
samples need no `ASPIREDOTNETPROJECT001` suppression.
- **TS compile:** the SDK was generated by a real `aspire restore`
(codegen `13.6.0`, `Aspire.Hosting.Redis/13.6.0` and
`Aspire.Hosting.Blazor/13.6.0-preview.1.26478.8`, all at `f4c27f2d`).
Strict `tsc` (NodeNext) passes for all 18 `.mts` samples, including the
new Blazor gateway TS sample. A negative control (`withReplz`) fails
with TS2551.
- **Scanner warnings:**
- Radius reports no collisions; the earlier `withContainerImage`
collision on `CSharpAppResource` is gone.
- The `createRoleAssignment` overload collisions remain in 16
Provisioning overlays. They are recorded here, not suppressed; no doc
sample calls this method.
- **Tests:** `pnpm validate:api-data` passes (217 identities, 146
modules matched to C# provenance). These suites pass:
`test:unit:structured-data` (82), `api-reference` (55), `api-markdown`
(30), `ts-api` (31), `twoslash-types` (12), `twoslash-blocks` (2),
`llms-txt` (12) and `docs` (2).
- No local `pnpm build` was run; CI covers it.

## Not done

- **Contributors:** `update:release-contributors` needs the `v13.6.0`
tag, which doesn't exist yet. This is left for after the release is
tagged.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants