Skip to content

[pull] main from microsoft:main#1180

Merged
pull[bot] merged 45 commits intocode:mainfrom
microsoft:main
Apr 24, 2026
Merged

[pull] main from microsoft:main#1180
pull[bot] merged 45 commits intocode:mainfrom
microsoft:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Apr 24, 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 : )

mjbvz and others added 30 commits April 21, 2026 23:58
This isn't fully hooked up since input states don't have a full lifecycle yet in the service

Co-authored-by: Copilot <copilot@github.com>
… and full-color icon

- Add custom BaseActionViewItem widget that renders the Open in VS Code
  button with a slide-in label animation on hover/focus and a full-color
  VS Code logo that desaturates at rest via CSS filter
- Reorder the button before the Run Tasks button (order 7 vs 8)
- Use ICommandService.executeCommand directly in onClick to bypass
  precondition-gated ActionRunner.run() which silently blocked clicks
- Add protocol handler fallback in electron-browser action for dev builds
  where no sibling app is configured (launchSiblingApp fails)
- Quality-tinted hover backgrounds (blue/green/orange) based on product
  quality, matching the companion Open in Agents button in VS Code core

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Only set data-product-quality attribute when productService.quality is
  defined (not in dev builds where quality is undefined)
- CSS default background-image uses the bundled ./vscode-icon.svg shield
  (shown in dev builds where no quality attribute is present)
- Added per-quality CSS rules pointing to
  ../../../../../workbench/browser/media/code-icon.svg — the file that
  vscode-distro overwrites at packaging time with the quality-specific
  branded VS Code icon (stable/insider/exploration)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- widget: replace ICommandService.executeCommand with this.action.run()
  and remove the now-unused ICommandService dependency
- electron contribution: also check productService.embedded fields in
  hasSibling to align with launchSiblingApp's own resolution logic in
  siblingApp.ts which switches on process.isEmbeddedApp
- CSS: scope filter and label transitions inside .monaco-enable-motion
  blocks and add .monaco-reduce-motion overrides, following the pattern
  established by other sessions titlebar widgets

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: sandy081 <10746682+sandy081@users.noreply.github.com>
Co-authored-by: Copilot <copilot@github.com>
…12356)

* Move agentPluginsHome to IUserDataProfile and IEnvironmentService

- Add agentPluginsHome to IEnvironmentService (platform level)
- Add agentPluginsHome to IUserDataProfile (same value for all profiles)
- Remove agentPluginsHome from IWorkbenchEnvironmentService
- Remove agentPluginsHome getter from NativeWorkbenchEnvironmentService
- Update AgentPluginRepositoryService to read from IUserDataProfileService
- Update toUserDataProfile signature with new agentPluginsHome parameter
- Update all test files and consumers

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

* Address review feedback

- Remove redundant agentPluginsHome override in embedded app
  (already correct from environment service since dataFolderName is shared)
- Add agentPluginsHome to isUserDataProfile type guard

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

* Add --agent-plugins-dir to --transient feature

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

* Derive agentPluginsPath from extensions parent directory

Agent plugins are now stored as a sibling of the extensions directory
(e.g., ~/.vscode-insiders/agent-plugins/ next to ~/.vscode-insiders/extensions/).
This means --extensions-dir and --transient automatically co-locate
agent plugins without needing a separate --agent-plugins-dir flag.

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

* Fix test: only co-locate agent-plugins when extensions-dir is explicitly set

Avoid calling this.extensionsPath in the default agentPluginsPath
fallback, which breaks tests where environment args are empty objects.
Instead, check args['extensions-dir'] directly and only co-locate
when it is explicitly overridden.

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

* Revert env service change; only co-locate agent-plugins in --transient

Keep agentPluginsPath original logic in environment service. The
--transient handler in cli.ts passes --agent-plugins-dir explicitly
to co-locate agent plugins under the same temp parent directory.

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

