Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/vs/sessions/LAYOUT.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,8 @@ The Agent Sessions titlebar includes a command center with a custom title bar wi
The widget:
- Extends `BaseActionViewItem` and renders a clickable label showing the active session title
- Shows kind icon (provider type icon), session title, repository folder name, and the active git branch/worktree name in parentheses when available, plus the changes summary (+insertions -deletions)
- Uses spacing between titlebar groups instead of vertical separator bars, and shows the session title metadata without the previous dot separator before the folder/worktree label
- Keeps the command center focused on the session picker widget itself, without an adjacent "Mark as Done" action button
- Truncates the repository/worktree metadata with ellipsis before truncating the primary AI-generated session title when command center space is constrained
- On click, opens the `AgentSessionsPicker` quick pick to switch between sessions
- Gets the active session label from `IActiveSessionService.getActiveSession()` and the live model title from `IChatService`, falling back to "New Session" if no active session is found
Expand Down Expand Up @@ -665,6 +667,9 @@ interface IPartVisibilityState {
| 2026-04-22 | Added a sessions-workbench notification offset override so the shared notification controllers no longer push top-right notifications down to `42px`; sessions now reapply a fixed `40px` top offset for top-right notification center/toast placement. |
| 2026-04-22 | Generalized the auxiliary bar snap-close prevention to trigger whenever the main editor part is visible (any editor type), so the behavior now applies automatically without maintaining an editor-type allowlist. |
| 2026-04-22 | Updated the sessions auxiliary bar sizing rules so attached diff editors and integrated browser editors keep the normal 270px auxiliary-bar minimum width while disabling sash snap-to-close in that state, and the titlebar toggle continues to hide/show the secondary sidebar normally. |
| 2026-04-21 | Renamed the command-center "Add Chat" titlebar action to "New Sub-Session" so the plus-button tooltip matches the sub-session workflow. |
| 2026-04-21 | Removed the remaining left-margin spacing after the titlebar's VS Code and session-picker items, and dropped the command-center "Mark as Done" checkmark button next to the active session title. |
| 2026-04-21 | Removed the titlebar's vertical separator bars in favor of spacing-only group separation, and removed the dot separator between the active session title and its folder/worktree metadata. |
| 2026-04-21 | Updated the sessions chat composite bar tabs to preserve each chat title's original casing instead of applying per-word capitalization. |
| 2026-04-21 | Moved the sessions-only default notification placement to bottom-right and documented the sessions-specific notification center offsets: `15px` from the bottom/right or bottom/left edges, and `top: 40px; right: 15px;` for top-right placement. |
| 2026-04-17 | Added a subtle 1px titlebar-token border around the sessions account widget's GitHub profile image, including the inactive-window variant, and documented the avatar chrome in the layout spec. |
Expand Down
10 changes: 3 additions & 7 deletions src/vs/sessions/browser/parts/media/titlebarpart.css
Original file line number Diff line number Diff line change
Expand Up @@ -63,13 +63,9 @@
align-items: center;
}

