fix: keep RunSetup reachable with zero lanes, fix snapshot handling
Fixes regression from Tasks 1-2: 1. Run.defaultCwd.test.tsx was failing because LaneConsolePane wasn't rendering when no lane was selected (in layout-1 with zero lanes). 2. Added fallback rendering of LaneConsolePane in Workspace when !currentLane, so RunSetup stays reachable on fresh install. 3. Fixed early-return condition in LaneConsolePane to only show dropdown-only placeholder when showLaneSelector=true && laneId=null (split-view mode), not in layout-1 mode. 4. Added useEffect to sync cwd state with defaultCwd when it changes asynchronously from parent. 5. Updated LaneConsolePane tests to reflect correct behavior. 6. Regenerated snapshot to match layout-1 output.
This commit is contained in:
@@ -533,6 +533,26 @@ export function Workspace() {
|
||||
</section>
|
||||
)}
|
||||
|
||||
{!currentLane && (
|
||||
<div className="flex min-h-0 flex-col gap-2">
|
||||
<LaneConsolePane
|
||||
lanes={lanes}
|
||||
laneId={selectedLaneId}
|
||||
showLaneSelector={false}
|
||||
onLaneIdChange={(id) => setSelectedLaneId(id)}
|
||||
onLaneCreated={(lane) =>
|
||||
setLanes((prev) => (prev.some((l) => l.id === lane.id) ? prev : [...prev, lane]))
|
||||
}
|
||||
binaryStatus={binaryStatus}
|
||||
cwdSuggestions={cwdSuggestions}
|
||||
activeRuns={activeRuns}
|
||||
wsConnected={wsConnected}
|
||||
defaultCwd={defaultCwd}
|
||||
onHasActiveRunChange={setPaneHasActiveRun}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
|
||||
<AddLaneModal
|
||||
open={addLaneOpen}
|
||||
cwdSuggestions={cwdSuggestions}
|
||||
@@ -552,28 +572,6 @@ export function Workspace() {
|
||||
{tLanes("actionError", { message: laneActionError })}
|
||||
</p>
|
||||
)}
|
||||
|
||||
{/* No lane selected (none exist, or nothing picked yet): the console has
|
||||
nowhere to attach, so it falls back to page level. Without this the
|
||||
start form would be unreachable on a fresh install. */}
|
||||
{!currentLane && (
|
||||
<div className="flex min-h-0 flex-col gap-2">
|
||||
<LaneConsolePane
|
||||
lanes={lanes}
|
||||
laneId={selectedLaneId}
|
||||
showLaneSelector={true}
|
||||
onLaneIdChange={(id) => setSelectedLaneId(id)}
|
||||
onLaneCreated={(lane) =>
|
||||
setLanes((prev) => (prev.some((l) => l.id === lane.id) ? prev : [...prev, lane]))
|
||||
}
|
||||
binaryStatus={binaryStatus}
|
||||
cwdSuggestions={cwdSuggestions}
|
||||
activeRuns={activeRuns}
|
||||
wsConnected={wsConnected}
|
||||
defaultCwd={defaultCwd}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user