Commit Graph
37 Commits
Author SHA1 Message Date
Logan RamosandGitHub f38816eb09 Refactor model picker architecture (#326052)
* Refactor model picker

* Some linters and formatters

* Cleanup some old tests

* Simplify model picker state and configuration

* format stuff

* Address model picker review feedback

* Update blocks-ci screenshot hashes

* Simplify model picker architecture terms
2026-07-16 16:10:47 +00:00
Martin AeschlimannandGitHub 61b8df11ad add 'migrate prompt files' to customization UI (#325155)
* add 'migrate prompt files' to customization UI

* update

* update

* add setting

* add migrate label

* update

* update

* update screenshots

* update

* update

* update

* update

* update

* update screenshots
2026-07-11 15:12:57 +00:00
Justin ChenGitHubcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>Copilot
0cd1884c6a rehaul chat input padding and spacing and icons (#323977)
* rehaul chat input padding and spacing and icons

* some more fixes on collapsing

* address comments, fix claude

* fix auto not having copilot icon

* fix component fixtures

* fix: implement getModelConfiguration in chat fixture model service mock

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

* fix tests

* Expand panel chat model picker before driving inline config in smoke test

The chat model-picker rehaul added a width-driven compact layout that hides
the inline model-config button (and model-name text) when the panel is narrow.
The panel chat's auxiliary bar defaults below the collapse threshold, so the
Chat Model Configuration smoke test could not find the config button.

Widen the auxiliary bar via its leading sash until the picker leaves compact
mode before interacting with the inline config UI.

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

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-08 02:17:31 +00:00
e656eb8d42 sessions: single-pane layout as a sibling controller with composed strategies (#324657)
* sessions: fix base-controller single-pane leak via Template Method hooks (R1)

Move the single-pane branches out of BaseLayoutController into
SinglePaneDesktopSessionLayoutController via three protected hooks
(_suppressEditorVisibilityDuringRestore, _shouldRevealEditorPartOnApply,
_shouldRevealEditorPartForEmptyWorkingSet). The base controller no longer
reads isSinglePaneLayoutEnabled.

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

* sessions: segregate docked-editor layout concerns into IDockedEditorLayout (R3)

Extract handleDockedEditorPartLayout and isEditorRevealedExplicitly into a
focused IDockedEditorLayout interface that IAgentWorkbenchLayoutService extends,
keeping the cross-cutting isSinglePaneLayoutEnabled and
suppressEditorPartAutoVisibility on the main contract. Fix stale typo comment.

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

* sessions: extract side-pane presentation Strategy from workbench (R2/R4)

Replace the 26 scattered _dockDetailPanel branches in workbench.ts with an
ISidePaneLayoutStrategy (GridSidePaneStrategy + DockedSidePaneStrategy),
selected once at initLayout. DockedSidePaneStrategy owns the docked width,
the DockedAuxiliaryBarController lifecycle, the reveal-sync, and a
DockedEditorSizeMemento for the docked size bookkeeping (R4). Workbench
implements ISidePaneLayoutHost and delegates geometry, grid-descriptor,
visibility-mutator, and reveal-sync work to the strategy. Behaviour is
unchanged in both layouts; the only remaining _dockDetailPanel reference is
the strategy selection point.

Rewrites workbench.test.ts to drive the real strategy through a host harness.

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

* sessions: replace side-pane Strategy with Workbench subclass (R5)

Convert the composition-based ISidePaneLayoutStrategy into inheritance,
matching the layout-controller Template Method pattern. The base Workbench
now carries the classic (grid) layout as protected _-prefixed hooks;
SinglePaneWorkbench overrides them for the docked detail-panel layout and
owns the docked width, DockedAuxiliaryBarController, reveal-sync, and
DockedEditorSizeMemento. A createSessionsWorkbench factory picks the subclass
from the setting at construction; web.main.ts and sessions.main.ts use it.

Removes sidePaneLayoutStrategy.ts and the ISidePaneLayoutHost callback
interface. No behaviour change in either layout.

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

* sessions: single-pane editor part owns the auxiliary bar (R6)

Make editor + auxiliary bar a single unit in the single-pane (new) layout by
having the editor part create and own the auxiliary bar instead of the
workbench/pane-composite service:

- New SinglePaneMainEditorPart extends MainEditorPart; lazily creates the
  SinglePaneAuxiliaryBarPart via a getter and owns the DockedAuxiliaryBarController
  (created in create(), calling setContentRightInset directly).
- EditorParts.createMainEditorPart() returns SinglePaneMainEditorPart when the
  shared shouldUseSinglePaneLayout(config) predicate is true.
- AgenticPaneCompositePartService retrieves the same aux bar instance from the
  editor part in single-pane; classic/mobile create it as before.
- SinglePaneWorkbench drops DockedAuxiliaryBarController ownership; keeps the
  docked width (exposed via getDockedAuxiliaryBarWidth/setDockedAuxiliaryBarWidth
  on IDockedEditorLayout) and reveal-sync, delegating layout to the editor part.
- workbenchFactory, EditorParts, and the pane-composite service all select via
  the single shouldUseSinglePaneLayout predicate so the workbench, editor part,
  and aux bar are always chosen together (fixes a phone-viewport + setting-on
  mismatch that would pair SinglePaneWorkbench with a plain MainEditorPart).

Classic (default) and mobile layouts are unchanged.

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

* sessions: make isSinglePaneLayoutEnabled class-based, not a config read

Address review feedback: since the workbench subclass is selected at construction
(Workbench vs SinglePaneWorkbench), isSinglePaneLayoutEnabled is now a class-level
constant — false in the base, overridden to true in SinglePaneWorkbench — instead
of reading DOCK_DETAIL_PANEL_SETTING at runtime. Removes the _configurationServiceForLayout
field. This also aligns the flag with the phone-aware workbench selection, so it no
longer reports single-pane on a phone viewport where the classic workbench is used.

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

* sessions: single-pane editor-group header menus, docked aux bar, and header styling

- Make the full-width Changes header a group-level editor concept: the editor
  part configures header menu ids via IEditorGroupViewOptions.headerMenuIds and
  the editor opts in via IEditorPane.getHeaderActions(); EditorGroupView renders
  the menus (no concrete menu points leak into core).
- Docked aux bar: top border connecting to the sash, and hide editor/aux when
  their sash collapses them.
- Changes pill and file-diff open reveal the editor explicitly
  (revealEditorPartExplicitly), and close the Files tab when a real file opens.
- Header styling: re-scope diff-stats/picker CSS via marker classes, restore
  inter-action spacing, and shrink the right toolbar buttons to 24px.
- Fix setHeaderContent wiping freshly-rendered content on re-render; tie per-group
  header listeners to group removal.

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

* sessions: reparent single-pane layout to a sibling controller with composed strategies

Make `SinglePaneLayoutController` a sibling of the classic desktop
`LayoutController` (both extend `BaseLayoutController`) instead of extending it,
so the desktop controller can be deprecated/deleted without affecting
single-pane. Its behaviour is composed from focused strategy objects under
`contrib/layout/browser/singlePane/`:

- Detail (aux bar) ownership split in two — `SinglePaneDetailVisibilityStrategy`
  owns per-session shown/hidden memory (D1-D4); `SinglePaneDetailPanelStrategy`
  owns container selection (Changes/Files), maximize, browser-hide, and the
  nothing-to-show hide. Removed the overlapping `EmptyAuxCleanup` (D10) strategy
  and desktop's redundant saved-container machinery.
- `SinglePaneManagedTabsStrategy` + `SinglePaneEditorAreaCollapseStrategy` share a
  `SinglePaneDockedTabsCoordinator`; plus `SinglePaneResponsiveSidebarStrategy`
  (Toggle Details), `SinglePaneNewSessionRulesStrategy` (R1), and
  `SinglePaneQuickChatEditorHideStrategy`.
- Strategies coordinate through the controller via `ISinglePaneLayoutContext`.
- Fresh per-session storage keys (`sessions.singlePane.*`) so single-pane never
  shares state with the classic controller.

Fix a chain of new-session-submit / Detail-only bugs (all verified in-app):

- New-session submit no longer reveals the docked editor or hides the just-opened
  detail. `onDidReplaceSession` fires before the controller's later-registered
  listener, so submit is detected intrinsically from the reactive transition
  (`!previousIsCreated && isCreated`); D3c leaves the detail as-is when a session
  has no saved state; the empty-editor-group hide is skipped during a layout
  restore.
- Detail-only sessions no longer flicker the editor open on switch or reload: the
  editor-part grid view (which hosts the docked aux bar) no longer maps its
  visibility to `setEditorHidden`, the width-based reveal-sync bails while
  editor-part auto-visibility is suppressed, and the persisted editor width uses
  the node's real visibility so a reload restores the collapsed node width.

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

* Fix component fixture screenshot CI

Add the missing workbench layout service mock needed by the changes view fixtures and update blocks-ci screenshot hashes to the expected CI output.

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

* sessions: fix cramped Changes actions bar in the single-pane editor header

The `ChangesActionsBar` marker (`.changes-actions-bar`) only carried a height
rule in the single-pane editor-group header; the classic
`.session-changes-editor-header-right` normalization does not reach that header,
so the primary split-button and the trailing secondary icon actions rendered
cramped together with no spacing or button chrome.

Add the container flex/gap layout and the secondary icon-button chrome (padding,
corner radius, secondary background/border + hover) keyed off `.changes-actions-bar`,
using design tokens, so it applies in the single-pane editor-group header while
staying idempotent for the classic internal changes-editor header (whose element
also carries `.session-changes-editor-header-right` with the same values).

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

* sessions: match classic Changes actions bar chrome in single-pane editor header

The single-pane editor-group header renders the Changes actions bar
(`.changes-actions-bar`) inside `.editor-group-header-secondary`, where the
high-specificity `editorgroupview.css` rules stretched the primary split-button
but gave the trailing secondary icon actions (Mark as Done, Run Code Review) no
inter-button gap and no button chrome, so they rendered flat and cramped against
the dropdown chevron.

Add, at matching specificity in `editorgroupview.css`, the container flex/gap and
the secondary icon-button chrome (padding, corner radius, secondary
background/border + hover) mirroring the classic `.chat-editing-session-actions`
actions bar. Drop the equivalent low-specificity rules from
`sessionChangesEditor.css`, which lost the cascade to the editor-group-header
selectors.

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

* sessions: fix single-pane Changes actions bar and move its styles out of core

In the single-pane editor-group header the Changes actions bar renders as a
toolbar action item inside a `.monaco-action-bar`, where the generic rule
`.monaco-action-bar .action-item .codicon { width: 16px; height: 16px }` clamped
every codicon — including the button elements themselves (which carry the
`codicon` class), squashing the secondary icon buttons and detaching the
split-button chevron.

- Un-clamp the codicons and lay out the bar (primary split-button grows, trailing
  secondary icons stay natural size) scoped to `.monaco-action-bar
  .action-item.changes-actions-bar`, so the classic internal changes-editor header
  and the aux-bar Changes view are left untouched.
- Move all `.changes-actions-bar`-specific rules OUT of core
  `editorgroupview.css` into the contributing component's
  `sessionChangesEditor.css`; core keeps only the generic header/toolbar layout.

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

* sessions: draw the single-pane header divider under the editor header/tab bar

Move the single-pane detail-panel separator from the auxiliary bar's top border
to a bottom divider on the editor header (spanning the editor content and docked
detail), so the line runs the full header width. When the active editor has no
header toolbars (e.g. Files), the divider is drawn under the tab bar instead so a
separator is always present below the header row.

The docked auxiliary bar is absolutely positioned over the right of the editor
part with a solid background, so it would overlay the divider. Rather than fight
it with z-index, start the aux bar one divider-thickness below the header/tab bar
(new `DockedAuxiliaryBarController.DIVIDER` offset applied to the aux top/height
and the resize sash), so its background sits just beneath the line.

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

* sessions: update docked aux geometry tests for the header-divider offset

The docked auxiliary bar now starts one divider-thickness below the header/tab
bar (`DockedAuxiliaryBarController.DIVIDER`), so its top and height shift by 1px
(top 34->35, height 566->565). Update the two workbench geometry snapshot tests
to the new expected values. Fixes the CI unit-test failures on the PR.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-07 07:40:30 +00:00
Henning DieterichsandHenning Dieterichs f6a4e0843f updates rspack
* reduces memory usage
* loads fixtures from source instead of out
2026-07-03 17:48:37 +02:00
4b6f5e55bb chore: bump electron@42.5.0 (#321629)
* chore: bump electron@42.4.0

* chore: apply temp dir workaround for short paths

* chore: use 24.15.x for CI node

* chore: update nodejs build

* chore: bump electron@42.5.0

* fix: unblock playwright install on node 24.17

Node 24.16+ made Readable pause()/resume() a no-op on destroyed streams
which makes yauzl 2.x / extract-zip 2.x and older playwright extraction
hang forever.

- extensions/copilot: add "yauzl": "^3.3.1" override (was missed by #318682)
  so electron and @vscode/vsce no longer resolve the broken yauzl 2.10, fixing the
  hung `npm ci` in the Copilot and Extract chat-lib pipelines.
- extensions/copilot: bump electron ^39.8.5 -> ^42.5.0 so its install
  script uses the native @electron-internal/extract-zip instead of extract-zip.
- bump @playwright/test ^1.56.1 -> ^1.61.1 so `playwright install`
  uses the fixed extractor, unblocking the "Download Electron and
  Playwright" step in all electron test pipelines.

* chore: update build

* agentHost: fix macOS sandbox smoke sentinel parsing

On macOS CI, the AgentHost sandbox smoke test resolves the shell to
/bin/sh, which uses the sentinel-based completion path. In that path, the
parser could consume the echoed sentinel command text
(`<<<COPILOT_SENTINEL_..._EXIT_$?>>>`) before the real numeric marker
arrived, causing a false `Exit code: -1` failure even though the command
later completed successfully.

Harden the sentinel parser to ignore echoed/non-numeric sentinel text
and use the latest complete numeric marker instead. Also force the
macOS AgentHost sandbox smoke test to use /bin/sh and assert that in the
suite log so local runs exercise the same path as CI.

Adds a regression test for echoed sentinel command text.

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

* chore: update screenshot baseline after playwright bump

* chore: bump distro

* chore: fix typecheck

* chore: bump distro

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-29 13:53:48 +00:00
Henning DieterichsandHenning Dieterichs e3bdd732ea uses markdown link 2026-06-17 19:10:01 +02:00
Henning DieterichsandHenning Dieterichs 7533927257 improved cssOrderScan 2026-06-17 19:10:01 +02:00
Henning DieterichsandHenning Dieterichs cf0e90192a Adds hashes & base64 encoded images 2026-06-16 10:50:08 +02:00
Henning DieterichsandHenning Dieterichs 1edc47c502 Implements css order scanning for component fixtures 2026-06-15 23:05:31 +02:00
RoboandGitHub 8748be1f1a feat: update to Electron v42 (#316661)
* feat: update to Electron v42

* chore: drop support for arm 32-bit server

* chore: update types/node to v24.x

* chore: temporarily lock the target version for build/

* chore: update v8-source-location.patch

* chore: fix clippy

* chore: cleanup armhf server ci config

* fix: broken lock file

* fix: c++ version requirement for sysroot builds

* fix: msvc compilation of native modules

* fix: handle rejections for fire-and-forget loadurl

* fix: windows build

* ci: fix teardown of daemon process on windows

```
2026-05-15T20:55:09.7717127Z Assertion failed: !(handle->flags & UV_HANDLE_CLOSING), file src\win\async.c, line 76
```

* chore: update deb and rpm dependencies

* chore: update version info

* spec: improve reliablity of offscreencanvas tests

* spec: retry EPERM failures on teardown

* chore: update x86_64 rpm deps

* ci: exclude server binskim for armhf

* temp: bump distro

* test: ignore deprecation warnings treated as errors

* chore: update lockfile

* fix: externalize electron from auth extension bundles

 Error: Cannot find module 'c:\Users\cloudtest\AppData\Local\Temp\vscode-sanityQvCaze\vscode-server-win32-x64-web\extensions\github-authentication\dist\install.js'
     at Module._resolveFilename (node:internal/modules/cjs/loader:1476:15)
     at wrapResolveFilename (node:internal/modules/cjs/loader:1049:27)
     at defaultResolveImplForCJSLoading (node:internal/modules/cjs/loader:1073:10)
     at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1094:12)
     at Module._load (node:internal/modules/cjs/loader:1262:25)
     at wrapModuleLoad (node:internal/modules/cjs/loader:255:19)
     at Module.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:154:5)
     at node:internal/main/run_main_module:33:47 {
   code: 'MODULE_NOT_FOUND',
   requireStack: []
 }

 Node.js v24.15.0

* test: make wsl sanity tests reliable

* chore: bump electron@42.1.0

* temp: bump distro

* chore: bump electron@42.2.0

* chore: bump distro

* chore: update debian dependencies

* Revert "test: make wsl sanity tests reliable"

This reverts commit b3f2b63e83.

* test: do not fail for deprecation warnings

* chore: patch node24 server binary for wsl1

* chore: address review feedback

* chore: revert global navigation error handler in browserview

* chore: bump distro
2026-05-27 14:57:41 +02:00
3711da41f2 remove input chevrons and add dividers between each dropdown label (#315599)
* remove input chevrons and add dividers between each dropdown label

* fix some agent host scenarios

* fix labels hiding/compacting

* nuke all chevrons in the pickers

* address some comments

* fix padding + add back chevrons for title

---------

Co-authored-by: copilot <copilot@github.com>
2026-05-19 22:08:09 +00:00
Henning DieterichsandGitHub f0a2b56ed3 Fixes component explorer ci (#314256)
fixes virtual scheduler in component explorer
2026-05-05 13:06:43 +02:00
Henning DieterichsandHenning Dieterichs 10d22829d7 Update InlineChatZoneWidget screenshot baselines 2026-05-04 19:33:42 +02:00
Henning DieterichsandHenning Dieterichs a0afc4cbe9 fixes component explorer lock file 2026-05-04 14:57:33 +02:00
dileepyavanandGitHub e7c6e7ebea Sandbox: AllowNetwork option to allow outgoing traffic in sandbox mode. (#313912)
* changes

* changes

* Fix deprecated sandbox setting fallback

* Changes to include workspaceStorage directory for allowRead

* changes

* updating vscode sandbox runtime version

* Cleaning up the PR

* Fix terminal sandbox allow-network config

* fixing tests

* fixing tests

* Centralize terminal sandbox enablement checks

* Update network filter sandbox mode test
2026-05-03 16:58:50 +00:00
Henning DieterichsandHenning Dieterichs 6b2fbaf804 Fixes component explorer lockfile 2026-04-28 17:18:52 +02:00
Johannes RiekenandGitHub ba9d296bbe test: add screenshots for InlineChatZoneWidget and its terminated state (#311925) 2026-04-22 09:04:55 -07:00
Vijay UpadyaandGitHub 602484ad5f Chronicle - local and remote (#308602)
* chronicle

* local and cloud store

* upload vscode events to remote store

* few updates

* consent ui and settings

* few optimizations

* test fix

* feedback updates

* test fix

* check setting to enable cmd

* fix test

* Settings update and tool update

* command update

* Settings update

* merge main

* feedback updates

* setting and test update

* few updates

* updates

* test update

* blocks ci update

* feedback updates

* comment update
2026-04-16 10:31:39 +02:00
Henning DieterichsandHenning Dieterichs 73ce5edc31 Only block ci for CodeEditor fixture changes 2026-04-07 18:38:44 +02:00
Henning DieterichsandHenning Dieterichs da22369c0d updates blocks-ci-screenshots.md 2026-04-07 18:38:44 +02:00
Henning DieterichsHenning Dieterichsgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
7eab2726c1 Update test/componentFixtures/blocks-ci-screenshots.md
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-07 15:57:15 +02:00
Henning DieterichsandHenning Dieterichs e2a4bce63e Fail screenshot CI if fixtures with tag blocks-ci change 2026-04-07 15:57:15 +02:00
Henning DieterichsandHenning Dieterichs 1a6b425b58 removes checked in baseline images, as they are now tracked by the screenshot service 2026-04-07 12:56:06 +02:00
Henning DieterichsandHenning Dieterichs cbefeb3643 add logs on failure 2026-04-01 11:51:29 +02:00
Henning DieterichsandHenning Dieterichs 6e701d61b3 Adds playwright component fixture tests 2026-04-01 11:51:29 +02:00
Henning DieterichsandGitHub b533ee4b6e Updates component explorer & adopts rspack for fixture serving (#306484) 2026-04-01 03:25:14 +00:00
Alexandru DimaandGitHub a7e3a4e1e5 fix: remove backslash escaping from terminal command labels (#303856)
* fix: remove escapeMarkdownSyntaxTokens from terminal command labels

Fixes #303844

The command text in ChatTerminalThinkingCollapsibleWrapper was being
escaped with escapeMarkdownSyntaxTokens(), which adds backslashes before
chars like - * # etc. This is unnecessary because the text is always
rendered inside markdown code spans or via .textContent, both of which
treat content as literal.

Also adds a component fixture for the terminal collapsible wrapper to
enable visual regression testing of command label rendering.

* fix: use DOM nodes instead of MarkdownString for sandbox command labels

Addresses review feedback: commands containing backticks (common in
PowerShell) would break the inline-code markdown spans. Now both
sandbox and non-sandbox paths use text nodes + <code> elements with
.textContent, which is always safe for arbitrary command text.

Also adds fixture cases for backtick-containing commands to catch
this class of issue.

* fix: remove colons from fixture names to fix CI artifact paths

* add screenshot baselines for terminal collapsible fixtures
2026-03-22 23:24:40 +09:00
Henning DieterichsandHenning Dieterichs 5d56633a57 updates component explorer 2026-03-11 22:30:41 +01:00
Henning DieterichsandHenning Dieterichs 7c08b33b79 update screenshot baselines from CI 2026-03-11 19:31:38 +01:00
Henning DieterichsandHenning Dieterichs 1a29c31071 update screenshot baselines from CI 2026-03-04 20:33:16 +01:00
Henning DieterichsandHenning Dieterichs 77ec1740b7 updates baseline 2026-02-27 17:58:11 +01:00
Henning DieterichsandHenning Dieterichs 5c4204e60d updates component explorer 2026-02-23 22:44:44 +01:00
Henning DieterichsandGitHub 2650c907f6 use git lfs (#297013) 2026-02-23 17:11:15 +01:00
Henning DieterichsandHenning Dieterichs bdd6e80b9f update screenshot baselines from CI 2026-02-23 12:50:38 +01:00
Henning DieterichsandHenning Dieterichs 1cc58eb412 update screenshot baselines from CI 2026-02-20 19:57:07 +01:00
Henning DieterichsandHenning Dieterichs 2751fb4d2f adds component explorer 2026-02-20 19:57:07 +01:00