Skip to content

feat(sessions): mobile bottom-sheet picker for opened-chat input#314571

Draft
osortega wants to merge 3 commits intomainfrom
agents/dc3d2746-3d1f-49f2-ba40-39eb0f4f77ea
Draft

feat(sessions): mobile bottom-sheet picker for opened-chat input#314571
osortega wants to merge 3 commits intomainfrom
agents/dc3d2746-3d1f-49f2-ba40-39eb0f4f77ea

Conversation

@osortega
Copy link
Copy Markdown
Contributor

@osortega osortega commented May 5, 2026

What

On phone-classified viewports of vscode.dev/agents, the opened-chat input (workbench ChatInputPart) now mirrors the empty new-chat input: the desktop Mode + Model pickers are replaced with a single chip that opens a unified bottom sheet (Agent Mode + Model rows).

Before this PR, only the empty new-chat input used the mobile sheet (via MobileChatInputConfigPickershowMobilePickerSheet). Once a session was opened, the workbench rendered the desktop popup pickers (ModelPickerActionItem / ModePickerActionItem), which are sized and positioned for desktop mouse use.

How

A new pluggable workbench service IChatPhoneInputPresenter with a no-op default singleton.

  • vs/workbench exposes the interface and a chip view item; it never depends on the sheet primitive.
  • vs/sessions registers a phone implementation that drives the existing showMobilePickerSheet. Activation is gated by the sessionsIsPhoneLayout context key (observed via observableContextKey).
  • ChatInputPart's inline actionViewItemProvider adds a phone-aware branch placed before the existing model/mode handlers: when the presenter is enabled, it returns the chip in the model action's slot and a hidden item for the mode action's slot.
  • openModelPicker() / openModePicker() fall through to the sheet on phone (covers keyboard/voice invocations).
  • An autorun calls inputActionsToolbar.refresh() when phone-enabled flips so the chip / desktop pickers swap in correctly across breakpoint transitions.

Why a service instead of a sessions-side actionViewItemService.register override on MenuId.ChatInput: the toolbar's actionViewService.lookUp runs before the inline provider, so a sessions registration would also intercept on desktop and bypass the rich desktop pickers. Keeping the indirection in workbench lets the inline provider stay authoritative.

Files

New

  • src/vs/workbench/contrib/chat/browser/widget/input/chatPhoneInputPresenter.ts
  • src/vs/workbench/contrib/chat/browser/widget/input/media/chatPhoneInputPresenter.css
  • src/vs/sessions/contrib/chat/browser/mobileChatPhoneInputPresenter.ts

Modified

  • src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts — phone branch, helper extraction, openModelPicker/openModePicker fall-through, autorun toolbar refresh.
  • src/vs/sessions/sessions.web.main.ts — self-registering import for the sessions impl.

Validation

  • npm run compile-check-ts-native
  • npm run valid-layers-check
  • eslint on touched TS files
  • stylelint on the new CSS file
  • ⏭️ Manual mobile smoke (vscode.dev/agents) — pending

Test plan

  • vscode.dev/agents on phone (or DevTools mobile emulation):
    • Empty new-chat: chip + combined sheet still works (existing MobileChatInputConfigPicker regression check).
    • Open a session: chip appears in ChatInputPart toolbar in place of the two desktop pickers; tap opens the combined sheet; mode selection applies; model selection applies and persists.
  • Desktop classic VS Code workbench: no behavioral change — Mode + Model pickers render as today.
  • chat.disableAIFeatures = true: nothing renders (existing gating preserved).

Mirrors the new-chat empty-state mobile experience for the workbench
ChatInputPart used in vscode.dev/agents on phone-classified viewports:
the desktop Mode + Model pickers are replaced with a single chip that
opens a unified bottom sheet (Agent Mode + Model rows).

The bottom-sheet primitive (showMobilePickerSheet) stays in
vs/sessions. A new workbench service (IChatPhoneInputPresenter, no-op
default singleton) lets sessions register a phone-only impl that opens
the sheet; ChatInputPart consults the presenter from its inline
actionViewItemProvider to swap in a chip when active. Desktop
behavior is unchanged.

