Fixes the workflow editor's fullscreen prompt overlay having an inert-looking mobile Expand button because a static z-index of 10000 sat below the mobile workflow editor's full-screen FloatingWindow sheet (10100+ shared floating-stack band).
- Have the fullscreen prompt overlay claim a fresh shared floating-stack z-index via nextFloatingZ() when opened, instead of relying on the static CSS z-index: 10000 fallback
- Track the claimed z-index in new promptFullscreenZ state, applying it as an inline style on the portaled overlay and clearing it on collapse/Escape
- Update FNXC comments in WorkflowNodeEditor.css and floatingWindowStack.ts documenting the shared z-index contract and why the static value is now only a fallback
- Add regression tests asserting the prompt fullscreen overlay's z-index exceeds the workflow editor's floating window z-index on desktop, mobile prompt nodes, mobile gate nodes, and after re-opening after collapse
Files changed:
.../app/components/WorkflowNodeEditor.css | 1 +
.../app/components/WorkflowNodeEditor.tsx | 25 ++++++-
.../__tests__/WorkflowNodeEditor.test.tsx | 81 ++++++++++++++++++++++
.../app/components/floatingWindowStack.ts | 2 +-
4 files changed, 106 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-7914
Fusion-Task-Lineage: e230309a-3b53-4e42-9e63-7516597b6c24
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Fixes the workflow editor shell inheriting the shared .modal max-height: 80vh clamp, which prevented the canvas from filling the FloatingWindow/embedded host and tracking resizes.
- Add max-width: none and max-height: none to .wf-editor-modal so FloatingWindow and the embedded pane own sizing instead of the shared .modal clamp.
- Add regression test asserting the shell stays unclamped across desktop FloatingWindow, embedded, and mobile hosts (not just the reported 80vh repro).
Files changed:
.../app/components/WorkflowNodeEditor.css | 6 ++++++
.../__tests__/WorkflowNodeEditor.css.test.ts | 22 ++++++++++++++++++++++
2 files changed, 28 insertions(+)
Fusion-Task-Id: FN-7827
Fusion-Task-Lineage: a39ff6ba-3e72-4f7b-802c-ba1317ca37e9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Lifecycle warnings now recompute client-side from the live graph for
editable workflows, so the banner reflects edits immediately instead of
waiting for a save round-trip. The two deterministically fixable codes gain
one-click fixes in the banner (all view modes):
- missing-merge-region inserts a Merge boundary in front of end;
- missing-completion-summary inserts the canonical completion-summary node
(config from @fusion/core's completionSummaryNode) upstream of the merge
region when one exists, else in front of end.
"Fix all" on the collapsed summary line applies both in order, producing
start → summary → merge → end on a fresh workflow in one click. The other
three codes are structural judgment calls and stay manual.
analyzeWorkflowLifecycle + completionSummaryNode are pure and now re-export
through core's browser-safe types.ts alias entry.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- fix: edge-targeted fragment and "insert as optional group" picks from the
add-step dialog now splice the inserted subgraph into the targeted edge
(entries inherit the original routing condition, exits feed the old
target, subgraph moves into the source's column band) instead of dropping
disconnected fixed-position nodes (Greptile P1).
- feat: the lifecycle warnings banner is now a one-line collapsible
disclosure (count summary, details on expand) so it no longer dominates
the editor header.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adds a simplified graphical node editor as the workflow editor's default
view: a modern vertical auto-laid-out React Flow canvas with insert-on-edge
"+" affordances and a searchable, categorized add-step dialog (node kinds +
fragments + step templates). A segmented Simple/Advanced/List switch
(persisted in localStorage) keeps the full advanced canvas untouched and
retains the old compact row editor as the List fallback. Mobile's graph tab
gains the touch-friendly simplified canvas with the row list as fallback.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Keep the Workflow simple-editor tab bar contained while preserving horizontal touch scrolling.
- Clamp the mobile tab strip to the editor width and make it the horizontal scroll owner.
- Preserve intrinsic tab button widths and pan gestures for narrow touch viewports.
- Add CSS, component, and shared overflow regression coverage for the full six-tab strip.
- Add a patch changeset for the published Fusion package.
Files changed:
.changeset/fn-7236-workflow-mobile-tab-scroll.md | 7 +++
.../dashboard-overflow-containment.test.tsx | 32 ++++++++++++-
.../app/components/WorkflowNodeEditor.css | 32 ++++++++++++-
.../__tests__/WorkflowNodeEditor.css.test.ts | 29 ++++++++++++
.../__tests__/WorkflowNodeEditor.test.tsx | 55 +++++++++++++++++++++-
5 files changed, 152 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-7236
Fusion-Task-Lineage: 1601d4c2-2039-4410-809c-7dcdfea04301
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Final cutover — nothing reads workflow_steps at runtime, so migration 131 drops it.
- Removed the merger post-merge execution path entirely (runPostMergeWorkflowSteps,
hasEnabledPostMergeWorkflowSteps, executePostMerge{Prompt,Script}Step, post-merge
worktree helpers + call site). Graph owns post-merge.
- Executor recovery no longer reads getWorkflowStep().gateMode; gate-ness comes from the
recorded WorkflowStepResult.status.
- Removed store CRUD (create/update/deleteWorkflowStep), materializeWorkflowSteps, and
migrateLegacyWorkflowSteps; selectTaskWorkflow now seeds default-on optional-group node
ids (consistent with create-time). KEPT the plugin step-template palette (getWorkflowStep
plugin-only resolver / listWorkflowSteps plugin-only) — never touches the table.
Removed the dashboard migrate-legacy-steps route + editor migration UI.
- SCHEMA_VERSION 130→131; migration 131 DROP TABLE IF EXISTS workflow_steps; SCHEMA_SQL
table def removed; historical migrations 77/105/109/130 guarded with tableExists().
Proof nothing stranded: the graph executes IR nodes resolved from workflowId (never
stepIds/compiled rows) — materializeWorkflowSteps writes were vestigial. Full @fusion/core
suite (6290), reliability backstop (154), boot smoke, and a seed-at-130 drop test all pass
with the table gone.
Plan U7c.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Scope each converted modal's mobile full-screen/viewport-takeover rules to :not(--embedded) (Settings, GitHub import, Git Manager, Workflows) so the embedded main-content variant fills only the content pane and the app Header + MobileNavBar stay visible on mobile. Modal presentation unchanged.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- New built-in task views: workflows, import-tasks, automations (left-sidebar destinations rendering in the main content area).
- WorkflowNodeEditor, GitHubImportModal, and ScheduledTasksModal gain a presentation=embedded mode (inline, no overlay/close, modal-only behaviors disabled). Automations embedded view uses a Command Center-style header and a responsive two-pane (list + detail) layout when wide enough.
- Left sidebar adds Workflows, Import Tasks, Automations entries; renderMainContent renders the embedded views.
- Remove github-import and automation from the right dock; hide the desktop Header Workflow button when the left sidebar owns Workflows. Mobile overflow keeps the modal entry points unchanged.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add a per-node Help section to the workflow editor's node detail pane:
description, configuration, inputs, outputs, and edges for every node
kind. Keys off the effective kind (preserved IR kind) so graph-only
policy nodes — auto-merge gate, branch-group member integration /
promotion, PR and recovery nodes — get specific help instead of reading
as a generic merge/gate/hold, and are flagged "Engine-managed".
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Styles the simple workflow editor so its mobile-style controls are available and documented across desktop and narrow layouts.
- Move simple editor tab, add, action, and touch-target styling out of the mobile-only media query.
- Cover desktop simple editor affordances for custom and built-in workflows with regression tests.
- Document desktop simple editor tabs and the surfaced workflow action buttons.
Files changed:
docs/dashboard-guide.md | 6 +-
.../app/components/WorkflowNodeEditor.css | 286 +++++++++++----------
.../__tests__/WorkflowNodeEditor.test.tsx | 53 ++++
3 files changed, 201 insertions(+), 144 deletions(-)
Fusion-Task-Id: FN-6381
Fusion-Task-Lineage: fd7f1ada-6e50-4d92-b455-7f38fb46c1e2
Clamp the workflow editor left sidebar and its children so long content cannot create horizontal scroll.
- Hide horizontal overflow on desktop and list-stage sidebar layouts while preserving vertical scrolling.\n- Allow nested sidebar sections, lists, palette controls, and code snippets to shrink or wrap within the sidebar.\n- Add CSS contract coverage for the sidebar overflow behavior across desktop and mobile list-stage layouts.\n\nFiles changed:\n .../app/components/WorkflowNodeEditor.css | 25 ++++++++++++\n .../__tests__/WorkflowNodeEditor.css.test.ts | 47 ++++++++++++++++++++++\n 2 files changed, 72 insertions(+)
Fusion-Task-Id: FN-6379
Fusion-Task-Lineage: 9da54129-faaf-4a81-906b-d76e9746b426
Makes workflow edge details behave like a full-screen mobile editor stage while keeping the mobile tabs visible.
- Add a mobile edge-detail editor body state that hides the canvas and expands the inspector.\n- Add a dismiss control to the mobile edge inspector.\n- Preserve the top mobile tab row sizing and cover the edge-detail/mobile-tab CSS contracts with tests.
Files changed:\n .../app/components/WorkflowNodeEditor.css | 19 +++++++++++++\n .../app/components/WorkflowNodeEditor.tsx | 22 ++++++++++++---\n .../__tests__/WorkflowNodeEditor.css.test.ts | 11 ++++++++\n .../__tests__/WorkflowNodeEditor.test.tsx | 31 ++++++++++++++++++++++\n 4 files changed, 80 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-6297
Fusion-Task-Lineage: be7cea97-0790-4d88-9fa5-3d484b4d3dfb
Keep the mobile workflow editor stage from stretching the canvas wrapper and shrinking the full-screen view.
- adjust the mobile editor-stage canvas wrapper flex rule to avoid consuming the full stage height
- extend the WorkflowNodeEditor mobile CSS contract test to lock the updated flex behavior
Files changed:
packages/dashboard/app/components/WorkflowNodeEditor.css | 2 +-
.../dashboard/app/components/__tests__/WorkflowNodeEditor.css.test.ts | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-6162
Fusion-Task-Lineage: b09d3317-cf22-4fbf-a732-9f4829c1cfd8
Let the mobile workflow node editor inspector use the full available height.
- remove the mobile inspector max-height cap so the editor stage can expand full screen
- update the WorkflowNodeEditor mobile CSS contract test to assert the new max-height rule
- quarantine the unrelated flaky dashboard Board test and record it in the quarantine ledger
Files changed:
packages/dashboard/app/components/WorkflowNodeEditor.css | 1 +
.../app/components/__tests__/WorkflowNodeEditor.css.test.ts | 1 +
packages/dashboard/vitest.config.ts | 2 +-
scripts/lib/test-quarantine.json | 8 +++++++-
4 files changed, 10 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-6154
Fusion-Task-Lineage: 14928ad1-dc84-461b-9adf-b5ee079e3b0d
Let the mobile workflow node editor use the full available screen height.
- replace the mobile inspector max-height cap with flex sizing so the editor stage can expand full screen
- preserve mobile inspector scrolling by setting a zero min-height in the stacked layout
- update the mobile CSS contract test to assert the new flex-based sizing rules
Files changed:
packages/dashboard/app/components/WorkflowNodeEditor.css | 3 ++-
.../dashboard/app/components/__tests__/WorkflowNodeEditor.css.test.ts | 3 ++-
2 files changed, 4 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-6144
Fusion-Task-Lineage: 49d06acb-17c6-40fd-9c6d-3af98ddf8f6e
Ensure the mobile workflow editor keeps the React Flow surface tall enough for edges to render correctly.
- add a full-height mobile rule for the workflow editor React Flow surface
- extend the mobile CSS contract test to assert the height requirement
- broaden the selector width test to cover the collapsed workflow selector button
Files changed:
packages/dashboard/app/components/WorkflowNodeEditor.css | 1 +
.../app/components/__tests__/WorkflowNodeEditor.css.test.ts | 6 +++++-
2 files changed, 6 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-6079
Fusion-Task-Lineage: a6f1de35-ce99-4673-bfaf-183124969a7c
Keep workflow editing usable on mobile while preserving related dashboard controls.
- allow the standalone project selector to expose a Manage Projects action in single-project layouts
- improve the mailbox resize handle contrast for better visibility
- make the workflow editor canvas and React Flow surface shrink and fill correctly without mobile horizontal overflow
- add CSS contract coverage for desktop and mobile workflow editor width behavior
Files changed:
packages/dashboard/app/components/Header.tsx | 4 +++-
packages/dashboard/app/components/MailboxModal.css | 2 +-
.../dashboard/app/components/ProjectSelector.tsx | 15 +++--
.../app/components/WorkflowNodeEditor.css | 28 +++++++++
.../__tests__/WorkflowNodeEditor.css.test.ts | 66 ++++++++++++++++++++++
5 files changed, 109 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-6034
Fusion-Task-Lineage: e7a784ff-188a-4538-a2be-f75484f10aa4
Make the mobile workflow editor easier to use by collapsing competing panels and updating coverage.
- add a mobile inspector toggle that collapses node details and re-expands on node selection
- default the templates palette to collapsed on mobile and tighten mobile toolbar/layout styling to avoid overlap
- remove the stale workflow-id preselection path from the editor and align workflow edge/mobile regression coverage
- drop the unused modal prop wiring so the editor API matches the merged implementation
Files changed:
packages/dashboard/app/components/AppModals.tsx | 1 -
.../app/components/WorkflowNodeEditor.css | 61 +++++++++
.../app/components/WorkflowNodeEditor.tsx | 63 +++++++---
.../__tests__/WorkflowNodeEditor.css.test.ts | 21 ++++
.../__tests__/WorkflowNodeEditor.test.tsx | 139 +++++++++++----------
5 files changed, 200 insertions(+), 85 deletions(-)
Fusion-Task-Id: FN-6058
Fusion-Task-Lineage: d037832f-8bd8-4e3d-b31b-e30cd9752838
Keep the workflow editor mobile-first selection flow usable and improve tap targets on phones.
- start the mobile workflow editor on the workflow list with no preselected workflow and show a select-a-workflow prompt
- keep mobile list/editor stage transitions in sync after create, duplicate, import, and delete actions
- increase workflow editor mobile touch targets and padding without changing desktop sizing
- add regression coverage for mobile viewport selection behavior and CSS touch-target scoping
- update the dashboard guide to document the mobile workflow editor behavior
Files changed:
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/WorkflowNodeEditor.css | 56 +++++++++++++++++-
packages/dashboard/app/components/WorkflowNodeEditor.tsx | 24 ++++++--
packages/dashboard/app/components/__tests__/WorkflowNodeEditor.css.test.ts | 36 ++++++++++++
packages/dashboard/app/components/__tests__/WorkflowNodeEditor.test.tsx | 68 ++++++++++++++++++++++
Fusion-Task-Id: FN-6033
Fusion-Task-Lineage: c9da29ef-c099-4e14-8671-24995106c78c