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(``); if (effort) metaBadges.push(``); - if (risk) metaBadges.push(``); + if (risk) metaBadges.push(``); // Legacy badges if (plan.severity) metaBadges.push(``); if (plan.complexity) metaBadges.push(``); @@ -905,7 +905,7 @@ function renderMultiCliContextContent(context, session) { if (ctx.task_description) { sections.push(`${escapeHtml(ctx.task_description)}
${escapeHtml(ctx.session_id)}
${escapeHtml(JSON.stringify(ctx, null, 2))}
@@ -1066,7 +1066,7 @@ function renderMultiCliSummaryContent(summary, session) {
const summaryContent = typeof summaryText === 'string' ? summaryText : getI18nText(summaryText);
sections.push(`
Key Point: ${escapeHtml(keyPoint)}
` : ''} + ${keyPoint ? `${t('multiCli.task.keyPoint')}: ${escapeHtml(keyPoint)}
` : ''} ${description ? `${escapeHtml(description)}
` : ''}${ref.files.map(f => escapeHtml(f)).join('\n')}${ref.files.map(f => escapeHtml(f)).join('\n')}${escapeHtml(description)}
` : ''}${t('multiCli.singleRoundInfo') || 'This is a single-round discussion. View Planning tab for execution details.'}
+${t('multiCli.singleRoundInfo')}
${escapeHtml(convergence.reasoning || round.decision || '')}