* Compute host agent-plugins path for embedded Agents app

Extract getAgentPluginsPath as a shared function. In the embedded
Agents app, compute the host VS Code's agent-plugins directory using
quality-specific dataFolderName, matching the hostUserRoamingDataHome
pattern. Add --agent-plugins-dir to --transient feature.
Add agentPluginsHome to isUserDataProfile type guard.

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

* fix warnings

* simplify

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

* fix

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

* fix

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <copilot@github.com>
* agentHost: finish implementing host-level settings

* pr comments
Meant to filter archived, not done
Co-authored-by: Copilot <copilot@github.com>
…nk navigation (#312398)

Previously the customizations sidebar only worked for copilotcli sessions.
This change extends support to any session type that has a registered content
provider, making it work for claude-code and other AHP harnesses.

- Remove hardcoded copilotcli gate in mainThreadChatAgents2; now any session
  type with a registered content provider schema is accepted
- Wire ICustomizationHarnessService into count widgets so they use the active
  harness's itemProvider when available (avoids count mismatches for remote
  item providers)
- Add getActiveItemProvider() utility and update getCustomizationTotalCount()
  to accept an optional itemProvider for harness-backed sessions
- Each sidebar customization link now deep-links to its section in the
  management editor via selectSectionById
- Use reader.store pattern instead of MutableDisposable + manual rebind for
  itemProvider change subscriptions
- Add tests for getActiveItemProvider and getCustomizationTotalCount with
  itemProvider; add ICustomizationHarnessService mock to widget fixture
- Update AI_CUSTOMIZATIONS.md to reflect the new multi-harness sessions behavior
Co-authored-by: Copilot <copilot@github.com>
* adding allowRead and testing with defaults

* Rename terminal sandbox read allow list

* Remove Copilot settings change from sandbox PR

* changes

* changes

* Updating sandbox runtime package

* Updating tests

* Add macOS test cases for denyRead/allowRead behavior and ~ path handling

Agent-Logs-Url: https://github.com/microsoft/vscode/sessions/ec5cf3c2-6c7b-4577-bdbb-8ac3d42bdfb0

Co-authored-by: dileepyavan <52841896+dileepyavan@users.noreply.github.com>

* changes for readonly home dir

* skipping integrated tests for sandbox

* running srt in tmp_dir for linux

* running srt in tmp_dir for linux

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
This path comparison sometimes failed on a trailing slash of case differences on case-insensitive systems
…-vscode-button

sessions: update Open in VS Code titlebar button with hover animation and full-color icon
tools: fix run task tool not finding tools consistently
* Make localIndex setting public

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

* fix the namespace

* update desc

---------

