fix(web-shell): align split view chat interactions - #6633
Conversation
|
Thanks for the PR! Template looks good ✓ Problem: observed UX gap — split-view panes are missing follow-up suggestions and prompt queuing that the single-chat view already supports. A second prompt submitted during an active turn gets rejected instead of queued. Playwright screenshots document the before/after behavior thoroughly. Direction: aligned — bringing split-view to feature parity with single-chat is clearly within scope. This is a straightforward consistency fix. Size: 127 production lines (95 in ChatPane.tsx, 32 in CSS), 222 test lines. Not applicable for core module checks — all changes in Approach: scope is minimal and focused. The PR reuses existing Moving on to code review. 🔍 中文说明感谢贡献! 模板完整 ✓ 问题:已观测到的 UX 差距——分屏窗格缺少单会话聊天已有的后续建议和消息队列功能。在活跃轮次期间提交的第二条消息被拒绝而非进入队列。Playwright 截图详细记录了修改前后的行为。 方向:对齐——将分屏视图与单会话聊天的功能保持一致,明确在项目范围内。这是一个直接的一致性修复。 规模:127 行生产代码(ChatPane.tsx 95 行,CSS 32 行),222 行测试代码。不涉及核心模块检查——所有更改在 方案:范围最小且聚焦。PR 复用了现有的 进入代码审查 🔍 — Qwen Code · qwen3.7-max |
Code ReviewThe implementation is clean and correct. The PR does exactly what it says — wires the existing Nothing flagged:
TestsAll 33 tests pass, including the new ones covering:
TypecheckReal-Scenario TestingN/A — this is a browser-based React UI change (split-view pane interactions). tmux testing applies to the CLI, not the web-shell. The PR includes Playwright screenshots demonstrating the fix end-to-end. 中文说明代码审查实现干净且正确。PR 完全如其所述——将现有的 未发现问题:
测试33 个测试全部通过,包括新增的空闲直接发送、忙碌入队、图片转发、断连阻止提交、后续建议接入、队列显示和编辑控件等测试。 类型检查无错误。 真实场景测试不适用——这是浏览器端 React UI 更改(分屏窗格交互)。tmux 测试适用于 CLI,不适用于 web-shell。PR 包含 Playwright 截图,端到端演示了修复效果。 — Qwen Code · qwen3.7-max |
|
This is a focused, well-executed UX consistency fix. The author correctly identified that split-view panes were missing two features the single-chat view already had (follow-up suggestions and prompt queuing) and wired the existing hooks in without inventing anything new. The code reuses The idle-vs-busy routing is the right approach: The CSS changes are minimal and consistent — removing the extra divider, aligning session action buttons to the primary-button treatment with proper disabled states. The PR's Playwright screenshots provide solid before/after evidence for a browser UI change where tmux testing doesn't apply. My independent proposal would have been identical: wire the existing hooks into ChatPane, add streaming-state-based routing, and pass queue/followup props through to ChatEditor. The PR matches this exactly. Approving. ✅ 中文说明这是一个聚焦且执行良好的 UX 一致性修复。作者正确识别出分屏窗格缺少单会话聊天已有的两个功能(后续建议和消息队列),并在不发明任何新东西的情况下接入了现有 hooks。代码完全按照设计复用了 空闲/忙碌路由是正确的方法: CSS 更改最小且一致——移除多余分隔线,将会话操作按钮对齐到主按钮样式并包含正确的禁用状态。 PR 的 Playwright 截图为浏览器 UI 更改提供了可靠的修改前后证据(tmux 测试不适用于此场景)。 我的独立方案完全相同:将现有 hooks 接入 ChatPane,添加基于流式状态的路由,并将队列/后续建议属性传递给 ChatEditor。PR 完全匹配。 批准 ✅ — Qwen Code · qwen3.7-max |
qwen-code-ci-bot
left a comment
There was a problem hiding this comment.
LGTM, looks ready to ship. ✅
499300d to
c240812
Compare
|
Please do not rebase or force-push to an active PR as it invalidates existing review comments. Note for future reference, the bots always squash all changes into a single commit automatically as part of the integration. 中文请勿对活跃的 PR 执行 rebase 或 force-push,因为这会使已有的评审评论失效。另外,供日后参考:作为集成流程的一部分,机器人始终会自动将所有改动压缩(squash)为单个提交。 |
|
@qwen-code /triage |
wenshao
left a comment
There was a problem hiding this comment.
No review findings. Downgraded from Approve to Comment: CI failing: Post Coverage Comment, web-shell E2E Smoke (ubuntu-latest, Node 22.x).
— qwen3.7-max via Qwen Code /review
qwen-code-ci-bot
left a comment
There was a problem hiding this comment.
LGTM, looks ready to ship. ✅
qwen-code-ci-bot
left a comment
There was a problem hiding this comment.
LGTM ✅ — no blockers found. The idle/busy routing, follow-up suggestion wiring, and prompt queue integration are all clean. Tests cover the key paths well.
— qwen3.7-max via Qwen Code /review
What this PR does
This PR brings split-view chat panes in line with the normal single-chat interaction model. Each pane now displays and accepts follow-up suggestions, sends prompts directly while idle so the loading state appears immediately, and queues additional prompts while that pane is already running. Queued prompts are visible and retain the same edit, insert, remove, and clear controls as the main chat.
It also removes the extra divider above each pane composer and updates the split-view session actions to use the existing primary-button visual treatment.
Why it's needed
Split-view panes previously omitted follow-up suggestions and attempted to send every prompt directly. As a result, a second prompt submitted during an active turn was rejected instead of entering the queue, and the split experience behaved differently from the single-chat view. The final idle-versus-busy routing preserves immediate loading feedback without losing queue support.
Reviewer Test Plan
How to verify
Evidence (Before & After)
Before: split panes did not show follow-up suggestions, and prompts submitted during an active turn did not enter the queue.
After: split panes use the same follow-up and queued-prompt interactions as the single-chat view, while idle submissions still enter loading immediately.
Screenshots (Automated Testing)
The following screenshots were captured using Playwright headless browser to verify the fixes:
Split View Entry
01-session-overview.png- Session overview page with action buttons02-split-view-entry.png- Entering split view via the "分屏" button03-add-pane-picker.png- Session picker for adding panes04-split-one-pane.png- Single pane in split view (no extra divider above composer)05-split-two-panes.png- Two panes side by sideQueue Message Functionality
06-pane-prompt-typed.png- Typing a prompt in a pane07-pane-loading-state.png- Loading state appears immediately after sending08-pane-queued-typed.png- Typing a second message while the pane is running09-pane-queued-visible.png- Queued message visible with edit/insert/remove/clear controlsResponse Complete
10-pane-response-complete.png- Response completed, composer returns to normal11-overview-action-buttons.png- Back to overview showing primary-button treatmentScreenshots location:
.qwen/pr-screenshots/Tested on
Environment (optional)
Local macOS workspace with the web-shell unit tests, monorepo build, and workspace typecheck. Automated screenshots captured using Playwright 1.61.1.
Risk & Scope
Linked Issues
N/A
中文说明
本 PR 做了什么
本 PR 让分屏聊天窗格与普通单会话聊天保持一致。每个窗格现在都可以展示和接受后续建议;空闲时直接发送消息,使 loading 状态立即出现;该窗格正在执行时,后续消息会进入队列。队列中的消息可见,并支持与主聊天相同的编辑、插入、删除和清空操作。
同时移除了每个分屏输入区上方多余的分隔线,并将分屏相关的会话操作按钮调整为项目现有的主按钮样式。
为什么需要
此前分屏窗格没有接入后续建议,并且所有消息都会尝试直接发送。因此,在当前轮次执行期间提交第二条消息时,消息会被拒绝而不是进入队列,分屏体验与单会话聊天不一致。最终采用空闲与执行中分流的方式,在支持队列的同时保留立即出现 loading 的反馈。
Reviewer 测试计划
如何验证
证据(修改前后)
修改前:分屏窗格不显示后续建议,执行期间提交的消息不会进入队列。
修改后:分屏窗格使用与单会话聊天相同的后续建议和消息队列交互,同时空闲发送仍会立即进入 loading。
截图(自动化测试)
使用 Playwright 无头浏览器捕获以下截图来验证修复:
进入分屏视图
01-session-overview.png- 会话总览页面,显示操作按钮02-split-view-entry.png- 通过"分屏"按钮进入分屏视图03-add-pane-picker.png- 添加窗格的会话选择器04-split-one-pane.png- 分屏中的单个窗格(composer 上方没有多余分隔线)05-split-two-panes.png- 两个窗格并排显示队列消息功能
06-pane-prompt-typed.png- 在窗格中输入消息07-pane-loading-state.png- 发送后立即显示加载状态08-pane-queued-typed.png- 在窗格执行期间输入第二条消息09-pane-queued-visible.png- 队列消息可见,带有编辑/插入/删除/清空控件响应完成
10-pane-response-complete.png- 响应完成,composer 恢复正常11-overview-action-buttons.png- 返回总览页面,显示主按钮样式截图位置:
.qwen/pr-screenshots/测试平台
环境(可选)
本地 macOS 工作区,执行了 web-shell 单元测试、monorepo build 和 workspace typecheck。使用 Playwright 1.61.1 捕获自动化截图。
风险与范围
关联 Issue
N/A