/* Separator before right layout toolbar (only when session actions toolbar also has actions) */
.monaco-workbench .part.titlebar > .sessions-titlebar-container > .titlebar-right > .titlebar-session-actions-container:not(.has-no-actions) + .titlebar-right-layout-container:not(.has-no-actions)::before {
content: '';
width: 1px;
height: 16px;
margin: 0 8px;
background-color: var(--vscode-disabledForeground);
/* Add spacing between the session action group and the right layout actions. */
.monaco-workbench .part.titlebar > .sessions-titlebar-container > .titlebar-right > .titlebar-session-actions-container:not(.has-no-actions) + .titlebar-right-layout-container:not(.has-no-actions) {
margin-left: 8px;
}

/* Toggled action buttons in session actions toolbar */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,8 @@

/* ---- Changes titlebar action spacing ---- */

/* Separator between local-session actions (Run, VS Code) and fixed toggles (Terminal, Changes).
/* Remove leftover spacing between local-session actions (Run, VS Code) and fixed toggles (Terminal, Changes).
* Targets the action following the VS Code icon (any Codicon.vscode variant). */
.agent-sessions-workbench .titlebar-session-actions-container .monaco-action-bar .actions-container > .action-item:has(.codicon[class*="codicon-vscode"]) + .action-item {
position: relative;
margin-left: 17px;
}

.agent-sessions-workbench .titlebar-session-actions-container .monaco-action-bar .actions-container > .action-item:has(.codicon[class*="codicon-vscode"]) + .action-item::before {
content: '';
position: absolute;
left: -9px;
top: 3px;
width: 1px;
height: 16px;
background-color: var(--vscode-disabledForeground);
margin-left: 0;
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,7 @@
}

.agent-sessions-workbench .command-center .monaco-action-bar .actions-container > .action-item.agent-sessions-titlebar-container + .action-item {
position: relative;
margin-left: 8px;
padding-left: 12px;
}

.agent-sessions-workbench .command-center .monaco-action-bar .actions-container > .action-item.agent-sessions-titlebar-container + .action-item::before {
content: '';
position: absolute;
left: 0;
top: 50%;
width: 1px;
height: 16px;
transform: translateY(-50%);
background-color: var(--vscode-commandCenter-border);
pointer-events: none;
margin-left: 0;
}

.command-center .agent-sessions-titlebar-container {
Expand Down Expand Up @@ -121,12 +107,6 @@
opacity: 0.7;
}

/* Dot separator */
.command-center .agent-sessions-titlebar-container .agent-sessions-titlebar-separator {
opacity: 0.5;
flex-shrink: 0;
}

/* Provider label (shown for untitled sessions) */
.command-center .agent-sessions-titlebar-container .agent-sessions-titlebar-provider {
display: flex;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ export class SessionsTitleBarWidget extends BaseActionViewItem {
const icon = this._getActiveSessionIcon();
const repoLabel = this._getRepositoryLabel();
const repoDetailLabel = this._getRepositoryDetailLabel();
const pillLabel = repoLabel ? `${label} \u00B7 ${repoLabel}${repoDetailLabel ? ` (${repoDetailLabel})` : ''}` : label;
const pillLabel = repoLabel ? `${label} ${repoLabel}${repoDetailLabel ? ` (${repoDetailLabel})` : ''}` : label;
// Build a render-state key from all displayed data
const renderState = `${icon?.id ?? ''}|${label}|${repoLabel ?? ''}|${repoDetailLabel ?? ''}`;

Expand Down Expand Up @@ -171,11 +171,6 @@ export class SessionsTitleBarWidget extends BaseActionViewItem {
if (repoLabel) {
const detailsEl = $('span.agent-sessions-titlebar-details');

const separator1 = $('span.agent-sessions-titlebar-separator');
separator1.textContent = '\u00B7';
separator1.setAttribute('aria-hidden', 'true');
detailsEl.appendChild(separator1);

const repoEl = $('span.agent-sessions-titlebar-repo');
repoEl.textContent = repoDetailLabel ? `${repoLabel} (${repoDetailLabel})` : repoLabel;
detailsEl.appendChild(repoEl);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -701,16 +701,6 @@ registerAction2(class MarkSessionAsDoneAction extends Action2 {
icon: Codicon.check,
precondition: ChatContextKeys.requestInProgress.negate(),
menu: [{
id: Menus.CommandCenter,
order: 103,
when: ContextKeyExpr.and(
IsAuxiliaryWindowContext.negate(),
SessionsWelcomeVisibleContext.negate(),
IsNewChatSessionContext.negate(),
IsActiveSessionArchivedContext.negate()
)
},
{
id: MenuId.ChatEditingSessionChangesToolbar,
group: 'navigation',
order: 1,
Expand Down Expand Up @@ -750,7 +740,7 @@ registerAction2(class AddChatAction extends Action2 {
constructor() {
super({
id: 'agentSession.addChat',
title: localize2('addChat', "Add Chat"),
title: localize2('addChat', "New Sub-Session"),
icon: Codicon.plus,
menu: [{
id: Menus.CommandCenter,
Expand Down
Loading