[pull] main from microsoft:main - #1656
Merged
Merged
Conversation
agentHost: preserve client-addressed session directories Keep non-file working directory URIs returned by listSessions in client space so remote workspace filtering treats live and restored sessions consistently.\n\n(Written by Copilot)\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Reacquire the owning session state when a chat turn completes so main and hidden chat statuses do not remain stale after the idle subscription expires. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…333304) * sessions: fix empty-state attachment pills Match the established chat attachment layout by leading with the remove action and rendering themed resource, provider, or generic fallback icons. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 878234d1-4d87-4726-add4-40b417070bdb * sessions: address attachment review feedback Keep open and remove actions as sibling controls, honor themed provider resource icons, and update the intentional component screenshot baselines. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: ace2046a-b07a-4f5b-a1c4-3c7fb341ccc3 * sessions: refine attachment icon behavior Use compact glyphs, preserve focused controls across color-theme changes, and keep pasted-text fallbacks compatible with the None icon theme. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: ace2046a-b07a-4f5b-a1c4-3c7fb341ccc3 * sessions: align attachment tests after rebase Update the merged DOM expectation and keep Node.contains null-safe against optional query results. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: ace2046a-b07a-4f5b-a1c4-3c7fb341ccc3 * test: update attachment screenshot baselines Accept the intentional dark and light fixture changes after compact attachment icons and leading removal controls. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: ace2046a-b07a-4f5b-a1c4-3c7fb341ccc3 --------- Copilot-Session: 878234d1-4d87-4726-add4-40b417070bdb Copilot-Session: ace2046a-b07a-4f5b-a1c4-3c7fb341ccc3
Remove deprecated agent debug log setting Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
#333537) (#333541) * fix: cancel pending single-pane docked-tab reconciles on dispose (fixes #333537) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: guard all coordinator sequencer tasks against disposal + add regression test Route every SinglePaneDockedTabsCoordinator sequencer task through a disposal-aware _queue() helper so a task still queued or resumed after teardown never opens editors via the now-disposed instantiation service. Adds a regression test covering a reconcile stalled mid-open across dispose. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: address review on desktopSessionLayoutController.test.ts:2984 — clarify test name that only later editor opens are prevented Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: address review on singlePaneDockedTabsCoordinator.ts — trim dispose comment and add disposal checkpoint in _reconcileForeignChangesEditors Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: address review on singlePaneDockedTabsCoordinator.ts:325 — clarify _queue JSDoc disposal guard scope Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: address review on desktopSessionLayoutController.test.ts — condense function-body comments to one line Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: handle docked tab teardown failures 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: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: vs-code-engineering[bot] <122617954+vs-code-engineering[bot]@users.noreply.github.com> Co-authored-by: Dmitriy Vasyura <dmitriv@microsoft.com>
* Fix dictation fallback and connection failures Require cloud dictation authentication before it displaces extension providers, await editor and terminal startup, and fail promptly on rejected voice connections. Add targeted telemetry and regression coverage.\n\nFixes #333792\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * dictation: Address provider lifecycle races Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remove deprecated npm script explorer setting Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remove deprecated HTML mirror cursor setting Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ot to 1.0.83-0 (#333749) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Gate Voice Mode by account and policy Disable Voice Mode for external Copilot Business and Enterprise accounts, and honor the Copilot preview-features policy.\n\nFixes #333790\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Stop Voice Mode when policy disables it Treat the effective Voice Mode setting as a runtime connection gate, and avoid global contribution registration in the policy test so browser tests remain isolated. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Mark `chat.agentHost.cloudSandbox.enabled` as experiment-driven so its default can be rolled out to a subset of accounts without shipping a code change, starting with the internal team. `auto` rather than `startup` because the assignment filters only learn that an account is internal once the entitlement resolves, which lands after startup. With `startup` the treatment would latch before that and internal users would stay off until a restart. The setting still defaults to `false`, so this is inert until the `config.chat.agentHost.cloudSandbox.enabled` flag is configured. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Browser: agent-scoped storage * feedback * update test
Agent Host changes for main
(Written by Copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Bound fetcher telemetry error cardinality Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Reserve the sign-in window during the user gesture Browsers only allow `window.open` while a click's user activation is still live. Chat sign-in shows a dialog, activates an extension and fetches an authorization URL first, so by the time it opens anything the gesture has expired and Safari refuses the window. In a browser tab this surfaces as a "browser blocked opening a new tab" prompt whose Retry works, because Retry runs inside a fresh click. In an installed web app (PWA) on iOS there is no tab to fall back to and the prompt is covered by the "Signing in..." modal, so sign-in dead-ends with no way forward. Claim the window synchronously on the click instead, and let `windowOpenWithSuccess` navigate that reserved window once the URL is known. Gated to Safari, so other browsers are unaffected. The reservation is released when setup ends without using it, so a cancelled or failed sign-in does not leave a blank window over the app. Verified on an iPhone PWA that `window.open()` succeeds inside a real tap and is refused outside one. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Cover installed web apps in any browser, not just Safari The reservation was gated on Safari, but the failure is a property of installed web apps rather than of one browser: an app installed through Edge or Chrome has no tab to fall back to either, and sign-in dead-ends there the same way. Gate on `isStandalone() || isSafari` instead, and route standalone through the open-then-navigate path so a reserved window is actually consumed. Browser tabs outside Safari are unaffected. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Do not leave a blank window behind when sign-in does not complete The reserved window is released when setup ends without using it, but `close()` is not always honoured — an in-app browser view on iOS can ignore it — which would leave a blank window covering the app. That is worse than the popup block this change exists to fix. Show a short explanation in the window when it refuses to close, and render the placeholder via `textContent` on a document that follows the system colour scheme, so it neither flashes white nor can inject markup. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address review feedback - Reserve only for strategies that actually enter provider authentication. `DefaultSetup` can install and sign up without any browser round trip for an already signed-in user, so reserving for it left a window covering the app for the whole of setup. - Open from the window the click happened in. User activation belongs to that window, so a dialog shown in an auxiliary window could still be blocked when opening from `mainWindow`. - Give the placeholder document a title, so screen readers and window switchers do not announce it as `about:blank`. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Trim comments to the non-obvious parts Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Narrow the popup workaround to installed mobile apps `isStandalone()` also matches desktop installed apps, including a self-hosted VS Code installed from the server's manifest. Those get real windows and can open popups after the gesture, so they were being pulled onto the open-then-navigate path — and its manual `opener` nulling — for no benefit. Add `isMobileStandalone()` and gate on that instead, keeping the workaround where a blocked popup is actually unrecoverable. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* chat: improve uninstalled MCP server details Explain when MCP server details become available, avoid moving focus on pointer activation, and align the empty state styling with the detail header. Retry gallery loading when the configured manifest becomes available so the Featured section does not remain empty after startup. Fixes #333556. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chat: address MCP detail review feedback Initialize and refresh gallery state reliably, restore accessible focus navigation, align detail messaging with shared geometry, and register gallery manifest mocks for affected fixtures. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chat: type MCP detail back button Create the MCP detail Back control as an HTMLButtonElement so its stored focus target satisfies the client type check. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * test: update MCP detail screenshot hashes Add the Ubuntu-generated blocks-ci hashes for the new uninstalled MCP detail fixture in dark and light themes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agentHost: address Auto routing profile review feedback Register AgentHostCopilotCliSettingsContribution in the Agents Window, whose manual registrations omitted it, so the `chat.agentHost.copilot.*` gates reach the host's root config there. Resolve a provisional session's routing profile once at materialization and use it for both the launch plan and the persisted model, so a gate turned off before the first send cannot leave metadata claiming a profile the runtime never got. Normalize a persisted picker tier before validating it, so a value stored under the retired names upgrades instead of silently falling back. Also cover AutoModeTiers in the exhaustive settings-forwarding test. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9d0e056c-277d-40c3-ba90-eb5fe6653948 * agentHost: freeze the Auto routing profile on the launch plan Resolving the profile at materialization was not enough: the launcher read the gate again inside createSession, so a flip during the async launch could send one profile and persist another. Carry the resolved profile on the launch plan instead, and have the launcher and the session's launchAutoTier use that exact value rather than re-resolving. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9d0e056c-277d-40c3-ba90-eb5fe6653948 * agentHost: simplify Auto routing profile comments Reword the comments added for the launch-plan freeze into plainer sentences. Comment-only change. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9d0e056c-277d-40c3-ba90-eb5fe6653948 --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9d0e056c-277d-40c3-ba90-eb5fe6653948
* agentHost: Hide merge actions after successful merge Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: Reconcile pull request state sources Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* POC: add chat session state frames Add configurable state frames for chat editor sessions, with idle, unvisited, running, and blocked treatments. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6b136484-221e-4b5d-99db-948b6533fa53 * Reset visited idle chat frames Only render session state frames for unvisited completions, running requests, and blocked sessions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6b136484-221e-4b5d-99db-948b6533fa53 * Gate chat session state frames Replace the style enum with a false-by-default experimental boolean feature flag. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6b136484-221e-4b5d-99db-948b6533fa53 * Clarify chat state indicator defaults Use a false-by-default host suppression option so the API semantics match the false-by-default feature flag. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6b136484-221e-4b5d-99db-948b6533fa53 * Address chat state frame review Add focused state-machine coverage and non-color stroke cues for state frames. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6b136484-221e-4b5d-99db-948b6533fa53 * Use positive chat state indicator enablement Make chat widget hosts opt in explicitly so both the host option and global feature flag default to false. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6b136484-221e-4b5d-99db-948b6533fa53 * Keep chat state indicator surface guards Explicitly reject inline and Quick Chat even when a host opts into session state indicators. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6b136484-221e-4b5d-99db-948b6533fa53 --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6b136484-221e-4b5d-99db-948b6533fa53
* Improved visual clarity in multi-file diffs in Agents window * Fix multi-diff bottom padding layout Avoid preserving a scroll anchor when replacing trailing padding and make the regression test deterministic. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 52046b61-1856-4a7d-9e41-6edd926637d2 --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 52046b61-1856-4a7d-9e41-6edd926637d2
* sessions: show workspace before harness picker Fixes #333807 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: place context picker after harness Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: test picker order after quick chat Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: update new session picker screenshots Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: sync GitHub context from new session input Create and remove issue and pull request context attachments as matching URLs are edited in the new-session composer. Preserve explicitly selected context when it matches an input-derived attachment.\n\nFixes #333845\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: validate input context metadata Route GitHub input-context metadata through a common validating reader to satisfy metadata hygiene.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Stop active dictation after 20 minutes and bound NeMo finalization to eight seconds, preserving the streamed transcript when finalization stalls. Fixes #333832. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Agents - add commit operation into the Changes view * 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>
* accounts: avoid redundant managed settings requests Preserve a fresh managed-settings cache during entitlement refreshes, deduplicate authentication sessions that match overlapping scope alternatives, and treat a managed-settings 404 as a final no-policy result. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * accounts: scope forced account refreshes Replace the managed-settings cache exception with explicit refresh targets. Chat entitlement updates now force only account entitlements, while policy sync and retry actions force only managed settings. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * accounts: simplify scoped refresh options Keep only the entitlement and managed-settings refresh modes used by production callers. Remove the general target enum, all mode, helper, and unused token and MCP refresh parameters. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * accounts: keep force refresh explicit Restore forceRefresh as a simple all-account-data boolean. Normal chat and managed-settings source updates now use ordinary cache-aware refreshes; only explicit policy sync and retry actions force all caches. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * accounts: preserve explicit entitlement refreshes Keep quota and upgrade checks fresh without forcing unrelated default-account caches. The all-or-nothing forceRefresh boolean remains reserved for explicit policy sync and retry actions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * accounts: test governed entitlement refresh Exercise the full account refresh path with a scoped, satisfied forceRemoteSettingsRefresh cache. Verify entitlement refresh requests only entitlement data and preserves satisfied managed-settings freshness before full force refresh. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * accounts: trim managed settings regression diff Restore unrelated test wording and retry documentation, inline the managed-settings force check, and narrow the governed entitlement regression to the behavior under review. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Handle warning and info messages froom SDK * fix ci
* Agent Host changes for agents/fix-dark-theme-scrollbar-colors * Use themed scrollbars for tools and MCP servers Match the customization card scrollbar spacing and reuse the themed overlay scrollbar for MCP server cards.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix scrollbar colors for dark theme in AI customization widgets * Fix scrolled customization fixture timeout Give the scrolled fixtures enough virtual time for the scrollbar hide and fade wait to complete. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix scrollbar colors for dark theme in CI screenshots documentation --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: refine Agent Merge PR actions Add a combined create-PR-and-enable-Agent-Merge operation, reorganize Agent Merge configuration under a submenu, and restore immediate running feedback for changeset operations. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * test: register Agent Host configuration service Keep the strict contribution activation harness aligned with the pull request operation contribution's dependencies. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: address Agent Merge review feedback Reset stale controller state when enabling Agent Merge for a newly created pull request and preserve the delegated toggle command identity in the primary button. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…tsViewContent fix: memory leak in test results
* Fix skill completions in automations Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 24f4e305-8042-4e9f-8061-72525532fc1b * Fix Automation suggestion popup placement Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 24f4e305-8042-4e9f-8061-72525532fc1b * Preserve runtime skill completions Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 24f4e305-8042-4e9f-8061-72525532fc1b * Fix Automation skill completion acceptance Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c69533f7-290b-4cfe-8863-4c2a9c43aec5 * Allow Automation suggestion acceptance Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c69533f7-290b-4cfe-8863-4c2a9c43aec5 * Accept Automation suggestions with Tab Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c69533f7-290b-4cfe-8863-4c2a9c43aec5 * Restore Automation skill highlights Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c69533f7-290b-4cfe-8863-4c2a9c43aec5 * Test Automation skill edge edits Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c69533f7-290b-4cfe-8863-4c2a9c43aec5 * Fix automation completion test decoration stub Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 54febce8-3c95-4100-bf37-0e38cca467d1 --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 24f4e305-8042-4e9f-8061-72525532fc1b Copilot-Session: c69533f7-290b-4cfe-8863-4c2a9c43aec5 Copilot-Session: 54febce8-3c95-4100-bf37-0e38cca467d1
sessions: move clear background into picker Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agentHost: classify Copilot SKU telemetry context Declare the dynamically injected copilotSku property on each applicable Agent Host event so telemetry extraction generates ingestion schemas that accept it. Keep runtime population centralized through the common-property path. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: clear stale Copilot SKU telemetry Allow common telemetry properties to be removed so account transitions clear the previous SKU before resolving the current account. Classify the same injected property on forwarded Copilot SDK event schemas. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: compose shared telemetry context Name the common initiator and Copilot SKU schema composition and use event-specific aliases when enriching generic telemetry types. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: complete Copilot SKU telemetry coverage Classify SKU context on Agent Host edit attribution and unhandled error events. Add regression coverage for authentication transitions, stale SKU resolution, and restricted envelope clearing. 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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )