Skip to content

VS Code: add resource context-menu Open terminal action#18260

Merged
mitchdenny merged 10 commits into
mainfrom
mitchdenny/add-resource-open-terminal-command
Jun 23, 2026
Merged

VS Code: add resource context-menu Open terminal action#18260
mitchdenny merged 10 commits into
mainfrom
mitchdenny/add-resource-open-terminal-command

Conversation

@mitchdenny

Copy link
Copy Markdown
Member

Description

This adds a dedicated resource action in the Aspire VS Code extension so terminal-enabled resources can be attached directly from the tree context menu. The goal is to make aspire terminal attach discoverable and fast from the existing resource workflow, while opening the terminal in editor/document style.

The change introduces aspire-vscode.openResourceTerminal, shows it only for resources that expose terminal.enabled, and routes execution through the existing safe terminal command pipeline. The handler runs aspire terminal attach <resource> and adds --apphost when available plus --replica when terminal.replicaIndex is present. To support the requested UX, terminal provider support was added for editor-targeted terminal creation without changing default shared-terminal behavior for other commands.

Fixes #18084

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 <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 17, 2026 03:21
@github-actions

github-actions Bot commented Jun 17, 2026

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 -- 18260

Or

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

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.

Pull request overview

This PR adds an "Open terminal" context-menu action on terminal-enabled resources in the Aspire VS Code extension tree view. It wires aspire terminal attach <resource> through the existing safe terminal command pipeline, opening the terminal in editor/document style via a new terminalTarget: 'editor' option on SendAspireCommandOptions. This addresses issue #18084 to make terminal attach discoverable directly from the resource tree.

Changes:

  • Introduces aspire-vscode.openResourceTerminal command with context-menu visibility gated on the terminal.enabled resource property, and supports --replica when terminal.replicaIndex metadata is present.
  • Refactors AspireTerminalProvider to extract a shared createTerminal helper and adds an editor-targeted terminal creation path (createAspireEditorTerminal), keeping default shared-terminal behavior for other commands.
  • Adds comprehensive unit and E2E tests covering the new command flow, context value generation, replica argument handling, and hostile-path safety.
Show a summary per file
File Description
extension/src/views/AspireAppHostTreeProvider.ts Adds openResourceTerminal method, isTerminalEnabled/getTerminalReplicaIndex helpers, and wires canOpenTerminal into context values
extension/src/utils/AspireTerminalProvider.ts Refactors terminal creation into createTerminal, adds createAspireEditorTerminal and terminalTarget option
extension/src/extension.ts Registers openResourceTerminal command and adds E2E control command wiring
extension/src/types/extensionApi.ts Adds openResourceTerminal to the E2E control command union type
extension/package.json Declares the command, hides it from the palette, adds context-menu entry with when clause
extension/package.nls.json Adds localized "Open terminal" string
extension/loc/xlf/aspire-vscode.xlf Adds XLF translation source entry
extension/src/test/appHostTreeView.test.ts Adds tests for context value, command arguments, replica index, and hostile path safety
extension/src/test/aspireTerminalProvider.test.ts Adds test verifying editor terminal creation when terminalTarget is 'editor'
extension/src/test/packageManifest.test.ts Adds assertion for the new context-menu when clause
extension/src/test-e2e/treeActions.e2e.test.ts Adds E2E test for openResourceTerminal command suppression flow
extension/src/test-e2e/packageSurface.e2e.test.ts Adds new command to surface expectations

Copilot's findings

  • Files reviewed: 12/12 changed files
  • Comments generated: 1

Comment thread extension/src/utils/AspireTerminalProvider.ts Outdated
@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.

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

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

- Log resource context values when terminal.enabled property is detected
- Helps diagnose why terminal option may not be appearing in tree view

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@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.

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

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

The test was failing because it didn't stub createEnvironment(), which
requires the RPC server to be initialized. Fix by adding the stub like
other tests in this suite do.

Fixes test failure in extension_tests_win CI job.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 17, 2026 04:57

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's findings

  • Files reviewed: 12/12 changed files
  • Comments generated: 2

Comment thread extension/src/views/AspireAppHostTreeProvider.ts
Comment thread extension/src/test-e2e/treeActions.e2e.test.ts Outdated
The VS Code extension gates its "Open terminal" action on the
`terminal.enabled` resource property, but that property (along with
`terminal.replicaIndex`, `terminal.replicaCount`, and the sensitive
`terminal.consumerUdsPath`) was only stamped on the dashboard gRPC path.
`aspire describe` and the extension read the auxiliary backchannel, which
surfaced the raw snapshot without terminal metadata, so the action never
appeared.

Extract the stamping logic into a shared
`TerminalResourceSnapshotProperties` helper and apply it on both the
dashboard path (`DashboardServiceData`) and the backchannel path
(`AuxiliaryBackchannelRpcTarget`). The backchannel already redacts
sensitive values to null, so the consumer UDS path is never leaked to the
CLI; the CLI resolves the real socket via the terminal info RPC.

