Commit Graph

148672 Commits

Author SHA1 Message Date
Copilot
4f23fabf8a Layer notifications above modal editor backdrop (#302749)
* Initial plan

* Raise notification z-index above modal editor backdrop (#302271)

Notifications (toasts and center) had z-index: 1000 which is below the
modal editor backdrop at z-index: 2540, making them hard to read when a
modal was open. Raised to 2545 so they appear above the modal backdrop
but below quick input (2550) and dialogs (2575).

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>
2026-03-18 14:36:31 +00:00
Benjamin Pasero
3c175229a9 fix - update session icon rendering logic (#302824) 2026-03-18 07:23:45 -07:00
Don Jayamanne
c0c11c5801 Hide cancel button when displaying modified file confirmation (#302821) 2026-03-18 14:12:19 +00:00
Benjamin Pasero
41075b8b7f feat - update task labels for OSS compatibility (#302819) 2026-03-18 15:10:04 +01:00
Benjamin Christopher Simmonds
4863bece27 Fix spinning icon for in-progress CI status checks in sessions window (#302818)
Replace loading icon with clock icon for running checks in CI status widget
2026-03-18 14:06:25 +00:00
Sandeep Somavarapu
44264fdeae Refactor new chat view: rename to workspace, separate session type and isolation pickers (#302797)
* refactor: rename SessionProject to SessionWorkspace and update related references

* fix: update filter placeholder text in project picker to "Search Workspaces..."

* feat: add SessionWorkspace class to represent workspaces for sessions

* feat: implement ProjectPicker class for unified project selection

* fix: update SessionTargetType to use 'copilot-cli' instead of 'cli'

* refactor: rename targetMode to isolationMode in NewSession and related classes

* refactor: rename LocalNewSession to CopilotCLISession and update related references

* feat: set project in session type picker for local sessions

* fix: ensure project is set in session type picker for both remote and local sessions

* fix: reset isolation mode to worktree when isolation option is disabled

* delete file
2026-03-18 13:43:31 +00:00
Benjamin Christopher Simmonds
819f0cd46c Merge pull request #302812 from microsoft/benibenj/unexpected-bird
Ensure terminal instance exists before operations
2026-03-18 14:40:21 +01:00
Sandeep Somavarapu
e8df0398a5 Add per-model configuration support for language models (#302771)
* Add per-model configuration support to LanguageModelsService

* Update chatProvider version to 5 and add configuration schema support for per-model options

* Add per-model configuration support to chat request options

* Revert version number in chatProvider declaration from 5 to 4

* Refactor chat request options to use ILanguageModelChatRequestOptions interface and revert chatProvider version to 4

* Add per-model configuration support in LanguageModelsService and update ActionsColumnRenderer

* Enhance per-model configuration support by merging schema defaults with user config in sendChatRequest

* Add per-model configuration actions and update LanguageModelsService methods

* Optimize model resolution for default vendors by applying per-model configurations directly to resolved models

* Add per-model configuration actions for single model selection in ChatModelsWidget

* Improve label generation for model configuration actions by using propSchema.title and enhancing formatting

* Enhance model configuration action labels to indicate default values in LanguageModelsService

* Add languageModelsService to model action creation for enhanced toolbar actions

* Integrate languageModelsService into model action creation for improved model picker functionality

* Add configuration toolbar actions for models in chat model picker

* Refactor model configuration action handling to utilize languageModelsService for toolbar actions

* Add toolbar actions to model item creation in chat model picker

* Refactor action item rendering to flatten SubmenuActions into a single gear button for context menu access

* Enhance toolbar action interaction by preventing selection on click and updating visibility styles

* Refactor ActionItemRenderer to use a gear button for context menu access and improve toolbar action handling

* Refactor ActionItemRenderer to use inline menu for SubmenuActions and improve context menu handling

* Refactor ActionItemRenderer to use defaultMenuStyles for menu configuration

* Refactor ActionItemRenderer to display a gear button for SubmenuActions that opens an inline menu

* Add submenu support to ActionListItem and update styles for submenu indicator

* Enhance submenu handling in ActionItemRenderer with improved mouse event management and layout adjustments

* Refactor ActionItemRenderer to streamline submenu handling and improve hover interactions

* Prevent hover display for items with submenu actions to avoid conflicts

* Add hardcoded submenu actions for debugging in createModelItem function

* Refactor submenu positioning in ActionList to improve layout and visibility

* Fix submenu positioning to prevent overflow clipping and ensure visibility

* Refactor submenu positioning to append within action list's DOM context and adjust for transform offsets

* Refactor submenu positioning to append within row element and adjust layout for transform offsets

* Enhance submenu structure by adding rowElement to support fixed-position rendering and adjust overflow handling

* Refactor submenu handling to remove rowElement from submenu state and adjust positioning logic for improved layout

* Refactor submenu positioning to use bounding rectangles for accurate placement relative to the row element

* Refactor submenu positioning to append within action list's DOM context for improved layout

* Refactor submenu positioning to append within action-widget container and use fixed coordinates for accurate placement

* Refactor submenu positioning to append directly to the action list's DOM node and adjust placement logic for improved layout

* Refactor ActionList to set position of domNode to relative for accurate submenu positioning

* Remove hardcoded submenu actions from createModelItem and use action's toolbarActions instead

* Prevent hiding submenu when hovering over it to improve user interaction

* Add submenu indicator visibility handling and CSS class for submenu items

* Prevent hiding action widget when focus moves to a submenu

* Always render submenu indicator icon for consistent width and alignment

* Improve focus handling in ActionWidgetService to prevent premature hiding

* Refactor focus handling in ActionWidgetService to improve submenu interaction

* Prevent submenu from being focusable to maintain action widget focus

* Adjust submenu positioning logic to display correctly based on available space

* Add hasActiveSubmenu method to ActionList and update focus handling in ActionWidgetService

* Update hasActiveSubmenu method to account for scheduled submenu visibility

* Adjust submenu positioning to prevent overflow above the action list

* Remove scheduled submenu visibility check from hasActiveSubmenu method

* Enhance submenu positioning logic to dynamically determine expand direction based on available space

* Implement cleanupSubmenu method and update focus handling to ensure proper submenu cleanup on focus loss

* Refactor submenu handling: remove Menu widget and implement direct DOM rendering for submenu items

* Add check icon to submenu items and adjust styling for improved layout

* Immediately clean up submenu on hover change to enhance user experience

* Update submenu styles: increase min-width and adjust padding for better layout

* Refactor hover handling in ActionList: avoid showing hover for submenu items and adjust submenu display logic on hover

* Enhance submenu item rendering: add group label display and adjust styles for improved layout

* Refactor hover handling in ActionList: improve logic to skip re-rendering for active submenus

* Update submenu min-width: increase from 160px to 220px for improved layout

* Update submenu styles: change min-width to max-content for better adaptability

* Update action widget styles: set min-width to 200px for improved layout

* Improve submenu hover handling: prevent hiding when hovering over the same row or submenu

* Update submenu item hover styles: change background and text colors for better visibility

* Fix submenu selector handling: update class name for submenu detection and prevent default mouse down event

* Hide submenu after action execution to improve user experience

* Update submenu item hover styles: change background and text colors for improved visibility

* Refactor LanguageModelsService: update group retrieval logic to use configuration service as the source of truth

* Refactor LanguageModelsService: enhance model configuration handling by removing default properties and managing group updates

* Add model configuration description retrieval to LanguageModelsService

* Refactor LanguageModelsService: update property schema handling to use showInPicker and enhance description formatting

* Add showInPicker property to IJSONSchema and update LanguageModelsService to utilize it

* Refactor LanguageModelsService: update showInPicker handling to improve type safety and simplify value retrieval

* Add showInPicker property to ILanguageModelConfigurationSchemaProperty and update configurationSchema type in ILanguageModelChatMetadata

* Enhance model hover content: include configuration properties marked with showInPicker

* Refactor buildModelPickerItems: pass languageModelsService to createModelItem for improved functionality

* Refactor submenu handling in ActionList: add delay for hiding submenu to improve user experience

* Refactor language model options: rename configuration to modelConfiguration for consistency

* Refactor language model options: rename modelConfiguration to configuration for consistency

* Enhance ChatLanguageModelsDataContribution: add per-model configuration schemas for improved schema validation

* Enhance language model settings management: implement model settings update mechanism and extend interfaces for configuration handling

* Enhance language model integration: add model configuration handling in chat agent requests and update type definitions

* Refactor language model settings handling: remove unused model settings methods and update model configuration retrieval in chat requests

* Refactor language model configuration handling: rename configuration to modelConfiguration for consistency

* Enhance RunSubagentTool: add model configuration retrieval for user-selected model

* Refactor language model configuration: rename 'models' to 'settings' for consistency

* Enhance ActionList: prevent hover display when a submenu is active and adjust submenu positioning to avoid scrollbar overlap

* Enhance ActionList: add description text element and style submenu indicator for better interaction

* Enhance ActionItemRenderer and CSS: adjust submenu indicator positioning and improve hover feedback for submenu items

* Enhance ActionItemRenderer and CSS: wrap description and submenu indicator for improved hover feedback

* Enhance ActionWidget CSS: adjust description group visibility and padding for submenu items

* Refactor ActionItemRenderer: rearrange description group and toolbar for improved layout and hover feedback

* Enhance ActionWidget CSS: adjust padding for submenu indicator for improved layout

* Enhance ActionList hover behavior: update submenu display logic to trigger on description group hover

* Enhance ActionWidget CSS: update submenu indicator visibility on row hover for improved user interaction

* Refactor ActionList: remove submenu check from hover display logic for improved user experience

* Refactor ActionList hover logic: improve submenu visibility handling during mouse movement

* Enhance LanguageModel configuration: add support for enum item labels and descriptions in model picker

* Enhance ActionList submenu rendering: add group headers and descriptions for improved clarity

* Enhance ModelPicker: update label rendering to include model configuration descriptions and re-render on model changes

* Enhance ActionList hover functionality: show hover content in submenu when no submenu actions are present and add CSS styles for hover section

* Enhance ActionList submenu hover styles: adjust padding, font size, and colors for improved readability

* Refactor ActionList submenu rendering: improve separator logic and remove unused header styles

* Enhance ActionList submenu rendering: add group headers with labels and separators for improved organization

* Enhance ActionList submenu hover styles: adjust padding for improved layout

* Refactor ActionList rendering: remove unused description group and submenu indicator styles for cleaner layout

* Enhance ActionList submenu hover styles: adjust padding, font size, and line height for improved readability

* Enhance action list submenu hover styles: adjust padding, font size, and line height for improved readability and layout

* Enhance action list submenu styles: adjust padding for improved layout

* Enhance action list submenu group label styles: increase font size for better visibility

* Update action list submenu group label color for improved visibility

* Enhance ActionList submenu positioning and overflow handling for improved layout and visibility

* Enhance action list item layout: add right padding for improved spacing

* Refactor ActionList submenu: simplify styles and remove unused properties

* Enhance ActionList hover behavior: switch to instant hover display for improved responsiveness

* Enhance ActionList hover behavior: implement hover delay for improved user experience

* Refactor ActionList hover behavior: switch to delayed hover display for improved user experience

* Enhance ModelPickerActionItem: re-render label on model configuration changes

* Enhance ModelPickerWidget: re-register label rendering on language model changes

* Refactor ILanguageModelConfigurationSchemaProperty: rename showInPicker to isVisible for clarity

* Refactor ILanguageModelConfigurationSchemaProperty: rename isVisible to isPrimary for clarity

* Refactor ILanguageModelConfigurationSchemaProperty: rename isPrimary to showInDescription for clarity

* Refactor ILanguageModelConfigurationSchemaProperty: rename showInDescription to showInModelPicker for clarity

* Refactor ILanguageModelConfigurationSchemaProperty: rename showInModelPicker to pinToModelPicker for clarity

* Refactor ILanguageModelConfigurationSchemaProperty: change pinToModelPicker to group for improved clarity

* Refactor LanguageModelConfigurationSchemaProperty and LanguageModelConfigurationSchema: update configurationSchema type and add detailed property definitions

* Refactor LanguageModelConfigurationSchema: simplify schema property definition and enhance documentation

* Refactor LanguageModelConfigurationSchema: enhance documentation for properties and clarify enumItemLabels and group usage

* Refactor ILanguageModelConfigurationSchema: inline schema property definition and enhance documentation for group and enumItemLabels

* Refactor ILanguageModelsService: enhance documentation for getModelConfigurationDescription to clarify its purpose and usage

* Refactor language model configuration handling: replace direct service method calls with utility function for improved clarity and maintainability

* Refactor ActionItemRenderer: remove unused descriptionText property and streamline description handling

* Refactor ActionItemRenderer: streamline description element creation by removing redundant code

* Refactor ActionList: enhance hover content rendering and streamline submenu actions handling

* Refactor ActionListHoverContent: extract group rendering logic into ActionListHoverGroup class

* Refactor ActionListHoverContent and ActionListHoverGroup: enhance event handling and streamline disposables management

* Refactor ActionListHoverGroup and ActionListHoverContent: integrate Menu widget for submenu actions and remove unused CSS styles

* Refactor ActionListHoverGroup and ActionListHoverContent: remove unused Menu widget and enhance submenu item styling

* Enhance ActionList keyboard navigation and accessibility: add support for submenu actions with arrow keys and improve focus handling for submenu items

* Add OpenModelConfigPickerAction and model configuration picker UI component

* Refactor ModelConfigPickerActionItem render method: streamline DOM node creation and class assignment

* Enhance ModelConfigPickerActionItem: add disabled state handling for navigation actions

* Enhance ModelConfigPickerActionItem: add header for submenu actions with group label

* Enhance ModelConfigPickerActionItem: update submenu header to use action label as group title

* Refactor ModelConfigPickerActionItem and ModelPickerActionItem: simplify navigation properties handling and remove unused language models service references

* Enhance ModelConfigPickerActionItem: add navigation-group configuration values display in model picker

* Enhance ModelConfigPickerActionItem and language model interfaces: add support for enum icons in model configuration

* Refactor ModelConfigPickerActionItem and language model interfaces: replace enumIcons with a single icon property for configuration

* Refactor ModelConfigPickerActionItem and language model interfaces: remove icon property from configuration schema

* Refactor ActionList and ActionWidgetService: remove unused submenu actions and related hover logic

* Clarify comment in OpenModelConfigPickerAction: specify that the picker is opened by the ModelConfigPickerActionItem view item on click

* Remove model config picker UI: delete ModelConfigPickerActionItem, remove OpenModelConfigPickerAction and chatModelHasNavigationConfig context key

The config picker dropdown button in the chat input has been removed while keeping the underlying per-model configuration API, settings support, and model management editor intact.

Also fix ILanguageModelConfigurationSchema to not include boolean in properties type (incompatible with IJSONSchema), and add showUnavailableFeatured/showFeatured to IModelPickerDelegate.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Refactor LanguageModelConfigurationSchema: adjust properties type definition for clarity

* Refactor LanguageModelsService: merge configuration options and simplify default checks

* Revert newChatViewPane changes and fix code review issues

- Make showUnavailableFeatured/showFeatured optional on IModelPickerDelegate
  (defaults to true), removing the need to change newChatViewPane.ts
- Fix sendChatRequest merge order: caller's configuration takes precedence
  over stored model config
- Remove dead typeof propSchema !== 'boolean' checks after type cleanup

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Revert unrelated changes to chatModelPicker and modelPickerActionItem

These files were modified to add showUnavailableFeatured/showFeatured
which already landed on main separately. Revert to merge-base versions
to keep the diff clean.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Revert unrelated changes to chatInputPart.ts

Revert to merge-base version — the diff was from main changes
(delegation picker, showUnavailableFeatured/showFeatured) that
will come in on merge.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-18 13:35:05 +00:00
Benjamin Pasero
f7b1318461 chore - remove deprecated setting chat.viewSessions.enabled (#302806) 2026-03-18 06:20:49 -07:00
Lee Murray
3e9085fe09 Add shadow configuration setting and streamline layout behavior (#302801)
* feat: add shadow configuration setting and update layout behavior

* fix: streamline shadow handling in layout and styles

* fix: update shadow variable for no-shadows class to use transparent zero-offset shadows

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* fix: update shadow handling to use Array.from for containers iteration

---------

Co-authored-by: mrleemurray <mrleemurray@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-18 13:19:54 +00:00
Lee Murray
778ef353cd Update hover background color in 2026 Dark theme (#302802)
fix: update list hover background color in 2026 Dark theme

Co-authored-by: mrleemurray <mrleemurray@users.noreply.github.com>
2026-03-18 18:11:56 +05:00
Benjamin Pasero
3b16486d64 feat - add watcher exclusions for performance improvement (#302800) 2026-03-18 17:58:51 +05:00
Benjamin Pasero
db0a6b704e feat - add rule to prevent static imports in critical startup path (#302772)
* feat - add rule to prevent static imports in critical startup path

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-18 17:57:46 +05:00
Lee Murray
331c3ba9c9 Implement OS color scheme auto-detection for new users (#302761)
* Implement auto-detect color scheme feature for new users and update related services

* Add OS color-scheme auto-detection support for new users

Co-authored-by: Copilot <copilot@github.com>

* Add assertions to verify color scheme detection for high contrast themes

Co-authored-by: Copilot <copilot@github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: mrleemurray <mrleemurray@users.noreply.github.com>
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-18 17:57:31 +05:00
Benjamin Christopher Simmonds
aeb06c306d Permissions picker styling (#302753)
* feat: enhance chat permission picker with warning and info labels

* feat: enhance action label styles with opacity and hover effects
2026-03-18 13:57:01 +01:00
Benjamin Christopher Simmonds
6dbea2838a Agent feedback editing (#302790)
* feat: add inline editing for agent feedback comments

* feat: enable editing for code review comments and add updateComment method

* feat: disable action bar actions while editing feedback comment

When inline editing is active on a feedback item, all action bar
buttons (edit, convert, remove) are disabled to prevent conflicting
operations. Actions are re-enabled when editing ends (Enter/Escape/blur).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-18 13:56:52 +01:00
Benjamin Christopher Simmonds
452061cc22 Don't show agent feedback editor input at diff hunk boundaries (#302798)
Prevent feedback display at the start or end of diff hunks in the editor
2026-03-18 13:56:20 +01:00
BeniBenj
eba8d5784b sessions terminal ensure instance exists 2026-03-18 13:53:06 +01:00
Benjamin Pasero
a9b03589fa style - update hover state for agent session toolbar (#302799) 2026-03-18 12:50:33 +00:00
Benjamin Pasero
946a1d5671 debt - stop the log spam (#302793)
* debt - stop the log spam

* lets do actual programming
2026-03-18 12:21:35 +00:00
Lee Murray
1516a39c4e Add configuration updates for preferred light and dark themes (#302764)
* Add configuration updates for preferred light and dark themes on theme selection

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: mrleemurray <mrleemurray@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-18 13:20:58 +01:00
Benjamin Christopher Simmonds
1d2ebdab1c Merge pull request #302769 from microsoft/benibenj/roasted-tahr
Update feedback command input format in SubmitFeedbackAction
2026-03-18 12:33:42 +01:00
Benjamin Pasero
3888a552fc editors - update comment on modal close (#302757)
* editors - update comment on modal close

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-18 12:20:52 +01:00
BeniBenj
df2d7dd7f1 fix: update feedback command input format in SubmitFeedbackAction 2026-03-18 12:10:35 +01:00
Benjamin Pasero
29b235354b Hide Pin/Unpin actions on archived sessions (#302752)
fix - update conditions for `UnpinAgentSessionAction`
2026-03-18 11:59:40 +01:00
Johannes Rieken
8526083573 Remove alwaysQueue from chat input options (#302747) 2026-03-18 10:35:22 +00:00
Copilot
332283e62d Fix Reveal in File Explorer not working in WSL (#299492)
* Initial plan

* Fix Reveal in File Explorer not working in WSL

When connected to WSL, the revealFileInOS command silently failed because
revealResourcesInOS only handled file:// and vscode-userdata:// schemes,
ignoring vscode-remote:// URIs used in WSL connections.

Added support for vscode-remote URIs by using
IRemoteAuthorityResolverService.getCanonicalURI() to resolve them to
local file:// URIs before revealing. Also updated the when-context to
include vscodeRemote scheme so menu items appear for remote resources.

This follows the same pattern used in the external terminal contribution.

Co-authored-by: alexr00 <38270282+alexr00@users.noreply.github.com>

* Replace getCanonicalURI with direct WSL UNC path construction

getCanonicalURI() keeps URIs as vscode-remote://, so instead construct
local UNC paths (\\wsl$\DistroName\...) directly from WSL remote URIs
by parsing the authority to extract the distribution name.

Co-authored-by: alexr00 <38270282+alexr00@users.noreply.github.com>

* Remove remote from whens

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: alexr00 <38270282+alexr00@users.noreply.github.com>
2026-03-18 10:12:21 +00:00
Benjamin Christopher Simmonds
880c58310f Run action polish (#302478)
* Run action polish

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* .

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-18 10:51:21 +01:00
Benjamin Pasero
0b7c2423fa Modals should support a state when hitting Esc asks the user for confirmation (fix #302232) (#302710) 2026-03-18 10:09:58 +01:00
Paul
58f7811b3d Add chat perf markers (#302491) 2026-03-18 00:55:05 -07:00
Eleanor Boyd
baf2716e8e Merge pull request #302584 from eleanorjboyd/broad-unicorn 2026-03-17 23:36:23 -07:00
Megan Rogge
c81fa6ff70 add logs to resolveEnv (#302582) 2026-03-18 05:56:48 +00:00
Josh Spicer
6f52636990 feat: add harness filtering layer to Chat Customizations (#302606)
* feat: implement customization harness service and UI toggle for AI customizations

* refactor: extract shared harness service base class and factories

- Move CustomizationHarnessServiceBase, harness descriptor factories,
  and user root helpers to common/customizationHarnessService.ts
- Core and sessions implementations now extend the base class with
  just configuration (~130 lines each reduced to ~40)
- Centralize ~/.copilot, ~/.claude, ~/.agents path knowledge
- Parameterize storage source extras (extension vs builtin)
- Add tablist accessibility: role=tablist, aria-label, roving tabIndex,
  arrow-key keyboard navigation, focus-visible outline
- Use scoped DisposableStore for harness toggle pill listeners

* fix: initialize _activeHarness in constructor to avoid define-class-fields error

* feat: move harness selector to sidebar dropdown, add per-harness section filtering

- Move harness toggle from content area pills to sidebar dropdown
- Use VS Code quick pick for harness selection (native UX pattern)
- Add hiddenSections to IHarnessDescriptor for per-harness section visibility
- Claude harness hides Agents and Hooks sections (not supported)
- Rename VS Code harness to 'Local' with Codicon.vm icon
- Use Codicon.worktree for CLI and Codicon.claude for Claude
- Sessions window registers only CLI harness (dropdown hidden)
- Reactively rebuild sidebar sections on harness change
- Remove old pill toggle from list widget
- Style dropdown with VS Code dropdown theme variables

* fix: filter create targets by active harness

- Hide 'New X (User)' dropdown option in core when a restricted harness
  (CLI/Claude) is active, since the file would be created in the VS Code
  profile directory which isn't visible under those filters
- Sessions always shows User option (AgenticPromptsService routes to
  CLI-accessible paths like ~/.copilot/)
- Update add button when harness changes so dropdown reflects new state

* fix: filter workspace directory picker by active harness subpaths

- Add workspaceSubpaths to IHarnessDescriptor for per-harness workspace
  directory filtering in the creation picker
- Claude harness restricts to .claude/ directories only
- CLI harness allows .github/, .copilot/, .agents/, .claude/ directories
- Local harness has no restriction (undefined = show all)
- Add getActiveDescriptor() to ICustomizationHarnessService for callers
  that need the full descriptor
- CustomizationCreatorService now filters the directory picker based on
  the active harness's workspaceSubpaths
2026-03-17 22:03:38 -07:00
Peng Lyu
145c1854e7 fix #302003, support zoom in image carousel. (#302652)
* fix #302003, support zoom in image carousel.

* resolve comments
2026-03-18 15:54:11 +11:00
Paul
174e9094f2 Fix debug detail panel scroll (#302648) 2026-03-17 21:29:52 -07:00
Connor Peet
44f96cdf61 plugins: add marketplace to config when installing from source (#302638)
- When a plugin is installed via "Install Plugin from Source", the source
  repository is now automatically added to the chat.plugins.marketplaces
  setting so it appears in the marketplace management UI.
- Deduplicates by canonical ID to avoid adding the same marketplace twice.

Fixes https://github.com/microsoft/vscode/issues/302512

(Commit message generated by Copilot)
2026-03-17 21:28:59 -07:00
Connor Peet
b5def30ae8 Merge pull request #302639 from microsoft/connor4312/agent-host-types2
agentHost: migrate to use protocol types
2026-03-17 21:21:51 -07:00
Justin Chen
12373f48a1 revert disposable handling of newly created tools. (#302646)
fix broken terminals in uncollapsed thinking modes
2026-03-18 04:06:29 +00:00
Peng Lyu
070688f6e6 fix #302202 fix #301997 Deduplicate consecutive carousel images and add title fallback (#302568)
* fix #302202 fix #301997 Deduplicate consecutive carousel images and add title fallback

* fix: address PR review feedback - add kind:reference, fix test mock, dedup helper
2026-03-17 20:40:04 -07:00
Connor Peet
2cd7a84eef tests and build 2026-03-17 20:34:42 -07:00
Connor Peet
358fba61c7 plugins: support flat MCP server map format in .mcp.json (#302583)
* plugins: support flat MCP server map format in .mcp.json

- The _parseMcpServerDefinitionMap method previously required a wrapper
  `{ mcpServers: { ... } }` object. Some .mcp.json files use a flat
  format where server entries are at the top level without the mcpServers
  wrapper. This extracts a resolveMcpServersMap helper that accepts both
  formats, so plugins with either style are discovered correctly.
- Adds tests for the new resolveMcpServersMap function.

Fixes https://github.com/microsoft/vscode/issues/302576

(Commit message generated by Copilot)

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-17 20:16:31 -07:00
Connor Peet
2a03980067 Merge remote-tracking branch 'origin/main' into connor4312/agent-host-types2 2026-03-17 20:15:51 -07:00
Connor Peet
2418b24d9f agentHost: migrate to use protocol types
- Migrates to use AHP types that are synced via `npx tsx scripts/sync-agent-host-protocol.ts`
- One big churn was migrating out of URIs as rich objects in the protocol.
  We can't really shove our own `$mid`-type objects in there. I also explored doing a
  generated translation layer but I had trouble getting one I was happy with.
- This tightens up some type safety in general and fixes some areas where vscode had
  silently/sloppily diverged from the protocol types.
2026-03-17 20:10:45 -07:00
Connor Peet
42fadb3845 plugins: add manage plugin marketplaces command (#302631)
- Adds a 'Chat: Manage Plugin Marketplaces' command (f1) that lists
  configured marketplaces and offers actions: show plugins, open the
  cloned directory in the OS file manager, or remove the marketplace.
- Adds a globe icon button in the Agent Plugins - Installed view title
  bar for quick access to the marketplace management flow.
- Extends the @agentPlugins search to also filter by marketplace name,
  so 'Show Plugins' correctly narrows results to that marketplace.

Fixes https://github.com/microsoft/vscode/issues/302513

(Commit message generated by Copilot)
2026-03-18 01:58:49 +00:00
dileepyavan
8a3bfca4c6 Reverting sandbox manager changes in main. (#302625)
* changes

* fixing merge issue
2026-03-18 01:51:54 +00:00
Peng Lyu
9724cf9383 Merge pull request #302621 from microsoft/rebornix/continuous-heron
fix: update hover selector for navigation arrows in image carousel
2026-03-17 18:46:33 -07:00
Justin Chen
d1cb3f5108 better progress rendering for thinking vs. normal progress (#302615)
better progress rendering
2026-03-17 18:46:31 -07:00
Sandeep Somavarapu
ea5ef7532c Sessions: Unified project picker and target mode picker (#302375)
* Refactor NewChatWidget to use ProjectPicker for unified project selection

* Enhance project picker to migrate legacy storage for recently picked projects and last selected project

* Fix separator visibility for extension pickers in NewChatWidget toolbar

* Remove unused separator for extension pickers in NewChatWidget

* Enhance IsolationModePicker to support cloud mode and update visibility logic in NewChatWidget

* Refactor IsolationModePicker to TargetPicker and update related logic for session target selection

* Add padding to chat-full-welcome pickers container for improved layout

* Update hover styles for project picker action label to improve visibility

* Refactor project listing in ProjectPicker to deduplicate and sort projects by type

* Add extension toolbar pickers for remote sessions in NewChatWidget

* Add checked property to project items in ProjectPicker for selection indication

* Set repo URI from project picker on session initialization

* Update visibility of branch and sync indicators based on repository selection in NewChatWidget

* Update target mode labels in TargetPicker for clarity

* Improve styling of project picker button for better visibility

* fix: correct isolation option logic in TargetPicker initialization

* fix: update isolation option logic to treat false as disabled

* fix: add cancellation support for project selection in NewChatWidget

* fix: add fireEvent parameter to setSelectedFolder and setSelectedRepo methods in ProjectPicker

* Address PR feedback: fix trust revert, use GITHUB_REMOTE_FILE_SCHEME, fix setRepository behavior

- Fix trust denial to revert to previous project selection (folder or repo)
  instead of assuming previous URI is always a local folder
- Replace hardcoded 'github-remote-file' with GITHUB_REMOTE_FILE_SCHEME constant
- Keep worktree mode when repository is undefined (disable instead of switching)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Address PR feedback on projectPicker.ts

- Rename storage keys to sessions.* namespace
- Remove repoId from IProjectSelection (URI encodes identity)
- Store URIs as UriComponents instead of strings
- Consolidate setSelectedFolder/setSelectedRepo into single setSelectedProject API
- Generalize removeFromRecents to work with any project URI
- Extract command string constants (COMMAND_BROWSE_FOLDERS/REPOS)
- Add legacy key migration for renamed storage keys

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Address PR feedback: remove label from IProjectSelection, use IUriIdentityService

- Remove label from IProjectSelection; compute it internally via _getProjectLabel()
- Use IUriIdentityService for URI equality checks instead of string comparison
- Remove unused isEqual import

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Unify IsolationMode and TargetMode, replace setRepository with setProject

- Remove IsolationMode type; use TargetMode everywhere
- Replace isolationMode getter with isWorktree/isFolder/isCloud booleans
- Replace setRepository + setCloudMode with single setProject(ITargetPickerProject)
- Rename setPreferredIsolationMode → setPreferredMode, setIsolationMode → setMode
- Rename isolationMode field in draft state to targetMode
- Update newSession.ts to use TargetMode

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Extract ISessionProject to shared types file

- Create src/vs/sessions/contrib/sessions/common/types.ts with ISessionProject
- ISessionProject has kind, optional uri, optional repository — a global concept
- IProjectSelection (exported from projectPicker.ts) narrows it with required uri
- TargetPicker.setProject accepts ISessionProject (uri optional for state updates)
- Remove ITargetPickerProject — replaced by ISessionProject

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Refactor ISessionProject to SessionProject class

- Convert ISessionProject interface to SessionProject class with constructor(uri, repository?)
- Derive isFolder/isRepo from URI scheme instead of explicit kind field
- Add withRepository() for creating copies with updated repository
- Remove kind from IStoredProject and IDraftState (derived from URI)
- Update all consumers to use new SessionProject(uri) constructor

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Export GITHUB_REMOTE_FILE_SCHEME from sessionProject.ts, rename types.ts

- Rename types.ts → sessionProject.ts
- Export GITHUB_REMOTE_FILE_SCHEME from the common layer
- Update all imports across sessions codebase to use the new canonical location
- githubFileSystemProvider.ts now re-exports from sessionProject.ts

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Remove important from project picker CSS

* Fix RemoteNewSession.targetMode to return 'cloud' instead of 'worktree'

* Remove label from IStoredProject, compute from URI on demand

* Remove setPreferredMode/setMode, use preferredMode parameter on setProject

* Remove GITHUB_REMOTE_FILE_SCHEME re-export from githubFileSystemProvider

* Remove unused setVisible from TargetPicker

* Add SessionProject to INewSession interface

- Add project property and setProject method to INewSession
- Implement in LocalNewSession and RemoteNewSession
- setRepoUri now delegates to setProject internally
- Update NewChatWidget to use setProject instead of setRepoUri

* Remove repoUri and setRepoUri from INewSession, use project instead

* Remove redundant target from draft state, derive from target picker

- Remove target (AgentSessionProviders) from IDraftState — redundant with targetMode
- Replace _currentTarget field with getter derived from _targetPicker.isCloud
- Simplify _onProjectSelected to use target picker state directly

* Unify session creation through _onProjectSelected

- _createNewSession is now a simple session factory (no trust handling)
- Initial session creation routes through _onProjectSelected when a
  project was restored, ensuring trust is handled consistently
- _onProjectSelected always creates a new session and sets the project
- Removes duplicate trust handling from _createNewSession

* Remove redundant repoUri change listener from _setNewSession

* Only store targetMode in draft state for local sessions

* Use session.project as source of truth instead of projectPicker.selectedProject

- Read project from _newSession.value?.project throughout the widget
- Update session project when repository is resolved in _openRepository
- _updateTargetPickerState prefers session project over picker selection
- Reduces coupling to the picker's internal state

* Pass SessionProject as parameter to _createNewSession

* Rename ModePicker.setRepository to reset()

* Remove redundant targetMode session listener

The branch picker visibility is already handled by TargetPicker.onDidChange.
Keep the disabled listener — needed for async extension-driven state changes.

* Only open repository for folder projects, not repos

* Clean up _openRepository: read session at resolve time, remove defensive fallbacks

* Fix URI.revive error for legacy string URIs in stored projects

Add _reviveUri helper that handles both UriComponents (new) and
plain string (legacy) formats from storage.

* Migrate string URIs to UriComponents on load, remove _reviveUri

Convert legacy string URI format to UriComponents during deserialization
and re-persist. All runtime code now uses URI.revive safely.

* Remove all legacy storage migration code from ProjectPicker

* Restore legacy folder/repo picker migration, only remove string→UriComponents migration

* Only recreate session when project type changes (folder↔repo)

* Revert: always create new session when project changes

* Pass project to _updateTargetPickerState to avoid stale session state

* Inline _updateTargetPickerState and remove method

* Force Folder mode for non-git projects, disable picker when no repo

* Fix target mode restore: use _createNewSession for restored projects

Don't route restored projects through _onProjectSelected — the target
picker was already correctly configured by _restoreState with the
preferred mode. Calling _onProjectSelected would re-call setProject
without the preferred mode, losing the restored state.

* Remove early return in setProject, always update trigger label

* Default to worktree on project change, simplify setProject

Remove _preferredLocalMode — target always resets to worktree when
a new folder with git is selected, forced to folder when no git.

* Route restored projects through _onProjectSelected, remove preferredMode

- Initial session creation always goes through _onProjectSelected
- Remove preferredMode parameter from TargetPicker.setProject
- Remove targetMode from IDraftState (derived from project)

* Restore targetMode from draft state via _openRepository preferredMode

Store targetMode in draft, pass it through _openRepository to
_targetPicker.setProject when the git repo resolves.

* Reset target mode only on user project change, retain on repo resolve

- setProject takes resetMode flag instead of preferredMode
- _onProjectSelected passes resetMode=true (user action → reset to worktree)
- _openRepository passes resetMode=false (repo resolving → keep current mode)
- Remove targetMode from draft state — no longer needed for restore
- Simplify _openRepository signature

* Fix resetMode: persist flag until repo resolves

When resetMode=true is passed but the project has no repo yet,
store _pendingReset so the mode resets to worktree when the
repo resolves in a subsequent setProject call.

* Simplify: never reset target mode on project change

Target mode is retained across project changes. Only forced transitions:
- repo → cloud
- folder without git → workspace
- cloud → folder with git → worktree (switching back from cloud)
User's explicit dropdown choice (worktree/folder) is always respected.

* Don't force workspace for non-git folders, keep current mode disabled

Only forced transitions: repo→cloud, cloud→folder=worktree.
Non-git folders show current mode as disabled until repo resolves.

* Show Folder mode for non-git folders when isolation option is enabled

* Default to worktree always for folder projects

* Refactor TargetPicker: extract _updateMode, simplify disabled state

- Extract mode logic into _updateMode(), called from setProject and config change
- Folder with git → worktree, folder without git → workspace, repo → cloud
- Picker only enabled when folder has git repo and isolation option is enabled

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-17 18:45:46 -07:00
Peng Lyu
e8efa92741 fix: update hover selector for navigation arrows in image carousel 2026-03-17 18:01:22 -07:00
Connor Peet
5d7e4c1646 chat: populate githubRepo for GitUri marketplace references (#302596)
* chat: populate githubRepo for GitUri marketplace references

When a plugin marketplace reference is a full GitHub URL (e.g.
https://github.com/anthropics/claude-code) parsed as a GitUri, the
githubRepo property was not being set. This caused the AgentPluginEditor
to render the marketplace link as plain text instead of a clickable link.

- Add extractGitHubRepo helper that extracts owner/repo from GitHub URLs
- Set githubRepo on GitUri references when the authority is github.com
- Also handle SCP-style references (git@github.com:org/repo.git)

Fixes https://github.com/microsoft/vscode/issues/301288

(Commit message generated by Copilot)

* pr comments
2026-03-17 17:29:42 -07:00