fix(workspace): stop false stage-mismatch warning, cap info panel height

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.
This commit is contained in:
2026-08-14 16:56:52 +07:00
parent a2b5fa4669
commit 3ae0d00b0c
+6 -3
View File
@@ -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() {
</div>
</div>
{showInfo && (
<>
<div className="max-h-[45vh] shrink-0 overflow-y-auto">
<div className="mb-3 flex flex-wrap items-baseline gap-2">
<span className="text-[11px] font-semibold uppercase tracking-widest text-fg-muted">
{tLanes("cardId", { id: currentLane.id })}
@@ -688,7 +691,7 @@ export function Workspace() {
))}
</div>
)}
</>
</div>
)}
<div className="flex min-h-0 flex-1 flex-col gap-2 border-t border-border pt-3">
<ConsoleArea