Conversation
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
Refactor `computeVisibleOptionGroups`
…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
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>
…307487) Fix terminal sandbox unsandboxed command wrapping
…ndicators feat: show coverage indicators in minimap
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 : )