Files added:
- src/vs/workbench/contrib/chat/browser/widget/input/chatPhoneInputPresenter.ts
- src/vs/workbench/contrib/chat/browser/widget/input/media/chatPhoneInputPresenter.css
- src/vs/sessions/contrib/chat/browser/mobileChatPhoneInputPresenter.ts

Files modified:
- src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts
- src/vs/sessions/sessions.web.main.ts

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings May 5, 2026 22:52
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 5, 2026

Screenshot Changes

Base: 18d29537 Current: 9576583d

Changed (28)

editor/inlineCompletions/other/HintsToolbar/Dark
Before After
before after
editor/inlineCompletions/other/HintsToolbar/Light
Before After
before after
editor/inlineCompletions/other/HintsToolbarHovered/Dark
Before After
before after
editor/inlineCompletions/other/HintsToolbarHovered/Light
Before After
before after
editor/inlineCompletions/views/SideBySideViewSmall/Dark
Before After
before after
editor/inlineCompletions/views/SideBySideViewSmall/Light
Before After
before after
editor/inlineCompletions/views/SideBySideViewWide/Dark
Before After
before after
editor/inlineCompletions/views/SideBySideViewWide/Light
Before After
before after
editor/inlineCompletions/views/WordReplacementView/Dark
Before After
before after
editor/inlineCompletions/views/WordReplacementView/Light
Before After
before after
editor/inlineCompletions/views/DeletionView/Dark
Before After
before after
editor/inlineCompletions/views/DeletionView/Light
Before After
before after
editor/inlineCompletions/views/LineReplacementView/Dark
Before After
before after
editor/inlineCompletions/views/LineReplacementView/Light
Before After
before after
editor/multiDiffEditor/MultiDiffEditor/Dark
Before After
before after
editor/multiDiffEditor/MultiDiffEditor/Light
Before After
before after
editor/multiDiffEditor/MultiDiffEditorIncrementalPending/Dark
Before After
before after
editor/multiDiffEditor/MultiDiffEditorIncrementalPending/Light
Before After
before after
editor/multiDiffEditor/MultiDiffEditorIncrementalResolved/Dark
Before After
before after
editor/multiDiffEditor/MultiDiffEditorIncrementalResolved/Light
Before After
before after
editor/multiDiffEditor/MultiDiffEditorDocumentSwapAfter/Dark
Before After
before after
editor/multiDiffEditor/MultiDiffEditorDocumentSwapAfter/Light
Before After
before after
editor/suggestWidget/MethodCompletions/Dark
Before After
before after
editor/suggestWidget/MethodCompletions/Light
Before After
before after
peekReference/PeekReferences/Dark
Before After
before after
peekReference/PeekReferences/Light
Before After
before after
agentSessionsViewer/WithMarkdownBadge/Dark
Before After
before after
agentSessionsViewer/WithMarkdownBadge/Light
Before After
before after

Errored (24)

Fixtures that failed to render — no screenshot was produced.

chat/input/chatInput/Default/Dark — [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
Error: [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
    at TestInstantiationService._throwIfStrict (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:392:10)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:142:10)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at renderChatInput (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatInput.fixture.ts:81:61)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatInput.fixture.ts:149:55)
    at actualRender (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:885:29)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:918:4)
    at Le.waitForRendering (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/core/ComponentRenderer.ts:187:19)
    at Tt.renderFixture (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/modes/HeadlessMode.ts:149:19)
    at async <anonymous>:316:30
chat/input/chatInput/Default/Light — [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
Error: [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
    at TestInstantiationService._throwIfStrict (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:392:10)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:142:10)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at renderChatInput (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatInput.fixture.ts:81:61)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatInput.fixture.ts:149:55)
    at actualRender (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:885:29)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:918:4)
    at Le.waitForRendering (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/core/ComponentRenderer.ts:187:19)
    at Tt.renderFixture (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/modes/HeadlessMode.ts:149:19)
    at async <anonymous>:316:30