Also removes the temporary debug logging from the extension tree provider.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Make createAspireEditorTerminal private (no external callers).
- Remove dead initial assignment of terminalBefore in the tree-actions
  E2E test; declare it without an unused initializer.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 18, 2026 01:50

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's findings

  • Files reviewed: 16/16 changed files
  • Comments generated: 0 new

@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 and others added 2 commits June 18, 2026 13:31
The refactor that extracted createTerminal() left an unused
`const terminalName = aspireTerminalName;` in getAspireTerminal();
createTerminal() now references aspireTerminalName directly.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Register an e2e-terminal resource via .WithTerminal() in the extension E2E
AppHost fixture so a real Aspire CLI surfaces terminal.enabled and
terminal.replicaIndex over the backchannel. Extend the tree action E2E test to
open that resource's terminal (with execution suppressed) and assert the emitted
'terminal attach e2e-terminal' subcommand includes --replica, proving the
terminal metadata flows end-to-end through a real CLI process while attach stays
suppressed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 18, 2026 04:06

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's findings

  • Files reviewed: 17/17 changed files
  • Comments generated: 0 new

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

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

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

@davidfowl

Copy link
Copy Markdown
Contributor

Where's the PR testing report?

@JamesNK

JamesNK commented Jun 18, 2026

Copy link
Copy Markdown
Member

Where's the screenshots and/or screen recording of using the feature.

@mitchdenny
mitchdenny marked this pull request as draft June 18, 2026 10:05
Resolved conflicts in two files caused by main's refactor that extracted the
E2E control-command switch out of extension.ts into
extension/src/testing/e2eStateFileBridge.ts:

- extension/src/extension.ts: took main's slimmed file and kept this PR's
  openResourceTerminal command registration and disposable.
- extension/src/testing/e2eStateFileBridge.ts: re-applied this PR's
  'openResourceTerminal' case in the relocated executeE2eControlCommand switch.
- extension/src/test-e2e/treeActions.e2e.test.ts: reconciled main's new
  try/finally suppression scoping with this PR's open-terminal assertions for
  e2e-worker (no --replica) and e2e-terminal (with --replica), declaring
  terminalBefore once.

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

This comment has been minimized.

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

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

@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
mitchdenny marked this pull request as ready for review June 21, 2026 10:07
Copilot AI review requested due to automatic review settings June 21, 2026 10:07
The open-terminal assertion hardcoded 'e2e-terminal', but the E2E harness
assigns resources a random suffix at runtime (e.g. e2e-terminal-awgvthgy), so
the emitted subcommand was "terminal attach 'e2e-terminal-awgvthgy' --replica
'0'" and the predicate's includes("terminal attach 'e2e-terminal'") never
matched, timing out on Windows and Linux. Resolve the real runtime name via
findResource(state, 'e2e-terminal').name (mirroring workerResourceName) and use
it for both the command invocation and the assertion.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@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's findings

  • Files reviewed: 18/18 changed files
  • Comments generated: 1

Comment thread extension/src/utils/AspireTerminalProvider.ts
@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.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 21, 2026 11:47

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's findings

  • Files reviewed: 18/18 changed files
  • Comments generated: 0 new

@github-actions

Copy link
Copy Markdown
Contributor

Tests selector (audit mode)

The full test matrix and all jobs still run in audit mode. The tests and jobs below are what selective CI would run under enforcement.

Test projects (45 / 97)

  • Aspire.EndToEnd.Tests — affected project Aspire.Hosting
  • Aspire.Hosting.Analyzers.Tests — via graph from src/Aspire.Hosting/ApplicationModel/TerminalResourceSnapshotProperties.cs (2 hops)
  • Aspire.Hosting.Azure.Kubernetes.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.Azure.Kusto.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.Azure.Tests — via graph from src/Aspire.Hosting/ApplicationModel/TerminalResourceSnapshotProperties.cs
  • Aspire.Hosting.Blazor.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.Browsers.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.CodeGeneration.Go.Tests — via graph from src/Aspire.Hosting/ApplicationModel/TerminalResourceSnapshotProperties.cs
  • Aspire.Hosting.CodeGeneration.Java.Tests — via graph from src/Aspire.Hosting/ApplicationModel/TerminalResourceSnapshotProperties.cs
  • Aspire.Hosting.CodeGeneration.Python.Tests — via graph from src/Aspire.Hosting/ApplicationModel/TerminalResourceSnapshotProperties.cs
  • Aspire.Hosting.CodeGeneration.Rust.Tests — via graph from src/Aspire.Hosting/ApplicationModel/TerminalResourceSnapshotProperties.cs
  • Aspire.Hosting.CodeGeneration.TypeScript.Tests — via graph from src/Aspire.Hosting/ApplicationModel/TerminalResourceSnapshotProperties.cs
  • Aspire.Hosting.Containers.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.DevTunnels.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.Docker.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.DotnetTool.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.EntityFrameworkCore.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.Foundry.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.Garnet.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.GitHub.Models.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.Go.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.JavaScript.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.Kafka.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.Keycloak.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.Kubernetes.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.Maui.Tests — via graph from src/Aspire.Hosting/ApplicationModel/TerminalResourceSnapshotProperties.cs
  • Aspire.Hosting.Milvus.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.MongoDB.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.MySql.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.Nats.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.OpenAI.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.Oracle.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.PostgreSQL.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.Python.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.Qdrant.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.RabbitMQ.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.Redis.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.RemoteHost.Tests — via graph from src/Aspire.Hosting/ApplicationModel/TerminalResourceSnapshotProperties.cs
  • Aspire.Hosting.Seq.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.SqlServer.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.Testing.Tests — via graph from src/Aspire.Hosting/ApplicationModel/TerminalResourceSnapshotProperties.cs (2 hops)
  • Aspire.Hosting.Teststests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs, via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.Valkey.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Hosting.Yarp.Tests — via graph from tests/Aspire.Hosting.Tests/Backchannel/AuxiliaryBackchannelRpcTargetTests.cs
  • Aspire.Playground.Tests — via graph from src/Aspire.Hosting/ApplicationModel/TerminalResourceSnapshotProperties.cs

