Commit Graph
160999 Commits
Author SHA1 Message Date
Ladislau SzomoruandGitHub ba2a14cc6b AgentHost - adopt the concept of reviewed from the protocol (#325310)
* AgentHost - adopt the concept of reviewed file from the agent host protocol
2026-07-11 13:49:58 +00:00
Don JayamanneandGitHub a10ba5f91d chore: update GitHub Copilot and SDK versions to 1.0.70-0 and 1.0.7-preview.0 respectively across all package files (#325401) 2026-07-11 09:22:43 +00:00
6479c9a3a6 Start initial Agent Host customization discovery immediately (#325407)
Start initial customization discovery immediately (Written by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-11 05:09:45 +00:00
Ben VillalobosandGitHub fbf54ced95 Automations: Bring workspace picker under the chat input (#325397)
* Debt: Remove workspacePickerInput from chatInputPart

* Remove dead renderTrigger code

* Cleanup: Consolidate into a single pickeractionviewitem class

* signing commit
2026-07-10 18:41:18 -07:00
Ben VillalobosandGitHub 2b8fc296f2 Add best practice: avoid body:has() workbench-wide selectors (#325400)
Add best practice: never anchor :has() on body or a workbench-wide root

A body:has() selector forces the style engine to re-evaluate against the whole
document on nearly every DOM mutation, degrading workbench interaction perf even
in builds where the feature is disabled. Document the class-on-container
alternative under the Styling best practices.
2026-07-10 18:39:22 -07:00
Ben VillalobosandGitHub 2ca4b95e96 fix: hide next run time for disabled automations and restyle badge (#325383)
* fix: hide next run time for disabled automations and restyle badge

- Don't show next run countdown when automation is disabled
- Change disabled badge from button-style to thin italic text

Fixes microsoft/vscode-internalbacklog#8335
Fixes microsoft/vscode-internalbacklog#8336

* signing commit
2026-07-10 17:30:17 -07:00
af8b8aab0c sessions: rename single-pane detail context key to HasDockedDetailsContext (#325391)
* sessions: rename single-pane detail context key to HasDockedDetailsContext

Rename SinglePaneDetailChangesOrFilesActiveContext (raw key
agentSessionsSinglePaneDetailChangesOrFiles) to HasDockedDetailsContext
(raw key agentSessionsHasDockedDetails) to better convey its meaning:
whether the single-pane active editor has a docked detail panel. Updates
the producer, both consumers (Toggle Details, Hide Editor), tests and docs.

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

* sessions: align docs and test terminology with HasDockedDetailsContext

Address review feedback: update SINGLE_PANE_SCENARIOS.md to describe the
new intent (active editor has a docked detail panel — a managed
Changes/Files tab or a text file editor) instead of the old
Changes/Files-target wording, and rename the test helpers
(isChangesOrFilesActive -> hasDockedDetails) and snapshot property
(gatedOnChangesOrFilesTab -> gatedOnDockedDetails).

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-10 23:56:19 +00:00
PaulandGitHub 41c79fb713 Fixes for agent host E2E tests (#325364) 2026-07-10 23:55:22 +00:00
Megan RoggeandGitHub 959ed5f5dd Voice: fix session-state storm and confirmation narration preemption (#325339) 2026-07-10 23:50:16 +00:00
e12dcf838f editor: reuse toggle.diff.renderSideBySide in the Agents window Changes editor (#325382)
* editor: reuse toggle.diff.renderSideBySide in the Agents window Changes editor

Introduce IDiffEditorCommandsService so the workbench toggle.diff.renderSideBySide
command works in the Agents window multi-diff Changes editor, fixing #324765 (a
user's keybinding for that command now carries over). The base impl is registered
by a workbench-only contribution (diffEditor.workbench.contribution) and the Agents
window contributes its own impl (diffEditor.sessions.contribution) that flips the
workspace diffEditor.renderSideBySide setting, which the Changes editor observes.

The Changes header button and command palette entry now use the shared command id
instead of a custom action, and the accessibility help references it.

Only toggleRenderSideBySide is extracted for now; a follow-up will move the
remaining diff-editor command handlers into the service.

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

* sessions: add behavioral tests for the diff toggle override

Addresses CCR feedback: the menu tests only checked the shared command id
was referenced. Add focused tests for SessionsDiffEditorCommandsService that
invoke toggleRenderSideBySide with a SessionChangesEditor active and assert the
workspace diffEditor.renderSideBySide setting is flipped (both directions), and
that a non-Changes editor falls back to the base path.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-10 23:32:22 +00:00
df8bce5a37 sessions: align read-only chat banner with the tab strip (#325387)
* sessions: align read-only chat banner with the tab strip

Inset the read-only chat banner's left edge to match the chat tab
strip's padding-left so the banner begins under the first tab rather
than under the header's status-icon column. The right edge already
matched the tab strip's padding-right, so the banner now starts and
ends flush with the tabs.

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

* sessions: trim read-only banner alignment comment

Condense the verbose comment on the banner's margin per CCR feedback;
keep only the non-obvious intent.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-10 23:26:45 +00:00
theanarkhandGitHub 56622fd71c workbench: fix ObjectSettingCheckboxWidget memory leaky (#323670) 2026-07-10 22:59:48 +00:00
Sandeep SomavarapuandGitHub cacd1aaf97 Update "Worktree" label to "New Worktree" in session providers (#325374)
Agent Host changes for sandy081/agents/update-worktree-label-new-session
2026-07-10 22:23:38 +00:00
Megan RoggeandGitHub be1e336886 Rename agents.voice.textToSpeech to agents.voice.speakResponses (#325358) 2026-07-10 20:58:25 +00:00
vs-code-engineering[bot]GitHubvs-code-engineering[bot] <122617954+vs-code-engineering[bot]@users.noreply.github.com>Copilot
f1b33717ed fix: truncate Claude session customTitle label to bound RPC payload (fixes #322754) (#325347)
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>
2026-07-10 20:56:46 +00:00
2df67b3319 Fix Modern UI editor tab decoration color on full label (#325291)
Fix Modern UI tab decoration color on full label.

Modern UI style overrides forced tab label link colors with !important, which overrode file decoration colors so only badges stayed tinted. Skip decorated labels and inherit the decoration color across the full tab label.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-10 16:33:37 -04:00
Megan RoggeandGitHub f6da384d3f Don't let voice-controls init break the new-session picker render (#325346) 2026-07-10 20:16:41 +00:00
Kyle CutlerandGitHub 6ee017d043 Let focus settle before focusing the browser view (#325351) 2026-07-10 20:13:56 +00:00
Ben VillalobosandGitHub e8a3eada34 Add session provider picker to automations dialog (#325223)
* Stop defaulting to copilot

* Render the SessionTypePicker

* Automations: Wire in the sessiontypepicker

* Remove session type binder in favor of session type picker

* Permission label updates when selecting a new session type

* Use MobileSessionTypePicker for phone-layout bottom sheet support

The automation dialog was using the desktop-only SessionTypePicker
directly. The rest of the codebase uses MobileSessionTypePicker which
renders a bottom sheet on phone layouts and falls back to the desktop
action-widget popup otherwise. Swap to the mobile-aware subclass so
the automation picker behaves consistently on all viewports.

* Allow clearing provider and session type

* Prevent automations session type pick to change new session store

* Keep picker in sync when late providers advertise session types

* signing commit
2026-07-10 19:51:00 +00:00
Osvaldo OrtegaandGitHub ce5e0c6583 Improve Copilot Cloud Sessions error handling and messaging (#325196)
Agent Host changes for osortega/agents/copilot-cloud-sessions-v2-backend
2026-07-10 19:50:17 +00:00
CopilotGitHubcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>justschen
0f1678ffa8 Prevent duplicate model picker icons (#325200)
* Initial plan

* Fix duplicate model picker icons

Co-authored-by: justschen <54879025+justschen@users.noreply.github.com>

* Prefer warning model picker icon

Co-authored-by: justschen <54879025+justschen@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: justschen <54879025+justschen@users.noreply.github.com>
2026-07-10 19:07:38 +00:00
a911d72024 MCP: fix infinite sign-in loop for servers that grant scopes but advertise none (#325344)
`TokenStore._getSessionFromToken` derived a session's scopes with a truthiness
check on `token.scope`. When a session is created for an empty scope request,
`createSession` (and the refresh path) overwrite `token.scope` with the requested
value, i.e. the empty string. Because `''` is falsy, the deriver ignored the
stored value and fell back to the granted scopes embedded in the JWT claims.

For a server that advertises no scopes but still grants some (e.g. Descope-backed
MCP servers), this produced a session whose scopes were non-empty even though the
request — and every subsequent lookup — used empty scopes. `getSessions` filters
by exact scope-array equality, so the session could never be found: each request
re-triggered a full sign-in, looping forever. Servers that advertise scopes, or
that don't embed scopes in the token's JWT, never hit the seam.

Honor an explicitly-set (possibly empty) `token.scope` and only fall back to the
JWT claims when `scope` is genuinely absent (`undefined`).

Adds a TokenStore unit test covering all three cases (empty, absent, non-empty
scope) through the public `sessions` getter.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 19:01:44 +00:00
Alexandru DimaandGitHub 087d49e2a7 Skip flaky test (see #325266) (#325343) 2026-07-10 18:44:50 +00:00
PaulandGitHub 51ff728347 Add support for detecting latest sdk canary versions (#325337) 2026-07-10 18:39:07 +00:00
d96ffdd5d3 Record scheduled automation runs atomically (#325294)
* sessions: record scheduled runs atomically

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

* test: preserve schedule on manual automation runs

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

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-07-10 18:22:41 +00:00
45d9cf02a2 sessions: move Create Pull Request bar to the editor tabs title (#325122)
* sessions: move Create Pull Request bar to the editor tabs title

Host the Changes 'Create Pull Request' button bar (ChangesActionsBar) in
the single-pane editor tabs title (the editor-actions area of the docked
tab bar, Menus.SessionsEditorTitle) instead of the session title bar.

- Contribute the CHANGES_HEADER_ACTIONS_ID anchor action to
  Menus.SessionsEditorTitle, gated on the Changes editor being active in
  single-pane (singlePaneChangesEditorTitle) + SessionHasChangesContext.
- Provide the custom action view item (ChangesActionsBarActionViewItem)
  from SessionChangesEditor.getActionViewItem so the group's editor-actions
  toolbar renders it.
- Collapse the button labels to icon-only when the tabs title is narrow: a
  ResizeObserver on the tab-bar ancestor drives a compact observable that
  the button-bar widgets read to strip labels, freeing room for tabs.
- Adjust the ChangesActionsBar CSS comments/scoping for the editor tabs
  title host.

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

* Make the button responsive

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Ladislau Szomoru <3372902+lszomoru@users.noreply.github.com>
2026-07-10 17:56:54 +00:00
02955b5aae sessions: model docked (Changes/Files) editors as DockedEditorInput (#325332)
* sessions: model docked (Changes/Files) editors as DockedEditorInput

Replace the ad-hoc reveal-suppression predicate (setEditorRevealOnOpenExclusion) with a proper DockedEditorInput base class that the Changes and Files editors extend. The single-pane workbench owns the policy: revealEditorOnOpen (renamed from _handleWillOpenEditor, now protected) is overridden so activating a docked editor does not reveal the editor area only while the detail panel is open and the editor area is closed. When the detail panel is closed, opening a docked editor reveals it as usual.

Also drive the editor-area collapse strategy off 'instanceof DockedEditorInput' instead of the coordinator's isManagedEditor heuristic, and close every non-docked editor when the editor area hides (restoring the ones that can be re-resolved from a resource; non-restorable ones such as an untitled Search editor are dropped since they can neither be serialized nor reopened after disposal).

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

* sessions: address CCR feedback on docked-editor docs/comments

Fix stale references left by the DockedEditorInput refactor:
- workbench.ts onWillOpenEditor comment now describes the base reveal and points to the SinglePaneWorkbench.revealEditorOnOpen override (the base no longer special-cases the Files tab).
- LAYOUT.md editor-area tab collapse now references SinglePaneEditorAreaCollapseStrategy._collapseNonManagedTabs / _restoreCollapsedTabs instead of the non-existent SinglePaneLayoutController._registerEditorAreaTabCollapse.
- SKILL.md 'Explicit managed-editor opens' entry now describes DockedEditorInput / the SinglePaneWorkbench override instead of the removed _handleWillOpenEditor exclusion.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-10 17:56:20 +00:00
Vritant BhardwajandGitHub 787bf8f00e Merge pull request #325316 from microsoft/agents/issue-325229-assessment-correction
Refactor copilot session launcher for cache handling
2026-07-10 10:55:45 -07:00
Megan RoggeandGitHub c9018458d0 Remove agents.voice.turn.autoEndMode; derive auto-end from silenceMs/stopPhrases (#325320) 2026-07-10 17:50:05 +00:00
Vritant BhardwajandGitHub 35f5d010e0 Merge branch 'main' into agents/issue-325229-assessment-correction 2026-07-10 10:15:23 -07:00
5fd05efc37 MCP: preserve authorization server context on auth re-validation (#325238)
* MCP: preserve authorization server context on auth re-validation

When AuthenticationService fires onDidChangeSessions for a provider,
MainThreadMcp re-validates every tracked MCP server using that provider. That
re-validation was calling _getSessionForProvider with authorizationServer (and
resource/clientId/audience/clientSecret) dropped, so the silent token request
lost the tenant-specific authority the session was created with and fell back
to the provider default -- e.g. the Microsoft provider's `organizations`
tenant. Depending on the account/tenant relationship this either silently
targets the wrong authority or, for a single-tenant app with a B2B guest,
fails and tears down an otherwise-working MCP server.

Capture the auth context (authorization server, client id, resource, audience,
and the secret-storage key -- not the secret value) when a server's session is
established, and replay it on re-validation. The secret is re-read from storage
by key so a secret rotated via the "Set Client Secret" code lens takes effect
immediately instead of replaying a stale value.

Adds a McpServerAuthTracker unit test covering context round-trip, replacement,
and untracking.

Fixes #324925

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Address review: drop inert client-secret replay, add re-validation test

- The re-read-secret-by-key logic did not actually update a dynamic DCR
  provider: DynamicAuthProvider.getSessions ignores its options and the
  refresh-token exchange uses the constructor-cached secret. So replaying a
  freshly-read secret on re-validation was inert and misleading. Remove the
  clientSecretKey tracking; the authorization server / resource / client id /
  audience replay (the actual #324925 fix) is unchanged.
- Add a MainThreadMcp re-validation test that drives _onDidChangeAuthSessions
  and asserts the tracked context is forwarded to getSessions. The original
  regression (dropping an argument) would leave the tracker-only tests green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 17:02:33 +00:00
1a31eba230 sessions: reveal Files detail when the empty Files editor is opened (#325321)
* Reveal Files view when empty file editor is opened in single-pane layout

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

* sessions: reveal Files detail when the empty Files editor becomes active

In the single-pane layout, the empty Files editor placeholder shows a
"Select a file..." landing tab whose content (the Files tree) lives in
the detail panel (auxiliary bar). Opening it while the detail was closed
was a dead end. The detail-panel strategy now reveals the Files detail
when the placeholder becomes the active editor, so the `+` Files action
and selecting the Files tab both surface the Files view.

Keyed on the active-editor signal so the managed auto-ensured Files tab
(opened inactive as a background tab) never triggers it, preserving the
Editor-only default; hiding the detail sticks; and it is skipped while
the whole side pane is closed or during a session-switch restore.

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

* sessions: trim inline comment on the Files-detail reveal listener

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-10 16:54:13 +00:00
ce4db66faf sessions: add Open Pull Request to session context menu (#325314)
* sessions: add Open Pull Request to session context menu

Right-clicking a session in the sessions list now shows an Open Pull
Request action (in the top navigation/open group) when the session is
associated with a GitHub pull request, gated on the new
sessionHasPullRequest context key overlay.

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

* sessions: use shared Menus registry for context menu id; trim comment

Address PR feedback: alias SessionItemContextMenu in the shared
Menus registry (browser/menus.ts) instead of importing MenuId.* directly,
and remove the redundant inline comment narrating the fallback logic.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-10 16:09:36 +00:00
Henning DieterichsandHenning Dieterichs f406891d5b Only show breadcrumb editor picker for default-capable editors (which excludes hex editor) 2026-07-10 18:03:46 +02:00
vritant24 913c5fdf5a simplify 2026-07-10 08:58:42 -07:00
609aa64d3f Fix NES feedback context in issue reporter (#325276)
* Fix NES feedback context in issue reporter

Fixes #325274

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

* Handle nested NES feedback data

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

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-07-10 20:46:35 +05:00
Logan RamosandGitHub 285459cdcc Remove fragile chat notification model switching (#325299)
* Remove fragile model switching

* Cleanup unneeded model lookup
2026-07-10 15:24:38 +00:00
vritant24 bebe79885d Agent Host changes for agents/issue-325229-assessment-correction 2026-07-10 08:21:52 -07:00
b775d139be sessions: remember Changes editor view state across scenarios (#325298)
* sessions: remember Changes editor view state across scenarios

The Agents-window single-pane Changes editor (SessionChangesEditor) extended
plain EditorPane and never persisted its multi-diff view state, so per-file
collapsed state, scroll position, selections and the active file were lost on
window reload, session switch, side-pane toggle, and reopening the editor.

- SessionChangesEditor now extends AbstractEditorWithViewState, keyed by the
  per-session multiDiffSource resource, tracking disposed state so it survives
  the tab being closed/disposed on a session switch. It also persists on hide
  and defers focus until the active diff editor renders.
- Persist the active diff item in IMultiDiffEditorViewState and restore it once
  the (possibly async) diffs load, which suppresses the widget's automatic
  first-change navigation so restored scroll/collapsed state wins.
- Apply the view model and restored view state in a single transaction so the
  first-change navigation sees the restored active item instead of navigating to
  and focusing the first file. This also fixes the same latent ordering bug in
  the standard workbench MultiDiffEditor.

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

* sessions: address Changes editor view-state review feedback

- Restore the saved scroll offset as pending state applied once the scrollable
  dimensions are known, instead of inside the model transaction. On a fresh or
  reloaded widget scrollHeight is 0 at that point, so the offset was clamped to 0
  and the overall scroll position was lost on reload.
- Clear the cached restoration state (documents, active item, scroll) when a new
  model is installed without a view state, so a session with no saved state can
  no longer inherit the previous model's collapsed/selection/scroll state for
  overlapping diff keys (common within the same workspace).

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-10 15:20:11 +00:00
4f1dd117b4 sessions: single source of truth for single-pane layout enablement (#325309)
* sessions: single source of truth for single-pane layout enablement

Introduce a dedicated SinglePaneLayoutEnabledContext context key and route
all single-pane layout gating through the workbench's decision instead of
reading the sessions.layout.singlePaneDetailPanel setting in many places.

- The setting is now read exactly once, in createSessionsWorkbench, which
  picks the workbench variant. That choice is published as
  IAgentWorkbenchLayoutService.isSinglePaneLayoutEnabled (for imperative code)
  and the new SinglePaneLayoutEnabledContext context key (for declarative
  when clauses only).
- Declarative when consumers (layoutActions, editor/codeReview/changes
  contributions, responsive sidebar) now gate on the context key.
- Imperative consumers (editorParts, paneCompositePartService,
  sessionChangesService, sessionChangesEditor, layout contribution) now read
  isSinglePaneLayoutEnabled off the layout service.
- Removed the redundant shouldUseSinglePaneLayout helper (inlined into the
  factory) so the setting is not re-evaluated at multiple construction sites.

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

* sessions: address PR feedback

- Check single-pane layout before the mobile branch so single-pane parts get
  their strategies on mobile web >= 640px.
- Trim JSDoc/inline comments per the sessions comment guidelines.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-10 15:02:55 +00:00
ad9409a912 sessions: bridge extension editor/title actions into single-pane editor menu (#325303)
* sessions: bridge extension editor/title actions into single-pane editor menu

In the single-pane layout the editor group renders its title actions from
Menus.SessionsEditorTitle instead of the core MenuId.EditorTitle, which dropped
editor/title actions contributed by extensions. Add EditorTitleMenuBridgeContribution
(in the common editor.contribution.ts) that mirrors only the extension-contributed
items (identified by command.source) from MenuId.EditorTitle into
Menus.SessionsEditorTitle, kept in sync as extensions register/unregister.

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

* sessions: bridge extension editor/title submenus and shorten JSDoc

Also mirror extension-contributed submenus (identified by their api:-prefixed
submenu id) into the single-pane editor title menu, not just command items.
Shorten the contribution JSDoc per repo guidance (details live in LAYOUT.md).

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-10 15:01:56 +00:00
69604a5ab5 sessions: default single-pane side pane to 60% and persist its width reliably (#325301)
* sessions: default the single-pane side pane to 60% and persist its width reliably

Make the single-pane side pane (docked editor part) open at a comfortable
60% of the window width and keep its size workbench-wide across session
switches and reloads.

- First reveal of the side pane uses 60% of the window width
  (`INITIAL_EDITOR_WIDTH_RATIO`) instead of a 50% main-area split.
- Side-pane width is workbench-global (`workbench.sessions.partSizes`), so
  switching sessions keeps the same width; hiding the pane in one session no
  longer resets another session's width on return.
- Fix persistence: `_persistedGridViewSize` is a single overridable read for
  all parts, and single-pane returns its docked auxiliary-bar width from the
  docked layout state instead of the grid (the docked aux bar is not a grid
  view, so reading it threw 'View not found' and aborted the whole save,
  losing the editor width).
- Restore-side guards a stale/corrupt sub-minimum saved editor width (e.g. a
  persisted 0) by falling back to the default instead of collapsing to the
  300px minimum on reload.
- `_persistedEditorWidth` subtracts the docked detail width only when the
  detail is visible, mirroring the grid descriptor, so an Editor-only session
  no longer shrinks by the detail width on every reload.
- Double-clicking the chat/side-pane sash resets the side pane to 60% via a
  `preferredWidth` on `SinglePaneMainEditorPart` (single-pane only; the
  classic layout keeps the standard distribute).

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

* sessions: address side-pane sizing review feedback

- Move editor/side-pane sizing constants into a shared leaf module
  (parts/editorPartSizing.ts) so the reveal split and the sash
  double-click reset can't drift apart.
- Keep the base grid layout's classic even split of the main area; scope
  the 60%-of-window side-pane split to the single-pane override.
- Preserve the last valid global editor width whenever a measurement is
  sub-minimum (e.g. editor hidden with detail visible), instead of only
  when the editor part is visible, so a hidden editor never persists 0.
- Remove a duplicate JSDoc opener on _applyEditorSplitSize.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-10 14:46:56 +00:00
Lee MurrayandGitHub fdae678b92 Merge pull request #325271 from microsoft/mrleemurray/design-philosophy
Add design philosophy and UI guidelines to documentation
2026-07-10 15:34:15 +01:00
Lee MurrayandGitHub 973bb8ec34 Merge branch 'main' into mrleemurray/design-philosophy 2026-07-10 15:17:10 +01:00
e63964010e Harden automation run lifecycle (#325302)
sessions: harden automation run lifecycle

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-07-10 13:57:48 +00:00
f1c3e608c2 sessions: fix editor tabs bleeding through sticky add-tab button (#325300)
In the single-pane (docked detail) layout, the editor tab strip scrolls
horizontally when there are more tabs than fit. The sticky "+" add-tab
button had a transparent background, so overflowing tabs rendered on top
of / bled through it. Give the sticky add-tab an opaque editor-background
so tabs scrolling underneath are properly occluded.

Also move the agent-sessions editor tab styling out of the generic
browser/media/style.css into a dedicated editorTabs.css next to the
sessions editor contribution that owns the tab strip + add-tab control.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-10 13:39:36 +00:00
6eb9576e09 Track automation runs until sessions complete (#325295)
sessions: track automation runs until completion

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-07-10 13:29:34 +00:00
723afaaf1e Fix opening automation history sessions (#325296)
Route persisted session URIs through opener participants before legacy session lookup.

Fixes #325089

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-07-10 13:29:23 +00:00
Henning DieterichsandHenning Dieterichs 7c78abd0b3 Adds "Reopen with" submenu to editor toolbar 2026-07-10 15:27:46 +02:00
Giuseppe CianciandGitHub b7e56e69cb Merge pull request #323767 from danielrobbins/drobbins/preserve-chat-retry-model-configuration
Fix bugs related to setting the right Chat model. (Fixes Issue #323765)
2026-07-10 14:59:46 +02:00