Skip to content

[pull] main from microsoft:main#1106

Merged
pull[bot] merged 43 commits intocode:mainfrom
microsoft:main
Apr 2, 2026
Merged

[pull] main from microsoft:main#1106
pull[bot] merged 43 commits intocode:mainfrom
microsoft:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Apr 2, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

chetanr-25 and others added 30 commits January 18, 2026 02:42
Replace the temporary chat.defaultMode experiment with a proper
configuration setting chat.newSession.defaultMode whose default
is driven by TAS treatment chatDefaultNewSessionMode.

- Add DefaultNewSessionMode to ChatConfiguration enum
- Register setting dynamically via ChatAgentSettingContribution
  following the registerMaxRequestsSetting pattern
- Rewrite _setEmptyModelState to sync read the config setting
  with case-insensitive custom mode name matching
- Remove unused validateChatMode, isChatMode, and
  getDefaultModeExperimentStorageKey
- Remove IWorkbenchAssignmentService from ChatInputPart
  (moved to ChatAgentSettingContribution)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This function does way more than compute the visible options groups. Let's give it a name that reflects this so it's clear it should be refactored
Start breaking up the function because it's doing too much
Start splitting up methods so that each one has a clearer responsibility
- `optionsGroups` is confusing unless you also know there's `visibleOptionsGroups`

- Then `visibleOptionIds` returns the ids instead of the actual groups? But then in most cases the caller then needs to map back through to get the group so let's just return the group directly?
This duplicates some code but make the actual method cleaner. It also lets us cleanly remove one of the return values to get us closer to being able to have this method return just what it describes
This is not related to what the method says it does
This part also isn't directly related to the original method so should be split out. I'm actually thinking that we may be able to remove it entirely in `refreshChatSessionPickers` since the widgets should only exist for visible options groups, but I don't want to make that change just yet
I'm not a fan of types like this unless there's a clear meaning of `undefined` values. In this case it's just being used to signal that there are no options groups

That makes the code fragile because both the callers and implementers have to agree that the method will not return an empty array. It's likely that either the caller will do extra checks for both `!undefined && !arr.length` or that we will accidentally break this contract in the implementation
We should just be able to use the value directly now
Some of the ugly chat mode stuff was removed after I did this refactoring. The merge I made incorrectly restored that code
…-session-mode-experiment

# Conflicts:
#	src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts
* chore: bump lodash

* chore: add override
…on-mode-experiment

feat: add A/B test for default new session mode
When a BrowserView is disposed after its WebContents has already been
destroyed (e.g., renderer crash, window close during IPC), calling
_electronDebugger.detach() throws "target closed while handling command".
The existing try/catch catches it but logService.error() sends it to
telemetry.

Add an isDestroyed() guard to detachElectronDebugger() so it returns
early when the WebContents is already gone — matching the existing
pattern in BrowserView.dispose() (line 707). The try/catch and
logService.error() remain intact for genuinely unexpected errors.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Support deferred results from playwright code tool

* feedback

* fix
* sessions: use sidebar visibility codicons for toggle

Swap the agent sessions sidebar toggle from the tasklist icon to the layout-sidebar-left variants so the open and closed states are represented explicitly.

Keep the unread badge behavior on the custom title bar action when the sidebar is hidden.

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

* sessions: sync sidebar toggle icon with layout visibility

Drive the custom title bar toggle icon from the layout service visibility state instead of the menu action checked state so it stays current when the sidebar visibility changes in place.

Keep refreshing the unread badge from the same visibility-aware autorun.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Upgrade Playwright to 1.59

* don't upgrade test

* Fix full/incremental logic

* Update

