From: Codebuddy Date: Fri, 14 Aug 2026 10:17:08 +0000 (+0800) Subject: fix: 任务列表页每 5 秒自动刷新状态 X-Git-Url: http://acesimba.cloud/gitweb/?a=commitdiff_plain;h=d692ad8d084122533c974f2eb2a6105bcfb7597a;p=codebuddy-web.git fix: 任务列表页每 5 秒自动刷新状态 - 进入列表页启动定时器,离开/退出登录/进入终端时停止 - 解决列表页状态不随会话实时变化的问题(纯前端,刷新即生效) --- diff --git a/frontend/index.html b/frontend/index.html index 88465b3..af10872 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -304,11 +304,12 @@ body { position: fixed; top: 0; left: 0; right: 0; bottom: 0; height: 100%; over const termContainer = document.getElementById('terminal-container'); function show(page) { + stopPickerRefresh(); loginPage.style.display = 'none'; pickerPage.style.display = 'none'; terminalPage.style.display = 'none'; if (page === 'login') { loginPage.style.display = 'flex'; passwordInput.focus(); } - else if (page === 'picker') pickerPage.style.display = 'flex'; + else if (page === 'picker') { pickerPage.style.display = 'flex'; startPickerRefresh(); } else if (page === 'terminal') { terminalPage.style.display = 'flex'; // 显示后重新 fit 并聚焦,避免重连后需要先按一次回车才能输入 @@ -379,6 +380,23 @@ body { position: fixed; top: 0; left: 0; right: 0; bottom: 0; height: 100%; over await renderTasks(); } + // 列表页自动刷新:进入时启动,离开/退出时停止 + let pickerTimer = null; + let pickerRefreshing = false; + function startPickerRefresh() { + stopPickerRefresh(); + pickerTimer = setInterval(refreshTasks, 5000); + } + function stopPickerRefresh() { + if (pickerTimer) { clearInterval(pickerTimer); pickerTimer = null; } + } + async function refreshTasks() { + if (pickerRefreshing) return; + pickerRefreshing = true; + try { await renderTasks(); } catch (e) { console.warn('refreshTasks failed', e); } + finally { pickerRefreshing = false; } + } + let showAllTasks = false; async function renderTasks() {