FN-5912: separate planning summary button loading states

Keep planning summary actions responsive with operation-specific loading indicators.

- pass separate single-task and breakdown loading flags into the planning summary view
- show the Creating spinner only on Create Single Task and the Breaking down spinner only on Break into Tasks while keeping the sibling action disabled
- add regression coverage for both pending-action paths and normalize the restart integration test temp worktree root under /private/tmp

Files changed:
 .../dashboard/app/components/PlanningModeModal.tsx |  14 ++-
 .../PlanningModeModal.planning-flow.test.tsx       | 138 +++++++++++++++++++++
 .../src/__tests__/restart.integration.test.ts      |   7 +-
 3 files changed, 151 insertions(+), 8 deletions(-)

Fusion-Task-Id: FN-5912

Fusion-Task-Lineage: b93da566-0c2b-4ff8-83ea-b6e009dfd650
This commit is contained in:
gsxdsm
2026-06-02 20:47:42 -07:00
parent 9a58c8efac
commit 6d3a077539
3 changed files with 151 additions and 8 deletions

View File

@@ -1298,7 +1298,8 @@ describe("Crash scenario edge cases", () => {
it("concurrent resumeOrphaned() calls don't double-execute the same task", async () => {
const store = createMockStore();
const worktreePath = "/tmp/test/.worktrees/swift-falcon";
const rootDir = "/private/tmp/test";
const worktreePath = `${rootDir}/.worktrees/swift-falcon`;
const task = makeTask("FN-092", "in-progress", {
worktree: worktreePath,
branch: "fusion/fn-092",
@@ -1314,7 +1315,7 @@ describe("Crash scenario edge cases", () => {
}
if (String(cmd) === "git worktree list --porcelain") {
return [
"worktree /tmp/test",
`worktree ${rootDir}`,
"HEAD abc123",
"branch refs/heads/main",
"",
@@ -1335,7 +1336,7 @@ describe("Crash scenario edge cases", () => {
},
} as any);
const executor = new TaskExecutor(store, "/tmp/test");
const executor = new TaskExecutor(store, rootDir);
// First call starts execution
const first = executor.resumeOrphaned();