Skip to content

【建议】ask_user_question 卡片支持折叠与浮窗(可拖拽),避免遮挡对话面板 #622

Description

@yunsheng111

提问卡片(ask_user_question)仍然挤占/遮挡对话面板

关联:#285(已关闭的"挡字"问题)

背景

#285 关闭时上游的修复是把卡片限制为 max-h-[88svh]、正文内部滚动。但在实践中,卡片悬浮在输入框上方时仍然会挤压消息列表的可见区域,长对话时用户看不到自己正在回复的消息流;卡片本身也没有任何办法收起或移开,只能等 Agent 提交/跳过。

本 fork 的改进方案(已实现,见对应 PR)

AskQuestionCard 上增加了两个互不影响的布局控制,把"面板所有权"交还给用户:

  1. 折叠 (Collapse) — 一键把实时卡片收缩成仅标题行(带展开箭头),问题保持 pending 可见,Agent 阻塞在回答上时用户不会被蒙在鼓里;
  2. 浮窗 (Float / Picture-in-Picture) — 用 createPortal 把卡片从消息流中取出,变成视口固定、可拖拽的迷你窗口,拖拽全程 clamp 在视口内(8px 安全边距);再点一次"停回面板"恢复原位。

其他细节:

  • 折叠/浮窗状态在同一个实例被换题时保留(用户选择的布局不因新题目渲染而重置);
  • 只读/已作答视图(消息流里的记录卡片)不显示这两个控件;
  • 13 个语言文件同步新增 collapse / expand / float / dock 文案;
  • 30 个单测覆盖折叠、浮窗、拖拽 clamp、换题状态保留等行为,全部通过。

期望

  • 若方案被采纳:折叠/浮窗成为提问卡的通用交互,替代"整个卡片固定在输入框上方"的现状;
  • 若作者有不同设计取向(比如只做折叠、或改挂到侧边栏),也欢迎以本 PR 为讨论起点。

截图/演示视频可按需补充。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions