Skip to content

sessions: align experimental composer controls - #337149

Merged
Megan Rogge (meganrogge) merged 21 commits into
microsoft:mainfrom
meganrogge:agents/keybindings-folder-harness-picker
Sep 22, 2026
Merged

Megan Rogge (meganrogge) merged 21 commits into
microsoft:mainfrom
meganrogge:agents/keybindings-folder-harness-picker

Conversation

@meganrogge

@meganrogge Megan Rogge (meganrogge) commented Sep 21, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • add keyboard commands for focusing the Agents Window workspace and harness pickers, including shortcut-aware hovers, context-menu keybinding configuration, and accessibility help
  • add an opt-in new-session footer that groups the folder, branch, New Worktree, and harness controls
  • align desktop running-session mode, approval, model, and context-usage controls with the experimental composer layout while preserving the existing phone layout
  • keep the context-usage control clear of editor text at rest and while expanded
  • preserve the existing layouts unless both the experimental composer layout and unified workspace picker settings are enabled

Enablement

The experimental layouts are enabled only when both of these application settings are true:

  • sessions.chat.experimental.newSessionComposerLayout (experimental, defaults to false)
  • sessions.chat.unifiedWorkspacePicker.enabled

The picker focus commands, shortcut-aware hovers, context-menu keybinding configuration, and accessibility help require the unified workspace picker but do not require the experimental layout setting.

Screenshots

New session composer

Screenshot 2026-09-21 at 5 28 36 PM Screenshot 2026-09-21 at 5 29 05 PM

Fixes #337144
Fixes #337145
Fixes #337150

Copilot AI balanced review requested due to automatic review settings September 21, 2026 20:36
@meganrogge Megan Rogge (meganrogge) added this to the 1.140.0 milestone Sep 21, 2026
Align the new-session composer controls with the unified picker layout behind an opt-in setting. Add workspace and harness focus shortcuts with discoverable keybinding configuration.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Align new and active session controls under the experimental composer setting, keep repository controls ordered consistently, and make the footer quiet at rest.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Let the transparent experimental footer span the composer so its controls align with the input actions.

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

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🟡 Changes recommended

Repository ordering escapes the experimental gate, while accessible guidance and dynamic presentation coverage remain incomplete.

Get a fresh assessment by requesting another Copilot review.

Review effort: Balanced
Findings: 1 Medium severity · 2 Low severity

Open (3)
What changed in this PR

Adds experimental Agents Window composer alignment and keyboard-accessible workspace/harness picker controls.

Changes:

  • Adds picker-focus commands, dynamic keybinding hovers, context menus, and accessibility help.
  • Introduces opt-in new/active session composer layouts.
  • Reorders and relocates repository, permission, model, and harness controls.
File Description
agentHostSessionConfigPicker.test.ts Updates repository and running-session menu expectations.
agentHostSessionConfigPicker.ts Repositions Agent Host controls and repository actions.
sessionsChatAccessibilityHelp.test.ts Tests conditional picker help.
newSessionComposerLayout.test.ts Tests layout enablement and control relocation.
newChatWidget.test.ts Updates the workspace-picker harness.
newChatPickerKeybinding.test.ts Tests chords and enablement contexts.
constants.ts Defines the experimental setting key.
webWorkspacePicker.ts Forwards keybinding and context-menu services.
sessionWorkspacePicker.ts Adds keybinding-aware workspace triggers.
sessionTypePicker.ts Adds keybinding-aware harness triggers.
sessionsChatAccessibilityHelp.ts Documents picker commands.
newChatWidget.ts Applies layout changes and exposes picker focus methods.
newChatPickerKeybinding.ts Implements commands’ presentation and context menus.
newChatInput.ts Relocates controls and updates responsive layout.
mobileSessionTypePicker.ts Forwards new picker dependencies.
chatWidget.css Styles the experimental footer.
chatInput.css Aligns composer toolbar controls.
chatView.ts Applies active-session layout state and focus routing.
chat.contribution.ts Registers commands, keybindings, and setting.
sessionCommands.ts Defines picker command IDs.
sessionView.ts Forwards picker focus requests.
parts/​chatView.ts Adds default picker-focus hooks.

💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/vs/sessions/contrib/chat/browser/newChatPickerKeybinding.ts
Comment thread src/vs/sessions/contrib/chat/browser/sessionsChatAccessibilityHelp.ts Outdated
Keep the resolving repository checkbox pointer-focus behavior and update the workspace-row structure assertion for the repository control host.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@meganrogge
Megan Rogge (meganrogge) force-pushed the agents/keybindings-folder-harness-picker branch from 8e5ec3d to 549a769 Compare September 21, 2026 20:45
Preserve legacy repository control ordering outside the full experiment, refresh menu contributions when either setting changes, and improve behavioral and accessibility coverage for picker keybindings.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep existing control placement inside new and running session chat inputs while retaining the experimental new-session workspace footer.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Roll back the recent full-width transparent footer and restore the original new-session control hierarchy while preserving the picker keybindings and repository controls.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remove the footer fill and align its controls with the chat input edges while retaining the restored input control hierarchy.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Apply the experimental composer hierarchy to running sessions and restore context usage to the input's top-right corner while keeping the legacy layout when the experiment is disabled.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@meganrogge
Megan Rogge (meganrogge) marked this pull request as ready for review September 21, 2026 21:29
@vs-code-engineering

vs-code-engineering Bot commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

📬 CODENOTIFY

The following users are being notified based on files changed in this PR:

Kyle Cutler (@kycutler)

Matched files:

  • extensions/vscode-api-tests/src/singlefolder-tests/browser.tools.test.ts

Joaquín Ruales (@jruales)

Matched files:

  • extensions/vscode-api-tests/src/singlefolder-tests/browser.tools.test.ts

Benjamin Christopher Simmonds (@benibenj)

Matched files:

  • src/vs/sessions/browser/parts/chatView.ts
  • src/vs/sessions/browser/parts/sessionView.ts

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: e8da91a2-46e1-4b3b-bb45-520dade3cb8d

@justschen Justin Chen (justschen) left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

i can't pull this branch quickly because it's from a fork - can we ensure a couple of things and test:

  1. no change when the exp is off
  2. no change in editor window chat panel and aux window chats
  3. long chat requests don't overlap with the context widget
  4. the branch codicon is too big and the gaps between icons for folder + vscode and the branch + branchname are not aligned
Screenshot 2026-09-21 at 2 48 42 PM
  1. same with the spacing here for model picker vs. harness picker - just a few pixels too much for the harness picker
Screenshot 2026-09-21 at 2 51 23 PM

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

Copilot-Session: e8da91a2-46e1-4b3b-bb45-520dade3cb8d
@meganrogge

Copy link
Copy Markdown
Collaborator Author

Addressed the four concerns from the review in 4c60ad8:

  1. Added regression coverage for all experiment-setting combinations so disabled settings preserve the existing layout.
  2. Scoped the running-session toolbar move to isSessionsWindow, with coverage showing editor/auxiliary windows and phone layouts keep the legacy secondary toolbar.
  3. Kept the 72px input-editor reservation and added coverage that it accommodates the expanded context-usage widget, so long requests wrap before it.
  4. Reduced the experimental repository/branch codicons to the compact codicon size.

Validation: ESLint, npm run transpile-client, 36 Agent Host picker tests, 6 composer-layout tests, and 60 Sessions chat-view tests.

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

@justschen Justin Chen (justschen) left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

just one small nit! thanks

Comment thread src/vs/sessions/contrib/chat/browser/newChatWidget.ts Outdated
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: e8da91a2-46e1-4b3b-bb45-520dade3cb8d
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

6 participants