diff --git a/web/hwlab-cloud-web/scripts/workbench-layout.test.ts b/web/hwlab-cloud-web/scripts/workbench-layout.test.ts new file mode 100644 index 00000000..771c4fba --- /dev/null +++ b/web/hwlab-cloud-web/scripts/workbench-layout.test.ts @@ -0,0 +1,15 @@ +// SPEC: PJ2026-010401 Web工作台. +// Responsibility: Keep the conversation as the dominant Workbench surface. + +import assert from "node:assert/strict"; +import fs from "node:fs"; +import test from "node:test"; + +const viewSource = fs.readFileSync(new URL("../src/views/workbench/CodeWorkbenchView.vue", import.meta.url), "utf8"); +const styleSource = fs.readFileSync(new URL("../src/styles/workbench.css", import.meta.url), "utf8"); + +test("Workbench gives the former node-ops pane width to the conversation", () => { + assert.doesNotMatch(viewSource, /HwpodNodeOpsPanel|workbench-tools-column/u); + assert.match(styleSource, /\.workbench-grid\s*\{[^}]*grid-template-columns:\s*auto minmax\(0, 1fr\);/su); + assert.doesNotMatch(styleSource, /\.workbench-tools-column\s*\{/u); +}); diff --git a/web/hwlab-cloud-web/src/styles/workbench.css b/web/hwlab-cloud-web/src/styles/workbench.css index 5b47d691..7ed1be8e 100644 --- a/web/hwlab-cloud-web/src/styles/workbench.css +++ b/web/hwlab-cloud-web/src/styles/workbench.css @@ -5,7 +5,7 @@ display: grid; min-height: 0; height: 100%; - grid-template-columns: auto minmax(0, 1fr) minmax(280px, 360px); + grid-template-columns: auto minmax(0, 1fr); gap: 8px; } @@ -115,15 +115,6 @@ overscroll-behavior: contain; } -.workbench-tools-column { - display: grid; - min-height: 0; - min-width: 0; - grid-template-rows: minmax(260px, 0.95fr) minmax(240px, 1fr); - gap: 8px; - overflow: hidden; -} - .caserun-panel { align-content: stretch; grid-template-rows: auto auto auto minmax(96px, 1fr) auto; @@ -1507,8 +1498,7 @@ .session-rail, .workbench-center, .hwpod-panel, - .caserun-panel, - .workbench-tools-column { + .caserun-panel { min-height: 0; } @@ -1531,7 +1521,6 @@ grid-template-rows: auto minmax(0, 1fr); } - .workbench-tools-column, .hwpod-panel, .caserun-panel { display: none; diff --git a/web/hwlab-cloud-web/src/views/workbench/CodeWorkbenchView.vue b/web/hwlab-cloud-web/src/views/workbench/CodeWorkbenchView.vue index b890ea3b..cf5b25cb 100644 --- a/web/hwlab-cloud-web/src/views/workbench/CodeWorkbenchView.vue +++ b/web/hwlab-cloud-web/src/views/workbench/CodeWorkbenchView.vue @@ -8,7 +8,6 @@ import CommandComposer from "@/components/workbench/CommandComposer.vue"; import ConversationPanel from "@/components/workbench/ConversationPanel.vue"; import SessionRail from "@/components/workbench/SessionRail.vue"; import WorkbenchKafkaDebugPanel from "@/components/workbench/WorkbenchKafkaDebugPanel.vue"; -import HwpodNodeOpsPanel from "@/components/hwpod/HwpodNodeOpsPanel.vue"; import { useAutoRefresh } from "@/composables/useAutoRefresh"; import { shouldReflectWorkbenchSessionUrl } from "@/router/workbench-navigation"; import { workbenchDebugCapabilities } from "@/config/runtime"; @@ -150,9 +149,6 @@ async function reflectActiveSessionInUrl(value: string | null): Promise { -
- -