Jobs (5)

  • deployment-e2e — affected project Aspire.Hosting.Azure
  • extension-e2eextension/loc/xlf/aspire-vscode.xlf, extension/package.json, extension/package.nls.json, extension/scripts/run-e2e.js, extension/src/extension.ts, extension/src/test-e2e/packageSurface.e2e.test.ts, extension/src/test-e2e/treeActions.e2e.test.ts, extension/src/test/appHostTreeView.test.ts, extension/src/test/aspireTerminalProvider.test.ts, extension/src/test/packageManifest.test.ts, extension/src/testing/e2eStateFileBridge.ts, extension/src/types/extensionApi.ts, extension/src/utils/AspireTerminalProvider.ts, extension/src/views/AspireAppHostTreeProvider.ts, src/Aspire.Hosting/ApplicationModel/TerminalResourceSnapshotProperties.cs, src/Aspire.Hosting/Backchannel/AuxiliaryBackchannelRpcTarget.cs, src/Aspire.Hosting/Dashboard/DashboardServiceData.cs, affected project Aspire.Hosting
  • extension-unitextension/loc/xlf/aspire-vscode.xlf, extension/package.json, extension/package.nls.json, extension/scripts/run-e2e.js, extension/src/extension.ts, extension/src/test-e2e/packageSurface.e2e.test.ts, extension/src/test-e2e/treeActions.e2e.test.ts, extension/src/test/appHostTreeView.test.ts, extension/src/test/aspireTerminalProvider.test.ts, extension/src/test/packageManifest.test.ts, extension/src/testing/e2eStateFileBridge.ts, extension/src/types/extensionApi.ts, extension/src/utils/AspireTerminalProvider.ts, extension/src/views/AspireAppHostTreeProvider.ts
  • polyglot — affected project Aspire.Hosting.Python
  • typescript-api-compat — affected project Aspire.Hosting

Selection computed for commit d8f7738.

@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

Copy link
Copy Markdown
Member Author

video of this working. thought i had attached it earlier

Screen.Recording.2026-06-21.at.8.03.19.pm.mov

@mitchdenny
mitchdenny merged commit c05f8e5 into main Jun 23, 2026
677 of 682 checks passed
@mitchdenny
mitchdenny deleted the mitchdenny/add-resource-open-terminal-command branch June 23, 2026 03:53
@github-actions github-actions Bot added this to the 13.5 milestone Jun 23, 2026
@aspire-repo-bot

Copy link
Copy Markdown
Contributor

Issue created: #1282

Generated by PR Documentation Check · 1.7K AIC · ⌖ 62.4 AIC · ⊞ 45.7K

@aspire-repo-bot

Copy link
Copy Markdown
Contributor

⚠️ Documentation drafting was attempted but the draft PR could not be confirmed.

See the workflow run for details: https://github.com/microsoft/aspire/actions/runs/28000988919

Added documentation for the new Open terminal context-menu action in the Aspire VS Code extension, introduced in this PR for resources configured with WithTerminal(). Three pages were updated:

  • src/frontend/src/content/docs/get-started/aspire-vscode-extension.mdx — updated "The Aspire view" section to mention the new right-click Open terminal option for terminal-enabled resources
  • src/frontend/src/content/docs/app-host/withterminal.mdx — added a new "Access terminals from VS Code" section covering the context-menu action, editor-style terminal, automatic --replica flag handling, and visibility note
  • src/frontend/src/content/docs/whats-new/aspire-13-5.mdx — added a bullet for the new Open terminal VS Code context-menu action in the 13.5 extension enhancements list

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.

VS Code extension: add resource context-menu action to attach terminal

4 participants