From 3cd5695f52b78042ad331442118b8d70a93119e7 Mon Sep 17 00:00:00 2001 From: gsxdsm Date: Tue, 30 Jun 2026 10:40:49 -0700 Subject: [PATCH] FN-7288: remove quick-add Plan buttons Remove quick-add planning buttons from board create surfaces while preserving other planning entry points. - Remove the Plan button, icon imports, handlers, test id, disabled state, tooltip, and click targets from QuickEntryBox and InlineCreateCard. - Update quick-add and mobile board tests to assert the Plan affordance is absent while task creation and Subtask behavior remain available. - Refresh dashboard docs and add a patch changeset describing the quick-add Plan removal. Files changed: .changeset/fn-7288-remove-quick-add-plan-button.md | 7 + docs/dashboard-guide.md | 4 +- docs/getting-started.md | 2 +- docs/workflow-steps.md | 2 +- .../dashboard/app/components/InlineCreateCard.tsx | 38 +--- .../dashboard/app/components/QuickEntryBox.tsx | 38 +--- .../components/__tests__/InlineCreateCard.test.tsx | 56 +++--- .../components/__tests__/QuickEntryBox.test.tsx | 196 +++++---------------- .../app/components/__tests__/board-mobile.test.tsx | 6 +- 9 files changed, 97 insertions(+), 252 deletions(-) Fusion-Task-Id: FN-7288 Fusion-Task-Lineage: b4a5d6b6-83e7-4b0c-a38d-6ff36d8cd97e Co-authored-by: Fusion (runfusion.ai) --- .../fn-7288-remove-quick-add-plan-button.md | 7 + docs/dashboard-guide.md | 4 +- docs/getting-started.md | 2 +- docs/workflow-steps.md | 2 +- .../app/components/InlineCreateCard.tsx | 38 +--- .../app/components/QuickEntryBox.tsx | 38 +--- .../__tests__/InlineCreateCard.test.tsx | 56 +++-- .../__tests__/QuickEntryBox.test.tsx | 196 ++++-------------- .../__tests__/board-mobile.test.tsx | 6 +- 9 files changed, 97 insertions(+), 252 deletions(-) create mode 100644 .changeset/fn-7288-remove-quick-add-plan-button.md diff --git a/.changeset/fn-7288-remove-quick-add-plan-button.md b/.changeset/fn-7288-remove-quick-add-plan-button.md new file mode 100644 index 0000000000..bc6d6b63fd --- /dev/null +++ b/.changeset/fn-7288-remove-quick-add-plan-button.md @@ -0,0 +1,7 @@ +--- +"@runfusion/fusion": patch +--- + +summary: Remove the board quick-add Plan button while keeping New Task planning available. +category: fix +dev: QuickEntryBox and InlineCreateCard no longer render data-testid="plan-button" or Plan click targets. diff --git a/docs/dashboard-guide.md b/docs/dashboard-guide.md index 18b39d2a71..bd13e6739a 100644 --- a/docs/dashboard-guide.md +++ b/docs/dashboard-guide.md @@ -346,7 +346,7 @@ These values are sent with the Planning Mode create-task request as `branchSelec -When inline quick-create, Planning Mode, or Subtask Breakdown is opened from a workflow-filtered board/list lane, the create request also carries that active workflow selection. Quick-created tasks appear on the selected workflow lane immediately while board-workflows metadata refreshes, and planning saves, planning breakdown saves, and subtask-breakdown saves create their tasks directly on the selected workflow lane instead of briefly landing on the default board. When Board is showing **All workflows**, quick-create uses the real workflow intake/default column that owns the affordance; it never submits the synthetic aggregate as a workflow id. +When quick-create task creation, Planning Mode, or Subtask Breakdown runs from a workflow-filtered board/list lane, the create request also carries that active workflow selection. Quick-created tasks appear on the selected workflow lane immediately while board-workflows metadata refreshes, and planning saves, planning breakdown saves, and subtask-breakdown saves create their tasks directly on the selected workflow lane instead of briefly landing on the default board. When Board is showing **All workflows**, quick-create uses the real workflow intake/default column that owns the affordance; it never submits the synthetic aggregate as a workflow id. The **New Task** dialog's workflow selector also defaults to the current or last selected Board/List workflow lane for the current project. If no valid lane has been selected, or the remembered lane was deleted, the selector falls back to the project default workflow and task creation omits an explicit `workflowId`. @@ -373,7 +373,7 @@ Rules: - `Merge target / base branch` stays optional for all modes and uses the same branch-dropdown + `Custom…` fallback behavior as Planning Mode. - In **More options → Model Configuration**, **Auto-merge** is a per-task override with three states: **Default** (follow project setting), **Enabled**, or **Disabled**. -The dialog also exposes the board quick-add AI handoffs: **Plan** opens Planning Mode with the current description, and **Subtask** opens Subtask Breakdown with the current description when **Settings → Experimental Features → Subtask Breakdown** is enabled. The Subtask handoff is hidden by default; visible handoff buttons remain disabled until the description has content, matching the quick-add row behavior. **Execution mode** and optional workflow-step selection are available in the New Task dialog as well as quick entry, so users can choose Fast or standard execution and opt into workflow-specific creation-time steps before creating a task from either surface. +The dialog also exposes AI handoffs that quick-add no longer shows: **Plan** opens Planning Mode with the current description, and **Subtask** opens Subtask Breakdown with the current description when **Settings → Experimental Features → Subtask Breakdown** is enabled. The Subtask handoff is hidden by default; visible handoff buttons remain disabled until the description has content, matching the quick-add row behavior for Subtask. **Execution mode** and optional workflow-step selection are available in the New Task dialog as well as quick entry, so users can choose Fast or standard execution and opt into workflow-specific creation-time steps before creating a task from either surface. The full **New Task** dialog includes a compact **GitHub issue or PR** picker near the description. It detects GitHub remotes for the current project, auto-selects a single remote or `origin`, and asks you to choose a remote when multiple non-`origin` remotes are available. Selecting an issue replaces the description with a prompt that tells the executor to fetch/read the issue and includes `Source: `; selecting a pull request creates a PR-focused prompt with `PR: ` and explicit instructions to inspect the PR conversation, review comments, checks, and changed files, then resolve or address actionable review comments. If you already typed a description, Fusion asks before replacing it. This picker only seeds the prompt; it does not import, close, or comment on GitHub items. On mobile, the full-screen New Task sheet keeps the GitHub picker, dependency picker, agent picker, quick handoff buttons, and action row tappable and scrollable even when the keyboard reduces the visual viewport. diff --git a/docs/getting-started.md b/docs/getting-started.md index 86277902ff..14dbcb4ec2 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -114,7 +114,7 @@ Create tasks from the board or CLI. ### Option B: Planning -Open **Planning** from the left sidebar on desktop/tablet, or use the board/New Task **Plan** action to send your draft into AI planning mode: +Open **Planning** from the left sidebar on desktop/tablet, or use the **New Task** dialog's **Plan** action to send your draft into AI planning mode: - Fusion asks clarifying questions - Produces a structured summary diff --git a/docs/workflow-steps.md b/docs/workflow-steps.md index a7ef857777..d9aeeb26c8 100644 --- a/docs/workflow-steps.md +++ b/docs/workflow-steps.md @@ -81,7 +81,7 @@ Use this inventory as the documentation map for current workflow behavior: | Agent workflow tools | Agents can list/get/create/update/delete workflows, inspect traits, read/write workflow settings, select workflows for explicit task contexts, and pass `workflow_id` when creating/delegating tasks. Prompt-injectable lanes strip approval-bypass flags on workflow writes. | [Agents](./agents.md#interactive-cli-chat) and [CLI Reference](./cli-reference.md#published-agent-extension-workflow-tools). | | Routing boundary | Agents may select/change a workflow only for explicit user requests or tasks they created; no-commit markers do not imply Quick fix or any other workflow. | This page, [Selecting workflows](#selecting-workflows); [Agents](./agents.md#interactive-cli-chat). | | Dashboard board/list/graph selection | Board/List/Header/Graph share durable per-project workflow selection; stale saved ids fall back to a valid workflow. Board adds a dashboard-only **All workflows** aggregate and task workflow-name badges; Graph uses **All workflows** for the full active graph. | [Dashboard Guide → Board View](./dashboard-guide.md#board-view), [Graph View](./dashboard-guide.md#graph-view), and [Workflow Selection and Editor](./dashboard-guide.md#workflow-selection-and-editor). | -| Create/planning forwarding | Inline quick-create, Planning Mode, Subtask Breakdown, and the New Task dialog forward the active real workflow id when creating tasks; **All workflows** quick-create chooses a real workflow intake/default column instead of saving a synthetic aggregate id. | [Dashboard Guide → Planning Mode](./dashboard-guide.md#planning-mode). | +| Create/planning forwarding | Quick-create task creation, Planning Mode, Subtask Breakdown, and the New Task dialog forward the active real workflow id when creating tasks; **All workflows** quick-create chooses a real workflow intake/default column instead of saving a synthetic aggregate id. | [Dashboard Guide → Planning Mode](./dashboard-guide.md#planning-mode). | ### Skill-backed workflow steps diff --git a/packages/dashboard/app/components/InlineCreateCard.tsx b/packages/dashboard/app/components/InlineCreateCard.tsx index 4feec3e9cb..81b9bab968 100644 --- a/packages/dashboard/app/components/InlineCreateCard.tsx +++ b/packages/dashboard/app/components/InlineCreateCard.tsx @@ -2,7 +2,7 @@ import "./InlineCreateCard.css"; import { useState, useCallback, useEffect, useRef } from "react"; import { createPortal } from "react-dom"; import { useTranslation } from "react-i18next"; -import { Brain, Link, Lightbulb, ListTree, Zap, ChevronDown, ChevronUp, Bot, Maximize2, Minimize2, Server } from "lucide-react"; +import { Brain, Link, ListTree, Zap, ChevronDown, ChevronUp, Bot, Maximize2, Minimize2, Server } from "lucide-react"; import { DEFAULT_TASK_PRIORITY, TASK_PRIORITIES, type Task, type TaskPriority, type Settings, type ResolvedWorkflowOptionalStep } from "@fusion/core"; import { getErrorMessage } from "@fusion/core"; import type { ToastType } from "../hooks/useToast"; @@ -39,7 +39,7 @@ interface InlineCreateCardProps { */ availableModels?: ModelInfo[]; /** - * Called when the user clicks the "Plan" button to open planning mode. + * Preserved for shared create-surface prop compatibility. Inline quick-create intentionally omits Plan. */ onPlanningMode?: (initialPlan: string, workflowId?: string | null) => void; /** @@ -82,7 +82,6 @@ export function InlineCreateCard({ addToast, projectId, availableModels, - onPlanningMode, onSubtaskBreakdown, }: InlineCreateCardProps) { const { t } = useTranslation("app"); @@ -693,23 +692,10 @@ export function InlineCreateCard({ e.preventDefault(); }, []); - const handlePlanClick = useCallback(() => { - const trimmed = description.trim(); - if (!trimmed) { - addToast(t("inline.enterDescriptionFirst", "Enter a description first"), "error"); - return; - } - if (selectedWorkflowId !== null) { - onPlanningMode?.(trimmed, selectedWorkflowId); - } else { - onPlanningMode?.(trimmed); - } - /* - FNXC:QuickAddPlanningPreserve 2026-06-22-00:00: - Opening planning mode must keep the inline-create description and scoped draft available when the user exits without creating tasks. Planning completion owns the eventual draft clear. - */ - }, [description, onPlanningMode, selectedWorkflowId, addToast, t]); - + /* + FNXC:InlineCreate 2026-06-30-00:00: + Inline quick-create intentionally omits the Plan button, icon, disabled state, tooltip, and click target while preserving Subtask and task creation controls. + */ const handleSubtaskClick = useCallback(() => { const trimmed = description.trim(); if (!trimmed) { @@ -881,18 +867,6 @@ export function InlineCreateCard({ {isExpanded && (
- {/* FNXC:QuickAddSubtaskFlag 2026-06-21-00:00: Render no Subtask button or orphaned inline-create click target unless the default-off `subtaskBreakdown` experiment wires this callback. */} {onSubtaskBreakdown && ( {/* FNXC:QuickAddSubtaskFlag 2026-06-21-00:00: Render no Subtask button or click target unless App wires the default-off `subtaskBreakdown` experiment callback. */} {onSubtaskBreakdown && (