Co-authored-by: Copilot <copilot@github.com>
…picker (#312028)

* Chat: show provider group name in model picker detail

When resolving grouped language model providers, replace model metadata detail with the configured group name. This lets users distinguish duplicate models from multiple instances of the same vendor (for example Local vs Remote Ollama).

Also adds a unit test that verifies two groups from the same vendor produce distinct detail labels in the picker metadata.

Signed-off-by: Charlie Fish <contact@charlie.fish>

* Chat: only override model detail with group name when needed

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

* Chat: use group name as default model detail instead of provider name

---------

Signed-off-by: Charlie Fish <contact@charlie.fish>
Co-authored-by: Copilot <copilot@github.com>
fix: prevent tool deferral when tool_search is not in request (#311946)

When a custom agent restricts tools to only MCP tools, tool_search gets
filtered out but toolSearchEnabled remained true. This caused all tools
to get defer_loading=true, which Anthropic rejects with 'At least one
tool must have defer_loading=false'.

Add a defense-in-depth check in both Messages API and Responses API:
verify tool_search is actually present in the request's tool list before
enabling tool deferral. This aligns with the BYOK path which already
had this guard.
osortega and others added 15 commits April 24, 2026 12:25
…2261)

* Mobile titlebar: live session title + web host widget on welcome

On phone layouts the desktop titlebar is hidden and replaced by a mobile-specific bar above the grid. Two issues fixed here:

1. The title was hardcoded to "New Session" because `setTitle()` was never called. It now subscribes to `ISessionsManagementService.activeSession.title` via `autorun` and updates live.
2. On the home/empty (welcome) screen there was no way to pick an agent host or connect on mobile web. The host filter widget (dropdown + connection status/connect button) from the web titlebar is now surfaced in the mobile titlebar's center slot while the welcome view is visible.

## Implementation

- New `MobileTitlebarPart` under `browser/parts/mobile/` replaces the old `MobileTopBar`. It hosts a hamburger, a center slot with a title element and a `MenuWorkbenchToolBar` for a new `Menus.MobileTitleBarCenter` menu id, and a new-session button. The center slot switches between title and toolbar based on `SessionsWelcomeVisibleContext` AND whether the toolbar has any contributed items, so empty menus (e.g., desktop/electron) fall back to showing the title.
- Instantiated via `IInstantiationService.createInstance` so it can consume `ISessionsManagementService` / `IContextKeyService`.
- `hostFilter.contribution.ts` registers a second menu entry on `Menus.MobileTitleBarCenter` (gated by `IsWeb && !AuxiliaryWindow && HasAgentHosts && SessionsWelcomeVisible`) plus a matching `IActionViewItemService.register()` call reusing the existing `HostFilterActionViewItem`. No new widget code.
- Layering is preserved: `browser/` never imports from `contrib/`; the mobile part only knows about the menu id.

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

* Address review: touch + a11y for mobile titlebar widgets

- MobileTitlebarPart: render the session title as a <button> so it is
  keyboard-focusable and handles touch via native button semantics.
- HostFilterActionViewItem: register Gesture.addTarget on both the
  dropdown pill and the connection button, and listen for TouchEventType.Tap
  alongside CLICK so iOS taps work reliably. Use dom.EventHelper.stop
  for consistency.

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

* Fix mobile titlebar host widget gating: use IsNewChatSessionContext

SessionsWelcomeVisibleContext is only true during the first-run
walkthrough overlay, not on the home/new-session screen. As a result
the host picker was never registered into the mobile titlebar's
center slot (the MenuWorkbenchToolBar reported zero items and the
title stayed visible). Switch the gate to IsNewChatSessionContext,
which is true whenever a new (empty) chat session is active, so the
widget shows on the phone home screen and hides once a real session
starts.

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

* Fix host filter layout on mobile titlebar

The '.monaco-action-bar .action-item' base rule sets display:block with
higher specificity than '.agent-host-filter-combo', which caused the
dropdown pill and connect button inside the li to stack vertically on
the mobile titlebar. Qualify the combo selector with the action-item
class to override that rule and restore the intended horizontal layout.

Also switch '.mobile-top-bar-actions' to flex-direction: column so
future mobile titlebar actions can stack while each compound item
still lays out its internal controls as a row.

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

* Remove unicode char from mobileTitlebarPart comment

Replace hamburger unicode with [menu] to satisfy hygiene check.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Improve browser experience in Agents app

* feedback
…12257)

Drop [hostname] from remote agent host session labels on web

On web the titlebar host filter dropdown already scopes sessions to a
single host, making the '[<hostname>]' suffix in the session workspace
label and the host label in the session card description redundant.

On web only:
- Omit the providerLabel from remote agent host session workspace labels
  so group headers show just '<reponame>' instead of '<reponame> [<host>]'.
- Skip the host description on session cards (active sessions fall back
  to 'Working...' / 'Input needed' / 'Failed' status text).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <copilot@github.com>
* fix: post-install script doesn't check for existing sources

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

* Update resources/linux/debian/postinst.template

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

* fix: also scan Dir::Etc::sourcelist in has_existing_repo_source

