选中文字后松开指针,在选区上方显示两个相邻操作。拖动期间工具栏保持隐藏;重新按下指针或取消选区时隐藏,也支持完成的键盘选区。“加入当前聊天”把选区追加到当前草稿;“在新分支聊”签出所选对话消息,重新加载该会话,并把选区追加到该会话的草稿。下一次显式发送创建兄弟分支,保留已有历史。签出失败时草稿不变并显示错误;等待签出时两个操作均不可用。工具栏采用紧凑的 28 px 操作、3 px 外边距、8 px 圆角、细边框和阴影;两个同样圆角的操作目标之间有短分隔线,背景使用不透明的主题 popover 表面。悬停和按下状态混合实色主题颜色,不替换成透明覆盖。键盘焦点有可见轮廓。消息操作行也支持引用整条消息。引用作为 Markdown 引用块追加到所属对话草稿,并聚焦其输入框。保留已有草稿和附件,发送仍由用户明确操作。
历史用户消息通过内联输入框编辑,与底部输入框共用文本字段、文件提及、附件处理和预览。可以移除已有附件,选择、粘贴或拖入图片和文档。URL 保持可编辑文本。取消只丢弃本次编辑。“保存并重新发送”通过已有编辑接口创建兄弟分支。错误保留编辑内容并显示可重试提示。
参考:用户提供的 Codex 选区截图定义了选区操作;不声称外部产品能力对齐。独立侧边聊天窗口不在本次范围内。
消息行引用操作和两个选区操作使用共享 animated-icons 组件。GitBranchIcon 保留现有 pqoqubbw/icons 实现。上游目录没有 Quote 组件,因此 QuoteIcon 遵循已有 Monitor 和 Pin 回退方式:官方 Lucide 图形、共享 start/stop 接口,以及已有 CopyIcon 弹簧与平移动画。不编写 SVG 路径或新增动画风格。整个按钮在指针悬停和键盘聚焦时驱动动画;既无悬停也无焦点时恢复静止。禁用控件和减少动态效果用户看到静态图标。保留已有尺寸、颜色、表面、草稿更新、会话归属及分支请求。
限定计划:添加共享 QuoteIcon 和聊天操作动画 hook;连接已有操作行及选区工具栏;在正常和减少动态效果下,通过真实组件的引用/编辑浏览器测试验证,再执行聊天 UI、可访问性、TypeScript 和文档链接检查。运行时、输入框语义、后端 API 与无关界面不在范围内。集成前进行独立规格和质量审查;本次源码修改不更新已安装 App。
每个面板的会话归属明确。上传数据使用已有的有界附件持久化和图片分发流程。保留图片副本通过授权 raw-file API 读取;旧附件文本保持无损。不自动发送,不新增权限模式。
检查要求:引用草稿保留和分屏归属、内联附件编辑及失败保留的针对性浏览器交互测试;REST 编辑附件验证和分发测试;TypeScript;文档链接;标准本地刷新期间的生产构建。独立规格与质量审查先于集成。
图标一致性状态:源码修改和正常/减少动态效果的两个浏览器用例已验证。TypeScript、聊天 UI 和文档链接通过。全局可访问性检查仍受未修改的 canvas-controls role-button 键盘事件缺失影响,已在任务基线复现。独立规格和质量审查通过。集成与生产构建尚未进行,已安装 App 保持原状。
已有引用编辑状态:规格和质量审查通过。6 项 REST 附件用例、分屏浏览器交互测试(包括保留和粘贴图片)、13 项已有附件用例、本地附件路径契约、TypeScript 和文档链接通过。生产打包使用标准本地 App 刷新。