feat(run): start a resume as soon as its session is picked
Picking a session in the setup form's resume picker only staged the selection: the user still had to type a prompt and press Run before the lane's tmux session was started with `--resume`. A resume carries its own transcript, so there was nothing to type. The picker now fires the start directly with the picked session (passed explicitly, since the parent's state has not landed on that tick), sends the session's own cwd — which is what the locked cwd field already displays — and the Run button no longer requires a prompt while a resume is selected. Fresh runs still require one.
This commit is contained in:
@@ -201,6 +201,32 @@ describe("RunSetup — resume picker scopes sessions to the selected lane", () =
|
||||
);
|
||||
});
|
||||
|
||||
it("starts the resume immediately when a session is picked", async () => {
|
||||
const { api } = await import("../../../lib/api");
|
||||
vi.mocked(api.sessions.list).mockResolvedValue({
|
||||
sessions: [
|
||||
{ id: "sess-in-lane", cwd: "/Users/tester/lane-a", started_at: "", status: "completed" },
|
||||
],
|
||||
total: 1,
|
||||
limit: 100,
|
||||
offset: 0,
|
||||
} as never);
|
||||
|
||||
const { spies } = renderSetup({ laneCwd: "/Users/tester/lane-a", prompt: "" });
|
||||
fireEvent.click(screen.getByText(i18n.t("run:resume.resumeOption")));
|
||||
fireEvent.click(screen.getByText(i18n.t("run:resume.pickSession")));
|
||||
fireEvent.click(await screen.findByText("/Users/tester/lane-a"));
|
||||
|
||||
expect(spies.onResumeSessionChange).toHaveBeenCalledWith(
|
||||
expect.objectContaining({ id: "sess-in-lane" })
|
||||
);
|
||||
// No prompt typed, no Run click - the pick itself is the start, and it
|
||||
// carries the session's own cwd rather than the form's.
|
||||
expect(spies.onStart).toHaveBeenCalledWith(
|
||||
expect.objectContaining({ resumeSessionId: "sess-in-lane", cwd: "/Users/tester/lane-a" })
|
||||
);
|
||||
});
|
||||
|
||||
it("lists everything when no lane is selected", async () => {
|
||||
const { api } = await import("../../../lib/api");
|
||||
renderSetup({ laneCwd: undefined });
|
||||
|
||||
Reference in New Issue
Block a user