Agent-Logs-Url: https://github.com/microsoft/vscode/sessions/b5d0d54b-bcba-40d2-ae60-e5c15f38e959

Co-authored-by: rzhao271 <7199958+rzhao271@users.noreply.github.com>

* fix: check our own managed files before has_existing_repo_source

Agent-Logs-Url: https://github.com/microsoft/vscode/sessions/a7ac5d3d-6a46-40a4-b04b-75aaa68fcea9

Co-authored-by: rzhao271 <7199958+rzhao271@users.noreply.github.com>

---------

Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
* agents: persist agent-host workspace selection across reload

The workspace picker filtered restore through ISessionsManagementService.activeProviderId,
which auto-locked to whichever provider registered first. Stored entries owned by
late-registering providers (e.g. local-agent-host, contributed at AfterRestored) were
filtered out and never restored.

setActiveProvider has never had a caller in the sessions module since it was added
in # sessions.activeProviderId was never written, so the value was always304626
just 'first provider to arrive'. Removed the unused interface members, storage key,
init logic, and the picker's filter that was the actual bug. The titlebar widget's
dead read of activeProviderId is also removed.

Adds a regression test covering the case where the stored workspace's provider
registers after another provider. (Written by Copilot)

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

* Address Copilot review: fix stale comments

- Remove stale 'Restore or auto-select active provider' comment in
  SessionsManagementService that referred to removed logic.
- Reword test comment to not assert specific contribution phases since
  both providers actually register at WorkbenchPhase.AfterRestored;
  the race is registration order within the phase, not sync vs async.
  (Written by Copilot)

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

* Wait for stored provider before falling back; upgrade on register

Fix the actual reload-window scenario: if storage has a checked entry whose
provider isn't registered yet, the picker no longer falls back to an unrelated
recent workspace. When that provider later registers, the picker upgrades the
selection to the checked entry instead of staying locked on the fallback.

Strengthens the regression test to seed both a (resolvable) early-provider
recent and a checked late-provider  the realistic shape that exposedentry
the remaining bug.

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

* Only auto-upgrade workspace selection before user has explicitly picked

Adds a `_userHasPicked` gate so that late provider registrations only move the
selection from a fallback to the stored "checked" entry while the user hasn't
yet acted in this session. Once they explicitly pick (or clear) a workspace,
background provider activity never moves the selection out from under them.

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

* agents: wait for session types when restoring agent-host selection

When a stored agent-host workspace is restored late (after the provider
registers async on window reload), the picker now fires
onDidSelectWorkspace at the right time, but the provider's session types
may not be loaded yet (e.g., the agent host is still connecting). This
caused createNewSession to throw, which left the new chat view without
an active session and hid the agent-host-specific config pickers (model,
permissions, isolation) until the user re-clicked the workspace picker.

Make _createNewSession resilient: if the provider isn't registered yet,
do nothing (the picker will re-fire when it arrives); if the provider
is registered but has no session types yet, wait once for
onDidChangeSessionTypes, then create. A MutableDisposable cancels any
pending wait when the user picks a different workspace.

Also remove the now-redundant construct-time onDidChangeProviders
fallback in render(): the picker handles that path itself by firing
onDidSelectWorkspace, which is already wired to _onWorkspaceSelected.

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

* agents: simplify picker upgrade and session creation paths

The picker no longer needs a special 'pending checked entry' suppression:
on every providers-change, if the user hasn't explicitly picked yet,
just re-restore from storage and swap if it differs from the current
selection. This naturally upgrades a fallback to the user's checked
entry once that provider arrives.

Trade-off: when both a fallback recent and a checked recent are stored,
the fallback may briefly appear before being replaced. The user-intent
gate ('_userHasPicked') still prevents background swaps after the user
picks. Test updated to reflect this.

Also fold the now-redundant _doCreateNewSession helper back into
_createNewSession.

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

* agents: drop dead provider-not-registered branch in _createNewSession

