Repository navigation
Conversation
Expose Manage Remote Environments in the Command Palette and Sessions overflow, rename the editor, remove code-action tooltips from the environment menu, and left-align inline actions. Preserve the same modal sizing behavior as Customizations and Language Models. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: keep group rename draft across list rerenders The inline group name editor was recreated from the saved name on every list refresh, discarding what the user had typed. Share the draft/selection/focus restoration used by session and chat renames with the group renderer. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: close reopened group rename editor in test teardown In browser unit tests the focused editor was blurred on disposal and committed into a groups service mock that lacks renameGroup. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Layer a profile-local hidden preference over existing provider availability and expose Show/Hide actions without affecting connections or sessions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Distinguish unavailable hosts from hidden preferences, share picker eligibility checks, and preserve visibility preferences across registration and availability changes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Unhide explicit remote folder selections without overriding availability, keep existing drafts sendable on hidden connected hosts, and fix CI formatting. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Show per-section spinners beside counts until each discovery completes, with cancellation-safe progress and accessible busy state. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Restore original picker availability when remote management is off, retain saved hidden preferences, and gate the command, overflow entry and open editor. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Link the section info action and empty-state guide to the planned vscode-agent-environments redirect. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… a disk I/O budget (#342357) agentHost: give the durable workspace transition restart test a disk I/O budget 'restores one durable transition before provider output after service restart' was skipped as flaky (#339669). It opens, closes and reopens a real SQLite database on disk, so most of its time is spent in fsync-bound commits. Where the node.js unit tests run with mocha's 2s default (the ADO Flaky Smoke Tests runs), an occasional file system stall on a loaded Linux agent pushes it past the budget. Its SessionDatabase siblings with the same pattern were fixed the same way in #340024. Un-skip the test with an explicit 10s timeout. Fixes #339669 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: polish cloud automations for Universe Hide unsupported cloud actions, improve repository ownership recovery, and keep grouping and trigger metadata consistent across visual and accessible presentations. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep automation history and restored remote container destinations independent of picker visibility. Surface per-section discovery failures immediately, including missing tunnel authentication. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…I steps (#344036) Rerun failed tests in isolation and split integration CI steps Select failed tests and hook suites by title in fresh Electron windows or Node processes, retaining file-level fallback for large failure sets. Keep runner safety checks and per-file pass attribution intact, and report recovered failures as flaky. Split node and extension-host integration runs so extension-host coverage continues after failures, and enable bounded retries for node integration and Agent Host E2E in pull request CI. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
#344051) Picks up microsoft/vscode-distro#1478, which adds the authIssuers and languageModelRateLimit API proposals to GitHub.copilot-chat in product.json. The extension already declares both proposals (#337846, #340100), so without this the workbench logs that product.json enables fewer API proposals than the extension wants, and built products do not enable the proposals. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…3998) The runtime can start a newly offered client tool before the setTools response reaches the host. Previously routing was only committed after the response, so such a start had no client contributor and its handler could wait forever. Stage routing before replacing tools instead: route the union of applied and offered client tool names, and prefer offered definitions when resolving the owning client, while replaceTools is in flight. Commit the offered set on success and restore the applied routing on rejection. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: add row actions to artifact details lists Artifact details items can declare actions that run directly through their details lease, like Load More, without the run executor. Lists render them in a floating row action bar that keeps focus and shows per-item progress. The GitHub pull request integration uses this to rerun failed GitHub Actions checks and resolve review comments, hiding resolved threads immediately rather than after the next poll. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: fix Chats section test broken by concurrent main merges #343746 removed the QUICK_CHATS_SECTION_ID import and the Chats section under date grouping, while #343744 added a capped Chats section test that used both. Restore the import and run that test for the groupings that still have a Chats section, workspace and repository. This fixes the client type check in Compile & Hygiene. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: harden artifact row actions after review Rerun Check now refreshes and requires current core and check results before running, verifies with GitHub that the linked job is that check's run on the current head, and is only offered when the linked job is the check's own run. Only the list's focused row puts its actions in the tab order, and a focused row action follows its item when the list reorders instead of staying with the reused row. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
#344059) Agent Host changes for lszomoru/agents/investigate-websocketoverduplex-test
* sessions: hide external banner for automations Keep automation sessions external for ownership and filtering while suppressing the external-session banner.
…344062) The sessions/artifactDetails/CommentsInformation fixture rendered the same view as the Attention fixture and only added a click-opened instant hover on the Comments tab information button. That transient hover was captured inconsistently, so the Light screenshot changed on unrelated PRs. Remove the fixture and its now-unused tabInfo scenario. The same hover is still covered by sessions/artifactIntegrations/PullRequestCommentsInformation. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…er (#344047) * Agent Host changes for lszomoru/agents/test-module-import-failure-fix * Fix browser test dependencies exposed by import failure checks Replace Node-only events and Buffer usage in the common WebSocket fixture so its tests run in browsers. Move the CommonJS-dependent TextMate fixture suite to the Electron test lane without dropping coverage. Keep module import errors fatal. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix browser benchmark imports and drain console logs before cleanup Use the cross-platform environment helper so the opt-in object mutation benchmark can be imported without a Node process global. Wait for pending console listeners before closing the page so error argument serialization does not race browser cleanup and mask the original import failure. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Use browser-supported strict assertions in terminal escaping tests The browser assertion shim does not export assert.strict. Import strictEqual directly to preserve strict comparisons while allowing the suite to register in browser runs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Drop WebSocket test changes superseded by upstream Node move Keep the relocated test identical to origin/main now that #344059 places its Node-only dependencies in the Node test lane. Preserve the browser runner and remaining compatibility fixes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Automations: graduate settings
…onments-visibility Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add inline clear and collapse actions, and offer explicit tunnel permission sign-in instead of a generic discovery error when no usable token exists. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix GitHub Feed plugin activation and installation identity Persist runtime enablement for direct plugins, activate confirmed catalog installs, and reload live chat contributions. Reconcile Browse rows and uninstall actions using stable installation identity while preserving separate marketplace copies. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix formatting in plugin installation UI Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Handle plugin activation cancellation and rejected enablement Await all post-uninstall chat reloads before surfacing errors. Guard runtime enablement against local policy collisions and restore its previous state if the local commit is rejected. Update the MCP test to supply plugin discovery and await the async action, fixing browser and Electron CI. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Adds a chatPromoWidgetArmed event the first time a promo's status-bar pip is shown, alongside the existing chatPromoWidgetShown and chatPromoWidgetAction events. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Co-authored-by: Dmitriy Vasyura <dmitriv@microsoft.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…44448) Add --workers <count> to the browser unit test runner, as for the Electron and Node.js runners. Every worker launches its own browser, whose page claims test files through its worker's test server with the claiming code of parallel.ts; claims are idempotent and retried, because WebKit can lose a synchronous response on a busy machine. Browsers run one at a time with workers, and failures are rerun in a single browser. PR checks use --workers 4. Also fix three tests that were slow enough in WebKit to time out when run in parallel: tick fake timers synchronously in the paced sender test, whose timeout left the fake clock installed for later tests, compare a 6 MB artifact with VSBuffer.equals, and bisect for the toast fit height instead of laying out every height. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…44139) <!-- Thank you for submitting a Pull Request. Please: * Read our Pull Request guidelines: https://github.com/microsoft/vscode/wiki/How-to-Contribute#pull-requests * Associate an issue with the Pull Request. * Ensure that the code is up-to-date with the `main` branch. * Include a description of the proposed changes and how to test them. --> Part of #344310 Today, chat in a regular editor window can only use the local agent host, cloud sandboxes, and the agent host of the window's own remote. Agent hosts on other machines are only available in the Agents window. This PR lets a workspace bring its own remote agent hosts into the editor window, so you can chat with, and open sessions of, an agent host on another machine from the workspace that belongs to it. ## What it does - Adds `chat.workspaceRemoteAgentHosts`, a restricted, window-scoped setting listing the agent hosts an editor window connects to over WebSocket while the workspace is open. A host is any server speaking the agent host protocol, for example one started with `code-insiders agent host --port 8081 --connection-token <secret>`: ```jsonc // .vscode/settings.json "chat.workspaceRemoteAgentHosts": [ { "name": "Build machine", "address": "buildbox.example:8081", "connectionToken": "<secret>" } ] ``` - Editor windows register the existing WebSocket connection factory against this setting, *instead of* `chat.remoteAgentHosts`, which stays the Agents window's list. The existing `chat.remoteAgentHostsEnabled` and auto-connect settings still apply. - The remote agent host chat contribution surfaces the hosts' agents, models and session lists in editor Chat, reusing the session list store and controller the cloud sandbox integration already uses. The host chooses the working directory, since local workspace folders don't exist there. - Untitled remote agent host sessions can start as drafts, like local agent host sessions, so a remote agent can be selected in editor Chat before the first message. - The session list cache (shared with cloud sandboxes) now refetches when its connection reconnects, and editors follow chats that move to a new session, as they already do for local agent host sessions. The setting is ignored in untrusted workspaces. A trusted workspace can already run arbitrary code, so connecting to a host it lists adds no new capability. Connected hosts do receive your GitHub credentials, so only list hosts you trust, and keep in mind that a `connectionToken` in `.vscode/settings.json` is easy to commit. This PR supports WebSocket hosts only. Dev tunnels, SSH and WSL could later be added to the same setting through a `type` field; the editor-window chat code here already works with any connection type. ## Demo https://github.com/user-attachments/assets/3450a4cd-72f0-44dc-8b59-413cf6049cbb Recorded in Code OSS built from this branch, with a workspace that lists two agent hosts on other machines (`pc2` and `tablet`): their agents appear in the session target picker, a new chat runs on `tablet`, and the session list shows and opens sessions of both hosts. ## How to test 1. Run an agent host that accepts WebSocket connections (see above) and add it to a workspace's `chat.workspaceRemoteAgentHosts`. 2. Open that workspace in an editor window. The host's sessions appear in the Chat view's session list, and its agents and models can be picked for a new chat. 3. Open an existing session of the host, and start a new one. 4. Remove the entry: the window disconnects from the host and its sessions disappear. ## Validation - `npm run typecheck-client`: passed. - `scripts\test.bat --run src/vs/workbench/contrib/chat/test/browser/agentSessions/agentHostChatContribution.test.ts --run src/vs/workbench/contrib/chat/test/browser/remoteAgentHost/remoteAgentHostChatContribution.test.ts`: 852 passing, including a new test that the session list refetches after its connection reconnects. - `scripts\test.bat --run src/vs/platform/agentHost/test/electron-browser/remoteAgentHostService.test.ts --run src/vs/workbench/contrib/chat/test/browser/remoteAgentHost/remoteAgentHostChatContribution.test.ts`: 98 passing, including a new test that an editor window connects to workspace-listed hosts, ignores user-level hosts, and disconnects when the entry is removed. - Used daily in Code OSS for three days with two remote agent hosts: listing, opening and continuing sessions works. ## Known issues - Rarely, listing a host session fails with "Conflicting backend identities", after which sending silently does nothing. I couldn't reproduce it recently; both hosts' full session lists (420 sessions) contain no duplicate session IDs, so the conflicting registration comes from another path. - Remote untitled drafts don't show configuration controls (mode, permissions and other session settings) yet: the provisional draft session service only talks to the local agent host. Until a follow-up makes it work for any connection, remote drafts use the host's defaults. - Not specific to this PR: when a host connection drops and comes back, an already open session tab stays read-only until it is reopened.
Show Reset Menu when action visibility differs from its defaults, including visible actions that are hidden by default. Keep Reset hidden when nothing has been customized, and cover the menu-state and toolbar behavior with regression tests. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Gate canvases on preview feature policy Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* chat: open working set files in regular editors Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * make sure to scroll to first edit;' * Fix working set editor test stub overload typing Co-authored-by: justschen <54879025+justschen@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Agent Host changes for agents/fix-terminal-encoding-issue-909c3078
Fix empty cloud sandbox titles during preparation Initialize the draft title before provisioning so session lists remain labeled while the cloud environment starts. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…s (fixes flake) (#343074) * terminal: stop run_in_terminal sending Ctrl+U into PowerShell commands (fixes flake) When shell integration is not ready in time, run_in_terminal falls back to the `none` (or `basic`) execute strategy, which sends Ctrl+U to clear pending input before the command. In PSReadLine's default Windows edit mode Ctrl+U is not bound, so it is inserted into the command line and `cmd /c rem` runs as `\x15cmd /c rem` ("The term 'cmd' is not recognized"). - Track pending input from data written to the terminal (`onDidInputData`) instead of the shell's output (`onData`), so a fresh terminal printing its prompt no longer counts as user input. - Never send Ctrl+U to PowerShell. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * terminal: interrupt running commands without pending input, keep Ctrl+U for pwsh outside Windows Review feedback on the run_in_terminal Ctrl+U fix: - BasicExecuteStrategy only checked for a still-running command when the pending-input flag was set. That flag used to be set by any shell output, so a process that kept running after the idle fallback was interrupted before the next command; now that it only tracks input, the next command would be typed into that process. Check for a running command first, independently of the flag. - PSReadLine's Emacs edit mode (the default on macOS and Linux) binds Ctrl+U to BackwardKillInput, so only skip Ctrl+U for PowerShell on Windows, where the default Windows edit mode inserts it into the command line. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fix model selection during cloud sandbox preparation Keep the temporary startup transcript in the draft's model pool and seed it with the selected model instead of a local default. Fixes #344362 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: vs-code-engineering[bot] <vs-code-engineering[bot]@users.noreply.github.com>
…ariables setting (#344470) Co-authored-by: vs-code-engineering[bot] <vs-code-engineering[bot]@users.noreply.github.com>
…333550) (#333563) * fix: guard dynamic-height probe against shrunk model in ListView probeDynamicHeights (fixes #333550) * fix: address review on listView.ts:1774 — re-check item count in probe loop Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: address review on listView.ts:1774 — condense probe-loop comment to one line Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: address review on listView.ts:1768 — shorten inline comment to one line Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: add regression test for reentrant shrink leaving later probe indices out of bounds Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: address review on listView.test.ts:476 — shrink two rows so index 2 stays pending during reentrant splice Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: address review on listView.test.ts:497 — condense inline comment to one line Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: address review on listView.test.ts:504 - keep later probe indices pending Force the triggering render range to include all remaining items so the reentrant shrink occurs before the final probe iteration. Reuse the existing getRenderRange override pattern and remove ineffective second-row height changes. Validation: TypeScript syntax and git diff --check passed. The focused browser test could not start because glob is missing; npm ci failed with DEPTH_ZERO_SELF_SIGNED_CERT. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> 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>
* fix(chat): keep system notifications out of user steering requests Queued steering requests were joined into one request that counted as user-sent whenever any part came from the user, so a background terminal notification was shown as the user's own message. Only batch steering requests that share an initiator, and ask the dispatched request to yield when steering from the other initiator is still queued. Fixes #344268 * fix(chat): apply yield requests that arrive before a participant starts The extension host ignored yield requests for chat requests it had not registered yet. A steering batch dispatched while other steering is still queued asks to yield before the participant starts, so the queued user message waited for the whole notification turn. Keep those yield requests until $invokeAgent registers the request, and only re-arm the yield after dispatching a steering batch so Send Now keeps its previous behavior. * fix(chat): clear yield requests forwarded for requests that end A yield request that reached the extension host before the request was registered there stayed buffered when the request never reached the extension host, for example after Stop during startup, or when the yield arrived after the request had finished. Forward false when a request that was asked to yield ends, and consume the buffered entry when the extension host registers the request.
* sessions: keep cloud creation context for New Session Let an existing-session backend provide its logical creation target and repository, while retaining availability checks and ordinary harness fallback behavior. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: preserve explicit source harness overrides Only query provider-owned creation context when the original session resource is available. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: preserve Cloud creation targets in group actions Resolve the provider-owned creation target for group New Session buttons and environment menu actions instead of reusing sandbox execution folders and backends. Preserve availability checks, workspace selection provenance, and focus. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…empts (#344439) * agentHost: fail refused artifact merges instead of blocking later attempts A pull request merge that GitHub refused (for example 405 "Base branch was modified") was recorded as an unknown outcome, so every later Merge request was blocked until reconciliation, which could never succeed while the pull request stayed open. Code actions can now throw ArtifactActionRejectedError for a definitive refusal, which fails the run with a known outcome. GitHub 4xx responses to merge, merge queue and mark ready mutations use it. Reconciling an uncertain direct merge reports it as not executed when the pull request is still open at the same head and not queued. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: keep uncertain merge outcomes uncertain during reconciliation A merge or enqueue whose response was lost now reports its original ambiguous failure when the reconciliation read fails, so a refused read is not mistaken for a refused mutation. Only the mutation's own 4xx response is classified as a refusal, before authentication recovery rewraps it. The merge action records whether it dispatches a direct merge or a merge queue entry before the mutation. Reconciliation rules out an effect only for a recorded direct merge; queue entries and older checkpoints stay uncertain. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…344512) Agent Host changes for lszomoru/agents/investigate-hardened-entitlements-failure
…344517) Agent Host changes for lszomoru/agents/azure-pipelines-pr-check-validation
…44527) Agent Host changes for lszomoru/agents/investigate-github-action-failure
…4399) Fixes #344300 In the experimental Markdown editor, Mermaid diagrams looked different from the same diagram in the Markdown preview. They used Mermaid's default purple theme, which is hard to read in dark themes (also reported in #330433). Small diagrams were stretched to the full column width, and `markdown-mermaid.maxHeight` was ignored. The editor had its own Mermaid renderer in `markdown-language-features`, separate from the preview's in `mermaid-markdown-features`. This PR moves the editor's Mermaid code block editor into `mermaid-markdown-features`. It is contributed through `markdown.codeBlockEditorProviders` (export API), so editor and preview share one renderer, theme mapping, and set of settings. Demo, recorded in Code OSS from this branch. Markdown editor on the left, Markdown preview on the right: - light, dark, and high-contrast themes - a live edit - `markdown-mermaid.maxHeight: "300px"` capping the initial height - dragging the height grip past the cap https://github.com/user-attachments/assets/5ba9589a-0932-4ba2-a331-16e01789f621 ## What changes for users - **Theme:** diagrams use the preview's VS Code theme mapping and render again when the color theme changes. - **Size:** diagrams render at their natural size, at most the column width and centered, like in the preview. The embedded editor's frame follows that height (`reportSize`) without scrollbars. - **`markdown-mermaid.maxHeight`:** - It still defaults to empty, meaning no cap, in both the preview and the editor. - When set to a pixel value, the editor uses it as `maxAutomaticHeight`: it caps the initial height, and users can still drag the grip beyond it. - Other CSS lengths, such as `80vh`, still apply in the preview but leave the editor uncapped. - **`markdown-mermaid.resizable`:** controls the editor's height grip. - Setting changes apply to open Markdown editors right away. ## Changes **mermaid-markdown-features** - New `MermaidCodeBlockEditorProvider` (`src/markdownEditor/`). It resolves the editor page with the current `markdown-mermaid` settings, which are injected the same way as in the preview. It returns `presentation: { resizable, fullWidth, fullView, maxAutomaticHeight }` and fires `onDidChange` when settings change. - New guest `preview-src/markdownEditor/index.ts`, built to `markdown-editor-out/`. It connects via `WebEditorClient` and reuses the preview's `loadExtensionConfig`, `VsCodeMermaidThemeTracker`, and render helpers. - The Markdown editor injects the theme as CSS variables plus `color-scheme`, without VS Code's body classes. The guest derives `vscode-dark`/`vscode-light` from `color-scheme` and re-renders when the injected theme changes. - It reports the height the diagram has at the frame's full width. Measuring the rendered height instead let a scrollbar narrow the diagram and then keep itself. - New dependency `@vscode/web-editors`. - `scripts/markdownEditor.browser.test.mts` replaces the old Mermaid browser test. It hosts the guest with a real `WebEditorHost` and checks rendering, natural size, theme switching, live edits, and error recovery. **markdown-language-features** - Export-API code block editor providers can expose an optional `onDidChange` event. When it fires, open Markdown editors resolve that provider's blocks again. - `maxAutomaticHeight` is accepted in the code block editor presentation (contribution schema, descriptor validation, merge). - The Markdown editor document now uses the theme's `color-scheme`. Before, embedded frames had `color-scheme: dark` in dark themes while the editor document was `normal`, so Chromium painted an opaque backdrop behind every embedded editor. That showed as a dark box behind Mermaid diagrams and other embedded editors. - Removed the built-in Mermaid renderer (`markdown-editor-src/mermaid/`), its build plugin and test, and the `mermaid` dependency. - Updated `@vscode/markdown-editor` from 0.0.2-136 to 0.0.2-147. This brings the embedded editor chrome from microsoft/vscode-packages#392 (hover outline, toolbar, snapping grips, `maxAutomaticHeight`) and the presentation protocol from microsoft/vscode-packages#396. ## Validation - `npm run test-extension -- -l markdown-language-features`: 192 passing. This includes new tests for `maxAutomaticHeight` validation and presentation merging. - `node --test scripts/markdownEditor.browser.test.mts` in `mermaid-markdown-features` passes. - Typecheck of both extensions (including `tsconfig.markdownEditor.json` and `preview-src`), ESLint, hygiene, and `check-markdown-editor-package-json` all pass. - Manual check in Code OSS with the published 0.0.2-147 package, comparing the editor and preview side by side: - Light Modern, Dark Modern, and Default High Contrast. - Live theme switching. - Setting `maxHeight` while the editor is open. - Resizing past the cap. - Frame heights equal the diagram heights, with no stray scrollbars. Pan and zoom in the editor, as toolbar actions, are a later step.
Avoid background Git checks and repeated checkout warnings for closed or merged PR artifacts. Clear cached workspaces and ignore late checkout results so reopening requires fresh verification. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Compare maxAutomaticHeight in codeBlockEditorPresentationEqual, so a contribution change that only changes the height cap reaches open editors. - Update the presentation schema/merge test expectations for maxAutomaticHeight (the existing scripts/codeBlockEditorPresentation.test.mts failed after the field was added). - Announce Mermaid rendering errors to screen readers again (role="alert"). - Reset the editor page's body margin, so the layout matches the height the guest reports even without the host's injected base styles. - Document that contributed code block editors, including Mermaid, are not loaded in Restricted Mode. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* win32: fix installer context menu COM surrogate kill command * Approve engineering system changes for #344505 --------- Co-authored-by: deepak1556 <hop2deep@gmail.com>
Replace the ubuntu-latest, macos-latest and windows-latest labels used by the chat-lib checks with the versions they currently resolve to (ubuntu-24.04, macos-26, windows-2025), so the checks don't move to a new OS image unexpectedly when GitHub migrates a -latest label. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fixes #344532 Addresses the code review comments on #344399, which moved the Markdown editor's Mermaid block into `mermaid-markdown-features`. - **Height cap changes reach open editors:** `codeBlockEditorPresentationEqual` now compares `maxAutomaticHeight`. Before, a contribution change that only changed the cap compared equal, so the refresh was skipped. A new test checks that two contributions differing only in their cap are not equal. - **Fixed failing test:** `scripts/codeBlockEditorPresentation.test.mts` now expects `maxAutomaticHeight` in merge results, and covers it in the schema's accept and reject cases. It failed after #344399. - **Errors are announced again:** Mermaid rendering errors (including the startup fallback) get `role="alert"`, as with the previous guest. The browser test locates the error by role again. - **Margin reset:** the Mermaid editor page resets `body` margin and padding itself, so its layout matches the reported height even without the Markdown editor's injected base styles. - **Restricted Mode stays as is:** contributed code block editors, Mermaid included, are not loaded there, and Mermaid blocks show as code. CONTRIBUTING now says so. ## Validation - `npm run test-extension -- -l markdown-language-features`: 193 passing. - `node --test scripts/codeBlockEditorPresentation.test.mts` (markdown-language-features): 4/4 pass. On `main`, 2 failed. - `node --test scripts/markdownEditor.browser.test.mts` (mermaid-markdown-features) passes. - Typecheck of both extensions, ESLint, and hygiene pass. - Code OSS: a live syntax error renders as a `role="alert"` element, and the page's body margin is 0.
… rebuilt (#344524) * Build chat changes summary file lists lazily from a shared pool Every agent turn's changes summary built its changed-file list eagerly, even while collapsed, and each list came from a new single-use pool with its own ResourceLabels. Every list therefore subscribed to about nine global events (IModelService.onModelAdded, ILanguageService.onDidChange, ...). A long chat in the Chat view or the Agents window (hundreds of turns) created hundreds of lists and thousands of global listeners, and logged listener-leak warnings from ResourceLabels.registerListeners. - Add ChangesSummaryFileListPool: one ResourceLabels shared by all lists, at most two idle lists kept, and each list released back to the pool when its summary is disposed. - Build the list only when the disclosure is first expanded. A collapsed summary renders just its header. - The chat list renderer owns one pool, clears it with its other pools, and passes it to both the agent turn changes summary (ChatTurnPillsContentPart) and the checkpoint file changes summary (ChatCheckpointFileChangesSummaryContentPart), which had the same eager per-turn list. - The session working set keeps its own pool through renderChangesSummaryFileList. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Keep a chat turn's changes summary expanded when it is rebuilt When a new turn arrives, the previous turn's changes summary is rebuilt because it is no longer the last turn, and it came back collapsed. The chat list renderer now keeps each turn's disclosure state, like the request disclosures, and the rebuilt summary starts from it. An expanded summary builds its file list right away instead of on the next toggle. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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]
Can you help keep this open source service alive? 💖 Please sponsor : )