diff --git a/web/storyforge-web-v4/assets/app.js b/web/storyforge-web-v4/assets/app.js index cd12593..498100f 100644 --- a/web/storyforge-web-v4/assets/app.js +++ b/web/storyforge-web-v4/assets/app.js @@ -3164,6 +3164,26 @@ function buildDashboardHomeModel() { }; } +async function applySelectedProject(projectId = "") { + appState.selectedProjectId = projectId || ""; + setBusy(true, "正在切换项目视图..."); + try { + if (backendSupports("/v2/storage/status")) { + await loadStorageStatus(appState.selectedProjectId || ""); + } else { + appState.storageStatus = null; + } + await loadAgentControlSurfaces(appState.selectedProjectId || ""); + if (appState.selectedOnelinerSessionId) { + await loadOneLinerMessages(appState.selectedOnelinerSessionId); + } + } finally { + setBusy(false, ""); + } + rememberAction("当前项目已切换", `已切换到「${getSelectedProject()?.name || "所选项目"}」,你现在看到的首页、Agent 和任务都会跟随更新。`, "green"); + renderAll(); +} + function openDashboardProjectSwitcher() { const options = getProjectOptions(); if (!options.length) { @@ -3225,36 +3245,29 @@ function openDashboardProjectSwitcher() { }, { name: "projectId", label: "当前项目", type: "select", value: getSelectedProject()?.id || "", options } ], - onOpen: ({ fields }) => { + onOpen: ({ fields, submit }) => { const select = fields.querySelector('[data-action-field="projectId"]'); + const isMobileViewport = typeof window !== "undefined" && window.matchMedia?.("(max-width: 760px)")?.matches; + if (submit && isMobileViewport) { + submit.hidden = true; + } fields.querySelectorAll("[data-project-choice]").forEach((button) => { - button.addEventListener("click", () => { + button.addEventListener("click", async () => { + const nextProjectId = button.dataset.projectChoice || ""; if (select) { - select.value = button.dataset.projectChoice || ""; + select.value = nextProjectId; } fields.querySelectorAll("[data-project-choice]").forEach((item) => item.classList.remove("active")); button.classList.add("active"); + if (isMobileViewport && nextProjectId) { + closeActionModal(); + await applySelectedProject(nextProjectId); + } }); }); }, onSubmit: async (payload) => { - appState.selectedProjectId = payload.projectId || ""; - setBusy(true, "正在切换项目视图..."); - try { - if (backendSupports("/v2/storage/status")) { - await loadStorageStatus(appState.selectedProjectId || ""); - } else { - appState.storageStatus = null; - } - await loadAgentControlSurfaces(appState.selectedProjectId || ""); - if (appState.selectedOnelinerSessionId) { - await loadOneLinerMessages(appState.selectedOnelinerSessionId); - } - } finally { - setBusy(false, ""); - } - rememberAction("当前项目已切换", `已切换到「${getSelectedProject()?.name || "所选项目"}」,你现在看到的首页、Agent 和任务都会跟随更新。`, "green"); - renderAll(); + await applySelectedProject(payload.projectId || ""); } }); } @@ -7050,7 +7063,7 @@ function renderSettingsScreen() { return screenShell( "设置", "这里不放系统治理内容,只处理当前用户需要理解的连接、界面和帮助信息。", - `${button("连接状态", "open-auth")} ${isSuperAdmin() ? button("管理员配置台", "goto-admin-workbench", "primary") : button("刷新", "refresh-data", "primary")}`, + `${isSuperAdmin() ? button("管理员配置台", "goto-admin-workbench", "primary") : button("刷新", "refresh-data", "primary")}`, `