diff --git a/.changeset/fn-071-clear-description-delete.md b/.changeset/fn-071-clear-description-delete.md new file mode 100644 index 0000000000..3c302879da --- /dev/null +++ b/.changeset/fn-071-clear-description-delete.md @@ -0,0 +1,7 @@ +--- +"@runfusion/fusion": patch +--- + +summary: Clear a Task Detail description to delete the task through configured confirmation. +category: fix +dev: Reuses the existing task deletion lifecycle and confirmation preference. diff --git a/docs/dashboard-guide.md b/docs/dashboard-guide.md index d079a9f755..c77458bc7d 100644 --- a/docs/dashboard-guide.md +++ b/docs/dashboard-guide.md @@ -368,6 +368,7 @@ FNXC:PlannerOversight 2026-07-18-12:00: FN-8247 requires Stop to disable both li FNXC:PlannerOversight 2026-07-18-14:00: FN-8263 requires the task-detail Eye to remain visible and lit for an effective session advisor even when lifecycle oversight is off or awaiting workflow resolution. Advisor-only menus expose only the advisor toggle; lifecycle controls wait for resolved active oversight. --> - The task detail modal's inline meta-controls cluster follows Quick Add order: compact **Attach file** (`data-testid="detail-inline-attach"`), eligible-task **GitHub tracking** toggle (`data-testid="detail-inline-github-toggle"`), **Oversight**, Priority, and Execution mode. Attach opens the existing task attachment picker; GitHub toggles the existing tracking setting and is omitted for GitLab-tracked or non-editable tasks. The Oversight control exposes planner-overseer actions behind a compact **"Oversight" overflow-menu button** (`data-testid="detail-oversight-menu-trigger"`, `Eye` when the oversight level is active or the Session advisor is enabled, otherwise `EyeOff`, `aria-haspopup="menu"`) on every viewport, desktop and mobile alike. Clicking the trigger opens a `role="menu"` popover (mirroring the existing move-action dropdown pattern) containing: a **quick oversight-level select** (`data-testid="detail-oversight-level-select"`) that writes the per-task `plannerOversightLevel` override (Off/Observe/Steer/Autonomous recovery) or clears it back to the inherited workflow/project default via an "Inherit" option; a **manual nudge** button (`data-testid="detail-overseer-nudge"`) that asks the overseer to inject one guidance-only steering comment into the currently watched stage right now (never a merge/PR/destructive action), disabled when the overseer is off/inactive or the task is user-paused/done/archived/`autoMerge:false` in-review; a **Stop** button (`data-testid="detail-overseer-stop"`) that disables both active lifecycle oversight and the session advisor for the task (confirmation-gated), including its live advisor runtime; it is hidden once oversight is already off; and an **explain current action** button (`data-testid="detail-overseer-explain"`) that toggles a small read-only panel (`data-testid="detail-overseer-explain-panel"`) showing the overseer's watched stage, reason, last action, and attempt count/limit, with a non-empty-shell inactive state when the overseer is not currently watching. All three action controls call the `POST /tasks/:id/overseer/nudge`, `POST /tasks/:id/overseer/stop`, and `GET /tasks/:id/overseer/explain` routes. The trigger is withheld only for an unresolved task with neither lifecycle oversight controls nor a session-advisor applicability signal. When the effective session advisor is on (task override, project default, or workflow legacy setting), it remains visible and lit even while lifecycle oversight is off or unresolved; toggling it repaints the icon immediately. In the advisor-only unresolved state, the menu contains only the Session advisor toggle: the level select, Nudge, Stop, Explain, and Interventions controls remain hidden until lifecycle oversight resolves and is active. +- In an editable Task Detail, clearing a previously populated description and saving starts the standard task deletion flow instead of saving a blank description. **Settings → Global → General → Skip confirmation dialogs for critical actions** controls this deletion just as it controls other destructive task actions: disabled shows the centralized confirmation dialog; enabled accepts its primary deletion action without showing a dialog. - The controls inside the Oversight menu carry a visible, non-interactive **`"Overseer controls"` group label** (`data-testid="detail-oversight-controls-label"`) so Nudge/Stop/Explain read as an identifiable cluster rather than unlabeled entries; the label is gated by the same `(hasTaskOversightOverride || workflowOversightResolved) && !oversightIsOff` condition as the buttons, so it never renders when oversight is Off/unresolved (opening the menu in that state shows only the level select). When **Nudge** is disabled, an always-visible helper line (`data-testid="detail-overseer-nudge-disabled-reason"`) states the reason in-DOM (mirroring the existing hover `title`) instead of relying on a mouse-hover tooltip alone. **Explain** is read-only and non-mutating, so it is never disabled purely because the overseer is inactive — clicking it always opens/closes the panel, which shows the overseer's live state when watching or an informative "not currently watching this task" message otherwise. Nudge's mutating enablement rule (`canNudgeOverseer`, including the human-control suppression cases) and Stop's confirmation dialog are unchanged.