Commit Graph

159965 Commits

Author SHA1 Message Date
Rob Lourens 995d4de513 Remove accidentally committed screenshot
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-26 14:05:17 -07:00
Rob Lourens ec3af88e86 Gate client-tool invocation on model registration, not whole reconnect
Move the model-registration deferral from the provideChatSessionContent
reconnect call site into _setupClientToolCall, where beginToolCall and
invokeTool actually require the ChatModel. The coarse deferral wrongly
delayed the progress/completion streaming wiring in _observeTurn (which
does not need a model), breaking two AgentHostChatContribution tests and
the rename/fork paths that resolve content without ever creating a model.
Gating at the client-tool layer also covers server-initiated live turns,
not just reconnect snapshots.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-26 14:04:44 -07:00
Rob Lourens 7abead88e5 Condense deferred-reconnect comment to a brief note
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-26 12:29:32 -07:00
Rob Lourens 7bb3c8b46a chat: fix stranded "input needed" agent-host session on client-tool reconnect
When reconnecting to an active agent-host turn that is blocked on a client
tool, `provideChatSessionContent` invoked `_reconnectToActiveTurn`
synchronously before the chat model was registered in `IChatService`.
Reconnect re-invokes the blocked client tool, and
`LanguageModelToolsService.invokeTool` throws "Tool called for unknown chat
session" when the model is missing, leaving the turn blocked forever with the
session stuck in `InputNeeded` and no confirmation/question rendered.

- Defer `_reconnectToActiveTurn` until the chat model exists, mirroring the
  adjacent snapshot-controller `getSession` / `onDidCreateModel` guard.
- As defense in depth, dispatch a failed `ChatToolCallComplete` when a client
  tool fails pre-execution (non-cancellation), so a rejected tool call can no
  longer strand the turn.

