* Refactor new chat pane pickers into self-contained widgets
Extract picker logic from NewChatWidget into independent widget classes
that follow a consistent pattern (trigger button + action list dropdown):
- RepoPicker: Cloud repository selection with storage persistence,
recently used list, and browse command integration
- CloudModelPicker: Cloud model selection from session option groups
- IsolationModePicker: Worktree/Folder mode using action widget
- BranchPicker: Git branch icons
Simplify RemoteNewSession:
- getModelOptionGroup/getOtherOptionGroups for extension option groups
- When-clause evaluation and context key listening
- Remove dead code (getRepositoryOptionGroup, _syncValuesFromService,
onDidChangeOptionValues, _cachedRepoGroup)
Use instantiation service for session object creation.
Add toolbar pickers CSS for flex layout.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Use resolved model group ID instead of hardcoded 'models'
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Validate storage shape when restoring repo picker state
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Guard _initDefaultModel against overwriting user's model selection
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Exclude repository option groups from getOtherOptionGroups
Prevents duplicate repo selection UI when extension registers a
repositories option group alongside the dedicated RepoPicker widget.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Re-add onDidChangeSessionOptions listener to RemoteNewSession
Ensures UI re-renders when an extension updates session options
(e.g. after browse command), and disabled state is re-evaluated.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Revert "Re-add onDidChangeSessionOptions listener to RemoteNewSession"
This reverts commit 0ed09f1fb9.
* Revert "Exclude repository option groups from getOtherOptionGroups"
This reverts commit 08370f78a3.
* Revert "Guard _initDefaultModel against overwriting user's model selection"
This reverts commit d5e0b6dac7.
* Revert "Validate storage shape when restoring repo picker state"
This reverts commit 22b9719032.
* Revert "Use resolved model group ID instead of hardcoded 'models'"
This reverts commit f81f5496e7.
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Initial plan
* fix: stop Escape propagation in settings list widgets to prevent modal dialog from closing
When editing a list item in the settings editor (e.g., Add Item for
less.lint.validProperties), pressing Escape should cancel the edit
operation, not close the entire modal settings dialog.
The Escape key handlers in ListSettingWidget and
ObjectSettingDropdownWidget were calling preventDefault() but not
stopPropagation(), allowing the event to bubble up to the modal
container's Escape handler which closed the dialog.
Fixes#296337
Co-authored-by: bpasero <900690+bpasero@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: bpasero <900690+bpasero@users.noreply.github.com>
* chat: add plugins.enabled preview setting
Adds a new 'chat.plugins.enabled' preview setting to control whether plugins
are available in chat. When disabled, both IAgentPluginService will return no
plugins and IPluginMarketplaceService will return no marketplace plugins.
- Adds PluginsEnabled constant to ChatConfiguration enum
- Registers 'chat.plugins.enabled' boolean setting with default value true
- Gates AgentPluginService to return empty plugin lists when disabled
- Gates PluginMarketplaceService to return no marketplace plugins when disabled
(Commit message generated by Copilot)
* refresh the marketplace when enablement or upstreams change
Adds a search icon to the Agent Plugins - Installed view toolbar to allow
users to easily browse and search for agent plugins, matching the pattern
already established in the MCP Servers view.
- Creates AgentPluginsBrowseCommand action that opens the extensions search
with the @agentPlugins filter
- Registers the command in the view toolbar (MenuId.ViewTitle)
- Exports InstalledAgentPluginsViewId constant for consistent view ID usage
- Adds necessary imports for Action2, MenuId, Codicon, and services
Fixes https://github.com/microsoft/vscode/issues/297269
(Commit message generated by Copilot)
The 'Open Plugin Folder' action was incorrectly using IOpenerService.open() on the
plugin directory, which attempted to open the directory in the editor, resulting in
an error page. Fixed to use the 'revealFileInOS' command instead, which properly
reveals the folder in the file explorer.
Changes:
- Replace IOpenerService with ICommandService dependency
- Use 'revealFileInOS' command to reveal the plugin folder
- Update label from 'Open Containing Folder' to 'Open Plugin Folder'
- Open plugin URI directly instead of its parent directory
Fixes https://github.com/microsoft/vscode/issues/297250
(Commit message generated by Copilot)
Replace the manage plugins quick pick UI with a direct opening of the
extensions marketplace with @agentPlugins search pre-filled. This provides
a simpler UX by removing an extra dialog layer.
- Simplifies ManagePluginsAction to open extensions sidebar with preset search
- Removes the entire quick pick UI and related helper functions
- Users can now directly browse and install plugins from the marketplace
Fixes https://github.com/microsoft/vscode/issues/297368
Fixes https://github.com/microsoft/vscode/issues/297517
(Commit message generated by Copilot)
* chat: support installing plugins from private marketplaces
Adds support for installing plugins from private git repositories, git URIs,
and file paths. Introduces a new agentPluginRepositoryService to handle
cloning and managing custom marketplace repositories.
- Extracts shared repository logic into a dedicated common service
- Adds support for fallback to private repo cloning when public marketplace
lookup fails
- Allows \https://\ and SCP-style git URIs for marketplace references
- Allows \ile:///\ URIs for local marketplace directories
- Adds comprehensive unit tests for new marketplace functionality
Fixes https://github.com/microsoft/vscode/issues/297524
(Commit message generated by Copilot)
* comments and ci
* bump
When the user tries to send a message without having selected a folder
(Local/Background) or repository (Cloud), automatically open the
relevant picker instead of silently doing nothing.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
sessions welcome: restart extension host after setup to fix model registration
After the welcome overlay completes (extension installed + user signed in),
restart the extension host so the copilot-chat extension picks up the new
auth session cleanly. Without this, the extension activates before the auth
provider is ready, gets stuck in GitHubLoginFailed, and models never appear.
The overlay stays visible during the restart so the user doesn't see a
broken intermediate state. Dismiss is controlled by the contribution via
an autorun watching isComplete, not by the overlay itself.