From 3ae0d00b0c196e0ce20d83b12c16bcde736c7c11 Mon Sep 17 00:00:00 2001 From: nntrivi2001 Date: Fri, 14 Aug 2026 16:56:52 +0700 Subject: [PATCH] fix(workspace): stop false stage-mismatch warning, cap info panel height MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Undeclared lanes default stage to the DB sentinel "idle", which never matches a pipeline node — skip the mismatch warning in that case instead of showing a false lane-action-failed banner. Also cap the expandable lane-info block so it can't squeeze the console/split-view out of the fixed-height detail panel. --- client/src/pages/Workspace.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/client/src/pages/Workspace.tsx b/client/src/pages/Workspace.tsx index 4e8f9b8..24a1ab3 100644 --- a/client/src/pages/Workspace.tsx +++ b/client/src/pages/Workspace.tsx @@ -439,7 +439,10 @@ export function Workspace() { try { const { lane } = await api.lanes.update(id, { pipeline }); await refreshLanes(); - if (!lane.pipeline_nodes.some((n) => n.state === "current")) { + // `stage` defaults to the DB sentinel "idle" until a driving session ever + // calls `ccam stage` — that's the normal state for most lanes and never + // matches a real pipeline node, so it isn't a mismatch worth surfacing. + if (lane.stage !== "idle" && !lane.pipeline_nodes.some((n) => n.state === "current")) { setLaneActionError( tLanes("pipelinePicker.stageMismatch", { stage: lane.stage, @@ -559,7 +562,7 @@ export function Workspace() { {showInfo && ( - <> +
{tLanes("cardId", { id: currentLane.id })} @@ -688,7 +691,7 @@ export function Workspace() { ))}
)} - +
)}