diff --git a/ccw/src/templates/dashboard-js/i18n.js b/ccw/src/templates/dashboard-js/i18n.js index 06a97c72..7a6ab0ba 100644 --- a/ccw/src/templates/dashboard-js/i18n.js +++ b/ccw/src/templates/dashboard-js/i18n.js @@ -1285,6 +1285,54 @@ const i18n = { 'multiCli.toolbar.noTasks': 'No tasks available', 'multiCli.toolbar.scrollToTask': 'Click to scroll to task', + // Context Tab + 'multiCli.context.taskDescription': 'Task Description', + 'multiCli.context.constraints': 'Constraints', + 'multiCli.context.focusPaths': 'Focus Paths', + 'multiCli.context.relevantFiles': 'Relevant Files', + 'multiCli.context.dependencies': 'Dependencies', + 'multiCli.context.conflictRisks': 'Conflict Risks', + 'multiCli.context.sessionId': 'Session ID', + 'multiCli.context.rawJson': 'Raw JSON', + + // Summary Tab + 'multiCli.summary.title': 'Summary', + 'multiCli.summary.convergence': 'Convergence', + 'multiCli.summary.solutions': 'Solutions', + 'multiCli.summary.solution': 'Solution', + + // Task Overview + 'multiCli.task.description': 'Description', + 'multiCli.task.keyPoint': 'Key Point', + 'multiCli.task.scope': 'Scope', + 'multiCli.task.dependencies': 'Dependencies', + 'multiCli.task.targetFiles': 'Target Files', + 'multiCli.task.acceptanceCriteria': 'Acceptance Criteria', + 'multiCli.task.reference': 'Reference', + 'multiCli.task.pattern': 'PATTERN', + 'multiCli.task.files': 'FILES', + 'multiCli.task.examples': 'EXAMPLES', + 'multiCli.task.noOverviewData': 'No overview data available', + + // Task Implementation + 'multiCli.task.implementationSteps': 'Implementation Steps', + 'multiCli.task.modificationPoints': 'Modification Points', + 'multiCli.task.verification': 'Verification', + 'multiCli.task.noImplementationData': 'No implementation details available', + 'multiCli.task.noFilesSpecified': 'No files specified', + + // Discussion Tab + 'multiCli.discussion.title': 'Discussion', + 'multiCli.discussion.discussionTopic': 'Discussion Topic', + 'multiCli.solutions': 'Solutions', + 'multiCli.decision': 'Decision', + + // Plan + 'multiCli.plan.objective': 'Objective', + 'multiCli.plan.solution': 'Solution', + 'multiCli.plan.approach': 'Approach', + 'multiCli.plan.risk': 'risk', + // Modals 'modal.contentPreview': 'Content Preview', 'modal.raw': 'Raw', @@ -3527,6 +3575,54 @@ const i18n = { 'multiCli.toolbar.noTasks': '暂无任务', 'multiCli.toolbar.scrollToTask': '点击定位到任务', + // Context Tab + 'multiCli.context.taskDescription': '任务描述', + 'multiCli.context.constraints': '约束条件', + 'multiCli.context.focusPaths': '焦点路径', + 'multiCli.context.relevantFiles': '相关文件', + 'multiCli.context.dependencies': '依赖项', + 'multiCli.context.conflictRisks': '冲突风险', + 'multiCli.context.sessionId': '会话ID', + 'multiCli.context.rawJson': '原始JSON', + + // Summary Tab + 'multiCli.summary.title': '摘要', + 'multiCli.summary.convergence': '收敛状态', + 'multiCli.summary.solutions': '解决方案', + 'multiCli.summary.solution': '方案', + + // Task Overview + 'multiCli.task.description': '描述', + 'multiCli.task.keyPoint': '关键点', + 'multiCli.task.scope': '范围', + 'multiCli.task.dependencies': '依赖项', + 'multiCli.task.targetFiles': '目标文件', + 'multiCli.task.acceptanceCriteria': '验收标准', + 'multiCli.task.reference': '参考资料', + 'multiCli.task.pattern': '模式', + 'multiCli.task.files': '文件', + 'multiCli.task.examples': '示例', + 'multiCli.task.noOverviewData': '无概览数据', + + // Task Implementation + 'multiCli.task.implementationSteps': '实现步骤', + 'multiCli.task.modificationPoints': '修改点', + 'multiCli.task.verification': '验证', + 'multiCli.task.noImplementationData': '无实现详情', + 'multiCli.task.noFilesSpecified': '未指定文件', + + // Discussion Tab + 'multiCli.discussion.title': '讨论', + 'multiCli.discussion.discussionTopic': '讨论主题', + 'multiCli.solutions': '解决方案', + 'multiCli.decision': '决策', + + // Plan + 'multiCli.plan.objective': '目标', + 'multiCli.plan.solution': '解决方案', + 'multiCli.plan.approach': '实现方式', + 'multiCli.plan.risk': '风险', + // Modals 'modal.contentPreview': '内容预览', 'modal.raw': '原始', diff --git a/ccw/src/templates/dashboard-js/views/lite-tasks.js b/ccw/src/templates/dashboard-js/views/lite-tasks.js index b5696d30..473d7436 100644 --- a/ccw/src/templates/dashboard-js/views/lite-tasks.js +++ b/ccw/src/templates/dashboard-js/views/lite-tasks.js @@ -706,11 +706,11 @@ function renderMultiCliTasksTab(session) { // Task description (main objective) if (taskDescription) { - planInfo.push(`

${t('plan.objective') || 'Objective'}: ${escapeHtml(taskDescription)}

`); + planInfo.push(`

${t('multiCli.plan.objective')}: ${escapeHtml(taskDescription)}

`); } // Solution name and summary if (solutionName) { - planInfo.push(`

${t('plan.solution') || 'Solution'}: ${escapeHtml(solutionName)}

`); + planInfo.push(`

${t('multiCli.plan.solution')}: ${escapeHtml(solutionName)}

`); } if (solutionSummary) { planInfo.push(`

${escapeHtml(solutionSummary)}

`); @@ -721,14 +721,14 @@ function renderMultiCliTasksTab(session) { } // Approach/execution flow if (approach) { - planInfo.push(`

${t('plan.approach') || 'Approach'}: ${escapeHtml(approach)}

`); + planInfo.push(`

${t('multiCli.plan.approach')}: ${escapeHtml(approach)}

`); } // Metadata badges - concise format let metaBadges = []; if (feasibility) metaBadges.push(`${Math.round(feasibility * 100)}%`); if (effort) metaBadges.push(`${escapeHtml(effort)}`); - if (risk) metaBadges.push(`${escapeHtml(risk)} risk`); + if (risk) metaBadges.push(`${escapeHtml(risk)} ${t('multiCli.plan.risk')}`); // Legacy badges if (plan.severity) metaBadges.push(`${escapeHtml(plan.severity)}`); if (plan.complexity) metaBadges.push(`${escapeHtml(plan.complexity)}`); @@ -905,7 +905,7 @@ function renderMultiCliContextContent(context, session) { if (ctx.task_description) { sections.push(`
-

Task Description

+

${t('multiCli.context.taskDescription')}

${escapeHtml(ctx.task_description)}

`); @@ -915,7 +915,7 @@ function renderMultiCliContextContent(context, session) { if (ctx.constraints?.length) { sections.push(`
-

Constraints

+

${t('multiCli.context.constraints')}

@@ -927,7 +927,7 @@ function renderMultiCliContextContent(context, session) { if (ctx.focus_paths?.length) { sections.push(`
-

Focus Paths

+

${t('multiCli.context.focusPaths')}

${ctx.focus_paths.map(p => `${escapeHtml(p)}`).join('')}
@@ -941,7 +941,7 @@ function renderMultiCliContextContent(context, session) {
- +