sessions: group the Session Activity Bar into side pane and panel groups #343313

Merged
sandy081 opened 2:18pm on October 21, 2026 wanted to merge 100 Δ into microsoft/vscode main from
agents/the-session-activity-bar-should-have-two-groups

Pull Request Overview

  • Opened on October 21, 2026
  • Status Merged
  • Commit count 1 with first commit October 21, 2026

Total Delta

100 Total Diff Delta

Open Days

Open 9 weekdays

Test Delta

48 Diff Delta in Test Files
Breakdown by Phase

How long has this pull request spent in each phase of its lifecycle?

Fraction of total time Business days Phase
 
0.0 days Authoring 1 commit before pull request opened for review
 
0.0 days Awaiting first review
 
9.0 days Merge to deploy (still awaiting deployment)

Total time for pull request 0.0 business days from first commit authored to merge
Still awaiting deployment

Author avatar

sessions: group the Session Activity Bar into side pane and panel groups

What changed

The Session Activity Bar now has two groups instead of three:

Toggle Side Panel · Changes · Files · Browser · Canvas ─── Terminal · Show/Hide Panel



  • SessionActivityBarGroup is reduced to SidePanel (1_sidePanel) and Panel (2_panel). The tab entries (Changes, Files, Browser, Canvas) moved into the side panel group, after its toggle.

  • New Terminal entry at the start of the panel group. It runs the existing workbench.action.terminal.focus command, which reveals the terminal in the panel and creates one when none exists. Like the tab entries, it shows whenever a terminal is available and does not depend on the "Show Layout Actions" setting, so with that setting off the second group shows only Terminal. It is disabled while a custom view is shown, matching the panel toggle.

  • The panel toggle now comes after Terminal.

  • The drag gripper gets the same hover and active feedback as the strip's actions. The 50% dimming moved from the handle to its icon so it no longer fades the hover background; the icon is fully opaque on hover, while dragging, and in high contrast themes.

Notes for reviewers


  • Component fixtures now include the Terminal entry and the new grouping, so the activity bar screenshot baselines will change.

How to test


  1. In the Agents window, with the Session Activity Bar and its layout actions enabled, check the strip shows: Toggle Side Panel, tab entries, separator, Terminal, Show/Hide Panel.

  2. Click Terminal: the panel opens with a terminal focused (one is created if none exists).

  3. Hover the gripper at the top of the strip: it shows the same hover background/outline as the action buttons.

Validation



  • npm run typecheck-client: passed


  • node build/hygiene.ts <changed files>: passed (also passed in the pre-commit hook)


  • npm run eslint -- <changed .ts files>: passed


  • ./scripts/test.sh --run src/vs/sessions/test/browser/sessionActivityBar.test.ts --run src/vs/sessions/test/browser/layoutActions.test.ts --run src/vs/sessions/contrib/layout/test/browser/baseSessionLayoutController.test.ts --run src/vs/sessions/contrib/editor/test/browser/editor.contribution.test.ts: 105 passing

  • Not run: screenshot fixtures and a live check of the UI.

Comments Threads Pending Resolution

ljharb reviewed on October 21, 2026
ljharb left a comment

