Skip to content

new model picker in sessions window#295871

Merged
sandy081 merged 10 commits intomainfrom
sandy081/model-picker
Feb 17, 2026
Merged

new model picker in sessions window#295871
sandy081 merged 10 commits intomainfrom
sandy081/model-picker

Conversation

@sandy081
Copy link
Member

No description provided.

Copilot AI review requested due to automatic review settings February 17, 2026 22:06
@sandy081 sandy081 enabled auto-merge (squash) February 17, 2026 22:06
@sandy081 sandy081 self-assigned this Feb 17, 2026
@vs-code-engineering vs-code-engineering bot added this to the February 2026 milestone Feb 17, 2026
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

  • renderElement mutates data.description.style.letterSpacing in 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 of renderElement or 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';
		}

sandy081 and others added 6 commits February 17, 2026 23:19
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…cker.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy link
Member

@TylerLeonhardt TylerLeonhardt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you include a screenshot if the UI is different?

@sandy081 sandy081 merged commit fe7aa51 into main Feb 17, 2026
18 checks passed
@sandy081 sandy081 deleted the sandy081/model-picker branch February 17, 2026 23:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants