fix(workbench): refine agent dock and smooth map resizing

Unify dock surfaces, headers and dividers, and remove the visible context strip.
Limit pointer resizing to 400-640px and reveal the edge grip on hover.
Resize and redraw the map in the same layout cycle to prevent blanking and lag.
Preserve horizontal centering during conversation control press feedback.

Validation: isolated lint, typecheck, 21 focused unit tests, and 10 relevant
browser checks passed. Snapshot baselines regenerated from the isolated change.
The existing mobile alert summary test also fails on unchanged HEAD because
the expected demo alert source is unavailable in this environment.
This commit is contained in:
2026-10-08 17:34:42 +08:00
parent 7c6d06cb43
commit d2d705ed4c
19 changed files with 680 additions and 170 deletions
+25 -3
View File
@@ -65,6 +65,27 @@ test.describe("Main Frame workbench", () => {
});
});
test("map focus keeps pointer interaction borderless and uses the app focus style", async ({ page }) => {
await page.setViewportSize({ width: 1440, height: 900 });
await openWorkbench(page);
await openDesktopAgent(page);
const canvas = page.locator("#workspace-map .maplibregl-canvas");
const box = (await canvas.boundingBox())!;
await canvas.click({ position: { x: box.width / 2, y: box.height / 2 } });
await expect(canvas).toBeFocused();
await expect(canvas).toHaveCSS("outline-style", "none");
await expect(canvas).toHaveCSS("border-width", "0px");
await expect(page.locator("#main-workspace")).toHaveCSS("border-width", "0px");
await page.keyboard.press("Tab");
await canvas.focus();
expect(await canvas.evaluate((element) => element.matches(":focus-visible"))).toBe(true);
await expect(canvas).toHaveCSS("outline-style", "solid");
await expect(canvas).toHaveCSS("outline-width", "1px");
await expect(canvas).toHaveCSS("outline-color", "rgba(37, 99, 235, 0.34)");
await expect(canvas).toHaveCSS("outline-offset", "-1px");
await page.screenshot({ path: "test-results/agent-history-ui/map-pointer-focus.png" });
});
test("mobile layer panel keeps Tianditu choices usable", async ({ page }) => {
await page.setViewportSize({ width: 375, height: 812 });
await openWorkbench(page);
@@ -260,7 +281,8 @@ async function expectDesktopMainFrameGeometry(page: Page) {
const mapWindow = page.locator("#workspace-map");
const agentPanel = page.getByRole("complementary", { name: "Agent 命令面板" });
await expect(agentPanel).toHaveCSS("width", "500px");
await expect(agentPanel).toHaveCSS("border-top-right-radius", "16px");
await expect(agentPanel).toHaveCSS("border-radius", "0px");
await expect(agentPanel).toHaveCSS("border-right-width", "1px");
await expect(mapWindow).toHaveCSS("border-radius", "0px");
const workspaceBox = await workspace.boundingBox();
@@ -286,8 +308,8 @@ async function expectSolidMainFrameMaterials(page: Page) {
};
});
expect(materials.agentBackdrop).toBe("none");
expect(materials.agentBackground).toBe("oklch(0.965 0.012 248)");
expect(materials.agentShadow).not.toBe("none");
expect(materials.agentBackground).toBe("oklch(0.972 0.005 250)");
expect(materials.agentShadow).toBe("none");
}
async function expectLoadedChineseFont(page: Page) {