feat(chat): add comment support for selection quotes - #3701
Conversation
Signed-off-by: MaxxxDong <dongwijun@gmail.com>
|
| Filename | Overview |
|---|---|
| packages/maker-shared/src/chatQuotes.ts | 显式评论边界及可逆内容转义修复了多行泄漏和正文前缀误判,未发现仍可达的协议缺陷。 |
| packages/maker-shared/src/tests/chatQuotes.test.ts | 覆盖多行与空行、尾随换行、结构标记冲突、source-like 内容及新旧 wire 兼容。 |
| apps/desktop/src/renderer/components/chat/SelectionQuoteButton.tsx | 捕获并校验 session/source 上下文,同时在边界变化时清理旧 anchor 与评论草稿。 |
| apps/desktop/src/renderer/tests/selectionQuoteButton.interaction.test.tsx | 验证选区塌缩期间保留编辑器、session 变化后清理状态以及向捕获上下文提交评论。 |
| apps/mobile/src/session/QuoteCommentSheet.tsx | 提供 Mobile 触屏评论交互;本次 follow-up 未发现与既有三个线程相关的残留问题。 |
Reviews (2): Last reviewed commit: "fix(chat): address selection quote comme..." | Re-trigger Greptile
|
@MaxxxDong 👋 这个 PR 还有 3 条 review conversation 没 resolve(packages/maker-shared/src/chatQuotes.ts / apps/desktop/src/renderer/components/chat/SelectionQuoteButton.tsx),auto-review 因此暂时跳过、没法继续审查 / 合并。 如果你已经按评论改完或回应了,请到对应 thread 上点 Resolve conversation;全部 resolve 后,下一轮 auto-review 会自动重新审查这个 PR。 |
|
这个 PR 会给划词引用加上评论能力,已进入维护者确认,球不在作者手里。 请维护者直接在 PR 上 Approve;需要修改就 Request Changes。讨论 issue:#3718 |
|
命中 UI 路径(QuoteChip / SelectionQuoteButton / ComposerQuoteNode)但 description 未附界面效果证据——建议补充改动后效果:截图/录屏,或改动后界面的 HTML 页面,便于确认界面符合 DESIGN.md 设计规范。 |
Signed-off-by: MaxxxDong <dongwijun@gmail.com>
|
已在
证据边界:Mobile 使用真实 iOS Simulator + 仓库内置 visual fixture,不包含生产凭证;Mobile 录屏中的 iOS 原生菜单可能出现黑帧,因此逐场景截图是主要 UI 证据。Desktop 录屏中的较早 English/Korean 文案由 PR description 中的最终截图取代。 三条 review conversation 将分别回复对应修复和测试后 resolve,随后请重新触发 auto-review;通过后仍需维护者完成 #3718 要求的产品意图确认与 Approve。 |
|
@MagicLizi 最新的 PR body edited workflow 正在等待 fork workflow approval:https://github.com/makecindy/cindy/actions/runs/33514889245。麻烦只批准这个最新 run;旧的 33508433771 使用更新前的冻结 payload,请不要再重跑,以免同一 concurrency group 再次取消新 run。谢谢! |
|
@greptileai Please re-review the latest commit |
|
@MaxxxDong 👋 这个 PR 目前与 请在本地 merge 最新的 |
这次改了什么
摘要
为 Desktop 与 Mobile 的“选中文字 → 添加到对话”流程增加可选评论:用户可以在引用前补充自己的意图,评论、原文和来源会作为同一个引用进入 composer,并在发送、历史恢复和两端展示时保持一致。
根据 review 在
34f2f83中补齐了协议结构边界、跨 session/source 状态约束、Mobile 触屏评论界面、旧客户端兼容与定向测试;原有不带评论的引用行为保持不变。变更类型
feat新功能fix缺陷修复refactor/perf重构或性能优化docs/test/chore文档、测试或工程维护范围
ChatQuote.comment语义与结构化 wire boundary;Desktop 选区评论浮层、composer atom/chip、历史恢复;Mobile 原生选区菜单后的评论 sheet、草稿持久化、composer 比较/发送/历史恢复;五语言文案和回归测试。UI 变化
Desktop
Mobile(iOS Simulator)
docs/design-rules/DESIGN.md§4 Component Stylings(复用既有容器、输入与按钮形态)、§5 Layout Principles(间距与浮层不遮挡选区)、§10 Light / Dark Dual-Mode Delivery Gate 与 token 规则(两种模式均验证、复用主题 token)、§11 Voice & Content(zh-CN / zh-TW / en / ja / ko 文案对齐)、§14.1–14.3 Interaction Conventions(文本选择、focus/选区塌缩、Shift+Enter 多行输入)。怎么验证的
自动验证
覆盖的协议/状态场景包括:单行、多行、内部空行、尾随换行、空评论、评论或引用正文包含
— comment:、source-like 文本、多个不同评论交错、发送/历史恢复、发送失败恢复、selection collapse、session/source 变化以及新旧 wire 兼容。手工验证
34f2f83),Xcode 26.6 / iOS 26.5 / iPhone 17 Pro Simulator / CocoaPods 1.17.0;使用对应 Metro 和__DEV__visual fixture build,验证系统选择菜单、评论 sheet、commented chip、Light/Dark、五语言及真实路由跨 session 清理。visual fixture 不含生产凭证,也不冒充真实服务端提交。6e114a3上执行实际旧 parser、Desktop history/React QuoteChip 和 Mobile persisted-store smoke;均不崩溃、不丢 selected text/source/comment payload/reply body。未执行的验证
风险
风险分类
影响与回滚
ChatQuotewire parsing/formatting、Desktop/Mobile composer quote 状态与 UI。无数据库、权限、原生依赖或 runtime fingerprint 变化。ChatQuote.comment、发送和历史恢复语义;Desktop 使用选区浮层,Mobile 使用系统选择菜单 + 触屏 sheet,平台交互允许不同。提交前检查
git commit -s,见 DCO)