mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-08 09:08:48 +01:00
c065b175fdbadc9fc204d668ccdd8e7e0155c63b
149639 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
2fdea17467 | Merge branch 'main' into dev/mjbvz/colossal-cheetah | ||
|
|
019cef34cb | Merge branch 'main' into dev/mjbvz/empirical-toucan | ||
|
|
a283b749a4 |
add diffs to thinking headers (#304967)
* add diffs to thinking headers * address comments |
||
|
|
834c70aba7 | Merge branch 'main' into dev/mjbvz/empirical-toucan | ||
|
|
cf85bb5171 |
docs: add error construction analysis guidance to fix-errors skill and prompt
Teach the fix-error workflow to read error construction code before proposing fixes. Instead of hardcoding knowledge about specific error types (e.g., listener leak categories), the AI is instructed to: 1. Search for where the error is constructed in the codebase 2. Read the surrounding code to understand conditions, categories, thresholds 3. Use that understanding to determine the correct fix strategy Includes a listener leak example showing how reading ListenerLeakError construction in event.ts reveals the dominated/popular classification. Relates to #289777 |
||
|
|
bc8f9ef3d6 |
Allow the browser open command to reuse an existing tab (#304914)
* Allow the browser open command to reuse an existing tab * fix query matching |
||
|
|
cdc3dc4680 |
Merge pull request #304956 from microsoft/osortega/moral-impala
Add pull request state icon support to session data and related components |
||
|
|
adfe56f4e9 | Comments and remove icon | ||
|
|
6d15406cd5 |
Merge pull request #304916 from microsoft/copilot/evident-constrictor
sessions: refine project grouping in agent sessions view |
||
|
|
2ce238e7e5 |
Chat Session Customizations initial Sketch (#304532)
* Add ChatSessionCustomizationsProvider proposed API New types in chatSessionCustomizations.d.ts: - ChatSessionCustomizationType enum (well-known group IDs) - ChatSessionCustomizationStorageLocation enum - ChatSessionCustomizationItem, ChatSessionCustomizationItemGroup - ChatSessionCustomizationsProvider (provideCustomizations + resolveCustomizationDeletion) New registration function in chatSessionsProvider.d.ts: - chat.registerChatSessionCustomizationsProvider(chatSessionType, provider) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Implement ChatSessionCustomizationsProvider e2e plumbing Protocol: DTOs and 5 new methods on MainThread/ExtHost shapes. Ext host: registerChatSessionCustomizationsProvider, provideCustomizations, resolveCustomizationDeletion proxy methods. Type converters: ChatSessionCustomizations.fromItem/fromGroup. Main thread: bridge with per-handle emitters, harness descriptor registration. Service: IChatSessionCustomizationsProvider + registerCustomizationsProvider, getCustomizations, resolveCustomizationDeletion on IChatSessionsService. Harness: registerContributedHarness() on ICustomizationHarnessService, derived observable merges built-in + contributed harnesses. UI: AICustomizationListWidget reads from provider when extension harness is active, falls back to IPromptsService for built-in harnesses. Setting: chat.customizations.providedByExtensions.enabled (experimental). Command registration: openNewChatSessionInPlace for all contributions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Unhardcode AgentSessionProviders to support extension-contributed session types Widen type annotations from AgentSessionProviders enum to AgentSessionTarget across session target picker, delegation picker, welcome view, and utility functions. Add default cases to exhaustive switch statements. Fix chatInputPart getActiveSessionType to fall back to getChatSessionType for extension-contributed URIs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add joshbot extensionDevelopmentPath to Run and Compile Code - OSS task Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Wire provider group commands to create buttons in customization UI When an extension-contributed harness is active, buildCreateActions() reads commands from the provider's group data instead of the harness descriptor. Commands flow through the full plumbing: extension → protocol DTO → main thread → service → list widget Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add error handling to ext host customizations provider methods Wrap provideCustomizations and resolveCustomizationDeletion in try-catch to prevent extension errors from crashing the ext host. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Subscribe to onDidChangeCustomizations in list widget for live updates Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix group commands race condition, remove resolveCustomizationDeletion Commands bug: _fetchItemsFromProvider no longer sets _currentGroupCommands as a side effect. Commands are now extracted in loadItems() after the section-guard check, eliminating races from computeItemCountForSection. Deletion: removed resolveCustomizationDeletion from the full stack (proposed API, protocol, ext host, main thread, service, mocks). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add NOTES.md with open design items for cross-harness customizations Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update NOTES.md with pattern analysis and concrete context proposal Analyzed TreeDataProvider, StorageSourceFilter, CompletionItemProvider, and CodeActionProvider patterns. Proposed ChatSessionCustomizationsContext parameter with discoveredItems for provider-as-curator model. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Simplify cross-harness approach: pull via chatPromptFiles API No new API needed. Extensions use existing chat.customAgents, chat.skills, chat.instructions arrays to discover global items and merge them in provideCustomizations. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add swap file for VIM 9.1 configuration * Remove swap file for VIM configuration * Fix JoshBot task: inline arg into command string Shell tasks with && in command don't work with separate args array. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix create buttons: call updateAddButton after loadItems buildCreateActions reads _currentGroupCommands which is populated in loadItems. Calling updateAddButton before loadItems meant commands were always undefined for extension harnesses. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Guard extension customizations behind setting as a full feature gate Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix missing Hooks section, remove redundant config check - Add 'hooks' case to sectionToCustomizationGroupIds - Remove dead UseCustomizationsProvider check from widget (already enforced at registration in mainThreadChatSessions) - Remove unused IConfigurationService and ChatConfiguration imports Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Wire itemCommands to context menu for extension harness items Extension-provided itemCommands now appear in the right-click context menu on customization items when a non-built-in harness is active. Commands receive the item id and uri as arguments. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add inSessions flag to Launch Component Explorer task Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix component fixtures: add IChatSessionsService mock AICustomizationListWidget now depends on IChatSessionsService. Add mock to both list widget and management editor fixtures. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Refactor ChatSessionCustomizationItem: remove id property and update related code * Remove JoshBot task from tasks.json Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Rename setting to chat.customizations.providerApi.enabled Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Replace hardcoded harness checks with hasCustomizationsProvider Remove all CustomizationHarness.VSCode/CLI/Claude comparisons from the list widget. Instead check chatSessionsService.hasCustomizationsProvider() which works for any harness — built-in or extension-contributed. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add TODO comments to proposed API for open design questions Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Remove NOTES.md Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add TODO: Remove hardcoded providers from core Mark all knownProvider/knownType if-else patterns that branch on whether a session type is in the AgentSessionProviders enum. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Raymond Zhao <7199958+rzhao271@users.noreply.github.com> |
||
|
|
ef6d5f314e |
fix: send user preferences to TS server even without visible editor
When ensureConfigurationForDocument is called and no visible text editor is found for the document, getFormattingOptions returns undefined and the method returns early without sending any configuration including user preferences like preferTypeOnlyAutoImports to the TS server. This causes source.addMissingImports to ignore the user's preferTypeOnlyAutoImports setting. Fix by falling back to undefined formatting options when no visible editor is found, ensuring user preferences are always sent. Closes #272479 |
||
|
|
91826e61d8 |
fix: enable zoom for SVGs without explicit width/height dimensions
SVG images that rely solely on a viewBox attribute (without explicit width/height) could not be zoomed in the image preview because they have no intrinsic dimensions. CSS zoom had no effect since the SVG would simply re-render to fill whatever container size it was given. - Set explicit minWidth/minHeight on the image element when naturalWidth/naturalHeight are 0, giving CSS zoom concrete pixel dimensions to scale - Handle firstZoom() division by zero when naturalWidth is 0 by defaulting to scale 1x - Clear explicit dimensions when returning to scale-to-fit mode Fixes #240638 |
||
|
|
451b858997 |
fix: use conic-gradient for image preview transparency checkerboard
The transparency checkerboard pattern in the image preview used two overlapping linear-gradient(45deg, ...) backgrounds with offset positions. At certain zoom levels, subpixel rendering caused visible triangular artifacts at the gradient boundaries. Replace with a single conic-gradient per theme, which creates a clean four-square checkerboard tile without diagonal edges, eliminating the rendering artifacts at all zoom levels. Closes #229565 |
||
|
|
550180ac08 | Merge remote-tracking branch 'origin/main' into connor4312/fix-plugin-root | ||
|
|
21b628e164 | Add pull request state icon support to session data and related components | ||
|
|
9a911ce780 | Merge branch 'main' into dev/mjbvz/xenacious-roundworm | ||
|
|
c2e1f3bef2 |
chore: give pr pipeline release read permissions (#304929)
The core-ci task requires reading some companion extension releases. This PR modifies the permissions to allow the build to read those releases. |
||
|
|
031c0ad0c4 | Merge branch 'main' into dev/mjbvz/colossal-cheetah | ||
|
|
d9bb1c3155 |
Also do attach for goto symbols (#304841)
a missed part of https://github.com/microsoft/vscode/pull/304521 this adds the same handling of shift+enter for goto symbols just like anything & workspace symbols quick access. |
||
|
|
722825e1de | Merge branch 'main' into dev/mjbvz/empirical-toucan | ||
|
|
1b75a802dc | Merge branch 'main' into dev/mjbvz/colossal-cheetah | ||
|
|
0e0b01fd1f |
Merge pull request #304879 from microsoft/copilot/thin-wombat
chat: use pullRequestState for agent session PR icons |
||
|
|
95251f207d |
sessions: address agent sessions PR feedback
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> |
||
|
|
60ac8920b8 | Refactor AgentSessionRenderer to include repository name in status text for pinned sessions when grouped by repository | ||
|
|
cda158ca7c | Update editor pool too | ||
|
|
56675d1643 | Guard against duplicate disposals | ||
|
|
72c7722ce1 | Display repository name for pinned sessions when grouped by repository | ||
|
|
0b3d8bc104 | Sort repository groups by label in AgentSessionsDataSource | ||
|
|
f96004630b | Merge branch 'main' into dev/mjbvz/xenacious-roundworm | ||
|
|
d466d7d67b |
sessions: Extensible sessions provider architecture and ISessionData migration (#304626)
* Add session provider interfaces and menu contributions for new session management
* Add DefaultCopilotChatSessionsProvider implementation
Implements ISessionsProvider for the default Copilot session types (CLI and Cloud).
Wraps existing IAgentSessionsService with AgentSessionAdapter that maps
IAgentSession to the new ISessionData interface with observables.
Includes workspace browsing (folder dialog + repo command), session listing,
and session actions (archive, delete, rename) that delegate to underlying services.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Migrate WorkspacePicker to use sessions provider registry
Browse actions (Browse Folders, Browse Repositories, Browse Remotes) are now
sourced from registered ISessionsProvider instances instead of being hardcoded.
Removed direct dependencies on IFileDialogService, ICommandService,
IRemoteAgentHostService, and IQuickInputService — those are now encapsulated
in the provider's browseActions.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Migrate NewChatWidget to use sessions provider registry
Replace hardcoded session type inference (isFolder→Background, isRepo→Cloud,
isRemoteAgentHost→dynamic) with provider registry lookup via
ISessionsProvidersService.getProvidersForWorkspace().
Removed dependencies on IRemoteAgentHostService and
getRemoteAgentHostSessionTarget — target resolution is now the provider's
responsibility.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Replace instanceof picker rendering with declarative pickerVisibility
Add INewSessionPickerVisibility to INewSession interface — each session
implementation declares which pickers should be visible (localModel,
cloudModel, mode, permission, isolation, branch, hasToolbarOptionGroups).
NewChatWidget._setNewSession() now calls a single _renderSessionPickers()
that reads pickerVisibility instead of using instanceof checks against
AgentHostNewSession/RemoteNewSession/CopilotCLISession.
Removed the three type-specific methods:
- _renderAgentHostSessionPickers()
- _renderLocalSessionPickers()
- _renderRemoteSessionPickers()
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Migrate SessionsManagementService factory to use provider registry
Replace hardcoded if/else chain in createNewSessionForTarget() with a
provider registry lookup. The service now finds the provider that handles
the requested target type and delegates session creation to it.
Removed direct imports of CopilotCLISession, RemoteNewSession, and
AgentHostNewSession — the factory no longer needs to know about concrete
session implementations.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Register isolation and branch pickers as menu actions via IActionViewItemService
DefaultCopilotChatSessionsProvider.registerMenuContributions() now:
- Registers Action2 entries for isolation and branch pickers into
Menus.NewSessionRepositoryConfig with when: IsActiveSessionBackgroundProviderContext
- Registers IActionViewItemService factories that create the picker widgets
as BaseActionViewItem wrappers
This enables a MenuWorkbenchToolBar to render the pickers automatically,
with visibility controlled by context keys rather than instanceof checks.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Remove empty leftover files from previous refactoring
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Make IsolationPicker session-aware via ISessionsManagementService
IsolationPicker now observes the active session to determine git repo
availability instead of relying on the widget to call setHasGitRepo().
Removed setVisible() — visibility is self-managed based on internal state
(hasGitRepo + isolationOptionEnabled). The picker still fires onDidChange
for the widget to push isolation mode to INewSession.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Remove widget orchestration of IsolationPicker visibility
IsolationPicker now self-manages visibility by observing the active session.
Removed all setVisible() and setHasGitRepo() calls from NewChatWidget —
the picker handles these internally.
The picker still fires onDidChange so the widget can push isolation mode
to INewSession.setIsolationMode().
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Make BranchPicker session-aware via ISessionsManagementService
BranchPicker now observes the active session to get the project's repository
and loads branches automatically. Self-manages visibility based on repository
availability. Removed setRepository() and setVisible() — the picker handles
these internally.
Removed all setRepository/setVisible calls from NewChatWidget for both
isolation and branch pickers. The widget only listens to their onDidChange
events to push state to INewSession.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Make Mode and Permission pickers session-aware
ModePicker and PermissionPicker now observe ISessionsManagementService.newSession
to self-manage visibility based on the session's pickerVisibility.
ModePicker pushes mode to the session directly via its autorun.
Added newSession observable to ISessionsManagementService so pickers can
observe the current new session being configured.
Updated IsolationPicker and BranchPicker to use the new newSession observable
instead of the previous hack with private field access.
Removed all setVisible() calls for mode and permission pickers from
NewChatWidget — they are now fully self-managing.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Make model pickers session-aware
CloudModelPicker now observes ISessionsManagementService.newSession to
self-manage visibility and session binding. Removed setVisible() and
manual setSession() calls from NewChatWidget.
Local model picker container visibility now driven by autorun observing
newSession.pickerVisibility.localModel instead of _renderSessionPickers.
_renderSessionPickers is now minimal — only handles extension-driven
toolbar pickers and git repo opening.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Move git repo resolution to DefaultCopilotChatSessionsProvider
Git repository opening is now the provider's responsibility. When creating
a CLI session with a folder workspace, the provider resolves the git repo
and attaches it to the session's project. Pickers observe the session and
react automatically.
Removed _openRepository(), _repositoryLoading, _openRepositoryCts, and
IGitService dependency from NewChatWidget.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Unify session interface: ISessionData replaces INewSession on public surface
ISessionsProvider.createNewSession() now returns ISessionData instead of
INewSession. Added setSessionOption(sessionId, key, value) for pickers
to write through the provider.
Extended ISessionData with:
- SessionStatus.Configuring for pre-send phase
- ISessionPickerVisibility for UI picker control
- workspace as IObservable (changes during configuration)
INewSession becomes provider-internal — not exposed on any service interface.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Implement ISessionData in DefaultCopilotChatSessionsProvider
createNewSession() now returns ISessionData via NewSessionDataAdapter
which wraps INewSession internally. setSessionOption() routes option
changes to the underlying INewSession.
AgentSessionAdapter updated to match new ISessionData interface
(workspace as observable, pickerVisibility).
INewSession is now fully internal to the provider — not exposed
on any public interface.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Switch all pickers to ISessionsProvidersService
All pickers now observe ISessionsProvidersService.activeSession (ISessionData)
instead of ISessionsManagementService.newSession (INewSession).
ModePicker uses sessionsProvidersService.setSessionOption() to push mode.
IsolationPicker reads workspace.repositories from ISessionData.
PermissionPicker and CloudModelPicker observe activeSession.pickerVisibility.
Removed newSession observable from ISessionsManagementService interface.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add new session provider service interfaces
* Move extension toolbar pickers to self-contained ExtensionToolbarPickers
Created ExtensionToolbarPickers class that observes ISessionsProvidersService
activeSession and dynamically renders extension-driven option group pickers
(ChatSessionPickerActionItem / SearchableOptionPickerActionItem) for Cloud
sessions.
Removed ~120 lines from NewChatWidget:
- _renderSessionPickers(), _renderToolbarPickers(), _renderToolbarPickerWidget()
- _clearToolbarPickers(), _clearAllPickers()
- _updateOptionContextKey(), _getOrCreateOptionEmitter()
- _toolbarPickerWidgets, _toolbarPickerDisposables, _optionEmitters, _optionContextKeys
NewChatWidget now has zero picker rendering logic — all pickers are
self-managing via session observation.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Refine interfaces: remove pickerVisibility, canHandle, setSessionOption
Addressed design feedback:
- SessionStatus: renamed Configuring→Untitled, added InProgress and NeedsInput
- Removed ISessionPickerVisibility from ISessionData — pickers use menu
when-clauses, not session-declared visibility
- Removed canHandle() from ISessionsProvider — workspace→provider mapping
is implicit via browse actions
- Removed setSessionOption() — provider-internal wiring, not public API
- Removed registerMenuContributions() — providers register contributions
statically via workbench contributions
- Removed NewSessions.WorkspaceMenu — workspace picker is a fixed widget
- Added getSessionTypesForWorkspace() to ISessionsProvidersService — the
session type selector is a fixed picker that queries this
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Migrate sidebar and title bar to use ISessionsProvidersService
Title bar:
- Added ISessionsProvidersService injection
- _getActiveSessionLabel() prefers ISessionData.title from providers service
- _getActiveSessionIcon() prefers ISessionData.icon from providers service
- _getRepositoryLabel() prefers ISessionData.workspace.label from providers service
- Added autorun on sessionsProvidersService.activeSession for re-rendering
- Falls back to legacy ISessionsManagementService path when ISessionData unavailable
Sidebar:
- Added ISessionsProvidersService injection
- allowedProviders now derived from registered providers' session types
instead of hardcoded [Background, Cloud]
- Removed hardcoded overrideExclude and providerLabelOverrides
- Removed AgentSessionProviders and isAgentHostTarget imports
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Move activeSession to ISessionsManagementService, remove from ISessionsProvidersService
Added activeSessionData: IObservable<ISessionData> to ISessionsManagementService.
Deprecated activeSession (IActiveSessionItem) — use activeSessionData instead.
Removed activeSession and openSession from ISessionsProvidersService — it's
a registry/aggregator, not a session state manager.
Title bar now reads from activeSessionService.activeSessionData instead of
sessionsProvidersService.activeSession. Removed ISessionsProvidersService
dependency from title bar.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Remove visibility management from all pickers
Pickers are now dumb widgets — they render and handle interaction only.
Visibility is controlled by context keys and menu when-clauses, not by
autorun blocks toggling display:none.
Removed from all pickers:
- autorun blocks observing activeSession/newSession for visibility
- _updateVisibility() methods
- ISessionsProvidersService dependencies (no longer needed)
Pickers affected: ModePicker, PermissionPicker, IsolationPicker,
BranchPicker, CloudModelPicker, local model picker container.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Move menu registrations to static scope, clean up empty files
Action2 registrations (isolation/branch pickers) are now at module scope
instead of inside registerMenuContributions(). IActionViewItemService
registrations moved to the provider's constructor.
Removed registerMenuContributions() method — it was no longer on the
ISessionsProvider interface and wasn't called.
Deleted recreated empty files.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add new sessions provider and service interfaces
* Implement ISessionsProvider for RemoteAgentHost
Created RemoteAgentHostSessionsProvider that implements ISessionsProvider
for each agent on a remote agent host connection. Provides:
- Session type: remote-{authority}-{provider}
- Browse action: remote FS folder dialog
- Session creation returning ISessionData
RemoteAgentHostContribution now registers a RemoteAgentHostSessionsProvider
per-agent via ISessionsProvidersService.registerProvider(), alongside the
existing IChatSessionsService registrations. Provider lifecycle is managed
by the agent store — automatically disposed when the agent disconnects.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix all TypeScript compilation errors
Fixed across 9 files:
- Removed unused imports, fields, and methods
- Fixed SessionStatus enum references (Configuring→Untitled, Active→InProgress)
- Fixed ISessionsProvidersService.activeSession removal (use ISessionsManagementService)
- Fixed getProvidersForWorkspace→getSessionTypesForWorkspace
- Removed ISessionData.setProject call (provider-internal)
- Cast allowedProviders to AgentSessionProviders[]
- Removed ISessionPickerVisibility references
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Register DefaultCopilotChatSessionsProvider via workbench contribution
The provider was defined but never registered with ISessionsProvidersService.
Added DefaultSessionsProviderContribution that instantiates and registers
the provider at WorkbenchPhase.AfterRestored.
This fixes the missing browse actions in the workspace picker.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix model picker visibility: local and cloud are mutually exclusive
Both model pickers were visible because visibility management was removed
but they aren't menu-contributed yet. Added autorun in NewChatWidget that
observes the active session's pickerVisibility to toggle local vs cloud
model picker. Restored setVisible() on CloudModelPicker.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Register model pickers as menu actions with context-key visibility
Local model picker and cloud model picker are now registered as Action2
entries in NewSessions.SessionConfigMenu with when-clauses:
- Local model: when isActiveSessionBackgroundProvider
IActionViewItemService factories registered for the cloud model picker.
Model picker visibility in NewChatWidget now driven by sessionType check
instead of pickerVisibility.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix model picker visibility: use sessionsManagementService for session creation
_createNewSession now routes through sessionsManagementService.createNewSessionForTarget
which properly sets activeSessionData, context keys (isActiveSessionBackgroundProvider),
and the _newSession observable. This fixes the model picker not showing because
activeSessionData was never set.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix model picker not showing on reload
Default to showing local model picker when activeSessionData is undefined
(startup/reload). The default session type is CLI, so local model picker
should be visible until a Cloud session is explicitly created.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix session type resolution for different workspace types
Repo workspaces should create Cloud sessions, local folders should create
CLI sessions. The previous getSessionTypesForWorkspace returned all types
without filtering by workspace. Restored workspace-type-based inference
in _createNewSession until workspace picker stores providerId.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Hide permissions picker for Cloud sessions
Permissions picker visibility now tied to session type — only shown for
CLI (Background) sessions. Added autorun and menu action registration
with when: IsActiveSessionBackgroundProviderContext.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix permissions picker: use autorun on activeSessionData for visibility
Permissions picker is still widget-owned (needed for reading permissionLevel
at send time). Visibility controlled by observing activeSessionData.sessionType
— only shown for CLI (Background) sessions.
Menu action + IActionViewItemService registration added for future transition
to fully menu-driven rendering once permission state is on ISessionData.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Move permissionLevel to ISessionData, render via MenuWorkbenchToolBar
permissionLevel is now on ISessionData as an IObservable<ChatPermissionLevel>.
NewChatPermissionPicker writes to activeSessionData.permissionLevel when
the user changes the level. sendRequestForNewSession reads it from
activeSessionData instead of a widget-owned picker.
Permissions picker is now rendered via MenuWorkbenchToolBar for
NewSessions.SessionControlMenu — visibility controlled by
IsActiveSessionBackgroundProviderContext context key.
Removed _permissionPicker from NewChatWidget entirely.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix permissions picker: use 'navigation' group for inline rendering
MenuWorkbenchToolBar only renders items in the 'navigation' group inline.
Items in other groups go to the overflow menu. Changed permissions picker
action from group 'permissions' to group 'navigation'.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix startup race: wait for providers before creating initial session
On reload, the widget renders before DefaultCopilotChatSessionsProvider
is registered (AfterRestored phase). The initial session creation now
waits for onDidChangeProviders if no providers are available yet.
This fixes wrong pickers showing on reload (CLI pickers for a Cloud
session because the provider wasn't found).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Hide mode picker for Cloud sessions
Mode picker visibility now tied to activeSessionData.sessionType —
only shown for CLI (Background) sessions, hidden for Cloud.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Render mode and model pickers via MenuWorkbenchToolBar
Mode, local model, and cloud model pickers are now rendered via
MenuWorkbenchToolBar for NewSessions.SessionConfigMenu. Visibility
controlled by context keys:
- Mode + local model: when isActiveSessionBackgroundProvider
All registered with 'navigation' group for inline rendering.
IActionViewItemService factories create the picker widgets with
full DI (ILanguageModelsService for model list, etc.).
Removed autoruns for model/mode visibility from NewChatWidget.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Remove dead model/mode picker code from newChatViewPane
Mode and model pickers are now created by the sessions provider's
IActionViewItemService factory and rendered by a MenuWorkbenchToolBar.
The widget no longer needs to own these pickers.
Removed:
- _currentLanguageModel, _modelPickerDisposable, _localModelPickerContainer fields
- _cloudModelPicker, _modePicker fields and their instantiation
- _modePicker.onDidChange listener
- _initDefaultModel() calls
- _currentLanguageModel.read(reader) autorun
- Model set block in _setNewSession
- Model restoration block in _restoreState
- Unused imports: IModelPickerDelegate, EnhancedModelPickerActionItem,
IChatInputPickerOptions, CloudModelPicker, ModePicker,
ILanguageModelChatMetadataAndIdentifier, ILanguageModelsService,
observableValue, autorun
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix model picker showing 'Auto': initialize with default model on load
The IActionViewItemService factory creates the model picker with an empty
currentModel observable. If models aren't loaded yet, it shows 'Auto'.
Now listens for onDidChangeLanguageModels and sets the first available
model as default when models become available.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Remove setVisible from CloudModelPicker — visibility is menu-driven
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Align model picker styling with other session pickers
Updated .sessions-chat-model-picker CSS to match .sessions-chat-picker-slot:
- font-size: 12px → 13px
- padding: 3px 6px → 3px 3px 3px 6px
- codicon: 12px → 14px (with flex-shrink: 0)
- Added chevron-down specific sizing (12px, margin-left: 6px)
- Added hover color change, overflow handling, white-space: nowrap
All pickers now share the same visual treatment.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Style config toolbar to match session picker visuals
Updated CSS to target .sessions-chat-config-toolbar (the MenuWorkbenchToolBar
container for mode + model pickers) instead of .sessions-chat-model-picker.
Styles match .sessions-chat-picker-slot for consistent look across all pickers.
Also styles the .monaco-toolbar and .action-item within the config toolbar
to align properly.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Disable model picker until models are available
The model picker action starts with enabled=false if no models are loaded
yet. When onDidChangeLanguageModels fires and models become available,
it sets enabled=true and selects the first model.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Revert "Disable model picker until models are available"
This reverts commit
|
||
|
|
6a451234ca | Enhance agent session icon rendering with dynamic colors and improved pull request state handling | ||
|
|
8dc3d7c798 | Merge branch 'main' into isidorn/xenial-bee | ||
|
|
db9c3692a1 | Add New Chat entry point in the title bar menu (fix #304774) (#304790) | ||
|
|
27fa0c15e0 |
Remove unused hasAnySessionOptions method
|
||
|
|
6a12c4553b |
Fix wrapped title spacing on the agent sessions welcome page (#304686)
* Fix wrapped title spacing on agent sessions welcome page * line-height: 1 --------- Co-authored-by: Joaquín Ruales <1588988+jruales@users.noreply.github.com> |
||
|
|
783e24aa1f |
sessions - dim the top area of scrolled out of view chats (#304804)
* sessions - dim the top area of scrolled out of view chats * Update src/vs/sessions/browser/media/style.css Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> |
||
|
|
19e3c145cb | Sessions - source control providers do not need the parent/child relationship (#304830) | ||
|
|
3ac9e2694e |
Merge pull request #304603 from microsoft/connor4312/agent-res-cleanup
agentHost: sync fixed tool call ordering |
||
|
|
60ca350d8f | fix tests | ||
|
|
84950cc57f | Update tests. | ||
|
|
4e6c8bb424 | Support mov in image carousel | ||
|
|
f4e6a58d8e |
Merge pull request #304704 from microsoft/mrleemurray/hushed-rose-python
Sessions: Update titlebar action icon color |
||
|
|
ac688e98b5 | sessions - hide worktree icon but show others (#304739) | ||
|
|
0502a8be28 | update mywork milestone (#304707) | ||
|
|
8f9ab6c9c9 | Merge branch 'main' into connor4312/fix-plugin-root | ||
|
|
7d7fff2adf |
Merge pull request #304734 from microsoft/copilot/fix-inline-chat-context-loss
Preserve selection context when "Ask in Chat" from inline chat |
||
|
|
29d5ff76cd |
Fix copy-paste bug in performance view blocking startup count (#304452)
Co-authored-by: Shehab Sherif <shehabsherif0@users.noreply.github.com> |
||
|
|
e852b5875c |
sessions - separate user dir for --sessions runs (#304726)
* sessions - separate user dir for `--sessions` runs * Update tasks.json --------- Co-authored-by: Benjamin Christopher Simmonds <44439583+benibenj@users.noreply.github.com> |
||
|
|
7b375fbd70 | Merge branch 'main' into isidorn/xenial-bee | ||
|
|
2ec87aeb2f |
sessions - restore file icons in modal editor titles (#304714)
style - remove file icon from modal editor titles |