优化: AI Chat 消息视图: 闪烁修复+骨架统一+过程卡降级+任务关联 chip
MessageList.vue:
1. 流式闪烁修复: _mdRenderKey 稳定化 + key 对齐, 消除流式重渲染抖动
2. 骨架统一: 过程步骤卡改用 trace 卡骨架(头部一行摘要 + 正文增量)
3. 过程卡视觉降级: 缩进收窄 + 紧贴结果, 弱化过程突出结论
4. 消息任务关联: TASK_REF_TOOLS 映射(advance_task/run_workflow) 从
toolCalls[].args 派生任务 chip, 零数据模型改动(单一事实源), 无任务工具
的消息不渲染 chip; 新增 .ai-trace-task-chip 样式 + go-to-task emit
AiChat.vue: goToTask(taskId) 接参, router.push('/tasks?taskId=xxx')
Tasks.vue: applyRouteTaskId 消费 query.taskId 自动开抽屉(onMounted 跨路由 +
watch 同路由), 消费后 router.replace 清 query 保持 URL 干净
i18n zh/en: aiChat.goToTaskHint + ai.trace.taskRef 双语补键
验收: vue-tsc --noEmit EXIT 0 + build EXIT 0。
This commit is contained in:
@@ -113,6 +113,7 @@ export default {
|
||||
examplePrompt4: 'Generate a project idea',
|
||||
goToSettings: 'Open settings',
|
||||
goToSettingsHint: 'The detached window cannot open settings directly. Configure AI providers on the main window’s Settings page.',
|
||||
goToTaskHint: 'The detached window cannot open tasks directly. View task details in the main window.',
|
||||
|
||||
// ── Provider switch feedback ──
|
||||
providerSwitched: 'Switched to {model}',
|
||||
@@ -136,12 +137,12 @@ export default {
|
||||
clearSkill: 'Clear skill',
|
||||
skillBadgeTip: 'Injected full skill playbook: {name}',
|
||||
placeholderWithSkill: 'Skill selected. Type arguments and press Enter',
|
||||
placeholderDefault: "Type a message... (/ for skills, @ to mention)",
|
||||
placeholderDefault: "Type a message... (/ for skills, @ to mention)",
|
||||
skillNoMatch: 'No matching skill',
|
||||
skillNotLoaded: 'No local skills loaded',
|
||||
|
||||
// ── @ entity mention (@ opens popover, select inserts [Type:Name] token) ──
|
||||
mentionHint: "@ to mention project/task",
|
||||
mentionHint: "@ to mention project/task",
|
||||
mentionGroupProject: 'Projects',
|
||||
mentionGroupTask: 'Tasks',
|
||||
mentionGroupIdea: 'Ideas',
|
||||
@@ -232,7 +233,7 @@ export default {
|
||||
|
||||
// ── Input Augmentation layer: mention/skill injection feedback ──
|
||||
// search_files blind search denied by whitelist fallback (no auth dialog; prompt user to use @mention or absolute path)
|
||||
searchFilesBlocked: "search_files only works inside authorized dirs. Use @[project] to reference or provide an absolute path.",
|
||||
searchFilesBlocked: "search_files only works inside authorized dirs. Use @[project] to reference or provide an absolute path.",
|
||||
// /skill hot reload (ai_reload_skills IPC) success toast
|
||||
skillReloaded: 'Skills reloaded',
|
||||
// @mention entity resolve failed (id points to a project/task/idea/skill that was deleted or unavailable)
|
||||
@@ -326,7 +327,7 @@ export default {
|
||||
// ── TopBar goal/project context labels ──
|
||||
goalsCount: 'Goals ({n})',
|
||||
none: 'None',
|
||||
projectLabel: "@Projects",
|
||||
projectLabel: "@Projects",
|
||||
|
||||
// ── 3c UX batch addition (I5 classified send-failure messages): friendly text by
|
||||
// error kind; {msg} keeps the raw error string for troubleshooting ──
|
||||
|
||||
Reference in New Issue
Block a user