chat/input/chatInput/WithArtifacts/Dark — [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
Error: [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
    at TestInstantiationService._throwIfStrict (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:392:10)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:142:10)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at renderChatInput (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatInput.fixture.ts:81:61)
    at async Promise.all (index 0)
    at actualRender (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:895:6)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:918:4)
    at Le.waitForRendering (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/core/ComponentRenderer.ts:187:19)
    at Tt.renderFixture (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/modes/HeadlessMode.ts:149:19)
    at async <anonymous>:316:30
chat/input/chatInput/WithArtifacts/Light — [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
Error: [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
    at TestInstantiationService._throwIfStrict (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:392:10)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:142:10)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at renderChatInput (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatInput.fixture.ts:81:61)
    at async Promise.all (index 0)
    at actualRender (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:895:6)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:918:4)
    at Le.waitForRendering (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/core/ComponentRenderer.ts:187:19)
    at Tt.renderFixture (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/modes/HeadlessMode.ts:149:19)
    at async <anonymous>:316:30
chat/input/chatInput/WithFileChanges/Dark — [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
Error: [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
    at TestInstantiationService._throwIfStrict (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:392:10)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:142:10)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at renderChatInput (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatInput.fixture.ts:81:61)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatInput.fixture.ts:152:22)
    at actualRender (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:885:29)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:918:4)
    at Le.waitForRendering (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/core/ComponentRenderer.ts:187:19)
    at Tt.renderFixture (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/modes/HeadlessMode.ts:149:19)
    at async <anonymous>:316:30
chat/input/chatInput/WithFileChanges/Light — [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
Error: [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
    at TestInstantiationService._throwIfStrict (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:392:10)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:142:10)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at renderChatInput (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatInput.fixture.ts:81:61)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatInput.fixture.ts:152:22)
    at actualRender (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:885:29)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:918:4)
    at Le.waitForRendering (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/core/ComponentRenderer.ts:187:19)
    at Tt.renderFixture (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/modes/HeadlessMode.ts:149:19)
    at async <anonymous>:316:30
chat/input/chatInput/WithTodos/Dark — [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
Error: [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
    at TestInstantiationService._throwIfStrict (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:392:10)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:142:10)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at renderChatInput (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatInput.fixture.ts:81:61)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatInput.fixture.ts:155:22)
    at actualRender (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:885:29)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:918:4)
    at Le.waitForRendering (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/core/ComponentRenderer.ts:187:19)
    at Tt.renderFixture (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/modes/HeadlessMode.ts:149:19)
    at async <anonymous>:316:30
chat/input/chatInput/WithTodos/Light — [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
Error: [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
    at TestInstantiationService._throwIfStrict (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:392:10)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:142:10)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at renderChatInput (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatInput.fixture.ts:81:61)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatInput.fixture.ts:155:22)
    at actualRender (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:885:29)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:918:4)
    at Le.waitForRendering (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/core/ComponentRenderer.ts:187:19)
    at Tt.renderFixture (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/modes/HeadlessMode.ts:149:19)
    at async <anonymous>:316:30
chat/input/chatInput/WithTodosAndFileChanges/Dark — [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
Error: [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
    at TestInstantiationService._throwIfStrict (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:392:10)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:142:10)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at renderChatInput (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatInput.fixture.ts:81:61)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatInput.fixture.ts:158:22)
    at actualRender (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:885:29)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:918:4)
    at Le.waitForRendering (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/core/ComponentRenderer.ts:187:19)
    at Tt.renderFixture (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/modes/HeadlessMode.ts:149:19)
    at async <anonymous>:316:30
chat/input/chatInput/WithTodosAndFileChanges/Light — [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
Error: [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
    at TestInstantiationService._throwIfStrict (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:392:10)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:142:10)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at renderChatInput (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatInput.fixture.ts:81:61)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatInput.fixture.ts:158:22)
    at actualRender (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:885:29)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:918:4)
    at Le.waitForRendering (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/core/ComponentRenderer.ts:187:19)
    at Tt.renderFixture (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/modes/HeadlessMode.ts:149:19)
    at async <anonymous>:316:30
