[pull] main from microsoft:main - #1604
Merged
Merged
Conversation
Agent Merge never evaluated CI failures or PR feedback because its gate could never become determinate. Two independent bugs in the GitHub platform layer: 1. The capability probe selected `__Type.fields` three times, but GitHub caps introspection at two. It answered HTTP 200 with INTROSPECTION_LIMIT_EXCEEDED, so every capability was reported unavailable - even for api.github.com. That forced reviewThreads/checks/mergeability onto fallbacks hardcoded to `complete: false`, and evaluateAgentMerge requires all three complete, so the gate could only ever return "Pull request state is incomplete or stale". The error was not a schema-validation error, so it was never cached and the probe repeated indefinitely. `RequirableByPullRequest` now gets an existence check instead, which is exact because `isRequired` is that interface's only field. 2. Conditional REST GETs threw on every 304. GitHub may answer a conditional request with a reissued validator (notably weak/strong forms of the same entity), and the literal comparison treated that as a protocol violation. This was self-perpetuating: the stored validator was never updated, so each later revalidation resent the stale one and failed identically until the cache was evicted, breaking refresh of checks and submittedReviews. A 304 with a cached entry is now accepted, and the reissued validator and Link are adopted so the next revalidation sends what GitHub last handed out. Also log when a probe error disables GraphQL, since `graphql=false` is otherwise indistinguishable from a legitimately old GitHub Enterprise host and hid the root cause entirely. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* list: batch dynamic height measurements Improves dynamic-height list rendering by batching DOM writes and reads and by reusing measured rows that enter the final render range. - Groups height preparation, measurement, and publication into separate phases. - Promotes compatible measured rows instead of rendering the same element twice. - Releases unpromoted rows when rendering fails or the final range changes. - Validates row identity before promotion after reentrant list updates. - Adds tests for batching, row reuse, error cleanup, and reentrant splices. - Reduces median conversation-switch latency by 31.1% for a small chat and 31.6% for a large chat across repeated alternating swaps. (Commit message generated by Copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * list: handle reentrant dynamic height probes Restart batched height measurement when renderer callbacks mutate the list, and cover multi-row batching and remove-all reentrancy.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * list: preserve reentrant height measurements Keep surviving delegated measurements synchronized with the range map and prevent stale tree render cleanup from removing newer node mappings.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * list: fix dynamic height test delegate Return null for unmeasured delegated heights to satisfy the virtual delegate contract in CI type checking.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Preserve session type when splitting a Chat Editor (#331422) Splitting a Chat Editor called `ChatEditorInput.copy()`, which returned a generic `vscode-chat-editor:` placeholder with no session type. `ChatEditor. setInput()` reads the session type before resolving the input, saw `local`, and unlocked the widget from the coding agent. The input then resolved into a new agent-host session, but the widget lock was never recomputed, so `chatIsAgentHostSession` stayed false and the Agent Mode ("Interactive") picker and related agent-host controls were filtered out. Make `copy()` mint a new untitled URI of the source pane's own session type (local or agent-host), so a split reproduces the source harness (Claude -> Claude, Copilot -> Copilot, Codex -> Codex) and `setInput()` locks the widget correctly before rendering. Falls back to the previous generic URI when the source type is unknown or cannot start a new session. Extract a shared `getNewChatSessionResource(sessionType)` helper into chatUri and reuse it from `clearChatEditor` (the New Chat path) and the default session-resource helpers in constants, removing duplicated URI construction. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ved (#331418) * agentHost: reselect new-chat folder when its workspace folder is removed In a multi-root Editor Window, a new (untitled) agent-host chat pins a primary working directory. When that folder was removed from the workspace, the Folder chip kept showing the removed folder (and could disable), and the provisional session — and first Send — stayed rooted there. Invalidate the stale selection in the two services that own it: the new-session folder service clears an explicit selection whose folder was removed (keeping the sticky default so it resurfaces on re-add) and exposes resolveNewSessionPrimary(); the untitled provisional service reselects that primary and recreates the draft when its own primary is removed. Started/rebound sessions are excluded so they keep their immutable primary. The folder chip no longer mutates state while rendering and sets its ARIA label after the visible text. Fixes #331200 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * agentHost: use provider-aware comparator and honor cleared draft primary Address PR review feedback on the new-chat folder reselection: - Use IUriIdentityService.extUri (provider-aware) instead of extUriBiasedIgnorePathCase for reselection removal/membership checks in both the folder service and the provisional service, so a case-distinct sibling on a case-sensitive remote (e.g. /work/repo remaining after /work/Repo is removed) no longer masks the removed folder. getDefaultFolder now uses the same comparator so all checks agree. - Track whether a draft's primary was explicitly cleared (last workspace folder removed) versus never initialized. tryRebind no longer falls back to the stale send-time argument for an explicitly cleared primary, so a folder removed during first Send is not resurrected as the started session's root or active-client scope. Adds a case-sensitive-remote regression test and a zero-folder first-Send race test. 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> * agentHost: drop vestigial tryRebind working-directory fallback and param The provisional draft's own primary is authoritative for rebind: the backend working directories already derive from oldEntry.workingDirectory via _computeEntryWorkingDirectories, so the scalar targetWorkingDirectory now simply mirrors it (no "?? workingDirectory" fallback). This removes the scalar/array skew that could record a just-removed folder in the new entry and active-client scope, so the workingDirectoryCleared flag is no longer needed and is deleted. The tryRebind "workingDirectory" parameter became vestigial once createSession switched to the entry-derived working-directories array; it no longer influences the backend cwd (the handler resolves a started session's directory from getFolder, set via setFolder on the real resource). Remove it from the interface, implementation, and the newChatSessionItem caller. Re-point the two contribution tests that asserted the tryRebind argument to assert the real carry mechanism (getFolder on the real resource); update provisional tests to the 3-arg signature. Co-authored-by: Copilot <223556219+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>
* agentHost: Exclude subagent chats from billed credit telemetry 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>
* Adjust status bar padding and add test for modern UI layout constraints * Adjust notification center and toasts positioning for Modern UI layout * Remove linkPresentationProviders from extension points --------- Co-authored-by: mrleemurray <mrleemurray@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 : )