diff --git a/web/static/js/chat.js b/web/static/js/chat.js index fe48e3f4..97fc3000 100644 --- a/web/static/js/chat.js +++ b/web/static/js/chat.js @@ -2843,10 +2843,12 @@ async function startNewConversation() { } catch (e) { /* ignore */ } currentConversationGroupId = null; // 新对话不属于任何分组 if (typeof ensureDefaultActiveProjectForNewChat === 'function') { - ensureDefaultActiveProjectForNewChat().catch(() => {}); + try { + await ensureDefaultActiveProjectForNewChat(); + } catch (e) { /* ignore */ } } if (typeof refreshChatProjectSelector === 'function') { - refreshChatProjectSelector(); + await refreshChatProjectSelector(); } document.getElementById('chat-messages').innerHTML = ''; const readyMsgNew = typeof window.t === 'function' ? window.t('chat.systemReadyMessage') : '系统已就绪。请输入您的测试需求,系统将自动执行相应的安全测试。'; diff --git a/web/static/js/projects.js b/web/static/js/projects.js index 8c1c174a..4174d4f8 100644 --- a/web/static/js/projects.js +++ b/web/static/js/projects.js @@ -306,23 +306,9 @@ function prefetchProjectsForChat() { ensureProjectsLoaded().catch(() => {}); } -/** 新对话时:保留有效 activeProjectId,否则默认选中第一个进行中的项目 */ +/** 新对话时默认不绑定项目;用户需主动选择后才写入共享黑板 */ async function ensureDefaultActiveProjectForNewChat() { - try { - await ensureProjectsLoaded(); - const cur = getActiveProjectId(); - if (cur && isActiveChatProjectId(cur)) return cur; - const source = projectsCacheAll.length ? projectsCacheAll : projectsCache; - const first = - source.find((p) => p.pinned && p.status !== 'archived') || - source.find((p) => p.status !== 'archived'); - if (first) { - setActiveProjectId(first.id); - return first.id; - } - } catch (e) { - console.warn(e); - } + setActiveProjectId(''); return ''; } @@ -345,7 +331,9 @@ async function initProjectsPage() { const page = document.getElementById('page-projects'); if (!page || page.style.display === 'none') return; initProjectsModalEscape(); - syncProjectsModalBodyLock(); + if (typeof syncAppModalBodyLock === 'function') { + syncAppModalBodyLock(); + } updateProjectsDetailVisibility(); projectsListPagination.pageSize = getProjectsListPageSize(); renderProjectsPagination(); diff --git a/web/static/js/router.js b/web/static/js/router.js index 2e18373b..ddfeecd3 100644 --- a/web/static/js/router.js +++ b/web/static/js/router.js @@ -505,7 +505,7 @@ document.addEventListener('DOMContentLoaded', function() { let pageId = hashParts[0]; if (pageId === 'c2') pageId = 'c2-listeners'; - if (pageId && ['dashboard', 'chat', 'hitl', 'info-collect', 'tasks', 'vulnerabilities', 'webshell', 'chat-files', 'mcp-monitor', 'mcp-management', 'knowledge-management', 'knowledge-retrieval-logs', 'roles-management', 'skills-monitor', 'skills-management', 'agents-management', 'settings', 'c2-listeners', 'c2-sessions', 'c2-tasks', 'c2-payloads', 'c2-events', 'c2-profiles'].includes(pageId)) { + if (pageId && ['dashboard', 'chat', 'hitl', 'info-collect', 'projects', 'tasks', 'vulnerabilities', 'webshell', 'chat-files', 'mcp-monitor', 'mcp-management', 'knowledge-management', 'knowledge-retrieval-logs', 'roles-management', 'skills-monitor', 'skills-management', 'agents-management', 'settings', 'c2-listeners', 'c2-sessions', 'c2-tasks', 'c2-payloads', 'c2-events', 'c2-profiles'].includes(pageId)) { switchPage(pageId); if (pageId === 'chat') { scheduleChatConversationFromHash(200); diff --git a/web/templates/index.html b/web/templates/index.html index bb9f6f71..fb7c2862 100644 --- a/web/templates/index.html +++ b/web/templates/index.html @@ -9,6 +9,7 @@ +