feat(lanes): surface child worktrees on a lane card + detect Superpowers skills
Adopting the main repo as its own lane now gets stage detection (cwd matches, same as any other lane), and its card lists every managed-worktree lane provisioned from it with a jump-to link. Also add the two missing Skill-tool detect rules (implement, ship) so detection covers all four Superpowers workflow phases, not just plan/review.
This commit is contained in:
@@ -54,6 +54,7 @@ function makeLane(overrides: Partial<Lane> = {}): Lane {
|
||||
cwd: "/work/demo",
|
||||
branch: "lane/demo",
|
||||
kind: "adopted",
|
||||
source_repo: null,
|
||||
pipeline: "default",
|
||||
session_id: null,
|
||||
run_id: null,
|
||||
@@ -90,6 +91,31 @@ describe("LaneCard status badge", () => {
|
||||
}
|
||||
});
|
||||
|
||||
describe("LaneCard child worktrees", () => {
|
||||
it("lists worktrees provisioned from this lane and jumps to one on click", async () => {
|
||||
const onSelectLane = vi.fn();
|
||||
const worktree = makeLane({ id: 8, title: "Worktree A", status: "running" });
|
||||
render(
|
||||
<LaneCard
|
||||
lane={makeLane({ id: 1 })}
|
||||
onAction={vi.fn()}
|
||||
childWorktrees={[worktree]}
|
||||
onSelectLane={onSelectLane}
|
||||
/>
|
||||
);
|
||||
|
||||
expect(screen.getByTestId("lane-child-worktrees")).toBeInTheDocument();
|
||||
const user = userEvent.setup();
|
||||
await user.click(screen.getByRole("button", { name: /Worktree A/ }));
|
||||
expect(onSelectLane).toHaveBeenCalledWith(8);
|
||||
});
|
||||
|
||||
it("renders nothing when there are no child worktrees", () => {
|
||||
render(<LaneCard lane={makeLane({ id: 1 })} onAction={vi.fn()} />);
|
||||
expect(screen.queryByTestId("lane-child-worktrees")).not.toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
const pipelineNodes: Lane["pipeline_nodes"] = [
|
||||
{ id: "intake", label: "intake", icon: "📥", gate: false, state: "done" },
|
||||
{ id: "plan", label: "plan", icon: "🧭", gate: false, state: "done" },
|
||||
|
||||
Reference in New Issue
Block a user