优化: 清理无意义注释(走查编号前缀/过时历史标注/死代码注释)

This commit is contained in:
lxy
2026-08-15 18:05:43 +08:00
parent 5a4c821629
commit 5ac815b9ca
137 changed files with 735 additions and 737 deletions
+4 -4
View File
@@ -23,9 +23,9 @@ export default {
errorTimeout: 'The response timed out. Please try again.',
errorNetwork: 'Network connection failed. Please check your network.',
// CR-30-2 / F-260616-07(d) / decision a1: stream pre-failure retry bubble copy
// UX-260616-01: clarify this is an AI response (network/rate-limit) retry, not a tool failure (shown in card)
// clarify this is an AI response (network/rate-limit) retry, not a tool failure (shown in card)
aiStreamRetry: '⚠ AI response failed, retrying ({attempt}/{max})…',
// UX-260616-01: Fatal errors (4xx/auth) are not retryable — prompt user to check settings instead
// Fatal errors (4xx/auth) are not retryable — prompt user to check settings instead
notRetryable: 'This error cannot be resolved by retrying. Please check the configuration.',
streamInterruptedAfterTool: '⚠ The tool finished, but the following reply was interrupted (no data stream for a long time). You can click Continue to retry.',
streamInterrupted: '⚠ The response was interrupted (no data stream for a long time). This may be due to a network disconnection or a backend error. Please try again.',
@@ -38,7 +38,7 @@ export default {
approvalNotDelivered: 'Approval operation failed to reach the backend: {error}',
queuedSendFailed: 'Failed to send queued message: {error}',
approvalTimeout: '⚰ Approval timed out, automatically rejected: {toolName}',
// UX-260617-08: conversation load/switch failure feedback (network jitter/IPC down → empty list/blank, was silent)
// conversation load/switch failure feedback (network jitter/IPC down → empty list/blank, was silent)
loadConvFail: 'Failed to load conversations. Please check your network or backend connection.',
switchConvFail: 'Failed to switch conversation. Please retry.',
// M30: rename/archive/pin IPC failure feedback (was no try/catch, exceptions leaked to unhandledrejection)
@@ -52,7 +52,7 @@ export default {
unarchiveAction: 'unarchive',
pinAction: 'pin',
unpinAction: 'unpin',
// AE-2025-07: Agentic loop progress bar copy
// Agentic loop progress bar copy
// Note: max round / completed tool count are not surfaced by backend this round;
// template conditionally omits them. Add *WithMax keys once backend exposes them.
agenticProgress: '🔄 Round {round} · ⏳{pending} pending',
+8 -8
View File
@@ -71,7 +71,7 @@ export default {
selectModel: 'Select model',
noModels: 'No models available. Please fetch in settings.',
// ── Empty states (UX-2025-20: example prompt cards + no-provider guidance) ──
// ── Empty states example prompt cards + no-provider guidance) ──
emptyNoProvider: 'No AI provider configured',
emptyNoProviderHint: 'Please add a provider in settings to start chatting',
emptyTitle: 'Chat with AI assistant',
@@ -84,7 +84,7 @@ export default {
goToSettings: 'Open settings',
goToSettingsHint: 'The detached window cannot open settings directly. Configure AI providers on the main window’s Settings page.',
// ── Provider switch feedback (UX-2025-14) ──
// ── Provider switch feedback ──
providerSwitched: 'Switched to {model}',
providerSwitchHint: 'Current model: {model}',
@@ -107,7 +107,7 @@ export default {
skillNoMatch: 'No matching skill',
skillNotLoaded: 'No local skills loaded',
// ── UX-10: @ entity mention (@ opens popover, select inserts [Type:Name] token) ──
// ── @ entity mention (@ opens popover, select inserts [Type:Name] token) ──
mentionHint: "{'@'} to mention project/task",
mentionGroupProject: 'Projects',
mentionGroupTask: 'Tasks',
@@ -136,13 +136,13 @@ export default {
// ── Confirm dialog ──
confirmDeleteConversation: 'Delete chat "{title}"? This cannot be undone.',
// UX-260617-24: stronger warning when deleting the currently active conversation
// stronger warning when deleting the currently active conversation
confirmDeleteActiveConversation: '"{title}" is the chat you are currently viewing. Deleting it will clear the current view and cannot be undone. Continue?',
clearChat: 'Clear',
confirmClearChat: 'Are you sure you want to clear all messages in this chat? This cannot be undone.',
toastSendFail: 'Send failed: {msg}',
// ── Message copy (F-260615-13) ──
// ── Message copy ──
copyMsg: 'Copy message',
copied: 'Copied',
copyFailed: 'Copy failed',
@@ -151,14 +151,14 @@ export default {
copiedAsImage: 'Copied as image',
copyAsImageFailed: 'Failed to copy as image',
// ── Message actions bar (UX-02) ──
// ── Message actions bar ──
regenerate: 'Regenerate',
regenerateFailed: 'Regenerate failed: {msg}',
regenerateUnavailable: 'No reply to regenerate',
// fetch_url "Install obscura via AI" button triggers sendMessage; failure toast (mirrors editMessageFailed)
sendFailed: 'Send failed: {msg}',
// ── UX-09: edit last user message and regenerate ──
// ── edit last user message and regenerate ──
editMessage: 'Edit',
editMessageFailed: 'Edit failed: {msg}',
editNotLastUser: 'Only the last user message can be edited',
@@ -168,7 +168,7 @@ export default {
retry: 'Retry',
goToSettingsAction: 'Open settings',
// ── F-260616-03: max iterations reached pause action card ──
// ── max iterations reached pause action card ──
maxRoundsReached: 'Max rounds reached. Continue?',
maxRoundsHint: 'Continue runs another full round; stop ends with current results',
continueLoop: 'Continue',
+17 -17
View File
@@ -6,11 +6,11 @@ export default {
approveAll: 'Approve All ({n})',
rejectAll: 'Reject All',
rejectedHint: 'User rejected this action',
// B-260616-12: tool execution slow hint (frontend fallback, no backend cancel IPC)
// tool execution slow hint (frontend fallback, no backend cancel IPC)
executionSlow: 'Tool "{name}" is taking longer than expected, please wait…',
// BUG-260624-02: approval pending duration hint (>2min orange, >5min red)
// approval pending duration hint (>2min orange, >5min red)
waitTime: '⏱ Waiting {time}',
// UX-260616-01: tool execution failure marker (AR-6 keeps status=completed, red to distinguish from success)
// tool execution failure marker (AR-6 keeps status=completed, red to distinguish from success)
executionFailed: 'Failed',
executionFailedHint: 'Tool execution failed, see details below',
// Singular expand/collapse (ToolCard single-card content, command output toggle; expandAll/collapseAll are for ToolCardList global multi-group)
@@ -31,7 +31,7 @@ export default {
dirFallback: 'List Directory',
writePrefix: 'Write',
writeFallback: 'Write File',
// grep cross-file content search header (F-260621)
// grep cross-file content search header
grepPrefix: 'Search',
grepFallback: 'Content Search',
// CRUD tool display names (delete/restore/purge/update_project resolve project name by id; fallback when no id or unresolved)
@@ -63,26 +63,26 @@ export default {
purged: 'Purged',
purgeIneffective: 'Purge ineffective',
workflowHint: 'Run it on the workflow page',
// UX-260618-05: run_workflow tool_result shows execution_id (workflowHint misleading — workflow already triggered; old key kept for other refs)
// run_workflow tool_result shows execution_id (workflowHint misleading — workflow already triggered; old key kept for other refs)
workflowTriggered: 'Task {id} triggered workflow (advancing to {status}, execution {exec})',
workflowTriggeredShort: 'Execution {exec}',
// UX-260616-04: formatToolResult covers all tools with human-readable summaries (missing keys)
// formatToolResult covers all tools with human-readable summaries (missing keys)
updatedTaskField: 'Task「{title}」 updated field {field}',
advancedTask: 'Task「{title}」 advanced to {status}',
// UX-260618-09: advance_task return-round accumulation (shown only when >0); UX-260618-14: {title} = task name (TaskRecord), fallback id
// advance_task return-round accumulation (shown only when >0); {title} = task name (TaskRecord), fallback id
advancedTaskWithRounds: 'Task「{title}」 advanced to {status} (returned {n} times)',
commandOk: 'Command succeeded ({ms} ms)',
commandFailed: 'Command failed (exit code {code})',
commandOutputLines: '{n} lines of output',
patchedFile: 'Patched {path} ({diff} bytes)',
// UX-260618-06: patch_file multi-match hint + size_diff unit
// patch_file multi-match hint + size_diff unit
patchedMatches: 'matched {n} places',
bytesUnit: 'bytes',
patchedNoChange: '{path} no change',
appendedTo: 'Appended {bytes} to {path}',
renamedFile: 'Renamed {from} → {to}',
// UX-260618-12: rename_file bytes/cross-volume + write_file overwrite/encoding hints
// rename_file bytes/cross-volume + write_file overwrite/encoding hints
renamedWithBytes: 'Renamed {from} → {to} ({bytes})',
renamedCrossVolume: 'Moved {from} → {to} (cross-volume, {bytes})',
writeOverwrite: 'overwrote {old} → {neww}',
@@ -113,7 +113,7 @@ export default {
fetchUrlFallback: 'Fetch URL',
installObscura: 'Install obscura via AI',
obscuraInstallPrompt: 'Please install obscura (a Rust headless browser, used by fetch_url render=true for JS rendering). Try `cargo install obscura` first; if cargo is unavailable, download the prebuilt binary for this platform from the GitHub releases (github.com/h4ckf0r0day/obscura) and place it on PATH. After installing, verify with `obscura --version` and tell me I can retry the web fetch.',
// grep cross-file content search results (F-260621): per output_mode phrasing
// grep cross-file content search results per output_mode phrasing
grepHitsN: '{n} hits',
grepFilesN: '{n} files',
grepCountSummary: '{n} hits / {files} files',
@@ -121,10 +121,10 @@ export default {
grepTruncated: 'Results truncated (max reached), narrow pattern or add glob',
boundDir: 'Bound directory "{path}" stack: {stack}',
deleteFilePermanent: 'Permanently deleted {path}',
// UX-260618-07: soft-delete adds backup_path (trash filename so user knows where to recover from)
// soft-delete adds backup_path (trash filename so user knows where to recover from)
deleteFileSoft: 'Soft-deleted {path} (backed up, recover from: {backup_path})',
fileInfoSize: '{path} {size}',
// UX-260618-12: file_info modified time (epoch_ms → client toLocaleString)
// file_info modified time (epoch_ms → client toLocaleString)
fileInfoModified: ' · modified {time}',
fileInfoLines: ' · {n} lines',
fileInfoBinary: ' · binary',
@@ -133,11 +133,11 @@ export default {
projectLabel: '"{name}"',
projectIdNotFound: '(project not found, id={id})',
// UX-260618-14: advance_task/run_workflow task_id → task title (store.tasks lookup; fallback id)
// advance_task/run_workflow task_id → task title (store.tasks lookup; fallback id)
taskLabel: '"{name}"',
taskIdNotFound: '(task not in current list, id={id})',
// AE-2025-05: High-risk approval second confirm (ask once more before approve; misclick cancellable)
// High-risk approval second confirm (ask once more before approve; misclick cancellable)
confirmHighDelete: 'Permanently delete? This action cannot be undone',
confirmHighExec: 'Run this command?',
confirmHighGeneric: 'Proceed with this high-risk action?',
@@ -145,7 +145,7 @@ export default {
// Tool result detail format (plain-text result + approval placeholder appends arg summary)
resultDetail: '{raw} ({detail})',
// UX-260617-17: ToolCardList group header (shown when 2+ same-name tools; was hardcoded zh)
// ToolCardList group header (shown when 2+ same-name tools; was hardcoded zh)
toolGroup: {
readFile: 'Read File',
writeFile: 'Write File',
@@ -165,10 +165,10 @@ export default {
httpRequest: 'HTTP Request',
},
// UX-260617-14: approval loading fallback timeout notice (no backend ack, card still pending_approval → reset + prompt)
// approval loading fallback timeout notice (no backend ack, card still pending_approval → reset + prompt)
approveLoadingTimeout: 'Approval response timed out, please retry or check the backend',
// UX-260617-18: tool failure detection copy (regex narrowed to line-anchored err_msg prefix)
// tool failure detection copy (regex narrowed to line-anchored err_msg prefix)
// (reuse executionFailed/executionFailedHint, no new key)
// http_request High-risk confirm: external network call, data may leak via URL/body
+2 -2
View File
@@ -49,7 +49,7 @@ export default {
decided: {
human: 'Human',
auto: 'Auto',
// SA-1: cover all backend decided_by sources (different decision paths, more precise than generic 'auto')
// cover all backend decided_by sources (different decision paths, more precise than generic 'auto')
auto_trust: 'Auto (trusted)',
auto_dedup: 'Auto (deduped)',
cache_hit: 'Auto (cached)',
@@ -66,7 +66,7 @@ export default {
convTruncated: 'Content truncated (expand to view full conversation)',
convSelectHint: '← Select a conversation to view full interaction log',
convReasoning: 'Reasoning (thinking)',
// SA-2: conversation role labels (previously hardcoded Chinese, now i18n)
// conversation role labels (previously hardcoded Chinese, now i18n)
convRoleUser: '🧑 User',
convRoleAssistant: '🤖 Assistant',
convRoleTool: '🔧 Tool',
+1 -1
View File
@@ -230,7 +230,7 @@ export default {
confirmDiscardUnsaved: 'The form has unsaved changes. Discard them?',
toastSaved: 'Saved',
toastSaveFail: 'Save failed: {msg}',
// P0-2: save-failure classified guidance (persistent banner, not raw Err text)
// save-failure classified guidance (persistent banner, not raw Err text)
saveErrKeyringTitle: 'Failed to write key to the OS keychain',
saveErrKeyringDetail: 'Original config left unchanged. Backend reason: {msg}\nSuggestion: check the OS keychain/credential store permissions (Windows Credential Manager / macOS Keychain / Linux secret-service daemon), then click "Save" again to retry.',
saveErrGenericTitle: 'Failed to save provider config',
+1 -1
View File
@@ -95,7 +95,7 @@ export default {
desc: 'Description',
branch: 'Branch',
priority: 'Priority',
// F-260619-01: related idea (1:1, optional)
// related idea (1:1, optional)
idea: 'Related Idea',
ideaPlaceholder: 'None (optional)',
titlePlaceholder: 'Enter task title...',
+4 -4
View File
@@ -23,9 +23,9 @@ export default {
errorTimeout: '响应超时,请重试',
errorNetwork: '网络连接失败,请检查网络',
// CR-30-2 / F-260616-07(d) / 决策 a1: 流前失败重试中错误气泡内更新文案
// UX-260616-01: 明确这是 AI 响应(网络/限流)重试,非工具执行失败(工具失败在卡片内显示)
// 明确这是 AI 响应(网络/限流)重试,非工具执行失败(工具失败在卡片内显示)
aiStreamRetry: '⚠ AI 响应失败,正在重试({attempt}/{max})…',
// UX-260616-01: Fatal 类错误(4xx/鉴权)不可重试,提示用户去设置而非重试
// Fatal 类错误(4xx/鉴权)不可重试,提示用户去设置而非重试
notRetryable: '此错误无法通过重试解决,请检查配置',
streamInterruptedAfterTool: '⚠ 工具已执行完成,后续回复中断(长时间无数据流)。可点继续重试。',
streamInterrupted: '⚠ 响应中断(长时间无数据流)。可能是网络断连或后端异常,请重试。',
@@ -38,7 +38,7 @@ export default {
approvalNotDelivered: '审批操作未送达后端:{error}',
queuedSendFailed: '队列消息发送失败:{error}',
approvalTimeout: '⚰ 审批超时,已自动拒绝:{toolName}',
// UX-260617-08:对话加载/切换失败反馈(网络抖动/IPC 断开 → 列表空/切换空白,原静默无反馈)
// 对话加载/切换失败反馈(网络抖动/IPC 断开 → 列表空/切换空白,原静默无反馈)
loadConvFail: '对话列表加载失败,请检查网络或后端连接',
switchConvFail: '对话切换失败,请重试',
// M30:重命名/归档/置顶 IPC 失败反馈(原无 try/catch 异常进 unhandledrejection,用户无感)
@@ -52,7 +52,7 @@ export default {
unarchiveAction: '取消归档',
pinAction: '置顶',
unpinAction: '取消置顶',
// AE-2025-07: Agentic 循环进度条文案
// Agentic 循环进度条文案
// 注:max 轮次/已完成工具数本轮后端暂不透传,模板条件渲染省略;后端补全后新增 *WithMax key
agenticProgress: '🔄 循环 {round} · ⏳{pending}待审批',
agenticProgressNoPending: '🔄 循环 {round} · ✅{completed}个工具完成',
+8 -8
View File
@@ -71,7 +71,7 @@ export default {
selectModel: '选择模型',
noModels: '无可用模型,请在设置中拉取',
// ── 空状态(UX-2025-20:示例问题卡片 + 无 provider 引导) ──
// ── 空状态示例问题卡片 + 无 provider 引导) ──
emptyNoProvider: '未配置 AI 提供商',
emptyNoProviderHint: '请在设置中添加 Provider 后开始对话',
emptyTitle: '与 AI 助手对话',
@@ -84,7 +84,7 @@ export default {
goToSettings: '去设置',
goToSettingsHint: '分离窗口无法直接打开设置,请在主窗口的设置页配置 AI 提供商',
// ── Provider 切换反馈(UX-2025-14) ──
// ── Provider 切换反馈──
providerSwitched: '已切换到 {model}',
providerSwitchHint: '当前模型:{model}',
@@ -107,7 +107,7 @@ export default {
skillNoMatch: '无匹配技能',
skillNotLoaded: '未读取到本机技能',
// ── UX-10: @ 实体引用(@ 触发 popover,选中插入 [类型:名] 标记) ──
// ── @ 实体引用(@ 触发 popover,选中插入 [类型:名] 标记) ──
mentionHint: "{'@'} 引用项目/任务",
mentionGroupProject: '项目',
mentionGroupTask: '任务',
@@ -137,13 +137,13 @@ export default {
// ── 确认弹层 ──
confirmDeleteConversation: '确定删除对话「{title}」?该操作不可恢复。',
// UX-260617-24:删除当前活跃对话的醒目提示(活跃对话误删会清空当前视图,影响更大)
// 删除当前活跃对话的醒目提示(活跃对话误删会清空当前视图,影响更大)
confirmDeleteActiveConversation: '「{title}」是当前正在查看的对话,删除后将清空当前视图且不可恢复,确定继续?',
clearChat: '清空',
confirmClearChat: '确定清空当前对话的所有消息?此操作不可恢复。',
toastSendFail: '发送失败:{msg}',
// ── 消息拷贝(F-260615-13) ──
// ── 消息拷贝──
copyMsg: '复制消息',
copied: '已复制',
copyFailed: '复制失败',
@@ -152,14 +152,14 @@ export default {
copiedAsImage: '已复制为图片',
copyAsImageFailed: '复制为图片失败',
// ── 消息操作栏(UX-02) ──
// ── 消息操作栏──
regenerate: '重新生成',
regenerateFailed: '重新生成失败:{msg}',
regenerateUnavailable: '没有可重新生成的回复',
// fetch_url "AI 帮装 obscura" 按钮触发 sendMessage 失败的 toast(对齐 editMessageFailed 模式)
sendFailed: '发送失败:{msg}',
// ── UX-09: 编辑末条 user 消息并重新生成 ──
// ── 编辑末条 user 消息并重新生成 ──
editMessage: '编辑',
editMessageFailed: '编辑失败:{msg}',
editNotLastUser: '只能编辑最后一条用户消息',
@@ -169,7 +169,7 @@ export default {
retry: '重试',
goToSettingsAction: '去设置',
// ── F-260616-03: 达 max_iterations 暂停态操作卡 ──
// ── 达 max_iterations 暂停态操作卡 ──
maxRoundsReached: '已达最大轮次,是否继续?',
maxRoundsHint: '继续将再跑一轮上限;停止则按当前结果收尾',
continueLoop: '继续',
+17 -17
View File
@@ -6,11 +6,11 @@ export default {
approveAll: '全部批准 {n} 项',
rejectAll: '全部拒绝',
rejectedHint: '用户拒绝了此操作',
// B-260616-12:工具执行超时提示(前端降级,无后端取消 IPC)
// 工具执行超时提示(前端降级,无后端取消 IPC)
executionSlow: '工具「{name}」执行较久,请稍候…',
// BUG-260624-02:审批挂起时长提示(>2分钟橙色,>5分钟红色)
// 审批挂起时长提示(>2分钟橙色,>5分钟红色)
waitTime: '⏱ 已等待 {time}',
// UX-260616-01:工具执行失败视觉标识(AR-6 下 status=completed,需红色区分于成功)
// 工具执行失败视觉标识(AR-6 下 status=completed,需红色区分于成功)
executionFailed: '执行失败',
executionFailedHint: '工具执行失败,详情见下方',
collapse: '收起',
@@ -31,7 +31,7 @@ export default {
dirFallback: '列出目录',
writePrefix: '写入',
writeFallback: '写入文件',
// grep 跨文件内容搜索头部(F-260621)
// grep 跨文件内容搜索头部
grepPrefix: '搜索',
grepFallback: '内容搜索',
// CRUD 类工具显示名(delete/restore/purge/update_project 按 id 解析项目名;无 id 或解析失败走 fallback)
@@ -64,26 +64,26 @@ export default {
purged: '已彻底删除',
purgeIneffective: '清除未生效',
workflowHint: '请到工作流页面运行',
// UX-260618-05:run_workflow tool_result 显 execution_id(workflowHint 误导——工作流已触发;旧 key 保留防他处引用)
// run_workflow tool_result 显 execution_id(workflowHint 误导——工作流已触发;旧 key 保留防他处引用)
workflowTriggered: '任务 {id} 已触发工作流(推进至 {status},执行实例 {exec})',
workflowTriggeredShort: '执行实例 {exec}',
// UX-260616-04:formatToolResult 覆盖全部工具产出人类可读摘要(补缺失 key)
// formatToolResult 覆盖全部工具产出人类可读摘要(补缺失 key)
updatedTaskField: '任务「{title}」已更新字段 {field}',
advancedTask: '任务「{title}」已推进至 {status}',
// UX-260618-09:advance_task 退回累加轮数(>0 才显);UX-260618-14:{title} 显任务名(后端返 TaskRecord),回退 id
// advance_task 退回累加轮数(>0 才显);{title} 显任务名(后端返 TaskRecord),回退 id
advancedTaskWithRounds: '任务「{title}」已推进至 {status}(已退回 {n} 次)',
commandOk: '命令成功({ms} 毫秒)',
commandFailed: '命令失败(退出码 {code})',
commandOutputLines: '{n} 行输出',
patchedFile: '已修改 {path}(增减 {diff} 字节)',
// UX-260618-06:patch_file 多匹配提示 + size_diff 单位
// patch_file 多匹配提示 + size_diff 单位
patchedMatches: '匹配 {n} 处',
bytesUnit: '字节',
patchedNoChange: '{path} 无更改',
appendedTo: '已向 {path} 追加 {bytes}',
renamedFile: '已重命名 {from} → {to}',
// UX-260618-12:rename_file 字节/跨卷 + write_file 覆盖/编码提示
// rename_file 字节/跨卷 + write_file 覆盖/编码提示
renamedWithBytes: '已重命名 {from} → {to}({bytes})',
renamedCrossVolume: '已移动 {from} → {to}(跨卷,{bytes})',
writeOverwrite: '覆盖 {old} → {neww}',
@@ -114,7 +114,7 @@ export default {
fetchUrlFallback: '获取网页',
installObscura: 'AI 帮装 obscura',
obscuraInstallPrompt: '请帮我安装 obscura(Rust 无头浏览器,用于 fetch_url 的 render=true JS 渲染)。优先尝试 `cargo install obscura`,若 cargo 不可用则从 GitHub releases(github.com/h4ckf0r0day/obscura)下载对应平台预编译二进制并放入 PATH。安装完成后用 `obscura --version` 验证,然后告诉我可以重试网页抓取了。',
// grep 跨文件内容搜索结果(F-260621):按 output_mode 分文案
// grep 跨文件内容搜索结果按 output_mode 分文案
grepHitsN: '命中 {n} 处',
grepFilesN: '命中 {n} 文件',
grepCountSummary: '命中 {n} 处 / {files} 文件',
@@ -122,10 +122,10 @@ export default {
grepTruncated: '结果已截断(达上限),收紧 pattern 或加 glob',
boundDir: '已绑定目录「{path}」技术栈:{stack}',
deleteFilePermanent: '已硬删除 {path}',
// UX-260618-07:软删补 backup_path(回收站文件名,用户知从哪恢复)
// 软删补 backup_path(回收站文件名,用户知从哪恢复)
deleteFileSoft: '已软删除 {path}(已备份,可从 {backup_path} 恢复)',
fileInfoSize: '{path} {size}',
// UX-260618-12:file_info 修改时间(epoch_ms → 客户端 toLocaleString)
// file_info 修改时间(epoch_ms → 客户端 toLocaleString)
fileInfoModified: ' · 修改于 {time}',
fileInfoLines: ' · {n} 行',
fileInfoBinary: ' · 二进制',
@@ -135,11 +135,11 @@ export default {
// 审批参数特化(id/project_id 回显项目名,查不到标注原 id)
projectLabel: '「{name}」',
projectIdNotFound: '(项目已不存在, id={id})',
// UX-260618-14:advance_task/run_workflow 的 task_id 回显任务标题(查 store.tasks,无则标 id)
// advance_task/run_workflow 的 task_id 回显任务标题(查 store.tasks,无则标 id)
taskLabel: '「{name}」',
taskIdNotFound: '(任务不在当前列表, id={id})',
// AE-2025-05:High 风险审批二次确认文案(批准前再问一次,误点可取消)
// High 风险审批二次确认文案(批准前再问一次,误点可取消)
confirmHighDelete: '确定永久删除?此操作不可恢复',
confirmHighExec: '确定执行此命令?',
confirmHighGeneric: '确定执行此高危操作?',
@@ -149,7 +149,7 @@ export default {
// 工具结果详情格式(非 JSON 纯文本 + 审批占位时补参数摘要)
resultDetail: '{raw}({detail})',
// UX-260617-17:ToolCardList 分组标题(同名工具 >=2 时显示;原硬编码中文,英文化)
// ToolCardList 分组标题(同名工具 >=2 时显示;原硬编码中文,英文化)
toolGroup: {
readFile: '读取文件',
writeFile: '写入文件',
@@ -169,10 +169,10 @@ export default {
httpRequest: 'HTTP 请求',
},
// UX-260617-14:审批 loading 超时兜底提示(后端无回执,卡片仍 pending_approval 时复位 + 提示用户)
// 审批 loading 超时兜底提示(后端无回执,卡片仍 pending_approval 时复位 + 提示用户)
approveLoadingTimeout: '审批响应超时,请重试或检查后端',
// UX-260617-18:工具失败检测文案(收窄正则后,行首锚定 err_msg 前缀)
// 工具失败检测文案(收窄正则后,行首锚定 err_msg 前缀)
// (复用 executionFailed/executionFailedHint,不新增)
// 审批参数键标签
+2 -2
View File
@@ -49,7 +49,7 @@ export default {
decided: {
human: '人工',
auto: '自动',
// SA-1:补齐后端 decided_by 全部来源(审计记录不同决策路径,精确区分而非笼统 'auto')
// 补齐后端 decided_by 全部来源(审计记录不同决策路径,精确区分而非笼统 'auto')
auto_trust: '自动(信任)',
auto_dedup: '自动(去重)',
cache_hit: '自动(缓存)',
@@ -66,7 +66,7 @@ export default {
convTruncated: '内容过长已截断(展开查看完整对话)',
convSelectHint: '← 选择左侧一次对话查看完整交互日志',
convReasoning: '推理过程(thinking)',
// SA-2:对话角色标签(原硬编码 '🧑 用户' 等,现 i18n 化)
// 对话角色标签(原硬编码 '🧑 用户' 等,现 i18n 化)
convRoleUser: '🧑 用户',
convRoleAssistant: '🤖 助手',
convRoleTool: '🔧 工具',
+1 -1
View File
@@ -229,7 +229,7 @@ export default {
confirmDiscardUnsaved: '表单有未保存的改动,确定放弃吗?',
toastSaved: '已保存',
toastSaveFail: '保存失败:{msg}',
// P0-2: 保存失败分类建议(常驻错误横幅,非裸 Err 文本)
// 保存失败分类建议(常驻错误横幅,非裸 Err 文本)
saveErrKeyringTitle: '密钥写入系统钥匙串失败',
saveErrKeyringDetail: '已保留原配置未改动。后端原因:{msg}\n建议:检查操作系统钥匙串/凭据管理器权限(Windows 凭据管理器 / macOS 钥匙串 / Linux secret-service 守护进程),确认后再次点击「保存」重试。',
saveErrGenericTitle: '保存提供商配置失败',
+1 -1
View File
@@ -95,7 +95,7 @@ export default {
desc: '描述',
branch: '分支',
priority: '优先级',
// F-260619-01:关联灵感(1对1 单向,可选)
// 关联灵感(1对1 单向,可选)
idea: '关联灵感',
ideaPlaceholder: '不关联(可选)',
titlePlaceholder: '输入任务标题...',