From 6b3f6e678c5e620685691d4d5420e262cad88b83 Mon Sep 17 00:00:00 2001 From: mrleemurray Date: Tue, 24 Mar 2026 17:22:57 +0000 Subject: [PATCH 01/83] Add subtle appear transitions for sidebar and auxiliary parts Co-authored-by: Copilot --- src/vs/sessions/browser/media/style.css | 73 +++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/src/vs/sessions/browser/media/style.css b/src/vs/sessions/browser/media/style.css index 16373c8c63f..a35a9681022 100644 --- a/src/vs/sessions/browser/media/style.css +++ b/src/vs/sessions/browser/media/style.css @@ -139,6 +139,79 @@ flex-shrink: 0; } +/* ---- Part Appear Transitions ---- */ + +/* + * Subtle appear animation when parts transition from display:none → visible + * (via split-view-view .visible class). + * + * Animated properties: opacity, margin, border-color, background, box-shadow. + * Opacity transiently creates a stacking context during the 300ms animation + * only — once settled, opacity is unset so no persistent stacking context + * remains. Margin shifts are purely visual within the grid-allocated space. + */ + +.agent-sessions-workbench .part.sidebar, +.agent-sessions-workbench .part.auxiliarybar, +.agent-sessions-workbench .part.panel, +.agent-sessions-workbench .part.chatbar { + transition: + opacity 250ms ease-out, + margin 250ms ease-out, + border-color 250ms ease-out, + background 250ms ease-out, + box-shadow 250ms ease-out; +} + +@starting-style { + /* Shared starting values */ + .agent-sessions-workbench .part.sidebar, + .agent-sessions-workbench .part.auxiliarybar, + .agent-sessions-workbench .part.panel, + .agent-sessions-workbench .part.chatbar { + opacity: 0; + border-color: transparent; + } + + /* Card parts: blend from surrounding background + brief shadow lift */ + .agent-sessions-workbench .part.auxiliarybar, + .agent-sessions-workbench .part.panel, + .agent-sessions-workbench .part.chatbar { + background: color-mix(in srgb, var(--part-background) 60%, var(--vscode-sideBar-background)); + box-shadow: 0 4px 16px color-mix(in srgb, var(--vscode-widget-shadow, rgba(0, 0, 0, 0.36)) 50%, transparent); + } + + /* Per-part margin shifts — each part settles into its resting margin */ + /* Sidebar (left): slides in from 6px left → margin: 0 */ + .agent-sessions-workbench .part.sidebar { + margin-left: -6px; + } + + /* Panel (bottom): slides down from 6px above → margin: 0 16px 18px 16px */ + .agent-sessions-workbench .part.panel { + margin: 6px 16px 18px 16px; + } + + /* Auxiliary bar (right): slides in from 6px right → margin: 0 16px 2px 0 */ + .agent-sessions-workbench .part.auxiliarybar { + margin: 0 16px 2px 6px; + } + + /* Chat bar (center-bottom): slides down from 6px above → margin: 0 16px 2px 16px */ + .agent-sessions-workbench .part.chatbar { + margin: 6px 16px 2px 16px; + } +} + +@media (prefers-reduced-motion: reduce) { + .agent-sessions-workbench .part.sidebar, + .agent-sessions-workbench .part.auxiliarybar, + .agent-sessions-workbench .part.panel, + .agent-sessions-workbench .part.chatbar { + transition: none; + } +} + /* ---- Widget Customizations ---- */ /* Badge */ From 90e5e74dc8047fd07f287413c0867bf95dd2cf77 Mon Sep 17 00:00:00 2001 From: Lee Murray Date: Tue, 24 Mar 2026 17:10:18 +0000 Subject: [PATCH 02/83] Refactor theme and layout for sidebar, panel, and auxiliary components (#304447) * refactor: update theme colors for sidebar, panel, and auxiliary bar components Co-authored-by: Copilot * refactor: update sidebar and panel styles to remove right borders and adjust colors * refactor: adjust margin values for chatbar, auxiliary bar, and panel components Co-authored-by: Copilot * refactor: adjust layout margins for chatbar, panel, and sidebar components Co-authored-by: Copilot * refactor: update padding for account widget and agent sessions viewer components Co-authored-by: Copilot * refactor: adjust footer margins and add bottom margin for sessions view pane Co-authored-by: Copilot * Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * refactor: remove unused imports in sidebarPart.ts Co-authored-by: Copilot * refactor: update theme colors for sessions components and adjust background properties Co-authored-by: Copilot --------- Co-authored-by: mrleemurray Co-authored-by: Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../lib/stylelint/vscode-known-variables.json | 6 ++++ src/vs/sessions/browser/media/style.css | 23 +++++++++----- .../browser/parts/auxiliaryBarPart.ts | 27 ++++++++-------- src/vs/sessions/browser/parts/chatBarPart.ts | 23 +++++++------- .../browser/parts/media/auxiliaryBarPart.css | 8 +++++ .../browser/parts/media/panelPart.css | 13 ++++++++ .../browser/parts/media/sidebarPart.css | 22 +++++++++++-- src/vs/sessions/browser/parts/panelPart.ts | 28 +++++++++-------- src/vs/sessions/browser/parts/sidebarPart.ts | 28 +++++++++-------- src/vs/sessions/common/theme.ts | 31 +++++++++++++------ .../browser/media/accountWidget.css | 5 +++ .../browser/media/customizationsToolbar.css | 5 +-- .../browser/media/sessionsViewPane.css | 3 +- .../media/agentsessionsviewer.css | 9 ++++++ 14 files changed, 159 insertions(+), 72 deletions(-) diff --git a/build/lib/stylelint/vscode-known-variables.json b/build/lib/stylelint/vscode-known-variables.json index 5b0fc9b6ad5..f0b99e4e493 100644 --- a/build/lib/stylelint/vscode-known-variables.json +++ b/build/lib/stylelint/vscode-known-variables.json @@ -646,6 +646,12 @@ "--vscode-searchEditor-findMatchBorder", "--vscode-searchEditor-textInputBorder", "--vscode-selection-background", + "--vscode-sessionsAuxiliaryBar-background", + "--vscode-sessionsChatBar-background", + "--vscode-sessionsPanel-background", + "--vscode-sessionsSidebar-background", + "--vscode-sessionsSidebarHeader-background", + "--vscode-sessionsSidebarHeader-foreground", "--vscode-sessionsUpdateButton-downloadedBackground", "--vscode-sessionsUpdateButton-downloadingBackground", "--vscode-settings-checkboxBackground", diff --git a/src/vs/sessions/browser/media/style.css b/src/vs/sessions/browser/media/style.css index a35a9681022..1ef1ae82ed4 100644 --- a/src/vs/sessions/browser/media/style.css +++ b/src/vs/sessions/browser/media/style.css @@ -20,35 +20,44 @@ */ .agent-sessions-workbench .part.sidebar { - background: var(--vscode-sideBar-background); - border-right: 1px solid var(--vscode-sideBar-border, transparent); + background: var(--vscode-sessionsSidebar-background); } .agent-sessions-workbench .part.chatbar { - margin: 0 16px 2px 16px; + margin: 0 12px 2px 12px; background: var(--part-background); border: 1px solid var(--part-border-color, transparent); border-radius: 8px; box-sizing: border-box; } +.agent-sessions-workbench:not(.nosidebar) .part.chatbar { + margin-left: 0; +} + .agent-sessions-workbench .part.auxiliarybar { - margin: 0 16px 2px 0; + margin: 0 12px 2px 0; background: var(--part-background); border: 1px solid var(--part-border-color, transparent); border-radius: 8px; + box-sizing: border-box; } .agent-sessions-workbench .part.panel { - margin: 0 16px 18px 16px; + margin: 0 12px 14px 12px; background: var(--part-background); border: 1px solid var(--part-border-color, transparent); border-radius: 8px; + box-sizing: border-box; } -/* Grid background matches the chat bar / sidebar background */ +.agent-sessions-workbench:not(.nosidebar) .part.panel { + margin-left: 0; +} + +/* Grid background matches the sessions sidebar background */ .agent-sessions-workbench > .monaco-grid-view { - background-color: var(--vscode-sideBar-background); + background-color: var(--vscode-sessionsSidebar-background); } /* ---- Chat Layout ---- */ diff --git a/src/vs/sessions/browser/parts/auxiliaryBarPart.ts b/src/vs/sessions/browser/parts/auxiliaryBarPart.ts index fcc12cec6fd..97dad470f20 100644 --- a/src/vs/sessions/browser/parts/auxiliaryBarPart.ts +++ b/src/vs/sessions/browser/parts/auxiliaryBarPart.ts @@ -13,9 +13,9 @@ import { INotificationService } from '../../../platform/notification/common/noti import { IStorageService } from '../../../platform/storage/common/storage.js'; import { IThemeService } from '../../../platform/theme/common/themeService.js'; import { ActiveAuxiliaryContext, AuxiliaryBarFocusContext } from '../../../workbench/common/contextkeys.js'; -import { ACTIVITY_BAR_BADGE_BACKGROUND, ACTIVITY_BAR_BADGE_FOREGROUND, ACTIVITY_BAR_TOP_ACTIVE_BORDER, ACTIVITY_BAR_TOP_DRAG_AND_DROP_BORDER, ACTIVITY_BAR_TOP_FOREGROUND, ACTIVITY_BAR_TOP_INACTIVE_FOREGROUND, PANEL_ACTIVE_TITLE_BORDER, PANEL_ACTIVE_TITLE_FOREGROUND, PANEL_DRAG_AND_DROP_BORDER, PANEL_INACTIVE_TITLE_FOREGROUND, SIDE_BAR_BACKGROUND, SIDE_BAR_TITLE_BORDER, SIDE_BAR_FOREGROUND } from '../../../workbench/common/theme.js'; +import { ACTIVITY_BAR_BADGE_BACKGROUND, ACTIVITY_BAR_BADGE_FOREGROUND, ACTIVITY_BAR_TOP_ACTIVE_BORDER, ACTIVITY_BAR_TOP_DRAG_AND_DROP_BORDER, ACTIVITY_BAR_TOP_FOREGROUND, ACTIVITY_BAR_TOP_INACTIVE_FOREGROUND, PANEL_ACTIVE_TITLE_BORDER, PANEL_ACTIVE_TITLE_FOREGROUND, PANEL_BORDER, PANEL_DRAG_AND_DROP_BORDER, PANEL_INACTIVE_TITLE_FOREGROUND, SIDE_BAR_TITLE_BORDER, SIDE_BAR_FOREGROUND } from '../../../workbench/common/theme.js'; import { contrastBorder } from '../../../platform/theme/common/colorRegistry.js'; -import { sessionsSidebarBorder } from '../../common/theme.js'; +import { sessionsAuxiliaryBarBackground } from '../../common/theme.js'; import { IViewDescriptorService, ViewContainerLocation } from '../../../workbench/common/views.js'; import { IExtensionService } from '../../../workbench/services/extensions/common/extensions.js'; import { IWorkbenchLayoutService, Parts } from '../../../workbench/services/layout/browser/layoutService.js'; @@ -48,9 +48,9 @@ export class AuxiliaryBarPart extends AbstractPaneCompositePart { static readonly viewContainersWorkspaceStateKey = 'workbench.agentsession.auxiliarybar.viewContainersWorkspaceState'; /** Visual margin values for the card-like appearance */ - static readonly MARGIN_TOP = 16; + static readonly MARGIN_TOP = 12; static readonly MARGIN_BOTTOM = 2; - static readonly MARGIN_RIGHT = 16; + static readonly MARGIN_RIGHT = 12; // Action ID for run script - defined here to avoid layering issues private static readonly RUN_SCRIPT_ACTION_ID = 'workbench.action.agentSessions.runScript'; @@ -107,7 +107,7 @@ export class AuxiliaryBarPart extends AbstractPaneCompositePart { { hasTitle: true, trailingSeparator: false, - borderWidth: () => (this.getColor(sessionsSidebarBorder) || this.getColor(contrastBorder)) ? 1 : 0, + borderWidth: () => 0, }, AuxiliaryBarPart.activeViewSettingsKey, ActiveAuxiliaryContext.bindTo(contextKeyService), @@ -142,9 +142,9 @@ export class AuxiliaryBarPart extends AbstractPaneCompositePart { const container = assertReturnsDefined(this.getContainer()); // Store background and border as CSS variables for the card styling on .part - container.style.setProperty('--part-background', this.getColor(SIDE_BAR_BACKGROUND) || ''); - container.style.setProperty('--part-border-color', this.getColor(sessionsSidebarBorder) || this.getColor(contrastBorder) || 'transparent'); - container.style.backgroundColor = 'transparent'; + container.style.setProperty('--part-background', this.getColor(sessionsAuxiliaryBarBackground) || ''); + container.style.setProperty('--part-border-color', this.getColor(PANEL_BORDER) || this.getColor(contrastBorder) || 'transparent'); + container.style.backgroundColor = this.getColor(sessionsAuxiliaryBarBackground) || ''; container.style.color = this.getColor(SIDE_BAR_FOREGROUND) || ''; // Clear borders - the card appearance uses border-radius instead @@ -174,8 +174,8 @@ export class AuxiliaryBarPart extends AbstractPaneCompositePart { iconSize: 16, get overflowActionSize() { return $this.getCompositeBarPosition() === CompositeBarPosition.TITLE ? 40 : 30; }, colors: theme => ({ - activeBackgroundColor: theme.getColor(SIDE_BAR_BACKGROUND), - inactiveBackgroundColor: theme.getColor(SIDE_BAR_BACKGROUND), + activeBackgroundColor: theme.getColor(sessionsAuxiliaryBarBackground), + inactiveBackgroundColor: theme.getColor(sessionsAuxiliaryBarBackground), get activeBorderBottomColor() { return $this.getCompositeBarPosition() === CompositeBarPosition.TITLE ? theme.getColor(PANEL_ACTIVE_TITLE_BORDER) : theme.getColor(ACTIVITY_BAR_TOP_ACTIVE_BORDER); }, get activeForegroundColor() { return $this.getCompositeBarPosition() === CompositeBarPosition.TITLE ? theme.getColor(PANEL_ACTIVE_TITLE_FOREGROUND) : theme.getColor(ACTIVITY_BAR_TOP_FOREGROUND); }, get inactiveForegroundColor() { return $this.getCompositeBarPosition() === CompositeBarPosition.TITLE ? theme.getColor(PANEL_INACTIVE_TITLE_FOREGROUND) : theme.getColor(ACTIVITY_BAR_TOP_INACTIVE_FOREGROUND); }, @@ -262,10 +262,11 @@ export class AuxiliaryBarPart extends AbstractPaneCompositePart { return; } - // Layout content with reduced dimensions to account for visual margins + // Layout content with reduced dimensions to account for visual margins and border + const borderTotal = 2; // 1px border on each side super.layout( - width - AuxiliaryBarPart.MARGIN_RIGHT, - height - AuxiliaryBarPart.MARGIN_TOP - AuxiliaryBarPart.MARGIN_BOTTOM, + width - AuxiliaryBarPart.MARGIN_RIGHT - borderTotal, + height - AuxiliaryBarPart.MARGIN_TOP - AuxiliaryBarPart.MARGIN_BOTTOM - borderTotal, top, left ); diff --git a/src/vs/sessions/browser/parts/chatBarPart.ts b/src/vs/sessions/browser/parts/chatBarPart.ts index b0689af96ed..35ae014de3d 100644 --- a/src/vs/sessions/browser/parts/chatBarPart.ts +++ b/src/vs/sessions/browser/parts/chatBarPart.ts @@ -11,9 +11,9 @@ import { IKeybindingService } from '../../../platform/keybinding/common/keybindi import { INotificationService } from '../../../platform/notification/common/notification.js'; import { IStorageService } from '../../../platform/storage/common/storage.js'; import { IThemeService } from '../../../platform/theme/common/themeService.js'; -import { ACTIVITY_BAR_BADGE_BACKGROUND, ACTIVITY_BAR_BADGE_FOREGROUND, PANEL_ACTIVE_TITLE_BORDER, PANEL_ACTIVE_TITLE_FOREGROUND, PANEL_DRAG_AND_DROP_BORDER, PANEL_INACTIVE_TITLE_FOREGROUND, SIDE_BAR_BACKGROUND, SIDE_BAR_TITLE_BORDER, SIDE_BAR_FOREGROUND } from '../../../workbench/common/theme.js'; +import { ACTIVITY_BAR_BADGE_BACKGROUND, ACTIVITY_BAR_BADGE_FOREGROUND, PANEL_ACTIVE_TITLE_BORDER, PANEL_ACTIVE_TITLE_FOREGROUND, PANEL_BORDER, PANEL_DRAG_AND_DROP_BORDER, PANEL_INACTIVE_TITLE_FOREGROUND, SIDE_BAR_TITLE_BORDER, SIDE_BAR_FOREGROUND } from '../../../workbench/common/theme.js'; import { contrastBorder } from '../../../platform/theme/common/colorRegistry.js'; -import { sessionsSidebarBorder } from '../../common/theme.js'; +import { sessionsChatBarBackground } from '../../common/theme.js'; import { IViewDescriptorService, ViewContainerLocation } from '../../../workbench/common/views.js'; import { IExtensionService } from '../../../workbench/services/extensions/common/extensions.js'; import { IWorkbenchLayoutService, Parts } from '../../../workbench/services/layout/browser/layoutService.js'; @@ -43,9 +43,9 @@ export class ChatBarPart extends AbstractPaneCompositePart { override readonly maximumHeight: number = Number.POSITIVE_INFINITY; /** Visual margin values for the card-like appearance */ - static readonly MARGIN_TOP = 16; - static readonly MARGIN_LEFT = 16; - static readonly MARGIN_RIGHT = 16; + static readonly MARGIN_TOP = 12; + static readonly MARGIN_LEFT = 12; + static readonly MARGIN_RIGHT = 12; static readonly MARGIN_BOTTOM = 2; /** Border width on the card (1px each side) */ @@ -110,9 +110,9 @@ export class ChatBarPart extends AbstractPaneCompositePart { const container = assertReturnsDefined(this.getContainer()); // Store background and border as CSS variables for the card styling on .part - container.style.setProperty('--part-background', this.getColor(SIDE_BAR_BACKGROUND) || ''); - container.style.setProperty('--part-border-color', this.getColor(sessionsSidebarBorder) || this.getColor(contrastBorder) || 'transparent'); - container.style.backgroundColor = 'transparent'; + container.style.setProperty('--part-background', this.getColor(sessionsChatBarBackground) || ''); + container.style.setProperty('--part-border-color', this.getColor(PANEL_BORDER) || this.getColor(contrastBorder) || 'transparent'); + container.style.backgroundColor = this.getColor(sessionsChatBarBackground) || ''; container.style.color = this.getColor(SIDE_BAR_FOREGROUND) || ''; } @@ -123,8 +123,9 @@ export class ChatBarPart extends AbstractPaneCompositePart { // Layout content with reduced dimensions to account for visual margins and border const borderTotal = ChatBarPart.BORDER_WIDTH * 2; + const marginLeft = this.layoutService.isVisible(Parts.SIDEBAR_PART) ? 0 : ChatBarPart.MARGIN_LEFT; super.layout( - width - ChatBarPart.MARGIN_LEFT - ChatBarPart.MARGIN_RIGHT - borderTotal, + width - marginLeft - ChatBarPart.MARGIN_RIGHT - borderTotal, height - ChatBarPart.MARGIN_TOP - ChatBarPart.MARGIN_BOTTOM - borderTotal, top, left ); @@ -150,8 +151,8 @@ export class ChatBarPart extends AbstractPaneCompositePart { iconSize: 16, overflowActionSize: 30, colors: theme => ({ - activeBackgroundColor: theme.getColor(SIDE_BAR_BACKGROUND), - inactiveBackgroundColor: theme.getColor(SIDE_BAR_BACKGROUND), + activeBackgroundColor: theme.getColor(sessionsChatBarBackground), + inactiveBackgroundColor: theme.getColor(sessionsChatBarBackground), activeBorderBottomColor: theme.getColor(PANEL_ACTIVE_TITLE_BORDER), activeForegroundColor: theme.getColor(PANEL_ACTIVE_TITLE_FOREGROUND), inactiveForegroundColor: theme.getColor(PANEL_INACTIVE_TITLE_FOREGROUND), diff --git a/src/vs/sessions/browser/parts/media/auxiliaryBarPart.css b/src/vs/sessions/browser/parts/media/auxiliaryBarPart.css index e7399a2f851..d3802d00b10 100644 --- a/src/vs/sessions/browser/parts/media/auxiliaryBarPart.css +++ b/src/vs/sessions/browser/parts/media/auxiliaryBarPart.css @@ -28,6 +28,7 @@ .agent-sessions-workbench .part.auxiliarybar > .title { padding-left: 4px; padding-right: 2px; + background-color: var(--vscode-sessionsAuxiliaryBar-background); } /* Hide the underline indicator entirely */ @@ -40,3 +41,10 @@ background-color: var(--vscode-activityBarTop-activeBackground, color-mix(in srgb, var(--vscode-sideBarTitle-foreground) 5%, transparent)) !important; border-radius: 4px; } + +/* Override base workbench monaco editor background in auxiliary bar content */ +.agent-sessions-workbench .part.auxiliarybar > .content .monaco-editor, +.agent-sessions-workbench .part.auxiliarybar > .content .monaco-editor .margin, +.agent-sessions-workbench .part.auxiliarybar > .content .monaco-editor .monaco-editor-background { + background-color: var(--vscode-sessionsAuxiliaryBar-background); +} diff --git a/src/vs/sessions/browser/parts/media/panelPart.css b/src/vs/sessions/browser/parts/media/panelPart.css index 552f93966fb..7156bcb1d91 100644 --- a/src/vs/sessions/browser/parts/media/panelPart.css +++ b/src/vs/sessions/browser/parts/media/panelPart.css @@ -23,6 +23,7 @@ .agent-sessions-workbench .part.panel > .title { padding-left: 6px; padding-right: 6px; + background-color: var(--vscode-sessionsPanel-background); } /* Active/checked state: background container instead of underline */ @@ -30,3 +31,15 @@ background-color: var(--vscode-activityBarTop-activeBackground, color-mix(in srgb, var(--vscode-sideBarTitle-foreground) 5%, transparent)) !important; border-radius: 4px; } + +/* Override base workbench panel content background for terminal */ +.agent-sessions-workbench .part.panel > .content .monaco-editor, +.agent-sessions-workbench .part.panel > .content .monaco-editor .margin, +.agent-sessions-workbench .part.panel > .content .monaco-editor .monaco-editor-background { + background-color: var(--vscode-sessionsPanel-background); +} + +/* Terminal body background */ +.agent-sessions-workbench .part.panel .terminal-wrapper { + background-color: var(--vscode-sessionsPanel-background); +} diff --git a/src/vs/sessions/browser/parts/media/sidebarPart.css b/src/vs/sessions/browser/parts/media/sidebarPart.css index 1b68c782f84..bc92b2b424e 100644 --- a/src/vs/sessions/browser/parts/media/sidebarPart.css +++ b/src/vs/sessions/browser/parts/media/sidebarPart.css @@ -30,15 +30,31 @@ } /* Sidebar Footer Container */ -.monaco-workbench .part.sidebar > .sidebar-footer { +.agent-sessions-workbench .part.sidebar > .sidebar-footer { display: flex; align-items: stretch; gap: 4px; - padding: 6px; - border-top: 1px solid var(--vscode-sideBarSectionHeader-border, transparent); + padding: 6px 0; + border-top: 1px solid var(--vscode-panel-border, transparent); + margin: 0 12px 12px 12px; flex-shrink: 0; } +/* Inset pane section header borders — hide inline border-top, replace with inset pseudo-element */ +.agent-sessions-workbench .part.sidebar .pane > .pane-header { + border-top-color: transparent !important; +} + +.agent-sessions-workbench .part.sidebar .split-view-view:not(:first-of-type) > .pane > .pane-header::before { + content: ''; + position: absolute; + top: 0; + left: 12px; + right: 0; + height: 1px; + background-color: var(--vscode-panel-border, transparent); +} + /* Make the toolbar fill the footer width and stack actions vertically */ .monaco-workbench .part.sidebar > .sidebar-footer .monaco-toolbar, .monaco-workbench .part.sidebar > .sidebar-footer .monaco-action-bar, diff --git a/src/vs/sessions/browser/parts/panelPart.ts b/src/vs/sessions/browser/parts/panelPart.ts index 1413af2585f..cc1f700ba01 100644 --- a/src/vs/sessions/browser/parts/panelPart.ts +++ b/src/vs/sessions/browser/parts/panelPart.ts @@ -14,9 +14,9 @@ import { IContextMenuService } from '../../../platform/contextview/browser/conte import { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js'; import { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js'; import { IThemeService } from '../../../platform/theme/common/themeService.js'; -import { PANEL_BACKGROUND, PANEL_TITLE_BORDER, PANEL_ACTIVE_TITLE_FOREGROUND, PANEL_INACTIVE_TITLE_FOREGROUND, PANEL_ACTIVE_TITLE_BORDER, PANEL_DRAG_AND_DROP_BORDER, PANEL_TITLE_BADGE_BACKGROUND, PANEL_TITLE_BADGE_FOREGROUND } from '../../../workbench/common/theme.js'; +import { PANEL_BORDER, PANEL_TITLE_BORDER, PANEL_ACTIVE_TITLE_FOREGROUND, PANEL_INACTIVE_TITLE_FOREGROUND, PANEL_ACTIVE_TITLE_BORDER, PANEL_DRAG_AND_DROP_BORDER, PANEL_TITLE_BADGE_BACKGROUND, PANEL_TITLE_BADGE_FOREGROUND } from '../../../workbench/common/theme.js'; import { contrastBorder } from '../../../platform/theme/common/colorRegistry.js'; -import { sessionsSidebarBorder } from '../../common/theme.js'; +import { sessionsPanelBackground } from '../../common/theme.js'; import { INotificationService } from '../../../platform/notification/common/notification.js'; import { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js'; import { assertReturnsDefined } from '../../../base/common/types.js'; @@ -69,9 +69,9 @@ export class PanelPart extends AbstractPaneCompositePart { static readonly activePanelSettingsKey = 'workbench.agentsession.panelpart.activepanelid'; /** Visual margin values for the card-like appearance */ - static readonly MARGIN_BOTTOM = 18; - static readonly MARGIN_LEFT = 16; - static readonly MARGIN_RIGHT = 16; + static readonly MARGIN_BOTTOM = 14; + static readonly MARGIN_LEFT = 12; + static readonly MARGIN_RIGHT = 12; constructor( @INotificationService notificationService: INotificationService, @@ -129,9 +129,9 @@ export class PanelPart extends AbstractPaneCompositePart { const container = assertReturnsDefined(this.getContainer()); // Store background and border as CSS variables for the card styling on .part - container.style.setProperty('--part-background', this.getColor(PANEL_BACKGROUND) || ''); - container.style.setProperty('--part-border-color', this.getColor(sessionsSidebarBorder) || this.getColor(contrastBorder) || 'transparent'); - container.style.backgroundColor = 'transparent'; + container.style.setProperty('--part-background', this.getColor(sessionsPanelBackground) || ''); + container.style.setProperty('--part-border-color', this.getColor(PANEL_BORDER) || this.getColor(contrastBorder) || 'transparent'); + container.style.backgroundColor = this.getColor(sessionsPanelBackground) || ''; // Clear inline borders - the card appearance uses CSS border-radius instead container.style.borderTopColor = ''; @@ -157,8 +157,8 @@ export class PanelPart extends AbstractPaneCompositePart { compact: true, overflowActionSize: 44, colors: theme => ({ - activeBackgroundColor: theme.getColor(PANEL_BACKGROUND), - inactiveBackgroundColor: theme.getColor(PANEL_BACKGROUND), + activeBackgroundColor: theme.getColor(sessionsPanelBackground), + inactiveBackgroundColor: theme.getColor(sessionsPanelBackground), activeBorderBottomColor: theme.getColor(PANEL_ACTIVE_TITLE_BORDER), activeForegroundColor: theme.getColor(PANEL_ACTIVE_TITLE_FOREGROUND), inactiveForegroundColor: theme.getColor(PANEL_INACTIVE_TITLE_FOREGROUND), @@ -176,10 +176,12 @@ export class PanelPart extends AbstractPaneCompositePart { return; } - // Layout content with reduced dimensions to account for visual margins + // Layout content with reduced dimensions to account for visual margins and border + const borderTotal = 2; // 1px border on each side + const marginLeft = this.layoutService.isVisible(Parts.SIDEBAR_PART) ? 0 : PanelPart.MARGIN_LEFT; super.layout( - width - PanelPart.MARGIN_LEFT - PanelPart.MARGIN_RIGHT, - height - PanelPart.MARGIN_BOTTOM, + width - marginLeft - PanelPart.MARGIN_RIGHT - borderTotal, + height - PanelPart.MARGIN_BOTTOM - borderTotal, top, left ); diff --git a/src/vs/sessions/browser/parts/sidebarPart.ts b/src/vs/sessions/browser/parts/sidebarPart.ts index 2b03d46e25e..cca74c97a11 100644 --- a/src/vs/sessions/browser/parts/sidebarPart.ts +++ b/src/vs/sessions/browser/parts/sidebarPart.ts @@ -12,9 +12,8 @@ import { IContextMenuService } from '../../../platform/contextview/browser/conte import { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js'; import { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js'; import { IThemeService } from '../../../platform/theme/common/themeService.js'; -import { SIDE_BAR_TITLE_FOREGROUND, SIDE_BAR_TITLE_BORDER, SIDE_BAR_BACKGROUND, SIDE_BAR_FOREGROUND, SIDE_BAR_DRAG_AND_DROP_BACKGROUND, ACTIVITY_BAR_BADGE_BACKGROUND, ACTIVITY_BAR_BADGE_FOREGROUND, ACTIVITY_BAR_TOP_FOREGROUND, ACTIVITY_BAR_TOP_ACTIVE_BORDER, ACTIVITY_BAR_TOP_INACTIVE_FOREGROUND, ACTIVITY_BAR_TOP_DRAG_AND_DROP_BORDER } from '../../../workbench/common/theme.js'; -import { contrastBorder } from '../../../platform/theme/common/colorRegistry.js'; -import { sessionsSidebarBorder, sessionsSidebarHeaderBackground, sessionsSidebarHeaderForeground } from '../../common/theme.js'; +import { SIDE_BAR_TITLE_FOREGROUND, SIDE_BAR_TITLE_BORDER, SIDE_BAR_FOREGROUND, SIDE_BAR_DRAG_AND_DROP_BACKGROUND, ACTIVITY_BAR_BADGE_BACKGROUND, ACTIVITY_BAR_BADGE_FOREGROUND, ACTIVITY_BAR_TOP_FOREGROUND, ACTIVITY_BAR_TOP_ACTIVE_BORDER, ACTIVITY_BAR_TOP_INACTIVE_FOREGROUND, ACTIVITY_BAR_TOP_DRAG_AND_DROP_BORDER } from '../../../workbench/common/theme.js'; +import { sessionsSidebarBackground, sessionsSidebarHeaderBackground, sessionsSidebarHeaderForeground } from '../../common/theme.js'; import { INotificationService } from '../../../platform/notification/common/notification.js'; import { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js'; import { AnchorAlignment } from '../../../base/browser/ui/contextview/contextview.js'; @@ -65,6 +64,8 @@ export class SidebarPart extends AbstractPaneCompositePart { private static readonly FOOTER_ITEM_HEIGHT = 26; private static readonly FOOTER_ITEM_GAP = 4; private static readonly FOOTER_VERTICAL_PADDING = 6; + private static readonly FOOTER_BOTTOM_MARGIN = 12; + private static readonly FOOTER_BORDER_TOP = 1; private footerContainer: HTMLElement | undefined; private sideBarTitleArea: HTMLElement | undefined; @@ -115,7 +116,7 @@ export class SidebarPart extends AbstractPaneCompositePart { ) { super( Parts.SIDEBAR_PART, - { hasTitle: true, trailingSeparator: false, borderWidth: () => (this.getColor(sessionsSidebarBorder) || this.getColor(contrastBorder)) ? 1 : 0 }, + { hasTitle: true, trailingSeparator: false, borderWidth: () => 0 }, SidebarPart.activeViewletSettingsKey, ActiveViewletContext.bindTo(contextKeyService), SidebarFocusContext.bindTo(contextKeyService), @@ -257,7 +258,9 @@ export class SidebarPart extends AbstractPaneCompositePart { return SidebarPart.FOOTER_VERTICAL_PADDING * 2 + (actionCount * SidebarPart.FOOTER_ITEM_HEIGHT) - + ((actionCount - 1) * SidebarPart.FOOTER_ITEM_GAP); + + ((actionCount - 1) * SidebarPart.FOOTER_ITEM_GAP) + + SidebarPart.FOOTER_BOTTOM_MARGIN + + SidebarPart.FOOTER_BORDER_TOP; } private updateFooterVisibility(): void { @@ -274,15 +277,14 @@ export class SidebarPart extends AbstractPaneCompositePart { const container = assertReturnsDefined(this.getContainer()); - container.style.backgroundColor = this.getColor(SIDE_BAR_BACKGROUND) || ''; + container.style.backgroundColor = this.getColor(sessionsSidebarBackground) || ''; container.style.color = this.getColor(SIDE_BAR_FOREGROUND) || ''; container.style.outlineColor = this.getColor(SIDE_BAR_DRAG_AND_DROP_BACKGROUND) ?? ''; - // Right border to separate from the right section - const borderColor = this.getColor(sessionsSidebarBorder) || this.getColor(contrastBorder) || ''; - container.style.borderRightWidth = borderColor ? '1px' : ''; - container.style.borderRightStyle = borderColor ? 'solid' : ''; - container.style.borderRightColor = borderColor; + // No right border in sessions sidebar + container.style.borderRightWidth = ''; + container.style.borderRightStyle = ''; + container.style.borderRightColor = ''; // Title area uses sessions-specific header colors if (this.sideBarTitleArea) { @@ -349,8 +351,8 @@ export class SidebarPart extends AbstractPaneCompositePart { iconSize: 16, overflowActionSize: 30, colors: theme => ({ - activeBackgroundColor: theme.getColor(SIDE_BAR_BACKGROUND), - inactiveBackgroundColor: theme.getColor(SIDE_BAR_BACKGROUND), + activeBackgroundColor: theme.getColor(sessionsSidebarBackground), + inactiveBackgroundColor: theme.getColor(sessionsSidebarBackground), activeBorderBottomColor: theme.getColor(ACTIVITY_BAR_TOP_ACTIVE_BORDER), activeForegroundColor: theme.getColor(ACTIVITY_BAR_TOP_FOREGROUND), inactiveForegroundColor: theme.getColor(ACTIVITY_BAR_TOP_INACTIVE_FOREGROUND), diff --git a/src/vs/sessions/common/theme.ts b/src/vs/sessions/common/theme.ts index 1f97fa316a1..2217701d347 100644 --- a/src/vs/sessions/common/theme.ts +++ b/src/vs/sessions/common/theme.ts @@ -6,7 +6,6 @@ import { localize } from '../../nls.js'; import { getColorRegistry, registerColor, transparent } from '../../platform/theme/common/colorUtils.js'; import { contrastBorder, iconForeground } from '../../platform/theme/common/colorRegistry.js'; -import { Color } from '../../base/common/color.js'; import { buttonBackground } from '../../platform/theme/common/colors/inputColors.js'; import { editorBackground } from '../../platform/theme/common/colors/editorColors.js'; import { PANEL_BACKGROUND, SIDE_BAR_BACKGROUND, SIDE_BAR_FOREGROUND } from '../../workbench/common/theme.js'; @@ -14,21 +13,35 @@ import { PANEL_BACKGROUND, SIDE_BAR_BACKGROUND, SIDE_BAR_FOREGROUND } from '../. // Sessions sidebar background color export const sessionsSidebarBackground = registerColor( 'sessionsSidebar.background', - SIDE_BAR_BACKGROUND, + editorBackground, localize('sessionsSidebar.background', 'Background color of the sidebar view in the agent sessions window.') ); -// Sessions sidebar border color -export const sessionsSidebarBorder = registerColor( - 'sessionsSidebar.border', - { dark: Color.fromHex('#808080').transparent(0.35), light: Color.fromHex('#808080').transparent(0.35), hcDark: contrastBorder, hcLight: contrastBorder }, - localize('sessionsSidebar.border', 'Border color of the sidebar in the agent sessions window.') +// Sessions auxiliary bar background color +export const sessionsAuxiliaryBarBackground = registerColor( + 'sessionsAuxiliaryBar.background', + SIDE_BAR_BACKGROUND, + localize('sessionsAuxiliaryBar.background', 'Background color of the auxiliary bar in the agent sessions window.') +); + +// Sessions panel background color +export const sessionsPanelBackground = registerColor( + 'sessionsPanel.background', + SIDE_BAR_BACKGROUND, + localize('sessionsPanel.background', 'Background color of the panel in the agent sessions window.') +); + +// Sessions chat bar background color +export const sessionsChatBarBackground = registerColor( + 'sessionsChatBar.background', + SIDE_BAR_BACKGROUND, + localize('sessionsChatBar.background', 'Background color of the chat bar in the agent sessions window.') ); // Sessions sidebar header colors export const sessionsSidebarHeaderBackground = registerColor( 'sessionsSidebarHeader.background', - SIDE_BAR_BACKGROUND, + sessionsSidebarBackground, localize('sessionsSidebarHeader.background', 'Background color of the sidebar header area in the agent sessions window.') ); @@ -41,7 +54,7 @@ export const sessionsSidebarHeaderForeground = registerColor( // Chat bar title colors export const chatBarTitleBackground = registerColor( 'chatBarTitle.background', - SIDE_BAR_BACKGROUND, + sessionsSidebarBackground, localize('chatBarTitle.background', 'Background color of the chat bar title area in the agent sessions window.') ); diff --git a/src/vs/sessions/contrib/accountMenu/browser/media/accountWidget.css b/src/vs/sessions/contrib/accountMenu/browser/media/accountWidget.css index 3d65db075b8..540db578943 100644 --- a/src/vs/sessions/contrib/accountMenu/browser/media/accountWidget.css +++ b/src/vs/sessions/contrib/accountMenu/browser/media/accountWidget.css @@ -19,6 +19,11 @@ min-width: 0; } +/* Hide the default action-label rendered by the toolbar — the account widget provides its own button */ +.account-widget > .action-label { + display: none; +} + /* Account Button */ .monaco-workbench .part.sidebar > .sidebar-footer .account-widget-account { overflow: hidden; diff --git a/src/vs/sessions/contrib/sessions/browser/media/customizationsToolbar.css b/src/vs/sessions/contrib/sessions/browser/media/customizationsToolbar.css index 3221e599174..5525dc5a758 100644 --- a/src/vs/sessions/contrib/sessions/browser/media/customizationsToolbar.css +++ b/src/vs/sessions/contrib/sessions/browser/media/customizationsToolbar.css @@ -7,8 +7,9 @@ display: flex; flex-direction: column; flex-shrink: 0; - border-top: 1px solid var(--vscode-widget-border); - padding: 6px; + border-top: 1px solid var(--vscode-panel-border, transparent); + margin: 0 12px; + padding: 6px 0; } /* Make the toolbar, action bar, and items fill full width and stack vertically */ diff --git a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewPane.css b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewPane.css index 4c96289ccb3..d0d590f70e1 100644 --- a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewPane.css +++ b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewPane.css @@ -40,6 +40,7 @@ flex: 1; overflow: hidden; min-height: 0; + margin-bottom: 12px; } .agent-sessions-header { @@ -73,7 +74,7 @@ } .agent-sessions-new-button-container { - padding: 6px 12px 8px 12px; + padding: 8px 12px; } .agent-sessions-new-button-container .monaco-button { diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css b/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css index f52fe9f03c4..abede3ddf4b 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css @@ -13,6 +13,15 @@ padding: 0 6px; } + .agent-sessions-workbench .pane-body & .monaco-scrollable-element { + padding: 0 12px; + } + + .agent-sessions-workbench .pane-body & .monaco-tree-sticky-container { + left: 12px; + width: calc(100% - 24px); + } + .monaco-list-row { border-radius: 6px; } From 3b679fd23d603840cd9dfb3e1fac7abafb4ee6c1 Mon Sep 17 00:00:00 2001 From: mrleemurray Date: Tue, 24 Mar 2026 17:43:01 +0000 Subject: [PATCH 03/83] Add transition effects for sidebar and auxiliary components Co-authored-by: Copilot --- src/vs/sessions/browser/media/style.css | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/vs/sessions/browser/media/style.css b/src/vs/sessions/browser/media/style.css index 1ef1ae82ed4..896581e394e 100644 --- a/src/vs/sessions/browser/media/style.css +++ b/src/vs/sessions/browser/media/style.css @@ -164,6 +164,19 @@ .agent-sessions-workbench .part.auxiliarybar, .agent-sessions-workbench .part.panel, .agent-sessions-workbench .part.chatbar { + transition: + opacity 250ms ease-out, + margin-top 250ms ease-out, + margin-right 250ms ease-out, + margin-bottom 250ms ease-out, + border-color 250ms ease-out, + background 250ms ease-out, + box-shadow 250ms ease-out; +} + +/* Sidebar & auxiliary bar also transition margin-left */ +.agent-sessions-workbench .part.sidebar, +.agent-sessions-workbench .part.auxiliarybar { transition: opacity 250ms ease-out, margin 250ms ease-out, From 58ddf8515281f4905ec0a0aaccdca503c20328b2 Mon Sep 17 00:00:00 2001 From: Lee Murray Date: Tue, 24 Mar 2026 17:44:01 +0000 Subject: [PATCH 04/83] Update src/vs/sessions/browser/media/style.css Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/vs/sessions/browser/media/style.css | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/vs/sessions/browser/media/style.css b/src/vs/sessions/browser/media/style.css index 896581e394e..8a1009c859d 100644 --- a/src/vs/sessions/browser/media/style.css +++ b/src/vs/sessions/browser/media/style.css @@ -155,9 +155,10 @@ * (via split-view-view .visible class). * * Animated properties: opacity, margin, border-color, background, box-shadow. - * Opacity transiently creates a stacking context during the 300ms animation - * only — once settled, opacity is unset so no persistent stacking context - * remains. Margin shifts are purely visual within the grid-allocated space. + * Opacity transiently creates a stacking context while it animates from 0 to 1 + * over 250ms — once settled at opacity: 1, no additional stacking context is + * introduced by this animation. Margin shifts are purely visual within the + * grid-allocated space. */ .agent-sessions-workbench .part.sidebar, From 34f07d4425f9125d766dafcd1e2d185242215559 Mon Sep 17 00:00:00 2001 From: Lee Murray Date: Tue, 24 Mar 2026 17:44:15 +0000 Subject: [PATCH 05/83] Update src/vs/sessions/browser/media/style.css Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/vs/sessions/browser/media/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/sessions/browser/media/style.css b/src/vs/sessions/browser/media/style.css index 8a1009c859d..1c7da6946bd 100644 --- a/src/vs/sessions/browser/media/style.css +++ b/src/vs/sessions/browser/media/style.css @@ -220,7 +220,7 @@ margin: 0 16px 2px 6px; } - /* Chat bar (center-bottom): slides down from 6px above → margin: 0 16px 2px 16px */ + /* Chat bar (center-bottom): slides up from 6px below → margin: 0 16px 2px 16px */ .agent-sessions-workbench .part.chatbar { margin: 6px 16px 2px 16px; } From be51e1fd8f65c5b5fbdb057eb42764896dee75ac Mon Sep 17 00:00:00 2001 From: Paul Date: Tue, 24 Mar 2026 12:30:32 -0700 Subject: [PATCH 06/83] Fix subagent hook (#304543) --- .../contrib/chat/common/tools/builtinTools/runSubagentTool.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/chat/common/tools/builtinTools/runSubagentTool.ts b/src/vs/workbench/contrib/chat/common/tools/builtinTools/runSubagentTool.ts index af4de401d07..b74009f4a7d 100644 --- a/src/vs/workbench/contrib/chat/common/tools/builtinTools/runSubagentTool.ts +++ b/src/vs/workbench/contrib/chat/common/tools/builtinTools/runSubagentTool.ts @@ -319,7 +319,7 @@ export class RunSubagentTool extends Disposable implements IToolImpl { modeInstructions, parentRequestId: invocation.chatRequestId, hooks: collectedHooks, - hasHooksEnabled: !!collectedHooks && Object.values(collectedHooks).some(arr => arr.length > 0), + hasHooksEnabled: !!collectedHooks && Object.values(collectedHooks).some(arr => arr && arr.length > 0), }; // Subscribe to tool invocations to clear markdown parts when a tool is invoked From fad70f3f7746a9293313002af2fc78d0fe7dce65 Mon Sep 17 00:00:00 2001 From: Megan Rogge Date: Tue, 24 Mar 2026 15:37:01 -0400 Subject: [PATCH 07/83] set chat tips to true, always elevate AI profiles (#304553) --- .vscode/tasks.json | 13 ++++++++++++- src/vs/platform/terminal/common/terminal.ts | 1 - .../contrib/chat/browser/chat.contribution.ts | 6 +----- .../contrib/terminal/browser/terminalEditor.ts | 6 ++---- .../contrib/terminal/browser/terminalMenus.ts | 12 +++--------- .../contrib/terminal/browser/terminalView.ts | 11 ++--------- .../terminal/common/terminalConfiguration.ts | 9 --------- 7 files changed, 20 insertions(+), 38 deletions(-) diff --git a/.vscode/tasks.json b/.vscode/tasks.json index ee5f360bdb8..d8265a6040a 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -425,6 +425,17 @@ "runOptions": { "runOn": "worktreeCreated" } + }, + { + "label": "Echo E2E Status", + "type": "shell", + "command": "pwsh", + "args": [ + "-NoProfile", + "-Command", + "Write-Output \"134 passed, 0 failed, 1 skipped, 135 total\"; Start-Sleep -Seconds 2; Write-Output \"[PASS] E2E Tests\"; Write-Output \"Watching for changes...\"" + ], + "isBackground": false } ] -} +} \ No newline at end of file diff --git a/src/vs/platform/terminal/common/terminal.ts b/src/vs/platform/terminal/common/terminal.ts index 44e53e09a64..dc7c596c346 100644 --- a/src/vs/platform/terminal/common/terminal.ts +++ b/src/vs/platform/terminal/common/terminal.ts @@ -122,7 +122,6 @@ export const enum TerminalSettingId { FontLigaturesFallbackLigatures = 'terminal.integrated.fontLigatures.fallbackLigatures', EnableKittyKeyboardProtocol = 'terminal.integrated.enableKittyKeyboardProtocol', EnableWin32InputMode = 'terminal.integrated.enableWin32InputMode', - ExperimentalAiProfileGrouping = 'terminal.integrated.experimental.aiProfileGrouping', AllowInUntrustedWorkspace = 'terminal.integrated.allowInUntrustedWorkspace', // Developer/debug settings diff --git a/src/vs/workbench/contrib/chat/browser/chat.contribution.ts b/src/vs/workbench/contrib/chat/browser/chat.contribution.ts index 044678a421a..4304591308d 100644 --- a/src/vs/workbench/contrib/chat/browser/chat.contribution.ts +++ b/src/vs/workbench/contrib/chat/browser/chat.contribution.ts @@ -323,11 +323,7 @@ configurationRegistry.registerConfiguration({ type: 'boolean', scope: ConfigurationScope.APPLICATION, description: nls.localize('chat.tips.enabled', "Controls whether tips are shown above user messages in chat. New tips are added frequently, so this is a helpful way to stay up to date with the latest features."), - default: false, - tags: ['experimental'], - experiment: { - mode: 'auto' - } + default: true, }, 'chat.upvoteAnimation': { type: 'string', diff --git a/src/vs/workbench/contrib/terminal/browser/terminalEditor.ts b/src/vs/workbench/contrib/terminal/browser/terminalEditor.ts index b158684ae0e..8b40d469375 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalEditor.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalEditor.ts @@ -13,7 +13,6 @@ import { IContextKeyService } from '../../../../platform/contextkey/common/conte import { IContextMenuService } from '../../../../platform/contextview/browser/contextView.js'; import { IEditorOptions } from '../../../../platform/editor/common/editor.js'; import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js'; -import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js'; import { IStorageService } from '../../../../platform/storage/common/storage.js'; import { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js'; import { IThemeService } from '../../../../platform/theme/common/themeService.js'; @@ -61,7 +60,6 @@ export class TerminalEditor extends EditorPane { @ITerminalProfileResolverService private readonly _terminalProfileResolverService: ITerminalProfileResolverService, @ITerminalService private readonly _terminalService: ITerminalService, @ITerminalConfigurationService private readonly _terminalConfigurationService: ITerminalConfigurationService, - @IConfigurationService private readonly _configurationService: IConfigurationService, @IContextKeyService contextKeyService: IContextKeyService, @IMenuService menuService: IMenuService, @IInstantiationService private readonly _instantiationService: IInstantiationService, @@ -158,7 +156,7 @@ export class TerminalEditor extends EditorPane { private _updateTabActionBar(profiles: ITerminalProfile[]): void { this._disposableStore.clear(); - const actions = getTerminalActionBarArgs(TerminalLocation.Editor, profiles, this._getDefaultProfileName(), this._terminalProfileService.contributedProfiles, this._terminalService, this._dropdownMenu, this._disposableStore, this._configurationService); + const actions = getTerminalActionBarArgs(TerminalLocation.Editor, profiles, this._getDefaultProfileName(), this._terminalProfileService.contributedProfiles, this._terminalService, this._dropdownMenu, this._disposableStore); this._newDropdown.value?.update(actions.dropdownAction, actions.dropdownMenuActions); } @@ -182,7 +180,7 @@ export class TerminalEditor extends EditorPane { if (action instanceof MenuItemAction) { const location = { viewColumn: ACTIVE_GROUP }; this._disposableStore.clear(); - const actions = getTerminalActionBarArgs(location, this._terminalProfileService.availableProfiles, this._getDefaultProfileName(), this._terminalProfileService.contributedProfiles, this._terminalService, this._dropdownMenu, this._disposableStore, this._configurationService); + const actions = getTerminalActionBarArgs(location, this._terminalProfileService.availableProfiles, this._getDefaultProfileName(), this._terminalProfileService.contributedProfiles, this._terminalService, this._dropdownMenu, this._disposableStore); this._newDropdown.value = this._instantiationService.createInstance(DropdownWithPrimaryActionViewItem, action, actions.dropdownAction, actions.dropdownMenuActions, actions.className, { hoverDelegate: options.hoverDelegate }); this._newDropdown.value?.update(actions.dropdownAction, actions.dropdownMenuActions); return this._newDropdown.value; diff --git a/src/vs/workbench/contrib/terminal/browser/terminalMenus.ts b/src/vs/workbench/contrib/terminal/browser/terminalMenus.ts index 281d624fcec..4e645b1cd3f 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalMenus.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalMenus.ts @@ -8,7 +8,6 @@ import { Codicon } from '../../../../base/common/codicons.js'; import { Schemas } from '../../../../base/common/network.js'; import { localize, localize2 } from '../../../../nls.js'; import { IMenu, MenuId, MenuRegistry } from '../../../../platform/actions/common/actions.js'; -import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js'; import { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js'; import { IExtensionTerminalProfile, ITerminalProfile, TerminalLocation, TerminalSettingId } from '../../../../platform/terminal/common/terminal.js'; import { ResourceContextKey } from '../../../common/contextkeys.js'; @@ -782,20 +781,15 @@ export function setupTerminalMenus(): void { } } -export function getTerminalActionBarArgs(location: ITerminalLocationOptions, profiles: ITerminalProfile[], defaultProfileName: string, contributedProfiles: readonly IExtensionTerminalProfile[], terminalService: ITerminalService, dropdownMenu: IMenu, disposableStore: DisposableStore, configurationService: IConfigurationService): { +export function getTerminalActionBarArgs(location: ITerminalLocationOptions, profiles: ITerminalProfile[], defaultProfileName: string, contributedProfiles: readonly IExtensionTerminalProfile[], terminalService: ITerminalService, dropdownMenu: IMenu, disposableStore: DisposableStore): { dropdownAction: IAction; dropdownMenuActions: IAction[]; className: string; dropdownIcon?: string; } { - const shouldElevateAiProfiles = configurationService.getValue(TerminalSettingId.ExperimentalAiProfileGrouping); profiles = profiles.filter(e => !e.isAutoDetected); - const [aiProfiles, otherProfiles] = shouldElevateAiProfiles - ? splitProfiles(profiles) - : [[], profiles]; - const [aiContributedProfiles, otherContributedProfiles] = shouldElevateAiProfiles - ? splitContributedProfiles(contributedProfiles) - : [[], contributedProfiles]; + const [aiProfiles, otherProfiles] = splitProfiles(profiles); + const [aiContributedProfiles, otherContributedProfiles] = splitContributedProfiles(contributedProfiles); const dropdownActions: IAction[] = []; const submenuActions: IAction[] = []; const splitLocation = (location === TerminalLocation.Editor || (typeof location === 'object' && hasKey(location, { viewColumn: true }) && location.viewColumn === ACTIVE_GROUP)) ? { viewColumn: SIDE_GROUP } : { splitActiveTerminal: true }; diff --git a/src/vs/workbench/contrib/terminal/browser/terminalView.ts b/src/vs/workbench/contrib/terminal/browser/terminalView.ts index 01632bee153..9a745727415 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalView.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalView.ts @@ -289,7 +289,7 @@ export class TerminalViewPane extends ViewPane { case TerminalCommandId.New: { if (action instanceof MenuItemAction) { this._disposableStore.clear(); - const actions = getTerminalActionBarArgs(TerminalLocation.Panel, this._terminalProfileService.availableProfiles, this._getDefaultProfileName(), this._terminalProfileService.contributedProfiles, this._terminalService, this._dropdownMenu, this._disposableStore, this._configurationService); + const actions = getTerminalActionBarArgs(TerminalLocation.Panel, this._terminalProfileService.availableProfiles, this._getDefaultProfileName(), this._terminalProfileService.contributedProfiles, this._terminalService, this._dropdownMenu, this._disposableStore); this._newDropdown.value = this._instantiationService.createInstance(DropdownWithPrimaryActionViewItem, action, actions.dropdownAction, actions.dropdownMenuActions, actions.className, { hoverDelegate: options.hoverDelegate, getKeyBinding: (action: IAction) => this._keybindingService.lookupKeybinding(action.id, this._contextKeyService) @@ -318,15 +318,8 @@ export class TerminalViewPane extends ViewPane { private _updateTabActionBar(profiles: ITerminalProfile[]): void { this._disposableStore.clear(); - const actions = getTerminalActionBarArgs(TerminalLocation.Panel, profiles, this._getDefaultProfileName(), this._terminalProfileService.contributedProfiles, this._terminalService, this._dropdownMenu, this._disposableStore, this._configurationService); + const actions = getTerminalActionBarArgs(TerminalLocation.Panel, profiles, this._getDefaultProfileName(), this._terminalProfileService.contributedProfiles, this._terminalService, this._dropdownMenu, this._disposableStore); this._newDropdown.value?.update(actions.dropdownAction, actions.dropdownMenuActions); - - this._disposableStore.add(this._configurationService.onDidChangeConfiguration(e => { - if (e.affectsConfiguration(TerminalSettingId.ExperimentalAiProfileGrouping)) { - const updatedActions = getTerminalActionBarArgs(TerminalLocation.Panel, profiles, this._getDefaultProfileName(), this._terminalProfileService.contributedProfiles, this._terminalService, this._dropdownMenu, this._disposableStore, this._configurationService); - this._newDropdown.value?.update(updatedActions.dropdownAction, updatedActions.dropdownMenuActions); - } - })); } override focus() { diff --git a/src/vs/workbench/contrib/terminal/common/terminalConfiguration.ts b/src/vs/workbench/contrib/terminal/common/terminalConfiguration.ts index be681d6ef06..6f915a27195 100644 --- a/src/vs/workbench/contrib/terminal/common/terminalConfiguration.ts +++ b/src/vs/workbench/contrib/terminal/common/terminalConfiguration.ts @@ -604,15 +604,6 @@ const terminalConfiguration: IStringDictionary = { mode: 'auto' } }, - [TerminalSettingId.ExperimentalAiProfileGrouping]: { - markdownDescription: localize('terminal.integrated.experimental.aiProfileGrouping', "Whether to elevate AI-contributed terminal profiles (for example Copilot CLI and Claude Agent) in the new terminal dropdown."), - type: 'boolean', - default: false, - tags: ['experimental'], - experiment: { - mode: 'auto' - } - }, [TerminalSettingId.ShellIntegrationEnabled]: { restricted: true, markdownDescription: localize('terminal.integrated.shellIntegration.enabled', "Determines whether or not shell integration is auto-injected to support features like enhanced command tracking and current working directory detection. \n\nShell integration works by injecting the shell with a startup script. The script gives VS Code insight into what is happening within the terminal.\n\nSupported shells:\n\n- Linux/macOS: bash, fish, pwsh, zsh\n - Windows: pwsh, git bash\n\nThis setting applies only when terminals are created, so you will need to restart your terminals for it to take effect.\n\n Note that the script injection may not work if you have custom arguments defined in the terminal profile, have enabled {1}, have a [complex bash `PROMPT_COMMAND`](https://code.visualstudio.com/docs/editor/integrated-terminal#_complex-bash-promptcommand), or other unsupported setup. To disable decorations, see {0}", '`#terminal.integrated.shellIntegration.decorationsEnabled#`', '`#editor.accessibilitySupport#`'), From 2572ad450ffd41ecd1a639a4d70be9beb9b96d23 Mon Sep 17 00:00:00 2001 From: Connor Peet Date: Tue, 24 Mar 2026 12:59:21 -0700 Subject: [PATCH 08/83] agentPlugins: allow targeting a specific plugin install in deep link (#304552) * agentPlugins: allow targeting a specific plugin install in deep link * comments * ci --- .../chat/browser/pluginInstallService.ts | 43 +++++--- .../contrib/chat/browser/pluginUrlHandler.ts | 86 ++++++++++++++-- .../common/plugins/pluginInstallService.ts | 30 +++++- .../browser/plugins/pluginUrlHandler.test.ts | 98 ++++++++++++++++++- 4 files changed, 227 insertions(+), 30 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/pluginInstallService.ts b/src/vs/workbench/contrib/chat/browser/pluginInstallService.ts index 652cf2d8d42..44fccdc7c0d 100644 --- a/src/vs/workbench/contrib/chat/browser/pluginInstallService.ts +++ b/src/vs/workbench/contrib/chat/browser/pluginInstallService.ts @@ -18,7 +18,7 @@ import { IProgressService, ProgressLocation } from '../../../../platform/progres import { IQuickInputService, IQuickPickItem } from '../../../../platform/quickinput/common/quickInput.js'; import { IAgentPluginRepositoryService } from '../common/plugins/agentPluginRepositoryService.js'; import { ChatConfiguration } from '../common/constants.js'; -import { IPluginInstallService, IUpdateAllPluginsOptions, IUpdateAllPluginsResult } from '../common/plugins/pluginInstallService.js'; +import { IPluginInstallService, IInstallPluginFromSourceOptions, IInstallPluginFromSourceResult, IUpdateAllPluginsOptions, IUpdateAllPluginsResult } from '../common/plugins/pluginInstallService.js'; import { IMarketplacePlugin, IMarketplaceReference, IPluginMarketplaceService, MarketplaceReferenceKind, MarketplaceType, hasSourceChanged, parseMarketplaceReference, parseMarketplaceReferences, PluginSourceKind } from '../common/plugins/pluginMarketplaceService.js'; export class PluginInstallService implements IPluginInstallService { @@ -57,7 +57,7 @@ export class PluginInstallService implements IPluginInstallService { return this._installGitPlugin(plugin); } - async installPluginFromSource(source: string): Promise { + async installPluginFromSource(source: string, options?: IInstallPluginFromSourceOptions): Promise { const reference = parseMarketplaceReference(source); if (!reference) { this._notificationService.notify({ @@ -75,7 +75,7 @@ export class PluginInstallService implements IPluginInstallService { return; } - const result = await this._doInstallFromSource(reference); + const result = await this._doInstallFromSource(reference, options); if (!result.success && result.message) { this._notificationService.notify({ severity: Severity.Error, @@ -95,7 +95,7 @@ export class PluginInstallService implements IPluginInstallService { return undefined; } - async installPluginFromValidatedSource(source: string): Promise<{ success: boolean; message?: string }> { + async installPluginFromValidatedSource(source: string, options?: IInstallPluginFromSourceOptions): Promise { const reference = parseMarketplaceReference(source); if (!reference) { return { @@ -110,10 +110,10 @@ export class PluginInstallService implements IPluginInstallService { }; } - return this._doInstallFromSource(reference); + return this._doInstallFromSource(reference, options); } - private async _doInstallFromSource(reference: IMarketplaceReference): Promise<{ success: boolean; message?: string }> { + private async _doInstallFromSource(reference: IMarketplaceReference, options?: IInstallPluginFromSourceOptions): Promise { // Build a source descriptor for the git clone. const sourceDescriptor = reference.kind === MarketplaceReferenceKind.GitHubShorthand ? { kind: PluginSourceKind.GitHub as const, repo: reference.githubRepo! } @@ -170,11 +170,23 @@ export class PluginInstallService implements IPluginInstallService { }; } + // When targeting a specific plugin, find it, register it, and return. + if (options?.plugin) { + const matchedPlugin = discoveredPlugins.find(p => p.name === options.plugin); + if (!matchedPlugin) { + return { + success: false, + message: localize('pluginNotFound', "Plugin '{0}' not found in '{1}'.", options.plugin, reference.displayLabel), + }; + } + await this._addMarketplaceToConfig(reference); + await this.installPlugin(matchedPlugin); + return { success: true, matchedPlugin }; + } + if (discoveredPlugins.length === 1) { - const plugin = discoveredPlugins[0]; - const pluginDir = plugin.source ? URI.joinPath(repoDir, plugin.source) : repoDir; - this._pluginMarketplaceService.addInstalledPlugin(pluginDir, plugin); - this._addMarketplaceToConfig(reference); + await this._addMarketplaceToConfig(reference); + await this.installPlugin(discoveredPlugins[0]); return { success: true }; } @@ -194,20 +206,19 @@ export class PluginInstallService implements IPluginInstallService { return { success: false }; } - const plugin = selected.plugin; - const pluginDir = plugin.source ? URI.joinPath(repoDir, plugin.source) : repoDir; - this._pluginMarketplaceService.addInstalledPlugin(pluginDir, plugin); - this._addMarketplaceToConfig(reference); + await this._addMarketplaceToConfig(reference); + await this.installPlugin(selected.plugin); + return { success: true }; } - private _addMarketplaceToConfig(reference: IMarketplaceReference): void { + private _addMarketplaceToConfig(reference: IMarketplaceReference) { const currentValues = this._configurationService.getValue(ChatConfiguration.PluginMarketplaces) ?? []; const existingRefs = parseMarketplaceReferences(currentValues); if (existingRefs.some(r => r.canonicalId === reference.canonicalId)) { return; } - this._configurationService.updateValue(ChatConfiguration.PluginMarketplaces, [...currentValues, reference.rawValue]); + return this._configurationService.updateValue(ChatConfiguration.PluginMarketplaces, [...currentValues, reference.rawValue]); } async updatePlugin(plugin: IMarketplacePlugin, silent?: boolean): Promise { diff --git a/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.ts b/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.ts index d3a0ec3613b..5997044d851 100644 --- a/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.ts +++ b/src/vs/workbench/contrib/chat/browser/pluginUrlHandler.ts @@ -4,28 +4,35 @@ *--------------------------------------------------------------------------------------------*/ import { mainWindow } from '../../../../base/browser/window.js'; +import { decodeBase64 } from '../../../../base/common/buffer.js'; import { Codicon } from '../../../../base/common/codicons.js'; import { Disposable } from '../../../../base/common/lifecycle.js'; import { URI } from '../../../../base/common/uri.js'; import { localize } from '../../../../nls.js'; import { ConfigurationTarget, IConfigurationService } from '../../../../platform/configuration/common/configuration.js'; import { IDialogService } from '../../../../platform/dialogs/common/dialogs.js'; +import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js'; import { ILogService } from '../../../../platform/log/common/log.js'; import { IURLHandler, IURLService } from '../../../../platform/url/common/url.js'; +import { IEditorService } from '../../../services/editor/common/editorService.js'; import { IHostService } from '../../../services/host/browser/host.js'; import { IWorkbenchContribution } from '../../../common/contributions.js'; import { IExtensionsWorkbenchService } from '../../extensions/common/extensions.js'; +import { AgentPluginEditorInput } from './agentPluginEditor/agentPluginEditorInput.js'; +import { AgentPluginItemKind, IMarketplacePluginItem } from './agentPluginEditor/agentPluginItems.js'; import { ChatConfiguration } from '../common/constants.js'; import { MarketplaceReferenceKind, parseMarketplaceReference, parseMarketplaceReferences } from '../common/plugins/marketplaceReference.js'; import { IPluginInstallService } from '../common/plugins/pluginInstallService.js'; -import { decodeBase64 } from '../../../../base/common/buffer.js'; /** - * Handles `vscode://chat-plugin/install?source=` and + * Handles `vscode://chat-plugin/install?source=[&plugin=]` and * `vscode://chat-plugin/add-marketplace?ref=` URLs. * * The `source` / `ref` query parameter is a base64-encoded `owner/repo` or - * git clone URL. A confirmation dialog is always shown before any action. + * git clone URL. When `plugin` is provided on the `/install` route, the handler + * targets that specific plugin within the marketplace, installs it, and opens + * its details in the editor. Otherwise, a confirmation dialog is shown before + * any action. */ export class PluginUrlHandler extends Disposable implements IWorkbenchContribution, IURLHandler { @@ -39,6 +46,8 @@ export class PluginUrlHandler extends Disposable implements IWorkbenchContributi @IExtensionsWorkbenchService private readonly _extensionsWorkbenchService: IExtensionsWorkbenchService, @IHostService private readonly _hostService: IHostService, @ILogService private readonly _logService: ILogService, + @IEditorService private readonly _editorService: IEditorService, + @IInstantiationService private readonly _instantiationService: IInstantiationService, ) { super(); this._register(urlService.registerHandler(this)); @@ -81,6 +90,11 @@ export class PluginUrlHandler extends Disposable implements IWorkbenchContributi await this._hostService.focus(mainWindow); + const pluginName = this._decodeStringParam(uri, 'plugin'); + if (pluginName) { + return this._handleInstallTargetedPlugin(source, ref.displayLabel, pluginName); + } + const { confirmed } = await this._dialogService.confirm({ type: 'question', message: localize('confirmInstallPlugin', "Install Plugin from '{0}'?", ref.displayLabel), @@ -98,6 +112,46 @@ export class PluginUrlHandler extends Disposable implements IWorkbenchContributi return true; } + /** + * Handles the case where a specific plugin is targeted within a + * marketplace. Delegates trust and discovery to the install service, + * then opens the plugin details in a modal editor. + */ + private async _handleInstallTargetedPlugin(source: string, displayLabel: string, pluginName: string): Promise { + const result = await this._pluginInstallService.installPluginFromValidatedSource(source, { plugin: pluginName }); + + if (!result.success) { + if (result.message) { + this._logService.warn(`[PluginUrlHandler] ${result.message}`); + } + this._extensionsWorkbenchService.openSearch(`@agentPlugins ${displayLabel}`); + return true; + } + + if (!result.matchedPlugin) { + this._extensionsWorkbenchService.openSearch(`@agentPlugins ${displayLabel}`); + return true; + } + + const plugin = result.matchedPlugin; + const item: IMarketplacePluginItem = { + kind: AgentPluginItemKind.Marketplace, + name: plugin.name, + description: plugin.description, + source: plugin.source, + sourceDescriptor: plugin.sourceDescriptor, + marketplace: plugin.marketplace, + marketplaceReference: plugin.marketplaceReference, + marketplaceType: plugin.marketplaceType, + readmeUri: plugin.readmeUri, + }; + + const input = this._instantiationService.createInstance(AgentPluginEditorInput, item); + await this._editorService.openEditor(input); + + return true; + } + // --- add a marketplace --- private async _handleAddMarketplace(uri: URI): Promise { @@ -155,16 +209,28 @@ export class PluginUrlHandler extends Disposable implements IWorkbenchContributi return undefined; } - // Try base64 first; if the decoded string is a valid reference, use it. + const decoded = this._tryBase64Decode(raw); + if (decoded && parseMarketplaceReference(decoded)) { + return decoded; + } + return parseMarketplaceReference(raw) ? raw : undefined; + } + + /** + * Reads a query parameter and decodes it. Tries base64-decoding first, + * then falls back to the raw value. + */ + private _decodeStringParam(uri: URI, key: string): string | undefined { + const params = new URLSearchParams(uri.query); + return params.get(key) ?? undefined; + } + + private _tryBase64Decode(raw: string): string | undefined { try { const decoded = decodeBase64(raw).toString(); - if (parseMarketplaceReference(decoded)) { - return decoded; - } + return decoded || undefined; } catch { - // not valid base64 + return undefined; } - - return raw; } } diff --git a/src/vs/workbench/contrib/chat/common/plugins/pluginInstallService.ts b/src/vs/workbench/contrib/chat/common/plugins/pluginInstallService.ts index 3691e142501..3174d30853e 100644 --- a/src/vs/workbench/contrib/chat/common/plugins/pluginInstallService.ts +++ b/src/vs/workbench/contrib/chat/common/plugins/pluginInstallService.ts @@ -33,6 +33,25 @@ export interface IUpdateAllPluginsResult { readonly failedNames: readonly string[]; } +export interface IInstallPluginFromSourceOptions { + /** + * When set, targets a specific plugin by name within the marketplace + * instead of installing all or prompting the user. The matched plugin + * is installed and returned in the result. + */ + readonly plugin?: string; +} + +export interface IInstallPluginFromSourceResult { + readonly success: boolean; + readonly message?: string; + /** + * When {@link IInstallPluginFromSourceOptions.plugin} is set and the + * plugin was found, this contains the discovered marketplace plugin. + */ + readonly matchedPlugin?: IMarketplacePlugin; +} + export interface IPluginInstallService { readonly _serviceBrand: undefined; @@ -47,8 +66,11 @@ export interface IPluginInstallService { * GitHub shorthand (`owner/repo`) or a full git clone URL. Clones the * repository, reads marketplace metadata to discover plugins, and * registers the selected plugin. + * + * When {@link IInstallPluginFromSourceOptions.plugin} is set, targets + * a specific plugin, installs it, and returns it. */ - installPluginFromSource(source: string): Promise; + installPluginFromSource(source: string, options?: IInstallPluginFromSourceOptions): Promise; /** * Synchronously validates the format of a plugin source string. @@ -60,8 +82,12 @@ export interface IPluginInstallService { * Installs a plugin from an already-validated source string. * Handles trust, cloning, scanning, and registration. Returns a result * with an optional error message (e.g. no plugins found). + * + * When {@link IInstallPluginFromSourceOptions.plugin} is set, targets + * a specific plugin, installs it, and returns it in + * {@link IInstallPluginFromSourceResult.matchedPlugin}. */ - installPluginFromValidatedSource(source: string): Promise<{ success: boolean; message?: string }>; + installPluginFromValidatedSource(source: string, options?: IInstallPluginFromSourceOptions): Promise; /** * Pulls the latest changes for an already-cloned marketplace repository. diff --git a/src/vs/workbench/contrib/chat/test/browser/plugins/pluginUrlHandler.test.ts b/src/vs/workbench/contrib/chat/test/browser/plugins/pluginUrlHandler.test.ts index b843bc619e5..2b0f32639f8 100644 --- a/src/vs/workbench/contrib/chat/test/browser/plugins/pluginUrlHandler.test.ts +++ b/src/vs/workbench/contrib/chat/test/browser/plugins/pluginUrlHandler.test.ts @@ -10,14 +10,18 @@ import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../../../base/ import { ConfigurationTarget, IConfigurationService } from '../../../../../../platform/configuration/common/configuration.js'; import { TestConfigurationService } from '../../../../../../platform/configuration/test/common/testConfigurationService.js'; import { IDialogService } from '../../../../../../platform/dialogs/common/dialogs.js'; +import { IInstantiationService } from '../../../../../../platform/instantiation/common/instantiation.js'; import { TestInstantiationService } from '../../../../../../platform/instantiation/test/common/instantiationServiceMock.js'; import { ILogService, NullLogService } from '../../../../../../platform/log/common/log.js'; import { IURLService } from '../../../../../../platform/url/common/url.js'; +import { IEditorService } from '../../../../../services/editor/common/editorService.js'; import { IHostService } from '../../../../../services/host/browser/host.js'; import { IExtensionsWorkbenchService } from '../../../../extensions/common/extensions.js'; +import { AgentPluginEditorInput } from '../../../browser/agentPluginEditor/agentPluginEditorInput.js'; import { PluginUrlHandler } from '../../../browser/pluginUrlHandler.js'; import { ChatConfiguration } from '../../../common/constants.js'; -import { IPluginInstallService } from '../../../common/plugins/pluginInstallService.js'; +import { IInstallPluginFromSourceOptions, IInstallPluginFromSourceResult, IPluginInstallService } from '../../../common/plugins/pluginInstallService.js'; +import { IMarketplacePlugin, MarketplaceReferenceKind, MarketplaceType, PluginSourceKind } from '../../../common/plugins/pluginMarketplaceService.js'; function toBase64(value: string): string { return encodeBase64(VSBuffer.fromString(value)); @@ -30,6 +34,9 @@ suite('PluginUrlHandler', () => { dialogConfirmResult: boolean; installedSources: string[]; configUpdates: { key: string; value: unknown; target: ConfigurationTarget }[]; + openedEditorInputs: AgentPluginEditorInput[]; + openSearchQueries: string[]; + installFromValidatedSourceResult: IInstallPluginFromSourceResult; } function createHandler(stateOverrides?: Partial): { handler: PluginUrlHandler; state: MockState } { @@ -37,6 +44,9 @@ suite('PluginUrlHandler', () => { dialogConfirmResult: true, installedSources: [], configUpdates: [], + openedEditorInputs: [], + openSearchQueries: [], + installFromValidatedSourceResult: { success: false }, ...stateOverrides, }; @@ -48,6 +58,7 @@ suite('PluginUrlHandler', () => { instantiationService.stub(IPluginInstallService, { installPluginFromSource: async (source: string) => { state.installedSources.push(source); }, + installPluginFromValidatedSource: async (_source: string, _options?: IInstallPluginFromSourceOptions) => state.installFromValidatedSourceResult, } as unknown as IPluginInstallService); instantiationService.stub(IDialogService, { @@ -70,9 +81,20 @@ suite('PluginUrlHandler', () => { } as unknown as IHostService); instantiationService.stub(IExtensionsWorkbenchService, { - openSearch: () => { }, + openSearch: (query: string) => { state.openSearchQueries.push(query); }, } as unknown as IExtensionsWorkbenchService); + instantiationService.stub(IEditorService, { + openEditor: async (input: AgentPluginEditorInput) => { + state.openedEditorInputs.push(input); + store.add(input); + return undefined; + }, + } as unknown as IEditorService); + + // IInstantiationService: delegate createInstance to the TestInstantiationService itself + instantiationService.stub(IInstantiationService, instantiationService); + instantiationService.stub(ILogService, new NullLogService()); const handler = store.add(instantiationService.createInstance(PluginUrlHandler)); @@ -209,4 +231,76 @@ suite('PluginUrlHandler', () => { assert.strictEqual(result, true); assert.strictEqual(state.configUpdates.length, 0); }); + + // --- install with plugin targeting --- + + function makeMarketplacePlugin(name: string, marketplace: string): IMarketplacePlugin { + const [owner, repo] = marketplace.split('/'); + const ref = { + kind: MarketplaceReferenceKind.GitHubShorthand as const, + rawValue: marketplace, + displayLabel: marketplace, + canonicalId: `github:${owner.toLowerCase()}/${repo.toLowerCase()}`, + cloneUrl: `https://github.com/${marketplace}.git`, + githubRepo: marketplace, + cacheSegments: ['github.com', owner, repo], + }; + return { + name, + description: `${name} description`, + version: '1.0.0', + source: name, + sourceDescriptor: { kind: PluginSourceKind.RelativePath, path: name }, + marketplace, + marketplaceReference: ref, + marketplaceType: MarketplaceType.OpenPlugin, + }; + } + + test('install with plugin param delegates to installPluginFromValidatedSource and opens editor', async () => { + const plugin = makeMarketplacePlugin('my-plugin', 'acme/plugins'); + const { handler, state } = createHandler({ + installFromValidatedSourceResult: { success: true, matchedPlugin: plugin }, + }); + const result = await handler.handleURL(uri('/install', 'source=acme/plugins&plugin=my-plugin')); + assert.strictEqual(result, true); + // Should not show the install confirmation dialog (trust handled by install service) + assert.deepStrictEqual(state.installedSources, []); + // Plugin editor was opened + assert.strictEqual(state.openedEditorInputs.length, 1); + assert.strictEqual(state.openedEditorInputs[0].item.name, 'my-plugin'); + }); + + test('install with base64-encoded plugin param opens editor', async () => { + const plugin = makeMarketplacePlugin('my-plugin', 'acme/plugins'); + const { handler, state } = createHandler({ + installFromValidatedSourceResult: { success: true, matchedPlugin: plugin }, + }); + const encodedPlugin = toBase64('my-plugin'); + const result = await handler.handleURL(uri('/install', `source=acme/plugins&plugin=${encodedPlugin}`)); + assert.strictEqual(result, true); + assert.strictEqual(state.openedEditorInputs.length, 1); + assert.strictEqual(state.openedEditorInputs[0].item.name, 'my-plugin'); + }); + + test('install with plugin param falls back to search on failure', async () => { + const { handler, state } = createHandler({ + installFromValidatedSourceResult: { success: false, message: 'Plugin not found' }, + }); + const result = await handler.handleURL(uri('/install', 'source=acme/plugins&plugin=nonexistent')); + assert.strictEqual(result, true); + assert.strictEqual(state.openedEditorInputs.length, 0); + assert.strictEqual(state.openSearchQueries.length, 1); + assert.ok(state.openSearchQueries[0].includes('acme/plugins')); + }); + + test('install with plugin param falls back to search when no matchedPlugin', async () => { + const { handler, state } = createHandler({ + installFromValidatedSourceResult: { success: true }, + }); + const result = await handler.handleURL(uri('/install', 'source=acme/plugins&plugin=my-plugin')); + assert.strictEqual(result, true); + assert.strictEqual(state.openedEditorInputs.length, 0); + assert.strictEqual(state.openSearchQueries.length, 1); + }); }); From 4f9068ce08c7c8b447b50329835b39fb15552576 Mon Sep 17 00:00:00 2001 From: Paul Date: Tue, 24 Mar 2026 13:28:26 -0700 Subject: [PATCH 09/83] Use skill folder as primary identifier (#304316) --- .../chat/common/promptSyntax/service/promptsServiceImpl.ts | 3 ++- .../common/promptSyntax/computeAutomaticInstructions.test.ts | 2 +- .../test/common/promptSyntax/service/promptsService.test.ts | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.ts b/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.ts index 707950cb152..28bd11ed040 100644 --- a/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.ts +++ b/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.ts @@ -1477,9 +1477,10 @@ export class PromptsService extends Disposable implements IPromptsService { this.logger.debug(`[computeSkillDiscoveryInfo] Agent skill file missing name attribute, using folder name "${folderName}": ${uri}`); name = folderName; } - const sanitizedName = this.truncateAgentSkillName(name, uri); + let sanitizedName = this.truncateAgentSkillName(name, uri); if (sanitizedName !== folderName) { this.logger.debug(`[computeSkillDiscoveryInfo] Agent skill name "${sanitizedName}" does not match folder name "${folderName}", using folder name: ${uri}`); + sanitizedName = folderName; } if (seenNames.has(sanitizedName)) { diff --git a/src/vs/workbench/contrib/chat/test/common/promptSyntax/computeAutomaticInstructions.test.ts b/src/vs/workbench/contrib/chat/test/common/promptSyntax/computeAutomaticInstructions.test.ts index f78133dcdba..9cf3150e5ae 100644 --- a/src/vs/workbench/contrib/chat/test/common/promptSyntax/computeAutomaticInstructions.test.ts +++ b/src/vs/workbench/contrib/chat/test/common/promptSyntax/computeAutomaticInstructions.test.ts @@ -1532,7 +1532,7 @@ suite('ComputeAutomaticInstructions', () => { assert.equal(xmlContents(skills[1], 'file')[0], getFilePath(`${rootFolder}/.claude/skills/no-desc-skill/SKILL.md`)); // Skill with mismatched name should use folder name - assert.equal(xmlContents(skills[2], 'name')[0], 'mismatched-name'); + assert.equal(xmlContents(skills[2], 'name')[0], 'actual-folder'); assert.equal(xmlContents(skills[2], 'description')[0], 'A skill with mismatched name'); assert.equal(xmlContents(skills[2], 'file')[0], getFilePath(`${rootFolder}/.claude/skills/actual-folder/SKILL.md`)); }); diff --git a/src/vs/workbench/contrib/chat/test/common/promptSyntax/service/promptsService.test.ts b/src/vs/workbench/contrib/chat/test/common/promptSyntax/service/promptsService.test.ts index 1f4a09bd0d3..cd90c0c7e7f 100644 --- a/src/vs/workbench/contrib/chat/test/common/promptSyntax/service/promptsService.test.ts +++ b/src/vs/workbench/contrib/chat/test/common/promptSyntax/service/promptsService.test.ts @@ -2789,7 +2789,7 @@ suite('PromptsService', () => { const result = allResult.filter(s => s.storage !== PromptsStorage.internal); assert.strictEqual(result.length, 2, 'Should find both skills'); - const mismatchedSkill = result.find(s => s.name === 'Correct Skill Name'); + const mismatchedSkill = result.find(s => s.name === 'wrong-folder-name'); assert.ok(mismatchedSkill, 'Should find skill with folder name as fallback'); assert.strictEqual(mismatchedSkill.description, 'This skill should use folder name as fallback'); From d55d222ba284cf78b132ee562513fcffaf83c74d Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 14:07:22 -0700 Subject: [PATCH 10/83] Fix untitled session in sessions lists --- .../chat/browser/agentSessions/localAgentSessionsController.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.ts index c2eed78bfbf..0b8c5259143 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsController.ts @@ -121,6 +121,9 @@ export class LocalAgentsSessionsController extends Disposable implements IChatSe } description = this.chatSessionsService.getInProgressSessionDescription(model); + } else if (chat.isActive) { + // Sessions that are active but don't have a chat model are ultimately untitled with no requests + return undefined; } return { From 3ab55166b49baa833ec23ac34ec35a65e0711c20 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 16:04:40 -0700 Subject: [PATCH 11/83] Refactor code structure for improved readability and maintainability --- .../console-2026-03-24T23-04-17-148Z.log | 40 ++++++++++++++++++ sessions-detail-view.png | Bin 0 -> 156106 bytes 2 files changed, 40 insertions(+) create mode 100644 .playwright-mcp/console-2026-03-24T23-04-17-148Z.log create mode 100644 sessions-detail-view.png diff --git a/.playwright-mcp/console-2026-03-24T23-04-17-148Z.log b/.playwright-mcp/console-2026-03-24T23-04-17-148Z.log new file mode 100644 index 00000000000..454519db936 --- /dev/null +++ b/.playwright-mcp/console-2026-03-24T23-04-17-148Z.log @@ -0,0 +1,40 @@ +[ 193ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://127.0.0.1:5500/favicon.ico:0 +[ 197ms] [WARNING] Failed to decode character for dithering.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 197ms] [WARNING] Failed to decode character for index.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 197ms] [WARNING] Failed to decode character for onboarding.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 197ms] [WARNING] Failed to decode character for onboarding_orig.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 197ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 197ms] [WARNING] Failed to decode character for codicon.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 197ms] [WARNING] Failed to decode character for default fontCharacter: \E023 @ http://127.0.0.1:5500/:10014 +[ 197ms] [WARNING] Failed to decode character for seti.woff fontCharacter: \E033 @ http://127.0.0.1:5500/:10014 +[ 197ms] [WARNING] Failed to decode character for vs-seti-icon-theme.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 197ms] [WARNING] Failed to decode character for vs-seti-icon-theme.truncated.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 197ms] [WARNING] Failed to decode character for update.md fontCharacter: \E060 @ http://127.0.0.1:5500/:10014 +[ 197ms] [WARNING] Failed to decode character for vscode.svg fontCharacter: \E091 @ http://127.0.0.1:5500/:10014 +[ 197ms] [WARNING] Failed to decode character for dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 197ms] [WARNING] Failed to decode character for less-dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 198ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 198ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 +[ 198ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 198ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 198ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 +[ 198ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 198ms] [WARNING] Failed to decode character for dithering.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 198ms] [WARNING] Failed to decode character for index.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 198ms] [WARNING] Failed to decode character for onboarding.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 198ms] [WARNING] Failed to decode character for onboarding_orig.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 198ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 198ms] [WARNING] Failed to decode character for codicon.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 199ms] [WARNING] Failed to decode character for default fontCharacter: \E023 @ http://127.0.0.1:5500/:10014 +[ 199ms] [WARNING] Failed to decode character for seti.woff fontCharacter: \E033 @ http://127.0.0.1:5500/:10014 +[ 199ms] [WARNING] Failed to decode character for vs-seti-icon-theme.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 199ms] [WARNING] Failed to decode character for vs-seti-icon-theme.truncated.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 199ms] [WARNING] Failed to decode character for update.md fontCharacter: \E060 @ http://127.0.0.1:5500/:10014 +[ 199ms] [WARNING] Failed to decode character for vscode.svg fontCharacter: \E091 @ http://127.0.0.1:5500/:10014 +[ 199ms] [WARNING] Failed to decode character for dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 199ms] [WARNING] Failed to decode character for less-dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 199ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 199ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 +[ 199ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 4517ms] TypeError: Cannot read properties of null (reading 'classList') + at http://127.0.0.1:5500/:10303:130 diff --git a/sessions-detail-view.png b/sessions-detail-view.png new file mode 100644 index 0000000000000000000000000000000000000000..f5e466a7ba8e683aafa0beaf307fdd308d681697 GIT binary patch literal 156106 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 Date: Tue, 24 Mar 2026 16:09:22 -0700 Subject: [PATCH 12/83] Refactor code structure for improved readability and maintainability --- .../console-2026-03-24T23-04-17-148Z.log | 6 ++++++ sessions-expand-collapse.png | Bin 0 -> 156945 bytes 2 files changed, 6 insertions(+) create mode 100644 sessions-expand-collapse.png diff --git a/.playwright-mcp/console-2026-03-24T23-04-17-148Z.log b/.playwright-mcp/console-2026-03-24T23-04-17-148Z.log index 454519db936..ce25f8a59e5 100644 --- a/.playwright-mcp/console-2026-03-24T23-04-17-148Z.log +++ b/.playwright-mcp/console-2026-03-24T23-04-17-148Z.log @@ -38,3 +38,9 @@ [ 199ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 [ 4517ms] TypeError: Cannot read properties of null (reading 'classList') at http://127.0.0.1:5500/:10303:130 +[ 281723ms] TypeError: Cannot read properties of null (reading 'classList') + at http://127.0.0.1:5500/:10303:130 +[ 288305ms] TypeError: Cannot read properties of null (reading 'classList') + at http://127.0.0.1:5500/:10303:130 +[ 291561ms] TypeError: Cannot read properties of null (reading 'classList') + at http://127.0.0.1:5500/:10303:130 diff --git a/sessions-expand-collapse.png b/sessions-expand-collapse.png new file mode 100644 index 0000000000000000000000000000000000000000..07ce2f70c37d6276ab405cbe95c26ab9a3003f9b GIT binary patch literal 156945 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

8y5mA$X`tL~AI@zl+VZDR@b#^nvb41gzkj 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

B-ahr}@Kf3W6yBU{hOBK)`-#&LV z13AYT{GHjPj#{&P$z}BK6b5KyU(Yc*Ijh0|mird~n!pGIa%~+`e2pkS0E?gXfsDYo z-s`-bt=esR&9W8H^TYfY*KXvy#&xz-I=j&Vh|vlJ7tU1p5QGH~VJ7p!Y5%Q4f@tV>yLF}gv{;$Ryjxh|+zM^L15u~SRw(!h zGBRtSmf0&R(x#@SS)$xrz{0RERfr~-bf$>fwl&rEx12>QF#g;!zIEBm+*}-6W9>H{TS05Ivj_6D8&)@I?!gk zZahXmRBei3+MBr|o4mW!G@(sOD7Hob+teBn-dJ7lk(jA!FkE+qiz}~TARFQuHr3YN zsF2GO%M}8-GP<991gMPDHI`zBQ~J0Q1JbKfiQ5QZyJ_%EFuO9Kh_@VJ?1Xy~0#$w) z@?DqzwwjG_SBZ)`{XRA8=kCqd=!pI4v2WjDy9y>(e(;$xn2`8w=^qpj&@{a=m2RW^ zd{cw85j0ynAPiI1RvAi3{;{*ZD+TQy@Z$d*f_gjh-d3bxK~f*MefpyJiU1m;%6j+P zg}FFm5EowtTLsM6bQbM*`B%BkH2rr~meQwh4cc1a+FeN7?fJkLJ;Re`pS|_A<^!D9 z*IL(({544C+yDFP_OR=epnn^MAqN?(P@$QN2pWtk`feS%_&i7Llc|f)6|Zqk>5kTx@uF-ie z(1Z6N*&q$Qcw znIor8jYUd{3_Gjtx9g_$u>OyGU4>_jv4l(BVdw8_WP%D4*qaTuB2)NyTb^S3@`Tgq z9zA6XQg@IOAl?5z=o7pZY~>`j@-mnhqvzd+Q;Wl`qWw}xk3Q6*&i<7m`ShVTA;T?I z4kFg`MF@x}W#=DvYyE5G{CC%!o-Bdl*LiWMWj#P4};#VuPRyOYJklr4D${% zOJ}k}PTjuck0Vp%#u1%3`~Q?u5y%faQ*jJ?Bm&(Z5vmlh#QC>ZplS9`Z-qYv5Lm%6 zvucIEW`EPRy%US-JVA#p`)p5Jq80#@K_T>AxAxr@?_cEI7>2}|l6Q--%D^(EGAgX^ zJE#Y#0OB3SN6Alo34-tOM(F_oev8CR2`5aatbZ;dXL^>SAFViR4B*gV+O&x

+*$ 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 E02hMjU;qFB literal 0 HcmV?d00001 From 44497f3a9f77aa4b72174d9aa43e4ca73507a000 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 16:24:55 -0700 Subject: [PATCH 13/83] Add "Show less" functionality for agent sessions and update related components --- .../sessions/browser/sessionsViewPane.ts | 3 +- .../agentSessions/agentSessionsControl.ts | 12 ++- .../agentSessions/agentSessionsModel.ts | 13 +++ .../agentSessions/agentSessionsViewer.ts | 88 +++++++++++++++++-- .../agentSessionsDataSource.test.ts | 9 +- 5 files changed, 108 insertions(+), 17 deletions(-) diff --git a/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts b/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts index 880b52eae3b..f5f49104361 100644 --- a/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts +++ b/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts @@ -23,7 +23,6 @@ import { IConfigurationService } from '../../../../platform/configuration/common import { IHoverService } from '../../../../platform/hover/browser/hover.js'; import { localize, localize2 } from '../../../../nls.js'; import { AgentSessionsControl } from '../../../../workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js'; -import { AgentSessionsDataSource } from '../../../../workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js'; import { AgentSessionsFilter, AgentSessionsGrouping, AgentSessionsSorting } from '../../../../workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js'; import { AgentSessionProviders, isAgentHostTarget } from '../../../../workbench/contrib/chat/browser/agentSessions/agentSessions.js'; import { ISessionsManagementService, IsNewChatSessionContext } from './sessionsManagementService.js'; @@ -168,7 +167,7 @@ export class AgenticSessionsViewPane extends ViewPane { overrideStyles: this.getLocationBasedColors().listOverrideStyles, disableHover: true, enableApprovalRow: true, - repositoryGroupLimit: AgentSessionsDataSource.REPOSITORY_GROUP_LIMIT, + repositoryGroupLimit: 2, getHoverPosition: () => this.getSessionHoverPosition(), trackActiveEditorSession: () => true, collapseOlderSections: () => true, diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index 809502a5cec..0c8831f10e1 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -12,8 +12,8 @@ import { $, append, EventHelper, addDisposableListener, EventType, hide, setVisi import { StandardKeyboardEvent } from '../../../../../base/browser/keyboardEvent.js'; import { KeyCode } from '../../../../../base/common/keyCodes.js'; import { localize } from '../../../../../nls.js'; -import { AgentSessionSection, IAgentSession, IAgentSessionSection, IAgentSessionsModel, IMarshalledAgentSessionContext, isAgentSession, isAgentSessionSection, isAgentSessionShowMore } from './agentSessionsModel.js'; -import { AgentSessionListItem, AgentSessionRenderer, AgentSessionsAccessibilityProvider, AgentSessionsCompressionDelegate, AgentSessionsDataSource, AgentSessionsDragAndDrop, AgentSessionsIdentityProvider, AgentSessionsKeyboardNavigationLabelProvider, AgentSessionsListDelegate, AgentSessionSectionRenderer, AgentSessionSectionLabels, AgentSessionShowMoreRenderer, AgentSessionsSorter, getRepositoryName, IAgentSessionsFilter } from './agentSessionsViewer.js'; +import { AgentSessionSection, IAgentSession, IAgentSessionSection, IAgentSessionsModel, IMarshalledAgentSessionContext, isAgentSession, isAgentSessionSection, isAgentSessionShowLess, isAgentSessionShowMore } from './agentSessionsModel.js'; +import { AgentSessionListItem, AgentSessionRenderer, AgentSessionsAccessibilityProvider, AgentSessionsCompressionDelegate, AgentSessionsDataSource, AgentSessionsDragAndDrop, AgentSessionsIdentityProvider, AgentSessionsKeyboardNavigationLabelProvider, AgentSessionsListDelegate, AgentSessionSectionRenderer, AgentSessionSectionLabels, AgentSessionShowLessRenderer, AgentSessionShowMoreRenderer, AgentSessionsSorter, getRepositoryName, IAgentSessionsFilter } from './agentSessionsViewer.js'; import { AgentSessionsGrouping, AgentSessionsSorting } from './agentSessionsFilter.js'; import { AgentSessionApprovalModel } from './agentSessionApprovalModel.js'; import { FuzzyScore } from '../../../../../base/common/filters.js'; @@ -272,6 +272,7 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo sessionRenderer, this.instantiationService.createInstance(AgentSessionSectionRenderer), new AgentSessionShowMoreRenderer(), + new AgentSessionShowLessRenderer(), ], sessionDataSource, { @@ -418,6 +419,11 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo return; } + if (isAgentSessionShowLess(element)) { + this.sessionsDataSource?.collapseRepositoryGroup(element.sectionLabel); + return; + } + this.telemetryService.publicLog2('agentSessionOpened', { providerType: element.providerType, source: this.options.source @@ -435,7 +441,7 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo } private async showContextMenu({ element, anchor, browserEvent }: ITreeContextMenuEvent): Promise { - if (!element || isAgentSessionShowMore(element)) { + if (!element || isAgentSessionShowMore(element) || isAgentSessionShowLess(element)) { return; } diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsModel.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsModel.ts index 05de1113bf4..ef8449e4096 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsModel.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsModel.ts @@ -219,6 +219,19 @@ export function isAgentSessionShowMore(obj: unknown): obj is IAgentSessionShowMo return (obj as IAgentSessionShowMore)?.showMore === true; } +/** + * A "Show less" item that appears as the last child + * of an expanded repository group section to allow collapsing back. + */ +export interface IAgentSessionShowLess { + readonly showLess: true; + readonly sectionLabel: string; +} + +export function isAgentSessionShowLess(obj: unknown): obj is IAgentSessionShowLess { + return (obj as IAgentSessionShowLess)?.showLess === true; +} + export interface IMarshalledAgentSessionContext { readonly $mid: MarshalledId.AgentSessionContext; diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts index 914abbc894e..689a13610c9 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts @@ -14,7 +14,7 @@ import { ICompressedTreeNode } from '../../../../../base/browser/ui/tree/compres import { ICompressibleKeyboardNavigationLabelProvider, ICompressibleTreeRenderer } from '../../../../../base/browser/ui/tree/objectTree.js'; import { ITreeNode, ITreeElementRenderDetails, IAsyncDataSource, ITreeSorter, ITreeDragAndDrop, ITreeDragOverReaction } from '../../../../../base/browser/ui/tree/tree.js'; import { Disposable, DisposableStore, IDisposable, MutableDisposable } from '../../../../../base/common/lifecycle.js'; -import { AgentSessionSection, AgentSessionStatus, getAgentChangesSummary, hasValidDiff, IAgentSession, IAgentSessionSection, IAgentSessionShowMore, IAgentSessionsModel, isAgentSession, isAgentSessionSection, isAgentSessionShowMore, isAgentSessionsModel, isSessionInProgressStatus } from './agentSessionsModel.js'; +import { AgentSessionSection, AgentSessionStatus, getAgentChangesSummary, hasValidDiff, IAgentSession, IAgentSessionSection, IAgentSessionShowLess, IAgentSessionShowMore, IAgentSessionsModel, isAgentSession, isAgentSessionSection, isAgentSessionShowLess, isAgentSessionShowMore, isAgentSessionsModel, isSessionInProgressStatus } from './agentSessionsModel.js'; import { IconLabel } from '../../../../../base/browser/ui/iconLabel/iconLabel.js'; import { ThemeIcon } from '../../../../../base/common/themables.js'; import { Codicon } from '../../../../../base/common/codicons.js'; @@ -50,7 +50,7 @@ import { defaultButtonStyles } from '../../../../../platform/theme/browser/defau import { AgentSessionApprovalModel } from './agentSessionApprovalModel.js'; import { BugIndicatingError } from '../../../../../base/common/errors.js'; -export type AgentSessionListItem = IAgentSession | IAgentSessionSection | IAgentSessionShowMore; +export type AgentSessionListItem = IAgentSession | IAgentSessionSection | IAgentSessionShowMore | IAgentSessionShowLess; //#region Agent Session Renderer @@ -656,7 +656,7 @@ export class AgentSessionSectionRenderer implements ICompressibleTreeRenderer { + + static readonly TEMPLATE_ID = 'agent-session-show-less'; + static readonly HEIGHT = AgentSessionShowMoreRenderer.HEIGHT; + + readonly templateId = AgentSessionShowLessRenderer.TEMPLATE_ID; + + renderTemplate(container: HTMLElement): IAgentSessionShowMoreTemplate { + const disposables = new DisposableStore(); + + const elements = h( + 'div.agent-session-show-more@container', + [h('span.agent-session-show-more-label@label')] + ); + + container.appendChild(elements.container); + + return { + container: elements.container, + label: elements.label, + disposables, + }; + } + + renderElement(element: ITreeNode, _index: number, template: IAgentSessionShowMoreTemplate): void { + template.label.textContent = localize('agentSessions.showLess', "Show less"); + } + + renderCompressedElements(): void { + throw new Error('Should never happen since show-less is incompressible'); + } + + disposeElement(): void { } + + disposeTemplate(templateData: IAgentSessionShowMoreTemplate): void { + templateData.disposables.dispose(); + } +} + //#endregion export class AgentSessionsListDelegate implements IListVirtualDelegate { @@ -721,6 +760,10 @@ export class AgentSessionsListDelegate implements IListVirtualDelegate this.repositoryGroupLimit) { - const visible = element.sessions.slice(0, this.repositoryGroupLimit); - const remainingCount = element.sessions.length - this.repositoryGroupLimit; - return [...visible, { showMore: true as const, sectionLabel: element.label, remainingCount }]; + if (isCappingEnabled && element.section === AgentSessionSection.Repository && element.sessions.length > this.repositoryGroupLimit) { + if (!this.expandedRepositoryGroups.has(element.label)) { + // Collapsed: show limited sessions + "show more" + const visible = element.sessions.slice(0, this.repositoryGroupLimit); + const remainingCount = element.sessions.length - this.repositoryGroupLimit; + return [...visible, { showMore: true as const, sectionLabel: element.label, remainingCount }]; + } else { + // Expanded: show all sessions + "show less" + return [...element.sessions, { showLess: true as const, sectionLabel: element.label }]; + } } return element.sessions; } @@ -1328,6 +1390,10 @@ export class AgentSessionsIdentityProvider implements IIdentityProvider { assert.ok(!children.some(isAgentSessionShowMore)); }); - test('expanding a group removes the cap', () => { + test('expanding a group removes the cap and appends show-less item', () => { const now = Date.now(); const sessions = Array.from({ length: 8 }, (_, i) => createMockSession({ id: `s${i}`, metadata: { repositoryNwo: 'owner/vscode' }, startTime: now - i * 1000 }) @@ -1039,8 +1039,11 @@ suite('AgentSessionsDataSource', () => { dataSource.expandRepositoryGroup('vscode'); const children = Array.from(dataSource.getChildren(section)); - assert.strictEqual(children.length, 8); + assert.strictEqual(children.length, 9); // 8 sessions + 1 show-less assert.ok(!children.some(isAgentSessionShowMore)); + const showLess = children[8]; + assert.ok(isAgentSessionShowLess(showLess)); + assert.strictEqual(showLess.sectionLabel, 'vscode'); }); test('does not cap non-repository sections', () => { From 76dd8d322fd1f4d7de8081c5c5dd9cc546003709 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 16:32:14 -0700 Subject: [PATCH 14/83] Update "Show more" label format for agent sessions --- .../contrib/chat/browser/agentSessions/agentSessionsViewer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts index 689a13610c9..449161e8532 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts @@ -689,7 +689,7 @@ export class AgentSessionShowMoreRenderer implements ICompressibleTreeRenderer, _index: number, template: IAgentSessionShowMoreTemplate): void { - template.label.textContent = localize('agentSessions.showMore', "Show {0} More...", element.element.remainingCount); + template.label.textContent = localize('agentSessions.showMore', "+{0} more", element.element.remainingCount); } renderCompressedElements(): void { From b0d93e19c1111af0da59943cdde16281f5d5c680 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 16:36:46 -0700 Subject: [PATCH 15/83] Refactor code structure for improved readability and maintainability --- .../console-2026-03-24T23-33-55-971Z.log | 37 ++++++++++++++++++ prototype-compare.png | Bin 0 -> 39079 bytes prototype-sessions-panel.png | Bin 0 -> 112984 bytes .../sessions/browser/sessionsViewPane.ts | 3 +- 4 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 .playwright-mcp/console-2026-03-24T23-33-55-971Z.log create mode 100644 prototype-compare.png create mode 100644 prototype-sessions-panel.png diff --git a/.playwright-mcp/console-2026-03-24T23-33-55-971Z.log b/.playwright-mcp/console-2026-03-24T23-33-55-971Z.log new file mode 100644 index 00000000000..9943e4ee3a0 --- /dev/null +++ b/.playwright-mcp/console-2026-03-24T23-33-55-971Z.log @@ -0,0 +1,37 @@ +[ 78ms] [WARNING] Failed to decode character for dithering.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 79ms] [WARNING] Failed to decode character for index.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 79ms] [WARNING] Failed to decode character for onboarding.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 79ms] [WARNING] Failed to decode character for onboarding_orig.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 79ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 79ms] [WARNING] Failed to decode character for codicon.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 79ms] [WARNING] Failed to decode character for default fontCharacter: \E023 @ http://127.0.0.1:5500/:10014 +[ 79ms] [WARNING] Failed to decode character for seti.woff fontCharacter: \E033 @ http://127.0.0.1:5500/:10014 +[ 79ms] [WARNING] Failed to decode character for vs-seti-icon-theme.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 79ms] [WARNING] Failed to decode character for vs-seti-icon-theme.truncated.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 79ms] [WARNING] Failed to decode character for update.md fontCharacter: \E060 @ http://127.0.0.1:5500/:10014 +[ 79ms] [WARNING] Failed to decode character for vscode.svg fontCharacter: \E091 @ http://127.0.0.1:5500/:10014 +[ 79ms] [WARNING] Failed to decode character for dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 79ms] [WARNING] Failed to decode character for less-dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 79ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 79ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 +[ 79ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 80ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 80ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 +[ 80ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 80ms] [WARNING] Failed to decode character for dithering.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 80ms] [WARNING] Failed to decode character for index.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 80ms] [WARNING] Failed to decode character for onboarding.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 80ms] [WARNING] Failed to decode character for onboarding_orig.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 80ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 80ms] [WARNING] Failed to decode character for codicon.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 80ms] [WARNING] Failed to decode character for default fontCharacter: \E023 @ http://127.0.0.1:5500/:10014 +[ 80ms] [WARNING] Failed to decode character for seti.woff fontCharacter: \E033 @ http://127.0.0.1:5500/:10014 +[ 80ms] [WARNING] Failed to decode character for vs-seti-icon-theme.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 80ms] [WARNING] Failed to decode character for vs-seti-icon-theme.truncated.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 80ms] [WARNING] Failed to decode character for update.md fontCharacter: \E060 @ http://127.0.0.1:5500/:10014 +[ 80ms] [WARNING] Failed to decode character for vscode.svg fontCharacter: \E091 @ http://127.0.0.1:5500/:10014 +[ 80ms] [WARNING] Failed to decode character for dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 80ms] [WARNING] Failed to decode character for less-dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 80ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 80ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 +[ 80ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 diff --git a/prototype-compare.png b/prototype-compare.png new file mode 100644 index 0000000000000000000000000000000000000000..a64f3b1bb4b1a62fa1787745d3e67fee325c5d4c GIT binary patch literal 39079 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 literal 0 HcmV?d00001 diff --git a/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts b/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts index f5f49104361..880b52eae3b 100644 --- a/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts +++ b/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts @@ -23,6 +23,7 @@ import { IConfigurationService } from '../../../../platform/configuration/common import { IHoverService } from '../../../../platform/hover/browser/hover.js'; import { localize, localize2 } from '../../../../nls.js'; import { AgentSessionsControl } from '../../../../workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js'; +import { AgentSessionsDataSource } from '../../../../workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js'; import { AgentSessionsFilter, AgentSessionsGrouping, AgentSessionsSorting } from '../../../../workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js'; import { AgentSessionProviders, isAgentHostTarget } from '../../../../workbench/contrib/chat/browser/agentSessions/agentSessions.js'; import { ISessionsManagementService, IsNewChatSessionContext } from './sessionsManagementService.js'; @@ -167,7 +168,7 @@ export class AgenticSessionsViewPane extends ViewPane { overrideStyles: this.getLocationBasedColors().listOverrideStyles, disableHover: true, enableApprovalRow: true, - repositoryGroupLimit: 2, + repositoryGroupLimit: AgentSessionsDataSource.REPOSITORY_GROUP_LIMIT, getHoverPosition: () => this.getSessionHoverPosition(), trackActiveEditorSession: () => true, collapseOlderSections: () => true, From 1d1076e795df177d36e7281b6a2a13762aedfb21 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 16:41:00 -0700 Subject: [PATCH 16/83] Add prototype images for group hover and no-hover states - Added `proto-group-hover.png` to represent the hover state of the group. - Added `proto-group-nohover.png` to represent the default state of the group. --- .../console-2026-03-24T23-33-55-971Z.log | 2 + .../console-2026-03-24T23-40-09-520Z.log | 37 ++++++++++++++++++ proto-group-hover.png | Bin 0 -> 8377 bytes proto-group-nohover.png | Bin 0 -> 7770 bytes 4 files changed, 39 insertions(+) create mode 100644 .playwright-mcp/console-2026-03-24T23-40-09-520Z.log create mode 100644 proto-group-hover.png create mode 100644 proto-group-nohover.png diff --git a/.playwright-mcp/console-2026-03-24T23-33-55-971Z.log b/.playwright-mcp/console-2026-03-24T23-33-55-971Z.log index 9943e4ee3a0..215d2a96be8 100644 --- a/.playwright-mcp/console-2026-03-24T23-33-55-971Z.log +++ b/.playwright-mcp/console-2026-03-24T23-33-55-971Z.log @@ -35,3 +35,5 @@ [ 80ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 [ 80ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 [ 80ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 321960ms] TypeError: Cannot read properties of null (reading 'classList') + at http://127.0.0.1:5500/:10303:130 diff --git a/.playwright-mcp/console-2026-03-24T23-40-09-520Z.log b/.playwright-mcp/console-2026-03-24T23-40-09-520Z.log new file mode 100644 index 00000000000..3748c8fde78 --- /dev/null +++ b/.playwright-mcp/console-2026-03-24T23-40-09-520Z.log @@ -0,0 +1,37 @@ +[ 74ms] [WARNING] Failed to decode character for dithering.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 74ms] [WARNING] Failed to decode character for index.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 74ms] [WARNING] Failed to decode character for onboarding.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 74ms] [WARNING] Failed to decode character for onboarding_orig.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 74ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 74ms] [WARNING] Failed to decode character for codicon.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 74ms] [WARNING] Failed to decode character for default fontCharacter: \E023 @ http://127.0.0.1:5500/:10014 +[ 74ms] [WARNING] Failed to decode character for seti.woff fontCharacter: \E033 @ http://127.0.0.1:5500/:10014 +[ 74ms] [WARNING] Failed to decode character for vs-seti-icon-theme.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 74ms] [WARNING] Failed to decode character for vs-seti-icon-theme.truncated.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 74ms] [WARNING] Failed to decode character for update.md fontCharacter: \E060 @ http://127.0.0.1:5500/:10014 +[ 74ms] [WARNING] Failed to decode character for vscode.svg fontCharacter: \E091 @ http://127.0.0.1:5500/:10014 +[ 74ms] [WARNING] Failed to decode character for dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 74ms] [WARNING] Failed to decode character for less-dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 74ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 74ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 +[ 74ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 75ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 75ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 +[ 75ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 75ms] [WARNING] Failed to decode character for dithering.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 75ms] [WARNING] Failed to decode character for index.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 75ms] [WARNING] Failed to decode character for onboarding.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 75ms] [WARNING] Failed to decode character for onboarding_orig.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 75ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 75ms] [WARNING] Failed to decode character for codicon.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 75ms] [WARNING] Failed to decode character for default fontCharacter: \E023 @ http://127.0.0.1:5500/:10014 +[ 75ms] [WARNING] Failed to decode character for seti.woff fontCharacter: \E033 @ http://127.0.0.1:5500/:10014 +[ 75ms] [WARNING] Failed to decode character for vs-seti-icon-theme.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 75ms] [WARNING] Failed to decode character for vs-seti-icon-theme.truncated.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 75ms] [WARNING] Failed to decode character for update.md fontCharacter: \E060 @ http://127.0.0.1:5500/:10014 +[ 75ms] [WARNING] Failed to decode character for vscode.svg fontCharacter: \E091 @ http://127.0.0.1:5500/:10014 +[ 75ms] [WARNING] Failed to decode character for dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 75ms] [WARNING] Failed to decode character for less-dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 76ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 76ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 +[ 76ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 diff --git a/proto-group-hover.png b/proto-group-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..ffddf2543bd7d04f1fb2ee46d3f87e0098b1e4de GIT binary patch literal 8377 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 literal 0 HcmV?d00001 diff --git a/proto-group-nohover.png b/proto-group-nohover.png new file mode 100644 index 0000000000000000000000000000000000000000..9ae64365249295b0b8622c2050ce7f36a583739e GIT binary patch literal 7770 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 z z->xiu(`9ICwh4XkWxYCDj`yx@Y0h;}R1GZdya1LVRTJ^Wbn(A8}g$VsVcp3HOBtB&l~Hj@s7O z*W3J$qqJ`j2uTlO`-b=o0wxa{V8X6k5wu~-_lRly}dJ|1FQuy-H(*2nD zs%4%1|0CJsyUT-ubR?phMSiI6dZa#1Vb@kdgAi2E;v}ny0(&u_crp!0Bo^5iG{wu$ zMDjfc8=K-vjnePLXhOQUY1sNN2QZ9Zf{qNa9?f9u?Z%GBOVojSx@I3A7x#;3mo30G zKsC#~zO0OELDKa%?>xoEudiRf+6^R>m6t2c6{!Cc^bRi*UW}ykDOY!LqvC+=gGWb4 z@y(TJev$gbl!J&_qxgK-?UU;9aB+KEDy%!Q{=VubG%=s>R$f#Ac>rH{oW&P~J23Ug zkW~=8M>2Yin8X2Kf>^Bki(n!q1_rN9CoTGYzGC>oYeyuz4Tu4#Fm2(gb5&Ne856_9 zErI6_U@$l&MDCT7QNLiS$7&~?aq#XhCMPZ)p7=2?E-uCTRd?R_1-k3#G0$ulE4e{~umtO zG5?WiS5Cx5{mMhT4jm%bSsFkh#83Yzzo^I?SvZh1hRZr(5&n0B&QPZF-HR7BkyOJh zVqY^4Q?Ta!!R`s>C(HG*n33Q1htQVAfB5PdZpz6 z>E+=sgxS-j8$j79?_|W_%`WX8znU6CLyE8H-IqURW*YJ8-=6_A;MJJZ($WTkxO7$J zUv|Qq##j%F(jg@ZDS@2r?d@x-wL&N|JYe1HqvdeH6S__5?mvmAI7h@RwKAn@90s9P{;7w@?#H9I{5qh zm(mH5PrG<5w?=LkWU)Nq{JSw7O1{I#uSQjP*>D1;H9F%$x%P$`Jy zpEFSeeW4>HlWtFoMnq3FW&SzqKY6rPJ{{{<$pzBKefmTkz~$L9*|PgSVtJ?s?!7<5 z1%AH!(Ap{mD@$Oli%9F1B5~JT#=pV2iMho}LD8toL?#u2*-c^Nd_q1$npqn5ldvI9 zmj$AH`G`2~BU}S(imW4glEOB7)G+lEN`@3iNUV#Ze*Mye;m2Va1o?dEk23mh4D28* zz)O#!B3~nuLv}h+Rc;_2idwyizxVU<3x8bJPssHdQTyRA$;w(S@YS*Di#Q5_DNSv= zxmf7P$)A}JKypCQ-^+Jy^WT5*iR?xP~AuU>Gg>`8Pna&Sfr1$yr%a5`8&Vl zntzIXZoJYdNe9c7r3U<7-wdOhrpLdcA;|r4v6q*ezO=N|wDmeHAgf_Qi<#I7#3m~A zXs%=2iWEoNUPV3AyZdfMTyA~tsOeEr_==oG@7r?+2BH@Bxdrm{)i{@Fb3`Azg+A9z5pV$4 zy<2s0-d>rNuZyK}b)H1ghV0B(Q#l--u z&xXFDtU`b3&C$SZx?eg?nB1oko5R1d^)_8yQ(X_~=B6<@hjn#4dwX|E>v&(jWHU2! zAM69doC@Bn^zNKDHZ%z268QS;xh_psAc>w)fJVS*%h1lSv7xcSC$evwK(!r`Ga8ZL zHNt*^0iN(eKM`&cJ)&DP_LP@*%ed*1)dG9RA%;S-cfi)EW}GHQKIZ0DBbA+jx2OkDQj5!Nw;<8iAYNe#}Ba`A4@)d861la0WVauzo@RnkIB&VfI2 zWC!wWL|v%bIy7w?eN7|AnL>uRg$R2xIq%d;(lo5tH-Cj`J(UDik3fSU4;G>8<2Ez1 zJtvnEG74b~Cgrvki;VGH(Icm;Gi5{+o0!k2Hp#o+`;wkN-Ku d|8Ni;g$~z}`fNWAjvPTzf2pHVrDPlSe*jYF>Y4xm literal 0 HcmV?d00001 From e5e43a408244aacd88825f37840d05dd5fe6c746 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 16:54:33 -0700 Subject: [PATCH 17/83] Enhance agent sessions viewer with new styling and options for session badges and icons --- .../sessions/browser/media/sessionsViewer.css | 57 +++++++++++++++++++ .../sessions/browser/sessionsViewPane.ts | 4 ++ .../agentSessions/agentSessionsControl.ts | 5 +- .../agentSessions/agentSessionsViewer.ts | 51 ++++++++++++++++- .../media/agentsessionsviewer.css | 12 ++++ .../agentSessionsViewer.fixture.ts | 2 +- 6 files changed, 126 insertions(+), 5 deletions(-) create mode 100644 src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css diff --git a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css new file mode 100644 index 00000000000..992ed6a9e7e --- /dev/null +++ b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css @@ -0,0 +1,57 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +/* Sessions-app-specific overrides for the agent sessions viewer. + * These styles only apply within the agent-sessions-workbench context. */ + +.agent-sessions-workbench { + + /* Show-more / show-less: centered text with horizontal line decoration */ + .agent-session-show-more { + position: relative; + justify-content: center; + padding: 0; + + .agent-session-show-more-label { + position: relative; + z-index: 1; + padding: 0 6px; + background: var(--vscode-sideBar-background, var(--vscode-editor-background)); + font-size: 11px; + color: var(--vscode-descriptionForeground); + } + + &::before { + content: ''; + position: absolute; + left: 0; + right: 0; + top: 50%; + height: 1px; + background: var(--vscode-widget-border, var(--vscode-contrastBorder)); + } + } + + /* Brighter text on direct hover */ + .agent-session-show-more:hover .agent-session-show-more-label { + color: var(--vscode-foreground); + } + + /* Time labels: hidden by default, shown on card hover */ + .agent-session-item .agent-session-status { + opacity: 0; + transition: opacity 0.15s; + } + + .monaco-list-row:hover .agent-session-item .agent-session-status, + .monaco-list-row.focused .agent-session-item .agent-session-status { + opacity: 1; + } + + /* Hide separators before time when time is hidden */ + .agent-session-item .agent-session-status.has-separator::before { + content: none; + } +} diff --git a/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts b/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts index 880b52eae3b..f8357ab0c1c 100644 --- a/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts +++ b/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import './media/sessionsViewPane.css'; +import './media/sessionsViewer.css'; import * as DOM from '../../../../base/browser/dom.js'; import { Codicon } from '../../../../base/common/codicons.js'; import { KeyCode, KeyMod } from '../../../../base/common/keyCodes.js'; @@ -169,6 +170,9 @@ export class AgenticSessionsViewPane extends ViewPane { disableHover: true, enableApprovalRow: true, repositoryGroupLimit: AgentSessionsDataSource.REPOSITORY_GROUP_LIMIT, + hideSectionCount: true, + hideSessionBadge: true, + useStatusOnlyIcons: true, getHoverPosition: () => this.getSessionHoverPosition(), trackActiveEditorSession: () => true, collapseOlderSections: () => true, diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index 0c8831f10e1..7c8f6cea388 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -50,6 +50,9 @@ export interface IAgentSessionsControlOptions { readonly disableHover?: boolean; readonly enableApprovalRow?: boolean; readonly repositoryGroupLimit?: number; + readonly hideSectionCount?: boolean; + readonly hideSessionBadge?: boolean; + readonly useStatusOnlyIcons?: boolean; getHoverPosition(): HoverPosition; trackActiveEditorSession(): boolean; @@ -270,7 +273,7 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo new AgentSessionsCompressionDelegate(), [ sessionRenderer, - this.instantiationService.createInstance(AgentSessionSectionRenderer), + this.instantiationService.createInstance(AgentSessionSectionRenderer, { hideSectionCount: this.options.hideSectionCount }), new AgentSessionShowMoreRenderer(), new AgentSessionShowLessRenderer(), ], diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts index 449161e8532..3a3de309ded 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts @@ -68,6 +68,7 @@ interface IAgentSessionItemTemplate { readonly titleToolbar: MenuWorkbenchToolBar; // Column 2 Row 2 + readonly detailsIcon: HTMLElement; readonly diffContainer: HTMLElement; readonly diffAddedSpan: HTMLSpanElement; readonly diffRemovedSpan: HTMLSpanElement; @@ -88,6 +89,8 @@ interface IAgentSessionItemTemplate { export interface IAgentSessionRendererOptions { readonly disableHover?: boolean; + readonly hideSessionBadge?: boolean; + readonly useStatusOnlyIcons?: boolean; getHoverPosition(): HoverPosition; isGroupedByRepository?(): boolean; @@ -144,6 +147,7 @@ export class AgentSessionRenderer extends Disposable implements ICompressibleTre h('div.agent-session-title-toolbar@titleToolbar'), ]), h('div.agent-session-details-row', [ + h('div.agent-session-details-icon@detailsIcon'), h('div.agent-session-badge@badge'), h('span.agent-session-separator@separator'), h('div.agent-session-diff-container@diffContainer', @@ -178,6 +182,7 @@ export class AgentSessionRenderer extends Disposable implements ICompressibleTre title: disposables.add(new IconLabel(elements.title, { supportHighlights: true, supportIcons: true })), pinnedIndicator: elements.pinnedIndicator, titleToolbar, + detailsIcon: elements.detailsIcon, badge: elements.badge, separator: elements.separator, diffContainer: elements.diffContainer, @@ -207,8 +212,15 @@ export class AgentSessionRenderer extends Disposable implements ICompressibleTre // Archived template.element.classList.toggle('archived', session.element.isArchived()); - // Icon - template.icon.className = `agent-session-icon ${ThemeIcon.asClassName(this.getIcon(session.element))}${session.element.status === AgentSessionStatus.NeedsInput ? ' needs-input' : ''}`; + // Icon — in status-only mode, show status indicator in icon column and session type icon in details row + if (this.options.useStatusOnlyIcons) { + template.icon.className = `agent-session-icon ${ThemeIcon.asClassName(this.getStatusIcon(session.element))}${session.element.status === AgentSessionStatus.NeedsInput ? ' needs-input' : ''}`; + template.detailsIcon.className = `agent-session-details-icon ${ThemeIcon.asClassName(session.element.icon)}`; + template.detailsIcon.classList.add('visible'); + } else { + template.icon.className = `agent-session-icon ${ThemeIcon.asClassName(this.getIcon(session.element))}${session.element.status === AgentSessionStatus.NeedsInput ? ' needs-input' : ''}`; + template.detailsIcon.className = 'agent-session-details-icon'; + } // Title const markdownTitle = new MarkdownString(session.element.label); @@ -279,6 +291,10 @@ export class AgentSessionRenderer extends Disposable implements ICompressibleTre } private renderBadge(session: ITreeNode, template: IAgentSessionItemTemplate): boolean { + if (this.options.hideSessionBadge) { + return false; + } + const badge = session.element.badge; if (!badge) { return false; @@ -383,6 +399,26 @@ export class AgentSessionRenderer extends Disposable implements ICompressibleTre return session.icon; } + private getStatusIcon(session: IAgentSession): ThemeIcon { + if (session.status === AgentSessionStatus.InProgress) { + return Codicon.sessionInProgress; + } + + if (session.status === AgentSessionStatus.NeedsInput) { + return Codicon.circleFilled; + } + + if (session.status === AgentSessionStatus.Failed) { + return Codicon.error; + } + + if (!session.isRead() && !session.isArchived()) { + return Codicon.circleFilled; + } + + return Codicon.circleSmallFilled; + } + private renderDescription(session: ITreeNode, template: IAgentSessionItemTemplate): boolean { const description = session.element.description; if (description) { @@ -587,6 +623,10 @@ interface IAgentSessionSectionTemplate { readonly disposables: IDisposable; } +export interface IAgentSessionSectionRendererOptions { + readonly hideSectionCount?: boolean; +} + export class AgentSessionSectionRenderer implements ICompressibleTreeRenderer { static readonly TEMPLATE_ID = 'agent-session-section'; @@ -594,6 +634,7 @@ export class AgentSessionSectionRenderer implements ICompressibleTreeRenderer Date: Tue, 24 Mar 2026 16:57:35 -0700 Subject: [PATCH 18/83] Refactor show-more/show-less styles for improved visibility and hover effects --- .../sessions/browser/media/sessionsViewer.css | 35 ++++++++++++------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css index 992ed6a9e7e..22fd7f54129 100644 --- a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css +++ b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css @@ -8,34 +8,45 @@ .agent-sessions-workbench { - /* Show-more / show-less: centered text with horizontal line decoration */ + /* Show-more / show-less: hidden by default, reveal on own row hover with line decoration */ .agent-session-show-more { position: relative; justify-content: center; - padding: 0; + padding: 0 6px; + opacity: 0; + transition: opacity 0.15s; .agent-session-show-more-label { - position: relative; - z-index: 1; - padding: 0 6px; - background: var(--vscode-sideBar-background, var(--vscode-editor-background)); font-size: 11px; color: var(--vscode-descriptionForeground); + flex-shrink: 0; } - &::before { + /* Lines on both sides of the text */ + &::before, + &::after { content: ''; - position: absolute; - left: 0; - right: 0; - top: 50%; + flex: 1; height: 1px; background: var(--vscode-widget-border, var(--vscode-contrastBorder)); } + + &::before { + margin-right: 6px; + } + + &::after { + margin-left: 6px; + } + } + + /* Show on row hover */ + .monaco-list-row:hover .agent-session-show-more { + opacity: 1; } /* Brighter text on direct hover */ - .agent-session-show-more:hover .agent-session-show-more-label { + .monaco-list-row:hover .agent-session-show-more:hover .agent-session-show-more-label { color: var(--vscode-foreground); } From e2226f71d37bb2d57f3ed899b6fb70670df28926 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 17:00:18 -0700 Subject: [PATCH 19/83] Refactor agent session show-more styles for improved animation and visibility --- .../console-2026-03-24T23-59-36-992Z.log | 37 ++++++++++++++++ .../sessions/browser/media/sessionsViewer.css | 43 +++++++++++-------- 2 files changed, 63 insertions(+), 17 deletions(-) create mode 100644 .playwright-mcp/console-2026-03-24T23-59-36-992Z.log diff --git a/.playwright-mcp/console-2026-03-24T23-59-36-992Z.log b/.playwright-mcp/console-2026-03-24T23-59-36-992Z.log new file mode 100644 index 00000000000..b2c791c898d --- /dev/null +++ b/.playwright-mcp/console-2026-03-24T23-59-36-992Z.log @@ -0,0 +1,37 @@ +[ 82ms] [WARNING] Failed to decode character for dithering.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 82ms] [WARNING] Failed to decode character for index.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 82ms] [WARNING] Failed to decode character for onboarding.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 82ms] [WARNING] Failed to decode character for onboarding_orig.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 82ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 82ms] [WARNING] Failed to decode character for codicon.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 82ms] [WARNING] Failed to decode character for default fontCharacter: \E023 @ http://127.0.0.1:5500/:10014 +[ 82ms] [WARNING] Failed to decode character for seti.woff fontCharacter: \E033 @ http://127.0.0.1:5500/:10014 +[ 82ms] [WARNING] Failed to decode character for vs-seti-icon-theme.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 82ms] [WARNING] Failed to decode character for vs-seti-icon-theme.truncated.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 82ms] [WARNING] Failed to decode character for update.md fontCharacter: \E060 @ http://127.0.0.1:5500/:10014 +[ 82ms] [WARNING] Failed to decode character for vscode.svg fontCharacter: \E091 @ http://127.0.0.1:5500/:10014 +[ 82ms] [WARNING] Failed to decode character for dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 82ms] [WARNING] Failed to decode character for less-dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 82ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 82ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 +[ 82ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 83ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 83ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 +[ 83ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 83ms] [WARNING] Failed to decode character for dithering.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 83ms] [WARNING] Failed to decode character for index.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 83ms] [WARNING] Failed to decode character for onboarding.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 83ms] [WARNING] Failed to decode character for onboarding_orig.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 83ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 83ms] [WARNING] Failed to decode character for codicon.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 83ms] [WARNING] Failed to decode character for default fontCharacter: \E023 @ http://127.0.0.1:5500/:10014 +[ 83ms] [WARNING] Failed to decode character for seti.woff fontCharacter: \E033 @ http://127.0.0.1:5500/:10014 +[ 83ms] [WARNING] Failed to decode character for vs-seti-icon-theme.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 83ms] [WARNING] Failed to decode character for vs-seti-icon-theme.truncated.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 83ms] [WARNING] Failed to decode character for update.md fontCharacter: \E060 @ http://127.0.0.1:5500/:10014 +[ 83ms] [WARNING] Failed to decode character for vscode.svg fontCharacter: \E091 @ http://127.0.0.1:5500/:10014 +[ 83ms] [WARNING] Failed to decode character for dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 83ms] [WARNING] Failed to decode character for less-dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 84ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 84ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 +[ 84ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 diff --git a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css index 22fd7f54129..d021e23430c 100644 --- a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css +++ b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css @@ -8,17 +8,25 @@ .agent-sessions-workbench { - /* Show-more / show-less: hidden by default, reveal on own row hover with line decoration */ + /* + * Show-more / show-less: collapsed to a thin line by default, + * animates open on hover with height + font-size + color transitions. + * Mirrors the prototype's `.sessions-group-stub` pattern. + */ .agent-session-show-more { - position: relative; justify-content: center; padding: 0 6px; - opacity: 0; - transition: opacity 0.15s; + height: 1px; + font-size: 0; + color: transparent; + overflow: hidden; + position: relative; + transition: height 0.15s, font-size 0.15s, color 0.15s; .agent-session-show-more-label { - font-size: 11px; - color: var(--vscode-descriptionForeground); + position: relative; + z-index: 1; + padding: 0 6px; flex-shrink: 0; } @@ -29,24 +37,25 @@ flex: 1; height: 1px; background: var(--vscode-widget-border, var(--vscode-contrastBorder)); - } - - &::before { - margin-right: 6px; - } - - &::after { - margin-left: 6px; + opacity: 0; + transition: opacity 0.15s; } } - /* Show on row hover */ + /* Expand on row hover — animate height, font-size, color */ .monaco-list-row:hover .agent-session-show-more { - opacity: 1; + height: 20px; + font-size: 11px; + color: var(--vscode-descriptionForeground); + + &::before, + &::after { + opacity: 1; + } } /* Brighter text on direct hover */ - .monaco-list-row:hover .agent-session-show-more:hover .agent-session-show-more-label { + .monaco-list-row:hover .agent-session-show-more:hover { color: var(--vscode-foreground); } From 07489f90f723ff93f210f796f3b1b2b81e4dbbe2 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 17:03:15 -0700 Subject: [PATCH 20/83] Add compact show-more option for improved session viewer layout --- .../contrib/sessions/browser/media/sessionsViewer.css | 6 +++--- .../contrib/sessions/browser/sessionsViewPane.ts | 1 + .../chat/browser/agentSessions/agentSessionsControl.ts | 3 ++- .../chat/browser/agentSessions/agentSessionsViewer.ts | 9 ++++++--- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css index d021e23430c..17404f12528 100644 --- a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css +++ b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css @@ -11,15 +11,15 @@ /* * Show-more / show-less: collapsed to a thin line by default, * animates open on hover with height + font-size + color transitions. - * Mirrors the prototype's `.sessions-group-stub` pattern. + * The list row is only 4px tall so the gap is minimal. */ .agent-session-show-more { justify-content: center; padding: 0 6px; - height: 1px; + height: 4px; font-size: 0; color: transparent; - overflow: hidden; + overflow: visible; position: relative; transition: height 0.15s, font-size 0.15s, color 0.15s; diff --git a/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts b/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts index f8357ab0c1c..6fb92ed1544 100644 --- a/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts +++ b/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts @@ -173,6 +173,7 @@ export class AgenticSessionsViewPane extends ViewPane { hideSectionCount: true, hideSessionBadge: true, useStatusOnlyIcons: true, + compactShowMore: true, getHoverPosition: () => this.getSessionHoverPosition(), trackActiveEditorSession: () => true, collapseOlderSections: () => true, diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index 7c8f6cea388..ff4ff2003ea 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -53,6 +53,7 @@ export interface IAgentSessionsControlOptions { readonly hideSectionCount?: boolean; readonly hideSessionBadge?: boolean; readonly useStatusOnlyIcons?: boolean; + readonly compactShowMore?: boolean; getHoverPosition(): HoverPosition; trackActiveEditorSession(): boolean; @@ -269,7 +270,7 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo const list = this.sessionsList = this._register(this.instantiationService.createInstance(WorkbenchCompressibleAsyncDataTree, 'AgentSessionsView', container, - new AgentSessionsListDelegate(approvalModel), + new AgentSessionsListDelegate(approvalModel, this.options.compactShowMore), new AgentSessionsCompressionDelegate(), [ sessionRenderer, diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts index 3a3de309ded..ccadcc8a033 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts @@ -794,7 +794,10 @@ export class AgentSessionsListDelegate implements IListVirtualDelegate Date: Tue, 24 Mar 2026 17:04:42 -0700 Subject: [PATCH 21/83] Refactor agent sessions viewer to simplify show-more functionality and improve hover reveal effects --- .../sessions/browser/media/sessionsViewer.css | 23 ++++++++----------- .../sessions/browser/sessionsViewPane.ts | 1 - .../agentSessions/agentSessionsControl.ts | 3 +-- .../agentSessions/agentSessionsViewer.ts | 9 +++----- 4 files changed, 14 insertions(+), 22 deletions(-) diff --git a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css index 17404f12528..2292e6b58fc 100644 --- a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css +++ b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css @@ -9,25 +9,22 @@ .agent-sessions-workbench { /* - * Show-more / show-less: collapsed to a thin line by default, - * animates open on hover with height + font-size + color transitions. - * The list row is only 4px tall so the gap is minimal. + * Show-more / show-less: content hidden by default, + * reveals on hover with transitions. Row keeps full 26px height + * but text + lines are invisible until hovered. */ .agent-session-show-more { justify-content: center; padding: 0 6px; - height: 4px; - font-size: 0; - color: transparent; - overflow: visible; - position: relative; - transition: height 0.15s, font-size 0.15s, color 0.15s; .agent-session-show-more-label { position: relative; z-index: 1; padding: 0 6px; flex-shrink: 0; + font-size: 11px; + color: transparent; + transition: color 0.15s; } /* Lines on both sides of the text */ @@ -42,11 +39,11 @@ } } - /* Expand on row hover — animate height, font-size, color */ + /* Reveal on row hover */ .monaco-list-row:hover .agent-session-show-more { - height: 20px; - font-size: 11px; - color: var(--vscode-descriptionForeground); + .agent-session-show-more-label { + color: var(--vscode-descriptionForeground); + } &::before, &::after { diff --git a/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts b/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts index 6fb92ed1544..f8357ab0c1c 100644 --- a/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts +++ b/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts @@ -173,7 +173,6 @@ export class AgenticSessionsViewPane extends ViewPane { hideSectionCount: true, hideSessionBadge: true, useStatusOnlyIcons: true, - compactShowMore: true, getHoverPosition: () => this.getSessionHoverPosition(), trackActiveEditorSession: () => true, collapseOlderSections: () => true, diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index ff4ff2003ea..7c8f6cea388 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -53,7 +53,6 @@ export interface IAgentSessionsControlOptions { readonly hideSectionCount?: boolean; readonly hideSessionBadge?: boolean; readonly useStatusOnlyIcons?: boolean; - readonly compactShowMore?: boolean; getHoverPosition(): HoverPosition; trackActiveEditorSession(): boolean; @@ -270,7 +269,7 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo const list = this.sessionsList = this._register(this.instantiationService.createInstance(WorkbenchCompressibleAsyncDataTree, 'AgentSessionsView', container, - new AgentSessionsListDelegate(approvalModel, this.options.compactShowMore), + new AgentSessionsListDelegate(approvalModel), new AgentSessionsCompressionDelegate(), [ sessionRenderer, diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts index ccadcc8a033..3a3de309ded 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts @@ -794,10 +794,7 @@ export class AgentSessionsListDelegate implements IListVirtualDelegate Date: Tue, 24 Mar 2026 17:05:32 -0700 Subject: [PATCH 22/83] chat customizations: improve agentic engineering dev loop (#304305) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix #304030: show custom agent names as-is without title-casing formatDisplayName was converting dashes/underscores to spaces and applying title case (e.g. nls-code-helper → Nls Code Helper). This made names inconsistent between the customization view and the agent dropdown. Now only strips .md extension, showing names exactly as defined in frontmatter headers. * fix #304131: show workspace-relative paths in customization tooltips Workspace items now show paths relative to the project root (e.g. .github/instructions/coding-standards.instructions.md) instead of absolute paths (/Users/.../workspace/.github/...). * fix #304133: show extension name instead of full path in tooltips Extension items now show 'Extension: github.copilot-chat' in the tooltip instead of the full filesystem path into the extension directory. The extensionLabel is populated from the extensionIdByUri map during item post-processing. * fix #304178: use save icon instead of ambiguous checkmark The editor save indicator now uses Codicon.save (floppy disk) instead of Codicon.check (bare checkmark), making it clear that the indicator is about save status rather than an enable/disable toggle. * fix #304183: show user-scoped hooks in sessions window HOOKS_FILTER excluded PromptsStorage.user, so hooks in ~/.copilot/hooks/ were filtered out in the sessions window (and any harness using the restricted filter). User hooks are now supported in CLI, so add user storage to the allowed sources. * fix: improve list layout footer fallback and remove extension tooltip - Use 80px footer height fallback instead of 0 when sectionHeader has not rendered yet, preventing list from overlapping the footer on first paint - Wait for async section load in fixture before final layout - Remove extensionLabel tooltip (implementation detail, not relevant to users) * fix #304178: show loading spinner before saved icon, remove green color The save indicator now shows a spinning loading animation while the file is being saved (onDidChangeDirty dirty→clean transition), then switches to the save icon when the save completes (onDidSave). The special green color was removed to use the default description foreground color instead. * fix: simplify list layout to use CSS flex instead of manual height calculation All three list widgets (AICustomizationListWidget, McpListWidget, PluginListWidget) now rely on CSS flex layout to distribute space between search bar, list container, and footer. The layout() method sets the widget height, clears any manual list container height, and reads clientHeight (forcing a synchronous reflow) to get the flex-computed height for the WorkbenchList. This eliminates hardcoded fallback values, requestAnimationFrame correction loops, and manual offsetHeight arithmetic that caused the list to overlap the footer on first render. * revert: drop save indicator icon changes (#304178) Reverts the checkmark→save icon change, the loading spinner, and the green color removal. The save indicator is back to the original Codicon.check with green color — this will be addressed separately. * fix: show Built-in/Extension name in tooltips, fix MCP scroll, hide copy path for built-in - Built-in items show 'Built-in' in tooltip instead of file path - Non-built-in extension items show 'Extension: {displayName}' - Copy path context menu hidden for built-in items - Fix MCP/Plugin scroll: fall back to passed height when container is hidden (display:none → clientHeight=0), and re-layout when section becomes visible via selectSectionById - Remove unused resolveExtensionGroupKey method * fix: use explicit height calculation for list layout instead of flex clientHeight The flex-based clientHeight approach was unreliable — reflow timing varied between the component explorer and the real product, causing the list to clip behind the footer at certain window sizes. Reverts to explicit height calculation by measuring sibling elements (search bar, footer, back link) via offsetHeight and subtracting from total height. For hidden widgets (MCP/Plugin when not the active tab), layout is skipped since offsetHeight returns 0; the selectSectionById re-layout handles showing them later. Removes the rAF wait from the fixture since explicit measurement doesn't depend on paint timing. * Stabilize AI customizations editor fixtures * Add narrow viewport fixture variants and fix widget overflow clipping * fix: defer layout when offsetHeight returns 0 during display:none → visible transition When switching sections in the Chat Customizations editor, the container transitions from display:none to visible. The layout method fires synchronously before the browser has reflowed, causing offsetHeight to return 0 for sibling elements. Previously, layout bailed out entirely, leaving the virtual list with no viewport height — resulting in missing rows and empty space. Now defers layout to the next animation frame so measurements are accurate after the reflow completes. * skill: add live debugging workflow to chat-customizations-editor skill * skill: reference launch skill instead of duplicating agent-browser docs * skill: add fixture gotchas — built-in grouping, editor contribution mocks, screenshot stability * ci: add blocksCi labels to key customization fixtures for automated regression gating * refactor: replace type assertion mutations with immutable map in applyBuiltinGroupKeys * fix: show extension display name instead of ID for agent extension source labels --- .../chat-customizations-editor/SKILL.md | 93 +++++++ .../aiCustomizationListWidget.ts | 151 ++++++----- .../aiCustomizationManagementEditor.ts | 18 ++ .../browser/aiCustomization/mcpListWidget.ts | 43 +-- .../media/aiCustomizationManagement.css | 2 + .../aiCustomization/pluginListWidget.ts | 39 +-- .../common/customizationHarnessService.ts | 4 +- ...aiCustomizationManagementEditor.fixture.ts | 246 ++++++++++++++++-- 8 files changed, 467 insertions(+), 129 deletions(-) diff --git a/.github/skills/chat-customizations-editor/SKILL.md b/.github/skills/chat-customizations-editor/SKILL.md index 16f1d82da3a..8d4ce8edda1 100644 --- a/.github/skills/chat-customizations-editor/SKILL.md +++ b/.github/skills/chat-customizations-editor/SKILL.md @@ -79,6 +79,49 @@ Each customization type requires its own mock path in `createMockPromptsService` All test data lives in `allFiles` (prompt-based items) and the `mcpWorkspace/UserServers` arrays. Add enough items per category (8+) to invoke scrolling. +### Exercising built-in grouping + +The list widget regroups items from the default chat extension under a "Built-in" header. Three things must be in place for fixtures to exercise this: +1. Include `BUILTIN_STORAGE` in the harness descriptor's visible sources +2. Mock `IProductService.defaultChatAgent.chatExtensionId` (e.g., `'GitHub.copilot-chat'`) +3. Give mock items extension provenance via `extensionId` / `extensionDisplayName` matching that ID + +Without all three, built-in regrouping silently doesn't run and the fixture only shows flat lists. + +### Editor contribution service mocks + +The management editor embeds a `CodeEditorWidget`. Electron-side editor contributions (e.g., `AgentFeedbackEditorWidgetContribution`) are instantiated automatically and crash if their injected services aren't registered. The fixture must mock at minimum: +- `IAgentFeedbackService` — needs `onDidChangeFeedback`, `onDidChangeNavigation` as `Event.None` +- `ICodeReviewService` — needs `getReviewState()` / `getPRReviewState()` returning idle observables +- `IChatEditingService` — needs `editingSessionsObs` as empty observable +- `IAgentSessionsService` — needs `model.sessions` as empty array + +These are cross-layer imports from `vs/sessions/` — use `// eslint-disable-next-line local/code-import-patterns` on the import lines. + +### CI regression gates + +Key fixtures have `blocksCi: true` in their labels. The `screenshot-test.yml` GitHub Action captures screenshots on every PR to `main` and **fails the CI status check** if any `blocks-ci`-labeled fixture's screenshot changes. This catches layout regressions automatically. + +Currently gated fixtures: `LocalHarness`, `McpServersTab`, `McpServersTabNarrow`, `AgentsTabNarrow`. When adding a new section or layout-critical fixture, add `blocksCi: true`: + +```typescript +MyFixture: defineComponentFixture({ + labels: { kind: 'screenshot', blocksCi: true }, + render: ctx => renderEditor(ctx, { ... }), +}), +``` + +Don't add `blocksCi` to every fixture — only ones that cover critical layout paths (default view, section with list + footer, narrow viewport). Too many gated fixtures creates noisy CI. + +### Screenshot stability + +Scrollbar fade transitions cause screenshot instability — the scrollbar shifts from `visible` to `invisible fade` class ~2 seconds after a programmatic scroll. After calling `revealLastItem()` or any scroll action, wait for the transition to complete before the fixture's render promise resolves: + +```typescript +await new Promise(resolve => setTimeout(resolve, 2400)); +// Then optionally poll until .scrollbar.vertical loses the 'visible' class +``` + ### Running unit tests ```bash @@ -87,3 +130,53 @@ npm run compile-check-ts-native && npm run valid-layers-check ``` See the `sessions` skill for sessions-window specific guidance. + +## Debugging Layout in the Real Product + +Component fixtures use mock data and a fixed container size. Layout bugs caused by reflow timing, real data shapes, or narrow window sizes often **don't reproduce in fixtures**. When a user reports a broken layout, debug in the live Code OSS product. + +For launching Code OSS with CDP and connecting `agent-browser`, see the **`launch` skill**. Use `--user-data-dir /tmp/code-oss-debug` to avoid colliding with an already-running instance from another worktree. + +### Navigating to the customizations editor + +After connecting, use `snapshot -i` to find the "Open Customizations" button (in the Chat panel header), then click it. To switch sections, use `eval` with a DOM click since sidebar items aren't interactive refs: + +```bash +npx agent-browser eval "const items = [...document.querySelectorAll('.section-list-item')]; \ + items.find(el => el.textContent?.includes('MCP'))?.click();" +``` + +### Inspecting widget layout + +`agent-browser eval` doesn't always print return values. Use `document.title` as a return channel: + +```bash +npx agent-browser eval "const w = document.querySelector('.mcp-list-widget'); \ + const lc = w?.querySelector('.mcp-list-container'); \ + const rows = lc?.querySelectorAll('.monaco-list-row'); \ + document.title = 'DBG:rows=' + (rows?.length ?? -1) \ + + ',listH=' + (lc?.offsetHeight ?? -1) \ + + ',seStH=' + (lc?.querySelector('.monaco-scrollable-element')?.style?.height ?? '') \ + + ',wH=' + (w?.offsetHeight ?? -1);" +npx agent-browser eval "document.title" 2>&1 +``` + +Key diagnostics: +- **`rows`** — fewer than expected means `list.layout()` never received the correct viewport height. +- **`seStH`** — empty means the list was never properly laid out. +- **`listH` vs `wH`** — list container height should be widget height minus search bar minus footer. + +### Common layout issues + +| Symptom | Root cause | Fix pattern | +|---------|-----------|-------------| +| List shows 0-1 rows in a tall container | `layout()` bailed out because `offsetHeight` returned 0 during `display:none → visible` transition | Defer layout via `DOM.getWindow(this.element).requestAnimationFrame(...)` | +| Badge or row content clips at right edge | Widget container missing `overflow: hidden` | Add `overflow: hidden` to the widget's CSS class | +| Items visible in fixture but not in product | Fixture uses many mock items; real product has few | Add fixture variants with fewer items or narrower dimensions (`width`/`height` options) | + +### Fixture vs real product gaps + +Fixtures render at a fixed size (default 900×600) with many mock items. They won't catch: +- **Reflow timing** — the real product's `display:none → visible` transition may not have reflowed before `layout()` fires +- **Narrow windows** — add narrow fixture variants (e.g., `width: 550, height: 400`) +- **Real data counts** — a user with 1 MCP server sees very different layout than a fixture with 12 diff --git a/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.ts b/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.ts index f0587f7f68c..1c7cb87c835 100644 --- a/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.ts @@ -108,6 +108,10 @@ export interface IAICustomizationListItem { readonly badgeTooltip?: string; /** When set, overrides the default prompt-type icon. */ readonly typeIcon?: ThemeIcon; + /** True when item comes from the default chat extension (grouped under Built-in). */ + readonly isBuiltin?: boolean; + /** Display name of the contributing extension (for non-built-in extension items). */ + readonly extensionLabel?: string; nameMatches?: IMatch[]; descriptionMatches?: IMatch[]; } @@ -266,16 +270,12 @@ function storageToIcon(storage: PromptsStorage): ThemeIcon { } /** - * Formats a name for display: strips a trailing .md extension, converts dashes/underscores - * to spaces and applies title case. - * Note: callers that pass IMatch highlight ranges must compute those ranges against the - * formatted string (not the raw input), since .md stripping changes string length. + * Formats a name for display by stripping a trailing .md extension. + * Names from frontmatter headers are shown as-is to stay consistent + * with how they appear in agent dropdowns and error messages. */ export function formatDisplayName(name: string): string { - return name - .replace(/\.md$/i, '') - .replace(/[-_]/g, ' ') - .replace(/\b\w/g, c => c.toUpperCase()); + return name.replace(/\.md$/i, ''); } /** @@ -334,10 +334,18 @@ class AICustomizationItemRenderer implements IListRenderer { - const uriLabel = this.labelService.getUriLabel(element.uri, { relative: false }); - let content = `${element.name}\n${uriLabel}`; + let content: string; + if (element.isBuiltin) { + content = `${element.name}\n${localize('builtinSource', "Built-in")}`; + } else if (element.extensionLabel) { + content = `${element.name}\n${localize('fromExtension', "Extension: {0}", element.extensionLabel)}`; + } else { + const isWorkspaceItem = element.storage === PromptsStorage.local; + const uriLabel = this.labelService.getUriLabel(element.uri, { relative: isWorkspaceItem }); + content = `${element.name}\n${uriLabel}`; + } if (element.badgeTooltip) { content += `\n\n${element.badgeTooltip}`; } @@ -739,8 +747,8 @@ export class AICustomizationListWidget extends Disposable { const { secondary } = getContextMenuActions(actions, 'inline'); - // Add copy path actions - const copyActions = [ + // Add copy path actions (not shown for built-in items where the path is an implementation detail) + const copyActions = item.isBuiltin ? [] : [ new Separator(), new Action('copyFullPath', localize('copyFullPath', "Copy Full Path"), undefined, true, async () => { await this.clipboardService.writeText(item.uri.fsPath); @@ -1062,24 +1070,6 @@ export class AICustomizationListWidget extends Disposable { return !!chatExtensionId && ExtensionIdentifier.equals(extensionId, chatExtensionId); } - /** - * Resolves the display group key for an extension-storage item. - * Items from the default chat extension are re-grouped under "Built-in"; - * all other extension items keep their original storage as group key. - * - * Returns `undefined` when no override is needed (the item will fall back - * to its `storage` value for grouping). - * - * This is the single point where extension → group mapping is decided, - * making it easy to add dynamic filter layers in the future. - */ - private resolveExtensionGroupKey(extensionId: ExtensionIdentifier | undefined): string | undefined { - if (extensionId && this.isChatExtensionItem(extensionId)) { - return BUILTIN_STORAGE; - } - return undefined; - } - /** * Post-processes items to assign groupKey overrides for extension-sourced * items. Applies the built-in grouping consistently across all item types. @@ -1088,22 +1078,28 @@ export class AICustomizationListWidget extends Disposable { * agent hooks) are left untouched — groupKey overrides are only applied to * items whose current groupKey is `undefined`. */ - private applyBuiltinGroupKeys(items: IAICustomizationListItem[], extensionIdByUri: ReadonlyMap): void { - for (const item of items) { - if (item.groupKey !== undefined) { - continue; // respect explicit groupKey from upstream (e.g. instruction categories) - } + private applyBuiltinGroupKeys(items: IAICustomizationListItem[], extensionInfoByUri: ReadonlyMap): IAICustomizationListItem[] { + return items.map(item => { if (item.storage !== PromptsStorage.extension) { - continue; + return item; } - const extId = extensionIdByUri.get(item.uri.toString()); - const override = this.resolveExtensionGroupKey(extId); - if (override) { - // IAICustomizationListItem.groupKey is readonly for consumers but - // we own the items array here, so the mutation is safe. - (item as { groupKey?: string }).groupKey = override; + const extInfo = extensionInfoByUri.get(item.uri.toString()); + if (!extInfo) { + return item; } - } + const isBuiltin = this.isChatExtensionItem(extInfo.id); + if (isBuiltin) { + return { + ...item, + isBuiltin: true, + groupKey: item.groupKey ?? BUILTIN_STORAGE, + }; + } + return { + ...item, + extensionLabel: extInfo.displayName || extInfo.id.value, + }; + }); } /** @@ -1114,12 +1110,19 @@ export class AICustomizationListWidget extends Disposable { const promptType = sectionToPromptType(section); const items: IAICustomizationListItem[] = []; const disabledUris = this.promptsService.getDisabledPromptFiles(promptType); - const extensionIdByUri = new Map(); + const extensionInfoByUri = new Map(); if (promptType === PromptsType.agent) { // Use getCustomAgents which has parsed name/description from frontmatter const agents = await this.promptsService.getCustomAgents(CancellationToken.None); + // Build extension display name lookup from raw file list + const allAgentFiles = await this.promptsService.listPromptFiles(PromptsType.agent, CancellationToken.None); + for (const file of allAgentFiles) { + if (file.extension) { + extensionInfoByUri.set(file.uri.toString(), { id: file.extension.identifier, displayName: file.extension.displayName }); + } + } for (const agent of agents) { const filename = basename(agent.uri); items.push({ @@ -1133,9 +1136,9 @@ export class AICustomizationListWidget extends Disposable { pluginUri: agent.source.storage === PromptsStorage.plugin ? agent.source.pluginUri : undefined, disabled: disabledUris.has(agent.uri), }); - // Track extension ID for built-in grouping - if (agent.source.storage === PromptsStorage.extension) { - extensionIdByUri.set(agent.uri.toString(), agent.source.extensionId); + // Track extension ID for built-in grouping (if not already set from file list) + if (agent.source.storage === PromptsStorage.extension && !extensionInfoByUri.has(agent.uri.toString())) { + extensionInfoByUri.set(agent.uri.toString(), { id: agent.source.extensionId }); } } } else if (promptType === PromptsType.skill) { @@ -1145,7 +1148,7 @@ export class AICustomizationListWidget extends Disposable { const allSkillFiles = await this.promptsService.listPromptFiles(PromptsType.skill, CancellationToken.None); for (const file of allSkillFiles) { if (file.extension) { - extensionIdByUri.set(file.uri.toString(), file.extension.identifier); + extensionInfoByUri.set(file.uri.toString(), { id: file.extension.identifier, displayName: file.extension.displayName }); } } const seenUris = new ResourceSet(); @@ -1204,7 +1207,7 @@ export class AICustomizationListWidget extends Disposable { disabled: disabledUris.has(command.promptPath.uri), }); if (command.promptPath.extension) { - extensionIdByUri.set(command.promptPath.uri.toString(), command.promptPath.extension.identifier); + extensionInfoByUri.set(command.promptPath.uri.toString(), { id: command.promptPath.extension.identifier, displayName: command.promptPath.extension.displayName }); } } } else if (promptType === PromptsType.hook) { @@ -1314,7 +1317,7 @@ export class AICustomizationListWidget extends Disposable { const promptFiles = await this.promptsService.listPromptFiles(promptType, CancellationToken.None); for (const file of promptFiles) { if (file.extension) { - extensionIdByUri.set(file.uri.toString(), file.extension.identifier); + extensionInfoByUri.set(file.uri.toString(), { id: file.extension.identifier, displayName: file.extension.displayName }); } } const agentInstructionFiles = await this.promptsService.listAgentInstructions(CancellationToken.None, undefined); @@ -1410,11 +1413,11 @@ export class AICustomizationListWidget extends Disposable { // are re-grouped under "Built-in" instead of "Extensions". // This is a single-pass transformation applied after all items are // collected, keeping the item-building code free of grouping logic. - this.applyBuiltinGroupKeys(items, extensionIdByUri); + const groupedItems = this.applyBuiltinGroupKeys(items, extensionInfoByUri); // Apply storage source filter (removes items not in visible sources or excluded user roots) const filter = this.workspaceService.getStorageSourceFilter(promptType); - const filteredItems = applyStorageSourceFilter(items, filter); + const filteredItems = applyStorageSourceFilter(groupedItems, filter); items.length = 0; items.push(...filteredItems); @@ -1706,32 +1709,36 @@ export class AICustomizationListWidget extends Disposable { } } + /** + * Scrolls the list so the last item is visible. + */ + revealLastItem(): void { + if (this.displayEntries.length > 0) { + this.list.reveal(this.displayEntries.length - 1); + } + } + /** * Layouts the widget. */ layout(height: number, width: number): void { - const sectionFooterHeight = this.sectionHeader.offsetHeight || 0; - const searchBarHeight = this.searchAndButtonContainer.offsetHeight || 52; - const listHeight = height - sectionFooterHeight - searchBarHeight; - + this.element.style.height = `${height}px`; this.searchInput.layout(); - this.listContainer.style.height = `${Math.max(0, listHeight)}px`; - this.list.layout(Math.max(0, listHeight), width); - // Re-layout once after footer renders if we used a zero fallback - if (sectionFooterHeight === 0) { - DOM.getWindow(this.listContainer).requestAnimationFrame(() => { - if (this._store.isDisposed) { - return; - } - const actualFooterHeight = this.sectionHeader.offsetHeight; - if (actualFooterHeight > 0) { - const correctedHeight = height - actualFooterHeight - searchBarHeight; - this.listContainer.style.height = `${Math.max(0, correctedHeight)}px`; - this.list.layout(Math.max(0, correctedHeight), width); - } - }); + // Measure sibling elements to calculate the remaining space for the list. + // When offsetHeight returns 0 the container just became visible + // after display:none and the browser hasn't reflowed yet — defer + // layout to the next frame so measurements are accurate. + const searchBarHeight = this.searchAndButtonContainer.offsetHeight; + if (searchBarHeight === 0) { + DOM.getWindow(this.element).requestAnimationFrame(() => this.layout(height, width)); + return; } + const footerHeight = this.sectionHeader.offsetHeight; + const listHeight = Math.max(0, height - searchBarHeight - footerHeight); + + this.listContainer.style.height = `${listHeight}px`; + this.list.layout(listHeight, width); } /** diff --git a/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.ts b/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.ts index 2896cbbef08..f5de7aec226 100644 --- a/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.ts +++ b/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.ts @@ -1281,6 +1281,11 @@ export class AICustomizationManagementEditor extends EditorPane { if (this.isPromptsSection(sectionId)) { void this.listWidget.setSection(sectionId); } + // Re-layout after visibility change so the newly-visible widget + // can measure its flex-computed container height correctly. + if (this.dimension) { + this.layout(this.dimension); + } this.ensureSectionsListReflectsActiveSection(sectionId); } } @@ -1292,6 +1297,19 @@ export class AICustomizationManagementEditor extends EditorPane { void this.listWidget.refresh(); } + /** + * Scrolls the active list widget so the last item is visible. + */ + public revealLastItem(): void { + if (this.selectedSection === AICustomizationManagementSection.McpServers) { + this.mcpListWidget?.revealLastItem(); + } else if (this.selectedSection === AICustomizationManagementSection.Plugins) { + this.pluginListWidget?.revealLastItem(); + } else { + this.listWidget.revealLastItem(); + } + } + /** * Generates a debug report for the current section. */ diff --git a/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.ts b/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.ts index a4b197e51e1..23fea69dcde 100644 --- a/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.ts @@ -891,28 +891,24 @@ export class McpListWidget extends Disposable { layout(height: number, width: number): void { this.lastHeight = height; this.lastWidth = width; - const sectionFooterHeight = this.sectionHeader.offsetHeight || 0; - const searchBarHeight = this.searchAndButtonContainer.offsetHeight || 52; - const backLinkHeight = this.browseMode ? (this.backLink.offsetHeight || 28) : 0; - const listHeight = height - sectionFooterHeight - searchBarHeight - backLinkHeight; - this.listContainer.style.height = `${Math.max(0, listHeight)}px`; - this.list.layout(Math.max(0, listHeight), width); + this.element.style.height = `${height}px`; - // Re-layout once after footer renders if we used a zero fallback - if (sectionFooterHeight === 0) { - DOM.getWindow(this.listContainer).requestAnimationFrame(() => { - if (this._store.isDisposed) { - return; - } - const actualFooterHeight = this.sectionHeader.offsetHeight; - if (actualFooterHeight > 0) { - const correctedHeight = height - actualFooterHeight - searchBarHeight - backLinkHeight; - this.listContainer.style.height = `${Math.max(0, correctedHeight)}px`; - this.list.layout(Math.max(0, correctedHeight), width); - } - }); + // Measure sibling elements to calculate the list height. + // When offsetHeight returns 0 the container just became visible + // after display:none and the browser hasn't reflowed yet — defer + // layout to the next frame so measurements are accurate. + const searchBarHeight = this.searchAndButtonContainer.offsetHeight; + if (searchBarHeight === 0) { + DOM.getWindow(this.element).requestAnimationFrame(() => this.layout(this.lastHeight, this.lastWidth)); + return; } + const footerHeight = this.sectionHeader.offsetHeight; + const backLinkHeight = this.browseMode ? this.backLink.offsetHeight : 0; + const listHeight = Math.max(0, height - searchBarHeight - footerHeight - backLinkHeight); + + this.listContainer.style.height = `${listHeight}px`; + this.list.layout(listHeight, width); } /** @@ -922,6 +918,15 @@ export class McpListWidget extends Disposable { this.searchInput.focus(); } + /** + * Scrolls the list so the last item is visible. + */ + revealLastItem(): void { + if (this.list.length > 0) { + this.list.reveal(this.list.length - 1); + } + } + /** * Focuses the list. */ diff --git a/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css b/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css index b4e17ae435e..4c6fd79b107 100644 --- a/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +++ b/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css @@ -168,6 +168,7 @@ display: flex; flex-direction: column; height: 100%; + overflow: hidden; } /* Harness dropdown in sidebar */ @@ -719,6 +720,7 @@ display: flex; flex-direction: column; height: 100%; + overflow: hidden; } .mcp-list-widget .section-footer { diff --git a/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.ts b/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.ts index a51a9f6fb0e..28ec72c3c1f 100644 --- a/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.ts @@ -710,33 +710,36 @@ export class PluginListWidget extends Disposable { layout(height: number, width: number): void { this.lastHeight = height; this.lastWidth = width; - const sectionFooterHeight = this.sectionHeader.offsetHeight || 0; - const searchBarHeight = this.searchAndButtonContainer.offsetHeight || 52; - const backLinkHeight = this.browseMode ? (this.backLink.offsetHeight || 28) : 0; - const listHeight = height - sectionFooterHeight - searchBarHeight - backLinkHeight; - this.listContainer.style.height = `${Math.max(0, listHeight)}px`; - this.list.layout(Math.max(0, listHeight), width); + this.element.style.height = `${height}px`; - if (sectionFooterHeight === 0) { - DOM.getWindow(this.listContainer).requestAnimationFrame(() => { - if (this._store.isDisposed) { - return; - } - const actualFooterHeight = this.sectionHeader.offsetHeight; - if (actualFooterHeight > 0) { - const correctedHeight = height - actualFooterHeight - searchBarHeight - backLinkHeight; - this.listContainer.style.height = `${Math.max(0, correctedHeight)}px`; - this.list.layout(Math.max(0, correctedHeight), width); - } - }); + // Measure sibling elements to calculate the list height. + // When offsetHeight returns 0 the container just became visible + // after display:none and the browser hasn't reflowed yet — defer + // layout to the next frame so measurements are accurate. + const searchBarHeight = this.searchAndButtonContainer.offsetHeight; + if (searchBarHeight === 0) { + DOM.getWindow(this.element).requestAnimationFrame(() => this.layout(this.lastHeight, this.lastWidth)); + return; } + const footerHeight = this.sectionHeader.offsetHeight; + const backLinkHeight = this.browseMode ? this.backLink.offsetHeight : 0; + const listHeight = Math.max(0, height - searchBarHeight - footerHeight - backLinkHeight); + + this.listContainer.style.height = `${listHeight}px`; + this.list.layout(listHeight, width); } focusSearch(): void { this.searchInput.focus(); } + revealLastItem(): void { + if (this.list.length > 0) { + this.list.reveal(this.list.length - 1); + } + } + focus(): void { this.list.domFocus(); if (this.list.length > 0) { diff --git a/src/vs/workbench/contrib/chat/common/customizationHarnessService.ts b/src/vs/workbench/contrib/chat/common/customizationHarnessService.ts index 0c368744fe1..31db34d4dbc 100644 --- a/src/vs/workbench/contrib/chat/common/customizationHarnessService.ts +++ b/src/vs/workbench/contrib/chat/common/customizationHarnessService.ts @@ -163,10 +163,10 @@ export interface ICustomizationHarnessService { // #region Shared filter constants /** - * Hooks are always restricted to local + plugin sources regardless of harness. + * Hooks filter — local, user, and plugin sources. */ const HOOKS_FILTER: IStorageSourceFilter = { - sources: [PromptsStorage.local, PromptsStorage.plugin], + sources: [PromptsStorage.local, PromptsStorage.user, PromptsStorage.plugin], }; // #endregion diff --git a/src/vs/workbench/test/browser/componentFixtures/aiCustomizationManagementEditor.fixture.ts b/src/vs/workbench/test/browser/componentFixtures/aiCustomizationManagementEditor.fixture.ts index 465246d562f..737a184ee5b 100644 --- a/src/vs/workbench/test/browser/componentFixtures/aiCustomizationManagementEditor.fixture.ts +++ b/src/vs/workbench/test/browser/componentFixtures/aiCustomizationManagementEditor.fixture.ts @@ -24,6 +24,7 @@ import { IWorkspace, IWorkspaceContextService, WorkbenchState } from '../../../. import { IEditorGroup } from '../../../services/editor/common/editorGroupsService.js'; import { IExtensionService } from '../../../services/extensions/common/extensions.js'; import { IProductService } from '../../../../platform/product/common/productService.js'; +import { ExtensionIdentifier } from '../../../../platform/extensions/common/extensions.js'; import { IPathService } from '../../../services/path/common/pathService.js'; import { IWorkingCopyService } from '../../../services/workingCopy/common/workingCopyService.js'; import { IWebviewService } from '../../../contrib/webview/browser/webview.js'; @@ -45,6 +46,12 @@ import { IWorkbenchLocalMcpServer, LocalMcpServerScope } from '../../../services import { McpListWidget } from '../../../contrib/chat/browser/aiCustomization/mcpListWidget.js'; import { PluginListWidget } from '../../../contrib/chat/browser/aiCustomization/pluginListWidget.js'; import { IIterativePager } from '../../../../base/common/paging.js'; +// eslint-disable-next-line local/code-import-patterns +import { IAgentFeedbackService } from '../../../../sessions/contrib/agentFeedback/browser/agentFeedbackService.js'; +// eslint-disable-next-line local/code-import-patterns +import { CodeReviewStateKind, ICodeReviewService, ICodeReviewState, IPRReviewState, PRReviewStateKind } from '../../../../sessions/contrib/codeReview/browser/codeReviewService.js'; +import { IChatEditingService } from '../../../contrib/chat/common/editing/chatEditingService.js'; +import { IAgentSessionsService } from '../../../contrib/chat/browser/agentSessions/agentSessionsService.js'; import { ComponentFixtureContext, createEditorServices, defineComponentFixture, defineThemedFixtureGroup, registerWorkbenchServices } from './fixtureUtils.js'; // Ensure theme colors & widget CSS are loaded @@ -66,6 +73,8 @@ interface IFixtureFile { readonly name?: string; readonly description?: string; readonly applyTo?: string; + readonly extensionId?: string; + readonly extensionDisplayName?: string; } function createMockEditorGroup(): IEditorGroup { @@ -74,6 +83,17 @@ function createMockEditorGroup(): IEditorGroup { }(); } +function toExtensionInfo(file: IFixtureFile): { identifier: ExtensionIdentifier; displayName?: string } | undefined { + if (!file.extensionId) { + return undefined; + } + + return { + identifier: new ExtensionIdentifier(file.extensionId), + displayName: file.extensionDisplayName, + }; +} + function createMockPromptsService(files: IFixtureFile[], agentInstructions: IResolvedAgentFile[]): IPromptsService { const applyToMap = new ResourceMap(); const descriptionMap = new ResourceMap(); @@ -84,16 +104,24 @@ function createMockPromptsService(files: IFixtureFile[], agentInstructions: IRes override readonly onDidChangeSkills = Event.None; override readonly onDidChangeInstructions = Event.None; override getDisabledPromptFiles(): ResourceSet { return new ResourceSet(); } - override async listPromptFiles(type: PromptsType) { + override async listPromptFiles(type: PromptsType, _token: CancellationToken) { return files.filter(f => f.type === type).map(f => ({ - uri: f.uri, storage: f.storage as PromptsStorage.local, type: f.type, name: f.name, description: f.description, + uri: f.uri, + storage: f.storage as PromptsStorage.local, + type: f.type, + name: f.name, + description: f.description, + extension: toExtensionInfo(f) as never, })); } override async listAgentInstructions() { return agentInstructions; } override async getCustomAgents() { return files.filter(f => f.type === PromptsType.agent).map(a => ({ uri: a.uri, name: a.name ?? 'agent', description: a.description, storage: a.storage, - source: { storage: a.storage }, + source: { + storage: a.storage, + extensionId: a.extensionId ? new ExtensionIdentifier(a.extensionId) : undefined, + }, })) as never[]; } override async parseNew(uri: URI, _token: CancellationToken): Promise { @@ -118,7 +146,7 @@ function createMockPromptsService(files: IFixtureFile[], agentInstructions: IRes override async getPromptSlashCommands(): Promise { const promptFiles = files.filter(f => f.type === PromptsType.prompt); const commands = await Promise.all(promptFiles.map(async f => { - const promptPath = { uri: f.uri, storage: f.storage, type: f.type }; + const promptPath = { uri: f.uri, storage: f.storage, type: f.type, extension: toExtensionInfo(f) as never }; const parsedPromptFile = await this.parseNew(f.uri, CancellationToken.None); return { name: f.name ?? 'prompt', @@ -164,11 +192,55 @@ function makeLocalMcpServer(id: string, label: string, scope: LocalMcpServerScop }(); } +function createMockAgentFeedbackService(): IAgentFeedbackService { + return new class extends mock() { + override readonly onDidChangeFeedback = Event.None; + override readonly onDidChangeNavigation = Event.None; + override getFeedback() { return []; } + override getMostRecentSessionForResource() { return undefined; } + override async revealFeedback(): Promise { } + override getNextFeedback() { return undefined; } + override getNavigationBearing() { return { activeIdx: -1, totalCount: 0 }; } + override getNextNavigableItem() { return undefined; } + override setNavigationAnchor(): void { } + override clearFeedback(): void { } + override removeFeedback(): void { } + override async addFeedbackAndSubmit(): Promise { } + }(); +} + +function createMockCodeReviewService(): ICodeReviewService { + return new class extends mock() { + private readonly reviewState = observableValue('fixture.reviewState', { kind: CodeReviewStateKind.Idle }); + private readonly prReviewState = observableValue('fixture.prReviewState', { kind: PRReviewStateKind.None }); + + override getReviewState() { + return this.reviewState; + } + + override getPRReviewState() { + return this.prReviewState; + } + + override hasReview(): boolean { + return false; + } + + override requestReview(): void { } + override removeComment(): void { } + override dismissReview(): void { } + override async resolvePRReviewThread(): Promise { } + }(); +} + // ============================================================================ // Realistic test data — a project that has Copilot + Claude customizations // ============================================================================ const allFiles: IFixtureFile[] = [ + // Instructions - extension (built-in + third-party) + { uri: URI.file('/extensions/github.copilot-chat/instructions/coding.instructions.md'), storage: PromptsStorage.extension, type: PromptsType.instructions, name: 'Copilot Coding', description: 'Built-in coding guidance', extensionId: 'GitHub.copilot-chat', extensionDisplayName: 'GitHub Copilot Chat' }, + { uri: URI.file('/extensions/acme.tools/instructions/team.instructions.md'), storage: PromptsStorage.extension, type: PromptsType.instructions, name: 'Team Conventions', description: 'Third-party extension instructions', extensionId: 'acme.tools', extensionDisplayName: 'Acme Tools' }, // Instructions — workspace { uri: URI.file('/workspace/.github/instructions/coding-standards.instructions.md'), storage: PromptsStorage.local, type: PromptsType.instructions, name: 'Coding Standards', description: 'Repository-wide coding standards' }, { uri: URI.file('/workspace/.github/instructions/testing.instructions.md'), storage: PromptsStorage.local, type: PromptsType.instructions, name: 'Testing', description: 'Testing best practices', applyTo: '**/*.test.ts' }, @@ -198,6 +270,9 @@ const allFiles: IFixtureFile[] = [ { uri: URI.file('/home/dev/.copilot/agents/planner.agent.md'), storage: PromptsStorage.user, type: PromptsType.agent, name: 'Planner', description: 'Project planning agent' }, { uri: URI.file('/home/dev/.copilot/agents/debugger.agent.md'), storage: PromptsStorage.user, type: PromptsType.agent, name: 'Debugger', description: 'Interactive debugging assistant' }, { uri: URI.file('/home/dev/.copilot/agents/nls-helper.agent.md'), storage: PromptsStorage.user, type: PromptsType.agent, name: 'NLS Helper', description: 'Natural language searching code for clarity' }, + // Agents - extension (built-in + third-party) + { uri: URI.file('/extensions/github.copilot-chat/agents/workspace-guide.agent.md'), storage: PromptsStorage.extension, type: PromptsType.agent, name: 'Workspace Guide', description: 'Built-in workspace exploration agent', extensionId: 'GitHub.copilot-chat', extensionDisplayName: 'GitHub Copilot Chat' }, + { uri: URI.file('/extensions/acme.tools/agents/api-helper.agent.md'), storage: PromptsStorage.extension, type: PromptsType.agent, name: 'API Helper', description: 'Third-party API agent', extensionId: 'acme.tools', extensionDisplayName: 'Acme Tools' }, // Skills — workspace { uri: URI.file('/workspace/.github/skills/deploy/SKILL.md'), storage: PromptsStorage.local, type: PromptsType.skill, name: 'Deploy', description: 'Deployment automation' }, { uri: URI.file('/workspace/.github/skills/refactor/SKILL.md'), storage: PromptsStorage.local, type: PromptsType.skill, name: 'Refactor', description: 'Code refactoring patterns' }, @@ -210,6 +285,9 @@ const allFiles: IFixtureFile[] = [ // Skills — user { uri: URI.file('/home/dev/.copilot/skills/git-workflow/SKILL.md'), storage: PromptsStorage.user, type: PromptsType.skill, name: 'Git Workflow', description: 'Branch and PR workflows' }, { uri: URI.file('/home/dev/.copilot/skills/code-review/SKILL.md'), storage: PromptsStorage.user, type: PromptsType.skill, name: 'Code Review', description: 'Structured code review checklist' }, + // Skills - extension (built-in + third-party) + { uri: URI.file('/extensions/github.copilot-chat/skills/workspace/SKILL.md'), storage: PromptsStorage.extension, type: PromptsType.skill, name: 'Workspace Search', description: 'Built-in workspace search skill', extensionId: 'GitHub.copilot-chat', extensionDisplayName: 'GitHub Copilot Chat' }, + { uri: URI.file('/extensions/acme.tools/skills/audit/SKILL.md'), storage: PromptsStorage.extension, type: PromptsType.skill, name: 'Audit', description: 'Third-party audit skill', extensionId: 'acme.tools', extensionDisplayName: 'Acme Tools' }, // Prompts — workspace { uri: URI.file('/workspace/.github/prompts/explain.prompt.md'), storage: PromptsStorage.local, type: PromptsType.prompt, name: 'Explain', description: 'Explain selected code' }, { uri: URI.file('/workspace/.github/prompts/review.prompt.md'), storage: PromptsStorage.local, type: PromptsType.prompt, name: 'Review', description: 'Review changes' }, @@ -222,6 +300,9 @@ const allFiles: IFixtureFile[] = [ // Prompts — user { uri: URI.file('/home/dev/.copilot/prompts/translate.prompt.md'), storage: PromptsStorage.user, type: PromptsType.prompt, name: 'Translate', description: 'Translate strings for i18n' }, { uri: URI.file('/home/dev/.copilot/prompts/commit-msg.prompt.md'), storage: PromptsStorage.user, type: PromptsType.prompt, name: 'Commit Message', description: 'Generate conventional commit' }, + // Prompts - extension (built-in + third-party) + { uri: URI.file('/extensions/github.copilot-chat/prompts/trace.prompt.md'), storage: PromptsStorage.extension, type: PromptsType.prompt, name: 'Trace', description: 'Built-in tracing prompt', extensionId: 'GitHub.copilot-chat', extensionDisplayName: 'GitHub Copilot Chat' }, + { uri: URI.file('/extensions/acme.tools/prompts/lint.prompt.md'), storage: PromptsStorage.extension, type: PromptsType.prompt, name: 'Lint', description: 'Third-party lint prompt', extensionId: 'acme.tools', extensionDisplayName: 'Acme Tools' }, // Hooks — workspace { uri: URI.file('/workspace/.github/hooks/pre-commit.json'), storage: PromptsStorage.local, type: PromptsType.hook, name: 'Pre-Commit Lint', description: 'Run linting before commit' }, { uri: URI.file('/workspace/.github/hooks/post-save.json'), storage: PromptsStorage.local, type: PromptsType.hook, name: 'Post-Save Format', description: 'Auto-format on save' }, @@ -267,6 +348,66 @@ interface IRenderEditorOptions { readonly managementSections?: readonly AICustomizationManagementSection[]; readonly availableHarnesses?: readonly IHarnessDescriptor[]; readonly selectedSection?: AICustomizationManagementSection; + readonly scrollToBottom?: boolean; + readonly width?: number; + readonly height?: number; +} + +async function waitForAnimationFrames(count: number): Promise { + for (let i = 0; i < count; i++) { + await new Promise(resolve => mainWindow.requestAnimationFrame(() => resolve())); + } +} + +function getVisibleEditorSignature(container: HTMLElement): string { + const sectionCounts = [...container.querySelectorAll('.section-list-item')].map(item => item.textContent?.replace(/\s+/g, ' ').trim() ?? '').join('|'); + const visibleContent = [...container.querySelectorAll('.prompts-content-container, .mcp-content-container, .plugin-content-container')] + .find(node => node instanceof HTMLElement && node.style.display !== 'none'); + const visibleRows = visibleContent + ? [...visibleContent.querySelectorAll('.monaco-list-row')].map(row => row.textContent?.replace(/\s+/g, ' ').trim() ?? '').join('|') + : ''; + + return `${sectionCounts}@@${visibleRows}`; +} + +async function waitForEditorToSettle(container: HTMLElement): Promise { + let previousSignature = ''; + let stableIterations = 0; + + await new Promise(resolve => setTimeout(resolve, 150)); + + for (let i = 0; i < 20; i++) { + await waitForAnimationFrames(2); + await new Promise(resolve => setTimeout(resolve, 25)); + + const signature = getVisibleEditorSignature(container); + if (signature && signature === previousSignature) { + stableIterations++; + if (stableIterations >= 2) { + return; + } + } else { + stableIterations = 0; + previousSignature = signature; + } + } +} + +async function waitForVisibleScrollbarsToFade(container: HTMLElement): Promise { + const deadline = Date.now() + 4000; + + while (Date.now() < deadline) { + const hasVisibleScrollbar = [...container.querySelectorAll('.scrollbar.vertical')].some(scrollbar => { + const style = mainWindow.getComputedStyle(scrollbar); + return scrollbar.classList.contains('visible') && style.opacity !== '0'; + }); + + if (!hasVisibleScrollbar) { + return; + } + + await new Promise(resolve => setTimeout(resolve, 100)); + } } // ============================================================================ @@ -274,8 +415,8 @@ interface IRenderEditorOptions { // ============================================================================ async function renderEditor(ctx: ComponentFixtureContext, options: IRenderEditorOptions): Promise { - const width = 900; - const height = 600; + const width = options.width ?? 900; + const height = options.height ?? 600; ctx.container.style.width = `${width}px`; ctx.container.style.height = `${height}px`; @@ -290,7 +431,7 @@ async function renderEditor(ctx: ComponentFixtureContext, options: IRenderEditor AICustomizationManagementSection.Plugins, ]; const availableHarnesses = options.availableHarnesses ?? [ - createVSCodeHarnessDescriptor([PromptsStorage.extension]), + createVSCodeHarnessDescriptor([PromptsStorage.extension, BUILTIN_STORAGE]), createCliHarnessDescriptor(getCliUserRoots(userHome), []), createClaudeHarnessDescriptor(getClaudeUserRoots(userHome), []), ]; @@ -301,8 +442,21 @@ async function renderEditor(ctx: ComponentFixtureContext, options: IRenderEditor colorTheme: ctx.theme, additionalServices: (reg) => { const harnessService = createMockHarnessService(options.harness, availableHarnesses); + const agentFeedbackService = createMockAgentFeedbackService(); + const codeReviewService = createMockCodeReviewService(); registerWorkbenchServices(reg); reg.define(IListService, ListService); + reg.defineInstance(IAgentFeedbackService, agentFeedbackService); + reg.defineInstance(ICodeReviewService, codeReviewService); + reg.defineInstance(IChatEditingService, new class extends mock() { + override readonly editingSessionsObs = constObservable([]); + }()); + reg.defineInstance(IAgentSessionsService, new class extends mock() { + override readonly model = new class extends mock() { + override readonly sessions = []; + }(); + override getSession() { return undefined; } + }()); reg.defineInstance(IPromptsService, createMockPromptsService(allFiles, agentInstructions)); reg.defineInstance(IAICustomizationWorkspaceService, new class extends mock() { override readonly isSessionsWindow = isSessionsWindow; @@ -372,7 +526,11 @@ async function renderEditor(ctx: ComponentFixtureContext, options: IRenderEditor override readonly onDidChangeMarketplaces = Event.None; }()); reg.defineInstance(IPluginInstallService, new class extends mock() { }()); - reg.defineInstance(IProductService, new class extends mock() { }()); + reg.defineInstance(IProductService, new class extends mock() { + override readonly defaultChatAgent = new class extends mock>() { + override readonly chatExtensionId = 'GitHub.copilot-chat'; + }(); + }()); }, }); @@ -382,16 +540,19 @@ async function renderEditor(ctx: ComponentFixtureContext, options: IRenderEditor editor.create(ctx.container); editor.layout(new Dimension(width, height)); - // setInput may fail on unmocked service calls — catch to still show the editor shell - try { - await editor.setInput(AICustomizationManagementEditorInput.getOrCreate(), undefined, {}, CancellationToken.None); - } catch { - // Expected in fixture — some services are partially mocked - } + await editor.setInput(AICustomizationManagementEditorInput.getOrCreate(), undefined, {}, CancellationToken.None); if (options.selectedSection) { editor.selectSectionById(options.selectedSection); - editor.layout(new Dimension(width, height)); + } + + await waitForEditorToSettle(ctx.container); + + if (options.scrollToBottom) { + editor.revealLastItem(); + await waitForAnimationFrames(2); + await new Promise(resolve => setTimeout(resolve, 2400)); + await waitForVisibleScrollbarsToFade(ctx.container); } } @@ -475,7 +636,7 @@ async function renderMcpBrowseMode(ctx: ComponentFixtureContext): Promise }()); reg.defineInstance(ICustomizationHarnessService, new class extends mock() { override readonly activeHarness = observableValue('activeHarness', CustomizationHarness.VSCode); - override getActiveDescriptor() { return createVSCodeHarnessDescriptor([PromptsStorage.extension]); } + override getActiveDescriptor() { return createVSCodeHarnessDescriptor([PromptsStorage.extension, BUILTIN_STORAGE]); } }()); }, }); @@ -603,7 +764,7 @@ export default defineThemedFixtureGroup({ path: 'chat/aiCustomizations/' }, { // Full editor with Local (VS Code) harness — all sections visible, harness dropdown, // Generate buttons, AGENTS.md shortcut, all storage groups LocalHarness: defineComponentFixture({ - labels: { kind: 'screenshot' }, + labels: { kind: 'screenshot', blocksCi: true }, render: ctx => renderEditor(ctx, { harness: CustomizationHarness.VSCode }), }), @@ -645,7 +806,7 @@ export default defineThemedFixtureGroup({ path: 'chat/aiCustomizations/' }, { // MCP Servers tab with many servers to verify scrollable list layout McpServersTab: defineComponentFixture({ - labels: { kind: 'screenshot' }, + labels: { kind: 'screenshot', blocksCi: true }, render: ctx => renderEditor(ctx, { harness: CustomizationHarness.VSCode, selectedSection: AICustomizationManagementSection.McpServers, @@ -718,4 +879,53 @@ export default defineThemedFixtureGroup({ path: 'chat/aiCustomizations/' }, { labels: { kind: 'screenshot' }, render: renderPluginBrowseMode, }), + + // Scrolled-to-bottom variants — verify last items are fully visible above footer + PromptsTabScrolled: defineComponentFixture({ + labels: { kind: 'screenshot' }, + render: ctx => renderEditor(ctx, { + harness: CustomizationHarness.VSCode, + selectedSection: AICustomizationManagementSection.Prompts, + scrollToBottom: true, + }), + }), + + McpServersTabScrolled: defineComponentFixture({ + labels: { kind: 'screenshot' }, + render: ctx => renderEditor(ctx, { + harness: CustomizationHarness.VSCode, + selectedSection: AICustomizationManagementSection.McpServers, + scrollToBottom: true, + }), + }), + + PluginsTabScrolled: defineComponentFixture({ + labels: { kind: 'screenshot' }, + render: ctx => renderEditor(ctx, { + harness: CustomizationHarness.VSCode, + selectedSection: AICustomizationManagementSection.Plugins, + scrollToBottom: true, + }), + }), + + // Narrow viewport — catches badge clipping and layout overflow at small sizes + McpServersTabNarrow: defineComponentFixture({ + labels: { kind: 'screenshot', blocksCi: true }, + render: ctx => renderEditor(ctx, { + harness: CustomizationHarness.VSCode, + selectedSection: AICustomizationManagementSection.McpServers, + width: 550, + height: 400, + }), + }), + + AgentsTabNarrow: defineComponentFixture({ + labels: { kind: 'screenshot', blocksCi: true }, + render: ctx => renderEditor(ctx, { + harness: CustomizationHarness.VSCode, + selectedSection: AICustomizationManagementSection.Agents, + width: 550, + height: 400, + }), + }), }); From 61a2511665b406ed7dd955bdbd84882d350d7a03 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 17:06:56 -0700 Subject: [PATCH 23/83] Refactor agent sessions viewer to support compact show-more option and improve hover reveal behavior --- .../sessions/browser/media/sessionsViewer.css | 37 +++++++++++++------ .../sessions/browser/sessionsViewPane.ts | 1 + .../agentSessions/agentSessionsControl.ts | 3 +- .../agentSessions/agentSessionsViewer.ts | 12 +++--- 4 files changed, 33 insertions(+), 20 deletions(-) diff --git a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css index 2292e6b58fc..2ef25e02266 100644 --- a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css +++ b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css @@ -9,22 +9,31 @@ .agent-sessions-workbench { /* - * Show-more / show-less: content hidden by default, - * reveals on hover with transitions. Row keeps full 26px height - * but text + lines are invisible until hovered. + * Show-more / show-less: thin 6px row by default (minimal gap), + * on hover the content overflows the row bounds to reveal + * the text with line decoration. */ + .monaco-list-row:has(.agent-session-show-more) { + overflow: visible !important; + z-index: 1; + } + .agent-session-show-more { justify-content: center; padding: 0 6px; + height: 6px; + font-size: 0; + color: transparent; + overflow: visible; + position: relative; + transition: height 0.15s ease, font-size 0.15s ease, color 0.15s ease; .agent-session-show-more-label { position: relative; - z-index: 1; + z-index: 2; padding: 0 6px; flex-shrink: 0; - font-size: 11px; - color: transparent; - transition: color 0.15s; + white-space: nowrap; } /* Lines on both sides of the text */ @@ -35,15 +44,19 @@ height: 1px; background: var(--vscode-widget-border, var(--vscode-contrastBorder)); opacity: 0; - transition: opacity 0.15s; + transition: opacity 0.15s ease; } } - /* Reveal on row hover */ + /* Expand on row hover */ + .monaco-list-row:hover:has(.agent-session-show-more) { + z-index: 10; + } + .monaco-list-row:hover .agent-session-show-more { - .agent-session-show-more-label { - color: var(--vscode-descriptionForeground); - } + height: 22px; + font-size: 11px; + color: var(--vscode-descriptionForeground); &::before, &::after { diff --git a/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts b/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts index f8357ab0c1c..6fb92ed1544 100644 --- a/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts +++ b/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts @@ -173,6 +173,7 @@ export class AgenticSessionsViewPane extends ViewPane { hideSectionCount: true, hideSessionBadge: true, useStatusOnlyIcons: true, + compactShowMore: true, getHoverPosition: () => this.getSessionHoverPosition(), trackActiveEditorSession: () => true, collapseOlderSections: () => true, diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index 7c8f6cea388..ff4ff2003ea 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -53,6 +53,7 @@ export interface IAgentSessionsControlOptions { readonly hideSectionCount?: boolean; readonly hideSessionBadge?: boolean; readonly useStatusOnlyIcons?: boolean; + readonly compactShowMore?: boolean; getHoverPosition(): HoverPosition; trackActiveEditorSession(): boolean; @@ -269,7 +270,7 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo const list = this.sessionsList = this._register(this.instantiationService.createInstance(WorkbenchCompressibleAsyncDataTree, 'AgentSessionsView', container, - new AgentSessionsListDelegate(approvalModel), + new AgentSessionsListDelegate(approvalModel, this.options.compactShowMore), new AgentSessionsCompressionDelegate(), [ sessionRenderer, diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts index 3a3de309ded..d146a5d9214 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts @@ -794,19 +794,17 @@ export class AgentSessionsListDelegate implements IListVirtualDelegate Date: Tue, 24 Mar 2026 17:08:37 -0700 Subject: [PATCH 24/83] Refactor agent sessions viewer to remove compact show-more option and adjust hover behavior --- .../sessions/browser/media/sessionsViewer.css | 32 ++++++++----------- .../sessions/browser/sessionsViewPane.ts | 1 - .../agentSessions/agentSessionsControl.ts | 3 +- .../agentSessions/agentSessionsViewer.ts | 6 ++-- 4 files changed, 16 insertions(+), 26 deletions(-) diff --git a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css index 2ef25e02266..686e495c54a 100644 --- a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css +++ b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css @@ -9,28 +9,28 @@ .agent-sessions-workbench { /* - * Show-more / show-less: thin 6px row by default (minimal gap), - * on hover the content overflows the row bounds to reveal - * the text with line decoration. + * Show-more / show-less: full 26px list row, but visually collapsed + * using negative margins. On hover, margins restore to show the row. */ .monaco-list-row:has(.agent-session-show-more) { - overflow: visible !important; - z-index: 1; + margin-top: -10px; + margin-bottom: -10px; + transition: margin 0.15s ease; + } + + .monaco-list-row:hover:has(.agent-session-show-more) { + margin-top: 0; + margin-bottom: 0; } .agent-session-show-more { justify-content: center; padding: 0 6px; - height: 6px; - font-size: 0; + font-size: 11px; color: transparent; - overflow: visible; - position: relative; - transition: height 0.15s ease, font-size 0.15s ease, color 0.15s ease; + transition: color 0.15s ease; .agent-session-show-more-label { - position: relative; - z-index: 2; padding: 0 6px; flex-shrink: 0; white-space: nowrap; @@ -48,14 +48,8 @@ } } - /* Expand on row hover */ - .monaco-list-row:hover:has(.agent-session-show-more) { - z-index: 10; - } - + /* Reveal content on row hover */ .monaco-list-row:hover .agent-session-show-more { - height: 22px; - font-size: 11px; color: var(--vscode-descriptionForeground); &::before, diff --git a/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts b/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts index 6fb92ed1544..f8357ab0c1c 100644 --- a/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts +++ b/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts @@ -173,7 +173,6 @@ export class AgenticSessionsViewPane extends ViewPane { hideSectionCount: true, hideSessionBadge: true, useStatusOnlyIcons: true, - compactShowMore: true, getHoverPosition: () => this.getSessionHoverPosition(), trackActiveEditorSession: () => true, collapseOlderSections: () => true, diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index ff4ff2003ea..7c8f6cea388 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -53,7 +53,6 @@ export interface IAgentSessionsControlOptions { readonly hideSectionCount?: boolean; readonly hideSessionBadge?: boolean; readonly useStatusOnlyIcons?: boolean; - readonly compactShowMore?: boolean; getHoverPosition(): HoverPosition; trackActiveEditorSession(): boolean; @@ -270,7 +269,7 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo const list = this.sessionsList = this._register(this.instantiationService.createInstance(WorkbenchCompressibleAsyncDataTree, 'AgentSessionsView', container, - new AgentSessionsListDelegate(approvalModel, this.options.compactShowMore), + new AgentSessionsListDelegate(approvalModel), new AgentSessionsCompressionDelegate(), [ sessionRenderer, diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts index d146a5d9214..a5749e718d6 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts @@ -794,9 +794,7 @@ export class AgentSessionsListDelegate implements IListVirtualDelegate Date: Tue, 24 Mar 2026 17:11:10 -0700 Subject: [PATCH 25/83] Refactor agent sessions viewer to implement compact show-more option and adjust hover behavior --- .../sessions/browser/media/sessionsViewer.css | 28 +++++++++---------- .../sessions/browser/sessionsViewPane.ts | 1 + .../agentSessions/agentSessionsControl.ts | 3 +- .../agentSessions/agentSessionsViewer.ts | 6 ++-- 4 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css index 686e495c54a..1738a3b1ff6 100644 --- a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css +++ b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css @@ -9,25 +9,23 @@ .agent-sessions-workbench { /* - * Show-more / show-less: full 26px list row, but visually collapsed - * using negative margins. On hover, margins restore to show the row. + * Show-more / show-less: 2px list row (nearly invisible gap). + * On hover, absolutely positioned content appears above the list rows. */ - .monaco-list-row:has(.agent-session-show-more) { - margin-top: -10px; - margin-bottom: -10px; - transition: margin 0.15s ease; - } - - .monaco-list-row:hover:has(.agent-session-show-more) { - margin-top: 0; - margin-bottom: 0; - } - .agent-session-show-more { + position: absolute; + left: 0; + right: 0; + top: -10px; + height: 22px; + display: flex; justify-content: center; + align-items: center; padding: 0 6px; font-size: 11px; color: transparent; + pointer-events: none; + z-index: 100; transition: color 0.15s ease; .agent-session-show-more-label { @@ -48,9 +46,11 @@ } } - /* Reveal content on row hover */ + /* On row hover, reveal and make clickable */ .monaco-list-row:hover .agent-session-show-more { color: var(--vscode-descriptionForeground); + pointer-events: auto; + cursor: pointer; &::before, &::after { diff --git a/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts b/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts index f8357ab0c1c..6fb92ed1544 100644 --- a/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts +++ b/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts @@ -173,6 +173,7 @@ export class AgenticSessionsViewPane extends ViewPane { hideSectionCount: true, hideSessionBadge: true, useStatusOnlyIcons: true, + compactShowMore: true, getHoverPosition: () => this.getSessionHoverPosition(), trackActiveEditorSession: () => true, collapseOlderSections: () => true, diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index 7c8f6cea388..ff4ff2003ea 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -53,6 +53,7 @@ export interface IAgentSessionsControlOptions { readonly hideSectionCount?: boolean; readonly hideSessionBadge?: boolean; readonly useStatusOnlyIcons?: boolean; + readonly compactShowMore?: boolean; getHoverPosition(): HoverPosition; trackActiveEditorSession(): boolean; @@ -269,7 +270,7 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo const list = this.sessionsList = this._register(this.instantiationService.createInstance(WorkbenchCompressibleAsyncDataTree, 'AgentSessionsView', container, - new AgentSessionsListDelegate(approvalModel), + new AgentSessionsListDelegate(approvalModel, this.options.compactShowMore), new AgentSessionsCompressionDelegate(), [ sessionRenderer, diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts index a5749e718d6..316d32c9b18 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts @@ -794,7 +794,9 @@ export class AgentSessionsListDelegate implements IListVirtualDelegate Date: Tue, 24 Mar 2026 17:11:52 -0700 Subject: [PATCH 26/83] Refactor agent sessions viewer styles to improve show-more functionality and z-index handling --- .../sessions/browser/media/sessionsViewer.css | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css index 1738a3b1ff6..5ae2ae5cfa1 100644 --- a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css +++ b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css @@ -10,22 +10,28 @@ /* * Show-more / show-less: 2px list row (nearly invisible gap). - * On hover, absolutely positioned content appears above the list rows. + * On hover, absolutely positioned content appears overlaying the gap. */ + .monaco-list-row:has(.agent-session-show-more) { + overflow: visible !important; + z-index: 1; + } + + .monaco-list-row:hover:has(.agent-session-show-more) { + z-index: 100; + } + .agent-session-show-more { - position: absolute; - left: 0; - right: 0; - top: -10px; - height: 22px; + position: relative; display: flex; justify-content: center; align-items: center; padding: 0 6px; + height: 22px; + margin-top: -10px; font-size: 11px; color: transparent; pointer-events: none; - z-index: 100; transition: color 0.15s ease; .agent-session-show-more-label { From 1bf796e808ae3165386743c06d248a60ad9f9d78 Mon Sep 17 00:00:00 2001 From: Kyle Cutler <67761731+kycutler@users.noreply.github.com> Date: Tue, 24 Mar 2026 17:12:11 -0700 Subject: [PATCH 27/83] Let browser pages handle key events first (#304490) * Let browser pages handle key events first * Shortcuts while paused in debugging * move preload to session * Remove smoke test (api tests already cover) --- .../browserView/common/browserView.ts | 7 - .../electron-browser/preload-browserView.ts | 33 ++++- .../electron-main/browserSession.ts | 11 +- .../browserView/electron-main/browserView.ts | 136 +++++------------- .../electron-main/browserViewDebugger.ts | 11 ++ .../electron-main/browserViewMainService.ts | 6 +- .../contrib/browserView/common/browserView.ts | 5 - .../electron-browser/browserEditor.ts | 18 +-- 8 files changed, 88 insertions(+), 139 deletions(-) diff --git a/src/vs/platform/browserView/common/browserView.ts b/src/vs/platform/browserView/common/browserView.ts index 1cf026d1c75..c2f2161f6e0 100644 --- a/src/vs/platform/browserView/common/browserView.ts +++ b/src/vs/platform/browserView/common/browserView.ts @@ -304,13 +304,6 @@ export interface IBrowserViewService { */ captureScreenshot(id: string, options?: IBrowserViewCaptureScreenshotOptions): Promise; - /** - * Dispatch a key event to the browser view - * @param id The browser view identifier - * @param keyEvent The key event data - */ - dispatchKeyEvent(id: string, keyEvent: IBrowserViewKeyDownEvent): Promise; - /** * Focus the browser view * @param id The browser view identifier diff --git a/src/vs/platform/browserView/electron-browser/preload-browserView.ts b/src/vs/platform/browserView/electron-browser/preload-browserView.ts index 29832f220ff..340de08af7d 100644 --- a/src/vs/platform/browserView/electron-browser/preload-browserView.ts +++ b/src/vs/platform/browserView/electron-browser/preload-browserView.ts @@ -17,7 +17,7 @@ */ (function () { - const { contextBridge } = require('electron'); + const { contextBridge, ipcRenderer } = require('electron'); // ####################################################################### // ### ### @@ -26,6 +26,37 @@ // ### (https://github.com/electron/electron/issues/25516) ### // ### ### // ####################################################################### + + // Listen for keydown events that the page did not handle and forward them for shortcut handling. + window.addEventListener('keydown', (event) => { + // Require that the event is trusted -- i.e. user-initiated. + // eslint-disable-next-line no-restricted-syntax + if (!(event instanceof KeyboardEvent) || !event.isTrusted) { + return; + } + + // If the event was already handled by the page, do not forward it. + if (event.defaultPrevented) { + return; + } + + // filter to events that either have modifiers or do not have a character representation. + if (!(event.ctrlKey || event.altKey || event.metaKey) && event.key.length === 1) { + return; + } + + ipcRenderer.send('vscode:browserView:keydown', { + key: event.key, + keyCode: event.keyCode, + code: event.code, + ctrlKey: event.ctrlKey, + shiftKey: event.shiftKey, + altKey: event.altKey, + metaKey: event.metaKey, + repeat: event.repeat + }); + }); + const globals = { /** * Get the currently selected text in the page. diff --git a/src/vs/platform/browserView/electron-main/browserSession.ts b/src/vs/platform/browserView/electron-main/browserSession.ts index 1a21770d068..dc23d2ee0c0 100644 --- a/src/vs/platform/browserView/electron-main/browserSession.ts +++ b/src/vs/platform/browserView/electron-main/browserSession.ts @@ -9,6 +9,7 @@ import { URI } from '../../../base/common/uri.js'; import { IApplicationStorageMainService } from '../../storage/electron-main/storageMainService.js'; import { BrowserViewStorageScope } from '../common/browserView.js'; import { BrowserSessionTrust, IBrowserSessionTrust } from './browserSessionTrust.js'; +import { FileAccess } from '../../../base/common/network.js'; // Same as webviews, minus clipboard-read const allowedPermissions = new Set([ @@ -195,7 +196,7 @@ export class BrowserSession { readonly storageScope: BrowserViewStorageScope, ) { this._trust = new BrowserSessionTrust(this); - this.configurePermissions(); + this.configure(); BrowserSession.knownSessions.add(electronSession); BrowserSession._bySession.set(electronSession, this); BrowserSession._byId.set(id, new WeakRef(this)); @@ -218,15 +219,19 @@ export class BrowserSession { } /** - * Apply the standard permission policy to the session. + * Apply the permission policy and preload scripts to the session. */ - private configurePermissions(): void { + private configure(): void { this.electronSession.setPermissionRequestHandler((_webContents, permission, callback) => { return callback(allowedPermissions.has(permission)); }); this.electronSession.setPermissionCheckHandler((_webContents, permission, _origin) => { return allowedPermissions.has(permission); }); + this.electronSession.registerPreloadScript({ + type: 'frame', + filePath: FileAccess.asFileUri('vs/platform/browserView/electron-browser/preload-browserView.js').fsPath + }); } /** diff --git a/src/vs/platform/browserView/electron-main/browserView.ts b/src/vs/platform/browserView/electron-main/browserView.ts index 4113a4e7b36..a38625fa616 100644 --- a/src/vs/platform/browserView/electron-main/browserView.ts +++ b/src/vs/platform/browserView/electron-main/browserView.ts @@ -4,16 +4,13 @@ *--------------------------------------------------------------------------------------------*/ import { WebContentsView, webContents } from 'electron'; -import { FileAccess } from '../../../base/common/network.js'; import { Disposable } from '../../../base/common/lifecycle.js'; import { Emitter, Event } from '../../../base/common/event.js'; import { VSBuffer } from '../../../base/common/buffer.js'; import { IBrowserViewBounds, IBrowserViewDevToolsStateEvent, IBrowserViewFocusEvent, IBrowserViewKeyDownEvent, IBrowserViewState, IBrowserViewNavigationEvent, IBrowserViewLoadingEvent, IBrowserViewLoadError, IBrowserViewTitleChangeEvent, IBrowserViewFaviconChangeEvent, IBrowserViewNewPageRequest, IBrowserViewCaptureScreenshotOptions, IBrowserViewFindInPageOptions, IBrowserViewFindInPageResult, IBrowserViewVisibilityEvent, BrowserNewPageLocation, browserViewIsolatedWorldId, browserZoomFactors, browserZoomDefaultIndex } from '../common/browserView.js'; -import { EVENT_KEY_CODE_MAP, KeyCode, KeyMod, SCAN_CODE_STR_TO_EVENT_KEY_CODE } from '../../../base/common/keyCodes.js'; import { IWindowsMainService } from '../../windows/electron-main/windows.js'; import { ICodeWindow } from '../../window/electron-main/window.js'; import { IAuxiliaryWindowsMainService } from '../../auxiliaryWindow/electron-main/auxiliaryWindows.js'; -import { isMacintosh } from '../../../base/common/platform.js'; import { BrowserViewUri } from '../common/browserViewUri.js'; import { BrowserViewDebugger } from './browserViewDebugger.js'; import { ILogService } from '../../log/common/log.js'; @@ -21,18 +18,7 @@ import { ICDPTarget, ICDPConnection, CDPTargetInfo } from '../common/cdp/types.j import { BrowserSession } from './browserSession.js'; import { IAuxiliaryWindow } from '../../auxiliaryWindow/electron-main/auxiliaryWindow.js'; import { hasKey } from '../../../base/common/types.js'; - -/** Key combinations that are used in system-level shortcuts. */ -const nativeShortcuts = new Set([ - KeyMod.CtrlCmd | KeyCode.KeyA, - KeyMod.CtrlCmd | KeyCode.KeyC, - KeyMod.CtrlCmd | KeyCode.KeyV, - KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyV, - KeyMod.CtrlCmd | KeyCode.KeyX, - ...(isMacintosh ? [] : [KeyMod.CtrlCmd | KeyCode.KeyY]), - KeyMod.CtrlCmd | KeyCode.KeyZ, - KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyZ -]); +import { SCAN_CODE_STR_TO_EVENT_KEY_CODE } from '../../../base/common/keyCodes.js'; /** * Represents a single browser view instance with its WebContentsView and all associated logic. @@ -50,7 +36,6 @@ export class BrowserView extends Disposable implements ICDPTarget { private _debugger: BrowserViewDebugger; private _window: ICodeWindow | IAuxiliaryWindow | undefined; - private _isSendingKeyEvent = false; private _isDisposed = false; private readonly _onDidNavigate = this._register(new Emitter()); @@ -106,7 +91,6 @@ export class BrowserView extends Disposable implements ICDPTarget { sandbox: true, webviewTag: false, session: this.session.electronSession, - preload: FileAccess.asFileUri('vs/platform/browserView/electron-browser/preload-browserView.js').fsPath, // TODO@kycutler: Remove this once https://github.com/electron/electron/issues/42578 is fixed type: 'browserView' @@ -300,13 +284,41 @@ export class BrowserView extends Disposable implements ICDPTarget { this._onDidChangeFocus.fire({ focused: false }); }); - // Key down events - listen for raw key input events - webContents.on('before-input-event', async (event, input) => { - if (input.type === 'keyDown' && !this._isSendingKeyEvent) { - if (this.tryHandleCommand(input)) { - event.preventDefault(); - } + // Forward key down events that weren't handled by the page to the workbench for shortcut handling. + webContents.ipc.on('vscode:browserView:keydown', (_event, keyEvent: IBrowserViewKeyDownEvent) => { + this._onDidKeyCommand.fire(keyEvent); + }); + // If the page won't be able to handle events, forward key down events directly. + webContents.on('before-input-event', (event, input) => { + if (input.type !== 'keyDown') { + return; } + + const pageIsAvailable = this._view.getVisible() + && !webContents.isCrashed() + && !this._debugger.isPaused; + if (pageIsAvailable) { + return; + } + + // This logic should mirror that in preload-browserView.ts. + if (!(input.control || input.alt || input.meta) && input.key.length === 1) { + return; + } + + event.preventDefault(); + + const eventKeyCode = SCAN_CODE_STR_TO_EVENT_KEY_CODE[input.code] || 0; + this._onDidKeyCommand.fire({ + key: input.key, + keyCode: eventKeyCode, + code: input.code, + ctrlKey: input.control, + shiftKey: input.shift, + altKey: input.alt, + metaKey: input.meta, + repeat: input.isAutoRepeat + }); }); // Track user gestures for popup blocking logic. @@ -512,35 +524,6 @@ export class BrowserView extends Disposable implements ICDPTarget { return screenshot; } - /** - * Dispatch a keyboard event to this view - */ - async dispatchKeyEvent(keyEvent: IBrowserViewKeyDownEvent): Promise { - const event: Electron.KeyboardInputEvent = { - type: 'keyDown', - keyCode: keyEvent.key, - modifiers: [] - }; - if (keyEvent.ctrlKey) { - event.modifiers!.push('control'); - } - if (keyEvent.shiftKey) { - event.modifiers!.push('shift'); - } - if (keyEvent.altKey) { - event.modifiers!.push('alt'); - } - if (keyEvent.metaKey) { - event.modifiers!.push('meta'); - } - this._isSendingKeyEvent = true; - try { - await this._view.webContents.sendInputEvent(event); - } finally { - this._isSendingKeyEvent = false; - } - } - /** * Focus this view */ @@ -673,55 +656,6 @@ export class BrowserView extends Disposable implements ICDPTarget { super.dispose(); } - /** - * Potentially handle an input event as a VS Code command. - * Returns `true` if the event was forwarded to VS Code and should not be handled natively. - */ - private tryHandleCommand(input: Electron.Input): boolean { - const eventKeyCode = SCAN_CODE_STR_TO_EVENT_KEY_CODE[input.code] || 0; - const keyCode = EVENT_KEY_CODE_MAP[eventKeyCode] || KeyCode.Unknown; - - const isArrowKey = keyCode >= KeyCode.LeftArrow && keyCode <= KeyCode.DownArrow; - const isNonEditingKey = - keyCode === KeyCode.Escape || - keyCode >= KeyCode.F1 && keyCode <= KeyCode.F24 || - keyCode >= KeyCode.AudioVolumeMute; - - // Ignore most Alt-only inputs (often used for accented characters or menu accelerators) - const isAltOnlyInput = input.alt && !input.control && !input.meta; - if (isAltOnlyInput && !isNonEditingKey && !isArrowKey) { - return false; - } - - // Only reroute if there's a command modifier or it's a non-editing key - const hasCommandModifier = input.control || input.alt || input.meta; - if (!hasCommandModifier && !isNonEditingKey) { - return false; - } - - // Ignore Ctrl/Cmd + [A,C,V,X,Z] shortcuts to allow native handling (e.g. copy/paste) - const isControlInput = isMacintosh ? input.meta : input.control; - const modifiedKeyCode = keyCode | - (isControlInput ? KeyMod.CtrlCmd : 0) | - (input.shift ? KeyMod.Shift : 0) | - (input.alt ? KeyMod.Alt : 0); - if (nativeShortcuts.has(modifiedKeyCode)) { - return false; - } - - this._onDidKeyCommand.fire({ - key: input.key, - keyCode: eventKeyCode, - code: input.code, - ctrlKey: input.control || false, - shiftKey: input.shift || false, - altKey: input.alt || false, - metaKey: input.meta || false, - repeat: input.isAutoRepeat || false - }); - return true; - } - private _windowById(windowId: number | undefined): ICodeWindow | IAuxiliaryWindow | undefined { return this._codeWindowById(windowId) ?? this._auxiliaryWindowById(windowId); } diff --git a/src/vs/platform/browserView/electron-main/browserViewDebugger.ts b/src/vs/platform/browserView/electron-main/browserViewDebugger.ts index c0bdb734ef7..ebdbdb3bf3e 100644 --- a/src/vs/platform/browserView/electron-main/browserViewDebugger.ts +++ b/src/vs/platform/browserView/electron-main/browserViewDebugger.ts @@ -20,6 +20,10 @@ export class BrowserViewDebugger extends Disposable implements ICDPTarget { /** Map from CDP sessionId to the per-connection event emitter */ private readonly _sessions = this._register(new DisposableMap()); + /** Whether any attached debugger session has paused JavaScript execution. */ + private _isPaused = false; + get isPaused(): boolean { return this._isPaused; } + /** * The real CDP targetId discovered from Target.getTargets(). * Ideally this could be fetched synchronously from the WebContents, @@ -141,6 +145,13 @@ export class BrowserViewDebugger extends Disposable implements ICDPTarget { return; } + // Track debugger pause state + if (method === 'Debugger.paused') { + this._isPaused = true; + } else if (method === 'Debugger.resumed') { + this._isPaused = false; + } + // Find the session for this sessionId and fire the event const session = this._sessions.get(sessionId); if (session) { diff --git a/src/vs/platform/browserView/electron-main/browserViewMainService.ts b/src/vs/platform/browserView/electron-main/browserViewMainService.ts index cc3635e5dfa..d7e9ac1737f 100644 --- a/src/vs/platform/browserView/electron-main/browserViewMainService.ts +++ b/src/vs/platform/browserView/electron-main/browserViewMainService.ts @@ -6,7 +6,7 @@ import { Emitter, Event } from '../../../base/common/event.js'; import { Disposable, DisposableMap } from '../../../base/common/lifecycle.js'; import { VSBuffer } from '../../../base/common/buffer.js'; -import { IBrowserViewBounds, IBrowserViewKeyDownEvent, IBrowserViewState, IBrowserViewService, BrowserViewStorageScope, IBrowserViewCaptureScreenshotOptions, IBrowserViewFindInPageOptions, BrowserViewCommandId } from '../common/browserView.js'; +import { IBrowserViewBounds, IBrowserViewState, IBrowserViewService, BrowserViewStorageScope, IBrowserViewCaptureScreenshotOptions, IBrowserViewFindInPageOptions, BrowserViewCommandId } from '../common/browserView.js'; import { clipboard, Menu, MenuItem } from 'electron'; import { ICDPTarget, CDPBrowserVersion, CDPWindowBounds, CDPTargetInfo, ICDPConnection, ICDPBrowserTarget } from '../common/cdp/types.js'; import { IEnvironmentMainService } from '../../environment/electron-main/environmentMainService.js'; @@ -304,10 +304,6 @@ export class BrowserViewMainService extends Disposable implements IBrowserViewMa return this._getBrowserView(id).captureScreenshot(options); } - async dispatchKeyEvent(id: string, keyEvent: IBrowserViewKeyDownEvent): Promise { - return this._getBrowserView(id).dispatchKeyEvent(keyEvent); - } - async focus(id: string): Promise { return this._getBrowserView(id).focus(); } diff --git a/src/vs/workbench/contrib/browserView/common/browserView.ts b/src/vs/workbench/contrib/browserView/common/browserView.ts index 7bb193a06d9..8f9cfa3f96b 100644 --- a/src/vs/workbench/contrib/browserView/common/browserView.ts +++ b/src/vs/workbench/contrib/browserView/common/browserView.ts @@ -198,7 +198,6 @@ export interface IBrowserViewModel extends IDisposable { reload(hard?: boolean): Promise; toggleDevTools(): Promise; captureScreenshot(options?: IBrowserViewCaptureScreenshotOptions): Promise; - dispatchKeyEvent(keyEvent: IBrowserViewKeyDownEvent): Promise; focus(): Promise; findInPage(text: string, options?: IBrowserViewFindInPageOptions): Promise; stopFindInPage(keepSelection?: boolean): Promise; @@ -471,10 +470,6 @@ export class BrowserViewModel extends Disposable implements IBrowserViewModel { return result; } - async dispatchKeyEvent(keyEvent: IBrowserViewKeyDownEvent): Promise { - return this.browserViewService.dispatchKeyEvent(this.id, keyEvent); - } - async focus(): Promise { return this.browserViewService.focus(this.id); } diff --git a/src/vs/workbench/contrib/browserView/electron-browser/browserEditor.ts b/src/vs/workbench/contrib/browserView/electron-browser/browserEditor.ts index c4f7bb4bb27..1e60e58fcd7 100644 --- a/src/vs/workbench/contrib/browserView/electron-browser/browserEditor.ts +++ b/src/vs/workbench/contrib/browserView/electron-browser/browserEditor.ts @@ -348,7 +348,6 @@ export class BrowserEditor extends EditorPane { private _overlayVisible = false; private _editorVisible = false; - private _currentKeyDownEvent: IBrowserViewKeyDownEvent | undefined; private _navigationBar!: BrowserNavigationBar; private _browserContainerWrapper!: HTMLElement; @@ -988,29 +987,14 @@ export class BrowserEditor extends EditorPane { } } - forwardCurrentEvent(): boolean { - if (this._currentKeyDownEvent && this._model) { - void this._model.dispatchKeyEvent(this._currentKeyDownEvent); - return true; - } - return false; - } - private async handleKeyEventFromBrowserView(keyEvent: IBrowserViewKeyDownEvent): Promise { - this._currentKeyDownEvent = keyEvent; - try { const syntheticEvent = new KeyboardEvent('keydown', keyEvent); const standardEvent = new StandardKeyboardEvent(syntheticEvent); - const handled = this.keybindingService.dispatchEvent(standardEvent, this._browserContainer); - if (!handled) { - this.forwardCurrentEvent(); - } + this.keybindingService.dispatchEvent(standardEvent, this._browserContainer); } catch (error) { this.logService.error('BrowserEditor.handleKeyEventFromBrowserView: Error dispatching key event', error); - } finally { - this._currentKeyDownEvent = undefined; } } From 13b519d36ec4c1e012d501d915f425225d2c7220 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 17:13:42 -0700 Subject: [PATCH 28/83] Refactor agent sessions viewer to enhance show-more functionality and remove compact option --- .../sessions/browser/media/sessionsViewer.css | 37 ++++--------------- .../sessions/browser/sessionsViewPane.ts | 1 - .../agentSessions/agentSessionsControl.ts | 3 +- .../agentSessions/agentSessionsViewer.ts | 6 +-- 4 files changed, 10 insertions(+), 37 deletions(-) diff --git a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css index 5ae2ae5cfa1..a141633978d 100644 --- a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css +++ b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css @@ -9,30 +9,16 @@ .agent-sessions-workbench { /* - * Show-more / show-less: 2px list row (nearly invisible gap). - * On hover, absolutely positioned content appears overlaying the gap. + * Show-more / show-less: always visible with centered text and + * line decoration on both sides. Text fades in on hover. + * Note: virtualized list enforces overflow: hidden on rows, + * so the row must keep its full 26px height. */ - .monaco-list-row:has(.agent-session-show-more) { - overflow: visible !important; - z-index: 1; - } - - .monaco-list-row:hover:has(.agent-session-show-more) { - z-index: 100; - } - .agent-session-show-more { - position: relative; - display: flex; justify-content: center; - align-items: center; padding: 0 6px; - height: 22px; - margin-top: -10px; font-size: 11px; - color: transparent; - pointer-events: none; - transition: color 0.15s ease; + color: var(--vscode-descriptionForeground); .agent-session-show-more-label { padding: 0 6px; @@ -47,21 +33,12 @@ flex: 1; height: 1px; background: var(--vscode-widget-border, var(--vscode-contrastBorder)); - opacity: 0; - transition: opacity 0.15s ease; } } - /* On row hover, reveal and make clickable */ + /* Brighter text on direct hover */ .monaco-list-row:hover .agent-session-show-more { - color: var(--vscode-descriptionForeground); - pointer-events: auto; - cursor: pointer; - - &::before, - &::after { - opacity: 1; - } + color: var(--vscode-foreground); } /* Brighter text on direct hover */ diff --git a/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts b/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts index 6fb92ed1544..f8357ab0c1c 100644 --- a/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts +++ b/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts @@ -173,7 +173,6 @@ export class AgenticSessionsViewPane extends ViewPane { hideSectionCount: true, hideSessionBadge: true, useStatusOnlyIcons: true, - compactShowMore: true, getHoverPosition: () => this.getSessionHoverPosition(), trackActiveEditorSession: () => true, collapseOlderSections: () => true, diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index ff4ff2003ea..7c8f6cea388 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -53,7 +53,6 @@ export interface IAgentSessionsControlOptions { readonly hideSectionCount?: boolean; readonly hideSessionBadge?: boolean; readonly useStatusOnlyIcons?: boolean; - readonly compactShowMore?: boolean; getHoverPosition(): HoverPosition; trackActiveEditorSession(): boolean; @@ -270,7 +269,7 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo const list = this.sessionsList = this._register(this.instantiationService.createInstance(WorkbenchCompressibleAsyncDataTree, 'AgentSessionsView', container, - new AgentSessionsListDelegate(approvalModel, this.options.compactShowMore), + new AgentSessionsListDelegate(approvalModel), new AgentSessionsCompressionDelegate(), [ sessionRenderer, diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts index 316d32c9b18..a5749e718d6 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts @@ -794,9 +794,7 @@ export class AgentSessionsListDelegate implements IListVirtualDelegate Date: Tue, 24 Mar 2026 17:19:47 -0700 Subject: [PATCH 29/83] Refactor agent sessions viewer to implement compact show-more functionality with dynamic height adjustments --- .../sessions/browser/media/sessionsViewer.css | 20 ++--- .../sessions/browser/sessionsViewPane.ts | 1 + .../agentSessions/agentSessionsControl.ts | 20 ++++- .../agentSessions/agentSessionsViewer.ts | 73 ++++++++++++++++++- 4 files changed, 100 insertions(+), 14 deletions(-) diff --git a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css index a141633978d..f6207a2cc78 100644 --- a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css +++ b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css @@ -9,10 +9,8 @@ .agent-sessions-workbench { /* - * Show-more / show-less: always visible with centered text and - * line decoration on both sides. Text fades in on hover. - * Note: virtualized list enforces overflow: hidden on rows, - * so the row must keep its full 26px height. + * Show-more / show-less: starts collapsed (0 height), expands on + * hover via dynamic height updates from the renderer. */ .agent-session-show-more { justify-content: center; @@ -20,6 +18,15 @@ font-size: 11px; color: var(--vscode-descriptionForeground); + &.compact-collapsed { + height: 0; + overflow: hidden; + } + + &.compact-expanded { + height: 26px; + } + .agent-session-show-more-label { padding: 0 6px; flex-shrink: 0; @@ -36,11 +43,6 @@ } } - /* Brighter text on direct hover */ - .monaco-list-row:hover .agent-session-show-more { - color: var(--vscode-foreground); - } - /* Brighter text on direct hover */ .monaco-list-row:hover .agent-session-show-more:hover { color: var(--vscode-foreground); diff --git a/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts b/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts index f8357ab0c1c..6fb92ed1544 100644 --- a/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts +++ b/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts @@ -173,6 +173,7 @@ export class AgenticSessionsViewPane extends ViewPane { hideSectionCount: true, hideSessionBadge: true, useStatusOnlyIcons: true, + compactShowMore: true, getHoverPosition: () => this.getSessionHoverPosition(), trackActiveEditorSession: () => true, collapseOlderSections: () => true, diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index 7c8f6cea388..25e2422b2de 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -53,6 +53,7 @@ export interface IAgentSessionsControlOptions { readonly hideSectionCount?: boolean; readonly hideSessionBadge?: boolean; readonly useStatusOnlyIcons?: boolean; + readonly compactShowMore?: boolean; getHoverPosition(): HoverPosition; trackActiveEditorSession(): boolean; @@ -265,6 +266,9 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo isGroupedByRepository: () => this.options.filter.groupResults?.() === AgentSessionsGrouping.Repository, isSortedByUpdated: () => this.options.filter.sortResults?.() === AgentSessionsSorting.Updated, }, approvalModel, activeSessionResource)); + const compact = this.options.compactShowMore; + const showMoreRenderer = new AgentSessionShowMoreRenderer(compact); + const showLessRenderer = new AgentSessionShowLessRenderer(compact); const sessionDataSource = this.sessionsDataSource = this._register(new AgentSessionsDataSource(this.options.filter, sorter, this.options.repositoryGroupLimit)); const list = this.sessionsList = this._register(this.instantiationService.createInstance(WorkbenchCompressibleAsyncDataTree, 'AgentSessionsView', @@ -274,8 +278,8 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo [ sessionRenderer, this.instantiationService.createInstance(AgentSessionSectionRenderer, { hideSectionCount: this.options.hideSectionCount }), - new AgentSessionShowMoreRenderer(), - new AgentSessionShowLessRenderer(), + showMoreRenderer, + showLessRenderer, ], sessionDataSource, { @@ -302,6 +306,18 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo } })); + this._register(showMoreRenderer.onDidChangeItemHeight(item => { + if (list.hasNode(item)) { + list.updateElementHeight(item, undefined); + } + })); + + this._register(showLessRenderer.onDidChangeItemHeight(item => { + if (list.hasNode(item)) { + list.updateElementHeight(item, undefined); + } + })); + this._register(sessionDataSource.onDidGetChildren(count => { this.updateEmpty(count === 0); })); diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts index a5749e718d6..2d0606a18c3 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import './media/agentsessionsviewer.css'; -import { h } from '../../../../../base/browser/dom.js'; +import { addDisposableListener, h } from '../../../../../base/browser/dom.js'; import { localize } from '../../../../../nls.js'; import { IIdentityProvider, IListVirtualDelegate, NotSelectableGroupId, NotSelectableGroupIdType } from '../../../../../base/browser/ui/list/list.js'; import { AriaRole } from '../../../../../base/browser/ui/aria/aria.js'; @@ -706,6 +706,7 @@ export class AgentSessionSectionRenderer implements ICompressibleTreeRenderer(); + readonly onDidChangeItemHeight: Event = this._onDidChangeItemHeight.event; + + constructor(private readonly _compact?: boolean) { } + renderTemplate(container: HTMLElement): IAgentSessionShowMoreTemplate { const disposables = new DisposableStore(); + const elementDisposable = disposables.add(new DisposableStore()); const elements = h( 'div.agent-session-show-more@container', @@ -729,23 +737,48 @@ export class AgentSessionShowMoreRenderer implements ICompressibleTreeRenderer, _index: number, template: IAgentSessionShowMoreTemplate): void { + template.elementDisposable.clear(); template.label.textContent = localize('agentSessions.showMore', "+{0} more", element.element.remainingCount); + + if (this._compact) { + template.container.classList.add('compact-collapsed'); + const listRow = template.container.closest('.monaco-list-row'); + if (listRow) { + template.elementDisposable.add(addDisposableListener(listRow, 'mouseenter', () => { + template.container.classList.remove('compact-collapsed'); + template.container.classList.add('compact-expanded'); + this._onDidChangeItemHeight.fire(element.element); + })); + template.elementDisposable.add(addDisposableListener(listRow, 'mouseleave', () => { + template.container.classList.remove('compact-expanded'); + template.container.classList.add('compact-collapsed'); + this._onDidChangeItemHeight.fire(element.element); + })); + } + } } renderCompressedElements(): void { throw new Error('Should never happen since show-more is incompressible'); } - disposeElement(): void { } + disposeElement(_element: ITreeNode, _index: number, template: IAgentSessionShowMoreTemplate): void { + template.elementDisposable.clear(); + } disposeTemplate(templateData: IAgentSessionShowMoreTemplate): void { templateData.disposables.dispose(); } + + dispose(): void { + this._onDidChangeItemHeight.dispose(); + } } export class AgentSessionShowLessRenderer implements ICompressibleTreeRenderer { @@ -755,8 +788,14 @@ export class AgentSessionShowLessRenderer implements ICompressibleTreeRenderer(); + readonly onDidChangeItemHeight: Event = this._onDidChangeItemHeight.event; + + constructor(private readonly _compact?: boolean) { } + renderTemplate(container: HTMLElement): IAgentSessionShowMoreTemplate { const disposables = new DisposableStore(); + const elementDisposable = disposables.add(new DisposableStore()); const elements = h( 'div.agent-session-show-more@container', @@ -768,23 +807,48 @@ export class AgentSessionShowLessRenderer implements ICompressibleTreeRenderer, _index: number, template: IAgentSessionShowMoreTemplate): void { + template.elementDisposable.clear(); template.label.textContent = localize('agentSessions.showLess', "Show less"); + + if (this._compact) { + template.container.classList.add('compact-collapsed'); + const listRow = template.container.closest('.monaco-list-row'); + if (listRow) { + template.elementDisposable.add(addDisposableListener(listRow, 'mouseenter', () => { + template.container.classList.remove('compact-collapsed'); + template.container.classList.add('compact-expanded'); + this._onDidChangeItemHeight.fire(element.element); + })); + template.elementDisposable.add(addDisposableListener(listRow, 'mouseleave', () => { + template.container.classList.remove('compact-expanded'); + template.container.classList.add('compact-collapsed'); + this._onDidChangeItemHeight.fire(element.element); + })); + } + } } renderCompressedElements(): void { throw new Error('Should never happen since show-less is incompressible'); } - disposeElement(): void { } + disposeElement(_element: ITreeNode, _index: number, template: IAgentSessionShowMoreTemplate): void { + template.elementDisposable.clear(); + } disposeTemplate(templateData: IAgentSessionShowMoreTemplate): void { templateData.disposables.dispose(); } + + dispose(): void { + this._onDidChangeItemHeight.dispose(); + } } //#endregion @@ -814,6 +878,9 @@ export class AgentSessionsListDelegate implements IListVirtualDelegate Date: Tue, 24 Mar 2026 17:24:35 -0700 Subject: [PATCH 30/83] Refactor agent sessions viewer to pass compact show-more option to list delegate --- .../chat/browser/agentSessions/agentSessionsControl.ts | 2 +- .../chat/browser/agentSessions/agentSessionsViewer.ts | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index 25e2422b2de..a2669f57862 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -273,7 +273,7 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo const list = this.sessionsList = this._register(this.instantiationService.createInstance(WorkbenchCompressibleAsyncDataTree, 'AgentSessionsView', container, - new AgentSessionsListDelegate(approvalModel), + new AgentSessionsListDelegate(approvalModel, this.options.compactShowMore), new AgentSessionsCompressionDelegate(), [ sessionRenderer, diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts index 2d0606a18c3..c0e577fd8d5 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts @@ -858,7 +858,9 @@ export class AgentSessionsListDelegate implements IListVirtualDelegate Date: Tue, 24 Mar 2026 17:25:28 -0700 Subject: [PATCH 31/83] Fix show-more height adjustment for compact option in AgentSessionsListDelegate --- .../contrib/chat/browser/agentSessions/agentSessionsViewer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts index c0e577fd8d5..bdc88d3981b 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts @@ -868,7 +868,7 @@ export class AgentSessionsListDelegate implements IListVirtualDelegate Date: Tue, 24 Mar 2026 17:26:03 -0700 Subject: [PATCH 32/83] Use correct ID for browser editor resolver (#304585) --- .../workbench/contrib/browserView/common/browserEditorInput.ts | 2 +- .../browserView/electron-browser/browserView.contribution.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/contrib/browserView/common/browserEditorInput.ts b/src/vs/workbench/contrib/browserView/common/browserEditorInput.ts index 6b6251056df..46ea4b72e9f 100644 --- a/src/vs/workbench/contrib/browserView/common/browserEditorInput.ts +++ b/src/vs/workbench/contrib/browserView/common/browserEditorInput.ts @@ -245,7 +245,7 @@ export class BrowserEditorInput extends EditorInput { return { resource: this.resource, options: { - override: BrowserEditorInput.ID, + override: BrowserEditorInput.EDITOR_ID, viewState } }; diff --git a/src/vs/workbench/contrib/browserView/electron-browser/browserView.contribution.ts b/src/vs/workbench/contrib/browserView/electron-browser/browserView.contribution.ts index ac62107adcd..be1e6c7d1cb 100644 --- a/src/vs/workbench/contrib/browserView/electron-browser/browserView.contribution.ts +++ b/src/vs/workbench/contrib/browserView/electron-browser/browserView.contribution.ts @@ -55,7 +55,7 @@ class BrowserEditorResolverContribution implements IWorkbenchContribution { editorResolverService.registerEditor( `${Schemas.vscodeBrowser}:/**`, { - id: BrowserEditorInput.ID, + id: BrowserEditorInput.EDITOR_ID, label: localize('browser.editorLabel', "Browser"), priority: RegisteredEditorPriority.exclusive }, From 219c7f6068d3b322c4f283107c3470cc606af48c Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 17:27:52 -0700 Subject: [PATCH 33/83] Refactor show-more height change events to include height parameter in AgentSessionShowMore and AgentSessionShowLess renderers --- .../agentSessions/agentSessionsControl.ts | 12 +++++------ .../agentSessions/agentSessionsViewer.ts | 21 ++++++++++++------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index a2669f57862..4d8317cdcf3 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -306,15 +306,15 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo } })); - this._register(showMoreRenderer.onDidChangeItemHeight(item => { - if (list.hasNode(item)) { - list.updateElementHeight(item, undefined); + this._register(showMoreRenderer.onDidChangeItemHeight(({ element, height }) => { + if (list.hasNode(element)) { + list.updateElementHeight(element, height); } })); - this._register(showLessRenderer.onDidChangeItemHeight(item => { - if (list.hasNode(item)) { - list.updateElementHeight(item, undefined); + this._register(showLessRenderer.onDidChangeItemHeight(({ element, height }) => { + if (list.hasNode(element)) { + list.updateElementHeight(element, height); } })); diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts index bdc88d3981b..64446f76917 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts @@ -710,6 +710,11 @@ interface IAgentSessionShowMoreTemplate { readonly disposables: DisposableStore; } +export interface IShowMoreHeightChangeEvent { + readonly element: IAgentSessionShowMore | IAgentSessionShowLess; + readonly height: number; +} + export class AgentSessionShowMoreRenderer implements ICompressibleTreeRenderer { static readonly TEMPLATE_ID = 'agent-session-show-more'; @@ -718,8 +723,8 @@ export class AgentSessionShowMoreRenderer implements ICompressibleTreeRenderer(); - readonly onDidChangeItemHeight: Event = this._onDidChangeItemHeight.event; + private readonly _onDidChangeItemHeight = new Emitter(); + readonly onDidChangeItemHeight: Event = this._onDidChangeItemHeight.event; constructor(private readonly _compact?: boolean) { } @@ -753,12 +758,12 @@ export class AgentSessionShowMoreRenderer implements ICompressibleTreeRenderer { template.container.classList.remove('compact-collapsed'); template.container.classList.add('compact-expanded'); - this._onDidChangeItemHeight.fire(element.element); + this._onDidChangeItemHeight.fire({ element: element.element, height: AgentSessionShowMoreRenderer.HEIGHT }); })); template.elementDisposable.add(addDisposableListener(listRow, 'mouseleave', () => { template.container.classList.remove('compact-expanded'); template.container.classList.add('compact-collapsed'); - this._onDidChangeItemHeight.fire(element.element); + this._onDidChangeItemHeight.fire({ element: element.element, height: AgentSessionShowMoreRenderer.COLLAPSED_HEIGHT }); })); } } @@ -788,8 +793,8 @@ export class AgentSessionShowLessRenderer implements ICompressibleTreeRenderer(); - readonly onDidChangeItemHeight: Event = this._onDidChangeItemHeight.event; + private readonly _onDidChangeItemHeight = new Emitter(); + readonly onDidChangeItemHeight: Event = this._onDidChangeItemHeight.event; constructor(private readonly _compact?: boolean) { } @@ -823,12 +828,12 @@ export class AgentSessionShowLessRenderer implements ICompressibleTreeRenderer { template.container.classList.remove('compact-collapsed'); template.container.classList.add('compact-expanded'); - this._onDidChangeItemHeight.fire(element.element); + this._onDidChangeItemHeight.fire({ element: element.element, height: AgentSessionShowMoreRenderer.HEIGHT }); })); template.elementDisposable.add(addDisposableListener(listRow, 'mouseleave', () => { template.container.classList.remove('compact-expanded'); template.container.classList.add('compact-collapsed'); - this._onDidChangeItemHeight.fire(element.element); + this._onDidChangeItemHeight.fire({ element: element.element, height: AgentSessionShowMoreRenderer.COLLAPSED_HEIGHT }); })); } } From f652161fdba573945f07c12618e36ef4011e7c02 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 17:40:31 -0700 Subject: [PATCH 34/83] Enhance compact mode functionality for show-more/show-less items with hover detection and section label attributes --- .../agentSessions/agentSessionsControl.ts | 73 +++++++++++++++++++ .../agentSessions/agentSessionsViewer.ts | 40 ++++------ 2 files changed, 86 insertions(+), 27 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index 4d8317cdcf3..2dd7f03cfdf 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -318,6 +318,79 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo } })); + // In compact mode, expand show-more/show-less when hovering any item in the same group + if (compact) { + let expandedShowMoreElement: AgentSessionListItem | undefined; + let expandedSectionLabel: string | undefined; + + const collapseCurrentShowMore = () => { + if (expandedShowMoreElement && list.hasNode(expandedShowMoreElement)) { + list.updateElementHeight(expandedShowMoreElement, AgentSessionShowMoreRenderer.COLLAPSED_HEIGHT); + } + expandedShowMoreElement = undefined; + expandedSectionLabel = undefined; + }; + + const findShowMoreForSection = (sectionLabel: string): AgentSessionListItem | undefined => { + const sections = Array.from(sessionDataSource.getChildren(this.agentSessionsService.model)); + for (const section of sections) { + if (isAgentSessionSection(section) && section.label === sectionLabel) { + const children = Array.from(sessionDataSource.getChildren(section)); + return children.find(c => isAgentSessionShowMore(c) || isAgentSessionShowLess(c)); + } + } + return undefined; + }; + + this._register(addDisposableListener(container, 'mouseover', (e: MouseEvent) => { + const target = e.target as HTMLElement; + const row = target.closest('.monaco-list-row'); + if (!row) { + return; + } + + // Read section label from closest session item or section header + const sessionItem = row.querySelector('.agent-session-item'); + const sectionHeader = row.querySelector('.agent-session-section'); + const showMoreEl = row.querySelector('.agent-session-show-more'); + + let sectionLabel: string | undefined; + if (sessionItem) { + sectionLabel = sessionItem.getAttribute('data-section-label') ?? undefined; + } else if (sectionHeader) { + sectionLabel = sectionHeader.querySelector('.agent-session-section-label')?.textContent ?? undefined; + } else if (showMoreEl) { + sectionLabel = showMoreEl.getAttribute('data-section-label') ?? undefined; + } + + if (!sectionLabel) { + collapseCurrentShowMore(); + return; + } + + if (expandedSectionLabel === sectionLabel) { + return; + } + + collapseCurrentShowMore(); + + const showMoreItem = findShowMoreForSection(sectionLabel); + if (!showMoreItem) { + return; + } + + expandedShowMoreElement = showMoreItem; + expandedSectionLabel = sectionLabel; + if (list.hasNode(showMoreItem)) { + list.updateElementHeight(showMoreItem, AgentSessionShowMoreRenderer.HEIGHT); + } + })); + + this._register(addDisposableListener(container, 'mouseleave', () => { + collapseCurrentShowMore(); + })); + } + this._register(sessionDataSource.onDidGetChildren(count => { this.updateEmpty(count === 0); })); diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts index 64446f76917..ba895e8348e 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import './media/agentsessionsviewer.css'; -import { addDisposableListener, h } from '../../../../../base/browser/dom.js'; +import { h } from '../../../../../base/browser/dom.js'; import { localize } from '../../../../../nls.js'; import { IIdentityProvider, IListVirtualDelegate, NotSelectableGroupId, NotSelectableGroupIdType } from '../../../../../base/browser/ui/list/list.js'; import { AriaRole } from '../../../../../base/browser/ui/aria/aria.js'; @@ -212,6 +212,14 @@ export class AgentSessionRenderer extends Disposable implements ICompressibleTre // Archived template.element.classList.toggle('archived', session.element.isArchived()); + // Section label for group hover detection + if (this.options.isGroupedByRepository?.()) { + const repoName = getRepositoryName(session.element); + if (repoName) { + template.element.setAttribute('data-section-label', repoName); + } + } + // Icon — in status-only mode, show status indicator in icon column and session type icon in details row if (this.options.useStatusOnlyIcons) { template.icon.className = `agent-session-icon ${ThemeIcon.asClassName(this.getStatusIcon(session.element))}${session.element.status === AgentSessionStatus.NeedsInput ? ' needs-input' : ''}`; @@ -750,22 +758,11 @@ export class AgentSessionShowMoreRenderer implements ICompressibleTreeRenderer, _index: number, template: IAgentSessionShowMoreTemplate): void { template.elementDisposable.clear(); template.label.textContent = localize('agentSessions.showMore', "+{0} more", element.element.remainingCount); + template.container.setAttribute('data-section-label', element.element.sectionLabel); if (this._compact) { template.container.classList.add('compact-collapsed'); - const listRow = template.container.closest('.monaco-list-row'); - if (listRow) { - template.elementDisposable.add(addDisposableListener(listRow, 'mouseenter', () => { - template.container.classList.remove('compact-collapsed'); - template.container.classList.add('compact-expanded'); - this._onDidChangeItemHeight.fire({ element: element.element, height: AgentSessionShowMoreRenderer.HEIGHT }); - })); - template.elementDisposable.add(addDisposableListener(listRow, 'mouseleave', () => { - template.container.classList.remove('compact-expanded'); - template.container.classList.add('compact-collapsed'); - this._onDidChangeItemHeight.fire({ element: element.element, height: AgentSessionShowMoreRenderer.COLLAPSED_HEIGHT }); - })); - } + template.container.classList.remove('compact-expanded'); } } @@ -820,22 +817,11 @@ export class AgentSessionShowLessRenderer implements ICompressibleTreeRenderer, _index: number, template: IAgentSessionShowMoreTemplate): void { template.elementDisposable.clear(); template.label.textContent = localize('agentSessions.showLess', "Show less"); + template.container.setAttribute('data-section-label', element.element.sectionLabel); if (this._compact) { template.container.classList.add('compact-collapsed'); - const listRow = template.container.closest('.monaco-list-row'); - if (listRow) { - template.elementDisposable.add(addDisposableListener(listRow, 'mouseenter', () => { - template.container.classList.remove('compact-collapsed'); - template.container.classList.add('compact-expanded'); - this._onDidChangeItemHeight.fire({ element: element.element, height: AgentSessionShowMoreRenderer.HEIGHT }); - })); - template.elementDisposable.add(addDisposableListener(listRow, 'mouseleave', () => { - template.container.classList.remove('compact-expanded'); - template.container.classList.add('compact-collapsed'); - this._onDidChangeItemHeight.fire({ element: element.element, height: AgentSessionShowMoreRenderer.COLLAPSED_HEIGHT }); - })); - } + template.container.classList.remove('compact-expanded'); } } From 934a7b45cf83336df3bec8219d09a328d7cd8970 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 17:43:56 -0700 Subject: [PATCH 35/83] Improve section label determination for agent session hover interactions --- .../agentSessions/agentSessionsControl.ts | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index 2dd7f03cfdf..eabf62a4bb2 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -349,18 +349,29 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo return; } - // Read section label from closest session item or section header - const sessionItem = row.querySelector('.agent-session-item'); - const sectionHeader = row.querySelector('.agent-session-section'); + // Determine section label by checking the row content + let sectionLabel: string | undefined; + + const sectionHeader = row.querySelector('.agent-session-section-label'); const showMoreEl = row.querySelector('.agent-session-show-more'); - let sectionLabel: string | undefined; - if (sessionItem) { - sectionLabel = sessionItem.getAttribute('data-section-label') ?? undefined; - } else if (sectionHeader) { - sectionLabel = sectionHeader.querySelector('.agent-session-section-label')?.textContent ?? undefined; + if (sectionHeader) { + // Hovering a section header + sectionLabel = sectionHeader.textContent ?? undefined; } else if (showMoreEl) { + // Hovering the show-more element itself sectionLabel = showMoreEl.getAttribute('data-section-label') ?? undefined; + } else if (row.querySelector('.agent-session-item')) { + // Hovering a session card — walk backward through sibling rows to find the section header + let sibling = row.previousElementSibling; + while (sibling) { + const siblingLabel = sibling.querySelector('.agent-session-section-label'); + if (siblingLabel) { + sectionLabel = siblingLabel.textContent ?? undefined; + break; + } + sibling = sibling.previousElementSibling; + } } if (!sectionLabel) { From 8a841f4a842f45afe2c041b1fe253dd9ee94058b Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 17:46:57 -0700 Subject: [PATCH 36/83] Add debug logging for show-more interactions in agent sessions control --- .../agentSessions/agentSessionsControl.ts | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index eabf62a4bb2..44be2500c01 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -346,6 +346,7 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo const target = e.target as HTMLElement; const row = target.closest('.monaco-list-row'); if (!row) { + console.log('[show-more] no row found'); return; } @@ -354,16 +355,24 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo const sectionHeader = row.querySelector('.agent-session-section-label'); const showMoreEl = row.querySelector('.agent-session-show-more'); + const sessionItem = row.querySelector('.agent-session-item'); + + console.log('[show-more] row content:', { + hasSectionHeader: !!sectionHeader, + hasShowMore: !!showMoreEl, + hasSessionItem: !!sessionItem, + rowClasses: row.className, + rowHTML: row.innerHTML.substring(0, 200), + }); if (sectionHeader) { - // Hovering a section header sectionLabel = sectionHeader.textContent ?? undefined; } else if (showMoreEl) { - // Hovering the show-more element itself sectionLabel = showMoreEl.getAttribute('data-section-label') ?? undefined; - } else if (row.querySelector('.agent-session-item')) { - // Hovering a session card — walk backward through sibling rows to find the section header + } else if (sessionItem) { + // Walk backward through sibling rows to find the section header let sibling = row.previousElementSibling; + let steps = 0; while (sibling) { const siblingLabel = sibling.querySelector('.agent-session-section-label'); if (siblingLabel) { @@ -371,9 +380,13 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo break; } sibling = sibling.previousElementSibling; + steps++; } + console.log('[show-more] walked', steps, 'siblings, found section:', sectionLabel); } + console.log('[show-more] sectionLabel:', sectionLabel); + if (!sectionLabel) { collapseCurrentShowMore(); return; @@ -386,6 +399,7 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo collapseCurrentShowMore(); const showMoreItem = findShowMoreForSection(sectionLabel); + console.log('[show-more] found showMoreItem:', !!showMoreItem, 'hasNode:', showMoreItem ? list.hasNode(showMoreItem) : false); if (!showMoreItem) { return; } @@ -393,6 +407,7 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo expandedShowMoreElement = showMoreItem; expandedSectionLabel = sectionLabel; if (list.hasNode(showMoreItem)) { + console.log('[show-more] expanding to height', AgentSessionShowMoreRenderer.HEIGHT); list.updateElementHeight(showMoreItem, AgentSessionShowMoreRenderer.HEIGHT); } })); From aad823e5eb9adae8e8f342dffe8298a1e2e9e941 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 17:48:21 -0700 Subject: [PATCH 37/83] Improve show-more/show-less section retrieval by traversing tree nodes --- .../browser/agentSessions/agentSessionsControl.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index 44be2500c01..fb439d2070c 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -332,11 +332,20 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo }; const findShowMoreForSection = (sectionLabel: string): AgentSessionListItem | undefined => { + // Walk the tree's own nodes to find the show-more/show-less with matching section const sections = Array.from(sessionDataSource.getChildren(this.agentSessionsService.model)); for (const section of sections) { if (isAgentSessionSection(section) && section.label === sectionLabel) { - const children = Array.from(sessionDataSource.getChildren(section)); - return children.find(c => isAgentSessionShowMore(c) || isAgentSessionShowLess(c)); + try { + const treeNode = list.getNode(section); + for (const child of treeNode.children) { + if (isAgentSessionShowMore(child.element) || isAgentSessionShowLess(child.element)) { + return child.element; + } + } + } catch { + // Section might not be in the tree + } } } return undefined; From f78e576ae3cb2b4dd7e1aa62bde70072eb9a3536 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 17:49:51 -0700 Subject: [PATCH 38/83] Refactor show-more section retrieval to traverse root node children for improved accuracy --- .../agentSessions/agentSessionsControl.ts | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index fb439d2070c..afedd0dd2a3 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -332,21 +332,20 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo }; const findShowMoreForSection = (sectionLabel: string): AgentSessionListItem | undefined => { - // Walk the tree's own nodes to find the show-more/show-less with matching section - const sections = Array.from(sessionDataSource.getChildren(this.agentSessionsService.model)); - for (const section of sections) { - if (isAgentSessionSection(section) && section.label === sectionLabel) { - try { - const treeNode = list.getNode(section); - for (const child of treeNode.children) { + // Walk the tree's own root node children to find sections by label + try { + const rootNode = list.getNode(); + for (const sectionNode of rootNode.children) { + if (isAgentSessionSection(sectionNode.element) && sectionNode.element.label === sectionLabel) { + for (const child of sectionNode.children) { if (isAgentSessionShowMore(child.element) || isAgentSessionShowLess(child.element)) { return child.element; } } - } catch { - // Section might not be in the tree } } + } catch { + // Tree may not be initialized yet } return undefined; }; From 10c0065ec809a4a40132c384df187f048f3de903 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 17:51:57 -0700 Subject: [PATCH 39/83] Enhance compact mode for show-more items by updating class states on expand/collapse --- .../chat/browser/agentSessions/agentSessionsControl.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index afedd0dd2a3..16b7fb9232c 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -326,6 +326,11 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo const collapseCurrentShowMore = () => { if (expandedShowMoreElement && list.hasNode(expandedShowMoreElement)) { list.updateElementHeight(expandedShowMoreElement, AgentSessionShowMoreRenderer.COLLAPSED_HEIGHT); + const el = container.querySelector(`.agent-session-show-more[data-section-label="${expandedSectionLabel}"]`); + if (el) { + el.classList.add('compact-collapsed'); + el.classList.remove('compact-expanded'); + } } expandedShowMoreElement = undefined; expandedSectionLabel = undefined; @@ -415,6 +420,11 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo expandedShowMoreElement = showMoreItem; expandedSectionLabel = sectionLabel; if (list.hasNode(showMoreItem)) { + const el = container.querySelector(`.agent-session-show-more[data-section-label="${sectionLabel}"]`); + if (el) { + el.classList.remove('compact-collapsed'); + el.classList.add('compact-expanded'); + } console.log('[show-more] expanding to height', AgentSessionShowMoreRenderer.HEIGHT); list.updateElementHeight(showMoreItem, AgentSessionShowMoreRenderer.HEIGHT); } From 0d3b89685bd8e8ea67af03fc8faa2aff15830a66 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 17:56:35 -0700 Subject: [PATCH 40/83] Refactor show-more section handling to improve label mapping and expand/collapse logic --- .../agentSessions/agentSessionsControl.ts | 181 ++++++++++-------- 1 file changed, 98 insertions(+), 83 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index 16b7fb9232c..3758693bf1e 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -323,10 +323,38 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo let expandedShowMoreElement: AgentSessionListItem | undefined; let expandedSectionLabel: string | undefined; + // Map session resource URI -> section label (rebuilt on tree changes) + const sessionToSection = new Map(); + const sectionToShowMore = new Map(); + + const rebuildSectionMap = () => { + sessionToSection.clear(); + sectionToShowMore.clear(); + try { + const rootNode = list.getNode(); + for (const sectionNode of rootNode.children) { + if (isAgentSessionSection(sectionNode.element)) { + const label = sectionNode.element.label; + for (const child of sectionNode.children) { + if (isAgentSession(child.element)) { + sessionToSection.set(child.element.resource.toString(), label); + } else if (isAgentSessionShowMore(child.element) || isAgentSessionShowLess(child.element)) { + sectionToShowMore.set(label, child.element); + } + } + } + } + } catch { + // Tree may not be initialized yet + } + }; + const collapseCurrentShowMore = () => { - if (expandedShowMoreElement && list.hasNode(expandedShowMoreElement)) { - list.updateElementHeight(expandedShowMoreElement, AgentSessionShowMoreRenderer.COLLAPSED_HEIGHT); - const el = container.querySelector(`.agent-session-show-more[data-section-label="${expandedSectionLabel}"]`); + if (expandedShowMoreElement && expandedSectionLabel) { + if (list.hasNode(expandedShowMoreElement)) { + list.updateElementHeight(expandedShowMoreElement, AgentSessionShowMoreRenderer.COLLAPSED_HEIGHT); + } + const el = container.querySelector(`.agent-session-show-more[data-section-label="${CSS.escape(expandedSectionLabel)}"]`); if (el) { el.classList.add('compact-collapsed'); el.classList.remove('compact-expanded'); @@ -336,103 +364,90 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo expandedSectionLabel = undefined; }; - const findShowMoreForSection = (sectionLabel: string): AgentSessionListItem | undefined => { - // Walk the tree's own root node children to find sections by label - try { - const rootNode = list.getNode(); - for (const sectionNode of rootNode.children) { - if (isAgentSessionSection(sectionNode.element) && sectionNode.element.label === sectionLabel) { - for (const child of sectionNode.children) { - if (isAgentSessionShowMore(child.element) || isAgentSessionShowLess(child.element)) { - return child.element; - } - } - } - } - } catch { - // Tree may not be initialized yet - } - return undefined; - }; - - this._register(addDisposableListener(container, 'mouseover', (e: MouseEvent) => { - const target = e.target as HTMLElement; - const row = target.closest('.monaco-list-row'); - if (!row) { - console.log('[show-more] no row found'); - return; - } - - // Determine section label by checking the row content - let sectionLabel: string | undefined; - - const sectionHeader = row.querySelector('.agent-session-section-label'); - const showMoreEl = row.querySelector('.agent-session-show-more'); - const sessionItem = row.querySelector('.agent-session-item'); - - console.log('[show-more] row content:', { - hasSectionHeader: !!sectionHeader, - hasShowMore: !!showMoreEl, - hasSessionItem: !!sessionItem, - rowClasses: row.className, - rowHTML: row.innerHTML.substring(0, 200), - }); - - if (sectionHeader) { - sectionLabel = sectionHeader.textContent ?? undefined; - } else if (showMoreEl) { - sectionLabel = showMoreEl.getAttribute('data-section-label') ?? undefined; - } else if (sessionItem) { - // Walk backward through sibling rows to find the section header - let sibling = row.previousElementSibling; - let steps = 0; - while (sibling) { - const siblingLabel = sibling.querySelector('.agent-session-section-label'); - if (siblingLabel) { - sectionLabel = siblingLabel.textContent ?? undefined; - break; - } - sibling = sibling.previousElementSibling; - steps++; - } - console.log('[show-more] walked', steps, 'siblings, found section:', sectionLabel); - } - - console.log('[show-more] sectionLabel:', sectionLabel); - - if (!sectionLabel) { - collapseCurrentShowMore(); - return; - } - + const expandShowMore = (sectionLabel: string) => { if (expandedSectionLabel === sectionLabel) { return; } collapseCurrentShowMore(); - const showMoreItem = findShowMoreForSection(sectionLabel); - console.log('[show-more] found showMoreItem:', !!showMoreItem, 'hasNode:', showMoreItem ? list.hasNode(showMoreItem) : false); - if (!showMoreItem) { + const showMoreItem = sectionToShowMore.get(sectionLabel); + if (!showMoreItem || !list.hasNode(showMoreItem)) { return; } expandedShowMoreElement = showMoreItem; expandedSectionLabel = sectionLabel; - if (list.hasNode(showMoreItem)) { - const el = container.querySelector(`.agent-session-show-more[data-section-label="${sectionLabel}"]`); - if (el) { - el.classList.remove('compact-collapsed'); - el.classList.add('compact-expanded'); - } - console.log('[show-more] expanding to height', AgentSessionShowMoreRenderer.HEIGHT); - list.updateElementHeight(showMoreItem, AgentSessionShowMoreRenderer.HEIGHT); + const el = container.querySelector(`.agent-session-show-more[data-section-label="${CSS.escape(sectionLabel)}"]`); + if (el) { + el.classList.remove('compact-collapsed'); + el.classList.add('compact-expanded'); } + list.updateElementHeight(showMoreItem, AgentSessionShowMoreRenderer.HEIGHT); + }; + + // Stamp data-section-label on session items after rendering + const stampSectionLabels = () => { + rebuildSectionMap(); + // Stamp each rendered session item with its section label + container.querySelectorAll('.agent-session-item').forEach(item => { + // Find the session title text and match against our map + // Simpler: we'll set data-section-label on the item via the tree node iteration + }); + // Alternative: stamp via session resource URI stored on the item + // We'll use a different approach: store the section label on each session renderer + }; + + // Listen to tree model changes + this._register(list.onDidChangeModel(() => { + rebuildSectionMap(); + })); + + // On mouseover, determine section from the hovered element + this._register(addDisposableListener(container, 'mouseover', (e: MouseEvent) => { + const target = e.target as HTMLElement; + const row = target.closest('.monaco-list-row'); + if (!row) { + return; + } + + let sectionLabel: string | undefined; + + // Section header + const sectionHeaderEl = row.querySelector('.agent-session-section-label'); + if (sectionHeaderEl) { + sectionLabel = sectionHeaderEl.textContent ?? undefined; + } + + // Show-more element + if (!sectionLabel) { + const showMoreEl = row.querySelector('.agent-session-show-more'); + if (showMoreEl) { + sectionLabel = showMoreEl.getAttribute('data-section-label') ?? undefined; + } + } + + // Session item — use data-section-label attribute + if (!sectionLabel) { + const sessionItem = row.querySelector('.agent-session-item[data-section-label]'); + if (sessionItem) { + sectionLabel = sessionItem.getAttribute('data-section-label') ?? undefined; + } + } + + if (!sectionLabel || !sectionToShowMore.has(sectionLabel)) { + collapseCurrentShowMore(); + return; + } + + expandShowMore(sectionLabel); })); this._register(addDisposableListener(container, 'mouseleave', () => { collapseCurrentShowMore(); })); + + stampSectionLabels(); } this._register(sessionDataSource.onDidGetChildren(count => { From 0fe94be7995b9a7973d93754fe6af2dc9caa9ea1 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 18:02:29 -0700 Subject: [PATCH 41/83] Add pull request status icons to agent session renderer --- .../chat/browser/agentSessions/agentSessionsViewer.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts index ba895e8348e..3dddb2af951 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts @@ -420,6 +420,15 @@ export class AgentSessionRenderer extends Disposable implements ICompressibleTre return Codicon.error; } + // PR status icons + const metadata = session.metadata; + if (metadata?.pullRequestUrl || metadata?.pullRequestNumber) { + if (metadata.pullRequestMerged === true) { + return Codicon.gitMerge; + } + return Codicon.gitPullRequest; + } + if (!session.isRead() && !session.isArchived()) { return Codicon.circleFilled; } From adfcb01bc915f428e67dd680f0cbecadaec14acb Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 18:04:15 -0700 Subject: [PATCH 42/83] Add foreground colors for open and merged pull request indicators in agent sessions --- .../chat/browser/agentSessions/agentSessions.ts | 12 ++++++++++++ .../agentSessions/media/agentsessionsviewer.css | 8 ++++++++ 2 files changed, 20 insertions(+) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.ts index b58ce96c3c3..f7d4b65ede6 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.ts @@ -190,6 +190,18 @@ export const agentSessionReadIndicatorForeground = registerColor( localize('agentSessionReadIndicatorForeground', "Foreground color for the read indicator in an agent session.") ); +export const agentSessionPullRequestOpenForeground = registerColor( + 'agentSessionPullRequest.openForeground', + { dark: '#3fb950', light: '#1a7f37', hcDark: '#3fb950', hcLight: '#1a7f37' }, + localize('agentSessionPullRequestOpenForeground', "Foreground color for the open pull request indicator in an agent session.") +); + +export const agentSessionPullRequestMergedForeground = registerColor( + 'agentSessionPullRequest.mergedForeground', + { dark: '#a371f7', light: '#8250df', hcDark: '#a371f7', hcLight: '#8250df' }, + localize('agentSessionPullRequestMergedForeground', "Foreground color for the merged pull request indicator in an agent session.") +); + export const agentSessionSelectedBadgeBorder = registerColor( 'agentSessionSelectedBadge.border', { dark: transparent(listActiveSelectionForeground, 0.3), light: transparent(listActiveSelectionForeground, 0.3), hcDark: foreground, hcLight: foreground }, diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css b/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css index 2602b31b089..de86ff2f6c1 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css @@ -151,6 +151,14 @@ color: var(--vscode-agentSessionReadIndicator-foreground); } + &.codicon.codicon-git-pull-request { + color: var(--vscode-agentSessionPullRequest-openForeground); + } + + &.codicon.codicon-git-merge { + color: var(--vscode-agentSessionPullRequest-mergedForeground); + } + @media (prefers-reduced-motion: reduce) { &.codicon.codicon-circle-filled.needs-input { animation: none; From 53ffddc848473eb766948e3ed468b1199344128c Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 18:56:59 -0700 Subject: [PATCH 43/83] Refactor show-more and show-less renderers to remove compact mode handling and update CSS for visibility control --- .../sessions/browser/media/sessionsViewer.css | 13 ++----------- .../browser/agentSessions/agentSessionsControl.ts | 14 ++------------ .../browser/agentSessions/agentSessionsViewer.ts | 14 -------------- 3 files changed, 4 insertions(+), 37 deletions(-) diff --git a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css index f6207a2cc78..f523c264f30 100644 --- a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css +++ b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css @@ -9,8 +9,8 @@ .agent-sessions-workbench { /* - * Show-more / show-less: starts collapsed (0 height), expands on - * hover via dynamic height updates from the renderer. + * Show-more / show-less: content always rendered, list row height + * controls visibility (1px = hidden, 26px = visible). */ .agent-session-show-more { justify-content: center; @@ -18,15 +18,6 @@ font-size: 11px; color: var(--vscode-descriptionForeground); - &.compact-collapsed { - height: 0; - overflow: hidden; - } - - &.compact-expanded { - height: 26px; - } - .agent-session-show-more-label { padding: 0 6px; flex-shrink: 0; diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index 3758693bf1e..a5dd42b41ed 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -267,8 +267,8 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo isSortedByUpdated: () => this.options.filter.sortResults?.() === AgentSessionsSorting.Updated, }, approvalModel, activeSessionResource)); const compact = this.options.compactShowMore; - const showMoreRenderer = new AgentSessionShowMoreRenderer(compact); - const showLessRenderer = new AgentSessionShowLessRenderer(compact); + const showMoreRenderer = new AgentSessionShowMoreRenderer(); + const showLessRenderer = new AgentSessionShowLessRenderer(); const sessionDataSource = this.sessionsDataSource = this._register(new AgentSessionsDataSource(this.options.filter, sorter, this.options.repositoryGroupLimit)); const list = this.sessionsList = this._register(this.instantiationService.createInstance(WorkbenchCompressibleAsyncDataTree, 'AgentSessionsView', @@ -354,11 +354,6 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo if (list.hasNode(expandedShowMoreElement)) { list.updateElementHeight(expandedShowMoreElement, AgentSessionShowMoreRenderer.COLLAPSED_HEIGHT); } - const el = container.querySelector(`.agent-session-show-more[data-section-label="${CSS.escape(expandedSectionLabel)}"]`); - if (el) { - el.classList.add('compact-collapsed'); - el.classList.remove('compact-expanded'); - } } expandedShowMoreElement = undefined; expandedSectionLabel = undefined; @@ -378,11 +373,6 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo expandedShowMoreElement = showMoreItem; expandedSectionLabel = sectionLabel; - const el = container.querySelector(`.agent-session-show-more[data-section-label="${CSS.escape(sectionLabel)}"]`); - if (el) { - el.classList.remove('compact-collapsed'); - el.classList.add('compact-expanded'); - } list.updateElementHeight(showMoreItem, AgentSessionShowMoreRenderer.HEIGHT); }; diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts index 3dddb2af951..b8247fee7f9 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts @@ -743,8 +743,6 @@ export class AgentSessionShowMoreRenderer implements ICompressibleTreeRenderer(); readonly onDidChangeItemHeight: Event = this._onDidChangeItemHeight.event; - constructor(private readonly _compact?: boolean) { } - renderTemplate(container: HTMLElement): IAgentSessionShowMoreTemplate { const disposables = new DisposableStore(); const elementDisposable = disposables.add(new DisposableStore()); @@ -768,11 +766,6 @@ export class AgentSessionShowMoreRenderer implements ICompressibleTreeRenderer(); readonly onDidChangeItemHeight: Event = this._onDidChangeItemHeight.event; - constructor(private readonly _compact?: boolean) { } - renderTemplate(container: HTMLElement): IAgentSessionShowMoreTemplate { const disposables = new DisposableStore(); const elementDisposable = disposables.add(new DisposableStore()); @@ -827,11 +818,6 @@ export class AgentSessionShowLessRenderer implements ICompressibleTreeRenderer Date: Tue, 24 Mar 2026 18:59:31 -0700 Subject: [PATCH 44/83] Refactor show-more section styles for improved visibility control and hover behavior --- .../sessions/browser/media/sessionsViewer.css | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css index f523c264f30..aa080b9652f 100644 --- a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css +++ b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css @@ -9,14 +9,18 @@ .agent-sessions-workbench { /* - * Show-more / show-less: content always rendered, list row height - * controls visibility (1px = hidden, 26px = visible). + * Show-more / show-less: content always rendered but lines hidden + * by default. At 1px row height the row clips everything. + * At 26px (expanded) lines and text become visible. + * We hide the lines with opacity:0 and only show when the + * container has enough height to be visible. */ .agent-session-show-more { justify-content: center; padding: 0 6px; font-size: 11px; color: var(--vscode-descriptionForeground); + min-height: 26px; .agent-session-show-more-label { padding: 0 6px; @@ -24,14 +28,18 @@ white-space: nowrap; } - /* Lines on both sides of the text */ - &::before, - &::after { - content: ''; - flex: 1; - height: 1px; - background: var(--vscode-widget-border, var(--vscode-contrastBorder)); - } + /* Lines on both sides — no pseudo-elements by default to avoid + the line bleeding through the 1px clipped row */ + } + + /* Show lines only when the row is hovered (which means it's expanded + because at 1px height there's nothing to hover) */ + .monaco-list-row:hover .agent-session-show-more::before, + .monaco-list-row:hover .agent-session-show-more::after { + content: ''; + flex: 1; + height: 1px; + background: var(--vscode-widget-border, var(--vscode-contrastBorder)); } /* Brighter text on direct hover */ From 9191c699ac4fbc21790afacd9027421533429d7f Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 19:03:00 -0700 Subject: [PATCH 45/83] Refactor show-more section comments and structure for clarity and improved visibility control --- .../sessions/browser/media/sessionsViewer.css | 29 ++++++++----------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css index aa080b9652f..57f659d4a45 100644 --- a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css +++ b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css @@ -9,14 +9,13 @@ .agent-sessions-workbench { /* - * Show-more / show-less: content always rendered but lines hidden - * by default. At 1px row height the row clips everything. - * At 26px (expanded) lines and text become visible. - * We hide the lines with opacity:0 and only show when the - * container has enough height to be visible. + * Show-more / show-less: content always rendered, list row height + * controls visibility (1px = clipped, 26px = visible). + * Lines are flex siblings — at 1px row height they're clipped by overflow:hidden. */ .agent-session-show-more { justify-content: center; + align-items: center; padding: 0 6px; font-size: 11px; color: var(--vscode-descriptionForeground); @@ -28,18 +27,14 @@ white-space: nowrap; } - /* Lines on both sides — no pseudo-elements by default to avoid - the line bleeding through the 1px clipped row */ - } - - /* Show lines only when the row is hovered (which means it's expanded - because at 1px height there's nothing to hover) */ - .monaco-list-row:hover .agent-session-show-more::before, - .monaco-list-row:hover .agent-session-show-more::after { - content: ''; - flex: 1; - height: 1px; - background: var(--vscode-widget-border, var(--vscode-contrastBorder)); + /* Lines on both sides of the text as flex items */ + &::before, + &::after { + content: ''; + flex: 1; + height: 1px; + background: var(--vscode-widget-border, var(--vscode-contrastBorder)); + } } /* Brighter text on direct hover */ From 06875997a9f7275b22ff7780a20fbb8314d9fd17 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 19:05:28 -0700 Subject: [PATCH 46/83] Add transition effect for agent session show-more rows --- .../console-2026-03-25T02-04-09-342Z.log | 38 +++++++++++++++++++ .../sessions/browser/media/sessionsViewer.css | 4 ++ 2 files changed, 42 insertions(+) create mode 100644 .playwright-mcp/console-2026-03-25T02-04-09-342Z.log diff --git a/.playwright-mcp/console-2026-03-25T02-04-09-342Z.log b/.playwright-mcp/console-2026-03-25T02-04-09-342Z.log new file mode 100644 index 00000000000..ca98707bcda --- /dev/null +++ b/.playwright-mcp/console-2026-03-25T02-04-09-342Z.log @@ -0,0 +1,38 @@ +[ 136ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://127.0.0.1:5500/favicon.ico:0 +[ 139ms] [WARNING] Failed to decode character for dithering.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 140ms] [WARNING] Failed to decode character for index.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 140ms] [WARNING] Failed to decode character for onboarding.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 140ms] [WARNING] Failed to decode character for onboarding_orig.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 140ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 140ms] [WARNING] Failed to decode character for codicon.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 140ms] [WARNING] Failed to decode character for default fontCharacter: \E023 @ http://127.0.0.1:5500/:10014 +[ 140ms] [WARNING] Failed to decode character for seti.woff fontCharacter: \E033 @ http://127.0.0.1:5500/:10014 +[ 140ms] [WARNING] Failed to decode character for vs-seti-icon-theme.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 140ms] [WARNING] Failed to decode character for vs-seti-icon-theme.truncated.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 140ms] [WARNING] Failed to decode character for update.md fontCharacter: \E060 @ http://127.0.0.1:5500/:10014 +[ 140ms] [WARNING] Failed to decode character for vscode.svg fontCharacter: \E091 @ http://127.0.0.1:5500/:10014 +[ 140ms] [WARNING] Failed to decode character for dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 140ms] [WARNING] Failed to decode character for less-dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 140ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 140ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 +[ 140ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 141ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 141ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 +[ 141ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 141ms] [WARNING] Failed to decode character for dithering.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 141ms] [WARNING] Failed to decode character for index.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 141ms] [WARNING] Failed to decode character for onboarding.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 141ms] [WARNING] Failed to decode character for onboarding_orig.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 141ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 141ms] [WARNING] Failed to decode character for codicon.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 141ms] [WARNING] Failed to decode character for default fontCharacter: \E023 @ http://127.0.0.1:5500/:10014 +[ 141ms] [WARNING] Failed to decode character for seti.woff fontCharacter: \E033 @ http://127.0.0.1:5500/:10014 +[ 141ms] [WARNING] Failed to decode character for vs-seti-icon-theme.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 141ms] [WARNING] Failed to decode character for vs-seti-icon-theme.truncated.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 141ms] [WARNING] Failed to decode character for update.md fontCharacter: \E060 @ http://127.0.0.1:5500/:10014 +[ 141ms] [WARNING] Failed to decode character for vscode.svg fontCharacter: \E091 @ http://127.0.0.1:5500/:10014 +[ 142ms] [WARNING] Failed to decode character for dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 142ms] [WARNING] Failed to decode character for less-dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 142ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 142ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 +[ 142ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 diff --git a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css index 57f659d4a45..0dff490d0fb 100644 --- a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css +++ b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css @@ -13,6 +13,10 @@ * controls visibility (1px = clipped, 26px = visible). * Lines are flex siblings — at 1px row height they're clipped by overflow:hidden. */ + .monaco-list-row:has(.agent-session-show-more) { + transition: height 0.15s ease; + } + .agent-session-show-more { justify-content: center; align-items: center; From 226c26a32f885c2210fd579e6b77a3846a79cfa1 Mon Sep 17 00:00:00 2001 From: Peng Lyu Date: Tue, 24 Mar 2026 19:08:25 -0700 Subject: [PATCH 47/83] Enhance image carousel to support video playback (#304582) * Enhance image carousel to support video playback * :lipstick: * :lipstick: 2 --- .../browser/imageCarousel.contribution.ts | 16 +- .../browser/imageCarouselEditor.ts | 184 ++++++++++++++---- .../browser/imageCarouselTypes.ts | 4 + .../browser/media/imageCarousel.css | 39 ++++ .../imageCarousel.contribution.test.ts | 65 +++++++ 5 files changed, 262 insertions(+), 46 deletions(-) diff --git a/src/vs/workbench/contrib/imageCarousel/browser/imageCarousel.contribution.ts b/src/vs/workbench/contrib/imageCarousel/browser/imageCarousel.contribution.ts index 5c7fbd966fb..967dd0feffd 100644 --- a/src/vs/workbench/contrib/imageCarousel/browser/imageCarousel.contribution.ts +++ b/src/vs/workbench/contrib/imageCarousel/browser/imageCarousel.contribution.ts @@ -159,11 +159,11 @@ registerAction2(OpenImageInCarouselAction); // --- Explorer Context Menu Integration --- -/** Supported image extensions for the carousel explorer context menu. */ -const IMAGE_EXTENSION_REGEX = /^\.(png|jpg|jpeg|jpe|gif|webp|svg|bmp|ico)$/i; +/** Supported media (image + video) extensions for the carousel explorer context menu. */ +const MEDIA_EXTENSION_REGEX = /^\.(png|jpg|jpeg|jpe|gif|webp|svg|bmp|ico|mp4|webm)$/i; -function isImageResource(uri: URI): boolean { - return IMAGE_EXTENSION_REGEX.test(extname(uri)); +function isMediaResource(uri: URI): boolean { + return MEDIA_EXTENSION_REGEX.test(extname(uri)); } async function collectImageFilesFromFolder(fileService: IFileService, folderUri: URI): Promise { @@ -171,7 +171,7 @@ async function collectImageFilesFromFolder(fileService: IFileService, folderUri: const imageUris: URI[] = []; if (stat.children) { for (const child of stat.children) { - if (child.isFile && isImageResource(child.resource)) { + if (child.isFile && isMediaResource(child.resource)) { imageUris.push(child.resource); } } @@ -203,7 +203,7 @@ class OpenImagesInCarouselFromExplorerAction extends Action2 { ContextKeyExpr.has('config.imageCarousel.explorerContextMenu.enabled'), ContextKeyExpr.or( ExplorerFolderContext, - ContextKeyExpr.regex(ResourceContextKey.Extension.key, IMAGE_EXTENSION_REGEX), + ContextKeyExpr.regex(ResourceContextKey.Extension.key, MEDIA_EXTENSION_REGEX), ), ), }], @@ -241,7 +241,7 @@ class OpenImagesInCarouselFromExplorerAction extends Action2 { imageUris = await collectImageFilesFromFolder(fileService, folderUri); } } else { - const hasSingleImageFile = context.length === 1 && !context[0].isDirectory && isImageResource(context[0].resource); + const hasSingleImageFile = context.length === 1 && !context[0].isDirectory && isMediaResource(context[0].resource); if (hasSingleImageFile) { // Single image: show all sibling images in the same folder with @@ -262,7 +262,7 @@ class OpenImagesInCarouselFromExplorerAction extends Action2 { imageUris.push(uri); } } - } else if (isImageResource(item.resource)) { + } else if (isMediaResource(item.resource)) { if (!seen.has(item.resource)) { seen.add(item.resource); imageUris.push(item.resource); diff --git a/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditor.ts b/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditor.ts index 06274338eec..611656daca9 100644 --- a/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditor.ts +++ b/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditor.ts @@ -10,6 +10,7 @@ import { CancellationToken } from '../../../../base/common/cancellation.js'; import { DisposableStore } from '../../../../base/common/lifecycle.js'; import { clamp } from '../../../../base/common/numbers.js'; import { isMacintosh } from '../../../../base/common/platform.js'; +import { generateUuid } from '../../../../base/common/uuid.js'; import { localize } from '../../../../nls.js'; import { IEditorOptions } from '../../../../platform/editor/common/editor.js'; import { IFileService } from '../../../../platform/files/common/files.js'; @@ -19,8 +20,9 @@ import { IEditorOpenContext } from '../../../common/editor.js'; import { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js'; import { IStorageService } from '../../../../platform/storage/common/storage.js'; import { IEditorGroup } from '../../../services/editor/common/editorGroupsService.js'; +import { IWebviewElement, IWebviewService } from '../../webview/browser/webview.js'; import { ImageCarouselEditorInput } from './imageCarouselEditorInput.js'; -import { ICarouselImage, ICarouselSection } from './imageCarouselTypes.js'; +import { ICarouselImage, ICarouselSection, isVideoMimeType } from './imageCarouselTypes.js'; /** * A flat entry referencing a specific image within a section, used @@ -52,11 +54,13 @@ export class ImageCarouselEditor extends EditorPane { private readonly _imageDisposables = this._register(new DisposableStore()); private readonly _blobUrlCache = new Map(); + private _videoWebview: IWebviewElement | undefined; private _elements: { root: HTMLElement; imageArea: HTMLElement; mainImageContainer: HTMLElement; mainImage: HTMLImageElement; + videoContainer: HTMLElement; captionText: HTMLElement; captionSeparator: HTMLElement; counter: HTMLElement; @@ -71,7 +75,8 @@ export class ImageCarouselEditor extends EditorPane { @ITelemetryService telemetryService: ITelemetryService, @IThemeService themeService: IThemeService, @IStorageService storageService: IStorageService, - @IFileService private readonly _fileService: IFileService + @IFileService private readonly _fileService: IFileService, + @IWebviewService private readonly _webviewService: IWebviewService ) { super(ImageCarouselEditor.ID, group, telemetryService, themeService, storageService); } @@ -96,6 +101,8 @@ export class ImageCarouselEditor extends EditorPane { } override clearInput(): void { + this._videoWebview?.dispose(); + this._videoWebview = undefined; this._contentDisposables.clear(); this._imageDisposables.clear(); this._revokeCachedBlobUrls(); @@ -108,6 +115,11 @@ export class ImageCarouselEditor extends EditorPane { super.clearInput(); } + private _isCurrentVideo(): boolean { + const entry = this._flatImages[this._currentIndex]; + return !!entry && isVideoMimeType(entry.image.mimeType); + } + /** * Build the full DOM skeleton. Called once per setInput. */ @@ -132,6 +144,7 @@ export class ImageCarouselEditor extends EditorPane { h('div.image-area@imageArea', [ h('div.main-image-container@mainImageContainer', [ h('img.main-image@mainImage'), + h('div.video-container@videoContainer'), ]), h('button.nav-arrow.prev-arrow@prevBtn', { ariaLabel: localize('imageCarousel.previousImage', "Previous image") }, [ h('span.codicon.codicon-chevron-left'), @@ -155,6 +168,7 @@ export class ImageCarouselEditor extends EditorPane { imageArea: elements.imageArea, mainImageContainer: elements.mainImageContainer, mainImage: elements.mainImage as HTMLImageElement, + videoContainer: elements.videoContainer, captionText: elements.captionText, captionSeparator: elements.captionSeparator, counter: elements.counter, @@ -166,6 +180,9 @@ export class ImageCarouselEditor extends EditorPane { // Initialize image in fit mode this._elements.mainImage.classList.add('scale-to-fit'); + // Hide video container initially + this._elements.videoContainer.style.display = 'none'; + // Navigation listeners this._contentDisposables.add(addDisposableListener(this._elements.prevBtn, 'click', () => { if (this._currentIndex > 0) { @@ -197,6 +214,9 @@ export class ImageCarouselEditor extends EditorPane { // Zoom: scroll wheel + modifier key (Ctrl on Win/Linux, Alt on Mac) or pinch this._contentDisposables.add(addDisposableListener(this._elements.imageArea, EventType.MOUSE_WHEEL, (e: WheelEvent) => { + if (this._isCurrentVideo()) { + return; + } const isZoomModifier = isMacintosh ? e.altKey : e.ctrlKey; if (!isZoomModifier && !e.ctrlKey) { return; @@ -227,7 +247,7 @@ export class ImageCarouselEditor extends EditorPane { clickAltPressed = e.altKey; })); this._contentDisposables.add(addDisposableListener(this._elements.mainImageContainer, EventType.CLICK, (e: MouseEvent) => { - if (e.button !== 0) { + if (e.button !== 0 || this._isCurrentVideo()) { return; } const isZoomOut = isMacintosh ? clickAltPressed : clickCtrlPressed; @@ -260,16 +280,32 @@ export class ImageCarouselEditor extends EditorPane { for (let i = 0; i < section.images.length; i++) { const image = section.images[i]; const currentFlatIndex = flatIndex; - const thumbnail = h('button.thumbnail@root', [ - h('img.thumbnail-image@img'), - ]); + const isItemVideo = isVideoMimeType(image.mimeType); - const btn = thumbnail.root as HTMLButtonElement; - btn.ariaLabel = localize('imageCarousel.thumbnailLabel', "Image {0} of {1}", currentFlatIndex + 1, this._flatImages.length); + const btn = document.createElement('button'); + btn.className = isItemVideo ? 'thumbnail video-thumbnail' : 'thumbnail'; + btn.ariaLabel = isItemVideo + ? localize('imageCarousel.thumbnailLabelVideo', "Video {0} of {1}", currentFlatIndex + 1, this._flatImages.length) + : localize('imageCarousel.thumbnailLabelImage', "Image {0} of {1}", currentFlatIndex + 1, this._flatImages.length); - const img = thumbnail.img as HTMLImageElement; - this._loadBlobUrl(image).then(url => { img.src = url; }); - img.alt = image.name; + if (isItemVideo) { + const icon = h('span.codicon.codicon-play.thumbnail-play-icon'); + icon.root.setAttribute('aria-hidden', 'true'); + btn.appendChild(icon.root); + } else { + const img = document.createElement('img'); + img.className = 'thumbnail-image'; + this._loadBlobUrl(image).then(url => { + img.src = url; + }, () => { + btn.classList.add('broken'); + }); + img.alt = image.name; + this._contentDisposables.add(addDisposableListener(img, 'error', () => { + btn.classList.add('broken'); + })); + btn.appendChild(img); + } this._contentDisposables.add(addDisposableListener(btn, 'click', () => { this._currentIndex = currentFlatIndex; @@ -306,29 +342,85 @@ export class ImageCarouselEditor extends EditorPane { // decodes on a worker thread, avoiding main-thread stalls during commit. const entry = this._flatImages[navigationIndex]; const currentImage = entry.image; - const url = await this._loadBlobUrl(currentImage); + const isVideo = isVideoMimeType(currentImage.mimeType); - // If the user navigated while loading the blob URL, discard this result. - if (this._currentIndex !== navigationIndex) { - return; + if (isVideo) { + // Show video container, hide image + this._elements.mainImage.style.display = 'none'; + this._elements.videoContainer.style.display = ''; + this._elements.mainImageContainer.classList.remove('zoomed'); + this._elements.mainImageContainer.style.cursor = 'default'; + + // Load raw data to send via postMessage + const rawData = await this._loadRawData(currentImage); + if (this._currentIndex !== navigationIndex) { + return; + } + + const nonce = generateUuid(); + const videoHtml = ` + + + + + + + +`; + + // Reuse existing webview or create one on first video navigation + let webview: IWebviewElement; + if (!this._videoWebview) { + webview = this._contentDisposables.add(this._webviewService.createWebviewElement({ + title: currentImage.name, + options: { disableServiceWorker: true }, + contentOptions: { allowScripts: true }, + extension: undefined, + })); + webview.mountTo(this._elements.videoContainer, this.window); + this._videoWebview = webview; + } else { + webview = this._videoWebview; + } + + webview.setHtml(videoHtml); + + // Send the video data to the webview via postMessage + const buffer = (rawData as Uint8Array).buffer; + webview.postMessage({ type: 'loadVideo', data: buffer, mimeType: currentImage.mimeType }, [buffer]); + } else { + // Show image, hide video container + this._elements.videoContainer.style.display = 'none'; + this._elements.mainImage.style.display = ''; + this._elements.mainImageContainer.style.cursor = ''; + + const url = await this._loadBlobUrl(currentImage); + + // If the user navigated while loading the blob URL, discard this result. + if (this._currentIndex !== navigationIndex) { + return; + } + + const tmp = new Image(); + tmp.src = url; + tmp.decode().then(() => { + // Only apply if user hasn't navigated away during decode + if (this._currentIndex === navigationIndex && this._elements) { + this._elements.mainImage.src = url; + this._elements.mainImage.alt = currentImage.name; + } + }, () => { + // Decode failed (invalid image) — still show src for browser fallback + if (this._currentIndex === navigationIndex && this._elements) { + this._elements.mainImage.src = url; + this._elements.mainImage.alt = currentImage.name; + } + }); } - const tmp = new Image(); - tmp.src = url; - tmp.decode().then(() => { - // Only apply if user hasn't navigated away during decode - if (this._currentIndex === navigationIndex && this._elements) { - this._elements.mainImage.src = url; - this._elements.mainImage.alt = currentImage.name; - } - }, () => { - // Decode failed (invalid image) — still show src for browser fallback - if (this._currentIndex === navigationIndex && this._elements) { - this._elements.mainImage.src = url; - this._elements.mainImage.alt = currentImage.name; - } - }); - // Reset zoom when switching images this._applyZoom('fit'); @@ -411,16 +503,32 @@ export class ImageCarouselEditor extends EditorPane { this._blobUrlCache.clear(); } + private async _loadRawData(image: ICarouselImage): Promise { + if (image.data) { + return image.data instanceof Uint8Array ? image.data : image.data.buffer; + } else if (image.uri) { + const content = await this._fileService.readFile(image.uri); + return content.value.buffer; + } + return new Uint8Array(0); + } + private _preloadAdjacentImages(): void { for (const idx of [this._currentIndex - 1, this._currentIndex + 1]) { if (idx >= 0 && idx < this._flatImages.length) { - this._loadBlobUrl(this._flatImages[idx].image).then(url => { - // Pre-decode via decode() so the compositor doesn't block - // the main thread decoding this image during commit. - const img = new Image(); - img.src = url; - img.decode().catch(() => { /* invalid image */ }); - }); + const adjacentImage = this._flatImages[idx].image; + if (isVideoMimeType(adjacentImage.mimeType)) { + // For video, preload raw data into the file service cache + this._loadRawData(adjacentImage).catch(() => { /* ignore */ }); + } else { + this._loadBlobUrl(adjacentImage).then(url => { + // Pre-decode via decode() so the compositor doesn't block + // the main thread decoding this image during commit. + const img = new Image(); + img.src = url; + img.decode().catch(() => { /* invalid image */ }); + }); + } } } } diff --git a/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselTypes.ts b/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselTypes.ts index c0aaa014ffd..0c713e948ad 100644 --- a/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselTypes.ts +++ b/src/vs/workbench/contrib/imageCarousel/browser/imageCarouselTypes.ts @@ -27,3 +27,7 @@ export interface IImageCarouselCollection { readonly title: string; readonly sections: ReadonlyArray; } + +export function isVideoMimeType(mimeType: string): boolean { + return mimeType.startsWith('video/'); +} diff --git a/src/vs/workbench/contrib/imageCarousel/browser/media/imageCarousel.css b/src/vs/workbench/contrib/imageCarousel/browser/media/imageCarousel.css index 35926b8e7b2..4ef892836f8 100644 --- a/src/vs/workbench/contrib/imageCarousel/browser/media/imageCarousel.css +++ b/src/vs/workbench/contrib/imageCarousel/browser/media/imageCarousel.css @@ -84,6 +84,13 @@ margin: auto; } +.image-carousel-editor .video-container { + width: 100%; + height: 100%; + border-radius: 4px; + overflow: hidden; +} + .image-carousel-editor .main-image.scale-to-fit { max-width: 100%; max-height: 100%; @@ -239,8 +246,40 @@ border-color: var(--vscode-focusBorder); } +.image-carousel-editor .thumbnail.broken .thumbnail-image { + display: none; +} + +.image-carousel-editor .thumbnail.broken { + display: flex; + align-items: center; + justify-content: center; + background: var(--vscode-editor-background); +} + +.image-carousel-editor .thumbnail.broken::after { + font-family: codicon; + content: '\eaea'; /* file-media */ + font-size: 20px; + color: var(--vscode-descriptionForeground); +} + .image-carousel-editor .thumbnail-image { width: 100%; height: 100%; object-fit: cover; + pointer-events: none; +} + +/* Video thumbnail: play icon centered in a dark background */ +.image-carousel-editor .thumbnail.video-thumbnail { + display: flex; + align-items: center; + justify-content: center; + background: var(--vscode-editor-background); +} + +.image-carousel-editor .thumbnail-play-icon { + font-size: 20px; + color: var(--vscode-descriptionForeground); } diff --git a/src/vs/workbench/contrib/imageCarousel/test/browser/imageCarousel.contribution.test.ts b/src/vs/workbench/contrib/imageCarousel/test/browser/imageCarousel.contribution.test.ts index c78c14c5df0..37b32ac3077 100644 --- a/src/vs/workbench/contrib/imageCarousel/test/browser/imageCarousel.contribution.test.ts +++ b/src/vs/workbench/contrib/imageCarousel/test/browser/imageCarousel.contribution.test.ts @@ -396,4 +396,69 @@ suite('OpenImagesInCarouselFromExplorerAction', () => { assert.strictEqual(images[0].data, undefined, 'Image data should not be loaded eagerly'); assert.ok(images[0].uri, 'Image should have a URI for lazy loading'); }); + + test('folder includes video files alongside images', async () => { + const fileService = instantiationService.get(IFileService); + const folderItem = createExplorerItem('/workspace/media', true, fileService, configService); + + const resolveMap = new Map(); + resolveMap.set('/workspace/media', createFileStat( + URI.file('/workspace/media'), false, false, true, false, [ + { resource: URI.file('/workspace/media/clip.mp4'), isFile: true }, + { resource: URI.file('/workspace/media/photo.png'), isFile: true }, + { resource: URI.file('/workspace/media/demo.webm'), isFile: true }, + { resource: URI.file('/workspace/media/readme.txt'), isFile: true }, + ] + )); + + stubFileService(resolveMap, new Map()); + stubExplorerService([folderItem]); + stubEditorService(); + + const { CommandsRegistry } = await import('../../../../../platform/commands/common/commands.js'); + const command = CommandsRegistry.getCommand('workbench.action.openImagesInCarousel'); + assert.ok(command); + + await instantiationService.invokeFunction(command.handler); + + assert.strictEqual(openedInputs.length, 1); + const images = openedInputs[0].input.collection.sections[0].images; + assert.strictEqual(images.length, 3, 'Should include mp4 + png + webm, not txt'); + assert.strictEqual(images[0].name, 'clip.mp4'); + assert.strictEqual(images[1].name, 'demo.webm'); + assert.strictEqual(images[2].name, 'photo.png'); + }); + + test('single video file opens carousel with sibling media', async () => { + const fileService = instantiationService.get(IFileService); + const parent = createExplorerItem('/workspace/media', true, fileService, configService); + const videoItem = createExplorerItem('/workspace/media/clip.mp4', false, fileService, configService, parent); + + const resolveMap = new Map(); + resolveMap.set('/workspace/media', createFileStat( + URI.file('/workspace/media'), false, false, true, false, [ + { resource: URI.file('/workspace/media/clip.mp4'), isFile: true }, + { resource: URI.file('/workspace/media/photo.png'), isFile: true }, + { resource: URI.file('/workspace/media/notes.txt'), isFile: true }, + ] + )); + + stubFileService(resolveMap, new Map()); + stubExplorerService([videoItem]); + stubEditorService(); + + const { CommandsRegistry } = await import('../../../../../platform/commands/common/commands.js'); + const command = CommandsRegistry.getCommand('workbench.action.openImagesInCarousel'); + assert.ok(command); + + await instantiationService.invokeFunction(command.handler); + + assert.strictEqual(openedInputs.length, 1); + const input = openedInputs[0].input; + const images = input.collection.sections[0].images; + assert.strictEqual(images.length, 2, 'Should include mp4 + png siblings'); + assert.strictEqual(images[0].name, 'clip.mp4'); + assert.strictEqual(images[1].name, 'photo.png'); + assert.strictEqual(input.startIndex, 0, 'Start index should point to the selected video'); + }); }); From c7ab91e5f7ab59a0df78c8e543fa40c469120e41 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 19:10:19 -0700 Subject: [PATCH 48/83] Implement height animation for show-more/collapse functionality in agent sessions --- .../console-2026-03-25T02-04-09-342Z.log | 41 +++++++++++++++++ .../sessions/browser/media/sessionsViewer.css | 7 +-- .../agentSessions/agentSessionsControl.ts | 46 ++++++++++++++++++- 3 files changed, 87 insertions(+), 7 deletions(-) diff --git a/.playwright-mcp/console-2026-03-25T02-04-09-342Z.log b/.playwright-mcp/console-2026-03-25T02-04-09-342Z.log index ca98707bcda..e09f5fb9608 100644 --- a/.playwright-mcp/console-2026-03-25T02-04-09-342Z.log +++ b/.playwright-mcp/console-2026-03-25T02-04-09-342Z.log @@ -36,3 +36,44 @@ [ 142ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 [ 142ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 [ 142ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 271759ms] TypeError: Cannot read properties of null (reading 'classList') + at http://127.0.0.1:5500/:10303:130 +[ 308614ms] [WARNING] Failed to decode character for dithering.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 308614ms] [WARNING] Failed to decode character for index.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 308614ms] [WARNING] Failed to decode character for onboarding.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 308614ms] [WARNING] Failed to decode character for onboarding_orig.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 308614ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 308614ms] [WARNING] Failed to decode character for codicon.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 308614ms] [WARNING] Failed to decode character for default fontCharacter: \E023 @ http://127.0.0.1:5500/:10014 +[ 308614ms] [WARNING] Failed to decode character for seti.woff fontCharacter: \E033 @ http://127.0.0.1:5500/:10014 +[ 308614ms] [WARNING] Failed to decode character for vs-seti-icon-theme.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 308614ms] [WARNING] Failed to decode character for vs-seti-icon-theme.truncated.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 308614ms] [WARNING] Failed to decode character for update.md fontCharacter: \E060 @ http://127.0.0.1:5500/:10014 +[ 308614ms] [WARNING] Failed to decode character for vscode.svg fontCharacter: \E091 @ http://127.0.0.1:5500/:10014 +[ 308614ms] [WARNING] Failed to decode character for dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 308614ms] [WARNING] Failed to decode character for less-dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 308615ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 308615ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 +[ 308615ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 308615ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 308615ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 +[ 308615ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 308615ms] [WARNING] Failed to decode character for dithering.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 308615ms] [WARNING] Failed to decode character for index.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 308615ms] [WARNING] Failed to decode character for onboarding.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 308615ms] [WARNING] Failed to decode character for onboarding_orig.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 +[ 308615ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 308615ms] [WARNING] Failed to decode character for codicon.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 308616ms] [WARNING] Failed to decode character for default fontCharacter: \E023 @ http://127.0.0.1:5500/:10014 +[ 308616ms] [WARNING] Failed to decode character for seti.woff fontCharacter: \E033 @ http://127.0.0.1:5500/:10014 +[ 308616ms] [WARNING] Failed to decode character for vs-seti-icon-theme.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 308616ms] [WARNING] Failed to decode character for vs-seti-icon-theme.truncated.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 308616ms] [WARNING] Failed to decode character for update.md fontCharacter: \E060 @ http://127.0.0.1:5500/:10014 +[ 308616ms] [WARNING] Failed to decode character for vscode.svg fontCharacter: \E091 @ http://127.0.0.1:5500/:10014 +[ 308616ms] [WARNING] Failed to decode character for dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 308616ms] [WARNING] Failed to decode character for less-dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 +[ 308616ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 +[ 308616ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 +[ 308616ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 +[ 309714ms] TypeError: Cannot read properties of null (reading 'classList') + at http://127.0.0.1:5500/:10303:130 diff --git a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css index 0dff490d0fb..f24870b6514 100644 --- a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css +++ b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css @@ -11,12 +11,9 @@ /* * Show-more / show-less: content always rendered, list row height * controls visibility (1px = clipped, 26px = visible). - * Lines are flex siblings — at 1px row height they're clipped by overflow:hidden. + * Height animation is driven by JS (requestAnimationFrame) since + * the virtualized list uses absolute positioning. */ - .monaco-list-row:has(.agent-session-show-more) { - transition: height 0.15s ease; - } - .agent-session-show-more { justify-content: center; align-items: center; diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index a5dd42b41ed..1b007e1c9f7 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -349,10 +349,47 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo } }; + let expandAnimationId: number | undefined; + let collapseAnimationId: number | undefined; + + const animateHeight = (element: AgentSessionListItem, from: number, to: number, onComplete?: () => void) => { + const duration = 150; + const start = Date.now(); + const step = () => { + const elapsed = Date.now() - start; + const progress = Math.min(elapsed / duration, 1); + // Ease-out curve + const eased = 1 - Math.pow(1 - progress, 2); + const currentHeight = Math.round(from + (to - from) * eased); + if (list.hasNode(element)) { + list.updateElementHeight(element, currentHeight); + } + if (progress < 1) { + return requestAnimationFrame(step); + } + onComplete?.(); + return undefined; + }; + return requestAnimationFrame(step); + }; + const collapseCurrentShowMore = () => { + if (collapseAnimationId) { + cancelAnimationFrame(collapseAnimationId); + collapseAnimationId = undefined; + } + if (expandAnimationId) { + cancelAnimationFrame(expandAnimationId); + expandAnimationId = undefined; + } if (expandedShowMoreElement && expandedSectionLabel) { if (list.hasNode(expandedShowMoreElement)) { - list.updateElementHeight(expandedShowMoreElement, AgentSessionShowMoreRenderer.COLLAPSED_HEIGHT); + collapseAnimationId = animateHeight( + expandedShowMoreElement, + AgentSessionShowMoreRenderer.HEIGHT, + AgentSessionShowMoreRenderer.COLLAPSED_HEIGHT, + () => { collapseAnimationId = undefined; } + ); } } expandedShowMoreElement = undefined; @@ -373,7 +410,12 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo expandedShowMoreElement = showMoreItem; expandedSectionLabel = sectionLabel; - list.updateElementHeight(showMoreItem, AgentSessionShowMoreRenderer.HEIGHT); + expandAnimationId = animateHeight( + showMoreItem, + AgentSessionShowMoreRenderer.COLLAPSED_HEIGHT, + AgentSessionShowMoreRenderer.HEIGHT, + () => { expandAnimationId = undefined; } + ); }; // Stamp data-section-label on session items after rendering From 390041d85b1e24e8987003d50da3242dfeead559 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 19:13:50 -0700 Subject: [PATCH 49/83] Improve hover behavior in agent sessions control to prevent unintended collapse --- .../console-2026-03-25T02-04-09-342Z.log | 2 ++ .../browser/agentSessions/agentSessionsControl.ts | 13 ++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/.playwright-mcp/console-2026-03-25T02-04-09-342Z.log b/.playwright-mcp/console-2026-03-25T02-04-09-342Z.log index e09f5fb9608..5de4425e875 100644 --- a/.playwright-mcp/console-2026-03-25T02-04-09-342Z.log +++ b/.playwright-mcp/console-2026-03-25T02-04-09-342Z.log @@ -77,3 +77,5 @@ [ 308616ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 [ 309714ms] TypeError: Cannot read properties of null (reading 'classList') at http://127.0.0.1:5500/:10303:130 +[ 417741ms] TypeError: Cannot read properties of null (reading 'classList') + at http://127.0.0.1:5500/:10303:130 diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index 1b007e1c9f7..d0e7f50a213 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -467,7 +467,18 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo } } - if (!sectionLabel || !sectionToShowMore.has(sectionLabel)) { + // If we couldn't determine the section but are still hovering + // inside a row with a session item, keep the current state + // (prevents collapse when hovering toolbar icons, diff stats, etc.) + if (!sectionLabel) { + if (row.querySelector('.agent-session-item')) { + return; + } + collapseCurrentShowMore(); + return; + } + + if (!sectionToShowMore.has(sectionLabel)) { collapseCurrentShowMore(); return; } From bc23ca36dc5af667cfdcec9de1c5a9d57f09c2b9 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 19:20:28 -0700 Subject: [PATCH 50/83] Remove unused time label styles and transitions in agent session items --- .../sessions/browser/media/sessionsViewer.css | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css index f24870b6514..40db2ce77e8 100644 --- a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css +++ b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css @@ -42,20 +42,4 @@ .monaco-list-row:hover .agent-session-show-more:hover { color: var(--vscode-foreground); } - - /* Time labels: hidden by default, shown on card hover */ - .agent-session-item .agent-session-status { - opacity: 0; - transition: opacity 0.15s; - } - - .monaco-list-row:hover .agent-session-item .agent-session-status, - .monaco-list-row.focused .agent-session-item .agent-session-status { - opacity: 1; - } - - /* Hide separators before time when time is hidden */ - .agent-session-item .agent-session-status.has-separator::before { - content: none; - } } From bdfe93b45e86936861f9cf3533c3c41ecc186968 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 19:27:16 -0700 Subject: [PATCH 51/83] Enhance PR status icon detection by checking badge text for indicators --- .../agentSessions/agentSessionsViewer.ts | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts index b8247fee7f9..90e6374241f 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts @@ -422,13 +422,26 @@ export class AgentSessionRenderer extends Disposable implements ICompressibleTre // PR status icons const metadata = session.metadata; - if (metadata?.pullRequestUrl || metadata?.pullRequestNumber) { - if (metadata.pullRequestMerged === true) { + const hasPR = metadata?.pullRequestUrl || metadata?.pullRequestNumber; + if (hasPR) { + if (metadata?.pullRequestMerged === true) { return Codicon.gitMerge; } return Codicon.gitPullRequest; } + // Fallback: check badge text for PR indicators + const badge = session.badge; + if (badge) { + const badgeText = typeof badge === 'string' ? badge : badge.value; + if (/\bmerged\b/i.test(badgeText) || /\$\(git-merge\)/.test(badgeText)) { + return Codicon.gitMerge; + } + if (/\bPR\s*#\d+/i.test(badgeText) || /\$\(git-pull-request\)/.test(badgeText)) { + return Codicon.gitPullRequest; + } + } + if (!session.isRead() && !session.isArchived()) { return Codicon.circleFilled; } From 274a1ac14232d691a6ba2fa062951f9a563d1d1b Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 19:34:57 -0700 Subject: [PATCH 52/83] refactor: remove unused log files and optimize agent sessions rendering - Deleted multiple log files generated during Playwright tests to clean up the repository. - Removed unnecessary instances of `AgentSessionShowMoreRenderer` and `AgentSessionShowLessRenderer` in `AgentSessionsControl`. - Streamlined the rendering process in `AgentSessionShowMoreRenderer` and `AgentSessionShowLessRenderer` by eliminating redundant code and event handling. - Updated the handling of section labels in the agent sessions to improve performance and maintainability. --- .../console-2026-03-24T23-04-17-148Z.log | 46 ---------- .../console-2026-03-24T23-33-55-971Z.log | 39 --------- .../console-2026-03-24T23-40-09-520Z.log | 37 -------- .../console-2026-03-24T23-59-36-992Z.log | 37 -------- .../console-2026-03-25T02-04-09-342Z.log | 81 ------------------ proto-group-hover.png | Bin 8377 -> 0 bytes proto-group-nohover.png | Bin 7770 -> 0 bytes prototype-compare.png | Bin 39079 -> 0 bytes prototype-sessions-panel.png | Bin 112984 -> 0 bytes sessions-detail-view.png | Bin 156106 -> 0 bytes sessions-expand-collapse.png | Bin 156945 -> 0 bytes .../agentSessions/agentSessionsControl.ts | 32 +------ .../agentSessions/agentSessionsViewer.ts | 34 +------- 13 files changed, 5 insertions(+), 301 deletions(-) delete mode 100644 .playwright-mcp/console-2026-03-24T23-04-17-148Z.log delete mode 100644 .playwright-mcp/console-2026-03-24T23-33-55-971Z.log delete mode 100644 .playwright-mcp/console-2026-03-24T23-40-09-520Z.log delete mode 100644 .playwright-mcp/console-2026-03-24T23-59-36-992Z.log delete mode 100644 .playwright-mcp/console-2026-03-25T02-04-09-342Z.log delete mode 100644 proto-group-hover.png delete mode 100644 proto-group-nohover.png delete mode 100644 prototype-compare.png delete mode 100644 prototype-sessions-panel.png delete mode 100644 sessions-detail-view.png delete mode 100644 sessions-expand-collapse.png diff --git a/.playwright-mcp/console-2026-03-24T23-04-17-148Z.log b/.playwright-mcp/console-2026-03-24T23-04-17-148Z.log deleted file mode 100644 index ce25f8a59e5..00000000000 --- a/.playwright-mcp/console-2026-03-24T23-04-17-148Z.log +++ /dev/null @@ -1,46 +0,0 @@ -[ 193ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://127.0.0.1:5500/favicon.ico:0 -[ 197ms] [WARNING] Failed to decode character for dithering.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 197ms] [WARNING] Failed to decode character for index.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 197ms] [WARNING] Failed to decode character for onboarding.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 197ms] [WARNING] Failed to decode character for onboarding_orig.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 197ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 197ms] [WARNING] Failed to decode character for codicon.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 197ms] [WARNING] Failed to decode character for default fontCharacter: \E023 @ http://127.0.0.1:5500/:10014 -[ 197ms] [WARNING] Failed to decode character for seti.woff fontCharacter: \E033 @ http://127.0.0.1:5500/:10014 -[ 197ms] [WARNING] Failed to decode character for vs-seti-icon-theme.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 197ms] [WARNING] Failed to decode character for vs-seti-icon-theme.truncated.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 197ms] [WARNING] Failed to decode character for update.md fontCharacter: \E060 @ http://127.0.0.1:5500/:10014 -[ 197ms] [WARNING] Failed to decode character for vscode.svg fontCharacter: \E091 @ http://127.0.0.1:5500/:10014 -[ 197ms] [WARNING] Failed to decode character for dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 197ms] [WARNING] Failed to decode character for less-dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 198ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 198ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 -[ 198ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 198ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 198ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 -[ 198ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 198ms] [WARNING] Failed to decode character for dithering.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 198ms] [WARNING] Failed to decode character for index.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 198ms] [WARNING] Failed to decode character for onboarding.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 198ms] [WARNING] Failed to decode character for onboarding_orig.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 198ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 198ms] [WARNING] Failed to decode character for codicon.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 199ms] [WARNING] Failed to decode character for default fontCharacter: \E023 @ http://127.0.0.1:5500/:10014 -[ 199ms] [WARNING] Failed to decode character for seti.woff fontCharacter: \E033 @ http://127.0.0.1:5500/:10014 -[ 199ms] [WARNING] Failed to decode character for vs-seti-icon-theme.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 199ms] [WARNING] Failed to decode character for vs-seti-icon-theme.truncated.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 199ms] [WARNING] Failed to decode character for update.md fontCharacter: \E060 @ http://127.0.0.1:5500/:10014 -[ 199ms] [WARNING] Failed to decode character for vscode.svg fontCharacter: \E091 @ http://127.0.0.1:5500/:10014 -[ 199ms] [WARNING] Failed to decode character for dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 199ms] [WARNING] Failed to decode character for less-dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 199ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 199ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 -[ 199ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 4517ms] TypeError: Cannot read properties of null (reading 'classList') - at http://127.0.0.1:5500/:10303:130 -[ 281723ms] TypeError: Cannot read properties of null (reading 'classList') - at http://127.0.0.1:5500/:10303:130 -[ 288305ms] TypeError: Cannot read properties of null (reading 'classList') - at http://127.0.0.1:5500/:10303:130 -[ 291561ms] TypeError: Cannot read properties of null (reading 'classList') - at http://127.0.0.1:5500/:10303:130 diff --git a/.playwright-mcp/console-2026-03-24T23-33-55-971Z.log b/.playwright-mcp/console-2026-03-24T23-33-55-971Z.log deleted file mode 100644 index 215d2a96be8..00000000000 --- a/.playwright-mcp/console-2026-03-24T23-33-55-971Z.log +++ /dev/null @@ -1,39 +0,0 @@ -[ 78ms] [WARNING] Failed to decode character for dithering.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 79ms] [WARNING] Failed to decode character for index.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 79ms] [WARNING] Failed to decode character for onboarding.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 79ms] [WARNING] Failed to decode character for onboarding_orig.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 79ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 79ms] [WARNING] Failed to decode character for codicon.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 79ms] [WARNING] Failed to decode character for default fontCharacter: \E023 @ http://127.0.0.1:5500/:10014 -[ 79ms] [WARNING] Failed to decode character for seti.woff fontCharacter: \E033 @ http://127.0.0.1:5500/:10014 -[ 79ms] [WARNING] Failed to decode character for vs-seti-icon-theme.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 79ms] [WARNING] Failed to decode character for vs-seti-icon-theme.truncated.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 79ms] [WARNING] Failed to decode character for update.md fontCharacter: \E060 @ http://127.0.0.1:5500/:10014 -[ 79ms] [WARNING] Failed to decode character for vscode.svg fontCharacter: \E091 @ http://127.0.0.1:5500/:10014 -[ 79ms] [WARNING] Failed to decode character for dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 79ms] [WARNING] Failed to decode character for less-dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 79ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 79ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 -[ 79ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 80ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 80ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 -[ 80ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 80ms] [WARNING] Failed to decode character for dithering.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 80ms] [WARNING] Failed to decode character for index.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 80ms] [WARNING] Failed to decode character for onboarding.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 80ms] [WARNING] Failed to decode character for onboarding_orig.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 80ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 80ms] [WARNING] Failed to decode character for codicon.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 80ms] [WARNING] Failed to decode character for default fontCharacter: \E023 @ http://127.0.0.1:5500/:10014 -[ 80ms] [WARNING] Failed to decode character for seti.woff fontCharacter: \E033 @ http://127.0.0.1:5500/:10014 -[ 80ms] [WARNING] Failed to decode character for vs-seti-icon-theme.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 80ms] [WARNING] Failed to decode character for vs-seti-icon-theme.truncated.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 80ms] [WARNING] Failed to decode character for update.md fontCharacter: \E060 @ http://127.0.0.1:5500/:10014 -[ 80ms] [WARNING] Failed to decode character for vscode.svg fontCharacter: \E091 @ http://127.0.0.1:5500/:10014 -[ 80ms] [WARNING] Failed to decode character for dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 80ms] [WARNING] Failed to decode character for less-dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 80ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 80ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 -[ 80ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 321960ms] TypeError: Cannot read properties of null (reading 'classList') - at http://127.0.0.1:5500/:10303:130 diff --git a/.playwright-mcp/console-2026-03-24T23-40-09-520Z.log b/.playwright-mcp/console-2026-03-24T23-40-09-520Z.log deleted file mode 100644 index 3748c8fde78..00000000000 --- a/.playwright-mcp/console-2026-03-24T23-40-09-520Z.log +++ /dev/null @@ -1,37 +0,0 @@ -[ 74ms] [WARNING] Failed to decode character for dithering.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 74ms] [WARNING] Failed to decode character for index.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 74ms] [WARNING] Failed to decode character for onboarding.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 74ms] [WARNING] Failed to decode character for onboarding_orig.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 74ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 74ms] [WARNING] Failed to decode character for codicon.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 74ms] [WARNING] Failed to decode character for default fontCharacter: \E023 @ http://127.0.0.1:5500/:10014 -[ 74ms] [WARNING] Failed to decode character for seti.woff fontCharacter: \E033 @ http://127.0.0.1:5500/:10014 -[ 74ms] [WARNING] Failed to decode character for vs-seti-icon-theme.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 74ms] [WARNING] Failed to decode character for vs-seti-icon-theme.truncated.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 74ms] [WARNING] Failed to decode character for update.md fontCharacter: \E060 @ http://127.0.0.1:5500/:10014 -[ 74ms] [WARNING] Failed to decode character for vscode.svg fontCharacter: \E091 @ http://127.0.0.1:5500/:10014 -[ 74ms] [WARNING] Failed to decode character for dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 74ms] [WARNING] Failed to decode character for less-dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 74ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 74ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 -[ 74ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 75ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 75ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 -[ 75ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 75ms] [WARNING] Failed to decode character for dithering.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 75ms] [WARNING] Failed to decode character for index.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 75ms] [WARNING] Failed to decode character for onboarding.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 75ms] [WARNING] Failed to decode character for onboarding_orig.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 75ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 75ms] [WARNING] Failed to decode character for codicon.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 75ms] [WARNING] Failed to decode character for default fontCharacter: \E023 @ http://127.0.0.1:5500/:10014 -[ 75ms] [WARNING] Failed to decode character for seti.woff fontCharacter: \E033 @ http://127.0.0.1:5500/:10014 -[ 75ms] [WARNING] Failed to decode character for vs-seti-icon-theme.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 75ms] [WARNING] Failed to decode character for vs-seti-icon-theme.truncated.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 75ms] [WARNING] Failed to decode character for update.md fontCharacter: \E060 @ http://127.0.0.1:5500/:10014 -[ 75ms] [WARNING] Failed to decode character for vscode.svg fontCharacter: \E091 @ http://127.0.0.1:5500/:10014 -[ 75ms] [WARNING] Failed to decode character for dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 75ms] [WARNING] Failed to decode character for less-dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 76ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 76ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 -[ 76ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 diff --git a/.playwright-mcp/console-2026-03-24T23-59-36-992Z.log b/.playwright-mcp/console-2026-03-24T23-59-36-992Z.log deleted file mode 100644 index b2c791c898d..00000000000 --- a/.playwright-mcp/console-2026-03-24T23-59-36-992Z.log +++ /dev/null @@ -1,37 +0,0 @@ -[ 82ms] [WARNING] Failed to decode character for dithering.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 82ms] [WARNING] Failed to decode character for index.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 82ms] [WARNING] Failed to decode character for onboarding.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 82ms] [WARNING] Failed to decode character for onboarding_orig.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 82ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 82ms] [WARNING] Failed to decode character for codicon.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 82ms] [WARNING] Failed to decode character for default fontCharacter: \E023 @ http://127.0.0.1:5500/:10014 -[ 82ms] [WARNING] Failed to decode character for seti.woff fontCharacter: \E033 @ http://127.0.0.1:5500/:10014 -[ 82ms] [WARNING] Failed to decode character for vs-seti-icon-theme.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 82ms] [WARNING] Failed to decode character for vs-seti-icon-theme.truncated.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 82ms] [WARNING] Failed to decode character for update.md fontCharacter: \E060 @ http://127.0.0.1:5500/:10014 -[ 82ms] [WARNING] Failed to decode character for vscode.svg fontCharacter: \E091 @ http://127.0.0.1:5500/:10014 -[ 82ms] [WARNING] Failed to decode character for dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 82ms] [WARNING] Failed to decode character for less-dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 82ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 82ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 -[ 82ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 83ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 83ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 -[ 83ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 83ms] [WARNING] Failed to decode character for dithering.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 83ms] [WARNING] Failed to decode character for index.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 83ms] [WARNING] Failed to decode character for onboarding.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 83ms] [WARNING] Failed to decode character for onboarding_orig.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 83ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 83ms] [WARNING] Failed to decode character for codicon.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 83ms] [WARNING] Failed to decode character for default fontCharacter: \E023 @ http://127.0.0.1:5500/:10014 -[ 83ms] [WARNING] Failed to decode character for seti.woff fontCharacter: \E033 @ http://127.0.0.1:5500/:10014 -[ 83ms] [WARNING] Failed to decode character for vs-seti-icon-theme.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 83ms] [WARNING] Failed to decode character for vs-seti-icon-theme.truncated.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 83ms] [WARNING] Failed to decode character for update.md fontCharacter: \E060 @ http://127.0.0.1:5500/:10014 -[ 83ms] [WARNING] Failed to decode character for vscode.svg fontCharacter: \E091 @ http://127.0.0.1:5500/:10014 -[ 83ms] [WARNING] Failed to decode character for dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 83ms] [WARNING] Failed to decode character for less-dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 84ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 84ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 -[ 84ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 diff --git a/.playwright-mcp/console-2026-03-25T02-04-09-342Z.log b/.playwright-mcp/console-2026-03-25T02-04-09-342Z.log deleted file mode 100644 index 5de4425e875..00000000000 --- a/.playwright-mcp/console-2026-03-25T02-04-09-342Z.log +++ /dev/null @@ -1,81 +0,0 @@ -[ 136ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://127.0.0.1:5500/favicon.ico:0 -[ 139ms] [WARNING] Failed to decode character for dithering.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 140ms] [WARNING] Failed to decode character for index.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 140ms] [WARNING] Failed to decode character for onboarding.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 140ms] [WARNING] Failed to decode character for onboarding_orig.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 140ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 140ms] [WARNING] Failed to decode character for codicon.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 140ms] [WARNING] Failed to decode character for default fontCharacter: \E023 @ http://127.0.0.1:5500/:10014 -[ 140ms] [WARNING] Failed to decode character for seti.woff fontCharacter: \E033 @ http://127.0.0.1:5500/:10014 -[ 140ms] [WARNING] Failed to decode character for vs-seti-icon-theme.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 140ms] [WARNING] Failed to decode character for vs-seti-icon-theme.truncated.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 140ms] [WARNING] Failed to decode character for update.md fontCharacter: \E060 @ http://127.0.0.1:5500/:10014 -[ 140ms] [WARNING] Failed to decode character for vscode.svg fontCharacter: \E091 @ http://127.0.0.1:5500/:10014 -[ 140ms] [WARNING] Failed to decode character for dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 140ms] [WARNING] Failed to decode character for less-dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 140ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 140ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 -[ 140ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 141ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 141ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 -[ 141ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 141ms] [WARNING] Failed to decode character for dithering.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 141ms] [WARNING] Failed to decode character for index.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 141ms] [WARNING] Failed to decode character for onboarding.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 141ms] [WARNING] Failed to decode character for onboarding_orig.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 141ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 141ms] [WARNING] Failed to decode character for codicon.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 141ms] [WARNING] Failed to decode character for default fontCharacter: \E023 @ http://127.0.0.1:5500/:10014 -[ 141ms] [WARNING] Failed to decode character for seti.woff fontCharacter: \E033 @ http://127.0.0.1:5500/:10014 -[ 141ms] [WARNING] Failed to decode character for vs-seti-icon-theme.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 141ms] [WARNING] Failed to decode character for vs-seti-icon-theme.truncated.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 141ms] [WARNING] Failed to decode character for update.md fontCharacter: \E060 @ http://127.0.0.1:5500/:10014 -[ 141ms] [WARNING] Failed to decode character for vscode.svg fontCharacter: \E091 @ http://127.0.0.1:5500/:10014 -[ 142ms] [WARNING] Failed to decode character for dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 142ms] [WARNING] Failed to decode character for less-dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 142ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 142ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 -[ 142ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 271759ms] TypeError: Cannot read properties of null (reading 'classList') - at http://127.0.0.1:5500/:10303:130 -[ 308614ms] [WARNING] Failed to decode character for dithering.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 308614ms] [WARNING] Failed to decode character for index.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 308614ms] [WARNING] Failed to decode character for onboarding.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 308614ms] [WARNING] Failed to decode character for onboarding_orig.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 308614ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 308614ms] [WARNING] Failed to decode character for codicon.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 308614ms] [WARNING] Failed to decode character for default fontCharacter: \E023 @ http://127.0.0.1:5500/:10014 -[ 308614ms] [WARNING] Failed to decode character for seti.woff fontCharacter: \E033 @ http://127.0.0.1:5500/:10014 -[ 308614ms] [WARNING] Failed to decode character for vs-seti-icon-theme.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 308614ms] [WARNING] Failed to decode character for vs-seti-icon-theme.truncated.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 308614ms] [WARNING] Failed to decode character for update.md fontCharacter: \E060 @ http://127.0.0.1:5500/:10014 -[ 308614ms] [WARNING] Failed to decode character for vscode.svg fontCharacter: \E091 @ http://127.0.0.1:5500/:10014 -[ 308614ms] [WARNING] Failed to decode character for dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 308614ms] [WARNING] Failed to decode character for less-dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 308615ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 308615ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 -[ 308615ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 308615ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 308615ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 -[ 308615ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 308615ms] [WARNING] Failed to decode character for dithering.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 308615ms] [WARNING] Failed to decode character for index.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 308615ms] [WARNING] Failed to decode character for onboarding.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 308615ms] [WARNING] Failed to decode character for onboarding_orig.html fontCharacter: \E048 @ http://127.0.0.1:5500/:10014 -[ 308615ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 308615ms] [WARNING] Failed to decode character for codicon.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 308616ms] [WARNING] Failed to decode character for default fontCharacter: \E023 @ http://127.0.0.1:5500/:10014 -[ 308616ms] [WARNING] Failed to decode character for seti.woff fontCharacter: \E033 @ http://127.0.0.1:5500/:10014 -[ 308616ms] [WARNING] Failed to decode character for vs-seti-icon-theme.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 308616ms] [WARNING] Failed to decode character for vs-seti-icon-theme.truncated.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 308616ms] [WARNING] Failed to decode character for update.md fontCharacter: \E060 @ http://127.0.0.1:5500/:10014 -[ 308616ms] [WARNING] Failed to decode character for vscode.svg fontCharacter: \E091 @ http://127.0.0.1:5500/:10014 -[ 308616ms] [WARNING] Failed to decode character for dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 308616ms] [WARNING] Failed to decode character for less-dark.json fontCharacter: \E055 @ http://127.0.0.1:5500/:10014 -[ 308616ms] [WARNING] Failed to decode character for README.md fontCharacter: \E04D @ http://127.0.0.1:5500/:10014 -[ 308616ms] [WARNING] Failed to decode character for app.js fontCharacter: \E051 @ http://127.0.0.1:5500/:10014 -[ 308616ms] [WARNING] Failed to decode character for style.css fontCharacter: \E01D @ http://127.0.0.1:5500/:10014 -[ 309714ms] TypeError: Cannot read properties of null (reading 'classList') - at http://127.0.0.1:5500/:10303:130 -[ 417741ms] TypeError: Cannot read properties of null (reading 'classList') - at http://127.0.0.1:5500/:10303:130 diff --git a/proto-group-hover.png b/proto-group-hover.png deleted file mode 100644 index ffddf2543bd7d04f1fb2ee46d3f87e0098b1e4de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8377 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 diff --git a/proto-group-nohover.png b/proto-group-nohover.png deleted file mode 100644 index 9ae64365249295b0b8622c2050ce7f36a583739e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7770 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 z z->xiu(`9ICwh4XkWxYCDj`yx@Y0h;}R1GZdya1LVRTJ^Wbn(A8}g$VsVcp3HOBtB&l~Hj@s7O z*W3J$qqJ`j2uTlO`-b=o0wxa{V8X6k5wu~-_lRly}dJ|1FQuy-H(*2nD zs%4%1|0CJsyUT-ubR?phMSiI6dZa#1Vb@kdgAi2E;v}ny0(&u_crp!0Bo^5iG{wu$ zMDjfc8=K-vjnePLXhOQUY1sNN2QZ9Zf{qNa9?f9u?Z%GBOVojSx@I3A7x#;3mo30G zKsC#~zO0OELDKa%?>xoEudiRf+6^R>m6t2c6{!Cc^bRi*UW}ykDOY!LqvC+=gGWb4 z@y(TJev$gbl!J&_qxgK-?UU;9aB+KEDy%!Q{=VubG%=s>R$f#Ac>rH{oW&P~J23Ug zkW~=8M>2Yin8X2Kf>^Bki(n!q1_rN9CoTGYzGC>oYeyuz4Tu4#Fm2(gb5&Ne856_9 zErI6_U@$l&MDCT7QNLiS$7&~?aq#XhCMPZ)p7=2?E-uCTRd?R_1-k3#G0$ulE4e{~umtO zG5?WiS5Cx5{mMhT4jm%bSsFkh#83Yzzo^I?SvZh1hRZr(5&n0B&QPZF-HR7BkyOJh zVqY^4Q?Ta!!R`s>C(HG*n33Q1htQVAfB5PdZpz6 z>E+=sgxS-j8$j79?_|W_%`WX8znU6CLyE8H-IqURW*YJ8-=6_A;MJJZ($WTkxO7$J zUv|Qq##j%F(jg@ZDS@2r?d@x-wL&N|JYe1HqvdeH6S__5?mvmAI7h@RwKAn@90s9P{;7w@?#H9I{5qh zm(mH5PrG<5w?=LkWU)Nq{JSw7O1{I#uSQjP*>D1;H9F%$x%P$`Jy zpEFSeeW4>HlWtFoMnq3FW&SzqKY6rPJ{{{<$pzBKefmTkz~$L9*|PgSVtJ?s?!7<5 z1%AH!(Ap{mD@$Oli%9F1B5~JT#=pV2iMho}LD8toL?#u2*-c^Nd_q1$npqn5ldvI9 zmj$AH`G`2~BU}S(imW4glEOB7)G+lEN`@3iNUV#Ze*Mye;m2Va1o?dEk23mh4D28* zz)O#!B3~nuLv}h+Rc;_2idwyizxVU<3x8bJPssHdQTyRA$;w(S@YS*Di#Q5_DNSv= zxmf7P$)A}JKypCQ-^+Jy^WT5*iR?xP~AuU>Gg>`8Pna&Sfr1$yr%a5`8&Vl zntzIXZoJYdNe9c7r3U<7-wdOhrpLdcA;|r4v6q*ezO=N|wDmeHAgf_Qi<#I7#3m~A zXs%=2iWEoNUPV3AyZdfMTyA~tsOeEr_==oG@7r?+2BH@Bxdrm{)i{@Fb3`Azg+A9z5pV$4 zy<2s0-d>rNuZyK}b)H1ghV0B(Q#l--u z&xXFDtU`b3&C$SZx?eg?nB1oko5R1d^)_8yQ(X_~=B6<@hjn#4dwX|E>v&(jWHU2! zAM69doC@Bn^zNKDHZ%z268QS;xh_psAc>w)fJVS*%h1lSv7xcSC$evwK(!r`Ga8ZL zHNt*^0iN(eKM`&cJ)&DP_LP@*%ed*1)dG9RA%;S-cfi)EW}GHQKIZ0DBbA+jx2OkDQj5!Nw;<8iAYNe#}Ba`A4@)d861la0WVauzo@RnkIB&VfI2 zWC!wWL|v%bIy7w?eN7|AnL>uRg$R2xIq%d;(lo5tH-Cj`J(UDik3fSU4;G>8<2Ez1 zJtvnEG74b~Cgrvki;VGH(Icm;Gi5{+o0!k2Hp#o+`;wkN-Ku d|8Ni;g$~z}`fNWAjvPTzf2pHVrDPlSe*jYF>Y4xm diff --git a/prototype-compare.png b/prototype-compare.png deleted file mode 100644 index a64f3b1bb4b1a62fa1787745d3e67fee325c5d4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39079 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 diff --git a/sessions-detail-view.png b/sessions-detail-view.png deleted file mode 100644 index f5e466a7ba8e683aafa0beaf307fdd308d681697..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156106 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

8y5mA$X`tL~AI@zl+VZDR@b#^nvb41gzkj zsIMQF{hUFI!M*vF^Rw_&RUipDF(D02{=w9q$w#A9#y2#1w?y0Zr#Rd>?pWzGhqEi^xgWdHXq^!&|*e`Hti4O1CcRon32_q~;Q zyz0lIK=(t6tuKqa{-cr`$3G7f_%n+xu0%h6u&$qcS)S8ff>mG4ESXFmT}X02XRRh7 z@Xqs7;h_gYbOT|JUcU%pzlz|FNaTFlt^C-<_R-^Ym)wD3%zsuX_>-b>GF07do;aVV z^ZzjQ7Eo1f-`g`XjoWnVLuRYgX^Qnyt>G<$j2etSTxw$#2M?$gu?6XQ=ZklN=Lomw}6+upw zfm3~V@nFfH|Nqs}6kf8Q*FHzo%@)lIeqYhAY1zRyjbDLK(4`=2Bk~eAEQoOL5KHU zRtKp(bnG{oUqLaxbh1ey&?XN%^bd#jk94^FdZeaTAU+1T^@Fwd z>WYxC^M4l!FFSUCF`Dh|eL7iB&9R>wX9)gXgQ8hNwe8!M;mJ*UN!)8(yFJ9r|F>`k z!v@wKsc)PkYE(AqqfZ&naPFt^js4Vs7pjWj{O#L0xaHFS{zJBa!JDC{3#qqN{`*+4 zjEFSpWZMpkke;o?C5t0_{g&&faGB`&Emv5~{h)sKG@{7niQ%8}Hv^$+kD4vGZiW7* zUj*F*s&ZZw7^i5-!y%yHm|9EXfI+JTV-n|FUGZ5Bo*oAI&jWQu=*za?$Z&a+AT&0X zP?DJm3*}=T(BXrE(5U2r6uYe!{44)e`KBBzupamkQBzVu*CqZnA4xKe^$A>P9@Lu@ zR8&;N!~tz|QhT@If@UI4Pfx)G00P|Qm6Wa}PLEi7jh>~y%r?HMnuxhfBp>Y7aZ5*y z>hiW(&M`yJ!R?Bm>yN<(4Q?6?M5?Pr1y7!%U+;)ID5%g@1?(s|tqtCO>j~B5czQu9 zNF~VguCydm>o-)fS*!vo2l>}Z%7_+8%*;zTA^d_ZBw7Nxx_Jz46b4*ea?Y^QNQf1L z<%&f;I2NkLsktVX!oL}0Gj{i?V6y$gY@5J?l2Y|)aJH6_+S}Syk7jiqAy*XoPuKdT`MZd6>SfHVAsf>%vgyE zhhuU@M353B1tlaT{NCgVpsx%4p`8gsLbTsgf%I6oZ7P8^^Q#Ldoe$|v60BH{8C*B* zS)&vS0PDx zEQ<8INLtl8(kd_W%H-hbka2D)WB!ZFmG@m*vU43dl4)Z+gjjf9*)FA4Bq5DrTjPh} z;CW0dS@~7Jb^Y7k(p0s1_~w@Nh@D=(>=#&HGgBfPzbf$g%s8|@7<`Cto)`69|GmDv zpYS@NgfEJI3)y+OOJT7cffg^dvq^+N_^sYQXcCh_d}2L|%jLd_qzZLw%Ze(bp7}QIgd2a7pAWq9eW>2W(H_=8)okWyI7n|sQLIj%#t|U zuFi4#%%^Q5EUl8dryY^ZDdK%LE+){%=oc%p@QKN(zAOOR^rD+_Ty9h?;dpmOZ4Lh(A5#J-$yY)srw@@k-S3 zGSxBj??th#c-bCQ-fPZTjv(b2sqq!TYEp11*wI!Z*lOGxpZ9&=m0ukY93f9LUW>m* zq=-aExcSTNtYtnRIP&&wX4>)En~+0j`s7O1Ch6ywnL9nr4Gr1OWW@{{fBsM#6rKP^ zQ`+7pXz6vgq;)fGY^UcVAM@{b1=xS?v6R#M`}+$Hfkc@SnVEq`_M&bu{SZw?`CSen zL)JcnsxQ_}&I&c{q}hASg`d-8Py%HWh)D?O#-o3vf7^5YJxFapw=l9~nn}-h&*9zK znfS2jrLznY9g(Qpg7W)fH^g|Am3C&`X?Id7)r}k8iy=>wnU1_vY;C*x$L~~?L`!(1 z_)iSAlSZ-z{&?$_#+iA(ed<#1kuP86_d61IIx**^u-I6O>&+4AZGT^1?6nw)xOkT3 z5n0AQ>C`EPr?F;TdUO*De`1pI5{*_{>rEAoHsU=bw4Va`v~W==Mr^P zJzmLj#9KT};xGj@~UFuv6EgrLWJv%XSKNt5hrE^{R z%yb@0GnvLj-#^waLeE?HFp#|95$&_jCqFonxmU0`o<|#@IT88^)3|{QmT^&(CiS>3 z6Ph^W*-*6}#lkzj5nD9ugWhS38~RkQA{fPj_Sy(?Xth`MgC$DtDHDx)u@pxPVGp0< zSU>f|A^DmKkJ7Tuv%>bpJ{IO%Cue8&Pbw&o$vYCb_NBpBU#LXd<5($6;bgdz$w!$& zBBaiF4P`8@;33T??NZ9e6Pqlzzrq<~g-0!H73r75d6Lk*@Nh?}TB*UiU_`^bvi`aG ze8Hh5)tEwN8kH4C5^SIt^X3X(*QK)K5eDBvytrZ5ulg>|7aq7u^bE zSB$@SbG1D0eJkQVe`Atv(#q>;nDlP1B($?phC%&?#w^~!?ygY_R~wj>B|Wq45zFVBSZdtcV<`J-3oLlRSg;7O%;<7M%1a@=Z@iI2WT*>jEYn#585 z6>|(6f8nufv6+hQuyx1>E`R7+whiJ2mNfWosykaJDe`+6sN1_cMZZB0+e1;9vd zq)0P#CK?SL{W=yHRvB;WSIdE1zzI2Pf%r1;#YX1^wUds&Zcy#X;B73%J99MTiLYGq zMpK^rxpjV^Fl6Z|?OI(bb#2#+Vq?sAf2T6hRP|^!_?c!k=gaOeeW#RmI`xiJzX^AM2 z<>WqTlkQZ1nMCQjK8(E=HKRDK{hYk6!jf@h3XZCvMo0$FkANS28MIIpWR5q}Q#AJp))Hb-iXGL;<@S6Ws(*?wRK) zx`Y$o1}#>@U@x#{XuW>tfTXFy)t_Bf;d7LKLf!?ZzzH~CfOMeAo{6%g;f`#6x)9Vk z9!E$VcSgr=gkw|2J#BC-(B>n|(cBbUis^1kE0QSbc&+Mi<+}uTm0}-xZ9VxB#4MrrOB_E}+A7 zHJ|6+(!JNr3|HWD1zUYa^St!gb%ZdmMi@yvqJWW5pz5lri%!$BZ z%KDT3H;AwPdSLet)B)LD$%37Ci^;svbrf##KFp3yNT#C-RnpzlCx8$_?9SNt@llo(R6Xe4 z7$sSI?0el?r$gfk%CfxUc0Zd&J<|WIPIsMrSrYjw`_=aL`D|3}H{Ywrgq`r*RszBg z{yRHKl0)V{q)o1Kdo2^QfT*ErkS{cS$MrXow%<|Bj~{=*wd}TqGt9KxqN(>C!4?dV z^S9~gQAcMiRN#!IUvruH(#yK|mAcMJ;IAA3?^UHZne1snmgI z7!44ITu*jeJ;)@n!lBRA%#b!Savw)OAiO{F?%r$A>JexMMFhwSyrHqs?2&HRSHeT% zHFb1#6@0i0<;l^t5ILRaoy_TH?XJVcZJx8maQ6FO9-^sLKszB32hD8yoel@nagdXW zQT`Zr!~)`vfOQF|faBux-xfifcweSuGLK;l4Gt-*AB8fHWf@3KTd8D0lhu>u$9~sYyfNAE4yi8Ku#y|CDe#H^^ z^vG5(B-FdE5p(7(@M*EbYMW?bED~X0*7PiL%*KFKB)n@mJ%3lAr#N418_1i zrgNaobe%RR$PbBea^k(fnQV7VN-;O!`>Ew0(U4%p^Qvjfk5QHar5t#mycs}j#4yA% zd#;BmadOMK*U~z#lYoe|M^5k{2P5_9r3pC6O`CBzS6^#rn-q5uv$gI#(+^fM0X}lh zdJQM0bP$JnjHA;?6f&V9G;3ejk>Ux3#4>*nC};yT3hf+=@miZLYZETnWVOV1aZ`5u zJ^(sFkCUSx6C{T{xkhhYujGxjNFTl~T4H^3$gA##c&O$&j-!FIj=lg1daOS-F7@tx zd05hLwrEXKjx*Wz7D>p@+W&zrurIKx00!?8Lj6M)L!)mQ^ckm#8kv-Ood}u2)#J?1 zZhjy|Dq=Y_zT=R=&#$GKDBp8Z%?zDfK%15CDq>1= zcTv11duxPzpU1tcHz(t1VRf6R#!4mP8A|l&23bL8fw-M=URn;{o8a~GH|(Lo4EMON z_3M*Zoz#0vv6loT6JH&F`}DD$vfh{$Z01qOlJX6r58`VQY-|>!Mw8Z*DVykZ2qEWs z+q?7PIR+#BnUl;$j#Cu=fRy=L9?bn94%U1t3R>*I`1S@aK5SVI2@Xdfqs-3#6n={A zDr;(bi!e*ldo;t6&y4#;BkI-*hJ0-Qoc3SymBF|=pU6Co8UCtxqdB%^e>ml?{PyH$ zJ)%+u%pr_!H%d(ctUHXAkUAKaFs1QHU+gn(AzPo@0=Grq2shK?dFS#Bd27Hc8T}D@ zx#j>sM_J$)E2+4kv#7ouhW@7d#Yep_O=e7Y59b2QV`wGyTIL!t69ot;AKw~niVot5 zwqrogxka=O?C1T&YOinf@~NlZnT2$}`Sh)}?2-QrOpvF%$3VNK|Cm*J!@eVqp_;_W ztq~6*>xHDQZ87oY`2pg0d33&&7)0|5Q_C&YU(L<;gH~3#?AuUYv$e_4eg(4{744kO z=9Jf&A7o7AT7Qca-Z%QLzeEhq2-P{#odH+=R|QAuiA*kJJu|BXS5GY*^!Q%r7K=5+ z`6u}~v{fb_JZ}jf!&S{Lipb}!d#jozEE6h?okHBe8E~8s7f0X2Czw4S{!zC=F-*n& z$Bqawy5$R82TVKHsqfyIW>atr&{RA;L<#d!2_`U3BYsJzDCDMd3Q24;Y7@|i`rXz$ z;+1vc?3YmM-6GBsce_7Ic+vWR5-S9lr5MZGz#<0hHG4gWF(plJK|pP}H-q{N=K-xJ zpm7_F@Bh^2=glF>l{jBAStRfnO3{`bnV3?3BB4BSyTM~%I$6gw>MpA8U6%2!lhdy- zBy|+%ZpuRTe{t0O9XHFm68k_HZ*(wE)gTnEgvwL5gOYG_pp5zG`1r+Pltblq~c zbG!rD7L#d(W?hN?LTH3TffcLE+@>B%N|twZ_2gLO+?xG@UHx5d*YHf1+s}w|UN>f8 zI25{%!>_>lbLR#YEc>()e@9ze&KPB7sc%b9t|961HE7s4w-1rpHr?mFpqG8ZY+~RMu&XujpSf)-em_!1}EjJ<3k= zJGurJFXq&O_>#CXNu4ECpq0f?g+_+4*pYp{IQYIa+!FbJRWoe6qull%gOYWU|Pfg3Uh@{@QiZSZxdnD>ijdj^ zrm2K&!{oN6zVg_ryo~2DsH1owg~R#@Cm%niYZ^gENBE1l0O=8jBYN)hqFI!M-_vB* z^v|0T=W~SUExK~5xz9aV15+^YspfhX)X_DrfMW}KyC?NNVi))3tpE;xcXPGHzXv?? znPc}B#E-K*iwgROD0f>QB$-%k$Q5q)oNQGdF{nHo9h+Oz8xBs~cA7H4yk?Bg&j&Lx z_34(Sm9o*Y3|HcAjE#*Y zyWf|m&~8x*a|=CoGkyRJXdt9oq{NNic-R8>W#;`sJ}>j2*GqKhZ9^Z15G!6vpLdFR zRHN7N@Vb^vZ)&Cs3A#BBo=#OzG63c+6y7d*4SHow7S8O*IN7P$Z#a9YJL+!xX|QS&#WfH_`g6^J8tp%izZ{ zqG0>!o8iGcB1Trn78M@F!C`ahA;rc|i(^ZLrkpNRImK^a4kcJbRQp-TIf6Z3Du|7M zf$n9Eo?PT zIH>uU_d>=hm_38U=x< zhoK{R>X((3C9;@J3@}imlCyernN&w%rGaQrzR`1i6A!&$>`*ngRRq5?)<3KidV3x? zo9yoH-n)12dZr&fG_yz-4bxeBhDX1_CQcGnGX1R_YtqtxhUe458X3)j^kLqF0L=)^ z_+q63yR5iR&hjRq)+1BllY>V2XBA7-DPH32@6iAK33V7p+0FCW*eqB9Wx3-&K zEi}&bRvQg@7^t2JIGIpl8vEaSZCMvAZA@Qm-+#C(c2z}0lQ0BN*7*TJsG+hY_qL%0 zJ`Ta|pNW%NL&?GZ4|Q;5(Bj|k?C%HCQ?fe={cje~lkbuWSKtrP>w1Ax zH`ROfyF&WqYkb8vQM6`3+H!|$*UtI`_bYJ4Z^|mXEy?VY?uh?7h_7TG^)iotHLS4c zHIvfwF{P~8GV{)P)LQwaz?sa0{rxO)qbD#={y62HcDVg}d_2*@{C&6fC*6Y1;qd0y zuM@f;d@;|SgpSUTjxMVi)7?S8LQDI#3mV#s&C`Pu^&dF8lXKXPyGneG$6}8ScI>ACfH|Q3pzg50XKM=+iqudLmop>0Y1L> zS?(XIp5c(QGjB82IqoJMyJw2HTr5Ah!FWH(X1Fe+V{<(I(nhDJbg0ZMr>WIK^=2S( zuHK~N@P5-b0e~uA6)OFjn^W`L?!NIiRAa*#qxx2IT z{q2B+_Z*3(S|+ovND$lzgUV&!3`Y$$GME>aJdxmFV|&k2XTDn09@U2CZD-epvFPH6oCi=NF^}beYZ(B z=(B{|g5!+h$0V+F?FUkKr<_e<1<50t5xB0o}$r5uD?`P`j6@esJ%hUnLq>%La z6DgNL&2x`U-yY}XA3vfzUR@(mVvfDMX>-SQ?YrAzmq0Z0~F{2 zV)26HnO2F0O<%9-GW%m(9Gr<7E3yTPM>hk9)H!oq-%uT{_ELmWV2K&9U>JhhN^uzx_DhnM&*ljiqjf8QK*!RC(-Wlde(by>1Q7*Z$15KLbQ4n$PNgU z2$(4<5uDYFN`&;pM{_VXN3_lB*Lqp~j5u|~kzA#tdAomhm_qF|Ml}1wg4$NlfO_Y0 zC$uY&LeB3&IX_u3<9;*di{_Zf=x-QedexTUG-49Z}Q#B=K%f5e0J;psESmm{QF`@b=>2aaPgKK1k*m>-iD8!Hr%D~hn zbN3pd-Ja7x{Gx_-nn_3*5%lzAJcsdC2(C~xeQ~LK2BvHe5`*1y)Ax`8!#`&5YLwP5 z)1>a+_HEu{cCAm}UM!;+8e-yo07Q?JQ!BBw#%WQ!u9lf=>il#$MZlLcwkP?nPhX6x zu}k&Shk@Pr?S$K<`XB8JXnlcr>#@ERzaL*9d5fUi&~m%?=K_!E$I2}bV0s`b1`^2@4 zmr`FJQhhnvJzTCKRnq%net8x>RiY2E8EEm`;90-!C<@^810G+nK|%IW=T*fAqLLiu zAS*u*O#NMGW!HjL#|GrxLi@{?tTH4o1Vj6uWbk*fRxB~?t#<4}&0RgP8VSNY+VUv$ zrmKEJ^u9~!SyT|x>oHk*?GlaimVsvjW1n_XNcmo;SA}~So8%R!QqZaw>&F|vr|+4o z;>tWPt!)8i-Mvqz;AI&(U`A{|E8%n?{S9a2tAp;-D%p``T#K#%H3bcmr>8pf+g zR9DbDHJF|4WZ7>-vOX)2iFAoCkYB1&{SZSpVVLV0d|&&|^N|Hl&AtaVr-6P;?@WoB zf5{xG`y`~+N4|Nm;<`Rt;1OO9P1pf38Ch^u25?pR=n&w#N4c4iea#Pe>i}GX(p`XH zr$hUP9n=PGA}(3;2uuiYOe!fYs1?n)ciV87Y@;n0GmESz4XL7QX0*AmRwlRiB0 zJzp7l`6j_4Ep&;+%4H76qfiqJ>Kw@z z;=KI={*0Ntu+_EcDubsVtA~ zLqzCb28w+C95nQLK=1(JO99DmEtjGL2G?GjKK-U1F&zBYS#Grtc%tQQ1Rzf&Ug`-@bdeg z%v^MSdU91z$*o4gP;u92?Kbn-dcIpX?3;^pWOTnUYbAAoqnJ-wP}o2b*(F)|N~byh zc)8~d=Dhy5{Sk-3m4^D8`GS!4E$VXS(J0&c@7INbs_XB1#GqBKO(&~O7qQ<{wCK1) z|4d6;RVcKgAlAX)N1fFN0x2AQ>0g>G1l!X!nWcL5mge16&uBdt6in0N5InQEGZiM9 z^`rBWUXq02VRp|)JIN_sxQ@P6u*4%Vc8$$r+NJVuw&ea*Sv%UCZQ86)6dgI0WhNcV z^EFs8lG>EtJo{;qSGub%DN<@Uur^<>R$N>4(PHb*JD=sZCyQApl_V-|1Q}i@4WGgi z%r3vM@ez~Q!=6ZQwuh&!psgPx{zGZ~vcrEO1sb38hp~}ApB>pR)!HuyJd`}kKlL?) zI{D8pd$JX&Aaf>OR9~z&z_n#7)@=RO!~VNRsYUtxjd?mEpNWu#<&QTZ0YS`QKCEBk zuTgRR`n+cc6I8dH(a@TL7kOg3fNr8GQTh9WL18axK%m^Bz5b(K44yL%h8!`6wqMnr z0<(5FcE)GpDK-YQcjBY52zh8IQ_r3&Tz7jg@p()?(nfvU19&K8tiMSVQSeRwjzab) zg)8FVM~roKhziwTg#-B|K1Dj&5szdoB1u#?vURHFbhhO(2A*hxFo{Pmy!|RGqD7)B z+5ED|GvY#MrF=#kH~iK=v8S^Q4-fs1ffTQ;cKDaH^%A1Xr}lK zN}SP{pk9iRR1IyrDvk8>hv#Kb5C6xg3L4N+3lb|H_Ew9+v!;^KdUGqColvYR{p~=z zhsba_sqrAqVynh%(tj5f9v+_Jp_!rPV&J0m$ugA`=fA)5DyT<(O~OYvzagfCLk0)n zRb`3c>@+CE>!Zj}SY z#~M%m-%m-GIu)vBrlGMer~H4{=*vA5xXy4KFyE2`))kC3|NSr1XQaE23m859ab6|A z?tB1*Qu9!?gcr_Kp?psCCSHjZk=e#*tsL)r+=N{`on0j9B;$(4go-kd8k#<7*|Bg2Bso&kurkWmF zLr@u+6t(LrQVKDL#@Wh*4fN`n9N-m>3`5E|9r^S1n{uBMaIJ9iS(sts9vH1OMR-Q1b53*Bmhn8^5Csfdxt= z3`*l;o6PHiVr6wy6jTyKOm6_XlnfzzH`%?{K%?GO{r;o4ioRb3)IeAiI zVvsrJwf3%@;>5X4N3gz-QpS|YRh1cV>mm`N50Qd8scpC3x8X&%Yx$zmF%TYR`VVSs z)BdLF!wc@Dc)gIy_MP!PoKUNku<-E@_xG<`L9}?Y#_PA*b^D3MSo<6fAxD>_oq}2i z@(<%#f}?Mf?6S$wS?JsyG4GUUq1evb)6tXs=RHI^-f-M-Q)K|=^}=+u6RP1DECyWi z(6}|(s5GCR4MfDl&|YK%tz`TZ3Gt{E1iuIYgUjOeA30M8aNm!SWMpJcXqmmC$6$qL;PSf{# zI?HbX(!vhXBbvo|PEb;@00ZFG^^Bn$_hirT) z!6%-wntUC~?s8u&K+>z5p2PSI6_daeE%>WoMz~pI?`Oob4bInJR zty>5%Eb)cJG2n0N*0AbT{szHnA3xdf_?_*#=EsawssEb=@Z-JnfT8v>1)+sM{g&v< zmoEj8C1Dq-LNXlt@1sFc`>94JYr^am%8e)F&1WX;IriQ-2~Ttj$hQL{%`)2l66 zmr&}o2W%L^EKb2a0GwDY5LYn0En&M(OS*9blPI7J^X48HPE_1!N5M~eQwU!GGB>W# zs$1p!IEQb6Y|4mW=TaugLHKm z{L?uMG3jr{<5`6e+>9^<8My*gOC3P&-~fe*0yAil1g-%OFhf3xnSFU~=Ogcx5)F@b zayJr--E5sFxZC;bgiC|N8&Nnun9D_dS4k7br^Cdjs)W!qkl-`XUG0MMeJ<@Uq>q7; zUK=#l@>TgQ-@T7%L5+q2P;isFR>>10qm7sc`XoTBc`NS5em`Ka{+d3LD&~^!k>(1n zrx|zL0pmXgmWmT6>nxZ9M4vz^7KHHx7I=bl9ws5}G+@IZfd}x!ICig_V)Vl4g!MEC zn}UEl;}5)9yxmb)1)NnF~|d&iijm zl22+D^ratSx#2ou6?IRueX39Hw>2})DsL-?=EhaZv_k)+RsUZ6gx#C9C2p;n<~t^t zr{`E#hz6x3gX|~t3}BHH(g4GK&|aTG3QWVW*U5Y+?hS5<=M6}#(MHW7fQ^4N>rPTv zS8t?J@#ffoT_8i;P26z~=>|(bmya+t+BL3Ell>H^L=3N9y|Sz$xG9cDBZ|0#Lr5s{ zeLOsNdoq-|ozRKQeU+j)atR%*KP=Ji#_w%hUpz8O&MmBmBzXO%oyMwN^tqNftm(dY= z927MD-Dwdc{VA5tpSb=7&N&rGGQ(D?1V6p4em%JEf5AK_!Wx2H#3EX-7BX{yKsGwt z3&Y!Xca(0t$tpW)2(B8$I*Qq@0fN`~Co;1tt~!xy<~BMY7~LoB7f&0ub)ZZ*RJ;myNoEt^%iaMLZQj8IPOM_T zpZz^he|qrJALhzYEQoO1a|HjLnS5;7k*(N!4{YiVnJT8(UHmV+J>~*54rx1x(s5s5 z&6(5)F-)_IKIc77vThKSMVDo$17i!AQo-upE87esVuCt{@`ue~wk}`0Uk|X&pxrRu zx1vC(0C$%QAgUm+J*|G?7++p{#CjdFYvI?+d3JBW5=C(B@D3o!E`g~ureyf`R@QfCEB`@2=a0ON&;AcMf@+M6apiMVZA3=1~ zh;f?sa@U(2hihB9^kA?#*a23Ig`W3-p0LdomdVJqK?ai(AWA?yrt#48_a^a&s&*x; zAAO>?*jI*jk}EwmGps41>H|(;vQ&+!p&rkzkn#J0)rF7VaA}h!oj9TA!PB_NOT*Ny zHR$y2E2+fcb*z-5m?R*QTZ2B}LtcS*O`rs@262@l$}`kqCh%3svc4ty*q?qGleMKe;U0-b5;bI#lgmp4{&( z6XwB_@JG%;OGzd>MDd)@rVHXzQaZFTU!{9KHUS0#&<~Hwxai)A3JZ_c;B1i-N=IaW zMh_&~OK68Uhjw9+ccc$yf9TRCqfqW?>>fWPLbVIz(M>Ud4_>}Cljs2vSnzoGFQ0$| zigf)#;}OJp*+%*s(udvCSAYP@Wj=&|A8E3`IO z3x%mi7^Nv93LCO+`(1p$O2?B-p2A%NtWkn0n>REEn}Ll|W?KDZ6Rc%^-r=Xhw?|Zd z6v$OzusrP^Uqf9$7Gb{C4!W=LkMnSw;gP|u^=@>L7F=Km1%{sl^?i?k(Sk>GK7=51 z{t6Y0H*|u_??>%tuwr=8UCp#gO6(4dw_E{bbL4I!!r*~I#Ol_ozvqS%_5P0>P4-q*XZHc7FRG?jE+ycOTpvxTb;Z;1TXPv?4&fplY{B z?7fxn++&KB*aMzoW8Hdx4yx-g>>mJJ9m2y`-t!z7i5-8zM-0lX-)0_vI*T%?hw%>k zu8aNN*662aQeDG=j58@R&kaaE)@R#gX(Ea1E;y<4R!!7-$!kr7@M8 z#Qls)gXGs@T_7FiM?s&QypgcCjY>;?vExLvbh4(ogY=dCG;BJbroqRb$P@G#`S+G# z|82>;mAU^Fh2zaON(ho^njKX-lYU4cpM-R<6;eedY{jGH6IWpi`g6N1>ol1?T)rWy zh}pn9!9Px-M~!M*S#Sp*q3oRbxgRU4RepH$B$XLG>@;+;r0kh!mbcu(T8SNa6ttXjcN)km_VoCgjeGjX3vX z*!S}E;*cPnTn9@En|$w2n~6*h)d3h44LdHthDP4{QSfP#5%b9STBut&?AvvjKOYx zy@k?ET^e)sD5}fWi&^7gMwY7Oi#3A~aH*hA>u$AP+}(EyQ26Wa`g}_t6$r4Q(47}= zAG?$JaG_~#m9$UuC3FA~pE}onO_r53ox-I!rh3VEdWXqFIvkfmg#OcC=n3Z6SnMgM z?JY4nei%Yu#i5ps^itQ6bmwk7g;g9Xx0bT}5PG=x&vRNVS6SU)zoUF0(qTx}z2BZw0GMc?tC|jXU=SlVCZKnB$zZ zZA=p&*C^31X9IN_T>OIO@~rvnifJtcDrI(&!n{Q-OBbcfg3g+ls57}RH+zAW%-CS) zF5gUr-q4u48~wQS4l11?lV$wk9sJM`hk|QnsxkI2Y)eIfkIe$41XNpvosito_)*sH z713^ug0V7{7K$MDkQZw1`c7~xvGG$=%k{O(Nt;pz+FwCTicw)yO}IpXYM86Ov$?t1^P?UI4t15)5JoxqVN~FPiP=2% zB1GGACi9AmQ`J5kTAD1R9L9cm-}X4tS0>D$+HoFCnf&7xOOFNel7WiWBVqfIZaAk@ z@hySjb8khD#~pNrlTU8ddiJIl&*zVoV;ZZ}%Bm|JZR9TZF!Lnj z^uHFW=$ps=Ir%Pkx?2$`j6p@=QP1`_cfKIi#+#Jl7iv{-Vq?a2Udyy=p~jVCI^_*V zFm&44AWO|&I+-{u(?r7WqoYKEG>(@LY9znn7=eKDK{Jdcx4sNBHubL8w(vqAn<=iAVBp7-r2$QG<)&63?uwFS!2_ zp?*-4coZBbcL(EkJm#CvE3xg-#!qhWxvm43*h$fme90KAMfXV|14~8HPvKW+JE)vl zW&zcU9kEu9O#5t4YhG+dj8f3qQRqnNeaipX&%I<~b46~IcBSdQEzljabQL4!0Ma_wUBl-wNU9SZH21`>g2(k4UPminM6 zKXR74n~Vy$q(ew3TRrEE(* zeWi8^PHE@`NNJIDHzZE?E}ZKz)p(z1d&px&BM+@Xzg#iH^J+MZcmby|P{Bafz4`;4 zzep(0;(U}3eSVhJCU6xpl)yW)w@8^<55mZqSnQ@8()17>Jn~vq&aG$7!}3E#^P5BI)=|4 z-*a+zB(TO$>ck7Kx>puGA&v|2QSCA6(2{`iRUzT+9aLh9hSrZ!K zmRSs>H^^DI-+9xROiWsRvJ8TrJj<9YK6f;CtW-W=EhF|QT1|;+#DiW${A`@A_H3j5 zX`{-wke6=oU5H?Q{l{H4jiUJJXkMum97f$0|Lw+}5o}AAc@}&wUZ2)Q+{xi)>bsp6 z8LWMGqQ{=k#^<*%t5N8NNba_ffNmwQp#7B&+9>ABs#v6tt-QV6z#)lzIM~i_j$vi*25z;hr?fL?szjBLc~CbK>QLx$X$eI6?^o)`R>t zNm}ggj+uU*fQ}Ajb>VT`x}xaOAIftKn96K9WJU%uAI4)ep1e~g!or|cj7+t1aL8r* z1!UAPN*|W&L&7%!f&~vV`0Y3Zc{AyDdl;}!Y@AiRz588?mXe88l_HQNNKSZjn-q{X z9qN_xPbFCIvS;0`lqI2y9YmCUWEG8rbC(~5-wTDQn@t!G($SL)9IbLr2|nY?gbgk< z09oF4hR2%r_L5t0B%)?UE_3vZFT>b@z_6{El4z`8a~AYX4#YuQ+|N@Y`jh%2Bn+@@ z#Xext^4|3o_HVx}@!VUcymGpO|3a}Iywh~jJRagdij5Tx6==d_n>)US|KOvW`Tq;)b zh+=pSdUTvDd^`TrO`DFW!S@evD`rqH-pJa&nF|GjI%Ww$$8QwZ^C@vE>5=LOcw~Cj zjz+YKnzTPHhZ@vr1Y25ndMy)-v3+p^Nhh;`y;=4R(e}Cdi-7O1NfZ%0d>d{8yVV?- zqM#;hTwE8CDYW8BP)F?~KacXD{b&t6C}L__UiS1fGI@&~rw09s_=2Y6)^SYT z#0QAvA*l&CUap$q397V3j}-a4o5n4lm~v~h`)t?eguf`0h>`~D9RcA}i$_lG$S%ki zps!f)$RVDm-uH+ni|II*$+U&%6}imDD99PTBTH1eFwz_Up=feD@3YUEGy$u(20?rXV-NO8hX%onv!R(0B$P6%95}`n+PCJ zuN*732$n1#xoS<4N>FOrmsFgkUmFfye^2GvE*RntN3t8L%wD&ux0=brd^14g_q=fq z5#H4Omb{P9)Am48(ee5S$4KXL9L3LL7_Bwf%2N+azOa~lkb;oiV$O&h@PI_)=MNr# zcx(sRXtW_YO8YnM+$)6`K0&+OW~g6T4qVfn9mf-Y%ghBQGFK+f?8qBDO*R2o`gI-SiPbp)b6r3f33r|EPFez z#`d@tXwmt)ig5_u$dj<2Du3*d9q^O!OQQuxVpp4!?;S>UGzdYCl1p2A6~^#@;rUHfTxWc-l2Ryg^Diynvyc*EIcm^b zI$?q5m&|nzwx0?36W;1Y=`Bhp{EFuEXdcgt`&OOO^grI5LE_UU`h?ZWE&ca_Sxvk! zU%x;K^P-9UhjMaq*No7myDv7z%c(@u3YQ>|?RLe=o!epFr0%|0cIP;H=ZMMZV@9P@ z-blKX{M#f(E9P7Pq&a!ZMAC6d2v)-Y*3`GcYp%gR?ApFo;ps1&zvM6-IffkbP{r9y zNpD*vCwaLFh@_%5(2*kmk3}k=5u+iYu`dvm z{({?T|3k7;-Ucmy(}fwTd8eG{ZbQujM^~Q@FnvQ~GxF3`nnWsm55*#P$8wTaWG;J@tNnpcQV(;iKQ`++M@yI*4khI&XCbm#pz_*x#Q)7Kss0^Haq?s5+$UXss)5zs)Y+ zd7T7k^@a7UX1$7GZxRZ;bpARNw26-A6eickCtKf@vCn|wBnrbV5}dWhF5&sD02LA5 zASWD0wf;6WrzXdk*w|3r(AOyVQA0ryO?j9!R9zA<9+G-dnBE5i3Gfw1I}9thTSQLG zR~7&!bRoDDRD?PiJIY46jI=tqM`6YLbwl8Xi)KvrD9kbAqR^j%oKT3KS<@Fq0TINK z-bO1>gGsfO>0%}7zlX6m9k{j1pcV0k^#iYkj@;}YwO6fLZuWL9qAnWg=mX7d97Wdr zO_Nm&jWX&tG{yDCU!XH!F_K_kBix=LMD7HY-txx&GRtrz=u%(`>h8tMsiC=1kIGOdA^4$&UO6Za%=LJgp!isiSzkMV)c0_Kj z3i!-v?F<={tRpaloZmJ0<{bP!zNdyBeaAMZR{pD^rPxU-4E!2YqYK1lf4H=)%FKtR zS~Gkmzd@aq7G%XEySRq;5L38?c1SScV|b-O+*f@4r8>>qGSh4zf8ITp{D%guxR3FT z3pj!O-$-p#Inr<9kbVD^-EAEzRhsS6nQmkrZIpkY5)`anh)MPj!F7wCl1{=3<~o)! zp#LNLL03jIPoz6EcP=%OpV==^w6L7=WZWuWuzsGZkvU*H=Q4&3u#m4Kv<3vD%h8Mh zJpGSk}}6Irq7h8^!Q#eDoZwhguiE#cf#+rr}Nr=xV|d;)U#T;EzI;x1nk` ztj@fc6SIp&^K2CwVosQRWcEp$IXyoti?`vxiA%ZKQ*bA^}4@dPgCEB1GbN z(JakLuFia$U03v_%E?O=XRK(7l?D9Vun1;iP2&UwFCksR&>%DmUl|GnLaSV*%Tfvf*z^L$Lki3O>XC0*U$R?n&TCxxd( z2eEDSJ=O>2UVBG7KB#sR!xnfb8=X94?AygdM5n69&(iVLc*@WFC!PD)FqM{P)S9V; z_mE7Y*+vLocclK4kn`16u>kYxlP@oW%JXS|CTxVS;o{GWS%iKPrT=5)y(KE3U-^5= zT!K;bM^UBzzDQa8f0Lh<1=M`7AC_cZ$|4dPhb8P1Q%eHR(tmv^aKqGZy5)P=qe(SP zp8zp^rri!Xll%)G0^;dolj$b;+If6Ut|2g*uSVvUt-*zqI1Ov&!#*^9vdpc-V_R6={q97LEx8f;Bo~57f1}Z&~1(N@2Y^5gnzv;#!7KjK0I>%ielX{-ddJ1g8_2fk>48+iY> z)cmH$^%&8Tczz?3SQ>1CneI$cBNh#B?pLBf$6NWfDE%m4lh@yUe59iv65>jy>3H?< zz5C=7DGoLDHuS&SXGeWgt%kpb;@Nb|F8TG}c`XlhHDpR6ZsaBDrhR=XcE`W(*wpK1 zTO{6Ermm&sTq4bL-@Kb9t@5a<#LB<0_>rZr`!My;!LA72;(_P<+fp~POX2@j6t=L9 zesEoYS)@^ehL#pdHbP88tv<13Zu zci`05T=<9ChB=6QAy?s^nc>HS!^8G^Af2s0P|ttX3n)T&9sr`p@T`>u+*C_N4C|WohJWxR?q%=+xfnUZDPa z_x+@p1x4i-`nNz<5{5)K-@YWh-nu=X6&+n|bbJ~`P$tXJ+8V1$h;#dPFd@i5SaZ-X z2>CxD-Sz-NH+pVBJbVGNC5p(OUgLi{1^MsR!0jQL@ktDkWK`K#m<6C%v7=e_yDURG zmrgM_#`r|qQXic|=K< zZt)kavzl32fb<@kTCMh_V*iDC4N_nqZ=!wR{AvBsRd>I=r5QNRIjI*I4|g$ASs)fC zeVx!N5950oQIR*MVhd3b2ft}6)5%R5&uNjVn#vI$*Q5`nmT|`vlYISd%H;GjPr7ckE!+}R+ipFrDyXFtD*u&V$B}c@`AMz5G=av`VP!urv>L|e9r<*72n}|g+D-OsO#)O2^dnL9{3SNNWgG?AbAVYD&Y3n2`#IZ zmqEbf!&s=0<^nSw)LwG^T!mNO1ZY2~Q3k3USvwR+HC+#{IyS@tqiC(d<)T&Utzwfu z43yxVf}*w_pxT!1vCcrW@4}~$zpxXGm*2bi{hJl_%kgWVr%q{+Rl4tqTT%ic*w?7pueO;oQBjoOoPGvGA-qO!OPh?5{ZByI z#dW}NzY19ysxF|K>Rwtg1a<_Npg8o@@sjV_8jh2tvXyjV4&;RNCsNS73abhJR+{s| z9#~rFBH}_qBoyxfb?s#gcnz@sRJHkr$XJosC#XZ1>&PT@047cHU_|aBp**_u6WpUf zMPXN!1^Fi|Mz*`{OybdEzu`?$qWH|I^PPl!2uL#!V-lusKuU!)wDf$$i_Pw>N0usk zQ*ddcWMI6#gu7>r<7$*~WWg^aiBqZiKLrR46)DsKU6Hd@CK9!HrddeB&|nEAmGs0S zpiFyrlnz?!)YdvPwxNm60mTIHR@`KivxJa(85IuLLb|%4y@X6Mqopy9{%lz>^9gp}vWmbv59 z(Wg9Hr!v;8Mo-)7kKV@^*C>XcZHEm!D|cRi;M~4-dPz5w#K%7nF!D1vv)KvOsgZ;% zbzF1l5_A1NzvNbUm?+qVpRINF;}zd~( z4*IT@sO}hwiU@h?Xnz^ zLV(otd7swzYx(!#VuIy?)>y>7zo%I=Ta*od4W3Xa7A~@u;*aWik%oWNo=;pAGBf0d zf94m^tf;XIBP`nT&|YF%8SP==70Ez*8a;C<_7*)>{JbIUlCLs=5rtds{z__x+ql{6 zVBVynyNfk^;~s2)L@UF;Vb6j_$0S=CE^%@>GyhD*&y)FT?>9???4OqjEq|-u z(M)QjUtwuS+`HO5(J#P!NZal=U+Xsq!y~cO`lZf2{2h}IRzb2G7nd`lpKc#r3_RQA z)t5dPQ^Otsre$EV3QmF@qUVmTN+BJEDv||M$Hdaeh%z zud!m4M@ohQ5VX-8crHAeJ{cY2LI4y-oqP_l)>WapGQf>OnFgmM= z#w-;S_Q#`rriqG-ya}LYOs@_-*t>;54@8oO!$P$rQxqFJxa7x-$r_zZi?$S3&yj?u zY2`ZBN7Xuf2%o zBr!D=bDAcmVq|9>C%1=n<2J+`2yso@+ZicL^DT&beO9k+@94=qxDfo!ECn%Hoprsa z%_;C2Mzj4fR@6jxI1MBWhW&9K*%y1QmT1d$kjI?pvo{~hQ0o=Orjoa)`pT?Dnz2_t zs)(=%$KCGFqm}BMq_3eVot7P#2uXxbw?CY#iw2*o-<`Z(deRm|Fh^kdLn64iYWn+> zq~`Y5_dd=8yc%V5S-iTrj><=~&u8A;G*EpsPXe!7z2S&@G$F(5azl%jS$DjZEW+_t z&4zDVdrv@@dToYfBCj=lpIu)}ntaPOoagSCtq-Ao(B>nKt^6V-t^WR*&3o|%Cx}W< zV?}ON?=n68qBGrkkB<>NWV9!HtV=yZs6z|lDgwV9QLp^`#&Z*MHk^6PxLJ?-X3n+` zWj*G?`RAyd`E}p?cp1c*i3K&^@%poSv1M-#;uV_JButfg zuZ1hf$+H;f(Am*9eeQaqjl?l)Ev*$YiU%uh&Slq9Aoki~iCsAvp*fmHEpJazct~}H zDV~D2NA!Bztq$>3DvCc|5WvGxqE57eI@*U?>vf_BONAjnrtX- zk8>m^d6~M|gP7>r8<>4!Hjg@y5iLXcqS^hpvNQ@3wAiuR|4@PNwjy*&r4u3GHCW>KwpWJZ1 zBdY6vS_;(m^z^hB{vFgYG-q^{xF|MLNg^dNVXfhQToFmhv-F9-Gz0_CB&G?d^>SA% zL{lvi#^Ps}`~4!q37h1k$EjN!OaG&Gh(NKcHHGjO=S?tW?Q;t*AkgiMn%&wA2e^g>u!PoZR7k}$=7FD?UJvCQ}w&fqrE zqZ0rdQI-A(ylKrwnn~202k`eZU-@NJ3n)!mU zV^)K+sozmOrXByDqe4>{w}g7+cO&{$drQKlB7Je2B+1^>neS8i`!Zw|WZ3*W%UQPh z?VTLt)9Im9l3!(YR1_~29gadz5~lMX&E5RSrUj37KAy{C>egdO8t%DFlSl)vMS|>> zm7jmquxM$?b+e2Dm*t0F1P@0ZZXm7W*0`gJcCU(_MTt{lpy)BpD!HL$aiCb>9@a`j zh!jK}olL$#j2pR8 zZHcb6u@oxA4yoMvj*i=bnW!PET4kgVT^Nb`K4NGrySd0x3o~){t&K)qz9m_aI*h@A z37E#K6}6Q7#%=SVWUQ`e{^Rw|CUxJK{8v*4^PUZVQ{XqLPoT?zXtmxi^^Y6ymBwj= z>9!s?@!l$YAJ8?K| zrfV$AToQ%3zCr?urOnFkE`vY43s1^4O(3iXa~WB9%0XZtdae z8Sbka43g7e&giV_2tsUE!VO`bdVi|A!1QY_h~5?CK^B{)j<0}s9p~nVtMmbk{!1Jk zGhI4P-~UJl-(YJG&5H(nN{h#WIRmeZ4rTQTdHp^ z_zG8SfjD?&42PZah@?_Klv-9sp77;*tV6GUTtH%hIivkew)*mEFXhQs4|^`QK|ina zlQH6pt?jE{1vofGS4I&}fPnh7zc3O_ELv2V zpFd)`3ldw)v$nKB2xl~vk;AAMgq!;4mdZr~H=UR53{dUF7A${ zjgSBiQ@{)z%^F)QvJYy?<^Pm^pnG0yo9;YR$enNuhl<=0rqDuaAnCOj zz^%NYON@j_$f7FOi(D6T)*iI<+Bdk~`L&R_kPZr|ljoAZCN24FtRU=XkYd7R3v;_0 zL@J5cNONHmsXsEzIOsY5iT{0{Ji`kN4{k=SP<>ZHFK{k7&5-{H-XE+}5=~>%52os( z4infpnMaVvh#!(l8tdM)gcBpn&oa#5!fICoFoR-^kn;gWrj?{Bm&D<~bpz1;I>P09 zv}M#-mh@D381K%qi-D5+WQx?Azi^RSpt-6)4KiKL>k1e@<~uPR^6E7c zZQk+d%%Q3Ffh~`gId9vl}oIzG;E+lB}Aj1)nYGqR! zr^xs_)*VYNSDHpMlt4sodw*VRMDf9RiIYt7k=AS*nLvqnK{0nR+ZklblN|lAyZ!g? z-?$MIp81mQhK?UsUO!9O`eqyOKEQlk6HATX>=s9ijACV?MDW5j%qY|Nq{*L!kEp#2 za;=6dp7Qo`V(MMjv7@!&P%(m1mCo_XC-k0gHaxVGEWe!cJ~}%;&g~FFJZtWJ;lHs@viK6I^Ll(^|G{&9zn$9N zGi5hB6nXnL)--|-0c0%LOKWdU@K>c}CHiFLlsh3AN$a6)>>Lh`;&M_NrUErt$wB$U zkM-|1l`5!Ll0Uv7<}#h$RN&4>M!aY+EBN*H?}ew>%gMjgeNpK4_9ASa5inm!KDT^Z z>!jl5Cdeo3CsS5rzGpP5%x&;`diOPfsZ`ArpeN5NOVsCe)rm=cbL%7#LU#rZinB}a z46%rI=g4J7=UL(=3f}=s-w)FX3xu!reT8dGPVlZI2+9X+ix&*6AY)xRG*%&P0;*&l zXSt@hGHWWSFb3(-+DtTtzZg{N+d-CPU1Ar%S&5IsmP&+1od2~p5|7IwjMIT{nDWQY zg6OGtm-}#@Ek+QHn)-bB1t?uUB&YtpI=!`?3UROOEAQe=;Njl^{P6W5fExSLwI#{P zBWd^KVo@}xAhqJ2>>-9IXA{|fdTwcMFJ>V}0SMj&Lzqu?{hj-HnRkAiKXFq7uGx+B zCcC(|OnvB1C}6#-H^$Q!v|XT<&aIIt<(Z zqvAckQ&W+iR`-CH+C?3JU_AkuwOu~Y>X3-F57nHvU&)1uJ^>(kCJ$xU8ghZ19=r$H z8?@R&$VS}L0U|uwdCi>LvJ9RK*Eu<@j#-qVYMj&o1ZJrae%dC|@DXaxej$ryO`={R z7~fzK{ilTXFoij2rYx>+@>rjpYM=5Mv?(`H21KXKw03Q}M81T5wP9kZh^a8zPb?7! z>21w|iZUeD46*8F{6UrR*Qu#fs8a5u%wju4YG@c4^HWl4Aofp2jlr_#ShkA{W@ zgYFEJHp6+x_5O}cMKSa#xAiH?fr{QH+v*t9roek}aC6%O`p9~HUe6j&?GW5HlB$g7 zFyA&sH8LcIgCj zL?f;BtlI<<`kg>JG*UOf(p0#1H&-(3xi5f3sVG$kZEbB(LhKF&=cYBNG4$!EVUR0b z1-pseY;iXe2?^@gFm*28x`^6-FtUuMsEj|i4=1R^-VKL(5kgL$X2rH9K9)y0s z*`F1L6F3;ux2%KtnmcoL6$t1hM;8`CpjRFGB||fz6tDhy5!fGLnOt67UKH`xP|XdP zgF3x3eg6lfF+z2&xb_G2gzH`!koZ@t797dE1~x5dk!AG>bHto#`!QCcV?TYZs}t;w zwQ7AL6C$M~!wmJ^jL5WKSQup(DV~y4;ANrm!m}3t^ov=&Fh+Y0l>3TneOQsNi%Uv? zvy2~dPVRfCBjvXm=BHi=FXLg55uOE4QQ*yKGePYm?RCkB3L$dC9lXPaN`I6o^ta)0 z5%>`&&L0Px`zMXl{v7DgP2;-A5@LKv*xXusK(dAUKm#Bt;)v_XB;9Ee?F2Ca7_ZJw zh^eU5kQH}y&6`R;Ci&}T5dysQzjw$7y~}Vn0x5V_$n@1k3?;23XID>#r*z)eh~LMY zL6ZCVXM0Wiqqxy^5oY01C=%#Ti3D)zaSX|b*@>y$DjI%**o2<8!OjdYLV_V9I|?aY zQGFJ~>!#35gho^ue;|=Mi4&fuJ)9+W0!n18n7ev0OyhHzc1>0kP6TCI#d(k~TIaH4 z)z&J1@yr!1jR3B*^EE28U_AZ^WGWGZH2cw#G2Ul@xRpT4=|s9Mj3+mmv`OaC+-yUcL&3Hb)LSZH4p{Gc`*eMLK01VU9er(E?2mj*5x`bCHV<#Uz^|!z|@9bX%vZKj+ws7EtLO7c@gD zFYxcmQ&- z$M%#UQD1fePqHoL%wAv49lM8Ru-*hkc#04Xsl|KX;p2}^rj zttKlQ8%x`n+DH&K_=#dLYDE19z$bPuQ&2&U*iYM(xENEL({5Zu3#E_WJ8ZKM0$F?N zC}ooo(N>j0gc%qBridXB&TDL;Pr>j^I!n6Y^`-Q-X`H-GY@qUbF?BdxM_s3DP<4q} zH-JzWtuV~q3j4Iz$H`ysQ?8sR?+KsgdC2OCAXG+6dP6-j;_{kNlgHYf$I-ha?h1DN zJXlD8?7e68Ts_KOO^Zd%s?9-YA7#de_oV+>rvAfz>ZlCc!GF0&$YGU7qPU>SUUSRP zG$qo`tf0Btl0@bZ9m^t?Bm55U$3G?IelvIYHBPECJyPlPR8rM&&GIo__4Ym61d@>t zPyfjUWF?TdX|G;nE9q<74Ch8AK{LOGsRGFEB2VTQdKn-5L?@ScAuW=2L-^Ym+2eL> zu3=$W-7t*-Lj0)=#bm8*VK{=L-PkGePu8zTJYEcFZg^`CPUca)524JVZFmc?3a~6g zf%@(qbynW@2>i}N4@Z(VdxiM16OIeAPhPUwSyLq$cEv1L&IEE%O)0XsksZHu`4neDY9d`o6hCA-GYl&zF{xVRA? z8351el`A0Ho-TLvLw7gqW0pp3=*W5l z+P#0#tp&ur`41p$&`bUS3^GJNv;hv8CN|H&X1t-5Eh^L!9c#T$S2#o9xdT^e1=*xM zXf02>kMxGuxR?c>ukDKk|K2PI9(yUpk_hTKa0z_RZV|~IgjU#^aUzLvfl;%2C-N5b zMR!MA|NfeDwd5^27{qhpWfB6JZ2O_&nEP?s)GpKjM1EAsgV}VZ)5*K0Dg}iHFB^A* z$7h$k5s^*Cn*-{>PelLuqzDtCp zGuNy*Kayw2qevIogn(V$e!2kyl2JLA=^B>TRRBE|caJP!u6~R2D{qI1G^Pfho~S~h zt_A>-4X6Mpet!vrUWaois+iZ0QCJsjq^!77o^)IAIilPppygpBKVbOhFv}TG{UkWw zP9UyXKK2sW!k9pSu$Hhb$t2a0yP=pv`mRnNQ@LhVc-b+SXKN^u2${Yyu%)X4R$8>S zI&=z3fKF!69Q1~FB7$E*_y*}`?n9ksRJ;`aJ81VvAECd2cR~_lFCI2xLx28cdf?$2Iz0&?!q;UrOUbzKx%LKE{?1NTThUUC z+Z&dp@bK_6HyQQhZ!GwmU7>D z7yazDjBJ|Je!|4TFCWLK)=TtbaEahrY`u#5R&*C+FwKLj$SC3W*9g#K@#e@LQCyX0 z%*`6KI!o!OU*Q(p!u1AnOU~&sJ=hm0Z3&Ewh_u*ihEP9EaB+$f9i!byj)~a7Zs>Vq z{%N>b4&!knqp-*QzEW-zU$I!aUh>V$uZ~SPrNS;BK=PGM@`1#(XR`WEctc+4tl!GQ z-LNp0sbVW~6@7B1DZ&VW8;Ak%LIg-Fe?|q5Ex+i-F7B}_?q^h^5$lf8Q6)Hx>EPgW zyrV-v0D(cEEyW^5_~vSoBa|suYeC5ZlTX%UQgVEJgq8y>*)!%Zs9wx}9JoeM(J>Dm zIK<9j{sZ(-Do|HxU9T3*NVT*kXZd9sK*Zz0q_`n33az*Q0b+<>A}^x=TOtLkjM;t{ z>CD2|vP-c2cesgXy@2^qAXAM-KX+VHQcLOP4pddvd4bMsDX`Hjct%f|dfU`0*ReD> zvd4?M43hXD;fA8Crw6W~StQEqVLs&h)KDC_gkzPi(|I^9v)wpIzMmT~D*Im6y!ywn zvih98q?cvI$7YSnJ`v46*UFraaB2htU^LHsofAJyAtt}R9Rf1 zA>=n!8d+cNp}=0jwqfa))rc?FQgXA4!jzcD#kt=5vOp!>=Eh66U}FA!=2^T(4hy`?h9m3v9BUI5f-N z0Cak5vWkukiAAvDEe^%BVx;N|j(}?Tw9$vO?(Q9~V)AwAk!DKI8^2gqmGYs?DFPr8 zNX$`iWL$zdJ^34&unxgv8MqG2gUwkk-s|Id=bN9Wry*M}%i(M4Xzs~z_;gv0sYXRc z##YAg&u?13OF~VpzM@DrgX77hD0d41F+$r-wvfq$&%XsRVaa=&QbRX4?!W&i}fgNa3T6|jj% z1C}t`gDJg}2gC0-cwV3$gsx`=E}pa!E(w`PT}gPF{X2CwUiN$$Ul-V@Gs`q;*}9lR zFrYHvo|NZEQ+B0LH+$gTeRK=}!|_cIzzHI(V^&?I;;gwq>Q{;s z`^a<{>m|j|i`o$r(%S?8E|Rsr!y=K6(XX5hy10|gaZXWDaz>{ldMV9F1!UC7Vy2L@ zLp7usWPLf-gywE&*CNi83z81GKc%NP_b}j%&yDfSB%L1PuZ7U+^~X90erA0}FQD1l z5ZNW|y;WF;%mHHtfftz0aT{q6eY^J?_QDPc zhF_BYN7g%d+*v+*plrhP#D7Hnh)4(?oTG;aj8u65h^TRizDbkDH7M)=1w(RmO+WBUcbc3{s~0|c!ZmZMexJ@|wSpj&_i)H-L_H_T&wHSh{E&d8n4dyanTtA}YaM)S^{@XpPps=JPs z+C-8*^nEbw5L=j8m`v#TI#>F*ewk)u>-}bA2KX?{1MVscT`*xxKJouIOZqK}8`>x_ zYd}ihW3Kfg1r>5n0q1o_FQ}53{>4(~i>(itYCKYi%2ndZ58W(If4VrO6iuT}yTG&P zzH)X|elwrCyTsk32IUL$-)mU=fI{52#xy9frO!!gf7e zXaD-F7g}2Tq!@dA)5Kbu9(J|?oM{d8J7A;HqK~S)rvNk9P{a7U3vi@n0Cij1VTa(Z zgFK;Zg8oqwF{S^&LJmk4h-Z#`#q`Ba$ej5#H8m5sZAYdl#lAkwsr>d?bkb_I;g!Rf z5W}lNmZ}Ua_Zy2tiSo!Jk9(0|x&KB!-!Ub&f;CkF4s)&+!Dd9OA}yh6L&*AzCF07c z&~bF`n+uxzS<)GkzB*aUDo=7Uj71`g^|KAx;`Lkxzi0#o{(*Os3057PRMn=9q+i1( z{~|9B(2(_ADA^u8%)+@f@Z7>-ce+-|$poNMu6~K{eo7UQu$i%98767c`5>)6`KN?A zufT8Sc8)CUJ6F*PgD<1BgH$Hm5i0~ge86WaH8u6%Z7|IDaO^89D>vL%)_xXr@hdXw zCAjYZ$Iu~q^c5NO5aBm%18?biD)iSyuG4_THn0)G(_*iJ4QhHJSLLd*^1Yz;3WS)@ z30wC8HPBBWDivfLpWWyusd{7N?a7fvwjCejYOw8@9i(GT2_nyow~S}O>))AM`0iNC z%&QAi#gB@mj%kc~1G-u9Y566Vr~=m~6Nl_q;f<{!19~^Um^^w*{kBB}#&%dZgw%p4 zv=&Ppk=lHA?XdMQ4y15~N-CFxz_zZ>#45rGnN`=Pp)B`n z+G?3WBdm1rekdh_xRW7#>ZLP4fWI5x^=(qU@@qf_Dj-`&_I&D_qG-c@8h`ZSp1<4R ziG*K$2zy{~G^@~NVMn^>;7uCQ=s+%M2e8jgi#e#4_8u;O_5x@d#tL2l=C=|Xg;Wdu zbZS7hyTm)KM=j|AVGw&@(Bst1bc3S}sO|Rj{F$Yq3PwTwCJB3|tzIW{QrCRFKMKO-09`(?|r| z#&>7>5DaSgxVYiM2&}X30sFD?qi`Rp3h-93DlTKkh%EzE%o(@Bs7#PX19AM z%^BzjA7B16(>(n3p!dI60E0ZnvcxGgve*S{mn*R1J#|<~{NRUoeN^Z`dnVZ6)_FXIb7I2JKq2HepirZ z@?n5fP(kz*r_<-Q_}*suyX#t(xY z$8KsqoBo(IeVvYcS<7-zl%&W|8tjRYnVLA$QV55)F|}u50}Ni+S>mI1E1YsmmzekV z%?QN&)^;qP=PikO()|%weiQxQZV4x4WBLv|XJzdf7SU8x=(oxW`c15OWwVS|Y=rtW z963HC|M3g^(N`WMXhtX2+h7>+hiQ)$y4epOb1v}6{L9Jy^RKz@FR}Ko)+}?R)=q5D zP2BoH)+@uA-&@exDp9CWApba4=!WwJ^jon0=cmGp`50QfS1F6=PVa5~EblH4)XtT1 zD1GhGp#R+7sPc`_|0x}hGkLN8yZzjy{A5ilt-YeJI)_JY@=dTqRK_6baCYJMjw7n0 z6YqZy5#%WJI@;s~$ETFdM{HXn1Ot|by5$3U_N*Q0AwfHNH&xtMus+5Od%1LU<bK;pB{h5cNzT- z6&UkH&OTl1T=&0A^na{sv&|d#!6; z5tL-#T5eojWe{ym(btHn>0BUkaQl7wx7GMEgtzyG>uDg?$lUsW zd}p2KQCt6iV^36zocyh>Eg{ z3wQ3l>=xX3O^qv3#yU95HPHIaMqYwd>N^vI3q(`(7`u_od^{Xv(r2G05| zZZjR8QG-XhSO1#4mdN6eHm|?Cv)!Fd!}&plx;$6x|9y2&3GWhVk5Oa@bu<4}BlCy6 zg)NP|bfRC!#BmR_m#DX9Q#XYY8k?gl)sG3KKYW=e6p%b=MHtILzOU$K-FGf&IfoLo zAM8FoKL7JMLttm2rOLu@jKGodSVCQ^Zfm@3lWi#I^8R3F@S=v8q0+|=%k><}T_1F8JD?NIZmT@E5_)~uLhkR+9wB7D_3S7!nOANx?TaYl1 zytBYRqMEQUz88Gf$o;6)H>6k|T^=v0gz1r37Wbk!QJ5!IRsX8caKYf~ElCZVW-*xl zSec&L?7ATOZ{L=aYo&NK!J}PsaMd!Ws}|ojNagnSki;sZV%y zOXx4l{*0ZbQZ=>FkBCfRN?Lk)3U9(Nz37F(NiMlNt*n+*_slFdum2;o-gGdfXM-jL zMl(s_BYd{E_$lFVeZX!1mX{JL&h@B*;101b@%&T5s*+#}3kyw6WX{Cqb9U_IVK^@N zjp!V}7XfZxuYs7tgk(~O9D~#*DqPdw#JHDsTS|5f;o^ivvbu>pp9JyTOu2FNXCdDMtmX>&8{TGlOLH%I+p8i8|Jry+lp)V^)<&U-80cH_qKQ(&{A7TE~q8##z z*VQFG2jy3O6B&T0xWn`r+Tcx8-}kbjOD6i-T4iwS5`xne-I?K|JE$LrF<2Tyju2r-j=50-BGz>K zNpt|MdCo1s}M@ zv48!!OW)CZ-)5{o_Z!-EGVLyP$2{Kdbg~JMgT@3P!0~C1 z9O9@99+p-~!X3h*e@y&Fj&YWz&v~Bq!3{V?7Et&-3cyQ206vofqL0-KnZ>tZlB6 z|4&xDwNBUTgC|h+5WEr0n5>*4Wn0LW?Ofn|xjGuL8bA z4B@`Q6mT|UuK*7!JoV1XBvdBG^e)Y|3hDnCnQKkjswA($TjYzYvL*MUo2%qV88PTx zkIm5-GYp7y^k`;F{^>=UUJ1P`mAIS(>f;K7o?Pi?u+OR!5#H)8G5=LL(^?-b8u#;8 zYq9mLNCQY|6uoQs+WrG30WdGXFlMPP$r)gTuQ zz9|_<Celf6y-jLKaRR&kyY$e|Rg3HuVFU zj0@z{Uoakm1rEEZ3<4G4n^0W^VFw;LR~uVACI0{$+?%dIfW^8FA~n?jY2d)XpxVX} za}Gw+a>r(%!5QC@LXkWD9IHhBF3@oOD{xyofQt_EIsj)D*)L+3S%%9O zC768f{ehcd@KHbK($Z4RP0zJ~$V`Cp5*TDCH)|1|F`3|$g(pW41}WMWCaZ0tzCQpt zJ8m`357?7(!fT=cyn*4<84B{>Pg$@f?FZM z+p+SIg(y(Wj7-J!5B%u(Wy$RTS2-K3Gf08i8imZ`!G9oB8!p2d<{P$^RIv%0 z9B1(E`zcUE7LG#`J)uyjkGSzyP#+>?Z;XK1&hu6`>q6tK=xJ{<(?W#~Tiw++o9psX zaP-3JRJb1u5IbbBFXEzBRs&3K_wz4Y*Wr%7J@by!=QqTeEASWYGEz`@!^w>t?gvbDC5aa{RW1JP=!;hkI7&?eP0CWJG7>Al?#)l z?Fw-XzlYs?gOCG0D!UR+qb|YZ;<<%+bM?zWT-dvne{m+lFwz8@5Nv%yY6!M9rtVBJ zK?aQ^#+BUZ4(gSEig{z|NS;cp_A^~D7`}5|8a?N0S!`nbJ^}D>;mgGug{PJ{QV4PB zM<7hltuhw73MF1f*rV-$ysFCNgQ{!-Ef;ZLLY2w=!P|8gfUz}zCloQpYd|xPdxcRubal~nbZLkljEN#O@8bcz?dGw-6Am_t+O zAYn>WAKJ;Bl>AL%SnU`~)vhFSpI+BsCH08ePml0B-$Ci)tWYph0nG6oCC)6)HThJF zvUVcnXJs!r)?R}O_$>&JT-p`x;$?_I83_muQtvC0J@HIM(Mvxew|E85n$-;!rKJ=^ zmxC)GTTR+-lsOQQ&m`+77&5qYP7YVXn4M%$pZ-c-i`3%KBDi5MsP&FUh^N3Ax)QmD zl={jGMxSbk5XRYam%jIC7J0otp#8eX;Ggr+uk8P}S`)asZSQFD_6Qtvkk##|80H&Y zKr(*HP0j7`YfGp(uQaoS&l)^8?&hO}mjgG0U8uECZGP)a@XzNt2wteeJG<+4+#tOy z)%1A)kt>f~1qnUJDD#|ln5q2Z%A1g#G5f)l=yL@~BM#d2HucG|DfpJ^W2rOkA)6mD zgl&nEhTAiSGy+~ncSn0w1rY&mtA2O%u2CT-9pGUNfZ$xy<)=Q5bAIySf4yV~T1l0H;Y>}^EbQ;YX~l@`_(0H(Vd7FhxHWvDU8mCY)yJsiuPHs(jh{FP$w3;>JL z&KJ3Alfu+3L9uqMgRf(+4z{ICMK$a7VRaYw{s+<`j6e$9Z4ubpP|4_ytM?xB7nmG<2;1%eZ_qp9{DRIOYK z2;XOjygnx01NBA;j?ab^$Zl!wRXM~m)B1$p{N?@946#V8KJ)E~OZl<^6Unt~A|ybt zhr#Jvka;%NkZ&%_s8fX@7nQ;NbE0~LkG8%|L#(e(T*7!)FuhO+$x;Ek6+0$**h0jO z*4^ENt@yBwI6gkUQ?0JD5wG`t@g@@;9p0zylPPm5XS)VN?V!NLV6G1!{Dvq|oT>xJ zR}X^WVehT*Ay~HB-5r2Mq8InGDSOXF%Exw=M*O&D7;%i5h;fc6cmsE+&zn;q7&;{_ zqnW(~rF$Nd;j<#HM5*+HBnfP#MV4mBK=u`TTt)ePn-B7>J)nHBXYl6ala#4PCe)72 zXe=MjZnuvq$SBM!-Y)(^ocvyJf!Gf`P^lweJ8`I@+(9#-mKDNgr%!U~a$kLyMkuVC z=4TzcOu#66266EK(w9ZI`1z*_4$(aJDMyjx*&k>KJon%OVvUZGk&pq;`5X>CB^{=* zP-a9y!a!FGb3H|QDDry`QD#yc=PFU7NUAfOfPbFdnio{T`Q58#wHI4F{kjL2v- z*DAQkEZmj~VI0vesIV?YWJ87rh8N+WkX}jd2u$y_^KWhN#-)cX?OzRa&7`i70646y zo|c-e>`lNVM<1Z@V#cQ^{cxRi$$vHjj%hL_R1fR&`XLO+bg$^0SWaJDWX41Eo}&*OkWn9QEVegDCU^ zEWgI+P<)m0wX{<|cu|qQ$2xhJ8=joN|I}@xvZ;H?YLLBf$k>x!T(UR6C)IptAuS&L zCG^^dkiWrW$#{v6{fr>6s4wFNlkqf1YN&ep{k?pwYJ7rI=*+%9d|>96EW`Ng^fbEp zFqfkIUsKdEg!qS>)9gHSd6^@RMlF|;H0YSZD5KT8_=>UenvkTZqnadd{YhI`QlxWt zr=);k^`DYxE#dG$pD$|C4x}Rtz|?^>U}_M?O03gr+mZZy33uOA!?diss2JjmZur!K z^7)aZ6!DHQjlDXmk0EJMT1#Ih_d^e~`Yx6VWmfg6fZ~U!U}0dYna7K#7f`7DUU>ZM zdY;rU%PECdE5czaT2M;}d1nQO&>~sz!inQ^Gv*I46x%cnR3199jp2UK;{H(MYUh{s zDM7Y8oPQL@UN<82RAUf(@=^H{X0*8{i+!``z1QWQOtZ6D%Z_+Wu;+GSG5X2>6kGd$ zM4bmb)&2YbE9=3Uu)GnLZ5mT%#Qqt-iTH;kileb^7*&@oi@y zh}GVhj1zI*FDilz(EX)dy$FNc2m_1$RaQ}{OME)FS^aTE?5_16efiCMx8WWedpozW zUr|Q@ii6;vh_|j2=z{ot2~CA75^qDqQCbLb(}5*rqALu)ROvlNpFuM8e8?Av9lDNZ zUMTt|n$Kdhl00z+MbTe6DEBa%LAcjr7TqNl78jvGrb7K0&=(N3m+V&Qy(SV;e4op8 z=bfI$ylXUpteQ#x)f2oiAO3$Db&=&n*tQUehUxv}7YC#(+LrNc0?%0)&eUJ0y1_b|D819EHG@dlH@(FfOG zEiq_aRf`w$?1xWspfC!@e@|XzIAVy7-Jhs*U^7+@^(VB6>ff$(*T)v7Dm@425hQu< z3`H0a@`WdUxkL2&E`FIF)tWQoNtd}%(qmjL?UgJwN1fpagXnie!Ct*BBoF}W|5Lq4 zEbtebx`K^@LgMfBpW9RaoDR3Avd~6i>i6|-ebnN#!m$SdJ-;i&<*Xov3ruqIE<2U5b=!t&%I-Er0#~+1%&-d%riQKj|am3DrAIy&;af z)WK^|J(v8k;!PUi?3p@;nPab4a38@6=$D5Z7#Qf}tOX}g27;)E?GovjDaUwQVf^$k zrv2Hh!HaOEF^88Mlo_Qr+(eqv@5}d=6@L`f;Wf~bbGq`PDmA6^Z@f%&hJfi?!!p9v zfxZw2aON)-??_=sP%VG2_KEh)Zdg zpQ%Qtw|KT^aTb3(I=cL0LO{-M)7`+`UCLS5gl#bUX=zo59kav^e}*udg>N`yIoks< zn4FQ35s7TUw4LWlh+|tpTGsLTbB^re>xTESFn6De00d1xH&n~qL>A%DL?mjGu%^Hm z(G!v5oLX0_2}%}`c2*sAyy~Y<^X3w>7nao!+!5`hZ_MkW$AndLw0YmPlk&0+<|3b~ z8J$Fs$0iMO4A zGUWcNQeG))S5`iTbQWy-+s}8Wyh>822$?qj+JD_MA>IDIF4W(>7*QdthWyO|_C%<% z8qnQv67J0XTIzlF>=|suryKlIFr_0NWsGtc8T%8yfecaa2m=ovEc-UehrbC*l(Xc9 zo=sZ+wZZOpeWCd{%S$sseezdpE)P$vz>(XP0$=;D1Y^E#;$}YDtNQmk%1W+md!}i-uE9!)22yao_W!%U@H;KMs8I4IWR{^HD@q~d-HC<^fu%31FZ0OjHNaQU}&7w5d4u^d_^yBREUKi(&ba^6Nor8nT~#c zz*^-^G9#wTpc8A>t{y*p8ly>}Rrsl_ZENw2+GIv;G$LjAwQ7?2psH?)dad^&Usvg~ zwfhrxIpbgd&REPRv_32~DwsW-ydOC{8yDM~A^+!~n_WgXI3#S*?Ni+sQzu>FTAyW4 zlAw&5<~cOuWX;(@cR|;#R!@tdKjZCYruTNe=8_K6hm-7hKKnaq+J+-n-;CZ7GPhFC zgmmpIE;=-gE%T}a>bZBOqGF?(*nSVydvccQNCsMF^Dc(x&oZx{g{-Y)j8AEUga+}D z#Dt!bGJEc%-EU>|on6FlF_*Dct8PLnp(ne4Zoyr1<^RH^S6HM`ItQ2gs^m~QFV<%b zl8nrvA89UDihd-ErVJM=E`n)}=-_eJmr8m{hUpp#Ka=9}N8Zx^hB@!b`Buzqh&y@N zd?z85d?nT>?K&M9BjZIL*5G-}w(sjM?rJIjVbKUfa#lt9ZB6?#a47$*#y6JB?B|-e<{F`eJ!dMGx>6;k2R}z z4kW+pE$hA59iECv%uo(e)EYZQZjhjBI@ctvO>U_DeK1+Rg+7yBTy$%R?@eN_2z=Ff zY_3sc^=5~+Yj2`ByO6*z{q19*`0d-@ zIqKz}6vuJyziO*2GcUM^&Dziee^_t4_{IA1x9hJ5GNs*W)L&?JD;i#ZW0hZ@YfC-Og7zW*=>`G~@sCuP3>d2O{G9u&fxAeg`6|b*6u_8WYe6 zrX2?&yt{jpltO{Ot224wb(_d#xoZChePY7i?&e?a2}7W>!M?|YU8BxV^!0#1M#WZE zNQM{jp}9F~rSm_%&Oe0?jLk4o_iHSG35FVeWqzPuD4w#&= znDS_=!vFmtFd&E(eGyvT{IL6#@A6{Thz`@4kSemYvY9)~l2;M6U+pl)Ey7{@Q|Q=l_C@SuB%QSs&8fN^KT% z&WX5k$Y63WNXey~<}AnfGu_Jlm%et!hP^SbJR8KAG24Xm%^VyXO7+FhtI33#EQ+D^ z_4SW~mC$Bk1O|Dj=^u?=g?+3UGCI!N6E-i@@OT8jv{{h#=e+|nv(wwN%Xg4nr-1?A z>gvA2ug3m{Kz0;T3Bigg#Qoia#I;(nR+q~>uKPWVjrQAo(R)PEcBlXG{2wFTpA`cU zB&@9eeewRZkaJM~sOB3LMV{3w-qMe+&+K@0O1FQ!KGq)oTGs>N@(_Xl?^kn()pjBY z-v9MH+%`V-<{}&r(So0c`Jr^wy;o5u;}f(>-sO4M!;1SG-18vi{_*CESMOeR@Za_& zBy_XId^pS(cYi8+BjYyW(Dds@(NnUUj50ZPh#VfT7=Hq7PV3_~3o~CrivNABCKrht zzf$4F?OSSL8Mo9@+!6g2wgmt8w{&v%=&E1pd2+_HQZjjs(%z%fZDSR6(=DSVSJL3( z)=n4jsh4G8X}P<2U&K><4t6993wP}778e(BSW$@wY8Fpsdj$#xuA($o=N*X9R`BUG zne(tfbPTbULk~OD>o}LTFZ`5%Rsq-<=%}cu=;(McrCRRlXyZn4QNpzqVIr~hBoVvRaP0d* z6fTp-3M+&SXKSU}-!0US6lcdA1ATtE@>;aUhowsV6t7~kx#5`6LVDR|lf|$MU%PW- zB}6xeeSa3!pzKsAM~WA)W-BVLC?Z%nhz;#C_}k`XUG_SVxV{H$VkK&WZezaloU@bi zY4D@*0Z37Whaap-3wv%_S{}Ge(b(%u$hR#?7PU`j@bV@)xY6bVRSTe_beZ{BUE@{{Bf|ziuim#9yJ1-y zpc_KFU_b(_4Xwhe=gd!tqh*~_gOqHX3e{H~S z(7Sh6BYypKp3V=|z&I1sd8E3oXykwuP%l^JmLr!n(EC{WNSI{S1oTxt!C*F*-&E*N ze`tA@gvUZBa}befDU`Y3P{!ni=)8yCQLB&yOeGd`{2&@fD~&Hq+Y7QlU=p<% z#huG@tCGX$3G|kSJS#?VNf@31!)$HM@!1oL4-Z;RF`Q)>Z@Kq;t8v5lHHmSQwZ?G$ zz;2jCG5Nm8` zC~*_)Cy7sB^#IaAh9n+5aB$;mgm>DN=Y6)kqLszbfy}x`=WRA9zgR~FgVrCn)P$`i zEJ}4g=Lxia)=sN`xSOpZzUd=vOkfYL>=Za9)@#_2?J!PKmShouIlBmkU!wm)j(GlR z;K{+`?K-?EJ8<+QS_8R3eAFgW!~qWG0H*iKTT8teAn1R>rm8S#a|%9Y1!6g%ws!dd zwaq{bF;|c!A|W9mBf}6)=J^Ih>&V1OnwMcGd>}yrlY{8xU#hh*4loD=8}$?vtPg*= zQ^Pev4Jq}(z|=mxYYPLCmeaTmh!5pfcb^=wyvt$NlW?C_ZU9gQ9Fj@%u#OvY7;~wJ z9IzIOsnGC!fKclr>J4y_#;1=JGq+VvJ^r;B<%J1(X+GVSc2qsehK@7O&2n0XUQ9R( z4dG|Rh{6JRfR$MRegH&Wc|lNwHziYrO&dG|g*j^w14@CLHwd8ACYb40=auY` zxsrb{AQS0_gTPxq1U7KHb-Po(cmB$SoX{?ClC=tjE>DzI(KyL}x$z)MWn z>LcY7a{!AFcea&?4H>K^1A;(ij~QTT@i9b)zO)ZvCaB`d!$g4l$ODGpm7J>u^nzuK zx(uWDpt}h_jQG&3-p9o(2%#`H25@7p*HSa`=Bg4%a)mP(9GWCV*sJDBh_>-GComwo zkNVt$YxsPFLtfZc`nZi24}&#O^$^RPMEJAH zhJijqU3V_RcP2c7=~He3<8EZTwx*0;5V*8JQzGgzWqcH2eGE1#6)>M;LkXdi@Kv?S z2a)4gdUdy1q`ZS$jUYlj;7(DI=m056g0YjrgT8*j%cf3Y;VtfZ3p5Pm=8ZlD<6HG( zZ@x3EpwH_R-`NoU)O&*Jc*+yPmdw0dD*>9W3kihIia&Qsf^g)CPY6~Y0hQM4?+9Az z?L}P?uN9p`3k?$Q;3Alg1IX?M2aZ-TGvmemhqM07dX3`_c`(~c^m7bpiFx05Gq;45 z$@Nuk)UC;Ow}2aVuw?ji@F96$j@)>e<4@CtwSHBubhvWr;)d2ufhx|?pMWie_m6C( zwdgZYmJk{jWr@H#B~qTQ{?=tFq2Q=1I8i!;j9o2nJz;_l0X{uTdl{Q`$Zs)$bNL#B zwEEgCn*)e`l?}%0ho6!z?;YF|M$Eu#ZyuHz&|5rSLr3`hoIL~0$0>E<-8>=)PvXG5 zsmGqp$ctHT4X;0DRI0z{^?ikbfk#ID!p9C4f=3PQXgmjmcLQ@VEM;He!6Rpb^gQ8rD7XytVv=5|Mdba>qiH5Y)lj>7TmT#Zi4$RSU!7l zBc(Mj=N)KQ0Ip*{n9E2^5=o$e)9^?hn3k}P^M8S`c6)%G12wD7!dceBo(=C+YiqlZ zfk4+jn63IDj@kd=(s2tGDN9hTI}G}jFUUP}kbL=2k-iIKp=m{izELJ>5U7ek1?4Rz zI%B*_4A%nh8ZHTFhmkMH`GN!ozCED}F5xzakf?btZF4#w0uaCqs5N`L_h@>ZQ|HK^ zl`)!_Lg;Zb^hKYI~y|3{d7VW@ZPEzcdS{pvx#Kt@9GKb_5v(n z-9!`6+9Yx3UiQor%N4}JBl(oD26C&F36rDX#kvz9n6btR23(^gQV(_t7Z*|b@(xrq z>5JJOso>LMxO6;67A)hj1~IPI4Zenh6$-(Zd|l@za@f`5L1BeifVVrN)I$X>UsD9@ z@6GpvY+r$V_V?%cUs8)yb)U$V#WRpy3~PsU-c4YVtq^WIKmC5bL;H!4OQsm|%JnJp zU^UtMgi-HcLs6y$PSTwPeA_=4LE}e#35w#dLUCi74Z1^?+tKspe_-JpO4$icn%^Ik zPk7%1e1N`onEm;c{ehwKypEw;It|(2IWVUv$0GNwsvOBSklhBR;Ner%vPAqjOBSZt z(IRUjrwU_Vc!{NV8%p)=D}~FnN)aNz^fOYJc5^Kv@+D+PiuLTW;#o&;)j02>Lmzvt zcAJ)2e`!;VW|phC95fiuF#VkUUatKzRxk>e_-{|Xi6JcVFP@xeo)ZKeBcsM!z{|BW zK}OB|7kh#97)*qRqDK@YCcofA_cpH$RKB*D02J$Ht@n?cn=#Gx7{e3*(#YO2`GXhC zK>Da4er6b{h_wKhh5F`L*!6x$3kxTr8-X_i7!0wt&~HVN3isO+%^KDC09+JOq^gM# zx6Pjj{cclv)NoM@!A!18U3KM8rg~>3J!kq@yp{qx z`2a)vr#NJ}kd=-c`;FC@yIs1kM8Z!@Op z>hM*Il?Qv=jg+cGPB2~!eP0D$--g8&VO2f-u+FQhBT!Byyep$#7%keHTXb<6DjJlRHQoq&#d3LOWW9mml*}0UJrG z2C95tU8o$*|3vT7XlRi%pxTsa2SsJVSUwhpD?05m;kgBYofylmzhZ}I)G80x`nQb* zWFcz5Z>)k*|h=JB_pgajh|-V z(yMU1TFQ@!{lyeKQmGeh|2Qdxi8_s_2;M`l>xl8MG| zBj`Sa*2EMn9%E5CuRVKer&zy{U?5YOH-^UbV9{`t!SV<(sPHXRzVf&%AXPoQ(MqLQ z%Q6hA9_50bY70ZtTBN}%U*84c3`6b{=)I%zqdL?ZH-7oo$_KPii zT+0JkvW`-sxOzcMamdJOy3=I&m+BmLQM(^#gPH}mxEkVBU5~!SX8iVF)lojx2{9c$ z>A7o=P%a&BgtRfFo1Uqa)_KIQ)YkL+mk1f&juj#$}#z;tS-n^7}_GFi;P;5$8 zBC%Yv%4(<5(lLdqmuai*kj+CjDGFLn{O)R0Anzl$@5XihGvWPH zR&@a$s~^01yM6)JG@Mq0gy$m&85nImO}BH!o%NEVcCGPo$wn`I>VRz-8P*E|*98B;-quF{PN&GL=s1%v z6fM0WdhHf`hl98(MY9>!TI}mj*M*;>iYi&I9Q@`z+Is%tg;d4f0gXGnWRi2(M++dh zfTpe+KjKg>UqagZFW-x3`8PTnjrQuPgLS-`ms zrN?~o{OfUG7uo*q4m0EQZA9qCJca^I&yv6x ztIIOzMpR>k8&Ct6c^)#Sxiv-Z*&jZks13@)cQBiH=ex+ok9mPS`ycyXeZGJBRnS`H#bttn?FEEY@W0J^X&pfYqyFBIHomNg>1_}P+P5~-f`-UHsP(TGI{OraChU%65=_!T(2%vW1C~t z{wR+K8f!=&2?E+~;ZAx>unI9Y4o+)e7*pBpW;vBChM9XUgPApGL&I}Vf#PXG;SYBQ zbBT#d#;*zCRWUS3!?V#8X@r%*W2mIp97}J|d5`{C9=uKBK;O$WkrR@LRC1MOioZ?1 zh?Szp{@L=Wh)J;*iQ&9E&y8@Y_LDxek|uwuEQLqVm4GC3&*gZD02`XvR^?Nl<@hds z4O}kvV#S=Q210zz`yuaf<$w9TAQzkdWvVh9`IjB{O;$ylzF6@!*J+70y!9DHW+kkL z5GVHf9Mn3dH3Y*4KZgtOK0tC7S7DN9NjB%O3eKi9L8U48COc0JloL+CT{NVB z+jPQ*O|`(SmyL+4@;`J&AG$@%VF1nZX@2}mkQ@Atz2}0%-e;QIUGpJ{Z$bb2#<+xh zRA4E6^J!K%v_y$i1#cATz+2T}1y;Nep{9a$Z5iPOSMh5;>p}yUc|iy4iE} z;5Bl}eHo&sXrDt9;~9`WAbghCn?LyR*FsH-pm9AEZ^Q(q#;z8;u$dq-TPQ6 z)Z=tRb`p{)sPP*M?Cq*Zn@NYt2@ z-VIT^L7J~KkkIjnXx;Z$bR`#Kg5gdsxMHAtMUWfXpbsXmd~H1h{J>FhkxJ#-8b(Hr z-uSikEn+H>I{RXmB#%p%&Hg-*5@8ebC=17TxJLY;=K2lLv^4vrltob7DO3nndUgD9>4Q_6O)`E1~@xH z8$Qw+ML<9xLZsIVU0+~4YhZn>*Tbb zTWoAx-Exda`*D4ZGuLLpVeoluY3G3wVplggPW(8P1izo!Pt4=9+dMrpPqTL%X{x_I zqik^kYgLIIg4oGYn|Nw-Pd-=L;z5{~kdau2SRKy?BLXQql&5bJ*K`9}quqV2qBuC8 zL<6nFcw8im-?m=kaRo~JZTT3;7S}>yW*W*TXZ|ZadZ8$sbwq}Sl4Lc3K9#q>Qc_Hb zUz5e7pW;56wrMO+gP~;mW`ib|9y!BskQh&u-y?y={^|_-<~X8_Y|4T@etuA&Fh75BX&OrrB|R%V1TI+RJlByCKE{(Sd2<=h!K<$sGB7Zdd?{f zEmdxlptsq$HbkEj(ot)fCD05w%FZ^bpmk|V2Li(?-?FgW4rU7u_DN!^DDeB9I5ed2 z*dY1zBr_K2Ie}%B`gJsKi27O~JqHXQzG`gKwyC_d&5i6pqpWV%GAg;eF=S13az4l* zKE2x~*$o35i<+N2;%__t>jiua?ESc?PP&$)YvEn_EtI-HhixQyqniGWrPQivEC&9OHpsFn`&+Q zlP4#i&CLy+#981)pg@hnB<+8pUfE^5^qWe*->(CY6?<4K5OpT*H({00jGpF$sDf*#a9z|~=^pK0XY@8DjnrR@?@nxy;>v$o^30v(;7u+0q zX(6Sg}Xw#^|eU~8385<`eTgt=!bVaPVIJ=I$blmYmj^ExVvgfNvNEj73d|ri5 z*qb}&Zd`Jc=4zb9!^sN&;nqOucxLI*56X`+i6SDSKN6H7ZBwreF-5k#BwUSG+g6`D zspg>#XT9}aX+M>yEAhrB!TWF|qh4zPv9he(En6333&MuMkToJnU zkxj2r?~Ix|o-tee{z%-~{foI&7vpL?wv4dTg|qyYhGxHTC%Bk3E&=EQQPv&LG(|(6 zRjruv!5~4>b6L_~!sA2{F~FnyiCVzuQU+<8zW(iU`>#JH3WRdy7p3XoVkSR9g@;3< z@S64G8=5diJKLe`Zqz7hZX%9n4?Hukd7y}S~+iH9VL$S>H>H42wzYqo$@t()zl87uu{08uaY{in#BDY*zRvHOh1oB!d-@%p%yjB< zx!G=icrc$Kl-u4sC&22*MzD5!c_8JjbKJ@0aiOHYtS$3Bsb!V-B0BxYSM1?t)$q47 z+s7UxpO+@EY8 zK3q8Ig5=YBU!h@lFNy3%&BZ%+LP9FL+!JT$D)6{`R#NL3Mc{Z0SdQ0*?p4yidhzUg}vbB|F)RgTM!C<``~o=^-JerDi27(#(r&1mv{c}11EqV7|}*lPtOglSqEPMs`(enJmoTK zHOh`x-xsSli1Zf!AhcqhLOmw9F{aX&XNO>9Q{-Q$d;f}@VYicn*_~(1Z)vUxgnA#w z@A?FX)jpc|ytBh_Liu`!%2fEd1>B>Ne{g)VO>VOI6lB*pyYiMK9h_1M86 zY*JtuFaBay^!5GyUi4XgbcP0ltnd7^Q{e61e^y}_?BgmcDdpi76cqe3{pWt&ft(_s z7UD&9`iC-IPS8+}ebr-#N1^2IWF^qv_TH-L+2rl3EG;oqnTCqNw*8qAvp5l`o39O- zjkeStJ`C%r_FU?#cK&KPk?|pqrQX(BtX`H!NXX>c>u!^ENkk%tX7Hsj;A`@BZ54nQ z)seuxZ{fE%b+H zT!D}!{`~XO8@!s2L!)!xpr0r3q^5(Hmi(w|CewXVu6G@IpQTWh@~?U&AD%>0qIgkI z58PP+hO{Hyz3$}C=}8&3oE&3$oMbdKc=Fjlh(UqjU+{rfV7i&IUu2_4-3uW$w)ThZ zs=&j~>vA8Av$sWiNc`CbMd1x8!hMw<^P*(s5FDCdt*Wbfwo0o+7-8^D|H(R&@>+#o zA9;a3k@Li8&SND*TQSArk9WfQZ{+)HD(hIpiRrR+;B__0YW@ zDb#kgKw;LyH!eTjB@S)xG+6#=%e3Bp-7R;6{yCf0|D-smLL~DKq!zc{8)Y6@6%c0p zUI-Ckem>}pkY!YwN46>Zz;rCa{WMs~12HCA$)I#=I~Q|?F^i|x94*vlnBOA03*CwS zJ8F9)*Uz*{TcHapb+2U;G;D!MfrVqjJluW-O0IvtKKT-n9m1iolU6BaH<<0K9b)E8 zb4Jmw@VZMZ{i3@$ipj~cosiMB^*>b*2M!qN=gB_c|JV&~gMSs_)j^{lVeo5zG{p0| zA>D|{t3EZFmjk!d7~dFeT>I7)$k=8t^WRm{B$2yIS1lQ_(M`oX`c+*unFKBLTZTbN zmWL)`h_lc*frM_WPrvIbis{DWq-F9@H8}IGz;ThW{h#co;|WYiJ+&2{OMqJ%aFgJ( zMS60lRKoRXOxX*z16|Y7%}b25OiWDBM5V@;>k))H+9KSFosW+X((-x|r_s|P@DsXI zJwi5Um1@XJd?U@tVx1(y;pIc#4G=6y@__YZ7#S58M+Ilel>$^KVFXl|EeA~AaabSG z*VquDuZ^UQ%ztJzroL>P!CAE#sfDSZqgubMLH`^V8@pl|su8+iN8+wFkQRWTApT6O zD@WBofmMfLC?w#4R2v&dXd5ki>YzXU1m64O0JGE`sa!Tq0 ztf%GSN%b}KiV7L}DriE-xkkkO4xB%Iz|Lj@7KfF^5ADLBR)b&|zCI4=-(5{10G3&flKPQ1;VE*tY+sLTdT;Iw9~?WSlShOwy=w<8=w|Hn-u4w+{W(vmXO%Ds~v)tPc-QQ1@q&`yE!oDjrsT>;1yI z`eV2$L?qt5dk1%$uOkQ;tdPm`nssWg-&Jht*xx* zdJK$=fsMvrqr3KdUJ^pt^jz{--}nw7gv&;Y&%akSCyB_-9$N=}ZKHdo&y-@zt5`N( z9CYSCT3!+~&+z=ihA~LW3&~K(d?Y=+7UpAbBcP9q)>YKlM!25QDsev8XQXZ#S>x2< zh2EX4r{mAyMrm^Lg}16!Rx)npXf{rkt%jHKfg7}xcGQE|zNa_x4Bma-|J&#zNPfKe z{r%bG{Fwv)O^U2Pp_4H&385X@M4vuy{E+G3enP{4-uL_Xt?GR}d?T^fkwAfLnKPbtPYUb7{)DIJeQ17mado6db3ZA`j zxh!;B>UOioWigRQDoxMD3*O%L(*OHpV<{=J0SBeubF&zi6nV~PTK1zaptEQ%&AIBw zfz9&9VVW%1GGW3J8Dwp&*I2fR1)%cWCV6x5YM zvhXdNI9?TNYCOEOSWV!${djK@?L={Inr|GI|5@9#?5oX>4io7QZ(xPWw^?lHfrVl#Kccp+O^XK^M=Uq0? zRh0$WD?CUc(LR}+TbDLIaUT58j!=G7sZQEarH2=R|fJ_O2UQipKb)3REQ5&GyYMOtd z@tBzzkjM)EuaqAVaqfZXpEBe3FV#<(RXzjtK6Ew|0=17Cfsw*k6 zhK5FDLX1`8gITDf!}QIow(=vED=8++mSuluyf(Aq@R4e+v!88-HO~mTU<2LJAUy@4 z;VFbV1p(QZx&+tdEj|SosGCUN-y0lf2VuZ{voJ{^p>62(L3#qs!65XpKX2thGY*U5mxyJ%TqQ8{;s1PY@eL8Dq|z zs8wDFuwOB*Td}4faO{e^{s9t7@^eiH#xb;m={e<-?5r%`mZukig#gN?@1I@rfp`NL zdhmbj1DODumE(Ag1l`~GDb#B&S3JVt$;-FcwkdU!$xO;TDfkhrTn-j~0p|>D#a;X< zoo58ATd@BQ+`>a=qK+~IEqo8+e&Fx!%6UG!z8mB(asB$;k?#cu30JR*ul8rt(mF_!Yc1x8dEOJ)KtF};ArhdverhOk=c z(Axw?PZ%=?-w9ZV;x^(%xC#3b$C)zW=TguWa;3loZa#xw%sQEa-@`xjl_m76Z``6n z+24H#@4NWGLk4A@WcUxI{M~8*VaKFg>=K3?-;d<-`XQ6LLs9!^Hr>DZu8{}t1*v`i z()~IzU0w}@rnV4B9n9^ZM~IOf3|&eOLFTqV+8Yf6LjW*MF+diWDqX<_a6%C1WuUxf zCpRMC!ZMOOS%Ya%BDv2vz>0krJBWD^#Dq2gS?-~#f&A+rV1k^LRa8`f7h4*R3DS$y zNLB|p2lD^GtOO2)Dj4ts0RUNXzFElu@kOA18HF+*?nTpBZd)9V$_6p*#81|{u=XDfENH_W*-v-m)``F8^}~`&0MgkWdQQ& zDNH2oZI?V~1kJHuk&)9>|AsjLOA~B>+9OCYy9~DZdL`W6RLBOy%uJl|ah@hbr-IJI zZ$69$WSAb%eg*J_pjlHpY3_?t$9|I9T{(^2Z|2jxAuZ{At&A)5_ zk~(6kFOwn(V$4)B4a-J!Rc`__20=umvfS`%>i*t>R;7J+$a@|bAGE7Ez~A?bSKQ z`8OYA79b~-ETM9K`g_2>ZsUVu+a)Zz(252lp3r3@p*>fKwSs7Lv8U~~a>Gb^VpD60 zQFrwgTsy6s28X{1>*1wcc`#W4_dP4INaxQrAijgr?Z#%vX(8xHD$YE{AV1=^F{P0B z^eH&z^CrW;wCb-g#{q7Lh)Jdv3K0pmo~UnokXe$JISsfC32KyR8>#%Cik-dQv^m`r z)~inxYyEa^B2+)0g@)%XzkV6|)HzYdpXMrFdj}IT zquI5tWR1g+4%w_a#~bc^*zwfV(uwhj>NKsf9s$J4!94dKm2?yO0)D;itd0Vip%D z-PIi3m7Vj=fxVHJz8{Ro^tAgIWRm=a**>Rsx~Qe}s9@?Uyx-rF)=kW+8FI zF&5N;w`MzPYm1q?3NaabH4KG0HSdS;zYOu;4i9`$uq>>%49|6|ASU5P5Hy?gn$`vn zJc9EymJ_b3U}fNwBSMJ9IYu+k``24ck!}c4w^;^xKg-)Fk9~!x^~^a*cVJcfzB;jT z{=2;Kj3R^Il!SM_Hs2R88PyHdqYUnBzOS!9q+r8tt4q`b0~-~jXB+3?#z)?^w72Id zrEf;qN4A}we`4qO;`yWF-y15=&wfIooswLYJvm{twqv7$gEl?$@Drsx(Bxjh zo0DTDqEWg&#qsxTWTYMXB~O)gfV(#G>0GdU=-oF%pNPyKUtt@y+Id1oY$@tuT5fg~ zv=wU?MVHCWAtY||Tg{*aNusS|NdbP0V4I<#p?`S#y2m!GnAz9vkxUi2a~lXcGAglZ z;A!GW5$n2Zh#jRk8Wr$CD31gBwG?p%(F#%4DJaFr&6VkxSf;)rt-xLoa{QD){heXW z5MLJ_!9}V&w+s#B_Qmqd^5|^tH?jQ5!8@A+0iSmv|{uS^3=@zi7D!+Xhv}pO?WYN-+!s6t4=N#M~+18m3mK zr5XVZ7em{g0Ltg5<^SJhvSWuIrN$8`f{`Ded&C^wanwvMCG_?icFYGbeN(>Evh=&d5l5}8l6d}sfG!lNK|&+$#&%kg;o9pEs!NU z)lu0YtTI39YCy3zyKu&UX{BJhJSvtDEzC1I5Xu?3spNHoBR8aLJ_q%c^RGaA?RJwe--gvhV8!FWsK)j#Z?`rm| z{D>N#PVGkBRqX0!8tcA3bW`oiEi?2BMtl5HtL^&0Qy;ph5XA_@>w>#EQr;}x27HBz zb~LJc_dc@t`WMrg$r`)|VYBKDvs^+HDi=en8@f>Jq9H7rWcx`m#ioq==^$1h;cGT| zdVlVPajC$QDk3}Ks+Hx}4swJ~`T4Q-_y|oi>;nHp)lGf(T_kpj=<&twQ>WAnevV!J z8&u~Isz^I=$-B5dul7gYZ}*zD5geg>_cH~7!8UPtwfu?sl5|N&%2(!;dq5V4d;JiSE`{G*lDSuURE| z_*8Ox@ddq7y3ycok~gq?Hg`^ukf_ruNUOZ&UZVS)S3qZ1iL}guSK7hh1fL;Xne_>CZ2(NbTW?LvUv@yYufix5qm_6qpf(qK2 zdN0#wwd1isL+_JHYJXF;s!<3m*L19dqGO(*?RyFr?E&k6>I`Et>2W)@@(JX&61Hic zYhB+Z3tebk7tvuvS(JgCRV4OO9*lqm{E;|-eNnfZYZYoO9v+4$FOul&2^h?O)CgY#9lpHm0}p&~k}zi@4gf+{ zRr9H~f0T;GUfhYQi`CKU=&tXjmXOfch-1=M!`W&5>9I6ha^$_@>?;<%;w67_2)0Z^ zONU-Cxv#U9p8flH;n*Quv?@m*gbn(_Hc)NHnc;2U@Cmb+v$3!55tO14UGQw9iR09+ z(APVf6nK@}pPULb&LUpe{5H=(j3(guc$!KWO1?YoQ&W_m_@&8Jax8tB< zih@Kp+W)S0zX)E#PjxS(i@K=VJUK@u(;ck12WCEm)B+%8z$1yiagB$+8$vq>AH9SZ z)X?Qhb;}GH*CDWnG7S8%BvIje)aEM!j5;r4{m2?-jJqyT+hCEV3 z4NF&SmM24^5#gd5a+W01SAg`d5SV4UZvo{0%8>d<3qrloA+&O1PMADxsg;(c=(dNr zQi;EGeysXCG!rr57gq6xnU+j8CKB|}X!UVzn zH#(Sx;YHvtI)=MeV-_Lbh`v3V^}~~=n||QSdPffnAKQW`OUuz(v~9(!Q!wuR(`oW2 zbJFjYU#HpUVlJMk$=rHy$b2=9voJX7{>twnx~qIIEAuobLuY^Q^_6%k9e*P9*WHv_ zOSu@|-h*&ARgo21PH-q_f;1#-Tq6A1(+^3T`?%VL;Ema-g<|8vJVy>S)!8AF(apEk zflw(ssufUi-n)rXQDGWP;s7Jm6FHj*|8cT;*qj zl=pYsStNC1Nc7G@vVK|GM#4iPAyI+}N!IHOX=Bm%UeRI97IF2?+=NZ_Bxm>gBPjTj zjxo4SH(PpXhVJ_>%!)c+25*OXhOXjI3{Ni`twQRE=Lh|UqSh_qlDm4LHGH*W%XzJU zqoNixH)d4eY5mEVfRjxx;HbRY$1mlpU7r5k{eD!T#_~^N#|@9At|VXk`7NqwS;*0u zKL7U~IC4iUx3qjp96r;gbU67Q_#GZ;9D=mO$Gmhum}S_)(4@uf20Rh`aeb1z&GWWj zg>GwY>bDJiM-__W5Ku}5O07rnYn)vC(s91+qZuOZ0~%oU#jzKuzVF{$&#@ggyDpW2 zL&WTu0DMgPg<;oF?V~d(|NlR3JNDl5AbXVT z%wtnl_9(IrGLsd`9@(UfL^g>;D4S$tiwN0;Y$B2G{k-3w&-eGeuHT2}L|T2hkHIkd91x>{>h2sadaE{rU3sq5as{$W*sHP2(ZTeE)PXbj>v5xH7Cv%p%Go=eWjdrg|MwG@B z2*M~)jBMmuJC=-`)k(YC+^1;@MW?-$sZvjA(4F8|c7K)s?Q43-yC+p^ltCJOY^<-J zM_s%1yrhS2Ic0O?+V}?zruWXz7FpPU4MUFg?_MqL(9&*Urk%lKZ_SC*mU2)3jC`_g z@|os-d-8tUp2(-p;sn};1QGwb=AUaBt(*O0=Hne?_M!JuYu{cr`yku%jf%>psRHj% zJI&PqEmf}~^|)w=OVVumGwk2Cryc9+g$UEC+}&|PneP*oDt3~6H(jYq7v7hy`B&J# zCcbzP5b1z2l8qiwm?Hs^&9=u+%6Y%BN#y66_E6v!r}#vgTNaXa!D@9x9=|f#?)r40 z0fJWXe_l8J$VSYD^7*D+tol>@z@f;Fz_9f1kL$~|d#~6~0~V?ZpRiAp_M|!uMv%Z7 zen@s>=CXg(mT~v-_aO5v>NCm}9u2s;UjuuF`Y_z2$`;y<5ChSi%mDv?$Rtov5FE=z zy2wWxl)E|KN@&BP}2~NK@GK72b8y zF5laFF;8ym{b+S4Gk>ap13gs}sNO9k#4^JQmEsoV92sn+4FCd*1UluF4eU>5%>mvIjUe!^9CoLr%!v0O zLQF{3o(ekrX$T8}YEe@i(+cyS9*>3}gE?kJsq`rQf^N*(stwh;i1Z7>|Nk1R5!W{?faTF!5qicfooL zN2WX%7pf?!uAlFT{9ZQ=_#m~1*zW-12H3+cpCibUQ`)q+!SHMIQY{V;83j;f@9)^c zEem|o5g0_d^Gl(y=QF7EFpcaO{~=flKi-#E!7ca-BNJrZU9y<*ZPDO=_qv0W54P(} zfP?^G%*TQk`#2M~XaSnKt^nEsA<^K)Yynu2tN7&Mjd7OqXtmX!0~EZ0NMd^76Ig2t zdN7_DPdH=Y@?~IRJP3K*4koI}){qBG74S99tOJi#~JIty-XP)!I$5a%LDO!il!9!hxZyFf=CRpM$F((wcosr$b)oBSiw~mRQ5xl^9oM)bND!r0oj4=Uab-||1a2~k_Zxh^VibBRJWC3T3J@gcw!6U_4Ir3%z8y& z(*d(4&k(Kj4{%_38D+}KLv=fNazh|K6D}Iu``7}Qq;2n*!tW`RP)9d~QNC7?yxfDQ z34ppefV#*(UJ@6K9w56U1?Y&pxuEH*fTixZ(!3zS^ZCEf5%k?l`0V;w(=?*VO1p!x za|NjI=_q5T{64vyPu{s#Kb7tElS)`J$BblFPpK7M6~RC#vC`m|!~e=gNdRAeAY>r} zW*EE1a4Wt`qY)I8FfuLvC;t=ev80kHCE*aU8b0^crjhgx!B>>f%PTRMYFS5` z3V0x7JfNNqj#!)~9F><&#SEN^ilG3V>{dH8%W_DJ?(VaTyaQ_}=6S-nyvFITKtQ{g zb>nUn3B$0UAbFl7hj)zGP^zL$~@ z8w~VEDFp0t-f^hKAWSf9oDipeHM6Nb!(g&78A6{?++{Upy+!a6X&}9=C#Z>EnK3JO z9mD8NK~An1dUgT`XDo?fxzVNEDY#EBo#9q}0Ti6XeciphkY3mvt177-o*d2vZ zpZ;!tpeT()EyXYF7t{kdu?4ZJ#8u9`4&T65hp?jHC|IS8m?h<_wf{suK{4~Q*BQ1$ zz!F_wS3<^nCvvvsfpjN;n5wJ!0UK$Dnf`2oc>d(B8hM=nmQTowRIkH#Mb0W?(B$Jd zOHd{~Yft%7hEm+R)*){7JT7f{1nm1LMOacb27kspqWK140RmtD9k*SuK{+<~5WAxO z0;ca>*jd?47UvezuYz+XZ+ANQLg}{oxw-Fx_u|WeYkuI91tX(6ro|3(T6nOa*(cgz z9x=2zdDGzfg_zgD*qBz)X&}=bgxjvBnMy*QZT;}hFS70xD%%V`yP|p$v*@F#p|L$v zPtqnXpXB8l-F+&?toaAt9tRUrNV|NByY6kXTiIQ|dm#8M*|BxnHZLYJvK^J@Z7+QdxsKFQ?!&~mCi0*_QNh%l0EC@q5VMnnr;eQNA-SL;0DT=~D zhMDdFjP7j&Xrl5>x^sn|Y zibg%f>#_@YV-xymv*YlPc*XHI+rQh;(j_|GXH(+O0^HDI66q)Fzs*`fQj1jUvT_-G zR!t(vBq{v&`OCVm46+hnl7R3`1Siw$UN8oTx)JmSdkI_EH`0Gy`iPf(vPKgo{7JKJ zf0X}|`ktxTt`^eLVc5A>4}mlxBd+{FF1tV;R`Cbc{{q)tOT16i+BP>Q=$d_v*}8Ef z2?c4w@jO{qS{wo&V*1cz1kM^4G#B5OMO=l~KKTx&8Zm3x=}`^U%!o>^%Q|BX8Iep|1ohn_lSN`wrp$Tp)+|2No{xe5j*H`8AuHWDz`;Q8Wu!fz(#R@nQAs)q@eH``8Tp#yMA`Z#mHjSv&{F(je z`0_+b=^+ITHMLjbVYPwnv&hSnz&QcGdv7*0<$5CxCnxxK$>J(A2lt&F1COHo+&Vr) zw3JNo{JNpz0afQSVI&JJ)wqydiydHGmfd7`);vrtZ z)N2ydboeaXh-WfD1uVKQGw-W#Q=4Kn%S4E)+%q7^pI%wX8gU959)?@8?~&t`5lRVT z#5>a;Jcp!^IG#{Oqp;f7XF3tm|Dkc^KE1 zIj0lZ|JcS(VuHA+n>$Ck8nJ~pb1MAH#LSm;=-duQMSxe><~(Mp^KRuB1> zo?zU9$5p>BlhX0k?bW&NIViU&0VwH>3CFE@Ye0aY`_j_Q_IMM(=Y8*Slwn~V@Y%m@ z2)dHh&o{te-C>j1fYnG$`2gJO38D;NHib6vZg<=S%2A9}sS7Fm&{Q$>i9rM^J-^Iv zmT044m#%n}4CzW4*}36kTeR4iRhFN^~O4+#c805qrj8>yCFmQE7O zl_g%4R}8fgpEm#K5myLtS!H&+Tc-Xm7GM+#xnXLa2bX?td?EP`(do3Z?UVm;*>JO8 z^CKlQnEn;Pxo1PF8ii;JGc0uD$(U{y58Gza(N!^(Y~~JOU{Zcd=XjH(BuQNY>o&eC zacI64FZ#4gDV3Nqk1>I>_iD?NyFGB;o8Mxn%R#1ZgUKB&D9gt~TR!neSri{zm52-{ zqy=vp_a@(y29D+q2&W+$Jd4!R@bGFs^c2~VLkpVdz<^3N^)aPtF}s8mQN;HmnEHr- zn`E+5!sR{$XGiF$PJ3lZdCZ!(g@!QxjUG+-hpQgR+;b^~27fUMQSlNLMZ9lybb9N( zuQoa)+57&kZdkmOgX5pK`@bu@y^n-qvyIvGY91VW1O$04E)2zGgmd7$ei}-f!Rj1; zyExbdXSW~M?E5!T?bd1>q}r0D$4F3#K_!#glRxTF*Ag#b$Hm{gw?AvOc=%g>=?Ol9 z>`JGc#=n6Pa=U^tdAWK}q!y;Sb_Y>Pspgm|U$bqvkhQhgd#~zAaDVF`#W60qz@G zp$V+np1myl0l`jzx;s^MPR%w9&nyGDkTqacziU=yX#$Bf@}7o#V~Mh5VM5SODioUn zWjz~zmr!8&?q2W>?5ch3s@D&XKHUNwd~aO!-|hkE7aq59UKT0FF5_-7Evx1EaTK+t`37U8%oP|SY4fd1 z^>sVMkjwI-G~0HpM~w%gxMN8s<&YcTCGQJGnOJl^Xe}+r9DNQa%+?QSdb|S zaI1X0i3Y#C0ltqECQXZmtQ-i?Ey&wPb#24+OgCdIB|nmiN5pkjxJY$4iyz2G83W9U~$%Tx5efMID|GLCfQlrhQLw1cjbiT8tws_r3br#laR7 zHL%_MgJ;z%$!DLspuS-6W6di{rLaa6d08E#RgiDZV4%cv`uF4%Z?4$)ESSX+w7j~6 zD1cMFuwpcCQV3h)Qc*8d#KU2g{8ZDYoPy(i-kp`RVu)o>z43c}oNz1jUV}2-z*zR4 zpUsMlXvi#s9!-e>82k+RD3LzOQ}8cA+|LE{87#h9-1_X#6 zA%YH9_Ff-Y4_XF;rRKODgcESlEey{?OOM^Nt0U4U<2co}fTwZY*gJT2PAFyy-M4nK zU$8B&qH~y?aJ0;bY59Et%Te**@M@TNLVbo^{bx~$k#|vf{5Hq$!jg~-}`oZ@Yu;`I?xkKiJ`!FKqs(W$l0?d#!N8SQql#~bOm31 z7^UPVlNmUY%KF$5U7tf!s{K4C^`O2}Yi~UFjc}EtI4rnY5n7>}RShdVSEzG&MGrw7 zHW4DSqfkUjN_zN~p!o}(s8F-!!2O$tsyRDyCzkV}H|Jlw5Vu<~!uzq^p&kC0{=?sC zA!6tFnGxr^oiDVsc+akTX`G0Zxz4gEhMGoKQcP1s5lklplyx88nxxiD?UK0P2Hu{yqMeS8pYIN7tDk=3FARK6s0{=)yv_`?>S4RP%3|nfKRIgg_Gb9g`VQ z5x^A3i=Q_U@I0>KlaQ!2(R3x)W&`1f=pvCl!|#k>d?<Sg#kN*%Bv-dT&5SbHXkA)*t-njKXB45NU|qAj##3o z_%-w%>NLuwL1^dQOriP@t&m@*Rh>thWCB2{L)6oUCtb-A*~9p?!4P4Fe#>?5JT=ij zCBQR=Yms(0RB!7#&UAu*7QYEB`MX>P;N#7_sgjSik1wysA$H(J59+D6GvE6R7!}wx zJ8~8<%Pba){T0iHa$171!QJ#GL@Ud2G7z=Z>mac3OpDvB#OKA;}y_?Bd4-K4l<-0vulVWnm zNj;zXN}?@D2Z;C5bC@%4FaFHz@7SmP95=2?M(jRGBfA&(;^gMynnM6_y~{X(zCEm< zTM}fh1_4cnTI&zV0(9d_8z>}yZjC6;*93eh5oouj=(}VgUDfdY>FNhk-QcrV&2v1V z^YZ20!L%3nw|uHm1RNP^kaU@h^p#1t8pYd0ULZu0vs=q$`_kJPP;bWSWD43zz?Ux< z^)=cfDorY*+sscJUF)Vs4`Y}kXPThH4H?fVZ{X7uO@T)=fpcfKv<`Ba0Da?OHAg#VvKtc+KK?G%1fbvv@2}wK-F}BkLy#EwAWq=QZ^dkeeA5@D3vSF8tIMpVA zyQ#MMAmz27+&tXXV34z)FN5c>0m(v`ez0zSF!m-fT_q^)G>iUNz3WOT_Q;z)g)3m{ zYk?}^z`d|;L5P2wSOf4C$wy6@-H&o_J{;49!6hcFguLfbKo^H>uJ{BedDu9U)ZMR; zl||LA8F(5n$$db^B6Y%_@XrJgH)N-wjf|TyLs9mtbPO?zg?bQ`AaAIImdoEA`Eo+s zgpXb*ny}-ERjJR{<6NmJ{6!K!XPDkg7Ehk`^_#_}@*XN5qbdsUPdWe<1I=qrJ?q!R z?tzG28(NAh7`2H)p>R6Umd(0bbxSmHw|Zn5eI%4?Ms|Dd!lB6|=gU7YS}x|>TV)4- zJwT`O?Nl1+M@Vnl#ofDdHJ$0=p(%)QLViy><0DsweoQ7KKaadkSOX)U#pYjTNw?%j zT2ux%Gh2A`_jYUP({Md^cyDB9Ks_B(oA_UaNVMUK}0~l zs@;-MxjCpcCmX%((Gj5P?2-w$O?eFQB#<=Jsk;ZAf-EJWQZ-PyL%RmIu4QRnyB7|Cqw4$TH7>!YN>^nc_4S9>#w?2dXg84Eh1<3D{p>2r|l8hqeA zWtO@do3RnOFT^^l=U&#L06h&#DhEVl@5-zcPMb*@9SXu9j5O z$-&$3p^WDR2&BKnxy4r&(V88UBPqe3`z6q@sAi)@7)#+7Y_RqZ3?}w`J#98 z6?`Qtk3UZ7YbuDHTfOa#?2)O)W)e`4P`Huyoc|E-E2x@=eM8cu>sP2Lu9N9#n zN2d5$_*sAXhvsXMLp|>R@?Y#0EsRG`Ox0fQDdVO}r%ESRMYz9S#v>@Hi6VQ8ICX_% z*T@1R|Lh^3*&e}y^v_H-+8qc2GxlqYp(C)vN=E!r1JQzI?c^&jx zt6=!=&r1=6$+QZp8};~vg?|B#@A2(j)oK%{Fl%7K0M846B@-fwu^dHAN}*?fblAEF zvixcB{I1v}rriE*tSd8Wv@M*a3BciJE{dkJY04_=LgD%3i>a9YyP?K1?$X770Ctz& z$e}N_%X+eEVTHp@r9@P=1VM^R^P_JLl2eJ0Wj2W)oY~f^=KutqSfL0Ixn?7Z5Ood~c9E;sS$YdYs7Vf?&Yo z3jmk$?O>IW`WyrR#Odicg_pc7}OyvOsSb@1qwv#129{lH@+>pUwHuF zsB@k=LS`@#$M*B6rYUS?}$$0X`y%n^>&W zQ}jB_Q;xOp5ugy~0LsmGzsqAWX0le%63;z?7{VfMXLCJ-q3+7XQJlEp8tye?{Gpj$}SZeo77HYUcVHA5!OTEof@g)@a9Pqv%CN=w(8 zc#$6RhgXZckLYP?&+)|8?sgtrK7bw5y+mL?)AgaJSLNkzo?-g3Z%s*4S)lP!5CGrQ z72$)iABWB%&c8!X6~{u=OrN{Q%~5A<+?XrFu|&&VC}c`Eqtyd?&aa=M_! zy+%znHP|K{;0TA=3huPufcdJ+;o7$WzXsf5qhz{hP$BS40ph)@&Du`w`(`EIFaE7O znko-q%YEhIa!Ea&wxiNP_EMNMjO$TK8k^Y+$>1`aCvmK+pWMxT~%Y zq>|ojZi3v{#9be`c=#id_DT6?@rv$E8{@&yd>UK#<77GdfXg#{Lm;nh317@(dZDf@O@Ol zgykT^aQ^3H)i)Y_`Nb_OnPHd|=*oMEKXB75as=>$;^;Q4K;aJ+fvW{puYZ`W(ztvK zR#`mAN*sf7-P9q71wHJdP`W!&mYVCmAr(#x>a=74%|rjX^E-I|RTg6Mlnw=^76Lo_ zUuy>Lul#{fLeTdoV=2D#m}6$JoWm$?F^o&M2v47-4y2R)0)8QiZPjJzKG=D`f?#H4 z)BgKkDUjN>{e<(&GSuyl(D=^7hbfys<5wbB{(!EbAbl4e}kjU6ZEW|E}Sr9yYtE?4o zcgKZk zU>Q!|h-b9xq$|?%sbs)>&3c?3@9Zpp`>*Xn*zu}<2@wVjv{rKY{Ok&R_*6O=P5Fnp zTW{{DH>*c2NPn+94fbzH;Bgbc|AJxcP`D(6SGq`;(eh{5D20X6I;aP2et!7I6R?ao zm|!$syzY1Ei1dx8i=Hbn+1|C{UBs5@!jpq7YhxOAH3_@bM&#Cf{DW z?t=T|#{@~oSy!DMmbld8F)UYViUYux|JHImF|mabQG3U>Gj%SI+9+YUTl2BPv?{(E zqICZN7T@Anj9bYEBxbL}udi;=UP13TSl>{TZ6Db zLIQ~p@$a^(f{ma0R?Pbp(qOu}(qhdp5z?-O1>1n5T~~()_8*Yh?3g|6ouF5{{FE$ksj-ZeXLG*g zL#vp0w;7lkCWI`|`}-hCikS|8o@mU&2-{L@H&sEr;kRBpm?rrXMx4@_CD4>U8afjf zFb~C$vCz}dM2P2*2w$Uo83}*u0XS(kC&~{1FEh#SrkF6b4Ah1!kDR3Yd84;IIN=ODozCoGRTnXZL#^goXS> zeh(q!+VLDyxa{L0Vl24?2uuk7YfLO@pVyD(lcmQ{61!`9p*>06eA}9&Ij4Qc5d=`M zBx%($?}^;8tV4%=Kqz6)8aFFvKa5$OGS;O8otL09yB-5bCk!@yrkPV$#25L!UHm z+6E+XD9!I?7`&BK62&-lec4n4ehgw-5B#MKWYB6a$>M)s$zDd!tHg7%C%%O)rLW$w zV@8^0#EqtDM9|GRL0T0hJEc8(3p!*8tGw!(MoHCGn_$Mk*njf3Ip;a~njMQH-f{bB z@}ilE-3e^!Zl(rcRBnzsd}@U5nsuGU%o+Kq@o5jf?ZIKB=@yVcz}#^vP$-W|e~Rve zkCy&HLA@aU7wCbu2HH$(5JQ_4ME3WAE|_5~o37s5^{%h?l1j6zNC0`0F`jDGfSXfwIezvxqQZM#}e4x04?AQW- zihh}XEODUh%2t@r<9*H+33zOxTWWNH{)?32VL6I+b8np%c5aXUm8$!TT``!EPtC|cf01>JLZ54Qn3n(uX8emHOPDX)J{pO}R_$3n$MNeR zTFPGHUYUf@a<8{Y6~JItzerDf#YDPK)i)|3Igf4?X10kB{QX`VNm*HDJ|XL&bQU@I zw9i^(T4JR^rY`hiS#UtF?Zj~TqsnxxBbh#tg8slKd?XKdezhw9S&rkxH_$B2%ByGF z=+SV`+UT#o60g9kCu&hGyP^@$gK)g9pbz6nAMUULKcR%^sBfOQBXM^0R}?{hT--BI zVW95!mdbXgjm%7gIK~yq0dlY4Z{LAWzxV>nB3uK~({!UI%`sKVmVKEP>+Mky>5r~+ z+Jk`!Qh#qr)Q^@uiSwqdzs7%ENRP!F0e)Slek}gM=LMGCZHs|Nrs<}-E=k#S0kggIioB#C!o{>6}geu0Q*Xory|0KdmgA%iLTqP$@cxagd)!C;U`}^p_-p&zRg7 zu~L^?!z?Lw)a-c9XQ7MA@lr>NvwV!UNZibEkkm1Z5gF1_l5?e#W)VFGGxx4{add9H zbrLG3H3}_}jEwQ=iqg_6dIonm@#`UgtggCl~26#Aq_KzHvjp(0(dWfh_08WU6t( z?y?np|C3rf>NwN+F$JIU38E%-<)Jp#-C$i3j;R~G%F9-kMh2Q-2#mnx6y&C+27!~zKQMCJ!@ zkG%P4ww5KeiWN!(kRYkpb=ju()V`d8*nHs)JY(XL7yZIJ4+p5ZXwI`YKxbN^PRPqQ zkxyC}?Tu_MmQWG}U#tCsJ88kD+cD`&f%eyBGIqoyVtbiE!&X7?#n9(JiGEi*pGwiG z`huP@Tl3*aVG~gzGG+{121b?~K@=^JDqmTE%si`cN9d6r@_Hh93N|Ghr)ts7Y9F!D3tBXlz7%eyrtab$b~ z(sAm~;N@>UnzVvRgv{(&w2pGy|c6HGt1uNf7#;LNIC)QOf1p)dWCyw&&dN2|Y5 zAaMqQY(T(+D1a%qO-t4)+IlLLGEF#t56+_4cfv*LFc{hy^}Q<`VRl7Vz5FN~gFs1i zTE{0P^=Q_;E1u@M*=ZK3sB&`$v;bo{{wdPv-+i*jqx&9UUBF{uehR_Y0}ylmQ$&bv zg@_361GkPUuZAvzX>E`%v-GberU zT{kL<@r)oi!~lIUBulg-uAfBFr=VwK%PVRSWP|nU+DZRfn2e~&o8i?~{HPRMeVG>ez&YgJBWG-jH z@myW#olJiLmZVj*(bdc&0(!Aq!U|=e`+RmBeqDX>ewW}4IQYbI*K(e*+F9)B&oVE)-2WlOskIidIrQC;lu3LA2F9tJpv$K# z0Z2@$WdI3q0EFz-yXTNQ$p;oM_&FmE9`$TOUbzFqIG|(&t1+1htc*5yZ5iq|G!hv1 zKqsYIf#h^&D&rKO6Mk!yb;X__m%pwz{LQof#R6m&#R?+7vc;udz`sgWUZVDx<28fM zKcJ=t7$wdfk5L0`qur4goCCN!y_bsz;nspaYZD;p_@tyv^?b_ma4g>dAX2i6V>t$A zc#gPZJT1G=qpVA<`u$jz8<=r(<`V*Z8Z4R}x8UM{FTXFJ+)jUSKg(aO7Et0Y%U`8o z8R9hG@uN%9I+rmV?I~Yg01h=R5e)8pA0#XO{4JB-9ag$fMpfcojIqqh0@k5E2#w2F z4R5xmROnQzH|A;6OduM6lKwhs78PCYM#f{IdzthF>^lW54x`8WHi;u)2J2%oQ9kM8 z441SqhP4&WZ~4a#r1J>nYl&>vO!cnP6F=bbuQaal-c-UB^kGQiDWr% zphIv*4K}CW^3DIe{oc3F_8yX2(~x7Yh7tfNauswh)2%SpSpF`HT8AswqwU}@o*%r9 z9{0=-`)R+*(ntnyZ`3XEqBpZtsr)$&R5}5LSx^e#uVl70$;Q!arKNS1Vqc=v^@#U?UEFlG)Nv)a1xB9gt1|1ypwp1IW<_T3J1m z8yW?Fs`CaJYc2R5aSE^bUQl~qizHV~sA-Z{vrjOfFZQo;eUXy?2Y{r=S#f?$W+zRg zldlRtLK`0*nBW{KcNoqv-9p5uSR!Ju2khOZT>6+Y_@W2I#W? z$xk9}GKf)s4!&46)Y09fHghOSC-!cH@b0V-8Q5C?GF`a6BK)^fh~gNrk2vJyRd=;jsWO_e)m{I;|D8;$)Z>{C8_EVb zbM|c}I7yzi1n<8O*IU!ExNjQT)RAvCX$T*hwyRd+~b!(bm$ zuI{K97>wXj$a79j=wSoQwLVf1(O3lrT5eEcbKNhhWfx}w2cO4CewfxZ0KZI1_1IEf z#{^$YqyS+AN-aV{LO!=@+KY@C@N!g|i4~kvuDm~hRr>0ygFI7*$nV#XE5BcgQF_kE zwRx2u>PM89<491IZ(h%7HKA|z|ETM-K?Oe#+U2fJ9{lXW2nq@esmaa7r3P^Le_L!k zgaC^IMP7myTlp)(i$EydD$#%OTIeeXe}|u4DTL8&DG35C@|5czPmBT(1?dlcmw5&; z(2&s$ONg?;WIwNy@ z`+ZIB|fZv0=dNjAQ-^S()-h%|2^gaPlgs-iYlN?wEk?HQ`I}OO_+p{wCi!>Qz7ZOY&&q&Cd+UBh+?<}V=E!oL+}Vdt=6V&yWL;d zF@O(}a_CLLG*g8m0qw!$Ta%Jn!^8#R2!J~Lfk|b&LrBi5{Flz7=l_@4;l*z2OA4qL zI%Ix9Md4&2;&Sl+6XLN7s7C{^Ts#45SOM?!VjxFE2xAC&WZl z6o~;@NbCp23&5?R;+TGKfHW5}awsAGdK-Lrlx0>8q8r$y!T%qy1Ha~vcse1k(-Zn) z^_Gsb@a32@z)Bz|BoW?P)B;dTq%)p??Zez~0e2>q00p*W>`VY~b?}?UW%^^(2=d)I zLPY=qH`0RuTdDP96r)n8d^6{LBEs{0htZxl)^`|(8r=;VdYhrku51`&J9^J9tLR5p#*Kd(1q$ak%m^e^M+bmN zW(t}R-~S6h%)kSd`j`h;gmR&0GJ1r6e#*k+CHLHj?HSeQ#clAkyZGEt#XGK=WpB$8H#Ih9o$Qi~oK7`&_b)i-lV zMux}Yg98yc5z(NaIAdeH-J)#TCW7yHmI%p&En)ufWRXyUaPvzg-zV+@WbE1ze29?g zE-=ljLBis`-P@}raRnnp$3u$_%#AiiGDrSQTf$y{GldZi($Pirc)zG4b zTTaS`plXCvBT$=Lnj(CZ&9|w`!Wbnvauth6TnYB+s)E5weHFOfZq1c+7=+2;(-lu@|D$Kp>ySb;AVsLysDUPR2p;Y#JfZY|twfoaod{b*LEF-zT; zl+s!=bhy04iqtarGGZxCphN9Sc85AkHQn6lbtdbT0LL0=fkE?~m8ZoIiF3e&%qzMC zY@vanPd?iaLYl}yY2K~9JiR5!d;I0R!5gq%MB!ve7dc+ZPw`$%QJRpPPb~I*W&fMDXw^3f|a8tVS0Wrg`eEx9TQ+7kf97xE~Vp2g&KlXswe=MNFZR^df;X(t+1VK6<2CxZr&u z={Flyd^UEgm>WFNQJ)%Wd3qRcM9JA(7n0gkm=whdTZCKH?_>)3--_I`^u|QU>G8CN z2%Ee!I`46Jy79M7=&9&}eb&Corqo?o`+bg7Gcnbvdedg$AB%eXc#XI9^Ml6Wd#*#!IH%8a{P-W00CH??i1FcK@Y44jQH8(#UF*NT z)_QD~m?UO5h#9>)j8xL>?Uf_5%n&g9NKd(-r6m)3xDbEoqHiQ4p3t-nvALMgqw$GFeS1~xyuY)nW-Az-o0xoC9m&r zjm{-Mn-V?uUUH@uy~Y*1K6c4mF4|_nq0)}=0 z1&3N0_D}3wTWEqE!he@1&ww_}#j))2q2xSdRD9{fiQ?3ia?7WpaOd5kJ#nE-S;JLn zQI21j$XAY(5{tc{;|i1SDYx^_6-dIrwh01IgQ}6cja>YUuMAt>Y=R?r{V*lgY=0^xx3*@rlQOq;^ns2fCPW7>CE_{H{ zo6Ft+*T5UKS#J&zY@S(gea336HPRzgY3uJ!k69@OsBpUd0?&M7U_P#)A?hIPhueZg z>Nh|)kS}b9QHq$HrTLOzAv+7wGy0Ny>xG?rM#?=4 zJHqlNcaiT_4HSAGG$*%Ll118`Gj+?~(#R(_Bm$q*Wsa$R*EmH*|9%}kre?=2e)H%mmW z>7D*9)nyoVpKH_!B^eDsUx-?iKvH?t%zcs}>gJGvnUlswLCK8<^n;5-ZToyuM~{@K zK(2jVB;>Qp-o$?XX|6dGKU)~#Fq~Qm$(5!0jn`<^S46NR`Ki_KI%W<39&{_1C8ib3 ztX5u}`zGDfJu822qw%v)`+creK~piSf*FY5qxkjBur46$<)wb(WY^}vbDu0y!8aD0 zdKWkTelvKR`9rjq4b|neCH30E=b+@nRikyEC-xrm@_r6&oLN{cDsd&vxeC-|H|s)< zez4#GQ}QA3fR{P{1o5U+deF`-e=hE~LhHv*m=v-{c&G>eG&D6gHB}<42vRgGxv-qL z-=Tva2<6DX95GG|p6s|U4*?|!v#lW?0vROiioFQ|C3zhEYSwT^FmQWTRwibR&GFg^ zVD2Qdm^9t^1rtygm2pmY{BJ@~qQLfNCQ16>vQy{LYD3CZz z%HO|JW$~8a2)7)oBcde*%h~_z#Cws3pMyzxu-EQxX4Yo@*x@%U`pi((?1K)LFu4Ca zX3`$MTN&icsKnJIpU*ZZ=(PWoTYb~pt-$uQAd1&*l|n>YxZ0^!$0HQci$an0GaA>|SrH+5Zq)c9 zo>%BM(iL@G;%4g<5sn%_W?ZC_7hDaAXY0IcH+{e${Qlw2@1shF<>f#3O25q=8>HST z{=K~~d0k#V?+k6UGu^~Qm=qr`Y*530>!S+Z_Sg61Fz*{)Ed9AEPRdz_LZQq=pWj*}Z>ODc7)PzuvICZ{6xuG7(ukVAA)rZNznJo;wS>E@#y(RO_0+gKP;G zanL?MN7YoBp(?X4r64+CLltM?{?8lEvQED+nF2upk}zvL>WGpG0s`~MqgW7KzN{>s zAb~n~?C{M@!*aVASLpioC0!4_N54a$#nyqbDj1$VNsz498 zwMgh!14_N1I}-)FECa-SsoXIm(P0JC?zhZvofzK1#E}{yh{P!nfvYzZFB+W4pef5B z6xZM(9H0S1TrE;HT6tN;yuTnsu51ICnSSY?qd@iP1enu?s{pAU?~ z9oOW_B$}C1>}F*t-@pIkl>hMJpG+Yr<{5P~*zP!E?T|;VDRo(Cba0lfY?2P#xjxcf zjhiRy`Z?y+e&P|q$}ERI$5des9Ml8sNNHgsx~{&7tsBs8uEM6ue|^!I zIz>ieWbyYQD>+d9DI9ZqkWxJ)vHd1uTcWc-qo^!0aG&>ImTVBZ`Yd2|KZ@vK(ry(2 z%{a$2q2}vNRoo3}4=9jpb^gK25zp`0+Wou#P1n%WS7-ef%1gn2NH&Rf=_0L_ZEYv- zf+R}wr+`SgNwr15?_AxrbCS1)Jq!D^VixSKy9=$)f9K~1hAQK#f4q-}RBO zIWPRTKR$~n_4IT@yF-!AQBV{2e)-M6Je#xH8o1HBnMXp9MjQDUA^EILnX0U#?ldqx zVHl(sVbbSbxcU9Ia@uy$1kyYyiUVgGU*dKiDV{9gN^Ap)Ny?`qNY98yJ5-y$S%O;5 zsN#1Z*pQ!Ao-SG>AGo(RRP zbny(|OHK@l!pLr{+Gi0?$lq0v$vwH$3ijs;lV?1cW>@>tmQkvNOB%Jo2(4%ejwF)! zUf{9McBvvb9>Br~JSI(k5|Xy0rkd>>dV0Rvj5^)(=dTwaA)d+jh;ZL-C4tB7h!6za z*LpHL?~8|rQ~&M%Z@gH81YkoiXV+X%Te%z<5*`cPMtq>3u zHDx#RS@F8#mTw+c>)3A==E(Oq*wUyGtsM}TGbz^QJ9@q?^{|6$B#dGBMPmH>_+-a^ z6Z%lwDPED-#Fp|*okl^mTA#kVy`4@~J0zrarN3si3Gmn@gKfV~;1ko?)CY@xu`K~0 zn+7UHBT4YK@La+)OHwN-IN%*wBtl0g=R%&DZX%piK!u}m5L^2A5 zJo)b-Ri+jvtIJ76m2Mnkn{dEvYxKF%5#O}$Mw|o6630A zEWhcDy|($-);uBqdBA*llCF{>%D&~}=Vr=Y?NLeVljjHu-W~1wYbyGjTPd^J824RX z9+s5t)4UM>ov)29b3U@=pU3dWAJYmwziO5TN1mUDO>%aHVd)$3^3P4`_h_8m5M+aX zx04m&dCa=_&T~X-phatv$aL|EV!zrRD(_OiOc1rL+i0*zd)|h@%=_Wlqg~u&g~GMT zvcSJfmj)6q?x~@I<ySBfHKy%sz1J^$p#QFzBn$+4=RBtk!%z#)<4 zi?xh^635}ZxqL>dh{;m9hF0nPD9{4nJpHVRW3HMxBi^(!^!(ck!K1d_OmkC20&{L` z@#{$nVk*YU=GJcfaJ{4(Ya};R^ZMkdXsM?n&jJnE({$Cds2+BKJ3;#tAl*B8&KOLo$hy-pUp zU0M>G74Qs{ViWEiX@&Dnbn)OX`1E#kMb3&sG>A#VL%)_rcaQO*vnN*^-s+_+ zIx$5(ihN_*VyY^yUTxiKUax`sl{bd`SEre?9$yl&9Lk^}I{mE!QFJ2;ml+~;W&~t- zd_OK(z}gt&JRJ3`tn$`HJcm+He$ZCW;5T1w*14xC25)aI@yx-$Vmkh7uBHAwgaYa1 zbul#NSS8ZxkvoK-dmE(E zLN%F~*_)u}1R_c7GiLb)SISg=Jz1E(I5?ZW`K{qq6!oNi+Wl>wE*xz!trE2%kC%5m z@O6S4Dxlwu)RTA+&8QY2!6xgYHgwySfCBw?Xz#Z1?8NSKn(3H|2=)cB%mxbz0zmT=b6kfsU2kK|KSBSBmZSNSf})X1uzd ze7-iAJ5sxKe#Bg_clIo$#_415y8m1=71_>f@5eBM>$6&WpIc^F|5HJS2;?+u%~se* zHx10tk=(f>Z^`4T{aRgJ^u*IBJ(De`uF(uVpsw6()B1BSq1AU$nE9tc(f=XqD}bup z-meW51cU=39g@=B-HkLzOSd2)4aT7x32Bf9>25tB-CcrocS?R6f&2Tzo6#HF`PI-L#e%lXP51PMEZvA$&#aaP; z%cP4K<4D+`?&#qvPf0M>*|-5TVCC z|I}fJCG+Nc>f`j*ukXT;2Ae44)V6;vB=Jp1gpi_cee4Z2$L~N>MLz4E0yo%b-N?g^wk4Bv{Wn)6xIN^^3tg=h{E!p z8xk`uc>8j2c4gWU{SF@L=pW}kdLQrW;IN|A{rVutso*uk)UI6;jj+%595z;Kidm?UvDm5*AH8gbSr(Nzs>P`wpXq#VS&X`(1W2j zZ{GX?_&tcDxKF6VM$j>WL5j~m0Joy4xT?IyL)*0ri`0$#e0>bDzExFKAkzr&Rb(RQ zAnpSKu>~4C=mPDbtYnK=zvgrcJcSLizC{I03xH)|UBWj(I#?AXAXo2^?(q2Ld*{!f zg|yyz_uGqwx2^W*3XW4Ly&B>=id0h_8HjWSaDei_1nT`y>=Ij3)wdZ#lTVY{?eLyI zcLaT>U%z4tNmBeUu|pXy$`JXQjU2_F!QPwC_zTYfIzlsilFuRzVmv73z=XW>q|~V0 zpmf(88{{Fp>SL4xHuHgjX((h)bUjo89{Efw%Ro`4_@ThYyWx2c1JtyRW&$T|^@r%; za=30wk&q}tyH&Fp!oTa}@QceluyFU|CCK;agFmGz?Ewyf>(2TiSeXa^3|0T#&Pr@w z^CLyJE)DTp+pUEH@@hkbhY3h1HP6$CfrBTEC0IeN!Zyo^-WZs%|N9Wgps}G(&XdU$ zadx^2vgn?TwmOxlHJIn(rQ?h53pFe|wUQQ`>6Ew@(fs>BdrN$03`k!oaEH>5A230u zD`276UIWi=|1L#Z7xLVp6&qi87N~J5(puG`f-;@;Uoq5WVBLHn$kM_sG<@`%=@Q7x z)zdQ+)m%e4UVEYF%i1J{TtAjzGrueB76^6TBMLVH;aGp!G)p!&rTGi|OgJCx8KT>> zgQkZ8`v9{_+_RV3rN3UcAQ>-Vdwfp;>6IdvpTsPOEo&^#T0rF6dN{eXdiLv#k(Tn# zo&;_Rgz9|iCI#6$EC32M$yX_VwX3xFc|&OT$*u&-)_B!>b7A36AQS`~4H=(80%w-# z3bLCc0-a7Xk70CwoMXI|ZsXjLKdA*-^K3U>|B1y>qv0ds$|&mLb)n1dljUQODfmOs zEp2HNx3bC!Okd8#u&TCOX3G|O0&)^INummNLIGg{)&`A0Nawm;e=NENm_;JcY6g}QlB9l- zl&Z5cUM+%8N$`n?D(zMidVZhro}9elyWha={-!r1-x4Hiuxx07WI+(q)z0{y*VQ@s z<{U*uk_l9Hk0Y+*i|ktv=)4&zDV*TtYb7{T;wQ-*aQ!udRO@K!MXG8FYm{o>Oj__| zfK!=`6-aZXRFZrB`Zeg_eE9Go6@ot>Wm|X{1OoA6eCz)h>tdxy+5Ff{;)!d&J!)S*$p7yIq3SibY*SXk78R{D%rh zO6AYEFqlkTlfA3b@*HO7f%!enfdS`YI6dNzJAezCkd0*qL`xOWDM+qhtXTI!_TKzh{7DS`dglWdfppJ)pcpV|j07pgs%~Jir;t z1CS$tI;Cz9D*@VE#E8Eu)0Tfg1sLpgEHJhW0y`E1O@2~4RQdT=S33?`eEsNCZ|fw* z=C=dF-XA`Aczci4oU7b>Ud1+yU>_8tq*|pRj&ei!Fa6UEw27>z8|3JQE!cRyjv^~< zc2y52g1x;W>9p8^FDO8y_-+6E0Hs+7cI|I|qc%u(6)+G05uj?$@YbIE7$q<%I z+In%xcPV$i-s+f#xjLQl%3V9*H=$7o6qi=B&H>N_pxLhxBx!)*_WFf2pX0^*7mb(&t$s*)uhU%$PeD00L436)G@N2P_%nLO}RdAd2r2r}sQTV)x5Ca1Q#gGbKTRqa{eTaqkO4RbN`^ku#XVIu^fzq5eP#_+ebzL~lgU zVBsA!>j{4n;c@h!bqf*g<)Y=~sQ}FFbvhI{Dl=!lf&*aR91+6qgr%%sit$Z%PDd}6 z0EW!oy#ks(+<_E-#cWy0W@i^b_K%tXd3Ooc!e9x!7)hnP;GPN^0g}M(0FT@Vye+a@ z!Ap_zcO_;Pu#02hih6-W(@vmVB68mmGLxiix@J!z+Wi89y+@aM$&%V#$gdHKVn|DvEfcED0|d5$w!+!0(Hhs()&u#M@U$Oy0wbbSeaMX&Tv;L zbFP*@cq6}|8T*VnftA%vt%%Ze)ohu=-conqfwnivGo>scB<*ACcr~~EJYuXol|q}! z$)}yKR=^}skLID1{s}1668Sxp{$0Q@o{waBHcDznPkL~lKPO*6_wsQ>@K$kSkHL5b z65d`Vj3l8sMgCT{tvPy6XKp6LJnd+P(Uh5mHgS4D(mhu8)+OInt`yD}pQ}nDlvX#_ zJtMcAqdxCao2=&&}; z)An}rSxd{Wxh*kf8?JOEkjV$GU05x8GPrI_Y>$UQTAZ-B#!7&X$cnb4uKfd@zz&&b zeOh&145LIj++BtUhp8SguCiW{xbcHtkh^wRB#iQ)j2x%1mn=;pm&qwo>gE{$ zEg1pV^SD#*i?t-SA;!*Zy(=I?FU zb~96x4l_YDNgPo_v(sB4h@Ih{O2^~0Es)$@yYVNnsbv(0tn4AcLiOfR7)q6YLXAwH z%ZQ-MUppVTB%DNnAO*wmt5hWuX|pkxQ|i4?9*J`V)}I~;gi|9Pt# zDJZe~D3F;(EBX$2tMt2S)-`cYkJAkiY~!=9Yz3?h6a!S{=CXHG0cY>>DV6PhstqeU zn>=S<+o~fw2BFke&LQmouK7G>5OHLlvUAX>{oA@0JOc-Tz9pQdYjgI0n?%?R07Us$ z0ETb?e|(IFcoaFjH?x7l@x%WeQu?D+VEnnbkz@EsN6S|qBo}WRBd318&ei+36SD5U zR){N!qn>Lpuz0}{F`NG{c(B?SSj5sbI9!g-(GdSi9|%?6RLk{!7^$1nF;X2!w9D+I z$8>ujK)e;DY2Ur{t=gAaTu4&BKdK97mX7B3Nd!w9phO#5{mlXcJoyXuG%b*t5{Ifi`+SZSw&~Qf0A?F5!lwEd^pl|$2G0!=*iz>HJH9M<+_P-O5;%XQnK4>Dwcy8q9awXdA8`1Hk# zte{CRVGE~TwaV0uqJ3WF@L@D9@LL0M((PLJW|5X(+5E0r0~tqmH*HI4zztdd!_m*B ziEfiad9vq*mz2Cs=7K+AzqHENUC&p3YA9beH_l6-l$lLt0JxMS7KCJhfh?q?XEJ03>HuF5M;bbsvKDoW!)#WRO2z=qLGH0)_8*Br_V#2e3Ay~%ugF$jV zSpkNUyi1Z33S&vo+&D^c4c4U7<6ZwTy$KMM`I(O%Jea-lYPFvGfBrzO_FaI@2oNkY zg5F?I76Ew)KGU@x1Sq=VGJ!ijAUHTN(k_QV|I8T>3jOcAKn}0VaF!Ti@t8yzOAYJ@1;lErAEbJ1{bGIjm7I+}`w+ZoOUq6+S4~SWUXHxsD2f-8IlKf|@Pj(I!w9g43Rb zkPJwm02yL8cxZ`{M)S2=??$??gO>2Oh6sxzTS`7Cvuk>}-q!vN1_pY{ozBEV*j5Do zTD}pXO|!^Z#0nn{aVuK{{=S>9F>W8%k_86JKxPfhTsp z8^dzC7vR@fdy42t^w8o5c2%C##uQctIB|dMan4~GM)@B12@wf3w9fAS{h6NldRghPcqmsTGrSugUozmf%6+$N~8$wfMs8&g#TgC{A_V zbi@F^sMzoL0G{+DK99P|CVAmMg#1-6A6Y=AfJp~fJdkAk$ps+e&7FPwRF^>bZ^nM( z7G;dN>9c`s`_0vE;xbDj{D9&W+qd49?6`r>Irj;+oQ(@`V?!b4JkY*&0O{_^-@ObJ zKMFO(`5K~u+4$7iWaRg*(je+Q%veGpS0>qvJ26C%a}5wk=J9TOZ!x6i9g|C?^9uhVdQ`LmSn zQ?EbKZ050dXk9-YObjH=Uyi&jF6v#?mhP~Cu&(R8)-pG|)t9OnBG@mfu2No0Tws7LCbKH_;CG_Th)0fyHQ@0VY_9~q`{l5~4 z>KE|1A3PEK8`V!-7ONu)@`rVU>Y76`YyOmyqZK;7VGAYx-_|)Ke65fPIyv6uIrOy@ zp_yGDG#^-E(A}l$=yyoek4%v}vAu#8*dHOTe%Ba^Q@Gbulh$q}ufKAVPJD~ipaMFzE0?<<8IlAE~ZCbAT z5Ugihba)uPzO|F2W+5k9)(P!D^an$IMuuyx7bo@{I2g0Kw!AMd%~9AJi7Bnb6``yH zWfAczguCh%m;^@Um|~^XpDHi_=(I}mxGIP@)O$lmD?Vm%!&*(}^73jQ- z&$8tXWz6lxNTd3559gJn-{}0q2M=_z!UY$lZU)(Eo_Abs^z}mEc`T4mD zYu!?}R&k*=YZxX(Ayuh+V3FFi8`me)v^U{(se#bJA?3}SB1yelfs%TzlrC*Qo)Nsf zcZy7-eo`NWCzr*&kH#*c$q9|h9Z6z0cj)TI+cPYfa*403M*T>>pQTsh{7T%U9epZi zavnzm0t}va0Tuuh&=?E!8Ir|H-T{%XIZZnbEyGE68}bK1GVi0(muH1fnqVb*jf7EQ zVJ~jZSaEj=a#{+)MSj!$b=fJvj%_%2>!@Upka z=7Pey(&}}w>GG12G0pJ*AT#H%9$==mGd9y()YNzYsDQzT&Q90fF#y{DQ2^Jy=+~Z% zz>^9{&|QHY$EVMqNl8idTo$8%p!eFo-~S3o89|l7@Ve*^FsBEaTYO+<1H21oS*26` zoU6RXfM4$=D&GM_s$YNGNgGEHF?mK!c>WukSo% zn*~s}12l)31Zc!@(9uhPBdJk{703h1046fm<_Iak>+ypkm84G=u$M|8_PxeekWA!9 zo;EdCot%*R9!2M=keY7!bz=4A@eocm?*C~JJwEBmnXg*8|M4S8BE790rLN!BFqy}$ zw6rV8dAk*4bI(fmx+I>MvI0yB9T%4y8~{iWfG~dtV2htS=spM5Y7^iQxT)B11JL%6 z^|OV-$LxnuR7U^=2g(goAmIe3#7xti_UKx=-%9AV0nk^82inAv4L~?_?G=`biZcz| z^=WBkxAp*dBZzbDVXg&5`#iO`+>5Gs3Pk6iM*uuDOO%tKTk~o}%SPxK&_I=f^ZzvU zgf@x8dTM*-<>lGDub6#Su7$!&dUgs*%0Obf<&neUVkQKYyzxI>IfmES-C*Wuei(l! z{n;~Lgz}l|c6F?7X;9`cHq3#9n0OYn0g1i=;Lvr?*dL%khS-FeLIQvV5Xbg|7|@zw zA6+dZ2y#o`0TvBG0Oa!OhETo16Xrv~V@H-~#dITnybC&lCTbjM9@t`myp3x=Q!_~f z80b212Vo7MWdcI>Od&@z@spTzSKMCKEpkkr-wNp{$YQ1)Jub~~r8z%gf0)|4h_Fh& zZUF4+LE2(lEXy)@?m!)9G5v_@&{iSL9tE$O!6-@KiwG=s2$imqnF3_GQ}mhEejMZk zT`{1sC5Vu(1{A=brZyw#)vN7>YwS&f8sB~X{rTVU>-Wff>`bX!8c|pxw-Od=!@~N1 zOTw2Ds6gSk+!@oGum_MT(CLGMfY6r}@G%Pu4Nb97mroSb@u7O|yN^hKZw@9dE;V^F z9Q%v1DtvN3I@kabT

B-ahr}@Kf3W6yBU{hOBK)`-#&LV z13AYT{GHjPj#{&P$z}BK6b5KyU(Yc*Ijh0|mird~n!pGIa%~+`e2pkS0E?gXfsDYo z-s`-bt=esR&9W8H^TYfY*KXvy#&xz-I=j&Vh|vlJ7tU1p5QGH~VJ7p!Y5%Q4f@tV>yLF}gv{;$Ryjxh|+zM^L15u~SRw(!h zGBRtSmf0&R(x#@SS)$xrz{0RERfr~-bf$>fwl&rEx12>QF#g;!zIEBm+*}-6W9>H{TS05Ivj_6D8&)@I?!gk zZahXmRBei3+MBr|o4mW!G@(sOD7Hob+teBn-dJ7lk(jA!FkE+qiz}~TARFQuHr3YN zsF2GO%M}8-GP<991gMPDHI`zBQ~J0Q1JbKfiQ5QZyJ_%EFuO9Kh_@VJ?1Xy~0#$w) z@?DqzwwjG_SBZ)`{XRA8=kCqd=!pI4v2WjDy9y>(e(;$xn2`8w=^qpj&@{a=m2RW^ zd{cw85j0ynAPiI1RvAi3{;{*ZD+TQy@Z$d*f_gjh-d3bxK~f*MefpyJiU1m;%6j+P zg}FFm5EowtTLsM6bQbM*`B%BkH2rr~meQwh4cc1a+FeN7?fJkLJ;Re`pS|_A<^!D9 z*IL(({544C+yDFP_OR=epnn^MAqN?(P@$QN2pWtk`feS%_&i7Llc|f)6|Zqk>5kTx@uF-ie z(1Z6N*&q$Qcw znIor8jYUd{3_Gjtx9g_$u>OyGU4>_jv4l(BVdw8_WP%D4*qaTuB2)NyTb^S3@`Tgq z9zA6XQg@IOAl?5z=o7pZY~>`j@-mnhqvzd+Q;Wl`qWw}xk3Q6*&i<7m`ShVTA;T?I z4kFg`MF@x}W#=DvYyE5G{CC%!o-Bdl*LiWMWj#P4};#VuPRyOYJklr4D${% zOJ}k}PTjuck0Vp%#u1%3`~Q?u5y%faQ*jJ?Bm&(Z5vmlh#QC>ZplS9`Z-qYv5Lm%6 zvucIEW`EPRy%US-JVA#p`)p5Jq80#@K_T>AxAxr@?_cEI7>2}|l6Q--%D^(EGAgX^ zJE#Y#0OB3SN6Alo34-tOM(F_oev8CR2`5aatbZ;dXL^>SAFViR4B*gV+O&x

+*$ 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 E02hMjU;qFB diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index d0e7f50a213..2c581ec6aa5 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -267,8 +267,6 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo isSortedByUpdated: () => this.options.filter.sortResults?.() === AgentSessionsSorting.Updated, }, approvalModel, activeSessionResource)); const compact = this.options.compactShowMore; - const showMoreRenderer = new AgentSessionShowMoreRenderer(); - const showLessRenderer = new AgentSessionShowLessRenderer(); const sessionDataSource = this.sessionsDataSource = this._register(new AgentSessionsDataSource(this.options.filter, sorter, this.options.repositoryGroupLimit)); const list = this.sessionsList = this._register(this.instantiationService.createInstance(WorkbenchCompressibleAsyncDataTree, 'AgentSessionsView', @@ -278,8 +276,8 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo [ sessionRenderer, this.instantiationService.createInstance(AgentSessionSectionRenderer, { hideSectionCount: this.options.hideSectionCount }), - showMoreRenderer, - showLessRenderer, + new AgentSessionShowMoreRenderer(), + new AgentSessionShowLessRenderer(), ], sessionDataSource, { @@ -306,18 +304,6 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo } })); - this._register(showMoreRenderer.onDidChangeItemHeight(({ element, height }) => { - if (list.hasNode(element)) { - list.updateElementHeight(element, height); - } - })); - - this._register(showLessRenderer.onDidChangeItemHeight(({ element, height }) => { - if (list.hasNode(element)) { - list.updateElementHeight(element, height); - } - })); - // In compact mode, expand show-more/show-less when hovering any item in the same group if (compact) { let expandedShowMoreElement: AgentSessionListItem | undefined; @@ -418,18 +404,6 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo ); }; - // Stamp data-section-label on session items after rendering - const stampSectionLabels = () => { - rebuildSectionMap(); - // Stamp each rendered session item with its section label - container.querySelectorAll('.agent-session-item').forEach(item => { - // Find the session title text and match against our map - // Simpler: we'll set data-section-label on the item via the tree node iteration - }); - // Alternative: stamp via session resource URI stored on the item - // We'll use a different approach: store the section label on each session renderer - }; - // Listen to tree model changes this._register(list.onDidChangeModel(() => { rebuildSectionMap(); @@ -490,7 +464,7 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo collapseCurrentShowMore(); })); - stampSectionLabels(); + rebuildSectionMap(); } this._register(sessionDataSource.onDidGetChildren(count => { diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts index 90e6374241f..358c4f57274 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts @@ -736,15 +736,9 @@ export class AgentSessionSectionRenderer implements ICompressibleTreeRenderer { static readonly TEMPLATE_ID = 'agent-session-show-more'; @@ -753,12 +747,8 @@ export class AgentSessionShowMoreRenderer implements ICompressibleTreeRenderer(); - readonly onDidChangeItemHeight: Event = this._onDidChangeItemHeight.event; - renderTemplate(container: HTMLElement): IAgentSessionShowMoreTemplate { const disposables = new DisposableStore(); - const elementDisposable = disposables.add(new DisposableStore()); const elements = h( 'div.agent-session-show-more@container', @@ -770,13 +760,11 @@ export class AgentSessionShowMoreRenderer implements ICompressibleTreeRenderer, _index: number, template: IAgentSessionShowMoreTemplate): void { - template.elementDisposable.clear(); template.label.textContent = localize('agentSessions.showMore', "+{0} more", element.element.remainingCount); template.container.setAttribute('data-section-label', element.element.sectionLabel); } @@ -785,17 +773,11 @@ export class AgentSessionShowMoreRenderer implements ICompressibleTreeRenderer, _index: number, template: IAgentSessionShowMoreTemplate): void { - template.elementDisposable.clear(); - } + disposeElement(): void { } disposeTemplate(templateData: IAgentSessionShowMoreTemplate): void { templateData.disposables.dispose(); } - - dispose(): void { - this._onDidChangeItemHeight.dispose(); - } } export class AgentSessionShowLessRenderer implements ICompressibleTreeRenderer { @@ -805,12 +787,8 @@ export class AgentSessionShowLessRenderer implements ICompressibleTreeRenderer(); - readonly onDidChangeItemHeight: Event = this._onDidChangeItemHeight.event; - renderTemplate(container: HTMLElement): IAgentSessionShowMoreTemplate { const disposables = new DisposableStore(); - const elementDisposable = disposables.add(new DisposableStore()); const elements = h( 'div.agent-session-show-more@container', @@ -822,13 +800,11 @@ export class AgentSessionShowLessRenderer implements ICompressibleTreeRenderer, _index: number, template: IAgentSessionShowMoreTemplate): void { - template.elementDisposable.clear(); template.label.textContent = localize('agentSessions.showLess', "Show less"); template.container.setAttribute('data-section-label', element.element.sectionLabel); } @@ -837,17 +813,11 @@ export class AgentSessionShowLessRenderer implements ICompressibleTreeRenderer, _index: number, template: IAgentSessionShowMoreTemplate): void { - template.elementDisposable.clear(); - } + disposeElement(): void { } disposeTemplate(templateData: IAgentSessionShowMoreTemplate): void { templateData.disposables.dispose(); } - - dispose(): void { - this._onDidChangeItemHeight.dispose(); - } } //#endregion From fda9afb4db0fef88b2e1a1c46173a6e25cb4c56f Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 19:40:11 -0700 Subject: [PATCH 53/83] refactor: consolidate agent session styles and improve PR status icon handling --- .../browser/media/sessionsViewPane.css | 41 +++++++++++ .../sessions/browser/media/sessionsViewer.css | 45 ------------ .../sessions/browser/sessionsViewPane.ts | 1 - .../browser/agentSessions/agentSessions.ts | 12 ---- .../agentSessions/agentSessionsViewer.ts | 72 ++++++++----------- .../media/agentsessionsviewer.css | 4 +- 6 files changed, 72 insertions(+), 103 deletions(-) delete mode 100644 src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css diff --git a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewPane.css b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewPane.css index d0d590f70e1..f2f6f71e1be 100644 --- a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewPane.css +++ b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewPane.css @@ -96,3 +96,44 @@ overflow: hidden; } } + +/* Sessions-app-specific overrides for the agent sessions viewer. + * These styles only apply within the agent-sessions-workbench context. */ + +.agent-sessions-workbench { + + /* + * Show-more / show-less: content always rendered, list row height + * controls visibility (1px = clipped, 26px = visible). + * Height animation is driven by JS (requestAnimationFrame) since + * the virtualized list uses absolute positioning. + */ + .agent-session-show-more { + justify-content: center; + align-items: center; + padding: 0 6px; + font-size: 11px; + color: var(--vscode-descriptionForeground); + min-height: 26px; + + .agent-session-show-more-label { + padding: 0 6px; + flex-shrink: 0; + white-space: nowrap; + } + + /* Lines on both sides of the text as flex items */ + &::before, + &::after { + content: ''; + flex: 1; + height: 1px; + background: var(--vscode-widget-border, var(--vscode-contrastBorder)); + } + } + + /* Brighter text on direct hover */ + .monaco-list-row:hover .agent-session-show-more:hover { + color: var(--vscode-foreground); + } +} diff --git a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css deleted file mode 100644 index 40db2ce77e8..00000000000 --- a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css +++ /dev/null @@ -1,45 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -/* Sessions-app-specific overrides for the agent sessions viewer. - * These styles only apply within the agent-sessions-workbench context. */ - -.agent-sessions-workbench { - - /* - * Show-more / show-less: content always rendered, list row height - * controls visibility (1px = clipped, 26px = visible). - * Height animation is driven by JS (requestAnimationFrame) since - * the virtualized list uses absolute positioning. - */ - .agent-session-show-more { - justify-content: center; - align-items: center; - padding: 0 6px; - font-size: 11px; - color: var(--vscode-descriptionForeground); - min-height: 26px; - - .agent-session-show-more-label { - padding: 0 6px; - flex-shrink: 0; - white-space: nowrap; - } - - /* Lines on both sides of the text as flex items */ - &::before, - &::after { - content: ''; - flex: 1; - height: 1px; - background: var(--vscode-widget-border, var(--vscode-contrastBorder)); - } - } - - /* Brighter text on direct hover */ - .monaco-list-row:hover .agent-session-show-more:hover { - color: var(--vscode-foreground); - } -} diff --git a/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts b/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts index 6fb92ed1544..ad0ed33f236 100644 --- a/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts +++ b/src/vs/sessions/contrib/sessions/browser/sessionsViewPane.ts @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ import './media/sessionsViewPane.css'; -import './media/sessionsViewer.css'; import * as DOM from '../../../../base/browser/dom.js'; import { Codicon } from '../../../../base/common/codicons.js'; import { KeyCode, KeyMod } from '../../../../base/common/keyCodes.js'; diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.ts index f7d4b65ede6..b58ce96c3c3 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.ts @@ -190,18 +190,6 @@ export const agentSessionReadIndicatorForeground = registerColor( localize('agentSessionReadIndicatorForeground', "Foreground color for the read indicator in an agent session.") ); -export const agentSessionPullRequestOpenForeground = registerColor( - 'agentSessionPullRequest.openForeground', - { dark: '#3fb950', light: '#1a7f37', hcDark: '#3fb950', hcLight: '#1a7f37' }, - localize('agentSessionPullRequestOpenForeground', "Foreground color for the open pull request indicator in an agent session.") -); - -export const agentSessionPullRequestMergedForeground = registerColor( - 'agentSessionPullRequest.mergedForeground', - { dark: '#a371f7', light: '#8250df', hcDark: '#a371f7', hcLight: '#8250df' }, - localize('agentSessionPullRequestMergedForeground', "Foreground color for the merged pull request indicator in an agent session.") -); - export const agentSessionSelectedBadgeBorder = registerColor( 'agentSessionSelectedBadge.border', { dark: transparent(listActiveSelectionForeground, 0.3), light: transparent(listActiveSelectionForeground, 0.3), hcDark: foreground, hcLight: foreground }, diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts index 358c4f57274..fc2f6133f50 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts @@ -222,7 +222,7 @@ export class AgentSessionRenderer extends Disposable implements ICompressibleTre // Icon — in status-only mode, show status indicator in icon column and session type icon in details row if (this.options.useStatusOnlyIcons) { - template.icon.className = `agent-session-icon ${ThemeIcon.asClassName(this.getStatusIcon(session.element))}${session.element.status === AgentSessionStatus.NeedsInput ? ' needs-input' : ''}`; + template.icon.className = `agent-session-icon ${ThemeIcon.asClassName(this.getIcon(session.element, true))}${session.element.status === AgentSessionStatus.NeedsInput ? ' needs-input' : ''}`; template.detailsIcon.className = `agent-session-details-icon ${ThemeIcon.asClassName(session.element.icon)}`; template.detailsIcon.classList.add('visible'); } else { @@ -383,7 +383,7 @@ export class AgentSessionRenderer extends Disposable implements ICompressibleTre return true; } - private getIcon(session: IAgentSession): ThemeIcon { + private getIcon(session: IAgentSession, statusOnly?: boolean): ThemeIcon { if (session.status === AgentSessionStatus.InProgress) { return Codicon.sessionInProgress; } @@ -396,54 +396,40 @@ export class AgentSessionRenderer extends Disposable implements ICompressibleTre return Codicon.error; } + if (statusOnly) { + // PR status icons + const metadata = session.metadata; + const hasPR = metadata?.pullRequestUrl || metadata?.pullRequestNumber; + if (hasPR) { + if (metadata?.pullRequestMerged === true) { + return Codicon.gitMerge; + } + return Codicon.gitPullRequest; + } + + // Fallback: check badge text for PR indicators + const badge = session.badge; + if (badge) { + const badgeText = typeof badge === 'string' ? badge : badge.value; + if (/\bmerged\b/i.test(badgeText) || /\$\(git-merge\)/.test(badgeText)) { + return Codicon.gitMerge; + } + if (/\bPR\s*#\d+/i.test(badgeText) || /\$\(git-pull-request\)/.test(badgeText)) { + return Codicon.gitPullRequest; + } + } + } + if (!session.isRead() && !session.isArchived()) { return Codicon.circleFilled; } - if (session.providerType === AgentSessionProviders.Local) { + if (!statusOnly && session.providerType === AgentSessionProviders.Local) { return Codicon.circleSmallFilled; } - return session.icon; - } - - private getStatusIcon(session: IAgentSession): ThemeIcon { - if (session.status === AgentSessionStatus.InProgress) { - return Codicon.sessionInProgress; - } - - if (session.status === AgentSessionStatus.NeedsInput) { - return Codicon.circleFilled; - } - - if (session.status === AgentSessionStatus.Failed) { - return Codicon.error; - } - - // PR status icons - const metadata = session.metadata; - const hasPR = metadata?.pullRequestUrl || metadata?.pullRequestNumber; - if (hasPR) { - if (metadata?.pullRequestMerged === true) { - return Codicon.gitMerge; - } - return Codicon.gitPullRequest; - } - - // Fallback: check badge text for PR indicators - const badge = session.badge; - if (badge) { - const badgeText = typeof badge === 'string' ? badge : badge.value; - if (/\bmerged\b/i.test(badgeText) || /\$\(git-merge\)/.test(badgeText)) { - return Codicon.gitMerge; - } - if (/\bPR\s*#\d+/i.test(badgeText) || /\$\(git-pull-request\)/.test(badgeText)) { - return Codicon.gitPullRequest; - } - } - - if (!session.isRead() && !session.isArchived()) { - return Codicon.circleFilled; + if (!statusOnly) { + return session.icon; } return Codicon.circleSmallFilled; diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css b/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css index de86ff2f6c1..4d7badd32db 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css @@ -152,11 +152,11 @@ } &.codicon.codicon-git-pull-request { - color: var(--vscode-agentSessionPullRequest-openForeground); + color: var(--vscode-charts-green); } &.codicon.codicon-git-merge { - color: var(--vscode-agentSessionPullRequest-mergedForeground); + color: var(--vscode-charts-purple); } @media (prefers-reduced-motion: reduce) { From 8953494b80e44d3af14b249bed35a5143ed5d758 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 19:42:14 -0700 Subject: [PATCH 54/83] Improve hover behavior in agent sessions control to delay collapse on mouse leave --- .../browser/agentSessions/agentSessionsControl.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index 2c581ec6aa5..ac263e9b586 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -460,8 +460,21 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo expandShowMore(sectionLabel); })); + let collapseTimeout: ReturnType | undefined; + this._register(addDisposableListener(container, 'mouseleave', () => { - collapseCurrentShowMore(); + collapseTimeout = setTimeout(() => { + collapseCurrentShowMore(); + collapseTimeout = undefined; + }, 100); + })); + + // Cancel pending collapse if mouse re-enters + this._register(addDisposableListener(container, 'mouseenter', () => { + if (collapseTimeout) { + clearTimeout(collapseTimeout); + collapseTimeout = undefined; + } })); rebuildSectionMap(); From d006b5fc78a12ef801f876a51ca836eb6791e65a Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 19:42:51 -0700 Subject: [PATCH 55/83] refactor: simplify collapse behavior in agent sessions control by removing timeout logic --- .../browser/agentSessions/agentSessionsControl.ts | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index ac263e9b586..2c581ec6aa5 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -460,21 +460,8 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo expandShowMore(sectionLabel); })); - let collapseTimeout: ReturnType | undefined; - this._register(addDisposableListener(container, 'mouseleave', () => { - collapseTimeout = setTimeout(() => { - collapseCurrentShowMore(); - collapseTimeout = undefined; - }, 100); - })); - - // Cancel pending collapse if mouse re-enters - this._register(addDisposableListener(container, 'mouseenter', () => { - if (collapseTimeout) { - clearTimeout(collapseTimeout); - collapseTimeout = undefined; - } + collapseCurrentShowMore(); })); rebuildSectionMap(); From 31880b92584450072a72c0629a2edb033b0364b7 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 19:45:51 -0700 Subject: [PATCH 56/83] fix: ensure data-section-label is removed when repository name is not present --- .../contrib/chat/browser/agentSessions/agentSessionsViewer.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts index fc2f6133f50..4daed855cfa 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts @@ -217,7 +217,11 @@ export class AgentSessionRenderer extends Disposable implements ICompressibleTre const repoName = getRepositoryName(session.element); if (repoName) { template.element.setAttribute('data-section-label', repoName); + } else { + template.element.removeAttribute('data-section-label'); } + } else { + template.element.removeAttribute('data-section-label'); } // Icon — in status-only mode, show status indicator in icon column and session type icon in details row From 3f5842af46a51f4115b599b1105d0865adf8a17a Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 19:48:21 -0700 Subject: [PATCH 57/83] fix: remove unnecessary data-section-label removal logic in AgentSessionRenderer --- .../contrib/chat/browser/agentSessions/agentSessionsViewer.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts index 4daed855cfa..fc2f6133f50 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts @@ -217,11 +217,7 @@ export class AgentSessionRenderer extends Disposable implements ICompressibleTre const repoName = getRepositoryName(session.element); if (repoName) { template.element.setAttribute('data-section-label', repoName); - } else { - template.element.removeAttribute('data-section-label'); } - } else { - template.element.removeAttribute('data-section-label'); } // Icon — in status-only mode, show status indicator in icon column and session type icon in details row From 29f9bf28fecca825da4d84a9b3528a3f0afab907 Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 19:52:07 -0700 Subject: [PATCH 58/83] fix: reset expanded elements on tree model changes to prevent invalid references --- .../chat/browser/agentSessions/agentSessionsControl.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index 2c581ec6aa5..310e9eb420d 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -404,8 +404,11 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo ); }; - // Listen to tree model changes + // Listen to tree model changes — collapse any expanded show-more + // since element references are invalidated after refresh this._register(list.onDidChangeModel(() => { + expandedShowMoreElement = undefined; + expandedSectionLabel = undefined; rebuildSectionMap(); })); From 23694a80dbabeec042f16f5ecc104941da6b353d Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 19:53:50 -0700 Subject: [PATCH 59/83] fix: improve handling of expanded elements on tree model changes to maintain valid references --- .../agentSessions/agentSessionsControl.ts | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index 310e9eb420d..6332d3fb12e 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -404,12 +404,22 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo ); }; - // Listen to tree model changes — collapse any expanded show-more - // since element references are invalidated after refresh + // Listen to tree model changes — rebuild the section map + // and re-acquire the expanded element reference if still valid this._register(list.onDidChangeModel(() => { - expandedShowMoreElement = undefined; - expandedSectionLabel = undefined; + const previousSectionLabel = expandedSectionLabel; rebuildSectionMap(); + + // Re-acquire the show-more reference for the previously expanded section + if (previousSectionLabel) { + const newShowMoreItem = sectionToShowMore.get(previousSectionLabel); + if (newShowMoreItem && list.hasNode(newShowMoreItem)) { + expandedShowMoreElement = newShowMoreItem; + } else { + expandedShowMoreElement = undefined; + expandedSectionLabel = undefined; + } + } })); // On mouseover, determine section from the hovered element From fade5c65bb80c233ba87c2d3cd8d9fe5093fd79e Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 19:57:38 -0700 Subject: [PATCH 60/83] fix: prevent re-entrancy during tree model updates in AgentSessionsControl --- .../agentSessions/agentSessionsControl.ts | 26 ++++++++----------- .../agentSessions/agentSessionsViewer.ts | 12 --------- 2 files changed, 11 insertions(+), 27 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index 6332d3fb12e..e11b2b2062d 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -344,11 +344,12 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo const step = () => { const elapsed = Date.now() - start; const progress = Math.min(elapsed / duration, 1); - // Ease-out curve const eased = 1 - Math.pow(1 - progress, 2); const currentHeight = Math.round(from + (to - from) * eased); if (list.hasNode(element)) { + isUpdatingHeight = true; list.updateElementHeight(element, currentHeight); + isUpdatingHeight = false; } if (progress < 1) { return requestAnimationFrame(step); @@ -404,22 +405,17 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo ); }; - // Listen to tree model changes — rebuild the section map - // and re-acquire the expanded element reference if still valid + // Listen to tree model changes — rebuild the section map. + // Use a flag to avoid re-entrancy since updateElementHeight + // triggers model changes. + let isUpdatingHeight = false; this._register(list.onDidChangeModel(() => { - const previousSectionLabel = expandedSectionLabel; - rebuildSectionMap(); - - // Re-acquire the show-more reference for the previously expanded section - if (previousSectionLabel) { - const newShowMoreItem = sectionToShowMore.get(previousSectionLabel); - if (newShowMoreItem && list.hasNode(newShowMoreItem)) { - expandedShowMoreElement = newShowMoreItem; - } else { - expandedShowMoreElement = undefined; - expandedSectionLabel = undefined; - } + if (isUpdatingHeight) { + return; } + expandedShowMoreElement = undefined; + expandedSectionLabel = undefined; + rebuildSectionMap(); })); // On mouseover, determine section from the hovered element diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts index fc2f6133f50..750aec65269 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts @@ -406,18 +406,6 @@ export class AgentSessionRenderer extends Disposable implements ICompressibleTre } return Codicon.gitPullRequest; } - - // Fallback: check badge text for PR indicators - const badge = session.badge; - if (badge) { - const badgeText = typeof badge === 'string' ? badge : badge.value; - if (/\bmerged\b/i.test(badgeText) || /\$\(git-merge\)/.test(badgeText)) { - return Codicon.gitMerge; - } - if (/\bPR\s*#\d+/i.test(badgeText) || /\$\(git-pull-request\)/.test(badgeText)) { - return Codicon.gitPullRequest; - } - } } if (!session.isRead() && !session.isArchived()) { From 7ca0a20112ec7e862eff6cb1a949e92b9e0be9a7 Mon Sep 17 00:00:00 2001 From: Tyler James Leonhardt <2644648+TylerLeonhardt@users.noreply.github.com> Date: Tue, 24 Mar 2026 20:08:58 -0700 Subject: [PATCH 61/83] fix(copilot): handle case sensitivity for PATH environment variable on Windows (#304573) otherwise pwsh.exe can't be found. --- src/vs/platform/agentHost/node/copilot/copilotAgent.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/vs/platform/agentHost/node/copilot/copilotAgent.ts b/src/vs/platform/agentHost/node/copilot/copilotAgent.ts index fa3d57b3a1b..0cabbc23acc 100644 --- a/src/vs/platform/agentHost/node/copilot/copilotAgent.ts +++ b/src/vs/platform/agentHost/node/copilot/copilotAgent.ts @@ -136,8 +136,11 @@ export class CopilotAgent extends Disposable implements IAgent { // If @vscode/ripgrep is in an .asar file, the binary is unpacked. const rgDiskPath = rgPath.replace(/\bnode_modules\.asar\b/, 'node_modules.asar.unpacked'); const rgDir = dirname(rgDiskPath); - const currentPath = env['PATH']; - env['PATH'] = currentPath ? `${currentPath}${delimiter}${rgDir}` : rgDir; + // On Windows the env key is typically "Path" (not "PATH"). Since we copied + // process.env into a plain (case-sensitive) object, we must find the actual key. + const pathKey = Object.keys(env).find(k => k.toUpperCase() === 'PATH') ?? 'PATH'; + const currentPath = env[pathKey]; + env[pathKey] = currentPath ? `${currentPath}${delimiter}${rgDir}` : rgDir; this._logService.info(`[Copilot] Resolved CLI path: ${cliPath}`); const client = new CopilotClient({ From 2a7d6f4cefef12e6942639735121a1f30e582d1c Mon Sep 17 00:00:00 2001 From: Osvaldo Ortega Date: Tue, 24 Mar 2026 20:09:21 -0700 Subject: [PATCH 62/83] fix: address PR review feedback for sessions list redesign - Remove unused sessionToSection map (only sectionToShowMore is needed) - Cancel pending animation frames on dispose to prevent use-after-free - Guard updateElementHeight with try/finally around isUpdatingHeight flag - Respect prefers-reduced-motion via IAccessibilityService.isMotionReduced() - Track current animated height to avoid visual jump on mid-animation collapse - Remove stale data-section-label attribute when template is reused - Gate compact show-more label behind compactLabel option (core keeps original text) - Use COLLAPSED_HEIGHT constant instead of magic number 1 in getHeight - Use targetWindow.requestAnimationFrame for multi-window support Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../sessions/browser/media/sessionsViewer.css | 0 .../agentSessions/agentSessionsControl.ts | 66 ++++++++++++++----- .../agentSessions/agentSessionsViewer.ts | 16 ++++- 3 files changed, 63 insertions(+), 19 deletions(-) create mode 100644 src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css diff --git a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts index e11b2b2062d..ad17b336879 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.ts @@ -8,7 +8,7 @@ import { ChatContextKeys } from '../../common/actions/chatContextKeys.js'; import { IContextMenuService } from '../../../../../platform/contextview/browser/contextView.js'; import { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js'; import { IOpenEvent, WorkbenchCompressibleAsyncDataTree } from '../../../../../platform/list/browser/listService.js'; -import { $, append, EventHelper, addDisposableListener, EventType, hide, setVisibility } from '../../../../../base/browser/dom.js'; +import { $, append, EventHelper, addDisposableListener, EventType, getWindow, hide, setVisibility } from '../../../../../base/browser/dom.js'; import { StandardKeyboardEvent } from '../../../../../base/browser/keyboardEvent.js'; import { KeyCode } from '../../../../../base/common/keyCodes.js'; import { localize } from '../../../../../nls.js'; @@ -42,6 +42,7 @@ import { ChatEditorInput } from '../widgetHosts/editor/chatEditorInput.js'; import { IMouseEvent } from '../../../../../base/browser/mouseEvent.js'; import { IChatWidget } from '../chat.js'; import { IStorageService, StorageScope, StorageTarget } from '../../../../../platform/storage/common/storage.js'; +import { IAccessibilityService } from '../../../../../platform/accessibility/common/accessibility.js'; export interface IAgentSessionsControlOptions { readonly overrideStyles: IStyleOverride; @@ -117,6 +118,7 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo @ITelemetryService private readonly telemetryService: ITelemetryService, @IEditorService private readonly editorService: IEditorService, @IStorageService private readonly storageService: IStorageService, + @IAccessibilityService private readonly accessibilityService: IAccessibilityService, ) { super(); @@ -276,7 +278,7 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo [ sessionRenderer, this.instantiationService.createInstance(AgentSessionSectionRenderer, { hideSectionCount: this.options.hideSectionCount }), - new AgentSessionShowMoreRenderer(), + new AgentSessionShowMoreRenderer({ compactLabel: this.options.compactShowMore }), new AgentSessionShowLessRenderer(), ], sessionDataSource, @@ -308,13 +310,11 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo if (compact) { let expandedShowMoreElement: AgentSessionListItem | undefined; let expandedSectionLabel: string | undefined; + let currentAnimatedHeight = AgentSessionShowMoreRenderer.COLLAPSED_HEIGHT; - // Map session resource URI -> section label (rebuilt on tree changes) - const sessionToSection = new Map(); const sectionToShowMore = new Map(); const rebuildSectionMap = () => { - sessionToSection.clear(); sectionToShowMore.clear(); try { const rootNode = list.getNode(); @@ -322,9 +322,7 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo if (isAgentSessionSection(sectionNode.element)) { const label = sectionNode.element.label; for (const child of sectionNode.children) { - if (isAgentSession(child.element)) { - sessionToSection.set(child.element.resource.toString(), label); - } else if (isAgentSessionShowMore(child.element) || isAgentSessionShowLess(child.element)) { + if (isAgentSessionShowMore(child.element) || isAgentSessionShowLess(child.element)) { sectionToShowMore.set(label, child.element); } } @@ -337,43 +335,71 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo let expandAnimationId: number | undefined; let collapseAnimationId: number | undefined; + const targetWindow = getWindow(container); + + // Cancel pending animations on dispose to avoid calling into a disposed tree + this._register({ + dispose: () => { + if (expandAnimationId) { targetWindow.cancelAnimationFrame(expandAnimationId); } + if (collapseAnimationId) { targetWindow.cancelAnimationFrame(collapseAnimationId); } + } + }); const animateHeight = (element: AgentSessionListItem, from: number, to: number, onComplete?: () => void) => { + // Respect prefers-reduced-motion + if (this.accessibilityService.isMotionReduced()) { + if (list.hasNode(element)) { + isUpdatingHeight = true; + try { + list.updateElementHeight(element, to); + } finally { + isUpdatingHeight = false; + } + currentAnimatedHeight = to; + } + onComplete?.(); + return undefined; + } + const duration = 150; const start = Date.now(); const step = () => { const elapsed = Date.now() - start; const progress = Math.min(elapsed / duration, 1); const eased = 1 - Math.pow(1 - progress, 2); - const currentHeight = Math.round(from + (to - from) * eased); + const height = Math.round(from + (to - from) * eased); if (list.hasNode(element)) { isUpdatingHeight = true; - list.updateElementHeight(element, currentHeight); - isUpdatingHeight = false; + try { + list.updateElementHeight(element, height); + } finally { + isUpdatingHeight = false; + } + currentAnimatedHeight = height; } if (progress < 1) { - return requestAnimationFrame(step); + return targetWindow.requestAnimationFrame(step); } onComplete?.(); return undefined; }; - return requestAnimationFrame(step); + return targetWindow.requestAnimationFrame(step); }; const collapseCurrentShowMore = () => { if (collapseAnimationId) { - cancelAnimationFrame(collapseAnimationId); + targetWindow.cancelAnimationFrame(collapseAnimationId); collapseAnimationId = undefined; } if (expandAnimationId) { - cancelAnimationFrame(expandAnimationId); + targetWindow.cancelAnimationFrame(expandAnimationId); expandAnimationId = undefined; } if (expandedShowMoreElement && expandedSectionLabel) { if (list.hasNode(expandedShowMoreElement)) { collapseAnimationId = animateHeight( expandedShowMoreElement, - AgentSessionShowMoreRenderer.HEIGHT, + currentAnimatedHeight, AgentSessionShowMoreRenderer.COLLAPSED_HEIGHT, () => { collapseAnimationId = undefined; } ); @@ -397,6 +423,7 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo expandedShowMoreElement = showMoreItem; expandedSectionLabel = sectionLabel; + currentAnimatedHeight = AgentSessionShowMoreRenderer.COLLAPSED_HEIGHT; expandAnimationId = animateHeight( showMoreItem, AgentSessionShowMoreRenderer.COLLAPSED_HEIGHT, @@ -415,6 +442,7 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo } expandedShowMoreElement = undefined; expandedSectionLabel = undefined; + currentAnimatedHeight = AgentSessionShowMoreRenderer.COLLAPSED_HEIGHT; rebuildSectionMap(); })); @@ -428,7 +456,8 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo let sectionLabel: string | undefined; - // Section header + // Section header — querySelector is needed to identify elements within virtualized list rows + // eslint-disable-next-line no-restricted-syntax const sectionHeaderEl = row.querySelector('.agent-session-section-label'); if (sectionHeaderEl) { sectionLabel = sectionHeaderEl.textContent ?? undefined; @@ -436,6 +465,7 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo // Show-more element if (!sectionLabel) { + // eslint-disable-next-line no-restricted-syntax const showMoreEl = row.querySelector('.agent-session-show-more'); if (showMoreEl) { sectionLabel = showMoreEl.getAttribute('data-section-label') ?? undefined; @@ -444,6 +474,7 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo // Session item — use data-section-label attribute if (!sectionLabel) { + // eslint-disable-next-line no-restricted-syntax const sessionItem = row.querySelector('.agent-session-item[data-section-label]'); if (sessionItem) { sectionLabel = sessionItem.getAttribute('data-section-label') ?? undefined; @@ -454,6 +485,7 @@ export class AgentSessionsControl extends Disposable implements IAgentSessionsCo // inside a row with a session item, keep the current state // (prevents collapse when hovering toolbar icons, diff stats, etc.) if (!sectionLabel) { + // eslint-disable-next-line no-restricted-syntax if (row.querySelector('.agent-session-item')) { return; } diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts index 750aec65269..8b0638c9a0a 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.ts @@ -217,7 +217,11 @@ export class AgentSessionRenderer extends Disposable implements ICompressibleTre const repoName = getRepositoryName(session.element); if (repoName) { template.element.setAttribute('data-section-label', repoName); + } else { + template.element.removeAttribute('data-section-label'); } + } else { + template.element.removeAttribute('data-section-label'); } // Icon — in status-only mode, show status indicator in icon column and session type icon in details row @@ -713,6 +717,10 @@ interface IAgentSessionShowMoreTemplate { readonly disposables: DisposableStore; } +export interface IAgentSessionShowMoreRendererOptions { + readonly compactLabel?: boolean; +} + export class AgentSessionShowMoreRenderer implements ICompressibleTreeRenderer { static readonly TEMPLATE_ID = 'agent-session-show-more'; @@ -721,6 +729,8 @@ export class AgentSessionShowMoreRenderer implements ICompressibleTreeRenderer, _index: number, template: IAgentSessionShowMoreTemplate): void { - template.label.textContent = localize('agentSessions.showMore', "+{0} more", element.element.remainingCount); + template.label.textContent = this.options?.compactLabel + ? localize('agentSessions.showMoreCompact', "+{0} more", element.element.remainingCount) + : localize('agentSessions.showMore', "Show {0} More...", element.element.remainingCount); template.container.setAttribute('data-section-label', element.element.sectionLabel); } @@ -811,7 +823,7 @@ export class AgentSessionsListDelegate implements IListVirtualDelegate Date: Tue, 24 Mar 2026 20:31:25 -0700 Subject: [PATCH 63/83] fix: remove empty sessionsViewer.css that was causing CI hygiene failure Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css diff --git a/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css b/src/vs/sessions/contrib/sessions/browser/media/sessionsViewer.css deleted file mode 100644 index e69de29bb2d..00000000000 From 16ea249743b1d54c866d244e7bb51b98f2c21af1 Mon Sep 17 00:00:00 2001 From: Kyle Cutler <67761731+kycutler@users.noreply.github.com> Date: Tue, 24 Mar 2026 20:34:12 -0700 Subject: [PATCH 64/83] Fix "BrowserEditor: Failed to start console session" noise (#304595) --- .../electron-main/nativeBrowserElementsMainService.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/vs/platform/browserElements/electron-main/nativeBrowserElementsMainService.ts b/src/vs/platform/browserElements/electron-main/nativeBrowserElementsMainService.ts index 84a64f6d43b..4fab807cd8d 100644 --- a/src/vs/platform/browserElements/electron-main/nativeBrowserElementsMainService.ts +++ b/src/vs/platform/browserElements/electron-main/nativeBrowserElementsMainService.ts @@ -127,7 +127,6 @@ export class NativeBrowserElementsMainService extends Disposable implements INat targetWebContents.on('console-message', onConsoleMessage); targetWebContents.on('destroyed', onTargetDestroyed); windowWebContents.on('ipc-message', onIpcMessage); - token.onCancellationRequested(cleanupListeners); } /** From 0b84fd1b4b00ea54e1c56f296244c2a49f9c334c Mon Sep 17 00:00:00 2001 From: Lee Murray Date: Wed, 25 Mar 2026 07:25:31 +0000 Subject: [PATCH 65/83] Add 'Mark as Done' button for session archiving (#304473) * Add "Mark as Done" button to sessions title bar for archiving sessions Co-authored-by: Copilot * Enhance "Mark as Done" button functionality with focus styles and session state checks Co-authored-by: Copilot * style: adjust padding for agent sessions titlebar container and add Mark Session As Done action Co-authored-by: Copilot --------- Co-authored-by: mrleemurray Co-authored-by: Copilot --- .../browser/media/sessionsTitleBarWidget.css | 2 +- .../sessions/browser/sessions.contribution.ts | 44 ++++++++++++++++++- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/vs/sessions/contrib/sessions/browser/media/sessionsTitleBarWidget.css b/src/vs/sessions/contrib/sessions/browser/media/sessionsTitleBarWidget.css index 567da1a2e66..36e5bb61af0 100644 --- a/src/vs/sessions/contrib/sessions/browser/media/sessionsTitleBarWidget.css +++ b/src/vs/sessions/contrib/sessions/browser/media/sessionsTitleBarWidget.css @@ -11,7 +11,7 @@ flex-wrap: nowrap; align-items: center; justify-content: flex-start; - padding: 0 16px; + padding-left: 16px; height: 22px; border-radius: 4px; -webkit-app-region: no-drag; diff --git a/src/vs/sessions/contrib/sessions/browser/sessions.contribution.ts b/src/vs/sessions/contrib/sessions/browser/sessions.contribution.ts index 14a681d901a..29d1542a846 100644 --- a/src/vs/sessions/contrib/sessions/browser/sessions.contribution.ts +++ b/src/vs/sessions/contrib/sessions/browser/sessions.contribution.ts @@ -14,13 +14,18 @@ import { registerWorkbenchContribution2, WorkbenchPhase } from '../../../../work import { InstantiationType, registerSingleton } from '../../../../platform/instantiation/common/extensions.js'; import { SessionsTitleBarContribution } from './sessionsTitleBarWidget.js'; import { AgenticSessionsViewPane, SessionsViewId } from './sessionsViewPane.js'; -import { SessionsManagementService, ISessionsManagementService } from './sessionsManagementService.js'; +import { SessionsManagementService, ISessionsManagementService, IsNewChatSessionContext } from './sessionsManagementService.js'; import { Action2, MenuId, registerAction2 } from '../../../../platform/actions/common/actions.js'; +import { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js'; import { ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js'; import { AgentSessionSection, IAgentSessionSection, isAgentSessionSection } from '../../../../workbench/contrib/chat/browser/agentSessions/agentSessionsModel.js'; import { ChatContextKeys } from '../../../../workbench/contrib/chat/common/actions/chatContextKeys.js'; +import { IAgentSessionsService } from '../../../../workbench/contrib/chat/browser/agentSessions/agentSessionsService.js'; import { IViewsService } from '../../../../workbench/services/views/common/viewsService.js'; +import { IsAuxiliaryWindowContext } from '../../../../workbench/common/contextkeys.js'; +import { SessionsWelcomeVisibleContext } from '../../../common/contextkeys.js'; import { NewChatViewPane, SessionsViewId as NewChatViewId } from '../../chat/browser/newChatViewPane.js'; +import { Menus } from '../../../browser/menus.js'; const agentSessionsViewIcon = registerIcon('chat-sessions-icon', Codicon.commentDiscussionSparkle, localize('agentSessionsViewIcon', 'Icon for Agent Sessions View')); const AGENT_SESSIONS_VIEW_TITLE = localize2('agentSessions.view.label', "Sessions"); @@ -55,6 +60,43 @@ registerWorkbenchContribution2(SessionsTitleBarContribution.ID, SessionsTitleBar registerSingleton(ISessionsManagementService, SessionsManagementService, InstantiationType.Delayed); +registerAction2(class MarkSessionAsDoneAction extends Action2 { + + constructor() { + super({ + id: 'agentSession.markAsDone', + title: localize2('markAsDone', "Mark as Done"), + icon: Codicon.check, + menu: [{ + id: Menus.CommandCenter, + order: 102, + when: ContextKeyExpr.and( + IsAuxiliaryWindowContext.negate(), + SessionsWelcomeVisibleContext.negate(), + IsNewChatSessionContext.negate() + ) + }] + }); + } + + async run(accessor: ServicesAccessor): Promise { + const sessionsManagementService = accessor.get(ISessionsManagementService); + const agentSessionsService = accessor.get(IAgentSessionsService); + + const activeSession = sessionsManagementService.getActiveSession(); + if (!activeSession || activeSession.isUntitled) { + return; + } + + const agentSession = agentSessionsService.getSession(activeSession.resource); + if (!agentSession || agentSession.isArchived()) { + return; + } + + agentSession.setArchived(true); + } +}); + registerAction2(class NewSessionForRepositoryAction extends Action2 { constructor() { From 687dc1c8f0382ed95fa7d20d4c61f1dbedb6260a Mon Sep 17 00:00:00 2001 From: BeniBenj Date: Wed, 25 Mar 2026 10:22:25 +0100 Subject: [PATCH 66/83] Update sessions tasks --- .vscode/tasks.json | 25 ++++---- .../browser/sessionsConfigurationService.ts | 63 +------------------ 2 files changed, 12 insertions(+), 76 deletions(-) diff --git a/.vscode/tasks.json b/.vscode/tasks.json index d8265a6040a..c5eb312274b 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -239,26 +239,23 @@ ], "problemMatcher": [] }, + { + "label": "Transpile Client", + "type": "npm", + "script": "transpile-client", + "problemMatcher": [] + }, { "label": "Run and Compile Sessions - OSS", - "type": "shell", - "command": "npm run transpile-client && ./scripts/code.sh", - "windows": { - "command": "npm run transpile-client && .\\scripts\\code.bat" - }, - "args": [ - "--sessions" - ], + "dependsOn": ["Transpile Client", "Run Dev Sessions"], + "dependsOrder": "sequence", "inSessions": true, "problemMatcher": [] }, { "label": "Run and Compile Code - OSS", - "type": "shell", - "command": "npm run transpile-client && ./scripts/code.sh", - "windows": { - "command": "npm run transpile-client && .\\scripts\\code.bat" - }, + "dependsOn": ["Transpile Client", "Run Dev"], + "dependsOrder": "sequence", "inSessions": true, "problemMatcher": [] }, @@ -438,4 +435,4 @@ "isBackground": false } ] -} \ No newline at end of file +} diff --git a/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.ts b/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.ts index 89486a53fd9..79dbb0ba93f 100644 --- a/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.ts +++ b/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { Disposable, DisposableStore, MutableDisposable } from '../../../../base/common/lifecycle.js'; -import { autorun, IObservable, observableValue, transaction } from '../../../../base/common/observable.js'; +import { IObservable, observableValue, transaction } from '../../../../base/common/observable.js'; import { joinPath, dirname, isEqual } from '../../../../base/common/resources.js'; import { parse } from '../../../../base/common/jsonc.js'; import { URI } from '../../../../base/common/uri.js'; @@ -127,7 +127,6 @@ export class SessionsConfigurationService extends Disposable implements ISession private static readonly _PINNED_TASK_LABELS_KEY = 'agentSessions.pinnedTaskLabels'; private readonly _sessionTasks = observableValue(this, []); private readonly _fileWatcher = this._register(new MutableDisposable()); - private readonly _knownSessionWorktrees = new Map(); private readonly _pinnedTaskLabels: Map; private readonly _pinnedTaskObservables = new Map>>(); @@ -145,11 +144,6 @@ export class SessionsConfigurationService extends Disposable implements ISession ) { super(); this._pinnedTaskLabels = this._loadPinnedTaskLabels(); - - this._register(autorun(reader => { - const activeSession = this._sessionsManagementService.activeSession.read(reader); - this._handleActiveSessionChange(activeSession); - })); } getSessionTasks(session: IActiveSessionItem): IObservable { @@ -384,65 +378,10 @@ export class SessionsConfigurationService extends Disposable implements ISession } } - private async _readAllTasks(session: IActiveSessionItem): Promise { - const result: ITaskEntry[] = []; - - // Read workspace tasks - const workspaceUri = this._getTasksJsonUri(session, 'workspace'); - if (workspaceUri) { - const workspaceJson = await this._readTasksJson(workspaceUri); - if (workspaceJson.tasks) { - result.push(...workspaceJson.tasks.filter(t => this._isSupportedTask(t))); - } - } - - // Read user tasks - const userUri = this._getTasksJsonUri(session, 'user'); - if (userUri) { - const userJson = await this._readTasksJson(userUri); - if (userJson.tasks) { - result.push(...userJson.tasks.filter(t => this._isSupportedTask(t))); - } - } - - return result; - } - private _isSupportedTask(task: ITaskEntry): boolean { return !!task.label; } - private _handleActiveSessionChange(session: IActiveSessionItem | undefined): void { - if (!session) { - return; - } - - const sessionKey = session.resource.toString(); - const currentWorktree = session.worktree?.toString(); - if (!this._knownSessionWorktrees.has(sessionKey)) { - this._knownSessionWorktrees.set(sessionKey, currentWorktree); - return; - } - - const previousWorktree = this._knownSessionWorktrees.get(sessionKey); - this._knownSessionWorktrees.set(sessionKey, currentWorktree); - if (!currentWorktree || previousWorktree === currentWorktree) { - return; - } - - void this._runWorktreeCreatedTasks(session); - } - - private async _runWorktreeCreatedTasks(session: IActiveSessionItem): Promise { - const tasks = await this._readAllTasks(session); - for (const task of tasks) { - if (!task.inSessions || task.runOptions?.runOn !== 'worktreeCreated') { - continue; - } - await this.runTask(task, session); - } - } - private _ensureFileWatch(folder: URI): void { const tasksUri = joinPath(folder, '.vscode', 'tasks.json'); if (this._watchedResource && this._watchedResource.toString() === tasksUri.toString()) { From a042e5793d14c182782798c79985e9516fdbe637 Mon Sep 17 00:00:00 2001 From: BeniBenj Date: Wed, 25 Mar 2026 10:56:44 +0100 Subject: [PATCH 67/83] remove old test --- .../sessionsConfigurationService.test.ts | 22 ------------------- 1 file changed, 22 deletions(-) diff --git a/src/vs/sessions/contrib/chat/test/browser/sessionsConfigurationService.test.ts b/src/vs/sessions/contrib/chat/test/browser/sessionsConfigurationService.test.ts index 5569ec2600e..ce68824747b 100644 --- a/src/vs/sessions/contrib/chat/test/browser/sessionsConfigurationService.test.ts +++ b/src/vs/sessions/contrib/chat/test/browser/sessionsConfigurationService.test.ts @@ -615,26 +615,4 @@ suite('SessionsConfigurationService', () => { assert.strictEqual(ranTasks.length, 1); assert.strictEqual(ranTasks[0].label, 'build'); }); - - test('runs worktreeCreated session tasks when a session gains a worktree', async () => { - registerMockTask('build', worktreeUri); - const sessionResource = URI.parse('file:///session-worktree-created'); - const worktreeTasksUri = URI.parse('file:///worktree/.vscode/tasks.json'); - const userTasksUri = URI.from({ scheme: userSettingsUri.scheme, path: '/user/tasks.json' }); - fileContents.set(worktreeTasksUri.toString(), tasksJsonContent([ - { label: 'build', type: 'shell', command: 'npm run build', inSessions: true, runOptions: { runOn: 'worktreeCreated' } }, - makeTask('manual', 'npm test', true), - ])); - fileContents.set(userTasksUri.toString(), tasksJsonContent([])); - - activeSessionObs.set({ ...makeSession({ repository: repoUri }), resource: sessionResource }, undefined); - await new Promise(r => setTimeout(r, 10)); - - activeSessionObs.set({ ...makeSession({ repository: repoUri, worktree: worktreeUri }), resource: sessionResource }, undefined); - await new Promise(r => setTimeout(r, 10)); - - assert.strictEqual(ranTasks.length, 1); - assert.strictEqual(ranTasks[0].label, 'build'); - }); - }); From ed2356f0662966a11d340b29d3ec345cef744ac2 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 25 Mar 2026 11:12:27 +0100 Subject: [PATCH 68/83] sessions - focus app when launching from protocol link (#304682) --- src/vs/code/electron-main/app.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vs/code/electron-main/app.ts b/src/vs/code/electron-main/app.ts index 2f57f7bf1d5..b10eb6aeedc 100644 --- a/src/vs/code/electron-main/app.ts +++ b/src/vs/code/electron-main/app.ts @@ -916,6 +916,7 @@ export class CodeApplication extends Disposable { // Ensure sessions window is open to receive the URL const windows = await windowsMainService.openSessionsWindow({ context: OpenContext.LINK, contextWindowId: undefined }); const window = windows.at(0); + window?.focus(); await window?.ready(); // Return false to let subsequent handlers (e.g., URLHandlerChannelClient) forward the URL From 928b7379194959a08cbb0ebc16d135194fb8a0f7 Mon Sep 17 00:00:00 2001 From: mrleemurray Date: Wed, 25 Mar 2026 10:35:57 +0000 Subject: [PATCH 69/83] Remove box-shadows Co-authored-by: Copilot --- src/vs/sessions/browser/media/style.css | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/vs/sessions/browser/media/style.css b/src/vs/sessions/browser/media/style.css index 1c7da6946bd..c36832a96c2 100644 --- a/src/vs/sessions/browser/media/style.css +++ b/src/vs/sessions/browser/media/style.css @@ -154,7 +154,7 @@ * Subtle appear animation when parts transition from display:none → visible * (via split-view-view .visible class). * - * Animated properties: opacity, margin, border-color, background, box-shadow. + * Animated properties: opacity, margin, border-color, background. * Opacity transiently creates a stacking context while it animates from 0 to 1 * over 250ms — once settled at opacity: 1, no additional stacking context is * introduced by this animation. Margin shifts are purely visual within the @@ -171,8 +171,7 @@ margin-right 250ms ease-out, margin-bottom 250ms ease-out, border-color 250ms ease-out, - background 250ms ease-out, - box-shadow 250ms ease-out; + background 250ms ease-out; } /* Sidebar & auxiliary bar also transition margin-left */ @@ -182,8 +181,7 @@ opacity 250ms ease-out, margin 250ms ease-out, border-color 250ms ease-out, - background 250ms ease-out, - box-shadow 250ms ease-out; + background 250ms ease-out; } @starting-style { @@ -196,12 +194,11 @@ border-color: transparent; } - /* Card parts: blend from surrounding background + brief shadow lift */ + /* Card parts: blend from surrounding background */ .agent-sessions-workbench .part.auxiliarybar, .agent-sessions-workbench .part.panel, .agent-sessions-workbench .part.chatbar { background: color-mix(in srgb, var(--part-background) 60%, var(--vscode-sideBar-background)); - box-shadow: 0 4px 16px color-mix(in srgb, var(--vscode-widget-shadow, rgba(0, 0, 0, 0.36)) 50%, transparent); } /* Per-part margin shifts — each part settles into its resting margin */ From cfa545cf951c214982a688db7e1441cea9eb969e Mon Sep 17 00:00:00 2001 From: Henning Dieterichs Date: Wed, 25 Mar 2026 11:24:42 +0100 Subject: [PATCH 70/83] Fixes https://github.com/microsoft/vscode/issues/303784 --- .../browser/widget/chatArtifactsWidget.ts | 21 +++++++++++ .../chat/browser/widget/media/chat.css | 36 +++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.ts b/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.ts index 709ee187d2e..dadab4ff7aa 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.ts @@ -38,6 +38,7 @@ export class ChatArtifactsWidget extends Disposable { private readonly _listStore = this._register(new DisposableStore()); private _expandIcon!: HTMLElement; private _titleElement!: HTMLElement; + private _clearButton!: Button; public static readonly ELEMENT_HEIGHT = 22; private static readonly MAX_ITEMS_SHOWN = 6; @@ -78,6 +79,19 @@ export class ChatArtifactsWidget extends Disposable { titleSection.appendChild(this._titleElement); headerButton.element.appendChild(titleSection); + // Add clear button container + const clearButtonContainer = dom.$('.artifacts-clear-button-container'); + this._clearButton = this._listStore.add(new Button(clearButtonContainer, { + supportIcons: true, + ariaLabel: localize('chat.artifacts.clearButton', 'Clear all artifacts'), + })); + this._clearButton.element.tabIndex = 0; + this._clearButton.icon = Codicon.clearAll; + this._listStore.add(this._clearButton.onDidClick(() => { + this._clearAllArtifacts(); + })); + headerButton.element.appendChild(clearButtonContainer); + this.domNode.appendChild(expandoContainer); const listContainer = dom.$('.chat-artifacts-list'); @@ -158,6 +172,13 @@ export class ChatArtifactsWidget extends Disposable { }); } + private _clearAllArtifacts(): void { + if (!this._sessionResource) { + return; + } + this._chatArtifactsService.setArtifacts(this._sessionResource, []); + } + hide(): void { this._autorunDisposable.clear(); this.domNode.style.display = 'none'; diff --git a/src/vs/workbench/contrib/chat/browser/widget/media/chat.css b/src/vs/workbench/contrib/chat/browser/widget/media/chat.css index 8ec205d7f37..519e26c1b56 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +++ b/src/vs/workbench/contrib/chat/browser/widget/media/chat.css @@ -2251,6 +2251,42 @@ have to be updated for changes to the rules above, or to support more deeply nes font-size: 13px; } +.chat-artifacts-widget .artifacts-clear-button-container { + padding-right: 2px; + display: flex; + align-items: center; + height: 18px; + opacity: 1; +} + +.chat-artifacts-widget .artifacts-clear-button-container .monaco-button { + background-color: transparent; + border-color: transparent; + color: var(--vscode-foreground); + cursor: pointer; + height: 16px; + padding: 3px; + border-radius: 2px; + display: inline-flex; + align-items: center; + justify-content: center; + min-width: unset; +} + +.chat-artifacts-widget .artifacts-clear-button-container .monaco-button:hover { + background-color: var(--vscode-toolbar-hoverBackground); +} + +.chat-artifacts-widget .artifacts-clear-button-container .monaco-button:focus { + outline: 1px solid var(--vscode-focusBorder); + outline-offset: 1px; +} + +.chat-artifacts-widget .artifacts-clear-button-container .monaco-button .codicon { + font-size: 10px; + color: var(--vscode-foreground); +} + .interactive-session .checkpoint-file-changes-summary { display: flex; flex-direction: column; From 4e0be70a8aad9e533032ffe8f639ec06ad8d856c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 25 Mar 2026 12:01:22 +0000 Subject: [PATCH 71/83] Initial plan From 50e62ebd52b47311c94ef6ef6cf8f93c0e8fcbc5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 25 Mar 2026 12:09:04 +0000 Subject: [PATCH 72/83] fix: preserve selection context when using "Ask in Chat" from inline chat Pass the session's file URI and initial selection to the panel chat widget when continuing an inline chat session in panel chat. The selection is added as a file attachment before the request is sent, ensuring the panel chat has the same context as the original inline chat session. Fixes microsoft/vscode#249226 Co-authored-by: jrieken <1794099+jrieken@users.noreply.github.com> Agent-Logs-Url: https://github.com/microsoft/vscode/sessions/d8bafe8b-3607-4025-864e-0d47bd376f9c --- .../contrib/inlineChat/browser/inlineChatSessionService.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.ts b/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.ts index 3bcfdd27cb7..8a348c9fba5 100644 --- a/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.ts +++ b/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.ts @@ -67,7 +67,7 @@ export async function moveToPanelChat(accessor: ServicesAccessor, model: IChatMo } } -export async function askInPanelChat(accessor: ServicesAccessor, request: IChatRequestModel, state: IChatModelInputState | undefined) { +export async function askInPanelChat(accessor: ServicesAccessor, request: IChatRequestModel, state: IChatModelInputState | undefined, fileContext?: { uri: URI; selection: Selection }) { const widgetService = accessor.get(IChatWidgetService); const chatService = accessor.get(IChatService); @@ -88,6 +88,9 @@ export async function askInPanelChat(accessor: ServicesAccessor, request: IChatR const widget = await widgetService.openSession(newModelRef.object.sessionResource); newModelRef.dispose(); // can be freed after opening because the widget also holds a reference + if (widget && fileContext && !fileContext.selection.isEmpty()) { + await widget.attachmentModel.addFile(fileContext.uri, fileContext.selection); + } widget?.acceptInput(request.message.text); } @@ -97,7 +100,7 @@ export async function continueInPanelChat(accessor: ServicesAccessor, session: I return; } - await askInPanelChat(accessor, request, session.chatModel.inputModel.state.get()); + await askInPanelChat(accessor, request, session.chatModel.inputModel.state.get(), { uri: session.uri, selection: session.initialSelection }); session.dispose(); } From 509690479065730f9cdd62984046e39093ffcf76 Mon Sep 17 00:00:00 2001 From: xingsy97 <87063252+xingsy97@users.noreply.github.com> Date: Tue, 24 Mar 2026 14:01:12 +0800 Subject: [PATCH 73/83] mergeEditor: optimize removeDiffs from O(K*N) to O(N) with single-pass algorithm --- .../browser/model/textModelDiffs.ts | 40 ++++++++++++------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/src/vs/workbench/contrib/mergeEditor/browser/model/textModelDiffs.ts b/src/vs/workbench/contrib/mergeEditor/browser/model/textModelDiffs.ts index 2bd6be05fdc..18413330237 100644 --- a/src/vs/workbench/contrib/mergeEditor/browser/model/textModelDiffs.ts +++ b/src/vs/workbench/contrib/mergeEditor/browser/model/textModelDiffs.ts @@ -126,31 +126,43 @@ export class TextModelDiffs extends Disposable { this.ensureUpToDate(); diffToRemoves.sort(compareBy((d) => d.inputRange.startLineNumber, numberComparator)); - diffToRemoves.reverse(); + diffToRemoves.reverse(); // process from bottom of document upward - let diffs = this._diffs.get(); + const diffs = this._diffs.get(); - for (const diffToRemove of diffToRemoves) { - // TODO improve performance - const len = diffs.length; - diffs = diffs.filter((d) => d !== diffToRemove); - if (len === diffs.length) { + // Validate all diffs-to-remove exist using Set for O(1) lookup + const toRemoveSet = new Set(diffToRemoves); + if (toRemoveSet.size !== diffToRemoves.length) { + throw new BugIndicatingError(); // duplicate entries + } + const diffsSet = new Set(diffs); + for (const d of diffToRemoves) { + if (!diffsSet.has(d)) { throw new BugIndicatingError(); } + } + // Apply text model edits in reverse document order (bottom-up, safe for line shifting) + for (const diffToRemove of diffToRemoves) { this._barrier.runExclusivelyOrThrow(() => { const edits = diffToRemove.getReverseLineEdit().toEdits(this.textModel.getLineCount()); this.textModel.pushEditOperations(null, edits, () => null, group); }); - - diffs = diffs.map((d) => - d.outputRange.isAfter(diffToRemove.outputRange) - ? d.addOutputLineDelta(diffToRemove.inputRange.length - diffToRemove.outputRange.length) - : d - ); } - this._diffs.set(diffs, transaction, TextModelDiffChangeReason.other); + // Single forward pass: accumulate delta from removed diffs above, apply to remaining diffs below + let cumulativeDelta = 0; + const newDiffs: DetailedLineRangeMapping[] = []; + + for (const d of diffs) { + if (toRemoveSet.has(d)) { + cumulativeDelta += d.inputRange.length - d.outputRange.length; + } else { + newDiffs.push(cumulativeDelta !== 0 ? d.addOutputLineDelta(cumulativeDelta) : d); + } + } + + this._diffs.set(newDiffs, transaction, TextModelDiffChangeReason.other); } /** From 54b102d97603fe6d9405a0796e45604dce63f76e Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 25 Mar 2026 14:36:19 +0100 Subject: [PATCH 74/83] sessions - hide diff stats from changes view button (#304738) --- .../contrib/changes/browser/changesView.ts | 8 +------- .../contrib/changes/browser/media/changesView.css | 15 --------------- 2 files changed, 1 insertion(+), 22 deletions(-) diff --git a/src/vs/sessions/contrib/changes/browser/changesView.ts b/src/vs/sessions/contrib/changes/browser/changesView.ts index 4c3c01bc186..3778ad29ecd 100644 --- a/src/vs/sessions/contrib/changes/browser/changesView.ts +++ b/src/vs/sessions/contrib/changes/browser/changesView.ts @@ -10,7 +10,6 @@ import { ICompressedTreeNode } from '../../../../base/browser/ui/tree/compressed import { ICompressibleTreeRenderer } from '../../../../base/browser/ui/tree/objectTree.js'; import { IObjectTreeElement, ITreeNode } from '../../../../base/browser/ui/tree/tree.js'; import { Codicon } from '../../../../base/common/codicons.js'; -import { MarkdownString } from '../../../../base/common/htmlContent.js'; import { Iterable } from '../../../../base/common/iterator.js'; import { Disposable, DisposableStore, MutableDisposable } from '../../../../base/common/lifecycle.js'; import { autorun, constObservable, derived, derivedOpts, IObservable, IObservableWithChange, ISettableObservable, ObservablePromise, observableSignalFromEvent, observableValue, runOnChange } from '../../../../base/common/observable.js'; @@ -659,7 +658,6 @@ export class ChangesViewPane extends ViewPane { this.renderDisposables.add(scopedInstantiationService); this.renderDisposables.add(autorun(reader => { - const { added, removed } = topLevelStats.read(reader); const outgoingChanges = outgoingChangesObs.read(reader); const sessionResource = this.viewModel.activeSessionResourceObs.read(reader); @@ -700,11 +698,7 @@ export class ChangesViewPane extends ViewPane { : { shouldForwardArgs: true }, buttonConfigProvider: (action) => { if (action.id === 'chatEditing.viewChanges' || action.id === 'chatEditing.viewPreviousEdits' || action.id === 'chatEditing.viewAllSessionChanges' || action.id === 'chat.openSessionWorktreeInVSCode') { - const diffStatsLabel = new MarkdownString( - `+${added} -${removed}`, - { supportHtml: true } - ); - return { showIcon: true, showLabel: true, isSecondary: true, customClass: 'working-set-diff-stats', customLabel: diffStatsLabel }; + return { showIcon: true, showLabel: false, isSecondary: true }; } if (action.id === RUN_SESSION_CODE_REVIEW_ACTION_ID) { if (codeReviewLoading) { diff --git a/src/vs/sessions/contrib/changes/browser/media/changesView.css b/src/vs/sessions/contrib/changes/browser/media/changesView.css index 1b187233832..ce34dce6c7c 100644 --- a/src/vs/sessions/contrib/changes/browser/media/changesView.css +++ b/src/vs/sessions/contrib/changes/browser/media/changesView.css @@ -260,21 +260,6 @@ color: var(--vscode-chat-linesRemovedForeground); } -/* Line counts in buttons */ -.changes-view-body .chat-editing-session-actions .monaco-button.working-set-diff-stats { - flex-shrink: 0; - padding-left: 4px; - padding-right: 8px; -} - -.changes-view-body .chat-editing-session-actions .monaco-button .working-set-lines-added { - color: var(--vscode-chat-linesAddedForeground); -} - -.changes-view-body .chat-editing-session-actions .monaco-button .working-set-lines-removed { - color: var(--vscode-chat-linesRemovedForeground); -} - .changes-view-body .chat-editing-session-actions .monaco-button.code-review-comments, .changes-view-body .chat-editing-session-actions .monaco-button.code-review-loading { padding-left: 4px; From 5c6981107ee50dcf29e993723e4d51d3d87650cc Mon Sep 17 00:00:00 2001 From: Tyler James Leonhardt <2644648+TylerLeonhardt@users.noreply.github.com> Date: Wed, 25 Mar 2026 06:56:11 -0700 Subject: [PATCH 75/83] Fix Claude forking (#304662) untitled uri strikes again... we should try getting the real session first before resolving to an untitled uri. --- .../chat/browser/chatSessions/chatSessions.contribution.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.ts b/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.ts index 868a46c8339..d96005ed591 100644 --- a/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.ts +++ b/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.ts @@ -1215,7 +1215,9 @@ export class ChatSessionsService extends Disposable implements IChatSessionsServ } public async forkChatSession(sessionResource: URI, request: IChatSessionRequestHistoryItem | undefined, token: CancellationToken): Promise { - const session = this._sessions.get(this._resolveResource(sessionResource)); + const session = this._sessions.get(sessionResource) + // Try to resolve in case an alias was used + ?? this._sessions.get(this._resolveResource(sessionResource)); if (!session?.session.forkSession) { throw new Error(`Session ${sessionResource.toString()} does not support forking`); } From c4257609ad87eb8bae54e1cd68029a6995aa7160 Mon Sep 17 00:00:00 2001 From: Shehab Sherif Date: Wed, 25 Mar 2026 15:57:25 +0200 Subject: [PATCH 76/83] Fix operator precedence in fuzzyScore2 test assertion (#304449) Co-authored-by: Shehab Sherif --- src/vs/base/test/common/fuzzyScorer.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/base/test/common/fuzzyScorer.test.ts b/src/vs/base/test/common/fuzzyScorer.test.ts index f120298e22b..d7aade68c1d 100644 --- a/src/vs/base/test/common/fuzzyScorer.test.ts +++ b/src/vs/base/test/common/fuzzyScorer.test.ts @@ -1239,7 +1239,7 @@ suite('Fuzzy Scorer', () => { let [multiScore, multiMatches] = _doScore2(target, 'HelLo World'); function assertScore() { - assert.ok(multiScore ?? 0 >= ((firstSingleScore ?? 0) + (secondSingleScore ?? 0))); + assert.ok((multiScore ?? 0) >= ((firstSingleScore ?? 0) + (secondSingleScore ?? 0))); for (let i = 0; multiMatches && i < multiMatches.length; i++) { const multiMatch = multiMatches[i]; const firstAndSecondSingleMatch = firstAndSecondSingleMatches[i]; From d82ec93ee6c108af7d2c5b5a2b0de2ac6bafecaf Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 25 Mar 2026 15:01:14 +0100 Subject: [PATCH 77/83] sessions - fix title for cloud sessions (#304733) * sessions - fix title for cloud sessions * Update src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../sessions/browser/sessionsTitleBarWidget.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.ts b/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.ts index d568036ca54..a2745880adb 100644 --- a/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.ts +++ b/src/vs/sessions/contrib/sessions/browser/sessionsTitleBarWidget.ts @@ -336,7 +336,22 @@ export class SessionsTitleBarWidget extends BaseActionViewItem { return undefined; } - return basename(uri); + const name = basename(uri); + + // For local repositories (file scheme), the basename is not URI-encoded and may + // legitimately contain '%' characters. Decoding in that case can throw or + // incorrectly transform sequences like '%20' into spaces, so return it as-is. + if (uri.scheme === 'file') { + return name; + } + + // For non-file schemes where the basename may be encodeURIComponent-encoded, + // attempt to decode but fall back to the raw name on any error. + try { + return decodeURIComponent(name); + } catch { + return name; + } } private _countUnreadSessions(): number { From c92f8a467239ef53e365a8e27564bfd6301dbab8 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 25 Mar 2026 15:08:31 +0100 Subject: [PATCH 78/83] Skip confirmation dialog when unarchiving a single session (#304718) * fix - update confirmation dialog for archiving sessions * fix - update confirmation dialog for archiving sessions * fix - update detail message for archiving sessions * fix - update confirmation dialogs for archiving sessions * Update src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../agentSessions/agentSessionsActions.ts | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.ts index b501f0a66ba..b4805d349a6 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.ts @@ -179,7 +179,7 @@ export class ArchiveAllAgentSessionsAction extends Action2 { message: sessionsToArchive.length === 1 ? localize('archiveAllSessions.confirmSingle', "Are you sure you want to archive 1 agent session?") : localize('archiveAllSessions.confirm', "Are you sure you want to archive {0} agent sessions?", sessionsToArchive.length), - detail: localize('archiveAllSessions.detail', "You can unarchive sessions later if needed from the Chat view."), + detail: localize('archiveAllSessions.detail', "You can unarchive sessions later if needed from the sessions view."), primaryButton: localize('archiveAllSessions.archive', "Archive") }); @@ -312,24 +312,24 @@ export class UnarchiveAgentSessionSectionAction extends Action2 { const dialogService = accessor.get(IDialogService); const storageService = accessor.get(IStorageService); - const skipConfirmation = storageService.getBoolean(ConfirmArchiveStorageKey, StorageScope.PROFILE, false); - if (!skipConfirmation) { - const confirmed = await dialogService.confirm({ - message: context.sessions.length === 1 - ? localize('unarchiveSectionSessions.confirmSingle', "Are you sure you want to unarchive 1 agent session?") - : localize('unarchiveSectionSessions.confirm', "Are you sure you want to unarchive {0} agent sessions?", context.sessions.length), - primaryButton: localize('unarchiveSectionSessions.unarchive', "Unarchive All"), - checkbox: { - label: localize('doNotAskAgain', "Do not ask me again") + if (context.sessions.length > 1) { + const skipConfirmation = storageService.getBoolean(ConfirmArchiveStorageKey, StorageScope.PROFILE, false); + if (!skipConfirmation) { + const confirmed = await dialogService.confirm({ + message: localize('unarchiveSectionSessions.confirm', "Are you sure you want to unarchive {0} agent sessions?", context.sessions.length), + primaryButton: localize('unarchiveSectionSessions.unarchive', "Unarchive All"), + checkbox: { + label: localize('doNotAskAgain', "Do not ask me again") + } + }); + + if (!confirmed.confirmed) { + return; } - }); - if (!confirmed.confirmed) { - return; - } - - if (confirmed.checkboxChecked) { - storageService.store(ConfirmArchiveStorageKey, true, StorageScope.PROFILE, StorageTarget.USER); + if (confirmed.checkboxChecked) { + storageService.store(ConfirmArchiveStorageKey, true, StorageScope.PROFILE, StorageTarget.USER); + } } } From 7b9578c95159aaf4990d343b1813ee5014a647e6 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 25 Mar 2026 15:08:48 +0100 Subject: [PATCH 79/83] Include metadata in agent sessions trace logging (#304725) * Can't read archived sessions in light mode (fix #304294) * feat - add metadata logging for agent sessions * Update src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsModel.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/vs/sessions/browser/media/style.css | 6 ------ .../chat/browser/agentSessions/agentSessionsModel.ts | 9 +++++++++ .../browser/agentSessions/media/agentsessionsviewer.css | 3 ++- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/vs/sessions/browser/media/style.css b/src/vs/sessions/browser/media/style.css index c36832a96c2..1e3a9eaeae9 100644 --- a/src/vs/sessions/browser/media/style.css +++ b/src/vs/sessions/browser/media/style.css @@ -100,12 +100,6 @@ box-sizing: border-box; } -/* ---- Session List ---- */ - -.agent-sessions-workbench .agent-session-title { - color: var(--vscode-list-activeSelectionForeground); -} - /* ---- Modal Editor Block ---- */ .agent-sessions-workbench .monaco-modal-editor-block { diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsModel.ts b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsModel.ts index ef8449e4096..76ee31512fe 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsModel.ts +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsModel.ts @@ -371,6 +371,15 @@ class AgentSessionsLogger extends Disposable { } } + // Metadata + if (session.metadata && Object.keys(session.metadata).length > 0) { + lines.push(` Metadata:`); + for (const [key, value] of Object.entries(session.metadata)) { + const renderedValue = typeof value === 'string' ? value : safeStringify(value); + lines.push(` ${key}: ${renderedValue}`); + } + } + // Our state (read/unread, archived) lines.push(` State:`); lines.push(` Archived (provider): ${session.archived ?? 'N/A'}`); diff --git a/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css b/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css index 4d7badd32db..4243cea6160 100644 --- a/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +++ b/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css @@ -44,11 +44,12 @@ .agent-session-diff-container { .agent-session-diff-added, .agent-session-diff-removed { - color: unset; + color: unset; } } } + .monaco-list-row.selected .agent-session-item, .monaco-list-row.selected .agent-session-title { color: unset; } From 224a1e164c93941b000dce04cf1caae951f2d0fd Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 25 Mar 2026 15:29:28 +0100 Subject: [PATCH 80/83] Can't read archived sessions in light mode (fix #304294) (#304720) From 2ec87aeb2f86a869d8b0cea00561f00330e2bf17 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 25 Mar 2026 15:33:36 +0100 Subject: [PATCH 81/83] sessions - restore file icons in modal editor titles (#304714) style - remove file icon from modal editor titles --- src/vs/sessions/browser/media/style.css | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/vs/sessions/browser/media/style.css b/src/vs/sessions/browser/media/style.css index 1e3a9eaeae9..ad5ba6ba3d9 100644 --- a/src/vs/sessions/browser/media/style.css +++ b/src/vs/sessions/browser/media/style.css @@ -106,11 +106,6 @@ background: rgba(0, 0, 0, 0.5); } -/* Hide the file icon in modal editor titles */ -.agent-sessions-workbench .modal-editor-title .monaco-icon-label::before, -.agent-sessions-workbench .modal-editor-title .monaco-icon-label > .monaco-icon-label-iconpath { - display: none; -} /* ---- Customization Empty State ---- */ From e852b5875cca2df1146a9373074ce05553489e48 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Wed, 25 Mar 2026 15:37:45 +0100 Subject: [PATCH 82/83] sessions - separate user dir for `--sessions` runs (#304726) * sessions - separate user dir for `--sessions` runs * Update tasks.json --------- Co-authored-by: Benjamin Christopher Simmonds <44439583+benibenj@users.noreply.github.com> --- .vscode/tasks.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.vscode/tasks.json b/.vscode/tasks.json index c5eb312274b..09ba766f0b2 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -235,7 +235,9 @@ "command": ".\\scripts\\code.bat" }, "args": [ - "--sessions" + "--sessions", + "--user-data-dir=${userHome}/.vscode-oss-sessions-dev", + "--extensions-dir=${userHome}/.vscode-oss-sessions-dev/extensions" ], "problemMatcher": [] }, From 29d5ff76cd0cc4b8bb9a36ec73dbeb6e9503db90 Mon Sep 17 00:00:00 2001 From: Shehab Sherif Date: Wed, 25 Mar 2026 16:39:08 +0200 Subject: [PATCH 83/83] Fix copy-paste bug in performance view blocking startup count (#304452) Co-authored-by: Shehab Sherif --- src/vs/workbench/contrib/performance/browser/perfviewEditor.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/performance/browser/perfviewEditor.ts b/src/vs/workbench/contrib/performance/browser/perfviewEditor.ts index b56d0efeeb9..e7202fc4764 100644 --- a/src/vs/workbench/contrib/performance/browser/perfviewEditor.ts +++ b/src/vs/workbench/contrib/performance/browser/perfviewEditor.ts @@ -215,7 +215,7 @@ class PerfModelContentProvider implements ITextModelContentProvider { table.push(['restore secondary viewlet', metrics.timers.ellapsedAuxiliaryViewletRestore, '[renderer]', metrics.auxiliaryViewletId]); table.push(['restore panel', metrics.timers.ellapsedPanelRestore, '[renderer]', metrics.panelId]); table.push(['restore & resolve visible editors', metrics.timers.ellapsedEditorRestore, '[renderer]', `${metrics.editorIds.length}: ${metrics.editorIds.join(', ')}`]); - table.push(['create workbench contributions', metrics.timers.ellapsedWorkbenchContributions, '[renderer]', `${(contribTimings.get(LifecyclePhase.Starting)?.length ?? 0) + (contribTimings.get(LifecyclePhase.Starting)?.length ?? 0)} blocking startup`]); + table.push(['create workbench contributions', metrics.timers.ellapsedWorkbenchContributions, '[renderer]', `${(contribTimings.get(LifecyclePhase.Starting)?.length ?? 0) + (contribTimings.get(LifecyclePhase.Ready)?.length ?? 0)} blocking startup`]); table.push(['overall workbench load', metrics.timers.ellapsedWorkbench, '[renderer]', undefined]); table.push(['workbench ready', metrics.ellapsed, '[main->renderer]', undefined]); table.push(['renderer ready', metrics.timers.ellapsedRenderer, '[renderer]', undefined]);