Skip to content

Remove dashboard terminal navigation entry points - #20528

Merged
Mitch Denny (mitchdenny) merged 2 commits into
mainfrom
mitchdenny-remove-terminals-button
Sep 28, 2026
Merged

Mitch Denny (mitchdenny) merged 2 commits into
mainfrom
mitchdenny-remove-terminals-button

Conversation

@mitchdenny

@mitchdenny Mitch Denny (mitchdenny) commented Sep 27, 2026 •

Copy link
Copy Markdown
Member

Description

Reduce dashboard navigation clutter by removing the top-right Terminals button and the mobile Terminal menu entry. The backtick shortcut remains the manual entry point for opening the dock on both layouts. Terminal lifecycle and automatic opening behavior are unchanged.

Removes unused navigation callbacks, component references, and localizers; updates terminal access documentation and layout regression coverage.

User-facing usage

On desktop and mobile layouts, press the backtick (`) key to open, collapse, or reopen the terminal dock. Shortcut suppression while typing in a terminal or text input is unchanged; press F6 to move focus to terminal footer controls first. Neither the desktop header nor the mobile navigation menu contains a terminal entry point.

Validation

Passed all 128 focused MainLayoutTests, TerminalDockTests, and MobileNavMenuTests, including shortcut open/collapse/reopen on both layouts, absence of the navigation entry points, resource-service gating, and live/historical run selection.

Also launched the branch-built dashboard with the CustomResources playground AppHost and verified in Chromium that the desktop header has no terminal control and the backtick shortcut opens and closes the live terminal dock.

Screenshots / Recordings

Desktop Resources page with a live AppHost, showing the top-right header cluster without the terminal icon:

Desktop dashboard with no terminal icon in the top-right header cluster

Fixes # (issue)

Checklist

  • Is this feature complete?
    • Yes. Ready to ship.
    • No. Follow-up changes expected.
  • Are you including unit tests for the changes and scenario tests if relevant?
    • Yes
    • No
  • Did you add public API?
    • Yes
      • If yes, did you have an API Review for it?
        • Yes
        • No
      • Did you add <remarks /> and <code /> elements on your triple slash comments?
        • Yes
        • No
    • No
  • Does the change make any security assumptions or guarantees?
    • Yes
      • If yes, have you done a threat model and had a security review?
        • Yes
        • No
    • No

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: e3a279f5-bf3d-4d19-8eb9-2ffec231cce2
@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 -- 20528

Or

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

@github-actions

This comment has been minimized.

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 review overview

🟢 Approval recommended

The focused UI removal is consistent across implementation, documentation, and regression coverage.

Review effort: Balanced
Findings: None

What changed in this PR

Removes the desktop terminal header button while preserving keyboard and mobile terminal access.

Changes:

  • Removes the desktop header button and unused localizer injection.
  • Updates terminal documentation.
  • Adds regression coverage for desktop shortcut behavior and mobile access.
File Description
MainLayout.razor Removes the desktop terminal button.
MainLayout.razor.cs Removes the unused terminal localizer.
TerminalDock.razor.cs Updates toggle API documentation.
MainLayoutTerminalTests.cs Updates and extends terminal access tests.
with-terminal.md Documents desktop and mobile access.

💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.

@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.

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.

1 requested change

Comment thread docs/specs/with-terminal.md Outdated
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: e3a279f5-bf3d-4d19-8eb9-2ffec231cce2
@mitchdenny Mitch Denny (mitchdenny) changed the title Remove the dashboard desktop terminal header button Remove dashboard terminal navigation entry points Sep 28, 2026
@aspire-repo-bot
aspire-repo-bot Bot requested a balanced review from Copilot September 28, 2026 01:22
@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 c56ec8f.

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 review overview

🟡 Changes recommended

Removing the mobile entry point leaves touch-only users unable to open the terminal dock manually.

Review effort: Balanced
Findings: 1 High severity

Open (1)

Comment thread docs/specs/with-terminal.md
@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.

@mitchdenny
Mitch Denny (mitchdenny) merged commit da280d0 into main Sep 28, 2026
301 of 305 checks passed
@microsoft-github-policy-service microsoft-github-policy-service Bot added this to the 14.0 milestone Sep 28, 2026
@mitchdenny

Copy link
Copy Markdown
Member Author

/backport to release/13.6

@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/13.6 (link to workflow run)

@aspire-repo-bot

Copy link
Copy Markdown
Contributor

Mitch Denny (@mitchdenny) an error occurred while backporting to release/13.6. See the workflow output for details.

@aspire-repo-bot

Copy link
Copy Markdown
Contributor

Pull request created: #1784

Generated by PR Documentation Check · copilot · auto · 29.5 AIC · ⌖ 13.9 AIC · ⊞ 20.2K

@aspire-repo-bot

Copy link
Copy Markdown
Contributor

📝 Documentation has been drafted in microsoft/aspire.dev#1784 targeting release/13.6.

Signal pr_body_has_user_facing_section (PR body "User-facing usage"): terminal header/mobile menu entry points removed; backtick is the entry point. Updated dashboard/explore.mdx to document the shortcut.

Note

This draft PR needs human review before merging.

Jose Perez Rodriguez (joperezr) pushed a commit that referenced this pull request Sep 28, 2026
)

Backport of #20528 to release/13.6

/cc @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.

```bash
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](https://github.com/user-attachments/assets/afe6aa88-ab25-4477-84dc-12bc5c15e831)

## 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.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: cefa6302-c433-4ef8-86bc-69c5e6bbedce
Maddy Montaquila (maddymontaquila) added a commit to microsoft/aspire.dev that referenced this pull request Sep 29, 2026
Documents changes from microsoft/aspire#20528

Author: ``@mitchdenny``

Targeting `release/13.6` — the latest release branch on
`microsoft/aspire.dev` — because `release/14.0` (from the source PR
milestone `14.0`) does not exist there (`target_resolution`:
`latest_release_fallback`).

**Why:** The source PR removed the dashboard's top-right Terminals
button and the mobile Terminal menu entry. The backtick shortcut is now
the only manual way to open the terminal dock. Triggered signal:
`pr_body_has_user_facing_section`.

**Changes:** Updated the existing page
`src/frontend/src/content/docs/dashboard/explore.mdx` (Interactive
terminals section) to describe the backtick shortcut, the absence of
header or mobile menu entries, and F6 focus behavior.

> Generated by [PR Documentation
Check](https://github.com/microsoft/aspire/actions/runs/36478835539) for
#20528 · copilot · auto · 29.5 AIC · ⌖ 13.9 AIC · ⊞ 20.2K ·
[◷](https://github.com/search?q=repo%3Amicrosoft%2Faspire.dev+%22gh-aw-workflow-id%3A+pr-docs-check%22&type=pullrequests)

<!-- gh-aw-agentic-workflow: PR Documentation Check, engine: copilot,
model: auto, id: 36478835539, workflow_id: pr-docs-check, run:
https://github.com/microsoft/aspire/actions/runs/36478835539 -->

<!-- gh-aw-workflow-id: pr-docs-check -->
<!-- gh-aw-workflow-call-id: microsoft/aspire/pr-docs-check -->

---------

Co-authored-by: aspire-repo-bot[bot] <268009190+aspire-repo-bot[bot]@users.noreply.github.com>
Co-authored-by: Maddy Montaquila <maddyleger1@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Ankit Jain (radical) added a commit that referenced this pull request Sep 30, 2026
Dashboard outerloop tests timed out waiting for a terminal header button
removed by #20528. The empty-dock and focus-preservation scenarios still
treated that button as available.

Open the empty dock from an AppHost activation snapshot and move focus to
the settings button after collapse. This preserves the layout and focus
assertions without restoring removed navigation UI.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Ankit Jain (radical) added a commit that referenced this pull request Sep 30, 2026
Dashboard Playwright tests initialize the shared layout, which now
subscribes to terminal updates even in scenarios that do not configure
terminals. The mock threw during that initialization, and terminal-dock
tests still targeted the header button removed by #20528.

Return a completed empty terminal stream from the shared mock. Open the
empty dock through AppHost activation and use the settings button as the
surviving focus target after collapse.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Ankit Jain (radical) added a commit that referenced this pull request Oct 1, 2026
## Description

The scheduled outerloop run exposed two independent setup and
test-contract regressions:

```text
error: release version 21 not supported
System.TimeoutException: Timeout 30000ms exceeded.
- waiting for GetByRole(AriaRole.Button, new() { Name = "Toggle terminal (`)", Exact = true })
```

The CLI Maven reactor tests are outerloop-only, but `Aspire.Cli.Tests`
did not advertise its Java requirement, so specialized jobs could run
with an older JDK. Dashboard shared-layout initialization also
subscribes to terminal updates in Playwright tests that do not configure
terminals, where the mock previously threw. Separately, two
terminal-dock scenarios still targeted the navigation button
intentionally removed by #20528.

Mark `Aspire.Cli.Tests` as requiring Java only when
`RunOuterloopTests=true`, return a completed empty terminal stream from
the shared Dashboard mock, and update the terminal-dock scenarios to use
the supported AppHost activation path and a surviving settings-button
focus target.

Validation:

- `CiWorkflowTests`: 7 passed.
- Dashboard accessibility matrix: 13 passed.
- CLI outerloop jobs: all 14 tests passed on macOS, Ubuntu, and Windows.
- `TerminalDockTests`: all 7 outerloop cases passed locally on macOS
arm64.

## Checklist

- Is this feature complete?
  - [x] Yes. Ready to ship.
  - [ ] No. Follow-up changes expected.
- Are you including unit tests for the changes and scenario tests if
relevant?
  - [x] Yes
  - [ ] No
- Did you add public API?
  - [ ] Yes
  - [x] No
- Does the change make any security assumptions or guarantees?
  - [ ] Yes
  - [x] No

---------

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.

5 participants