diff --git a/.changeset/fn-7607-manual-pr-flow.md b/.changeset/fn-7607-manual-pr-flow.md new file mode 100644 index 0000000000..9a4af33b9c --- /dev/null +++ b/.changeset/fn-7607-manual-pr-flow.md @@ -0,0 +1,7 @@ +--- +"@runfusion/fusion": patch +--- + +summary: Fix manual PR actions hidden when a task auto-merge override was on but global auto-merge was off. +category: fix +dev: TaskDetailModal isManualPrFlow now keys off live global autoMergeEnabled, not the per-task effective override (regression from FN-7255). diff --git a/packages/dashboard/app/components/TaskDetailModal.tsx b/packages/dashboard/app/components/TaskDetailModal.tsx index a1edff3916..3f6f8fc86b 100644 --- a/packages/dashboard/app/components/TaskDetailModal.tsx +++ b/packages/dashboard/app/components/TaskDetailModal.tsx @@ -3130,7 +3130,19 @@ export function TaskDetailContent({ const mergeStrategy = settings?.mergeStrategy ?? "direct"; const autoMergeEnabled = autoMergeEnabledProp ?? (settings?.autoMerge ?? false); const effectiveAutoMerge = resolveEffectiveAutoMerge({ autoMerge: task.autoMerge }, { autoMerge: autoMergeEnabled }); - const isManualPrFlow = mergeStrategy === "pull-request" && !effectiveAutoMerge; + /* + FNXC:TaskDetailPr 2026-07-05-19:45: + Manual PR flow visibility must follow the LIVE GLOBAL auto-merge setting + (`autoMergeEnabled`), not the per-task effective auto-merge override + (`effectiveAutoMerge`). Otherwise a per-task auto-merge override of `true` + hides manual PR affordances even when global auto-merge is off, stranding + the user with no way to manually open/manage the PR (FN-7607; regression + introduced by FN-7255 / commit 924bcb97d, which switched this from + `!autoMergeEnabled` to `!effectiveAutoMerge`). The `autoMerge` prop passed + to PrPanel stays `effectiveAutoMerge` — only this flow-gating boolean is + keyed off the live global setting. + */ + const isManualPrFlow = mergeStrategy === "pull-request" && !autoMergeEnabled; /* FNXC:PlannerOversight 2026-07-04-17:00: FN-7517 enablement rules for the nudge/stop/explain controls. Nudge and diff --git a/packages/dashboard/app/components/__tests__/TaskDetailModal.attachments-and-tabs.test.tsx b/packages/dashboard/app/components/__tests__/TaskDetailModal.attachments-and-tabs.test.tsx index d61fdde6b1..959a10ec4b 100644 --- a/packages/dashboard/app/components/__tests__/TaskDetailModal.attachments-and-tabs.test.tsx +++ b/packages/dashboard/app/components/__tests__/TaskDetailModal.attachments-and-tabs.test.tsx @@ -483,9 +483,19 @@ describe("TaskDetailModal", () => { describe("tab toggle", () => { it("restores planner Chat as the omitted non-done default when Chat-first is enabled", () => { + /* + FNXC:PlannerOversight 2026-07-05-19:45: + FN-7510 made DEFAULT_PLANNER_OVERSIGHT_LEVEL = "autonomous", so a task + fixture with no per-task override and no resolvable workflow now + legitimately resolves oversight-active, which surfaces an additional + "Interventions" Activity-view option. This test's intent is to assert + Chat-first default routing (the omitted-tab default lands on Chat), not + oversight gating, so pin plannerOversightLevel: "off" to keep the + three-label Activity-view assertion meaningful and honest (FN-7607). + */ const { container } = render(