> [!WARNING]
> Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a `copilot-code-review.yml` file specifying one with the `runs-on` attribute. See the [docs](https://gh.io/AA11tgch) for more details.

## Copilot review overview

2 open issues

- Medium severity [This introduces new Session Activity Bar behavior (a Terminal menu item with specific `group`,…](https://github.com/microsoft/vscode/pull/343313#discussion_r4341125498) · New
- Medium severity [The fixtures hardcode group ids as string literals (`'1_sidePanel'`, `'2_panel'`). Since…](https://github.com/microsoft/vscode/pull/343313#discussion_r4341125582) · New

What changed in this PR

This PR simplifies the Session Activity Bar grouping by merging tab actions with the side panel toggle and introducing a new Terminal entry ahead of the panel toggle, alongside some UI polish for the drag gripper.

**Changes:**
- Reduced `SessionActivityBarGroup` from three groups to two (`SidePanel`, `Panel`) and moved tab entries into the side panel group.
- Added a `Terminal` Session Activity Bar entry that invokes the existing terminal focus command.
- Updated fixtures/tests for the new ordering and improved drag gripper hover/active styling.

| File | Description |
| ---- | ----------- |
| src/​vs/​sessions/​test/​browser/​sessionActivityBar.test.ts | Updates expectations for the new two-group ordering and Terminal entry placement. |
| src/​vs/​sessions/​test/​browser/​layoutActions.test.ts | Adjusts panel toggle group/order assertions to reflect the new Panel group ordering. |
| src/​vs/​sessions/​test/​browser/​addTabFixtureUtils.ts | Updates fixture grouping and adds a Terminal fixture entry for screenshot baselines. |
| src/​vs/​sessions/​contrib/​terminal/​browser/​sessionsTerminalContribution.ts | Registers a Terminal entry in the Session Activity Bar menu with context-based visibility. |
| src/​vs/​sessions/​contrib/​editor/​browser/​addTabActions.ts | Moves tab menu items into the SidePanel group and adjusts ordering. |
| src/​vs/​sessions/​contrib/​chat/​test/​browser/​sessionActivityBar.fixture.ts | Updates screenshot fixtures to match the new grouping and include Terminal. |
| src/​vs/​sessions/​contrib/​canvases/​electron-browser/​sessionCanvasActions.ts | Moves Canvas submenu entry to the SidePanel group. |
| src/​vs/​sessions/​browser/​parts/​sessionActivityBar.ts | Updates inline documentation to reflect the new grouping. |
| src/​vs/​sessions/​browser/​parts/​media/​sessionActivityBar.css | Adds hover/active feedback for the gripper and shifts dimming to the icon. |
| src/​vs/​sessions/​browser/​menus.ts | Removes the Tabs group and redefines Session Activity Bar groups to SidePanel/Panel. |
| src/​vs/​sessions/​browser/​layoutActions.ts | Moves panel toggles after Terminal via order change in the Panel group. |

...

src/vs/sessions/test/browser/addTabFixtureUtils.ts
38
export const fixtureBrowser: IFixtureEntry = { id: 'sessions.fixture.addTab.browser', title: 'Browser', icon: Codicon.globe, keybinding: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyB };
39
export const fixtureCanvas: IFixtureEntry = { id: 'sessions.fixture.addTab.canvas', title: 'Canvas', icon: Codicon.preview, submenu: ['Kusto'] };
40 40
export const fixtureTogglePanel: IFixtureEntry = { id: 'sessions.fixture.layout.panel', title: 'Show Panel', icon: Codicon.layoutPanelOff, keybinding: KeyMod.CtrlCmd | KeyCode.KeyJ, group: '
2
_panel' };
41
export const fixtureToggleSidePanel: IFixtureEntry = { id: 'sessions.fixture.layout.sidePanel', title: 'Toggle Side Panel', icon: Codicon.layoutSidebarRightOff, keybinding: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.KeyB, group: '1_sidePanel' };
42
export const fixtureTerminal: IFixtureEntry = { id: 'sessions.fixture.terminal', title: 'Terminal', icon: Codicon.terminal, group: '2_panel' };
src/vs/sessions/contrib/terminal/browser/sessionsTerminalContribution.ts
997
	when: ContextKeyExpr.and(
Unspecified Git Hub Copilot Model
998
		IsAuxiliaryWindowContext.toNegated(),
Unspecified Git Hub Copilot Model
999
		ContextKeyExpr.or(TerminalContextKeys.processSupported, TerminalContextKeys.terminalHasBeenCreated),
Unspecified Git Hub Copilot Model
1000
	),
Unspecified Git Hub Copilot Model
1001
});
Unspecified Git Hub Copilot Model

Resolved Comment Threads

No resolved comments have been left on this PR.