Skip to content

[6212] Chat 标签页附件上传:%chat 协议 v2 字段与附件 UI - #4718

Closed
PinkMagicFly wants to merge 5 commits into
mainfrom
pigmagicfly/6212/chat-protocol-v2-attachments
Closed

PinkMagicFly wants to merge 5 commits into
mainfrom
pigmagicfly/6212/chat-protocol-v2-attachments

Conversation

@PinkMagicFly

@PinkMagicFly PinkMagicFly commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

任务

6212:Chat 标签页附件上传。任务文档见 dev-agent PR:https://github.com/LiiiLabs/dev-agent/pull/121

What

  1. %chat 协议 v2(Scheme):<chat-input> 记录新增 images/attachments 两字段;chat-input->json 输出两个顶层数组(空表恒输出空数组,字段恒在);chat-tab-tree->plain-text 先剥离 image 节点再 LaTeX 序列化;chat-tab-send 扩展为 8 参单入口(尾参 images/attachments,二进制与 scheme 插件同包发布,不留旧 arity 兼容入口)。
  2. 附件 UI(Qt):输入区工具条新增 📎 附件按钮(复用 make_toggle_btn 样式,非 checkable),点击打开文件多选;附件以 chips 展示在输入框外部上方,左对齐贴合(每行 QHBoxLayout + 行尾 stretch)、一行放不下向上换行叠加,chip 含文件名 + 大小 + ✕ 删除;隐藏态换行宽度取父容器 inputArea 宽度(修复首次多选时 chips 竖向叠加)。
  3. 本地预检:扩展名白名单(文档 + 常见源码,单源维护同时驱动文件过滤器与预检)、每轮数量上限 10 个、每轮总大小上限 80 MiB(均含已选累计);违规 toast 原因、不入 chips。
  4. 下发:onSendRequested 经 chat-tab-send 下发 attachments alist 数组(每项 path/filename/size),发送成功后清空 chips,失败保留;附件状态由面板唯一持有(不持久化到 manifest),Generating 态禁用 📎。

验证

  • xmake r qt_chat_controller_test:37/37 通过(预检白名单/数量/总大小边界)
  • xmake r qt_chat_tab_widget_test:135/135 通过(附件大小格式化等)
  • xmake r chat-protocol-test:21/21 通过(协议 v2 JSON 编码、图片剥离、附件下发)
  • xmake r chat-tree-ops-test / chat-list-test:3/3、91/91 无回归
  • gf fmt --check 全仓通过
  • GUI 手动验收(chips 首次多选横向排列/换行、预检 toast、线格式抽查)待人工确认

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.

1 participant