chat/input/chatInput/WithArtifactsAndFileChanges/Dark — [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
Error: [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
    at TestInstantiationService._throwIfStrict (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:392:10)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:142:10)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at renderChatInput (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatInput.fixture.ts:81:61)
    at async Promise.all (index 0)
    at actualRender (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:895:6)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:918:4)
    at Le.waitForRendering (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/core/ComponentRenderer.ts:187:19)
    at Tt.renderFixture (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/modes/HeadlessMode.ts:149:19)
    at async <anonymous>:316:30
chat/input/chatInput/WithArtifactsAndFileChanges/Light — [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
Error: [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
    at TestInstantiationService._throwIfStrict (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:392:10)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:142:10)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at renderChatInput (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatInput.fixture.ts:81:61)
    at async Promise.all (index 0)
    at actualRender (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:895:6)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:918:4)
    at Le.waitForRendering (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/core/ComponentRenderer.ts:187:19)
    at Tt.renderFixture (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/modes/HeadlessMode.ts:149:19)
    at async <anonymous>:316:30
chat/input/chatInput/Full/Dark — [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
Error: [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
    at TestInstantiationService._throwIfStrict (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:392:10)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:142:10)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at renderChatInput (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatInput.fixture.ts:81:61)
    at async Promise.all (index 0)
    at actualRender (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:895:6)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:918:4)
    at Le.waitForRendering (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/core/ComponentRenderer.ts:187:19)
    at Tt.renderFixture (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/modes/HeadlessMode.ts:149:19)
    at async <anonymous>:316:30
chat/input/chatInput/Full/Light — [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
Error: [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
    at TestInstantiationService._throwIfStrict (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:392:10)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:142:10)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at renderChatInput (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatInput.fixture.ts:81:61)
    at async Promise.all (index 0)
    at actualRender (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:895:6)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:918:4)
    at Le.waitForRendering (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/core/ComponentRenderer.ts:187:19)
    at Tt.renderFixture (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/modes/HeadlessMode.ts:149:19)
    at async <anonymous>:316:30
chat/widget/chatWidget/SimpleQA/Dark — [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
Error: [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
    at TestInstantiationService._throwIfStrict (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:392:10)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:142:10)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at renderChatWidget (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatWidget.fixture.ts:188:61)
    at async Promise.all (index 0)
    at actualRender (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:895:6)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:918:4)
    at Le.waitForRendering (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/core/ComponentRenderer.ts:187:19)
    at Tt.renderFixture (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/modes/HeadlessMode.ts:149:19)
    at async <anonymous>:316:30
chat/widget/chatWidget/SimpleQA/Light — [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
Error: [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
    at TestInstantiationService._throwIfStrict (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:392:10)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:142:10)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at renderChatWidget (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatWidget.fixture.ts:188:61)
    at async Promise.all (index 0)
    at actualRender (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:895:6)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:918:4)
    at Le.waitForRendering (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/core/ComponentRenderer.ts:187:19)
    at Tt.renderFixture (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/modes/HeadlessMode.ts:149:19)
    at async <anonymous>:316:30
chat/widget/chatWidget/PendingToolApproval/Dark — [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
Error: [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
    at TestInstantiationService._throwIfStrict (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:392:10)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:142:10)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at renderChatWidget (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatWidget.fixture.ts:188:61)
    at async Promise.all (index 0)
    at actualRender (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:895:6)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:918:4)
    at Le.waitForRendering (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/core/ComponentRenderer.ts:187:19)
    at Tt.renderFixture (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/modes/HeadlessMode.ts:149:19)
    at async <anonymous>:316:30
chat/widget/chatWidget/PendingToolApproval/Light — [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
Error: [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
    at TestInstantiationService._throwIfStrict (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:392:10)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:142:10)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at renderChatWidget (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatWidget.fixture.ts:188:61)
    at async Promise.all (index 0)
    at actualRender (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:895:6)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:918:4)
    at Le.waitForRendering (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/core/ComponentRenderer.ts:187:19)
    at Tt.renderFixture (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/modes/HeadlessMode.ts:149:19)
    at async <anonymous>:316:30
chat/widget/chatWidget/MultiTurn/Dark — [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
Error: [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
    at TestInstantiationService._throwIfStrict (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:392:10)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:142:10)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at renderChatWidget (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatWidget.fixture.ts:188:61)
    at async Promise.all (index 0)
    at actualRender (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:895:6)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:918:4)
    at Le.waitForRendering (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/core/ComponentRenderer.ts:187:19)
    at Tt.renderFixture (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/modes/HeadlessMode.ts:149:19)
    at async <anonymous>:316:30
chat/widget/chatWidget/MultiTurn/Light — [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
Error: [createInstance] ChatInputPart depends on UNKNOWN service chatPhoneInputPresenter.
    at TestInstantiationService._throwIfStrict (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:392:10)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:142:10)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at renderChatWidget (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/chat/chatWidget.fixture.ts:188:61)
    at async Promise.all (index 0)
    at actualRender (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:895:6)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:918:4)
    at Le.waitForRendering (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/core/ComponentRenderer.ts:187:19)
    at Tt.renderFixture (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/modes/HeadlessMode.ts:149:19)
    at async <anonymous>:316:30
editor/inlineChatZoneWidget/InlineChatZoneWidget/Dark — Cannot read properties of undefined (reading 'enabled')
TypeError: Cannot read properties of undefined (reading 'enabled')
    at actionViewItemProvider (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts:2407:38)
    at Object.actionViewItemProvider (file:///home/runner/work/vscode/vscode/src/vs/platform/actions/browser/toolbar.ts:362:22)
    at Object.actionViewItemProvider (file:///home/runner/work/vscode/vscode/src/vs/base/browser/ui/toolbar/toolbar.ts:139:29)
    at file:///home/runner/work/vscode/vscode/src/vs/base/browser/ui/actionbar/actionbar.ts:365:25
    at Array.forEach (<anonymous>)
    at ActionBar.push (file:///home/runner/work/vscode/vscode/src/vs/base/browser/ui/actionbar/actionbar.ts:356:11)
    at file:///home/runner/work/vscode/vscode/src/vs/base/browser/ui/toolbar/toolbar.ts:269:19
    at Array.forEach (<anonymous>)
    at MenuWorkbenchToolBar.setActions (file:///home/runner/work/vscode/vscode/src/vs/base/browser/ui/toolbar/toolbar.ts:268:23)
    at MenuWorkbenchToolBar.setActions (file:///home/runner/work/vscode/vscode/src/vs/platform/actions/browser/toolbar.ts:188:9)
    at MenuWorkbenchToolBar._updateToolbar (file:///home/runner/work/vscode/vscode/src/vs/platform/actions/browser/toolbar.ts:398:9)
    at new MenuWorkbenchToolBar (file:///home/runner/work/vscode/vscode/src/vs/platform/actions/browser/toolbar.ts:387:8)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:162:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at ChatInputPart.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts:2387:71)
    at ChatWidget.createInput (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts:1897:14)
    at ChatWidget.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts:737:9)
    at new InlineChatWidget (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.ts:187:19)
    at new EditorBasedInlineChatWidget (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.ts:488:3)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:162:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at new InlineChatZoneWidget (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.ts:214:30)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:162:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at renderInlineChatZoneWidget (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/editor/inlineChatZoneWidget.fixture.ts:375:62)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/editor/inlineChatZoneWidget.fixture.ts:420:24)
    at actualRender (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:885:29)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:918:4)
    at Le.waitForRendering (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/core/ComponentRenderer.ts:187:19)
    at Tt.renderFixture (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/modes/HeadlessMode.ts:149:19)
    at async <anonymous>:316:30
editor/inlineChatZoneWidget/InlineChatZoneWidget/Light — Cannot read properties of undefined (reading 'enabled')
TypeError: Cannot read properties of undefined (reading 'enabled')
    at actionViewItemProvider (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts:2407:38)
    at Object.actionViewItemProvider (file:///home/runner/work/vscode/vscode/src/vs/platform/actions/browser/toolbar.ts:362:22)
    at Object.actionViewItemProvider (file:///home/runner/work/vscode/vscode/src/vs/base/browser/ui/toolbar/toolbar.ts:139:29)
    at file:///home/runner/work/vscode/vscode/src/vs/base/browser/ui/actionbar/actionbar.ts:365:25
    at Array.forEach (<anonymous>)
    at ActionBar.push (file:///home/runner/work/vscode/vscode/src/vs/base/browser/ui/actionbar/actionbar.ts:356:11)
    at file:///home/runner/work/vscode/vscode/src/vs/base/browser/ui/toolbar/toolbar.ts:269:19
    at Array.forEach (<anonymous>)
    at MenuWorkbenchToolBar.setActions (file:///home/runner/work/vscode/vscode/src/vs/base/browser/ui/toolbar/toolbar.ts:268:23)
    at MenuWorkbenchToolBar.setActions (file:///home/runner/work/vscode/vscode/src/vs/platform/actions/browser/toolbar.ts:188:9)
    at MenuWorkbenchToolBar._updateToolbar (file:///home/runner/work/vscode/vscode/src/vs/platform/actions/browser/toolbar.ts:398:9)
    at new MenuWorkbenchToolBar (file:///home/runner/work/vscode/vscode/src/vs/platform/actions/browser/toolbar.ts:387:8)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:162:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at ChatInputPart.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts:2387:71)
    at ChatWidget.createInput (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts:1897:14)
    at ChatWidget.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts:737:9)
    at new InlineChatWidget (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.ts:187:19)
    at new EditorBasedInlineChatWidget (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.ts:488:3)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:162:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at new InlineChatZoneWidget (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.ts:214:30)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:162:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at renderInlineChatZoneWidget (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/editor/inlineChatZoneWidget.fixture.ts:375:62)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/editor/inlineChatZoneWidget.fixture.ts:420:24)
    at actualRender (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:885:29)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:918:4)
    at Le.waitForRendering (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/core/ComponentRenderer.ts:187:19)
    at Tt.renderFixture (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/modes/HeadlessMode.ts:149:19)
    at async <anonymous>:316:30
editor/inlineChatZoneWidget/InlineChatZoneWidgetTerminated/Dark — Cannot read properties of undefined (reading 'enabled')
TypeError: Cannot read properties of undefined (reading 'enabled')
    at actionViewItemProvider (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts:2407:38)
    at Object.actionViewItemProvider (file:///home/runner/work/vscode/vscode/src/vs/platform/actions/browser/toolbar.ts:362:22)
    at Object.actionViewItemProvider (file:///home/runner/work/vscode/vscode/src/vs/base/browser/ui/toolbar/toolbar.ts:139:29)
    at file:///home/runner/work/vscode/vscode/src/vs/base/browser/ui/actionbar/actionbar.ts:365:25
    at Array.forEach (<anonymous>)
    at ActionBar.push (file:///home/runner/work/vscode/vscode/src/vs/base/browser/ui/actionbar/actionbar.ts:356:11)
    at file:///home/runner/work/vscode/vscode/src/vs/base/browser/ui/toolbar/toolbar.ts:269:19
    at Array.forEach (<anonymous>)
    at MenuWorkbenchToolBar.setActions (file:///home/runner/work/vscode/vscode/src/vs/base/browser/ui/toolbar/toolbar.ts:268:23)
    at MenuWorkbenchToolBar.setActions (file:///home/runner/work/vscode/vscode/src/vs/platform/actions/browser/toolbar.ts:188:9)
    at MenuWorkbenchToolBar._updateToolbar (file:///home/runner/work/vscode/vscode/src/vs/platform/actions/browser/toolbar.ts:398:9)
    at new MenuWorkbenchToolBar (file:///home/runner/work/vscode/vscode/src/vs/platform/actions/browser/toolbar.ts:387:8)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:162:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at ChatInputPart.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts:2387:71)
    at ChatWidget.createInput (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts:1897:14)
    at ChatWidget.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts:737:9)
    at new InlineChatWidget (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.ts:187:19)
    at new EditorBasedInlineChatWidget (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.ts:488:3)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:162:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at new InlineChatZoneWidget (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.ts:214:30)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:162:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at renderInlineChatZoneWidget (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/editor/inlineChatZoneWidget.fixture.ts:375:62)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/editor/inlineChatZoneWidget.fixture.ts:424:24)
    at actualRender (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:885:29)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:918:4)
    at Le.waitForRendering (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/core/ComponentRenderer.ts:187:19)
    at Tt.renderFixture (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/modes/HeadlessMode.ts:149:19)
    at async <anonymous>:316:30
editor/inlineChatZoneWidget/InlineChatZoneWidgetTerminated/Light — Cannot read properties of undefined (reading 'enabled')
TypeError: Cannot read properties of undefined (reading 'enabled')
    at actionViewItemProvider (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts:2407:38)
    at Object.actionViewItemProvider (file:///home/runner/work/vscode/vscode/src/vs/platform/actions/browser/toolbar.ts:362:22)
    at Object.actionViewItemProvider (file:///home/runner/work/vscode/vscode/src/vs/base/browser/ui/toolbar/toolbar.ts:139:29)
    at file:///home/runner/work/vscode/vscode/src/vs/base/browser/ui/actionbar/actionbar.ts:365:25
    at Array.forEach (<anonymous>)
    at ActionBar.push (file:///home/runner/work/vscode/vscode/src/vs/base/browser/ui/actionbar/actionbar.ts:356:11)
    at file:///home/runner/work/vscode/vscode/src/vs/base/browser/ui/toolbar/toolbar.ts:269:19
    at Array.forEach (<anonymous>)
    at MenuWorkbenchToolBar.setActions (file:///home/runner/work/vscode/vscode/src/vs/base/browser/ui/toolbar/toolbar.ts:268:23)
    at MenuWorkbenchToolBar.setActions (file:///home/runner/work/vscode/vscode/src/vs/platform/actions/browser/toolbar.ts:188:9)
    at MenuWorkbenchToolBar._updateToolbar (file:///home/runner/work/vscode/vscode/src/vs/platform/actions/browser/toolbar.ts:398:9)
    at new MenuWorkbenchToolBar (file:///home/runner/work/vscode/vscode/src/vs/platform/actions/browser/toolbar.ts:387:8)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:162:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at ChatInputPart.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts:2387:71)
    at ChatWidget.createInput (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts:1897:14)
    at ChatWidget.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts:737:9)
    at new InlineChatWidget (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.ts:187:19)
    at new EditorBasedInlineChatWidget (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.ts:488:3)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:162:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at new InlineChatZoneWidget (file:///home/runner/work/vscode/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.ts:214:30)
    at TestInstantiationService._createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:162:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/common/instantiationService.ts:128:18)
    at TestInstantiationService.createInstance (file:///home/runner/work/vscode/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock.ts:62:16)
    at renderInlineChatZoneWidget (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/editor/inlineChatZoneWidget.fixture.ts:375:62)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/editor/inlineChatZoneWidget.fixture.ts:424:24)
    at actualRender (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:885:29)
    at Object.render (file:///home/runner/work/vscode/vscode/src/vs/workbench/test/browser/componentFixtures/fixtureUtils.ts:918:4)
    at Le.waitForRendering (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/core/ComponentRenderer.ts:187:19)
    at Tt.renderFixture (file:///home/runner/work/vscode/vscode/build/rspack/node_modules/@vscode/component-explorer/src/modes/HeadlessMode.ts:149:19)
    at async <anonymous>:316:30

blocks-ci screenshots changed

Replace the contents of test/componentFixtures/blocks-ci-screenshots.md with:

Updated blocks-ci-screenshots.md
<!-- auto-generated by CI — do not edit manually -->

#### editor/codeEditor/CodeEditor/Dark
![screenshot](https://hediet-screenshots.azurewebsites.net/images/67bfb687fd2818bd53771a60660541b9ed6f38b80d37da0aac15d267ecaeacec)

#### editor/codeEditor/CodeEditor/Light
![screenshot](https://hediet-screenshots.azurewebsites.net/images/0469dd8d0a587d94a1eaec514c79917b93b9a38694ef2b767bb1892819ae0a55)

#### editor/inlineChatZoneWidget/InlineChatZoneWidget/Dark
![screenshot](https://hediet-screenshots.azurewebsites.net/images/97162fc53c861ee13dc78a18e41fe3a25a42f62dc52a560510ebf084a418e1c3)

#### editor/inlineChatZoneWidget/InlineChatZoneWidget/Light
![screenshot](https://hediet-screenshots.azurewebsites.net/images/3b7e2eb5cc9ba727e2bc1c5113c3e17d8e9a6ce9a37b77519be3716ceb9a9afa)

#### editor/inlineChatZoneWidget/InlineChatZoneWidgetTerminated/Dark
![screenshot](https://hediet-screenshots.azurewebsites.net/images/97162fc53c861ee13dc78a18e41fe3a25a42f62dc52a560510ebf084a418e1c3)

#### editor/inlineChatZoneWidget/InlineChatZoneWidgetTerminated/Light
![screenshot](https://hediet-screenshots.azurewebsites.net/images/3b7e2eb5cc9ba727e2bc1c5113c3e17d8e9a6ce9a37b77519be3716ceb9a9afa)

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a workbench-level hook to let the Agents window (sessions layer) replace the desktop Mode/Model pickers in the opened-chat input (ChatInputPart) with a single mobile chip that opens a combined bottom-sheet picker on phone-classified viewports, matching the existing “empty new-chat” mobile experience.

Changes:

  • Introduces a new pluggable workbench service (IChatPhoneInputPresenter) plus a combined-picker chip action view item.
  • Updates ChatInputPart to swap desktop pickers for the chip when the presenter is enabled, and to route model/mode open commands through the combined sheet on phone.
  • Registers a sessions-side phone implementation that drives the existing showMobilePickerSheet bottom sheet (web-only).
Show a summary per file
File Description
src/vs/workbench/contrib/chat/browser/widget/input/media/chatPhoneInputPresenter.css Adds styling for the combined “Mode + Model” chip in ChatInputPart.
src/vs/workbench/contrib/chat/browser/widget/input/chatPhoneInputPresenter.ts Adds the workbench service + the mobile combined-picker action view item (chip).
src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts Switches between desktop pickers and mobile chip/sheet based on the presenter’s enabled observable; adds toolbar refresh on breakpoint flips.
src/vs/sessions/sessions.web.main.ts Imports the sessions-side presenter implementation (web-only).
src/vs/sessions/contrib/chat/browser/mobileChatPhoneInputPresenter.ts Implements the phone presenter in vs/sessions using showMobilePickerSheet and the existing mode/model delegates.

Copilot's findings

Comments suppressed due to low confidence (1)

src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts:2415

  • this._currentLanguageModel is an observableValue(...), so this null-check is always false. If the intent is to ensure a default model is selected before rendering the picker, this should likely check this._currentLanguageModel.get() (or just remove the branch if it’s no longer needed).
				if (action.id === OpenModelPickerAction.ID && action instanceof MenuItemAction) {
					if (!this._currentLanguageModel) {
						this.setCurrentLanguageModelToDefault();
					}
  • Files reviewed: 5/5 changed files
  • Comments generated: 4

Comment on lines +143 to +150
super.render(container);
container.classList.add('chat-input-picker-item');
this._renderDisposables.clear();

const trigger = dom.append(container, dom.$('a.action-label.chat-phone-input-chip'));
trigger.tabIndex = 0;
trigger.role = 'button';
this._triggerElement = trigger;
Comment on lines +11 to +14
.chat-input-picker-item .action-label.chat-phone-input-chip {
gap: 4px;
cursor: pointer;
}
const target = this.inputActionsToolbar.getElement();
this.chatPhoneInputPresenter
.showCombinedModeAndModelSheet(target, this._createModePickerDelegate(), this._createModelPickerDelegate())
.catch(() => { });
Comment on lines +2399 to +2403
if (this.chatPhoneInputPresenter.enabled.get()) {
if (action.id === OpenModelPickerAction.ID && action instanceof MenuItemAction) {
if (!this._currentLanguageModel) {
this.setCurrentLanguageModelToDefault();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants