新增: aichat前端体验四件与队列残留收口
- R4 代码块语言角标:MessageList decorateCodeHtml 捕获 language-xxx 输出 data-lang+CSS ::before 左上角标,hover 显,无语言裸块不渲染 - R6 工具结果路径可复制:ToolResultBody 五处 file-bar 的 path span→button(read_file/list_directory/search_files/grep/patch_file),点击复制完整路径+✓/✕ 1.2s 反馈+execCommand 降级链 - I6 重新生成 UI 入口:MessageItem user 气泡 hover 补重新生成按钮(canRegenerate=isLastUser&&非流式),复用 handleRetry→store.regenerate 链路 - V4 浮窗审批 High 风险二次确认:useToolApproval 导出 isHighRiskTool/highRiskConfirmText,ApprovalPopup.onApprove 前置 ConfirmDialog,数字键守卫不绕确认 - 9-28#5 两处全局清队列残留:useAiEvents/useAiLifecycleEvents 无 convId 的 AiError 分支改保留队列+console.warn(防误伤其他会话排队消息) - i18n zh/en 补 clickToCopy 键;裸 @ 改 @ 转义(vue-i18n linked-message 前缀吞噬)
This commit is contained in:
@@ -112,12 +112,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',
|
||||
@@ -207,7 +207,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)
|
||||
@@ -288,7 +288,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 ──
|
||||
|
||||
@@ -15,6 +15,8 @@ export default {
|
||||
// tool execution failure marker (AR-6 keeps status=completed, red to distinguish from success)
|
||||
executionFailed: 'Failed',
|
||||
executionFailedHint: 'Tool execution failed, see details below',
|
||||
// R6: click-to-copy full result path (hover title suffix)
|
||||
clickToCopy: 'Click to copy full path',
|
||||
// Singular expand/collapse (ToolCard single-card content, command output toggle)
|
||||
expand: 'Expand',
|
||||
collapse: 'Collapse',
|
||||
|
||||
Reference in New Issue
Block a user