Adds two repro tests in agentHostClientTools.test.ts.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-26 10:35:10 -07:00
Dmitriy Vasyura c95c7ab707 Resolve context window for Auto in Agent Host (#323017)
* Resolve context window for Auto in Agent Host

* PR feedback
2026-06-25 22:17:31 +00:00
Sandeep Somavarapu e6c84e2813 sessions: always use close icon for chat tab close button (#323021)
The draft chat tab close button used a trash icon while committed chats
used a close icon. Always use the close icon for the chat tab close
button while keeping the destructive "Delete Chat" label and
delete-without-confirmation behavior for untitled drafts.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 22:04:55 +00:00
Don Jayamanne 34a9b07a47 chat: restore last-used agent and model for new chat editors (#323011)
* chat: restore last-used agent and model for new chat editors

- New chat editors always opened with the Local agent and the Auto model,
  even right after the user had been working with an agent host (e.g.
  Copilot Agent Host). The last-used agent/model was never consulted, so
  users had to re-pick the agent, model, and model configuration for every
  new editor, and it reset in every new workspace.
- Persists the last-used non-local chat agent (session type) at profile
  scope and prefers it when resolving the session type for a new chat
  editor, so the editor reopens with the agent the user last worked with
  across windows and workspaces. An explicit chat.editor.defaultProvider
  still wins.
- Restores that agent's last-used model and its configuration (e.g. context
  size, thinking effort) for the fresh editor session, mirroring the
  existing reopened-session restore.

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

(Commit message generated by Copilot)

Co-authored-by: Copilot <223556219+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>

* 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 <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-06-25 21:38:31 +00:00
Alexandru Dima 84e743a053 Revert "ci: drop external DTD from minimal fontconfig to avoid expat NULL-deref crash" (#323009)
Revert "ci: drop external DTD from minimal fontconfig to avoid expat NULL-der…"

This reverts commit 70c0a5de8e.
2026-06-25 21:33:19 +00:00
Ladislau Szomoru 1edad4c80b AgentHost - seed github state from the session database when restoring a session (#323013)
* AgentHost - seed github state from the session database when restoring a session

* 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-06-25 21:16:08 +00:00
vs-code-engineering[bot] d85d255839 fix: guard WorkspaceTrustEditor.render against disposed instantiation service (fixes #322973) (#322980)
fix: guard WorkspaceTrustEditor.render against disposed instantiation service

The @debounce(100) render() can fire after the editor pane and its scoped
InstantiationService have been disposed, throwing "InstantiationService has
been disposed" from createInstance. Bail out early when the pane's own
DisposableStore is already disposed.

Fixes #322973

Co-authored-by: vs-code-engineering[bot] <122617954+vs-code-engineering[bot]@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Dmitriy Vasyura <dmitriv@microsoft.com>
2026-06-25 21:04:40 +00:00
Benjamin Christopher Simmonds 3161b0d406 sessions: surface un-accepted PR review comments to the agent (#322969)
* sessions: surface un-accepted PR review comments to the agent

Un-accepted PR review comments lived only client-side in CodeReviewService and were never written to the agent-host annotations channel, so the listComments note ("there are N pull request comments...") and the viewUnreviewedComments tool never saw them.

Add AgentFeedbackPRReviewSeederContribution which mirrors the active agent-host session's un-accepted PR review comments onto the feedback annotations channel as created prReview items, keyed by the session resource so they stay on one channel across multiple chats. Mirrors carry sourcePRReviewCommentId for editor de-duplication and GitHub thread resolution. The seeder refreshes mirror text on upstream edits, collapses duplicate mirrors, and removes created mirrors whose source comment is gone.

Deleting a comment from the viewUnreviewedComments confirmation now dismisses the source PR comment (new ICodeReviewService.dismissPRReviewComment) so the seeder does not recreate it. getSessionEditorComments de-duplicates the mirror against the raw PR comment in the editor.

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

* sessions: address PR review feedback on agent feedback tests

- Restore the resolvePRReviewThread coverage in codeReviewService.test.ts alongside the new dismissPRReviewComment test.
- Use the store returned by ensureNoDisposablesAreLeakedInTestSuite() (registered before setup) so the leak tracker is installed when setup runs.
- Match the updated IAgentFeedbackService / ICodeReviewService mock override signatures.

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

* sessions: implement hasLoadedFeedback in component fixture instance

The fixtureUtils IAgentFeedbackService fixture is a full (non-mock) instance, so it must implement the new hasLoadedFeedback API added in this branch. Fixes the Compile & Hygiene CI failure (TS2741).

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 20:54:04 +00:00
Don Jayamanne 0f1b95cb5a feat: Enhance command handling and completion for runtime commands (#322976)
- Updated `MockCopilotSession` to include aliases and input hints for commands.
- Modified command invocation logic to support trailing text as input for commands like `/env` and `/review`.
- Improved slash command parsing to retain raw input for better handling of multiline commands.
- Enhanced completion provider to include runtime command descriptions and hints in completion items.
- Added tests for new command behaviors and completion scenarios, ensuring robust handling of runtime commands.
- Updated `AgentHostInputCompletionHandler` to provide detailed command descriptions in completion suggestions.
2026-06-25 13:43:10 -07:00
Ladislau Szomoru 5c35b073ff AgentHost - use etag when searching for pull requests (#323005) 2026-06-25 20:06:35 +00:00
Dmitriy Vasyura 7e52611dbc Refactor galleryItemRenderer into reusable component and add extension tools details (#322879)
Refactored galleryItemRenderer into a component shared between MCP, Plugins and Tools views.
Added Extension tools details pane to view tools provided by an extension from the Tools view.
Fixed an issue in MCP view where installed items were rendered incorrectly
2026-06-25 19:41:34 +00:00
Logan Ramos 3d616509df Fix explorer paste (#323002)
* Fix explorer paste

* Some more cleanup

* Remove clipboard internal flag
2026-06-25 19:41:06 +00:00
Anthony Kim 8a9cd3dd36 Bump Copilot CLI package to 1.0.65 (#322747)
* Bump Copilot CLI package to stable 1.0.64

* Try to bump to 1.0.65 instead

* Remove stale Copilot sdk/worker materialization for 1.0.65

* Update Debian amd64 deps after excluding Copilot native executable

* Remove stale RPM x64 libstdc++ deps after Copilot CLI 1.0.65 packaging

* Prune Copilot SEA executable before CI packaging

* Exclude Copilot SEA executable from packaging stream

* SDK should be 1.0.4
2026-06-25 12:03:54 -07:00
Connor Peet aa5ad3b9e4 Merge pull request #322849 from microsoft/connor/plugins-customization-back-321891
chat: fix Plugins customizations tab stuck on marketplace (#321891)
2026-06-25 11:50:21 -07:00
Hawk Ticehurst 2069b4a71b Update customizations sidebar content and behavior (#322497)
* Update customizations sidebar content and behavior

* Address PR feedback

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

* Address feedback

* Address PR feedback

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-06-25 14:47:48 -04:00
Raymond Zhao c740f81b31 feat: add MSRC trailer check (#322988) 2026-06-25 11:47:11 -07:00
Kyle Cutler e11b16011f Fix browser URL focus quirks (#322995)
* Fix browser URL focus quirks

* feedback
2026-06-25 20:40:06 +02:00
Megan Rogge f8ba02da60 Voice mode: add send keyword for hands-free submit (#322847)
* Voice mode: add send keyword setting for hands-free submit

When agents.voice.autoSendDelay is -1 (manual send), users can now
configure a keyword phrase (e.g. "send it") via agents.voice.sendKeyword.
When detected at the end of the transcript, the keyword is stripped and
the request is submitted automatically — enabling fully hands-free
workflow without auto-send on silence.

Fixes microsoft/vscode-internalbacklog#8187

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

* Address review: persist transcript, clear toggle mode, trim keyword

- Persist final transcript and clear _pttToggleMode before _finishPtt()
  to avoid stuck toggle state and missing transcript history
- Trim configured keyword before comparison to handle whitespace
- Use full setting key in description for clarity

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

* Fix send keyword: strip trailing punctuation before matching

Speech recognizers often append punctuation (e.g. 'hello send.' instead
of 'hello send'), causing the keyword match to fail. Strip trailing
punctuation before comparing.

Also allow keyword trigger regardless of autoSendDelay value — useful
as an immediate send even when silence-based auto-send is active.

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

* Update sendKeyword description: works regardless of autoSendDelay

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 11:08:27 -07:00
Ladislau Szomoru 97a8425bae AgentHost - do not detect pull request when branch matches the base branch (#322993)
AgentHost - do not detect pull request when the branch matches the base branch
2026-06-25 18:02:05 +00:00
Anthony Kim 33c985dacf Respect chat.tools.terminal.autoApprove for agent host (#322774)
* Respect chat.tools.terminal.autoApprove for agent host

* Make things cleaner

* address copilot feedback to cache to avoid rebuilding regex

* Add terminal auto-approve fallback removal TODO and source-of-truth tests

* align order with workbench
2026-06-25 19:27:46 +02:00
Benjamin Christopher Simmonds 9012e0e98f Agent host: generate PR title and description from session conversation (#322954)
* agent host: generate PR title and description from session conversation

The local agent host Create PR / Create Draft PR operation previously
derived the title and body from the branch name only. It now asks the
utility model for a title and description, feeding it the main session
conversation (markdown text of requests/responses only — tool calls,
subagents, and reasoning are excluded and the text is char-bounded) plus
a changed-file summary. Falls back to the branch-name title/body when no
Copilot token is available or generation fails, so PR creation never
fails because the model is unavailable.

The conversation-to-text logic is extracted from the session title
controller into a shared, configurable helper
(agentHostConversationContext) that truncates only the conversation and
preserves any framing in full.

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

* agent host: fix PR title generation typecheck and diff summary perf

Use ISessionWithDefaultChat (which exposes `turns`) for the PR handler's
session state so the conversation context can be built, fixing the
tsgo typecheck failure. Also track the running length in
_summarizeDiffsForPrompt instead of re-joining the lines each iteration.

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

* agent host: use const for parsed PR title (eslint prefer-const)

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 17:17:40 +00:00
Ben Villalobos 4c2fab7133 fix(oss): make cached-NOTICE fallback download match files (#322979) 2026-06-25 16:53:08 +00:00
Lee Murray c6d536250b Enhance hover effects and update activity bar colors (#322968)
* style: update activity bar colors to use icon foreground variables

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

* style: enhance hover effect for compact combo controls in status bar

---------

Co-authored-by: mrleemurray <mrleemurray@users.noreply.github.com>
Co-authored-by: Copilot <copilot@github.com>
2026-06-25 09:52:45 -07:00
Ross Wollman 188d2d49b0 Merge pull request #322794 from rwoll/rwoll/chat-model-picker-restricted-mode
Fix misleading Chat model picker and Sign In affordances in untrusted (Restricted Mode) workspaces
2026-06-25 09:51:31 -07:00
Josh Spicer bf6124c49c Gate Claude3PIntegration behind editor preview policy (#322851)
* Gate Claude3PIntegration behind editor preview policy

Flip ownership of the `Claude3PIntegration` enterprise policy so it can
honor the account-side editor preview-features flag.

Previously the policy was owned by the copilot-chat extension setting
`github.copilot.chat.claudeAgent.enabled` via the distro `product.json`
`extensionConfigurationPolicy` block. Because `product.json` is pure JSON
it cannot carry a `value(policyData)` callback, so the policy only
responded to OS/MDM admin policy and never honored
`chat_preview_features_enabled` (sourced from the Copilot token's
`editor_preview_features`). Codex works because its core setting owns
`Codex3PIntegration` in code with a value callback.

Now the in-code core setting `chat.agentHost.claudeAgent.enabled` owns
`Claude3PIntegration` with the preview-features value callback, and the
extension setting attaches via a `policyReference` declared from
`product.json`. To express that, an `extensionConfigurationPolicy` entry
can now be either form:

- the current owner/"parent" syntax (full `IPolicy`: name, category,
  minimumVersion, description), or
- a reference: `{ "policyReference": { "name": "<owner>" } }`, mirroring
  the in-code `policyReference` configuration field.

`configurationExtensionPoint` and the policy exporter detect the
`policyReference` key to route entries to `.policy` vs `.policyReference`;
the exporter links reference entries into the owner's `referencedSettings`
and skips type validation for settings not registered in the headless
export process.

Regenerates `policyData.jsonc` and updates the export test fixture.

Requires the companion change in microsoft/vscode-distro that turns the
claude entry into a `policyReference`.

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

* Bump distro to pick up Claude3PIntegration policy reference

Update the distro pin to 7abf39b86c07d094722a4b3ec9f37e78fe3d5db3, which
includes the merged change turning the `github.copilot.chat.claudeAgent.enabled`
`extensionConfigurationPolicy` entry into a `policyReference` to the in-code
`Claude3PIntegration` owner (microsoft/vscode-distro#1434).

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

---------

Co-authored-by: Ubuntu <josh@ahp.4mywozgnka0etnlo23z031udwc.xx.internal.cloudapp.net>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 09:39:09 -07:00
Giuseppe Cianci c9460d9fab Merge pull request #322956 from microsoft/agents/codex-extension-picker-issue-fdce8f5a
chat: fix new-session picker no-op for extension chat sessions
2026-06-25 18:33:27 +02:00
Ladislau Szomoru 7a29dba038 AgentHost - detect pull request that are not created using the button (#322970) 2026-06-25 18:32:38 +02:00
Sandeep Somavarapu 039af3a996 sessions: rework New Chat UX in header, tabs and Conversations menu (#322960)
* sessions: rework New Chat UX in session header, tabs and Conversations menu

Show the New Chat action in the session header until the session has more
than one committed (non-draft) chat. Surface the chat tab strip (with its
own trailing New Chat action) as soon as there is more than one open chat,
including in-composer drafts. Show the Conversations dropdown only once
there is more than one committed chat, and keep the New Chat entry at the
top of that dropdown.

Exclude untitled draft chats from the per-chat toggle list, and delete
untitled drafts without a confirmation prompt when their tab is closed via
a new IDeleteChatOptions.skipConfirmation threaded through the delete-chat
API and all providers.

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

* Address CCR feedback and fix component screenshot fixtures

- deleteChat now returns whether a delete actually occurred so the
  management service only fires onDidDeleteChat on real deletions
- tab-strip New Chat action is disabled for archived sessions
- draft tab close button uses a destructive Delete label/trash icon
- add focus-visible outline for the tab-strip New Chat action
- update sessions chat accessibility help text
- register ISessionsPartService stub and isArchived in the
  chatCompositeBar component fixture so all variants render
- add unit tests for skipConfirmation delete behaviour

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 18:32:05 +02:00
Benjamin Christopher Simmonds 09e171d99d chat: update tunnel host toggle dimensions to 22px with 0 padding (#322955) 2026-06-25 16:00:42 +00:00
Lee Murray a6d24e1bf4 Respect user input casing for File Explorer root header (#322961)
style: respect user input casing for File Explorer root header

Co-authored-by: mrleemurray <mrleemurray@users.noreply.github.com>
Co-authored-by: Copilot <copilot@github.com>
2026-06-25 15:25:07 +00:00
Benjamin Christopher Simmonds 46faa16b9c agents: new session action group toolbar f3219f4a (#322920)
* Agent Host changes for agents/new-session-action-group-toolbar-f3219f4a

* Clarify onDidDiscardNewSession docs and add discard event tests

Reword the onDidDiscardNewSession JSDoc to note that sendRequest into an existing session also discards the pending draft, while sendNewChatRequest clears it without firing the event. Add unit tests asserting the event fires on discardNewSession and does not fire on sendNewChatRequest.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 15:13:59 +00:00
Sandeep Somavarapu 4e52d80cd6 sessions: manage side pane and responsive sidebar in the layout controller (#322953)
* sessions: manage side pane and responsive sidebar in the layout controller

Move the Toggle Side Panel action into the session layout controller so the
side-pane visibility memory lives with the controller, and introduce
ISessionChangesService to own the changes-multi-diff-source URI identity
alongside the upstream IChangesViewService.

Fix the responsive sidebar reveal bug after reload: the controller now only
auto-reveals a sidebar it auto-hid (tracked via _sidebarAutoHidden) instead of
relying on an in-memory _userClosedSidebar flag that reset on reload. A sidebar
the user had closed before reloading is therefore no longer auto-revealed when
the side pane is later closed. Adds a regression test plus harness options for
initial container width and part visibility.

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

* sessions: void floating openView promises in desktop layout controller

Address CCR feedback: prefix the fire-and-forget openView calls with void to
match the existing pattern in the file.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 16:59:31 +02:00
Giuseppe Cianci f76e41c55b chat: address review feedback on new-session picker fix
Skip the first MenuItemAction (not array index 0) when mirroring create
submenu actions, so the primary create command isn't duplicated into the
Chat New menu when the submenu starts with a separator/submenu. Tighten the
explanatory comment, and log a warning when no create command resolves
instead of silently no-opping.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 16:54:39 +02:00
Giuseppe Cianci 817c8875fd chat: fix new-session picker no-op for extension chat sessions
The session type picker creates a new session for a non-delegating,
extension-contributed chat session (e.g. Codex from the openai.chatgpt
extension) by invoking `openNewChatSessionExternal.<type>`. That command
was only registered when `_registerMenuItems` happened to see an entry in
the create submenu at the moment the contribution was enabled, which races
extension menu/command registration. When the submenu is still empty at
enable time (as it is for Codex), the command is never registered and never
retried, so clicking the entry rejects with "command not found" and the
picker silently does nothing.

Register `openNewChatSessionExternal.<type>` unconditionally for
non-delegating contributions and resolve the underlying create-submenu
command lazily at execution time, so it is unaffected by extension
registration ordering. The action no-ops gracefully when no create command
is contributed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 16:38:37 +02:00
Logan Ramos 0acd78faaf Hide long context for models which have the same cost regardless (#322950) 2026-06-25 14:22:00 +00:00
Lee Murray 777e60a254 Update input needed session animations with pulsing background (#322924)
* Add pulsing yellow background for "Input needed" sessions in agent sessions viewer

* style: update input needed session animations to avoid overpainting on selection

* 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: mrleemurray <mrleemurray@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-06-25 14:20:50 +00:00
Alexandru Dima 18a52c8a29 smoke: fail fast with actionable error when Electron crashes during launch (#322905)
* smoke: fail fast with actionable error when Electron crashes during launch

The per-suite `before all` hook launches Electron via Playwright's
`_electron.launch`. This was called with `timeout: 0`, so when the
Electron process crashed during startup (e.g. a native SIGSEGV in the
Chromium browser-process/sandbox init path, which leaves a minidump),
the launch promise never resolved or rejected. It simply hung until
Mocha's 120s `before all` hook timeout fired, producing an opaque
"Timeout of 120000ms exceeded" with no hint that a native crash had
occurred.

Give the launch (and the first-window wait) a finite timeout well below
the Mocha hook timeout and wrap them so a failure is re-thrown as an
actionable error pointing at the crash-dump directory and Playwright
trace. This turns a 120s opaque hang into a faster, clearly-diagnosable
failure.

Co-authored-by: Copilot <223556219+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 <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-06-25 14:15:01 +00:00
Ladislau Szomoru 1c80314e3b Engineering - update code owners (#322944) 2026-06-25 15:39:36 +02:00
Benjamin Christopher Simmonds d668af4efb agents: fix input banner button color 3e80d66b (#322936)
* Agent Host changes for agents/fix-input-banner-button-color-3e80d66b

* Fix CI input banner button color and check count text

Make the primary 'Fix Checks' button match the orange banner accent and update the banner text to 'X out of N checks failed, P pending' where N is the number of completed checks.

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

* Only show session input banners when the session has completed

Gate the CI and comments input banners on the active session's status so they don't appear while the agent is still in progress.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 13:21:42 +00:00
Ladislau Szomoru 262d4a0b13 Agents - unify the view mode and the view service (#322910)
* Agents - unify the view mode and the view service

* 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>

* Fix hygiene

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-06-25 15:10:26 +02:00
Alexandru Dima 70c0a5de8e ci: drop external DTD from minimal fontconfig to avoid expat NULL-deref crash (#322909)
The Linux smoke-test job works around the expat 2.6.1 fontconfig NULL-deref
CVEs by pointing FONTCONFIG_FILE at a minimal config with <include> removed.
However that config still declared an external DTD:

    <!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">

fontconfig feeds that DTD to expat as an external *parameter* entity, which
still hits the not-yet-backported CVE-2026-32776 / CVE-2026-32778 crash paths
on expat 2.6.1 even with <include> gone. This was observed in CI as a SIGSEGV
inside libexpat (called from libfontconfig) during Chromium browser-process
font initialization, which crashed Electron at startup. Because the smoke-test
launch used no timeout, that crash surfaced only as an opaque 120s Mocha
"before all" hook timeout.

fontconfig does not require the DOCTYPE, so drop it to remove the last
external-entity codepath. The full workaround can be removed once the runner
ships libexpat >= 2.7.5 (the step already auto-disables itself in that case).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 15:06:31 +02:00
Benjamin Christopher Simmonds f5ebe48b48 agents: add second onboarding scenario 013d3d83 (#322917)
Agent Host changes for agents/add-second-onboarding-scenario-013d3d83
2026-06-25 15:06:02 +02:00
Benjamin Christopher Simmonds 22f2d38a75 sessions: drag & drop to reorder workspaces and groups in the sessions list (#322916)
* sessions: drag & drop to reorder workspaces and groups in the sessions list

Let users drag workspace section headers and user-group headers to reorder
them, with an insertion line shown above/below the target. Pinned stays
locked to the top and Done to the bottom; neither (nor the date sections) is
draggable or a drop target.

Groups are now fully user-managed: their order no longer derives from member
recency and is shared across both grouping modes. In By Workspace mode groups
and workspaces share one freely-intermixable order (groups default above
workspaces, workspaces alphabetical); dragging a workspace promotes it so it
escapes the "+N more workspaces" capping. In By Date mode groups form a
contiguous block right below Pinned and never mix into the date sections.

Introduces ISessionSectionOrderService (explicit ordered-id list + workspace
promotion, persisted locally with stale-id GC) and removes the obsolete group
sortKeyOverride member-recency mechanism.

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

* sessions: fix template-literal Map key type in getGroupsInDisplayOrder

The s const tuple made the Map key type group:, so get(id)
with a plain string id failed to type-check (CI Compile & Hygiene). Type the
Map key explicitly as string.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 14:17:15 +02:00
Benjamin Christopher Simmonds 3a99d2cf92 sessions: default to Changes after session creation (#322913)
* sessions: default to Changes after session creation

Keep new sessions on Files until their first request marks the session as created. Once created, use Changes as the default aux view while preserving per-session user choices like switching back to Files.

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

* sessions: persist fallback aux view on reveal

When a hidden created session falls back to Changes because its saved aux container is unavailable, persist Changes as the resolved active container so future restores do not keep pointing at the invalid container.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 14:15:33 +02:00
Lee Murray 67a5e3045f Add handling for editor frame border width in modern UI layout (#322918)
* feat: add editor frame border width handling for modern UI layout

* 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-06-25 14:15:30 +02:00
Lee Murray 26238c2fcd Improve activity bar styles for consistency and appearance (#322711)
* style: enhance horizontal activity bar appearance with rounded backgrounds and consistent icon tinting

* style: enhance activity bar appearance with rounded backgrounds and improved icon alignment

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

* Refactor activity bar styles for improved layout and consistency

* Fix CSS syntax by adding missing semicolon in activity bar styles

* Adjust activity bar and tab heights to 24px for improved consistency

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

* Fix CSS left property values in activity bar styles for consistency

* Adjust activity bar positioning and ensure consistent height for text-label composites

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

* Add styles for 24px overflow control in activity bar for consistency

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>

---------

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-06-25 11:26:55 +00:00
Sandeep Somavarapu ba49a30bd4 editor: show editor layout actions in single tab mode (#322908)
The Agents window contributes editor-area layout actions (Maximize/Restore/
Close Editor Area, Open in Modal Editor, and the secondary side bar toggle)
to the `EditorTitleLayout` menu. `SingleEditorTabsControl` previously
returned empty layout actions, so these controls disappeared when
`workbench.editor.showTabs` was set to `single`.

Return the resolved layout actions instead. This menu is only populated by
the Agents window, so there is no visible change in the regular VS Code
editor where the menu is empty.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-25 12:25:41 +02:00