* Fix package-lock. Apply PR suggestions
chetanr-25 and others added 13 commits April 3, 2026 00:16
…put (#307447)

fix: prevent catastrophic regex backtracking in _extractImagesFromOutput (#307431)
Improve type safety for dynamic stylesheet rules
Support ctrl/cmd+arrow editing shortcuts in browser
…ed-guard-306923-80620f70460f4141

fix: guard debugger detach against destroyed WebContents (fixes #306923)
* chat: add Plugins to ChatSessionCustomizationType

Adds a static Plugins instance so extensions can use
ChatSessionCustomizationType.Plugins instead of constructing
new ChatSessionCustomizationType('plugins') manually.
Also adds explicit mapping in mainThread section conversion.

* chat: rename unsupportedTypes to supportedTypes in customization provider metadata

Inverts the semantics from a blacklist (types to hide) to a whitelist
(types to show). More natural API: providers declare what they support
rather than what they don't. When omitted, all sections are shown.

* fix: pass through groupKey from provider items and infer storage for auto-grouping

- fetchItemsFromProvider now passes through groupKey, badge, badgeTooltip
- When no groupKey, infers storage from URI (workspace folder = local, else = user)
- Include BUILTIN_STORAGE in external provider's visible sources so
  items with groupKey 'builtin' get a Built-in group header

* fix: enhance debug panel to dump full harness descriptor and item details

- Report now shows active harness metadata: id, label, hiddenSections,
  workspaceSubpaths, hideGenerateButton, requiredAgentId, instructionFileFilter
- External provider items now dump groupKey, badge, status, scheme
- Accepts full IHarnessDescriptor instead of just itemProvider

* feat: add 'Generate Customization Debug Report' command

Registers a command palette action that generates a debug report
for the current customization section. Available when the Chat
Customizations editor is focused. Dumps harness metadata, provider
items with all fields, and widget state into a new editor tab.

* fix: proper auto-grouping for provider items by URI scheme and path

- file: under workspace folder → Workspace group (storage: local)
- file: elsewhere → User group (storage: user)
- vscode-userdata: → Extensions group (storage: extension, read-only)
- non-file schemes (copilotcli:, claude-code:) → Built-in group
- Also catch and log errors in loadItems to surface silent failures

* cleanup: improve type safety in group filter logic

* refactor: split filterItems into provider vs core paths with shared helpers

Extracts shared logic into reusable helpers:
- applySearchFilter(): search query matching with highlights
- buildGroupedEntries(): assigns items to groups, builds display entries
- commitDisplayEntries(): splices into list and updates empty state

Splits grouping logic into two clear paths:
- filterItemsForProvider(): sync layout OR simple storage grouping
  (Workspace, User, Extensions, Built-in)
- filterItemsForCore(): instruction categories OR full storage grouping
  with visibleSources filtering

* refactor: extract fetchCoreItemsForSection for clean provider/core separation

Splits fetchItemsForSection into three methods:
- fetchItemsForSection(): dispatcher that routes to provider or core path
- fetchProviderItemsForSection(): clean provider path (provider + optional sync)
- fetchCoreItemsForSection(): legacy core path with full promptsService pipeline

The core path is now fully isolated with a TODO marker for future removal.
When provider API becomes the sole path, delete fetchCoreItemsForSection()
and all its helpers (applyBuiltinGroupKeys, applyStorageSourceFilter filters,
workspaceSubpath/instructionFileFilter logic).

* fix: treat vscode-userdata: items as built-in in provider path

Extension-contributed items (Ask, Explore, Plan) use vscode-userdata:
URIs. Previously _inferStorageAndGroup mapped these to storage=extension
which showed them in an 'Extensions' group, while the core path treated
them as 'Built-in'. Now all non-file schemes map to the Built-in group
for consistency.

* fix: enrich provider items with skill descriptions from promptsService

When the provider doesn't supply a description (e.g. skills from
chatPromptFileService which only have URIs), fall back to descriptions
from promptsService.findAgentSkills(). This ensures skill descriptions
show in the provider path just like in the core path.

* fix: address Copilot review feedback

- Add precondition to Generate Debug Report command so it only appears
  when chat features are enabled
- Log errors via onUnexpectedError in loadItems instead of silently
  swallowing them
- Handle unknown type IDs in supportedTypes→hiddenSections mapping
  by explicitly filtering with a guard instead of relying on filter(Boolean)
* agentHost: adopt improved AHP file edits

Adopts microsoft/agent-host-protocol#35

* comments
Hide disabled/new-session-only pickers in the sessions app instead of changing shared chat widgets. This keeps the fix scoped to sessions and intentionally uses CSS display:none for the shared active-session option-group dropdowns to avoid reaching down into lower-level workbench picker infrastructure.

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

feat: show coverage indicators in minimap
@pull pull Bot locked and limited conversation to collaborators Apr 2, 2026
@pull pull Bot added the ⤵️ pull label Apr 2, 2026
@pull pull Bot merged commit e9c46ed into code:main Apr 2, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.