Commit Graph

148661 Commits

Author SHA1 Message Date
Lee Murray
778ef353cd Update hover background color in 2026 Dark theme (#302802)
fix: update list hover background color in 2026 Dark theme

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

* Potential fix for pull request finding

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

---------

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

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

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

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

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

* Potential fix for pull request finding

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

* Potential fix for pull request finding

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

---------

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

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

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

* feat: disable action bar actions while editing feedback comment

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

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

---------

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

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

* Potential fix for pull request finding

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

---------

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

* Potential fix for pull request finding

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

---------

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

* Fix Reveal in File Explorer not working in WSL

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

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

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

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

* Replace getCanonicalURI with direct WSL UNC path construction

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

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

* Remove remote from whens

---------

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

* Potential fix for pull request finding

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

* Potential fix for pull request finding

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

* Potential fix for pull request finding

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

* Potential fix for pull request finding

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

* .

---------

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

* refactor: extract shared harness service base class and factories

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

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

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

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

* fix: filter create targets by active harness

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

* fix: filter workspace directory picker by active harness subpaths

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

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

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

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

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

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

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

(Commit message generated by Copilot)

* Potential fix for pull request finding

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

---------

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

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

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

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

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

* Fix separator visibility for extension pickers in NewChatWidget toolbar

* Remove unused separator for extension pickers in NewChatWidget

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

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

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

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

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

* Add extension toolbar pickers for remote sessions in NewChatWidget

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

* Set repo URI from project picker on session initialization

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

* Update target mode labels in TargetPicker for clarity

* Improve styling of project picker button for better visibility

* fix: correct isolation option logic in TargetPicker initialization

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

* fix: add cancellation support for project selection in NewChatWidget

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

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

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

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

* Address PR feedback on projectPicker.ts

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

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

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

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

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

* Unify IsolationMode and TargetMode, replace setRepository with setProject

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

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

* Extract ISessionProject to shared types file

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

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

* Refactor ISessionProject to SessionProject class

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

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

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

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

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

* Remove important from project picker CSS

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

* Remove label from IStoredProject, compute from URI on demand

* Remove setPreferredMode/setMode, use preferredMode parameter on setProject

* Remove GITHUB_REMOTE_FILE_SCHEME re-export from githubFileSystemProvider

* Remove unused setVisible from TargetPicker

* Add SessionProject to INewSession interface

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

* Remove repoUri and setRepoUri from INewSession, use project instead

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

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

* Unify session creation through _onProjectSelected

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

* Remove redundant repoUri change listener from _setNewSession

* Only store targetMode in draft state for local sessions

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

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

* Pass SessionProject as parameter to _createNewSession

* Rename ModePicker.setRepository to reset()

* Remove redundant targetMode session listener

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

* Only open repository for folder projects, not repos

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

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

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

* Migrate string URIs to UriComponents on load, remove _reviveUri

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

* Remove all legacy storage migration code from ProjectPicker

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

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

* Revert: always create new session when project changes

* Pass project to _updateTargetPickerState to avoid stale session state

* Inline _updateTargetPickerState and remove method

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

* Fix target mode restore: use _createNewSession for restored projects

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

* Remove early return in setProject, always update trigger label

* Default to worktree on project change, simplify setProject

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

* Route restored projects through _onProjectSelected, remove preferredMode

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

* Restore targetMode from draft state via _openRepository preferredMode

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

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

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

* Fix resetMode: persist flag until repo resolves

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

* Simplify: never reset target mode on project change

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

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

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

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

* Default to worktree always for folder projects

* Refactor TargetPicker: extract _updateMode, simplify disabled state

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

---------

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

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

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

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

(Commit message generated by Copilot)

* pr comments
2026-03-17 17:29:42 -07:00
Josh Spicer
00c8ff7c6e fix: update button hint color to match background for better visibility (#302605) 2026-03-18 00:23:12 +00:00
Connor Peet
d87bb196e4 mcp: make gateway spawn a gateway per mcp rather than a combined gateway (#301741)
* mcp: make gateway spawn a gateway per mcp rather than a combined gateway

Closes https://github.com/microsoft/vscode/issues/301013

Usage is not terrible:

```ts
const disposable = vscode.commands.registerCommand('extension.helloWorld', async() => {
	const gateway = await vscode.lm.startMcpGateway();
	gateway?.onDidChangeServers((e) => {
		console.log('new gateways:', gateway?.servers.map(s => [s.label, s.address.toString()]));
	});
	console.log('initial gateways:', gateway?.servers.map(s => [s.label, s.address.toString()]));
});
```

* pr comments

* tests
2026-03-18 11:08:09 +11:00
Josh Spicer
3ad62b41a1 chat customizations: counts next to each sub section (#302593)
* Enhance AI Customization Management: Add section item counts and update UI components

- Introduced count property for section items in the AI Customization Management editor.
- Updated the rendering logic to display item counts conditionally.
- Implemented event emitters for item count changes in MCP, Plugin, and Chat Models widgets.
- Enhanced CSS styles for section count display in the sidebar.

* Update section count styling: increase font size and adjust padding

* Refine section count styling: adjust font size, padding, border radius, and line height

* Update section count styling: increase font size, padding, border radius, and line height

* Remove section count background and color styles from selected list items

* Update section count handling in AICustomizationManagementEditor to include MCP, Plugins, and Models

* Seed initial section counts for MCP, Plugins, and Models in AICustomizationManagementEditor

* Refactor item count calculation in MCP and Plugin list widgets to sum displayed group header counts

* Refactor prompts section count handling to refresh all sections on data changes

* Refactor item count handling in AICustomizationListWidget and AICustomizationManagementEditor to use shared loading logic

* Add fireItemCount method to MCP, Plugin, and Models widgets for item count updates

* Fix sidebar count consistency: use data arrays as single source of truth

- Guard prompt list count handler to only update prompt sections (not MCP/Plugins)
- MCP itemCount derived from filteredServers + filteredBuiltinCount (same arrays as group headers)
- Plugin itemCount derived from installedItems (same array as enabled/disabled groups)

* Address PR review: debounce prompt count refresh, handle errors

- Debounce refreshAllPromptsSectionCounts via RunOnceScheduler (100ms)
  to prevent stale overwrites from rapid successive prompts events
- Route rejected computeItemCountForSection promises to onUnexpectedError
  instead of leaving them unhandled
2026-03-17 23:59:18 +00:00
Justin Chen
3aa085f514 fix disposable leak + fix empty thinking container (#302595) 2026-03-17 16:56:11 -07:00
Benjamin Christopher Simmonds
f2068d352d fix: create agent feedback editor widgets in reverse order for correct z-ordering (#302594)
fix: create agent feedback widgets in reverse order for correct rendering
2026-03-17 16:54:06 -07:00
Eleanor Boyd
823045a102 Merge branch 'main' into broad-unicorn 2026-03-17 16:52:43 -07:00
eleanorjboyd
8e21770a58 updates based on copilot feedback 2026-03-17 16:49:56 -07:00
Benjamin Christopher Simmonds
564760999f Merge pull request #302591 from microsoft/benibenj/chubby-ostrich
Remove the use of `/d` in Windows task command
2026-03-18 00:41:13 +01:00
Justin Chen
84c4f3647a fix mcp shimmer + better working progress (#302587)
* mcp rendering + better working progress

* mcp rendering + better working progress
2026-03-17 23:35:49 +00:00
eleanorjboyd
eb74de1c23 reduce verbosity of comments 2026-03-17 16:30:17 -07:00
eleanorjboyd
b2d94af238 updates 2026-03-17 16:25:53 -07:00