The picker only fires onDidSelectWorkspace once the provider is
registered (the upgrade happens in onDidChangeProviders), and render()
only calls _createNewSession when restoredProject is set, which itself
requires a registered provider. So the missing-provider check was
unreachable. Keep just the session-types-empty wait, which is the
actual fix for the missing-model-picker bug.

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

* agents: drop carried-over sessionTypeId if invalid for new provider

When the workspace picker upgrades to a different provider after
restore (e.g. fallback EH CLI -> stored local agent host), we were
passing the previous active session's sessionType to createNewSession.
If that type doesn't exist on the new provider (e.g. EH CLI's 'agents'
on a local agent host), createNewSession throws and the previous
session stays  leaving the wrong pickers visible until theactive
user re-clicks the workspace.

Drop the sessionTypeId in that case so the wait-for-types branch /
default-pick can produce a valid session.

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

* agents: upgrade picker to checked remote workspace once it connects

For SSH remote agent hosts, the provider registers immediately but its
connectionStatus starts in Connecting. The picker treated it as
unavailable at restore time and fell back to a different workspace.
The connection-status autorun then only re-restored when the selection
was  so the fallback stuck even after the SSH connectionempty
settled.

Apply the same 'if !userHasPicked, swap to checked if different' rule
in the connection-status autorun as in onDidChangeProviders, so the
picker upgrades once the remote finishes connecting.

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

* agents: honor checked workspace pick across remote connection state

Previously the picker treated Connecting/Disconnected remotes as
'unavailable' and fell back to a different workspace at restore, then
swapped to the user's checked entry once the remote came online. This
caused brief flicker for SSH remotes that hadn't reconnected yet, and
a sticky wrong selection if the connection was slow or failed.

Restore the user's checked workspace immediately as long as its
provider is registered, regardless of connection status. Reflect the
remote state in the trigger label instead:
  * Connecting -> spinner icon (loading~spin)
  * Disconnected -> grayed (disabledForeground)
  * Connected -> normal

Disconnect no longer clears the  the gear menu in theselection
picker dropdown lets the user reconnect or pick something else, but
their explicit pick is preserved across reconnects, disconnects, and
provider registration races.

The new chat view's wait-for-session-types branch already handles the
'selection exists but provider not ready' case, so session creation
just waits until the AHP connection completes.

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

* agents: drop trigger styling and connection-status autorun

Upstream now styles offline workspace items in the dropdown. The
trigger label no longer needs spinner/grayed states, and the picker
no longer needs to auto-clear/restore the selection on every
connection-state change. Keep only the bits needed to restore the
user's checked workspace across window reloads:

- _userHasPicked gate + onDidChangeProviders re-restore (handles
  agent-host providers that register asynchronously at startup)
- _restoreCheckedWorkspace ignores connection status (so an SSH
  remote in the Connecting state at restore-time still restores
  the user's pick instead of falling back)

(Written by Copilot)

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

* Move SSH disconnect fallback from view pane into picker

When restoring a checked workspace whose provider is in Connecting state,
the picker now watches connectionStatus and clears the selection if the
 Disconnected). This fires
onDidSelectWorkspace(undefined), which triggers the view pane's existing
_onWorkspaceSelected(undefined) handler to call unsetNewSession().

Previously this was handled in _createNewSession by clearing the pending
session-type wait, but that only abandoned the  it left the pickerwait
still showing the stale SSH workspace, causing the UI to be out of sync
(picker showing SSH folder, session using default copilot).

The picker is the right owner of this logic because it owns _selectedWorkspace.

Changes:
- sessionWorkspacePicker: add MutableDisposable _connectionStatusWatch and
  _watchForConnectionFailure helper; call it after initial restore and
  after onDidChangeProviders upgrade; clear it in _selectProject/clearSelection
