diff --git a/web/storyforge-web-v4/assets/app.js b/web/storyforge-web-v4/assets/app.js index c0f58d6..e1e887b 100644 --- a/web/storyforge-web-v4/assets/app.js +++ b/web/storyforge-web-v4/assets/app.js @@ -4734,6 +4734,23 @@ function renderMainAgentLandingNotice(screenKey) { const recommendedAction = landingRun?.result?.recommended_action || null; return `
${escapeHtml(landing.summary || landing.title || "这是主 Agent 刚刚给出的下一步落点。")}
+ +${escapeHtml(landing.summary || landing.title || "这是主 Agent 刚刚给出的下一步落点。")}
${cards.length ? ` diff --git a/web/storyforge-web-v4/tests/workbench-pages.test.mjs b/web/storyforge-web-v4/tests/workbench-pages.test.mjs index 6c1febe..c11f53d 100644 --- a/web/storyforge-web-v4/tests/workbench-pages.test.mjs +++ b/web/storyforge-web-v4/tests/workbench-pages.test.mjs @@ -540,6 +540,14 @@ test("main agent route actions keep landing context and destination screens rend assert.match(production, /renderMainAgentLandingNotice\("production"\)/); }); +test("main agent landing notices expose a compact mobile follow-up strip", () => { + const landing = extractBetween(APP, "function renderMainAgentLandingNotice(screenKey)", "function renderEmptyState(title, description)"); + assert.match(landing, /mobile-only compact-summary-row/); + assert.match(landing, /mobile-only mobile-flow-focus-card/); + assert.match(landing, /主 Agent 结果/); + assert.match(landing, /继续处理/); +}); + test("key workbench screens expose contextual handoff-to-main-agent actions", () => { const discovery = extractBetween(APP, "function renderDiscoveryScreen()", "function renderTrackingScreen()"); const tracking = extractBetween(APP, "function renderTrackingScreen()", "function renderAutomationScreen()");