qwen-code/packages/web-shell/client/components
samuelhsin 26600896d5
feat(web-shell): add split pane header action slot with overflow (#7808)
* feat(web-shell): add split pane header action slot with overflow

Let hosts render per-session actions in each split pane header, collapsing them into a … menu when the pane is too narrow.

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs(web-shell): add pane header actions PR screenshots

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(web-shell): tighten pane header overflow measurement

Drop the per-render children effect dependency that rebuilt ResizeObserver during streaming, and reserve workspace-tag width when computing available header space.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(web-shell): address pane header overflow review blockers

Mount host actions in only one tree, and wrap overflow entries as DropdownMenuItems so Radix selection and keyboard navigation work.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(web-shell): keep pane header actions alive across overflow

Flatten Fragment host actions before building the overflow menu, and keep the same host instances mounted when collapsing so stateful actions are not reset.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(web-shell): address pane header overflow review suggestions (#7808)

* fix(web-shell): proxy overflow clicks via action slots

Wrap host pane actions in stable slots so the overflow menu can activate interactive descendants without requiring opaque custom components to forward internal data attributes.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(web-shell): address overflow menu review suggestions (#7808)

* fix(web-shell): harden pane header overflow actions (#7808)

Restore the 8px gap between the built-in maximize/close controls, ignore
aria-hidden glyphs when labelling overflow items, omit non-interactive
children from the overflow menu, and document the popover constraint on
renderHeaderActions. Refreshes the design doc to match the mount-once
implementation.

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: qwen-code-ci-bot <qwen-code-ci-bot@users.noreply.github.com>
Co-authored-by: Qwen Code Bot <qwen-code-bot@users.noreply.github.com>
Co-authored-by: qwen-code-dev-bot <qwen-code-dev@service.alibaba.com>
Co-authored-by: Qwen Code Autofix <qwen-code-autofix@users.noreply.github.com>
2026-07-29 13:06:48 +00:00
..
agents feat(web-shell): add workspace agent management (#7572) 2026-07-23 08:42:08 +00:00
artifacts fix(web-shell): prefer artifact type metadata in cards (#7973) 2026-07-29 07:57:45 +00:00
channels fix(web-shell): polish Channel pairing requests (#7997) 2026-07-29 06:36:10 +00:00
dialogs feat(web-shell): add git branch picker, commit dialog, and create PR flow (#7731) 2026-07-28 14:25:11 +00:00
extensions feat(web-shell): add workspace agent management (#7572) 2026-07-23 08:42:08 +00:00
mcp feat(web-shell): add workspace agent management (#7572) 2026-07-23 08:42:08 +00:00
messages feat(web-shell): refine advanced table controls (#7999) 2026-07-29 07:37:30 +00:00
panels feat(web-shell): add bottom status items (#6613) 2026-07-09 14:58:39 +00:00
plugins feat(web-shell): add workspace agent management (#7572) 2026-07-23 08:42:08 +00:00
sidebar feat(web-shell): add git branch picker, commit dialog, and create PR flow (#7731) 2026-07-28 14:25:11 +00:00
skills feat(web-shell): add workspace agent management (#7572) 2026-07-23 08:42:08 +00:00
ui feat(web-shell): add workspace agent management (#7572) 2026-07-23 08:42:08 +00:00
AtMentionPanel.test.tsx feat(web-shell): add context mention customization (#6578) 2026-07-10 08:46:43 +00:00
AtMentionPanel.tsx feat(web-shell): add shadcn UI foundation (#6760) 2026-07-12 13:51:52 +00:00
BranchPickerPopover.module.css feat(web-shell): add git branch picker, commit dialog, and create PR flow (#7731) 2026-07-28 14:25:11 +00:00
BranchPickerPopover.test.tsx feat(web-shell): add git branch picker, commit dialog, and create PR flow (#7731) 2026-07-28 14:25:11 +00:00
BranchPickerPopover.tsx feat(web-shell): add git branch picker, commit dialog, and create PR flow (#7731) 2026-07-28 14:25:11 +00:00
ChatEditor.module.css fix(web-shell): reduce composer input latency (#8015) 2026-07-29 08:06:53 +00:00
ChatEditor.test.tsx feat(web-shell): suggest BTW for side questions (#7935) 2026-07-28 15:55:09 +00:00
ChatEditor.tsx feat(web-shell): suggest BTW for side questions (#7935) 2026-07-28 15:55:09 +00:00
ChatPane.module.css feat(web-shell): add split pane header action slot with overflow (#7808) 2026-07-29 13:06:48 +00:00
ChatPane.test.tsx feat(web-shell): add split pane header action slot with overflow (#7808) 2026-07-29 13:06:48 +00:00
ChatPane.tsx feat(web-shell): add split pane header action slot with overflow (#7808) 2026-07-29 13:06:48 +00:00
Editor.keymap.test.ts feat(web-shell): add Option+Enter and Cmd+Enter newline shortcuts (#5005) 2026-06-12 13:07:56 +08:00
Editor.module.css fix(web-shell): use theme color for @ group titles (#6294) 2026-07-04 03:16:01 +00:00
ErrorBoundary.test.tsx feat(web-shell): add error boundaries so a render crash can't white-screen the embed (#5943) 2026-06-28 01:12:42 +00:00
ErrorBoundary.tsx feat(web-shell): add error boundaries so a render crash can't white-screen the embed (#5943) 2026-06-28 01:12:42 +00:00
GitBranchIndicator.test.tsx feat(web-shell): git status chip, visual working-tree diff, and sidebar git status (#7054) 2026-07-18 10:06:07 +00:00
GitBranchIndicator.tsx feat(web-shell): add git branch picker, commit dialog, and create PR flow (#7731) 2026-07-28 14:25:11 +00:00
GitModePopover.module.css feat(web-shell): add git mode selector for new session creation (#7471) 2026-07-24 03:48:43 +00:00
GitModePopover.test.tsx feat(web-shell): add git mode selector for new session creation (#7471) 2026-07-24 03:48:43 +00:00
GitModePopover.tsx fix(web-shell): keep git mode popover open when picking branch/worktree (#7668) 2026-07-24 12:36:34 +00:00
InsightProgress.module.css fix(web-shell): fix InsightProgress layout and clean up UI elements (#6115) 2026-07-01 09:00:57 +00:00
InsightProgress.tsx feat(daemon): merge daemon-mode feature batch into main (#4490) 2026-06-12 00:34:49 +08:00
InsightReady.tsx feat(daemon): merge daemon-mode feature batch into main (#4490) 2026-06-12 00:34:49 +08:00
MessageItem.dom.test.tsx feat(daemon): add stateless generation SSE (#6947) 2026-07-16 00:00:08 +00:00
MessageItem.tsx feat(daemon): add stateless generation SSE (#6947) 2026-07-16 00:00:08 +00:00
MessageList.dom.test.tsx fix(web-shell): render task notifications as system messages (#7822) 2026-07-27 09:15:18 +00:00
MessageList.module.css perf(web-shell): optimize long session rendering (#7408) 2026-07-22 03:28:47 +00:00
MessageList.test.ts perf(web-shell): optimize long session rendering (#7408) 2026-07-22 03:28:47 +00:00
MessageList.tsx fix(web-shell): render task notifications as system messages (#7822) 2026-07-27 09:15:18 +00:00
MessageLocateFlash.module.css fix(web-shell): polish scheduled task timeline UI (#6386) 2026-07-07 04:04:28 +00:00
MessageTimestamp.module.css feat(web-shell): polish chat UI and table rendering (#6099) 2026-07-01 16:20:19 +08:00
MessageTimestamp.test.tsx feat(web-shell): show message time on hover (#5079) 2026-06-13 15:30:44 +08:00
MessageTimestamp.tsx feat(web-shell): polish chat UI (#5893) 2026-06-26 15:38:23 +00:00
ModeIcon.module.css feat(web-shell): polish chat UI (#5893) 2026-06-26 15:38:23 +00:00
ModeIcon.tsx feat(web-shell): polish chat UI (#5893) 2026-06-26 15:38:23 +00:00
PaneHeaderActions.test.tsx feat(web-shell): add split pane header action slot with overflow (#7808) 2026-07-29 13:06:48 +00:00
PaneHeaderActions.tsx feat(web-shell): add split pane header action slot with overflow (#7808) 2026-07-29 13:06:48 +00:00
PromptChevron.tsx feat(daemon): merge daemon-mode feature batch into main (#4490) 2026-06-12 00:34:49 +08:00
QueuedPromptDisplay.test.tsx fix(web-shell): restore context tags in queued and recalled prompts (#7312) 2026-07-21 12:59:29 +00:00
QueuedPromptDisplay.tsx fix(web-shell): restore context tags in queued and recalled prompts (#7312) 2026-07-21 12:59:29 +00:00
RootErrorFallback.test.tsx feat(web-shell): add error boundaries so a render crash can't white-screen the embed (#5943) 2026-06-28 01:12:42 +00:00
RootErrorFallback.tsx feat(web-shell): add error boundaries so a render crash can't white-screen the embed (#5943) 2026-06-28 01:12:42 +00:00
SessionOverviewPanel.module.css feat(web-shell): color-code each split pane by workspace (#6971) 2026-07-16 02:38:58 +00:00
SessionOverviewPanel.test.tsx feat: support workspace display names (#7179) 2026-07-20 15:16:44 +00:00
SessionOverviewPanel.tsx feat: support workspace display names (#7179) 2026-07-20 15:16:44 +00:00
ShadowDomBoundary.tsx feat(web-shell): add selective shadow DOM isolation (#7551) 2026-07-23 02:54:12 +00:00
SplitView.module.css feat(web-shell): maximize a single split pane (#6951) 2026-07-15 12:10:29 +00:00
SplitView.test.tsx feat(web-shell): add split pane header action slot with overflow (#7808) 2026-07-29 13:06:48 +00:00
SplitView.tsx feat(web-shell): add split pane header action slot with overflow (#7808) 2026-07-29 13:06:48 +00:00
StatusBar.module.css feat(web-shell): add a workspace Goals page, and stop losing /goal on daemon resume (#6561) 2026-07-18 08:52:07 +00:00
StatusBar.test.tsx feat(web-shell): add a workspace Goals page, and stop losing /goal on daemon resume (#6561) 2026-07-18 08:52:07 +00:00
StatusBar.tsx fix(web-shell): sync background agent status (#7561) 2026-07-23 06:35:04 +00:00
StreamingStatus.module.css feat(web-shell): polish chat UI (#5893) 2026-06-26 15:38:23 +00:00
StreamingStatus.test.tsx fix(cli): align memory dialog with managed memory (#6434) 2026-07-09 01:04:56 +00:00
StreamingStatus.tsx fix(web-shell): hide rotating loading phrase in split-view pane status (#6447) 2026-07-07 11:32:59 +00:00
Tips.module.css feat(web-shell): polish chat UI (#5893) 2026-06-26 15:38:23 +00:00
Tips.tsx feat(daemon): merge daemon-mode feature batch into main (#4490) 2026-06-12 00:34:49 +08:00
ToastHost.module.css fix(web-shell): improve disconnected composer handling (#6166) 2026-07-02 07:05:55 +00:00
ToastHost.tsx Add harness infrastructure for web-shell package (#6517) 2026-07-09 08:11:58 +00:00
toolbarDropdown.test.ts feat(web-shell): use popovers for composer controls (#6877) 2026-07-15 04:54:47 +00:00
toolbarDropdown.ts feat(web-shell): use popovers for composer controls (#6877) 2026-07-15 04:54:47 +00:00
TurnCollapseRow.module.css feat(web-shell): polish chat UI and table rendering (#6099) 2026-07-01 16:20:19 +08:00
WebShellTranscript.dom.test.tsx perf(web-shell): optimize long session rendering (#7408) 2026-07-22 03:28:47 +00:00
WebShellTranscript.test.tsx feat(webshell): replay ChatRecord history in readonly WebShell (#6999) 2026-07-19 00:09:44 +00:00
WebShellTranscript.tsx fix(web-shell): isolate component styles from host CSS (#7466) 2026-07-22 02:21:17 +00:00
WelcomeHeader.module.css feat(web-shell): polish chat UI (#5893) 2026-06-26 15:38:23 +00:00
WelcomeHeader.tsx feat(web-shell): polish chat UI (#5893) 2026-06-26 15:38:23 +00:00
WorkspaceAccent.module.css feat(web-shell): color-code each split pane by workspace (#6971) 2026-07-16 02:38:58 +00:00
WorkspaceIndicator.test.tsx feat(web-shell): color-code each split pane by workspace (#6971) 2026-07-16 02:38:58 +00:00
WorkspaceIndicator.tsx feat(web-shell): color-code each split pane by workspace (#6971) 2026-07-16 02:38:58 +00:00
WorkspaceSelector.test.tsx feat(web-shell): add workspace selector button with add/switch dropdown in composer toolbar (#7390) 2026-07-22 01:10:18 +00:00
WorkspaceSelector.tsx fix(web-shell): polish embedded shell interactions (#7477) 2026-07-22 05:21:50 +00:00
WorkspaceSessionProvider.tsx fix(web-shell): initialize workspace selector from ID (#7518) 2026-07-23 11:29:40 +00:00
WorkspaceUnavailableState.tsx feat(web-shell): modernize multi-workspace sidebar (#6804) 2026-07-13 11:45:20 +00:00