- newChatViewPane: remove the redundant Disconnected autorun from
  _createNewSession (the picker fires onDidSelectWorkspace(undefined) which
  already clears _pendingSessionTypeWait via _onWorkspaceSelected)
- test: add 'connecting provider that fails falls back to no selection'

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

* Fix SSH fallback: watch from Disconnected, fall back only after Connecting

Remote providers register with an initial status of Disconnected and
Connected/Disconnected.
The previous _watchForConnectionFailure guard required initial status
to be Connecting, so it always bailed out immediately.

Fix: watch from any non-Connected initial state, but only fall back
when Disconnected is observed *after* a Connecting transition has
occurred. A provider that is Disconnected and never starts connecting
(permanently offline prior pick) has its selection preserved as before.

... lifecycle.

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

* Add grace-period fallback for restored remote that never connects

Provider state transitions can race ahead of the picker's autorun
 by the time we observe, status may already be Disconnectedsubscription
without us ever seeing a Connecting transition. The previous logic only
fired the fallback on an observed transition to Disconnected, so it never
triggered in this case and the picker was left showing an unreachable
remote with no session.

Add a 5-second grace-period timer alongside the autorun: if the provider
hasn't reached Connected by then, fall back. Keep the autorun for the
fast cases (immediate Disconnected transition cancels the wait early;
Connected cancels the timer). Both signals route through the same
fallback() helper.

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

* Add tests for restored-remote grace-period fallback

Three new tests covering the scenarios that the unit test for the previous
'observed Disconnected transition' approach missed:

- restored remote that never connects falls back after grace period
  (the bug the user hit: status starts and stays Disconnected,
  no observable transition, but the picker still falls back)
- restored remote that connects within grace period keeps selection
  (success cancels the timer)
- user pick during connect cancels the fallback
  (explicit picks aren't clobbered by a late timer firing)

Also rename the existing 'restore picks checked entry even when remote is
disconnected' test  (before grace period)' to make the time scopeto '
explicit.

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

* Address Copilot review: grammar fix and fire events on provider removal

 'never move' in _userHasPicked comment
- When the selected workspace's provider is removed, also clear
  _connectionStatusWatch and fire _onDidChangeSelection +
  _onDidSelectWorkspace(undefined) so NewChatWidget calls unsetNewSession()
  and the grace-period timer/autorun are cancelled

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

* Use disposableTimeout instead of manual setTimeout/clearTimeout

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <copilot@github.com>
Bumps [openssl](https://github.com/rust-openssl/rust-openssl) from 0.10.75 to 0.10.78.
- [Release notes](https://github.com/rust-openssl/rust-openssl/releases)
- [Commits](rust-openssl/rust-openssl@openssl-v0.10.75...openssl-v0.10.78)

---
updated-dependencies:
- dependency-name: openssl
  dependency-version: 0.10.78
  dependency-type: indirect
...

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>
Add onDidDispose event for chat sessions input states
Rework title menu item to use View > Browser command

Co-authored-by: Copilot <copilot@github.com>
* Fix Copilot CLI mission control remote flows

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

* Refine mission control remote events

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

* Use shared integration id for Mission Control

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

* Fix remote Mission Control session sync

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…nt (#311988)

* Plan agent: graceful degradation when Explore sub-agent is disabled

* feat: 3-tier discovery prompt and fix SwitchAgentTool config mismatch

- buildAgentBody takes (exploreEnabled, searchSubagentEnabled) for
  Explore → search subagent → generic fallback discovery tiers
- SwitchAgentTool uses getExperimentBasedConfig instead of direct
  vscode.workspace.getConfiguration, matching PlanAgentProvider
- Listen for SearchSubagentToolEnabled config changes
- 7 new tests for discovery tiers, config listener, and explore toggle
@pull pull Bot locked and limited conversation to collaborators Apr 24, 2026
@pull pull Bot added the ⤵️ pull label Apr 24, 2026
@pull pull Bot merged commit c36e7fb into code:main Apr 24, 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.