new model picker in sessions window#295871
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR introduces an enhanced chat model picker (with curated models, “new” badges, recently-used ordering, and a searchable/collapsible dropdown) and wires it into the Sessions window experience. It also centralizes “chat control” manifest data (restricted participant names + curated models) in LanguageModelsService so it can be reused by both the picker and agent-name restriction logic.
Changes:
- Add curated/recent/new model APIs to
ILanguageModelsService, persist recently-used + seen-new state, and periodically fetch “chat control” data from the product URL. - Introduce a new model picker widget + action item, and integrate it into Sessions’
NewChatViewPane. - Extend the ActionWidget list to support filtering, collapsible sections, badges, and per-row description buttons (with accompanying styling updates).
Reviewed changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| src/vs/workbench/contrib/chat/common/languageModels.ts | Adds curated/recent/new model plumbing + chat-control fetching; exposes restricted participant registry as an observable. |
| src/vs/workbench/contrib/chat/common/participants/chatAgents.ts | Switches agent-name restrictions to use languageModelsService.restrictedChatParticipants (but currently introduces an invalid mid-file import). |
| src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.ts | New model picker UI logic (grouping, curated promotions, upgrade/update/admin gating, filter + collapsible “Other Models”). |
| src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.ts | New action-bar item wrapper for the enhanced picker (tooltip/badge wiring). |
| src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts | Records model usage to populate “recently used” list. |
| src/vs/sessions/contrib/chat/browser/newChatViewPane.ts | Uses the enhanced model picker in the Sessions window chat input. |
| src/vs/platform/actionWidget/browser/actionList.ts | Adds filtering, collapsible sections, badges, and description-button rendering to ActionList. |
| src/vs/platform/actionWidget/browser/actionWidget.ts | Passes ActionList options through and appends the filter UI into the widget container. |
| src/vs/platform/actionWidget/browser/actionWidgetDropdown.ts | Adds passthrough listOptions for dropdown-backed ActionWidgets. |
| src/vs/platform/actionWidget/browser/actionWidget.css | Styles badges + filter input; adjusts row padding/box sizing. |
| src/vs/workbench/contrib/chat/browser/widget/media/chat.css | Adds styling for the model-picker badge and “Manage Models…” link row. |
| src/vs/workbench/contrib/chat/test/common/languageModels.ts | Updates NullLanguageModelsService test stub to implement new service APIs. |
| src/vs/workbench/contrib/chat/test/common/languageModels.test.ts | Updates tests to satisfy new constructor deps (IProductService, IRequestService). |
| src/vs/workbench/contrib/chat/test/browser/chatManagement/chatModelsViewModel.test.ts | Updates mock service to implement new service APIs. |
Comments suppressed due to low confidence (1)
src/vs/platform/actionWidget/browser/actionList.ts:271
renderElementmutatesdata.description.style.letterSpacingin the keybinding branch but never resets it in the other branches (description button / plain description / none). Because rows are virtualized and reused, this can cause stale styling to carry over to unrelated items. Reset any mutated style properties (e.g.letterSpacing) to defaults at the start ofrenderElementor in each branch.
if (element.descriptionButton) {
data.description!.textContent = '';
data.description!.style.display = 'inline';
const button = new Button(data.description!, { ...defaultButtonStyles, small: true });
button.label = element.descriptionButton.label;
data.elementDisposables.add(button.onDidClick(e => {
e?.stopPropagation();
element.descriptionButton!.onDidClick();
}));
data.elementDisposables.add(button);
} else if (element.keybinding) {
data.description!.textContent = element.keybinding.getLabel();
data.description!.style.display = 'inline';
data.description!.style.letterSpacing = '0.5px';
} else if (element.description) {
data.description!.textContent = stripNewlines(element.description);
data.description!.style.display = 'inline';
} else {
data.description!.textContent = '';
data.description!.style.display = 'none';
}
src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.ts
Outdated
Show resolved
Hide resolved
src/vs/workbench/contrib/chat/common/participants/chatAgents.ts
Outdated
Show resolved
Hide resolved
src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.ts
Show resolved
Hide resolved
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…cker.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
TylerLeonhardt
approved these changes
Feb 17, 2026
Member
TylerLeonhardt
left a comment
There was a problem hiding this comment.
Can you include a screenshot if the UI is different?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.