* 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>
* 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
* 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>
* 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>
* 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>
* 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>
* 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
- 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)
* 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>
- 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.
- 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)
* 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>
* 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