| phase |
plan |
type |
wave |
depends_on |
files_modified |
autonomous |
gap_closure |
requirements |
must_haves |
| 07-phase-06-mention-upload |
02 |
execute |
1 |
|
| frontend/src/components/workspace/artifacts/artifact-file-list.tsx |
| frontend/src/components/workspace/messages/message-list-item.tsx |
| frontend/src/core/threads/hooks.ts |
| frontend/src/core/threads/priority-hint.ts |
| frontend/src/core/messages/utils.ts |
| frontend/src/core/threads/hooks.test.ts |
| frontend/tests/e2e/input-and-compose.spec.ts |
|
true |
true |
|
| truths |
artifacts |
| 右键仅打开 ContextMenu,不会在未点击‘引用’前触发引用动作。 |
| 拼接提示统一为‘XClaw优先使用...’,并在消息区剥离该后缀。 |
| 提交态拼接 Skill 标识使用 skill_id,不使用 skill 的展示名。 |
|
| path |
provides |
contains |
| frontend/src/components/workspace/artifacts/artifact-file-list.tsx |
ContextMenu 引用动作改为显式点击触发 |
ContextMenuItem reference handler |
|
| path |
provides |
contains |
| frontend/src/core/threads/hooks.ts |
skill_id 拼接入 submitText |
selected skills mapping |
|
| path |
provides |
contains |
| frontend/src/core/messages/utils.ts |
XClaw 前缀剥离 |
stripPriorityHintSuffix |
|
|
|
关闭 07-UAT 中 3 个 gap
:ContextMenu 自动引用、拼接前缀不够独特、Skill 使用 title 而非 id。
Purpose: 让提示拼接语义更可追踪,避免误触引用,同时保持 UI 展示与提交 payload 语义解耦。
Output: 修复提交链路与右键引用交互,并补齐回归测试。
Task 1: 修复 ContextMenu 引用误触发
frontend/src/components/workspace/artifacts/artifact-file-list.tsx, frontend/src/components/workspace/messages/message-list-item.tsx
将“引用”动作从易误触发的 `onSelect` 路径收敛到显式点击触发;确保仅在用户明确选择“引用”菜单项时才 dispatch mention event。
- 右键打开菜单时不会自动触发引用。
- 菜单项点击后才触发引用并回填输入区。
Task 2: 拼接前缀改为 XClaw优先使用
frontend/src/core/threads/priority-hint.ts, frontend/src/core/messages/utils.ts, frontend/src/core/threads/hooks.test.ts
将提示前缀从“优先使用”统一替换为“XClaw优先使用”
,并同步更新消息区剥离逻辑与单测断言。
- 请求 payload 中出现“XClaw优先使用【...】”。
- 消息区仍不显示该后缀。
- 单测全部通过。
Task 3: Skill 提示使用 skill_id
frontend/src/core/threads/hooks.ts, frontend/tests/e2e/input-and-compose.spec.ts
提交文本组装时将 Skill 输入源改为 `selectedSkills.skill_id`,不要使用 `title`。补充/调整 E2E 断言验证请求体中的 skill_id 出现。
- 拼接中 Skill 部分使用 id 列表。
- 发送按钮与回车路径行为一致。
- `cd frontend && node --test src/core/threads/hooks.test.ts`
- `cd frontend && pnpm -s typecheck`
- `cd frontend && pnpm -s test:e2e --grep "DF-INPUT-008A|reference|context menu"`
<success_criteria>
- 07-UAT 提到的 3 条 gap 在代码和测试层均可回归。
- 形成可直接执行的 gap closure 计划。
</success_criteria>