mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-08 09:08:48 +01:00
64e73b036669494bbc9a6904cf090b01a8d3bb1e
1167 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
23c0b41d69 |
Enable test/test-integration scripts to take file.test.ts arguments (#306039)
* Enable test/test-integration scripts to take file.test.ts arguments The agent likes to use them this way, when it doesn't read the skill Co-authored-by: Copilot <copilot@github.com> * And this * Fixes * update Co-authored-by: Copilot <copilot@github.com> --------- Co-authored-by: Copilot <copilot@github.com> |
||
|
|
c065b175fd |
Add argument parsing, suite filtering, and grep support to integration test scripts (#305837)
* Add argument parsing, suite filtering, and grep support to integration test scripts - Add --run, --runGlob, --grep, --suite, and --help argument parsing - --suite selects extension host test suites (comma-separated, glob patterns) - --grep forwards test name filter to all runners via MOCHA_GREP env var - Validate --suite filter matches at least one known suite - Add MOCHA_GREP support to testrunner.js, CSS and HTML test runners - Seed user settings to suppress dock bounce notifications - Always apply *.integrationTest.js glob for node.js tests - Add integration-tests skill documentation * Address Copilot review feedback - Quote cd $ROOT, rm -rf $VSCODEUSERDATADIR, rmdir %VSCODEUSERDATADIR% - Quote --runGlob pattern to prevent premature glob expansion - Use GREP_ARGS array for safe grep forwarding in .sh - Use conditional call with proper quoting for grep in .bat - Deduplicate suite list into KNOWN_SUITES variable - Remove unused EXTRA_ARGS and ARGS variables from .bat * Fix Windows CI: remove unnecessary enabledelayedexpansion The original script used plain 'setlocal'. Adding 'enabledelayedexpansion' may affect path resolution behavior on Windows CI. Since no delayed expansion (\!var\!) syntax is used, revert to the original 'setlocal'. * Fix Windows CI: capture %~dp0 before call :label corrupts it In Windows batch, 'call :label' can change what %~dp0 resolves to. Our should_run_suite subroutine uses 'call :should_run_suite', which caused %~dp0 to resolve to the wrong directory for extension paths that appear after the subroutine call. Capture the script directory once at startup into %SCRIPT_DIR% and use it everywhere. |
||
|
|
7efa1c5c0d |
chatCustomizations: support grouping and badges for external provider items (#305813)
* feat: enhance AICustomizationListWidget with grouping and badge support for external customization items * feat: add user data profile service and infer storage from URI in AICustomizationListWidget * Copilot CLI session 8af2fd4a-10fe-4bba-b408-f1b90cebc8dc changes * docs: add chatSessionCustomizationProvider API chain to customizations editor skill Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: address PR review feedback - Remove duplicate sectionToIcon, reuse getSectionIcon instance method - Use Map for O(1) groupKey lookups instead of O(n²) includes/find - Check active project root in inferStorageFromUri for Sessions window - Set pluginUri on provider items and use it for storage inference - Remove redundant plugin check from inferStorageFromUri (handled by caller) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> |
||
|
|
c7de0877e0 |
Bump octokit/request-action from 2.4.0 to 3.0.0 (#305135)
Bumps [octokit/request-action](https://github.com/octokit/request-action) from 2.4.0 to 3.0.0. - [Release notes](https://github.com/octokit/request-action/releases) - [Commits](https://github.com/octokit/request-action/compare/dad4362715b7fb2ddedf9772c8670824af564f0d...b91aabaa861c777dcdb14e2387e30eddf04619ae) --- updated-dependencies: - dependency-name: octokit/request-action dependency-version: 3.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Raymond Zhao <7199958+rzhao271@users.noreply.github.com> |
||
|
|
c136539a3f |
docs - add service dependency declaration guideline (#305682)
* docs - add service dependency declaration guideline * Update .github/copilot-instructions.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> |
||
|
|
08c09ae70d | switch to gh hosted runners (#305298) | ||
|
|
ddc44da46f |
Merge pull request #304938 from microsoft/bryanchen-d/suppress-popular-leak-telemetry
docs: add error construction analysis guidance to fix-errors skill and prompt |
||
|
|
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 |
||
|
|
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. |
||
|
|
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
|
||
|
|
b4e7793b6c |
chat customizations: improve agentic engineering dev loop (#304305)
* fix #304030: show custom agent names as-is without title-casing formatDisplayName was converting dashes/underscores to spaces and applying title case (e.g. nls-code-helper → Nls Code Helper). This made names inconsistent between the customization view and the agent dropdown. Now only strips .md extension, showing names exactly as defined in frontmatter headers. * fix #304131: show workspace-relative paths in customization tooltips Workspace items now show paths relative to the project root (e.g. .github/instructions/coding-standards.instructions.md) instead of absolute paths (/Users/.../workspace/.github/...). * fix #304133: show extension name instead of full path in tooltips Extension items now show 'Extension: github.copilot-chat' in the tooltip instead of the full filesystem path into the extension directory. The extensionLabel is populated from the extensionIdByUri map during item post-processing. * fix #304178: use save icon instead of ambiguous checkmark The editor save indicator now uses Codicon.save (floppy disk) instead of Codicon.check (bare checkmark), making it clear that the indicator is about save status rather than an enable/disable toggle. * fix #304183: show user-scoped hooks in sessions window HOOKS_FILTER excluded PromptsStorage.user, so hooks in ~/.copilot/hooks/ were filtered out in the sessions window (and any harness using the restricted filter). User hooks are now supported in CLI, so add user storage to the allowed sources. * fix: improve list layout footer fallback and remove extension tooltip - Use 80px footer height fallback instead of 0 when sectionHeader has not rendered yet, preventing list from overlapping the footer on first paint - Wait for async section load in fixture before final layout - Remove extensionLabel tooltip (implementation detail, not relevant to users) * fix #304178: show loading spinner before saved icon, remove green color The save indicator now shows a spinning loading animation while the file is being saved (onDidChangeDirty dirty→clean transition), then switches to the save icon when the save completes (onDidSave). The special green color was removed to use the default description foreground color instead. * fix: simplify list layout to use CSS flex instead of manual height calculation All three list widgets (AICustomizationListWidget, McpListWidget, PluginListWidget) now rely on CSS flex layout to distribute space between search bar, list container, and footer. The layout() method sets the widget height, clears any manual list container height, and reads clientHeight (forcing a synchronous reflow) to get the flex-computed height for the WorkbenchList. This eliminates hardcoded fallback values, requestAnimationFrame correction loops, and manual offsetHeight arithmetic that caused the list to overlap the footer on first render. * revert: drop save indicator icon changes (#304178) Reverts the checkmark→save icon change, the loading spinner, and the green color removal. The save indicator is back to the original Codicon.check with green color — this will be addressed separately. * fix: show Built-in/Extension name in tooltips, fix MCP scroll, hide copy path for built-in - Built-in items show 'Built-in' in tooltip instead of file path - Non-built-in extension items show 'Extension: {displayName}' - Copy path context menu hidden for built-in items - Fix MCP/Plugin scroll: fall back to passed height when container is hidden (display:none → clientHeight=0), and re-layout when section becomes visible via selectSectionById - Remove unused resolveExtensionGroupKey method * fix: use explicit height calculation for list layout instead of flex clientHeight The flex-based clientHeight approach was unreliable — reflow timing varied between the component explorer and the real product, causing the list to clip behind the footer at certain window sizes. Reverts to explicit height calculation by measuring sibling elements (search bar, footer, back link) via offsetHeight and subtracting from total height. For hidden widgets (MCP/Plugin when not the active tab), layout is skipped since offsetHeight returns 0; the selectSectionById re-layout handles showing them later. Removes the rAF wait from the fixture since explicit measurement doesn't depend on paint timing. * Stabilize AI customizations editor fixtures * Add narrow viewport fixture variants and fix widget overflow clipping * fix: defer layout when offsetHeight returns 0 during display:none → visible transition When switching sections in the Chat Customizations editor, the container transitions from display:none to visible. The layout method fires synchronously before the browser has reflowed, causing offsetHeight to return 0 for sibling elements. Previously, layout bailed out entirely, leaving the virtual list with no viewport height — resulting in missing rows and empty space. Now defers layout to the next animation frame so measurements are accurate after the reflow completes. * skill: add live debugging workflow to chat-customizations-editor skill * skill: reference launch skill instead of duplicating agent-browser docs * skill: add fixture gotchas — built-in grouping, editor contribution mocks, screenshot stability * ci: add blocksCi labels to key customization fixtures for automated regression gating * refactor: replace type assertion mutations with immutable map in applyBuiltinGroupKeys * fix: show extension display name instead of ID for agent extension source labels |
||
|
|
8657f4358e | Remove self from notify, classifier, events, etc. | ||
|
|
efb9c8bab8 | Remove outdated docs/instructions for remote agent host (#304341) | ||
|
|
c3231e5f45 |
chat customizations: fix clipping (#304281)
* fix: re-layout list when toggling browse mode in MCP/plugin widgets When toggling browse mode, the back link appears/disappears but layout() was never re-called, causing the list height to not account for the changed chrome. This clipped the last entry. Cache the last layout dimensions and re-call layout() after toggling browse mode. Fixes https://github.com/microsoft/vscode/issues/304139 * fix: register IProductService in AI customization component fixtures The AICustomizationListWidget recently added a dependency on IProductService but the component fixtures were not updated, causing all AI customization fixtures to fail with 'depends on UNKNOWN service productService'. * fix: address PR review — remove manual layout() in fixtures, fix null! in ParsedPromptFile |
||
|
|
70019df4c3 |
Fix Azure pipeline parameter whitespace handling (#304065)
fix: update Azure CLI command handling to support parameter values with spaces and improve usage documentation |
||
|
|
3460bdb15c |
Fix command rewriting issues when terminal sandboxing is enabled (#303859)
* fix: command rewriting issues when terminal sandboxing is enabled Fixes two issues with sandboxed terminal commands: 1. Sandboxed commands end up in shell history (#303769): The PreventHistoryRewriter was running before SandboxRewriter, so the leading space was applied to the inner command but not the final sandbox-wrapped command. Moved PreventHistoryRewriter to run last. 2. cd CWD prefix not stripped in sandbox mode (#303848): The SandboxedCommandLinePresenter was using the original (un-rewritten) command for display, bypassing cd prefix stripping. Changed to use forDisplay instead. 3. Fixed forDisplay being clobbered: The rewriter loop unconditionally overwrote forDisplay, so later rewriters without a forDisplay (like PreventHistoryRewriter) would clear the sandbox's display value. Changed to only update when explicitly provided. Fixes #303769 Fixes #303848 * update doc comment for SandboxedCommandLinePresenter * improve execute strategy logging for CI diagnostics Upgrade strategy selection and completion logs to info level in runInTerminalTool. In richExecuteStrategy, log at info level when running in CI (for diagnosing shell integration race conditions) and debug otherwise. * fix: include ignorespace in bash shell integration history verification When VSCODE_PREVENT_SHELL_HISTORY=1 is set (which it is for all tool terminals created by the run_in_terminal tool), the bash shell integration script sets HISTCONTROL="ignorespace" (line 67). This causes bash to exclude space-prefixed commands from history. Later in the same script (line 200), a regex decides whether to use `history 1` or $BASH_COMMAND to capture the current command in __vsc_preexec. The regex checks for erasedups, ignoreboth, and ignoredups — but NOT ignorespace. This is a bug because: 1. The same script sets HISTCONTROL=ignorespace 130 lines earlier 2. ignoreboth (which IS in the regex) is defined by bash as "ignorespace + ignoredups" — so the compound form was handled but the simple form was not The consequence: with HISTCONTROL=ignorespace and __vsc_history_verify=1, __vsc_preexec calls `history 1` to get the current command. But the command has a leading space (added by PreventHistoryRewriter), so bash history never recorded it. `history 1` returns the PREVIOUS command or nothing. This causes __vsc_current_command to be wrong or empty. In __vsc_command_complete, when __vsc_current_command is empty, the script sends the OSC sequence 633;D WITHOUT an exit code (line 373). The VS Code side then receives onCommandFinished with exitCode=undefined, breaking exit code detection for ALL tool terminal commands on bash. The fix adds ignorespace to the existing regex, so bash falls back to $BASH_COMMAND (which always works regardless of history settings). This matches the behavior already provided when ignoreboth is set. * docs: improve fix-ci-failures skill with faster log retrieval workflow |
||
|
|
61627c8b44 | Merge remote-tracking branch 'origin/main' into alexdima/fix-303531-sandbox-no-output-leak | ||
|
|
a342d8ccc7 | Merge branch 'main' of https://github.com/microsoft/vscode into osortega/steady-puma | ||
|
|
896c13e4a8 | Add unit test skill for vscode (#303766) | ||
|
|
146a2ea7e7 | Human-readable remote agent host address (#303758) | ||
|
|
865568dbbc |
fix: Linux CI sandbox prereqs, platform-aware tests, broader prompt stripping
- Add bubblewrap and socat to Linux CI apt-get install - Make sandbox test assertions platform-aware (macFileSystem vs linuxFileSystem) - Make /etc/shells test accept both macOS and Linux first-line format - Broaden wrapped prompt fragment regex to handle path chars (ts/testWorkspace$) - Fix continuation pattern to match user@host:path wrapped lines - Apply stripCommandEchoAndPrompt to getOutput() in BasicExecuteStrategy (basic shell integration lacks reliable 133;C markers so getOutput() can include command echo) - Keep RichExecuteStrategy getOutput() unstripped (rich integration has reliable markers) |
||
|
|
4db9da0443 |
Merge pull request #303226 from microsoft/bryanchen-d/fix-notebook-snapshot-too-large
fix: catch notebook snapshot errors in chat editing with log fallback |
||
|
|
9541d49335 |
chat customizations: component fixtures, developer skill, spec updates (#303309)
* component explorer fixture for chat customization tabs * chat customizations: full editor fixture + developer skill * Refine AI customization management editor fixtures * fix: update DOM element creation to use shorthand syntax --------- Co-authored-by: Martin Aeschlimann <martinae@microsoft.com> |
||
|
|
92e096f8eb | fix: enhance draft PR guidelines for error handling and validation steps | ||
|
|
9b5510e909 | Sessions: E2E test fixes | ||
|
|
bf5f2dc920 | docs - update copilot instructions for event usage (#303252) | ||
|
|
ca52dc8f5f |
Merge pull request #302860 from microsoft/bryanchen-d/fix-missing-session-provider
fix: return undefined when session provider is missing |
||
|
|
55095cdd63 | docs: update fix-error prompt with PR creation guidelines and Copilot review process | ||
|
|
ac80cd0611 | chore: remove workflow to prevent package-lock.json changes in PRs (#302901) | ||
|
|
fa4879a84e |
Merge pull request #302589 from microsoft/bryanchen-d/fix-listener-leak-show-checkmarks
fix: reduce listener leak from per-part show-checkmarks subscriptions |
||
|
|
e0e770689f | fix: update instructions for handling Copilot review comments in PRs | ||
|
|
1c035e8297 | Merge branch 'main' into connor4312/agent-host-server | ||
|
|
4922d2a864 |
Merge pull request #302298 from microsoft/bryanchen-d/fix-notebook-index-out-of-range
fix: enrich notebook model index error diagnostics and fix sort comparator (#301207) |
||
|
|
bc80e42af6 | sessions - tweaks to sessions list for better readability (#302433) | ||
|
|
3182751ba8 | docs: enhance submission guidelines for error fixes in telemetry | ||
|
|
3da382383e | Merge remote-tracking branch 'origin/main' into connor4312/agent-host-server | ||
|
|
045e2da42d | Strengthen accessibility skill language (#301555) | ||
|
|
894acd3ec7 | Allow vs-code-engineering bot to update distro field in package.json (#301218) | ||
|
|
b1781a18ba | add instructions for agent host development | ||
|
|
4f6fa90167 | Add Copilot review instructions for OSS license files (#300954) | ||
|
|
5d56633a57 | updates component explorer | ||
|
|
fe7157a1f3 |
Merge pull request #300905 from microsoft/benibenj/military-rodent
Add support for running tasks on worktree creation |
||
|
|
466961c128 | remove hook command for sessionStart | ||
|
|
f1428b977c | Enables screenshot CI again | ||
|
|
e7153ed180 |
Bump actions/github-script from 7 to 8 (#300759)
Bumps [actions/github-script](https://github.com/actions/github-script) from 7 to 8. - [Release notes](https://github.com/actions/github-script/releases) - [Commits](https://github.com/actions/github-script/compare/v7...v8) --- updated-dependencies: - dependency-name: actions/github-script dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
7e8b4cc1f5 |
Bump actions/upload-artifact from 4 to 7 (#300760)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 7. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v4...v7) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
2f1d77a9a2 |
Update assignee for ~capi labeled issues (#299531)
Modify assignees for ~capi command Updating with our new PM to triage and assess reported issues. Co-authored-by: Logan Ramos <lramos15@gmail.com> |
||
|
|
3e89f06714 |
Re-enable API proposal version check (#300716)
* Revert "Merge pull request #300495 from mjbvz/dev/mjbvz/fierce-hawk" This reverts commit |
||
|
|
9d5ebb8f07 | Updates skill | ||
|
|
86343fcf31 | Disables automatic component explorer updates |