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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/vs/base/common/product.ts
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,11 @@ export interface IProductConfiguration {
readonly trustedExtensionPublishers?: readonly string[];

readonly extensionRecommendations?: IStringDictionary<IExtensionRecommendations>;
readonly connectorRecommendations?: IStringDictionary<{
readonly name: string;
readonly description: string;
readonly iconUrl: string;
}>;
readonly configBasedExtensionTips?: IStringDictionary<IConfigBasedExtensionTip>;
readonly exeBasedExtensionTips?: IStringDictionary<IExeBasedExtensionTip>;
readonly remoteExtensionTips?: IStringDictionary<IRemoteExtensionTip>;
Expand Down
10 changes: 9 additions & 1 deletion src/vs/sessions/contrib/chat/browser/chat.contribution.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ import { WorktreeCreatedTaskDispatcher, AGENT_HOST_RUN_WORKTREE_CREATED_TASKS_SE
import { AGENT_SESSIONS_SCOPED_INPUT_HISTORY_SETTING } from './sessionsChatHistory.js';
import '../../sessions/browser/mobile/mobileOverlayContribution.js';
import { IsSessionsWindowContext } from '../../../../workbench/common/contextkeys.js';
import { AGENTS_PICKER_IN_ATTACH_CONTEXT_MENU_SETTING, COLLAPSED_SESSION_OPTIONS_SHOW_ICONS_SETTING, COMPARE_AGENTS_ENABLED_SETTING, COMPARE_AGENTS_OPEN_IN_GRID_SETTING, EXPERIMENTAL_NEW_SESSION_COMPOSER_LAYOUT_SETTING, NEW_SESSION_COMPOSER_OPTIONS_EXPANDED_SETTING, NEW_SESSION_WELCOME_MESSAGES_SETTING, NEW_SESSION_WELCOME_NAME_SETTING, NEW_SESSION_WELCOME_PHRASES_SETTING } from '../common/constants.js';
import { AGENTS_PICKER_IN_ATTACH_CONTEXT_MENU_SETTING, COLLAPSED_SESSION_OPTIONS_SHOW_ICONS_SETTING, COMPARE_AGENTS_ENABLED_SETTING, COMPARE_AGENTS_OPEN_IN_GRID_SETTING, EXPERIMENTAL_NEW_SESSION_COMPOSER_LAYOUT_SETTING, NEW_SESSION_COMPOSER_OPTIONS_EXPANDED_SETTING, NEW_SESSION_CONNECTOR_RECOMMENDATIONS_SETTING, NEW_SESSION_WELCOME_MESSAGES_SETTING, NEW_SESSION_WELCOME_NAME_SETTING, NEW_SESSION_WELCOME_PHRASES_SETTING } from '../common/constants.js';
import { SessionsChatBackgroundAvailableContext, SessionsChatBackgroundImageConfiguredContext } from '../../../common/contextkeys.js';
import { Menus } from '../../../browser/menus.js';
import { ISessionsChatViewStateService, SessionsChatViewStateService } from './chatViewStateService.js';
Expand Down Expand Up @@ -645,6 +645,14 @@ Registry.as<IConfigurationRegistry>(ConfigurationExtensions.Configuration).regis
tags: ['experimental'],
experiment: { mode: 'auto' },
},
[NEW_SESSION_CONNECTOR_RECOMMENDATIONS_SETTING]: {
type: 'boolean',
default: false,
scope: ConfigurationScope.APPLICATION,
description: localize('sessions.chat.experimental.connectorRecommendations', "Controls whether the new-session composer recommends connectors that can add work context to chats."),
tags: ['experimental'],
experiment: { mode: 'auto' },
},
[NEW_SESSION_WELCOME_PHRASES_SETTING]: {
type: 'boolean',
default: false,
Expand Down
35 changes: 28 additions & 7 deletions src/vs/sessions/contrib/chat/browser/media/chatWidget.css
Original file line number Diff line number Diff line change
Expand Up @@ -116,21 +116,42 @@
border-radius: var(--vscode-cornerRadius-large) var(--vscode-cornerRadius-large) 0 0;
}

/* Getting-started tip demoted below the input in the experimental composer, matching
the placement of the new-session migration notice. Hidden by the presenter until a
tip is showing, so it reserves no space otherwise. */
.new-session-below-input-surfaces {
position: absolute;
top: 100%;
Comment thread
hawkticehurst marked this conversation as resolved.
Resolved
left: 0;
right: 0;
width: 100%;
margin-top: var(--vscode-spacing-size200);
overflow-y: auto;
}

/* Getting-started tip demoted below the input in the experimental composer. */
.experimental-new-session-composer .new-session-getting-started-tip-below {
width: 100%;
max-width: 800px;
/* Extra top gap so the tip's hover actions, which float above its top edge, clear the input. */
margin: var(--vscode-spacing-size280) auto 0;
margin-top: var(--vscode-spacing-size160);
}

/* As a standalone card (not attached above the input) the tip takes a full border and
rounds every corner, unlike the input-attached notice that squares its joined bottom. */
.new-session-getting-started-tip-below .chat-input-notice {
border-bottom: var(--vscode-strokeThickness) solid var(--vscode-input-border, var(--vscode-widget-border, transparent));
border-radius: var(--vscode-cornerRadius-large);
border: var(--vscode-strokeThickness) solid var(--vscode-contrastBorder, color-mix(in srgb, var(--vscode-foreground) 10%, transparent));
border-radius: var(--vscode-cornerRadius-medium);
background-color: color-mix(in srgb, var(--vscode-foreground) 3%, var(--session-view-background, var(--vscode-editor-background)));
}

:is(.hc-black, .hc-light) .new-session-getting-started-tip-below .chat-input-notice {
border-color: var(--vscode-contrastBorder);
background-color: var(--vscode-editor-background);
}

.agent-sessions-workbench.phone-layout .new-session-below-input-surfaces {
position: static;
order: 1;
flex: 0 1 auto;
min-height: 0;
margin: 0 0 var(--vscode-spacing-size200);
}

.new-chat-session-options .new-chat-session-options-details {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/

.new-session-connector-recommendations {
width: 100%;
color: var(--vscode-foreground);
}

.new-session-connector-recommendations[hidden],
.new-chat-widget-content.no-agent-host .new-session-connector-recommendations {
display: none;
}

.new-session-connector-recommendation-cards {
display: flex;
gap: var(--vscode-spacing-size80);
width: 100%;
padding: var(--vscode-spacing-size20);
box-sizing: border-box;
overflow-x: auto;
scrollbar-width: thin;
}

.new-session-connector-recommendation-card {
position: relative;
flex: 1 0 0;
min-width: 180px;
}

.monaco-button.new-session-connector-recommendation-card-primary {
display: grid;
grid-template-columns: var(--vscode-spacing-size320) minmax(0, 1fr);
column-gap: var(--vscode-spacing-size100);
align-items: start;
width: 100%;
min-height: 100%;
padding: var(--vscode-spacing-size60);
padding-right: var(--vscode-spacing-size320);
box-sizing: border-box;
border: var(--vscode-strokeThickness) solid var(--vscode-contrastBorder, color-mix(in srgb, var(--vscode-foreground) 10%, transparent));
border-radius: var(--vscode-cornerRadius-medium);
background-color: color-mix(in srgb, var(--vscode-foreground) 3%, var(--session-view-background, var(--vscode-editor-background)));
color: var(--vscode-foreground);
text-align: left;
}

.monaco-button.new-session-connector-recommendation-card-primary:hover {
border-color: var(--vscode-focusBorder);
background-color: color-mix(in srgb, var(--vscode-focusBorder) 8%, var(--vscode-editorWidget-background));
}

.monaco-button.new-session-connector-recommendation-card-primary:focus-visible {
outline: var(--vscode-strokeThickness) solid var(--vscode-focusBorder);
outline-offset: calc(-1 * var(--vscode-strokeThickness));
}

.new-session-connector-recommendation-icon {
display: flex;
align-items: center;
justify-content: center;
width: var(--vscode-spacing-size320);
height: var(--vscode-spacing-size320);
border-radius: var(--vscode-cornerRadius-medium);
overflow: hidden;
background-color: var(--vscode-editor-background);
}

.new-session-connector-recommendation-icon img {
display: block;
width: 100%;
height: 100%;
object-fit: contain;
}

.new-session-connector-recommendation-icon > .codicon {
font-size: var(--vscode-codiconFontSize);
color: var(--vscode-descriptionForeground);
}

.new-session-connector-recommendation-content {
min-width: 0;
}

.new-session-connector-recommendation-name {
overflow: hidden;
color: var(--vscode-foreground);
font-size: var(--vscode-fontSize-label1);
font-weight: var(--vscode-fontWeight-semiBold);
text-overflow: ellipsis;
white-space: nowrap;
}

.new-session-connector-recommendation-description {
margin-top: var(--vscode-spacing-size20);
color: var(--vscode-descriptionForeground);
font-size: var(--vscode-fontSize-label2);
line-height: 1.2;
}

.monaco-button.new-session-connector-recommendation-dismiss {
position: absolute;
top: var(--vscode-spacing-size60);
right: var(--vscode-spacing-size60);
display: flex;
align-items: center;
justify-content: center;
width: var(--vscode-spacing-size240);
height: var(--vscode-spacing-size240);
padding: 0;
border: 0;
border-radius: var(--vscode-cornerRadius-small);
background: transparent;
color: var(--vscode-icon-foreground);
}

.monaco-button.new-session-connector-recommendation-dismiss:hover {
background-color: var(--vscode-toolbar-hoverBackground);
}

.monaco-button.new-session-connector-recommendation-dismiss:focus-visible {
outline: var(--vscode-strokeThickness) solid var(--vscode-focusBorder);
outline-offset: calc(-1 * var(--vscode-strokeThickness));
}

:is(.hc-black, .hc-light) .monaco-button.new-session-connector-recommendation-card-primary {
border-color: var(--vscode-contrastBorder);
background-color: var(--vscode-editor-background);
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,17 @@
*--------------------------------------------------------------------------------------------*/

.chat-customization-migration-notice.new-chat-migration-notice {
/* Keep the composer centered independently of the notice's height. */
position: absolute;
top: 100%;
left: 0;
right: 0;
width: auto;
margin-top: var(--vscode-spacing-size160);
/* The composer floats over the chat background wallpaper, which the shared
notice's translucent fill lets read straight through. Composite the same
tint over the opaque session background so the notice stays a legible chip. */
width: 100%;
padding: var(--vscode-spacing-size40) var(--vscode-spacing-size80);
border-color: var(--vscode-contrastBorder, color-mix(in srgb, var(--vscode-foreground) 10%, transparent));
border-radius: var(--vscode-cornerRadius-medium);
background-color: color-mix(in srgb, var(--vscode-foreground) 3%, var(--session-view-background, var(--vscode-editor-background)));
line-height: normal;
}

.hc-black .chat-customization-migration-notice.new-chat-migration-notice,
.hc-light .chat-customization-migration-notice.new-chat-migration-notice {
border-color: var(--vscode-contrastBorder);
background-color: var(--vscode-editor-background);
}

Expand Down
Loading
Loading