From e1a74b29b15eec7110570b2c957357172007d1b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AC=E6=98=8E?= <83812544+Ed1s0nZ@users.noreply.github.com> Date: Mon, 29 Jun 2026 16:16:59 +0800 Subject: [PATCH] Add files via upload --- web/static/js/chat.js | 5 +++++ web/static/js/monitor.js | 30 ++++++++++++++++++++++++++++-- web/static/js/tasks.js | 4 ++-- 3 files changed, 35 insertions(+), 4 deletions(-) diff --git a/web/static/js/chat.js b/web/static/js/chat.js index 1cc5f92c..a4fb61ba 100644 --- a/web/static/js/chat.js +++ b/web/static/js/chat.js @@ -7330,6 +7330,11 @@ async function renameConversation() { } } + // 同步更新顶栏正在运行的任务名称 + if (typeof updateActiveTaskConversationTitle === 'function') { + updateActiveTaskConversationTitle(convId, newTitle.trim()); + } + // 重新加载对话列表 loadConversationsWithGroups(); } catch (error) { diff --git a/web/static/js/monitor.js b/web/static/js/monitor.js index 0d87a60c..e80b8c91 100644 --- a/web/static/js/monitor.js +++ b/web/static/js/monitor.js @@ -3440,6 +3440,28 @@ async function loadActiveTasks(showErrors = false) { } } +function getActiveTaskDisplayName(task) { + const _t = function (k) { return typeof window.t === 'function' ? window.t(k) : k; }; + const unnamedTaskText = _t('tasks.unnamedTask'); + if (!task) return unnamedTaskText; + const title = (task.title || '').trim(); + if (title) return title; + const message = (task.message || '').trim(); + return message || unnamedTaskText; +} + +function updateActiveTaskConversationTitle(conversationId, newTitle) { + const bar = document.getElementById('active-tasks-bar'); + if (!bar || !conversationId) return; + const title = (newTitle || '').trim(); + if (!title) return; + bar.querySelectorAll('.active-task-item[data-conversation-id="' + conversationId + '"] .active-task-message') + .forEach(function (el) { + el.textContent = title; + }); +} +window.updateActiveTaskConversationTitle = updateActiveTaskConversationTitle; + function renderActiveTasks(tasks) { const bar = document.getElementById('active-tasks-bar'); if (!bar) return; @@ -3500,13 +3522,17 @@ function renderActiveTasks(tasks) { }; const statusText = statusMap[task.status] || _t('tasks.statusRunning'); const isFinalStatus = ['failed', 'timeout', 'cancelled', 'completed'].includes(task.status); - const unnamedTaskText = _t('tasks.unnamedTask'); + const taskDisplayName = getActiveTaskDisplayName(task); const stopTaskBtnText = _t('tasks.stopTask'); + if (task && task.conversationId) { + item.dataset.conversationId = task.conversationId; + } + item.innerHTML = `
${statusText} - ${escapeHtml(task.message || unnamedTaskText)} + ${escapeHtml(taskDisplayName)}
${timeText ? `${timeText}` : ''} diff --git a/web/static/js/tasks.js b/web/static/js/tasks.js index 7af962e9..5baaad32 100644 --- a/web/static/js/tasks.js +++ b/web/static/js/tasks.js @@ -181,7 +181,7 @@ function updateCompletedTasksHistory(currentTasks) { tasksState.completedTasksHistory.push({ conversationId: task.conversationId, - message: task.message || '未命名任务', + message: task.title || task.message || '未命名任务', startedAt: task.startedAt, status: finalStatus, completedAt: new Date().toISOString() @@ -537,7 +537,7 @@ function renderTaskItem(task, statusMap, isHistory = false) { ` : '
'} ${status.text} ${isHistory ? '📜' : ''} - ${escapeHtml(task.message || _t('tasks.unnamedTask'))} + ${escapeHtml((task.title || task.message || _t('tasks.unnamedTask')))}
${duration ? `⏱ ${duration}` : ''}