Activity Bar container can remain pinned but invisible in a Remote-SSH workspace
- 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
Assessment
This issue has not been assessed yet.