diff --git a/.changeset/fn-7660-planning-label-consistency.md b/.changeset/fn-7660-planning-label-consistency.md new file mode 100644 index 0000000000..d7bbaa7e4e --- /dev/null +++ b/.changeset/fn-7660-planning-label-consistency.md @@ -0,0 +1,7 @@ +--- +"@runfusion/fusion": patch +--- + +summary: Built-in workflow boards and Automations editors now label the intake column "Planning", not "Triage". +category: fix +dev: board-workflows canonical label map BUILTIN_WORKFLOW_COLUMN_LABELS.triage was still "Triage", overriding FN-7599's IR rename; set to "Planning". English schedule.columnTriage/taskColumnTriage/triageColumn set to "Planning" and dashboard locale copy re-synced. Also fixed board.triage (AgentDetailView task-column badge) and docs/dashboard-guide.md references. Column id "triage" unchanged. diff --git a/docs/dashboard-guide.md b/docs/dashboard-guide.md index dfebec0f98..3d4053757d 100644 --- a/docs/dashboard-guide.md +++ b/docs/dashboard-guide.md @@ -219,9 +219,10 @@ FNXC:TaskCardMobileSelection 2026-07-01-00:00: Mobile Board long-press is a task - -- The Triage/Planning column actions dropdown includes **Auto-approve plan**. Turning it on sets the project plan approval mode to auto-approve all planned tasks; turning it off returns to the workflow/default plan approval behavior. In workflow-mode Boards, the same switch appears only on the intake/planning column and on the equivalent **All workflows** aggregate intake column — not on hold (Todo-like) or other lifecycle columns. Use Settings → Merge for the full three-state project control, including **Require approval for all tasks**. + +- The Planning column actions dropdown includes **Auto-approve plan**. Turning it on sets the project plan approval mode to auto-approve all planned tasks; turning it off returns to the workflow/default plan approval behavior. In workflow-mode Boards, the same switch appears only on the intake/planning column and on the equivalent **All workflows** aggregate intake column — not on hold (Todo-like) or other lifecycle columns. Use Settings → Merge for the full three-state project control, including **Require approval for all tasks**. - Column ordering semantics: `todo` mirrors scheduler pickup order (priority descending, then oldest `createdAt`, then task ID); `triage`, `in-progress`, `in-review`, and `archived` remain priority-first with task-ID tie-breaks; `done` defaults to most recent completion first (`columnMovedAt`, then `updatedAt`, then `createdAt` fallback) and can be switched from the Done/complete column actions dropdown to descending task ID. In workflow mode, non-archived columns marked with the `complete` flag use the same Done menu items even when their column ID or label is customized. - Done-column sorting has two descending modes: **Completion date (newest first)** keeps the default completion-time order, while **Task ID (newest first)** places the highest numeric task IDs first. The sort actions are only shown in Done/complete column action menus, including custom workflow completion lanes; Archive All Done lives in the same menu when available. - On mobile, both default and workflow-mode boards fill the project viewport while the column strip remains the internal horizontal scroller with contained edge overscroll. @@ -919,7 +920,7 @@ Features: - **Token Usage by Agent** includes task-derived token counts for ephemeral/task-worker system agents when system agents are shown, matching Agent detail and Command Center Team token surfaces. - Agent list cards show the configured **Model** or plugin **Runtime** for each agent, falling back to **Auto** when no override is set -- Agent list, live-agent, and detail task badges show the linked task ID with its current column when the task is non-terminal (for example `FN-6902 · Triage` or `FN-6902 · In Progress`). Terminal linked tasks are omitted, and unresolved column lookups render an explicit `Unresolved task` suffix so missing or deleted task links are not mistaken for healthy parked work. +- Agent list, live-agent, and detail task badges show the linked task ID with its current column when the task is non-terminal (for example `FN-6902 · Planning` or `FN-6902 · In Progress`). Terminal linked tasks are omitted, and unresolved column lookups render an explicit `Unresolved task` suffix so missing or deleted task links are not mistaken for healthy parked work. - First-run setup asks whether to create an optional project agent after project registration. The default template is **CEO**; users can choose another preset, use the AI interview when `experimentalFeatures.agentOnboarding` is enabled, or skip it. Fusion can still build tasks without an agent by starting temporary agents to plan, code, review, and merge task work. - Start, pause, stop, and trigger agent runs from the view and from detail panels - In **Agent detail**, use the kebab **Bulk agent actions** button in the header utility cluster (next to **Refresh** and **Close**) to run project-wide lifecycle transitions for non-ephemeral agents in the current project — **Pause All Agents** targets agents in the `active` or `running` state, while **Resume All Agents** targets agents in the `paused` state only diff --git a/packages/dashboard/app/components/AgentDetailView.tsx b/packages/dashboard/app/components/AgentDetailView.tsx index d6e3edb79f..9bf07867cc 100644 --- a/packages/dashboard/app/components/AgentDetailView.tsx +++ b/packages/dashboard/app/components/AgentDetailView.tsx @@ -2298,7 +2298,7 @@ function TasksTab({ {task.id} { ({ - triage: t("board.triage", "Triage"), + triage: t("board.triage", "Planning"), todo: t("board.todo", "Todo"), "in-progress": t("board.inProgress", "In Progress"), "in-review": t("board.inReview", "In Review"), diff --git a/packages/dashboard/app/components/RoutineEditor.tsx b/packages/dashboard/app/components/RoutineEditor.tsx index 83ced05aab..7caffe284d 100644 --- a/packages/dashboard/app/components/RoutineEditor.tsx +++ b/packages/dashboard/app/components/RoutineEditor.tsx @@ -703,7 +703,7 @@ export function RoutineEditor({ routine, onSubmit, onCancel, scope: formScope, p
diff --git a/packages/dashboard/app/components/ScheduleForm.tsx b/packages/dashboard/app/components/ScheduleForm.tsx index aac9a61b92..df108bd280 100644 --- a/packages/dashboard/app/components/ScheduleForm.tsx +++ b/packages/dashboard/app/components/ScheduleForm.tsx @@ -739,7 +739,7 @@ export function ScheduleForm({ schedule, onSubmit, onCancel, scope: formScope, p value={taskColumn} onChange={(e) => setTaskColumn(e.target.value)} > - + diff --git a/packages/dashboard/app/components/ScheduleStepsEditor.tsx b/packages/dashboard/app/components/ScheduleStepsEditor.tsx index 7d42cb82e5..3bb2c15f11 100644 --- a/packages/dashboard/app/components/ScheduleStepsEditor.tsx +++ b/packages/dashboard/app/components/ScheduleStepsEditor.tsx @@ -331,7 +331,7 @@ function StepEditor({ step, onSave, onCancel }: StepEditorProps) { value={taskColumn} onChange={(e) => setTaskColumn(e.target.value)} > - + {t("schedule.targetColumnHelp", "Column where the new task will be created")} diff --git a/packages/dashboard/src/routes/__tests__/board-workflows.test.ts b/packages/dashboard/src/routes/__tests__/board-workflows.test.ts index c4a0b8af77..dde887bc8d 100644 --- a/packages/dashboard/src/routes/__tests__/board-workflows.test.ts +++ b/packages/dashboard/src/routes/__tests__/board-workflows.test.ts @@ -81,14 +81,19 @@ describe("buildBoardWorkflowsPayload", () => { "done", "archived", ]); + // FN-7660: the intake column (id: "triage") displays as "Planning"; + // the id itself is unchanged. expect(defaultWf!.columns.map((c) => c.name)).toEqual([ - "Triage", + "Planning", "Todo", "In Progress", "In Review", "Done", "Archived", ]); + const intakeColumn = defaultWf!.columns.find((c) => c.id === "triage"); + expect(intakeColumn).toBeDefined(); + expect(intakeColumn!.name).toBe("Planning"); const inReview = defaultWf!.columns.find((c) => c.id === "in-review"); expect(inReview).toBeDefined(); expect(inReview!.flags.mergeBlocker).toBe(true); diff --git a/packages/dashboard/src/routes/board-workflows.ts b/packages/dashboard/src/routes/board-workflows.ts index 886b81ebc7..6e68226431 100644 --- a/packages/dashboard/src/routes/board-workflows.ts +++ b/packages/dashboard/src/routes/board-workflows.ts @@ -70,9 +70,17 @@ export interface BoardWorkflowsPayload { taskWorkflowIds: Record; } +/* + * FNXC:Workflows 2026-07-07-00:00: + * The canonical built-in lifecycle label for the intake column (id: "triage") + * is "Planning" — FN-7599 renamed the IR column name, but this override map + * was still clobbering it back to "Triage" for built-in workflows via + * describeColumns(ir, true). Do not re-clobber the IR rename (FN-7660); the + * column id itself remains "triage" everywhere (types, DB, transitions). + */ const BUILTIN_WORKFLOW_COLUMN_LABELS: Record = { ideas: "Ideas", - triage: "Triage", + triage: "Planning", todo: "Todo", "in-progress": "In Progress", "in-review": "In Review", diff --git a/packages/i18n/locales/en/app.json b/packages/i18n/locales/en/app.json index 3511a67f99..cab1e41738 100644 --- a/packages/i18n/locales/en/app.json +++ b/packages/i18n/locales/en/app.json @@ -1213,7 +1213,7 @@ "workflowMismatch": "Drag can't move a card between workflows. Use the workflow switcher instead." }, "todo": "To Do", - "triage": "Triage", + "triage": "Planning", "workflow": { "edit": "Edit workflows", "new": "New workflow" @@ -5295,7 +5295,7 @@ "catchUpPolicyRunOne": "Run the most recent missed run", "catchUpPolicySkip": "Skip missed runs", "columnTodo": "To Do", - "columnTriage": "Triage", + "columnTriage": "Planning", "command": "Command", "commandHelp": "Shell command to execute. Runs with your user permissions.", "commandHint": "Shell command to execute.", @@ -5473,7 +5473,7 @@ "targetColumnLabel": "Target Column", "taskColumnLabel": "Target Column", "taskColumnTodo": "To Do", - "taskColumnTriage": "Triage", + "taskColumnTriage": "Planning", "taskDescription": "Task Description *", "taskDescriptionHelp": "Describes the task that will be created.", "taskDescriptionHint": "Describes the task that will be created.", @@ -5493,7 +5493,7 @@ "title": "Automations", "todoColumn": "To Do", "toggleError": "Failed to toggle routine", - "triageColumn": "Triage", + "triageColumn": "Planning", "triggerApi": "API", "triggerCron": "Cron", "triggerManual": "Manual",