Adds two display-only badges to TaskCard so operators can see planner oversight configuration and live overseer activity at a glance.
- Resolve and display the workflow's effective `plannerOversightLevel` (observe/steer/autonomous) per task, with a module-level cache keyed by (projectId, workflowId) and in-flight de-duplication to avoid redundant `/api/workflows/:id/setting-values` fetches across cards sharing a workflow.
- Gate oversight badge rendering until the workflow-effective value resolves (or a per-task override is known) so the very first render never shows a guessed schema-default badge.
- Derive a card-local "active overseer state" indicator (Executor/Reviewer/Merger/Pull request/Workflow gate) that mirrors the engine's `resolveWatchedStage` precedence using only fields already present on the Task payload (column, paused, pausedReason, prInfo, reviewState, workflowTransitionNotification), since the real in-memory monitor state has no persisted/API surface today.
- Add corresponding CSS badge modifiers and update dashboard-guide.md documentation.
- Add TaskCard.oversight.test.tsx covering the new badges and update existing TaskCard tests/badge-wrap test for the new markup.
Files changed:
docs/dashboard-guide.md | 4 +
packages/dashboard/app/components/TaskCard.css | 106 +++++-
packages/dashboard/app/components/TaskCard.tsx | 369 +++++++++++++++++++-
.../__tests__/TaskCard.badge-wrap.test.tsx | 1 +
.../__tests__/TaskCard.oversight.test.tsx | 383 +++++++++++++++++++++
.../app/components/__tests__/TaskCard.test.tsx | 32 +-
6 files changed, 889 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-7516
Fusion-Task-Lineage: ce909409-862b-4697-a19e-d6735a3b572d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Render Board task context menus as viewport overlays so column clipping no longer hides actions.
- Portal TaskCard context menus to document.body and position them with viewport coordinates.
- Clamp context menus after render and close them when the task identity or column changes.
- Update TaskCard coverage for overflow escape, keyboard/touch placement, and menu lifecycle behavior.
- Document the overlay behavior and add a patch changeset for @runfusion/fusion.
Files changed:
.changeset/fn-7362-board-context-menu-overlay.md | 7 +
docs/dashboard-guide.md | 5 +-
packages/dashboard/app/components/TaskCard.css | 6 +-
packages/dashboard/app/components/TaskCard.tsx | 38 ++--
.../app/components/__tests__/TaskCard.test.tsx | 242 ++++++++++++++++-----
5 files changed, 211 insertions(+), 87 deletions(-)
Fusion-Task-Id: FN-7362
Fusion-Task-Lineage: 8f2fc0b1-ad63-402e-a960-6a09cbe9c893
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Move aggregate workflow identity below task-card footer content so it stays anchored at the bottom-left.
- Reposition the optional workflow badge out of the meta-badge row and into its own bottom-left row.
- Add responsive styling so long workflow names wrap within the card footer area without creating extra actions.
- Expand TaskCard layout tests for badge ordering across metadata, footer, and action surfaces.
- Add a patch changeset for the published Fusion package.
Files changed:
.changeset/fn-7277-workflow-badge-bottom-left.md | 7 ++++
packages/dashboard/app/components/TaskCard.css | 22 +++++++++-
packages/dashboard/app/components/TaskCard.tsx | 31 ++++++++------
.../__tests__/TaskCard.badge-wrap.test.tsx | 16 +++++++
.../__tests__/TaskCard.footer-wrap.test.tsx | 33 +++++++++++++++
.../app/components/__tests__/TaskCard.test.tsx | 49 +++++++++++++++++++++-
6 files changed, 143 insertions(+), 15 deletions(-)
Fusion-Task-Id: FN-7277
Fusion-Task-Lineage: 5dd05d2a-1728-49d3-8cbf-b99d6293730b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
getUnifiedTaskProgress reads task.workflowStepResults (graph-written in U2) and
no longer needs workflowStepNameLookup — names come from result.workflowStepName.
Removed the lookup prop + fetchWorkflowSteps-name plumbing end-to-end (App,
MainContent, RightDock, Board, Column, Lane, WorktreeGroup, TaskCard). Added the
running state (pending + startedAt) and a distinct advisory_failure (amber, non-
blocking) vs failed (red) treatment; advisory_failure counts as complete.
Plan U3.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Move the task timing badge out of the header/meta row and into the footer's bottom-right badge cluster.
- Render the time indicator with footer chips so it aligns with retry and GitHub badges.
- Reuse footer badge sizing for the timer across desktop, wrapping, and mobile layouts.
- Update TaskCard layout tests to assert footer placement and add a patch changeset.
Files changed:
.changeset/fn-6413-task-card-timing-footer.md | 5 +
packages/dashboard/app/components/TaskCard.css | 8 +-
packages/dashboard/app/components/TaskCard.tsx | 31 ++---
.../__tests__/TaskCard.footer-alignment.test.tsx | 13 +-
.../__tests__/TaskCard.footer-wrap.test.tsx | 1 +
.../app/components/__tests__/TaskCard.test.tsx | 138 ++++++++++++++-------
.../app/components/__tests__/board-mobile.test.tsx | 5 +-
7 files changed, 130 insertions(+), 71 deletions(-)
Fusion-Task-Id: FN-6413
Fusion-Task-Lineage: a82da5ab-20c6-4dfa-92a3-150306011fd6
When a task is awaiting-user-input, the card shows a prominent
"Answer questions" button that opens the task detail on the workflow
tab, where the existing WorkflowResultsTab input banner renders the
question (parsed from the workflow-input: pausedReason U6 sets) and
resumes the task on submit. Widen onOpenDetailWithTab to accept the
"workflow" tab across App/Board/Lane/WorktreeGroup/TaskCard. Render-
gating tests + CSS added.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add a dashboard CSS hygiene scan and align accent text colors with the CTA text token.
- add a dashboard CSS hygiene regression scan for recent component styles
- assert tokenized focus styles, mobile breakpoints, and no raw hex or rgba colors in scanned CSS
- replace hardcoded white text with var(--cta-text) in background task, pull request, task card, and task field accent surfaces
Files changed:
.../app/__tests__/css-hygiene-scan.test.ts | 191 +++++++++++++++++++++
.../app/components/BackgroundTasksIndicator.css | 2 +-
.../dashboard/app/components/PullRequestView.css | 2 +-
packages/dashboard/app/components/TaskCard.css | 2 +-
.../dashboard/app/components/TaskFieldsSection.css | 2 +-
5 files changed, 195 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-6186
Fusion-Task-Lineage: c579bcda-01f9-4495-bf59-78d1dfef816c
Keep the promote action pinned to the right edge of task card action rows.
- add `margin-left: auto` to the promote action send-back button styling
- preserve right alignment for the mobile action row breakpoint
- add TaskCard coverage for solo and multi-action mobile layouts
Files changed:
packages/dashboard/app/components/TaskCard.css | 5 +++
packages/dashboard/app/components/__tests__/TaskCard.test.tsx | 40 ++++++++++++++++++++++
2 files changed, 45 insertions(+)
Fusion-Task-Id: FN-6129
Fusion-Task-Lineage: 70aed0c1-b007-4a71-9755-04535b630888
Right-align the task card promote action within its action row.
- add auto margin to the promote action so it anchors to the row's right edge
- cover the promote action alignment with a TaskCard CSS regression test
- add a patch changeset for the published CLI package
Files changed:
.changeset/fn-6092-promote-button.md | 5 +++++
packages/dashboard/app/components/TaskCard.css | 1 +
.../app/components/__tests__/TaskCard.test.tsx | 21 +++++++++++++++++++++
3 files changed, 27 insertions(+)
Fusion-Task-Id: FN-6092
Fusion-Task-Lineage: eacd596e-c810-44fd-b8ec-05c76988649f
Align the promote action chip with the task card's other pill-style controls.
- add shared gap and padding to the promote action chip styling
- match send-back promote styling to the updated chip spacing contract
- load app CSS in the task card test and assert the promote action keeps the expected chip class and spacing
Files changed:
packages/dashboard/app/components/TaskCard.css | 4 +++
.../app/components/__tests__/TaskCard.test.tsx | 34 +++++++++++++++-------
2 files changed, 27 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-6086
Fusion-Task-Lineage: 8e8f07d2-8bf2-46d3-b488-766694495ec4
Adds /api/pull-requests routes (list, detail, merge/approve/retry/close/
automerge — all re-fetch authoritative state before acting), a
PullRequestView rendering every entity state distinctly (creating/failed/
unverified/responding/await-review/conflict) with the action bar, live
auto-merge gate reason, and conflict CTA; TaskCard PR node-state badge +
link; and the R16 column-move-backward guard. User actions route through
the existing releaseHeldTaskByEvent primitives. Maps the new PR node kinds
in the workflow editor's kind resolver. 13 route tests + lazy-view guard
green; component test runs in CI.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Inspector for prompt nodes: executor picker (model via CustomModelDropdown,
agent, skill from discovered skills, CLI named script), auto-approve toggle,
per-node max retries, and a wait-for-user-input mode with a User input palette
preset. Task card shows a 'Needs input' badge for awaiting-user-input status;
the task modal workflow tab shows the node's question as a banner.
- Broaden mobile media query to include (max-height: 480px) so landscape
phones (which exceed 768 CSS px wide) still render the bottom nav and
mobile board layout instead of desktop horizontally-scrollable columns.
- Guard useMobileKeyboard against pinch-zoom (vv.scale > 1) — Android
Chrome ignores user-scalable=no, and a focused textarea + zoom was
false-positiving keyboard-open and hiding MobileNavBar.
- Read documentElement.clientHeight instead of stale window.innerHeight
when computing keyboard overlap (Android multi-window can leave
innerHeight cached at a wildly different value than the actual layout
viewport — observed 2848 while html was 797).
- Add interactive-widget=resizes-content to the viewport meta so Android
Chrome shrinks the layout viewport with the soft keyboard, matching iOS.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Removes the broad-scope detection feature end-to-end: the TaskCard chip and TaskDetailModal advisory banner are gone from the dashboard, the triage heuristic that flagged tasks as broad-scope has been deleted from the engine along with its associated run-audit events, and documentation references ha
Fusion-Task-Id: FN-5405
Adds broad-scope advisory chips to TaskCard and banner to TaskDetailModal with comprehensive test coverage and a dashboard guide entry. TaskCard gains an inline advisory chip (with styles), TaskDetailModal gets a matching banner, and both components have dedicated test suites covering the new UI ele
Fusion-Task-Id: FN-5314
Fusion-Task-Lineage: cbc88f36-d029-4e4b-ac9c-32a77560b8b9
Wraps the TaskCard footer chip cluster with CSS changes to prevent layout overflow, backed by a new regression test file and updated board-mobile tests registered in the curated dashboard test gate.
Fusion-Task-Id: FN-5210
- Add the footer row selector expected by the board-mobile layout test
- Keep the time indicator chip cluster aligned to the right edge of the card footer
Adds an inline move-control button to the TaskCard meta row for in-review tasks, letting users move tasks directly from the board without opening the detail panel. Tests and a workflow-step allowlist entry were added alongside the CSS and component changes.
Fusion-Task-Id: FN-4618