microsoft / microsoft/vscode

Activity Bar container can remain pinned but invisible in a Remote-SSH workspace

Open
#336,206 0 comments 0 reactions 1 assignee Claimed by @sandy081 View on GitHub
Dominant language
TypeScript
Stars
193k
Forks
42.4k
PR merge metrics
PR metrics pending

Description

Type: Bug

VS Code can persist an extension-contributed Activity Bar container as pinned at the profile level but invisible at the workspace level. The Activity Bar toggle only changes the pinned state, so selecting the container does not restore its icon.

VS Code version: 1.137.0 (`645f29cc3176500b4b5762ba887cf2a7f0ffdf2c`)
Local OS: macOS arm64 25.6.0
Remote OS: Linux x64 6.8
Remote type: Remote-SSH

Steps to reproduce:

1. Install an extension that contributes a view container to `activitybar`.
2. Confirm the icon appears in a local window.
3. Open a Remote-SSH workspace where the container has been persisted with `visible: false`.
4. Select or pin the extension's view container.

Expected:

Selecting or pinning the view container makes its Activity Bar icon visible.

Actual:

The container remains absent because its profile state is pinned while its workspace state is invisible.

For the affected container, the stored state is:

```text
workbench.activity.pinnedViewlets2:
{ "id": "workbench.view.extension.work", "pinned": true }

workbench.activity.viewletsWorkspaceState:
{ "id": "workbench.view.extension.work", "visible": false }
```

The extension activates successfully in the Remote-SSH window. Its Activity Bar contribution is unconditional, and at least one child view is active based on complementary authentication context expressions. Renderer logs contain no CORS, `ERR_FAILED`, SVG, or icon-font loading errors.

The current workbench implementation keeps these states independent:

- `PaneCompositeBar` restores `visible` from workspace storage.
- `CompositeBarModel.visibleItems` excludes containers with `visible: false`.
- `ToggleCompositePinnedAction` and `CompositeBarModel.setPinned()` only update `pinned`.

This leaves no recovery path through the normal Activity Bar toggle once the persisted states disagree. Pinning a container should either set `visible: true`, or the workbench should reconcile `pinned: true` with workspace visibility when the container has active views.

Related symptom report: #334550

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.