From ec55889605f5d4655ecf285e4c86fb0a561ecc97 Mon Sep 17 00:00:00 2001
From: gsxdsm
Date: Fri, 31 Jul 2026 23:53:38 -0700
Subject: [PATCH] FN-8674: add plan approval banner actions
Place plan approval controls alongside the task approval message for faster operator action.
- Add approve and reject controls to the plan-approval banner.
- Reuse existing approval handlers and add coverage for banner and footer actions.
- Add responsive banner action styling and a patch changeset.
Files changed:
.changeset/plan-approval-banner-actions.md | 7 +++
.../dashboard/app/components/TaskDetailModal.css | 14 +++++
.../dashboard/app/components/TaskDetailModal.tsx | 19 ++++++-
.../TaskDetailModal.definition-actions.test.tsx | 59 +++++++++++++++++-----
4 files changed, 85 insertions(+), 14 deletions(-)
Fusion-Task-Id: FN-8674
Fusion-Task-Lineage: 89c521c2-535d-4492-8b39-6e1517693218
Co-authored-by: Fusion (runfusion.ai)
---
.changeset/plan-approval-banner-actions.md | 7 +++
.../app/components/TaskDetailModal.css | 14 +++++
.../app/components/TaskDetailModal.tsx | 19 +++++-
...askDetailModal.definition-actions.test.tsx | 59 +++++++++++++++----
4 files changed, 85 insertions(+), 14 deletions(-)
create mode 100644 .changeset/plan-approval-banner-actions.md
diff --git a/.changeset/plan-approval-banner-actions.md b/.changeset/plan-approval-banner-actions.md
new file mode 100644
index 0000000000..281d554167
--- /dev/null
+++ b/.changeset/plan-approval-banner-actions.md
@@ -0,0 +1,7 @@
+---
+"@runfusion/fusion": patch
+---
+
+summary: Place plan approval actions alongside the task approval message.
+category: fix
+dev: The task-detail approval banner now reuses the footer approval handlers and visibility gate.
diff --git a/packages/dashboard/app/components/TaskDetailModal.css b/packages/dashboard/app/components/TaskDetailModal.css
index 0a709a5644..0115856b14 100644
--- a/packages/dashboard/app/components/TaskDetailModal.css
+++ b/packages/dashboard/app/components/TaskDetailModal.css
@@ -3727,6 +3727,20 @@ Reuse the near-duplicate banner layout; replan-cap escalations use a stronger wa
line-height: 1.45;
}
+.detail-plan-approval-banner__actions {
+ display: flex;
+ flex-wrap: wrap;
+ gap: var(--space-sm);
+ margin-top: var(--space-xs);
+}
+
+@media (max-width: 768px) {
+ .detail-plan-approval-banner__actions {
+ flex-direction: column;
+ align-items: flex-start;
+ }
+}
+
.detail-near-duplicate-banner__header {
display: flex;
align-items: center;
diff --git a/packages/dashboard/app/components/TaskDetailModal.tsx b/packages/dashboard/app/components/TaskDetailModal.tsx
index b018e0433c..fe0a5c09e6 100644
--- a/packages/dashboard/app/components/TaskDetailModal.tsx
+++ b/packages/dashboard/app/components/TaskDetailModal.tsx
@@ -4736,6 +4736,21 @@ export function TaskDetailContent({
"This project's plan-approval settings require a human decision before work starts. Review the plan below, then Approve Plan to continue to Todo or Reject Plan to regenerate it.",
)}
+ {/*
+ FNXC:PlanApproval 2026-08-01-06:34:
+ Approval actions must sit beside the top approval message as well as in the persistent footer,
+ so an operator can act without scrolling through a long task body.
+ */}
+ {workingTask.prompt && (
+