gsxdsm
5f67c85fea
FN-7285: add workflow icons and trim built-in labels
...
Adds workflow icon metadata while preserving readable workflow names without built-in suffixes.
- Store and validate compact plain-text workflow icons across core APIs, imports, exports, tools, and analytics.
- Render Fusion marks for built-in workflows and custom text icons beside existing workflow labels on board, switcher, detail, and editor surfaces.
- Update workflow editor creation/copy flows, docs, release notes, and tests for icon metadata and shorter built-in names.
Files changed:
.changeset/fn-7285-workflow-icons.md | 7 ++
docs/dashboard-guide.md | 12 +--
.../cli/skill/fusion/references/extension-tools.md | 2 +
.../core/src/__tests__/builtin-workflows.test.ts | 8 +-
packages/core/src/__tests__/db-migrate.test.ts | 7 +-
.../core/src/__tests__/workflow-analytics.test.ts | 15 +--
.../__tests__/workflow-definition-store.test.ts | 31 ++++++
packages/core/src/builtin-workflows.ts | 20 ++--
packages/core/src/db.ts | 11 +-
packages/core/src/index.ts | 4 +
packages/core/src/store.ts | 24 ++++-
packages/core/src/workflow-analytics.ts | 7 +-
packages/core/src/workflow-definition-types.ts | 31 ++++++
packages/dashboard/app/api/legacy.ts | 2 +
packages/dashboard/app/components/Board.tsx | 18 ++--
packages/dashboard/app/components/Column.tsx | 2 +-
packages/dashboard/app/components/TaskCard.tsx | 7 +-
.../dashboard/app/components/TaskDetailModal.tsx | 20 ++--
packages/dashboard/app/components/WorkflowIcon.css | 42 ++++++++
packages/dashboard/app/components/WorkflowIcon.tsx | 49 +++++++++
.../app/components/WorkflowNodeEditor.css | 32 ++++++
.../app/components/WorkflowNodeEditor.tsx | 113 ++++++++++++++++-----
.../dashboard/app/components/WorkflowSwitcher.css | 9 ++
.../dashboard/app/components/WorkflowSwitcher.tsx | 15 ++-
.../dashboard/app/components/WorktreeGroup.tsx | 2 +-
.../app/components/__tests__/Board.test.tsx | 12 +--
.../app/components/__tests__/Lane.test.tsx | 6 +-
.../__tests__/WorkflowNodeEditor.test.tsx | 57 +++++++++--
.../components/__tests__/WorkflowSwitcher.test.tsx | 68 ++++++++-----
.../__tests__/board-mobile-initial-render.test.tsx | 2 +-
.../__tests__/CommandCenter.test.tsx | 4 +-
.../command-center/areas/WorkflowArea.tsx | 2 +
.../areas/__tests__/WorkflowArea.test.tsx | 6 +-
.../settings/sections/GeneralSection.tsx | 6 +-
.../register-command-center-routes.test.ts | 2 +-
.../__tests__/workflow-import-export.test.ts | 32 +++++-
packages/dashboard/src/routes/board-workflows.ts | 6 +-
.../src/routes/register-workflow-routes.ts | 32 +++++-
packages/engine/src/__tests__/agent-tools.test.ts | 4 +-
packages/engine/src/agent-tools.ts | 6 +-
40 files changed, 590 insertions(+), 145 deletions(-)
Fusion-Task-Id: FN-7285
Fusion-Task-Lineage: 0fa689a2-f19d-4d1b-9a40-cc0b2181200a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 12:21:25 -07:00
gsxdsm
70d7dcaa6c
FN-7290: skip unchanged plugin builds
...
Add a git-backed plugin build cache to make root workspace builds skip safe unchanged plugin packages.
- Route root pnpm build through a workspace build planner that always builds non-plugin packages and selectively skips cached plugin packages.
- Hash plugin inputs with declared local workspace dependencies plus root build tooling/config and require dist outputs before skipping.
- Cover cache planning and invalidation behavior with script tests and document the operator-facing build behavior.
Files changed:
.changeset/fn-7290-plugin-build-cache.md | 7 +
docs/testing.md | 5 +-
package.json | 2 +-
scripts/__tests__/build-workspace.test.mjs | 253 +++++++++++++++++
scripts/build-workspace.mjs | 427 +++++++++++++++++++++++++++++
5 files changed, 692 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-7290
Fusion-Task-Lineage: a91861c7-385d-4e9c-bc43-11ed0ff188c8
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 11:08:55 -07:00
gsxdsm
8f65186bdc
FN-7289: fix folded-phone terminal keyboard spacing
...
Preserve mobile terminal geometry when folded phones open with the keyboard already visible.
- Use layout viewport height when computing keyboard overlap so focused keyboard-open folded postures keep a valid baseline.
- Allow keyboard-closed width/posture changes at short folded heights to refresh the terminal viewport baseline.
- Add regression coverage for TerminalModal and SessionTerminal folded-phone keyboard spacing and document the recurrence.
Files changed:
.../fn-7289-mobile-terminal-folded-keyboard.md | 7 ++
.../mobile-terminal-folded-viewport-baseline.md | 11 +-
.../dashboard/app/components/TerminalModal.tsx | 20 ++--
.../__tests__/SessionTerminal.mobile.test.tsx | 30 +++++
.../components/__tests__/TerminalModal.test.tsx | 127 +++++++++++++++++++++
5 files changed, 183 insertions(+), 12 deletions(-)
Fusion-Task-Id: FN-7289
Fusion-Task-Lineage: 82134835-ca72-4796-89da-c8d071efc481
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 10:53:47 -07:00
gsxdsm
3cd5695f52
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) <noreply@runfusion.ai >
2026-06-30 10:40:49 -07:00
gsxdsm
7eca99c8b1
FN-7283: clear optional workflow steps in fast mode
...
Fast mode now treats optional workflow steps as opt-out by default while preserving manual reselection.
- Clear default-on optional workflow steps when switching task creation forms into Fast mode.
- Submit explicit empty optional-step selections in Fast mode to prevent store defaults from reappearing.
- Allow explicitly enabled optional workflow groups to run under Fast mode and during recovery.
- Document the Fast-mode optional-step contract and add regression coverage for dashboard and engine flows.
Files changed:
.changeset/FN-7283-fast-mode-optional-steps.md | 7 ++
docs/workflow-steps.md | 15 ++-
packages/dashboard/app/components/NewTaskModal.tsx | 27 +++--
.../dashboard/app/components/QuickEntryBox.tsx | 29 ++++-
packages/dashboard/app/components/TaskForm.tsx | 42 +++++--
.../app/components/__tests__/NewTaskModal.test.tsx | 58 +++++++++
.../components/__tests__/QuickEntryBox.test.tsx | 84 +++++++++++++
.../app/components/__tests__/TaskForm.test.tsx | 85 ++++++++++++-
.../__tests__/executor-fast-mode-workflows.test.ts | 134 +++++++++++++++++++++
packages/engine/src/executor.ts | 107 ++++++++++------
packages/engine/src/workflow-graph-executor.ts | 14 ++-
11 files changed, 539 insertions(+), 63 deletions(-)
Fusion-Task-Id: FN-7283
Fusion-Task-Lineage: e7028af8-3d05-4db7-8db9-a16c7f7575de
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 09:46:26 -07:00
gsxdsm
b450dd493d
FN-7282: fix mobile terminal workspace menu
...
Keep the terminal workspace picker visible and usable on narrow mobile screens.
- Portal the workspace listbox to the viewport and position it from the trigger with visual viewport bounds.
- Constrain the menu width and height with scroll-safe mobile CSS while preserving workspace selection actions.
- Cover mobile rendering, loading/error picker behavior, and document the viewport-safe menu expectation.
Files changed:
.../fn-7282-mobile-terminal-worktree-menu.md | 7 ++
docs/dashboard-guide.md | 2 +-
.../dashboard/app/components/TerminalModal.css | 21 +++--
.../dashboard/app/components/TerminalModal.tsx | 101 ++++++++++++++++++++-
.../components/__tests__/TerminalModal.test.tsx | 72 ++++++++++++++-
5 files changed, 186 insertions(+), 17 deletions(-)
Fusion-Task-Id: FN-7282
Fusion-Task-Lineage: ca6f7b2b-2d04-41c3-b2eb-d3195e3a1ff5
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 09:13:48 -07:00
gsxdsm
ac87b1e8e4
FN-7281: fix folded terminal viewport baselines
...
Keep mobile terminals sized against the settled folded viewport before keyboard overlap is applied.
- Re-baseline terminal keyboard metrics when folded devices settle to a new closed-posture width.
- Avoid replacing the baseline from focused keyboard-open samples that would erase real keyboard overlap.
- Cover TerminalModal and SessionTerminal mobile keyboard spacing behavior with regression tests.
- Document the folded-phone terminal spacing fix and add a patch changeset.
Files changed:
.changeset/fn-7281-mobile-terminal-spacing.md | 7 ++
.../mobile-terminal-folded-viewport-baseline.md | 56 +++++++++++++++
.../dashboard/app/components/TerminalModal.tsx | 57 ++++++++++++++--
.../__tests__/SessionTerminal.mobile.test.tsx | 39 +++++++++++
.../components/__tests__/TerminalModal.test.tsx | 79 ++++++++++++++++++++++
.../app/hooks/__tests__/useMobileKeyboard.test.ts | 53 ++++++++++++++-
packages/dashboard/app/hooks/useMobileKeyboard.ts | 31 +++++++--
7 files changed, 309 insertions(+), 13 deletions(-)
Fusion-Task-Id: FN-7281
Fusion-Task-Lineage: 90ab7398-c583-4312-8cf6-0ef7d6328c8d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 09:09:29 -07:00
gsxdsm
082dd55967
FN-7280: persist all-workflows board view
...
Persist the Board aggregate workflow view so refreshes restore the operator's last board selection.
- Store the All workflows sentinel in project-scoped board view preferences while filtering it out for real workflow consumers.
- Restore all-workflows selection on remount/project changes and clear it when workflow mode is unavailable.
- Cover refresh persistence, project scoping, hooks, utilities, and cross-surface behavior with tests.
- Document the refresh-persistent All workflows behavior and add a patch changeset.
Files changed:
.changeset/fn-7280-all-workflows-board-view.md | 7 +++
docs/dashboard-guide.md | 7 +--
.../workflow-selection-cross-surface.test.tsx | 15 ++++++
packages/dashboard/app/components/Board.tsx | 31 +++++++++---
.../app/components/__tests__/Board.test.tsx | 58 ++++++++++++++++++++--
.../app/hooks/__tests__/useBoardWorkflows.test.ts | 11 ++++
.../utils/__tests__/boardWorkflowSelection.test.ts | 13 +++++
.../dashboard/app/utils/boardWorkflowSelection.ts | 13 ++++-
8 files changed, 137 insertions(+), 18 deletions(-)
Fusion-Task-Id: FN-7280
Fusion-Task-Lineage: 12d83b05-5b2b-4435-9383-30b35c07c087
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 09:04:03 -07:00
gsxdsm
c848ce11de
FN-7273: fix mobile engine controls menu placement
...
Keep the footer engine controls reachable on constrained mobile and tablet viewports.
- Render footer engine controls as a fixed full-width bottom panel through tablet widths while preserving the desktop anchored popover.
- Account for executor footer, mobile navigation, safe-area, standalone, and ICB offsets in panel placement.
- Add CSS regression coverage, dashboard documentation, and a patch changeset.
Files changed:
.changeset/fn-7273-mobile-engine-controls-menu.md | 7 ++
docs/dashboard-guide.md | 3 +-
.../dashboard/app/components/EngineControlMenu.css | 38 +++++++++-
.../__tests__/EngineControlMenu.css.test.ts | 88 +++++++++++++++++++++-
4 files changed, 128 insertions(+), 8 deletions(-)
Fusion-Task-Id: FN-7273
Fusion-Task-Lineage: d4764555-c8eb-4086-9130-d2f568727ae1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 08:25:21 -07:00
gsxdsm
a039c93f57
FN-7260: consolidate Done actions into column menu
...
Move Done column archive and sort controls into the shared column actions menu.
- Replace separate Done sort and archive header controls with menu items.
- Preserve Done sort mode selection and archive-all confirmation behavior for standard and workflow complete columns.
- Update menu styling, dashboard docs, release notes, and Column component coverage.
Files changed:
.changeset/fn-7260-done-actions-menu.md | 7 ++
docs/dashboard-guide.md | 5 +-
packages/dashboard/app/components/Column.tsx | 93 ++++++++++------
.../app/components/__tests__/Column.test.tsx | 118 ++++++++++++---------
packages/dashboard/app/styles.css | 61 +++++------
5 files changed, 168 insertions(+), 116 deletions(-)
Fusion-Task-Id: FN-7260
Fusion-Task-Lineage: e336aa55-9dda-47bf-b8a7-9d9bbf6a33ef
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 07:58:55 -07:00
gsxdsm
924bcb97d5
FN-7255: add task card context menus
...
Add shared task action menus across board and list task surfaces.
- Add reusable task context menu UI with open, copy, archive, delete, pause, duplicate, retry, refine, and dependency actions.
- Wire board cards, swimlanes, worktree groups, and list rows to expose consistent menu behavior.
- Reuse task-detail action handlers and cover menu interactions with dashboard tests.
- Document the new task context menu behavior and add a patch changeset.
Files changed:
.changeset/fn-7255-card-context-menu.md | 7 +
docs/dashboard-guide.md | 6 +
packages/dashboard/app/App.tsx | 2 +
packages/dashboard/app/components/Board.tsx | 61 ++-
packages/dashboard/app/components/Column.tsx | 43 +-
packages/dashboard/app/components/Lane.tsx | 11 +-
packages/dashboard/app/components/ListView.css | 25 ++
packages/dashboard/app/components/ListView.tsx | 438 ++++++++++++++++++-
packages/dashboard/app/components/TaskCard.css | 12 +
packages/dashboard/app/components/TaskCard.tsx | 472 ++++++++++++++++++++-
.../dashboard/app/components/TaskContextMenu.css | 57 +++
.../dashboard/app/components/TaskContextMenu.tsx | 346 +++++++++++++++
.../dashboard/app/components/TaskDetailModal.tsx | 235 ++++------
.../dashboard/app/components/WorktreeGroup.tsx | 60 ++-
.../app/components/__tests__/ListView.test.tsx | 159 ++++++-
.../__tests__/TaskCard.cli-states.test.tsx | 1 +
.../app/components/__tests__/TaskCard.test.tsx | 180 +++++++-
.../components/__tests__/TaskContextMenu.test.tsx | 205 +++++++++
.../app/components/__tests__/board-mobile.test.tsx | 1 +
.../app/components/dashboard/MainContent.tsx | 12 +
.../__tests__/MainContent.graph-popout.test.tsx | 1 +
.../dashboard/app/components/dashboard/types.ts | 1 +
packages/dashboard/app/hooks/useAppSettings.ts | 8 +
23 files changed, 2178 insertions(+), 165 deletions(-)
Fusion-Task-Id: FN-7255
Fusion-Task-Lineage: 5b5714a9-3eb5-4df1-a466-0d2f839b6bd9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 01:57:09 -07:00
gsxdsm
ebb805d253
FN-7261: add global modal dismissal setting
...
Add a global dashboard preference that keeps modal backdrop dismissal off by default while allowing operators to opt in.
- Add dismissModalsOnOutsideClick to global settings defaults, schema, docs, and save handling.
- Provide the modal dismissal preference through App and gate shared overlay mouse/touch dismissal on it.
- Expose the preference in Global General settings and update modal dismissal tests.
- Add a changeset for the published CLI package.
Files changed:
.changeset/fn-7261-global-modal-outside-dismiss.md | 7 ++++
docs/settings-reference.md | 1 +
.../core/src/__tests__/settings-defaults.test.ts | 9 +++++
packages/core/src/settings-schema.ts | 5 +++
packages/core/src/types.ts | 5 +++
packages/dashboard/app/App.tsx | 16 +++++----
.../app/components/AgentErrorDetailsModal.tsx | 4 ++-
.../__tests__/AgentErrorDetailsModal.test.tsx | 28 +++++++++++++++-
.../__tests__/SettingsModal.general.test.tsx | 23 ++++++++++++-
.../app/components/settings/save-split.ts | 1 +
.../settings/sections/GlobalGeneralSection.tsx | 5 +++
.../app/hooks/__tests__/useOverlayDismiss.test.tsx | 38 ++++++++++++++++++----
packages/dashboard/app/hooks/useAppSettings.ts | 5 +++
packages/dashboard/app/hooks/useOverlayDismiss.ts | 36 +++++++++++++++++---
14 files changed, 163 insertions(+), 20 deletions(-)
Fusion-Task-Id: FN-7261
Fusion-Task-Lineage: 4fd5195f-c759-46b4-b567-0d5a9d5b92e3
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 01:50:52 -07:00
gsxdsm
04f06e6b70
FN-7269: preserve workflow settings and prompts across import
...
Workflow exports now carry project-specific settings and prompt overrides through import.
- Add settingValues and promptOverrides to workflow export envelopes and client API types.\n- Restore imported setting values and prompt overrides onto the freshly created workflow with validation and rollback on failure.\n- Cover custom and built-in workflow round-trips plus invalid restore-map rejection cases.\n- Document portable workflow exports and add a patch changeset.\n\nFiles changed:\n ...7269-workflow-export-import-settings-prompts.md | 7 ++\n docs/workflow-editor.md | 4 +-\n packages/dashboard/app/api/legacy.ts | 10 +-\n .../__tests__/workflow-import-export.test.ts | 113 ++++++++++++++++++++-\n .../src/routes/register-workflow-routes.ts | 86 +++++++++++++++-\n 5 files changed, 210 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-7269
Fusion-Task-Lineage: 718f42d0-c72d-4818-8f8c-979d01e960af
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 01:28:33 -07:00
gsxdsm
b5da5d310a
FN-7263: refresh custom provider model lists
...
Refresh persisted custom-provider model lists from saved endpoints and expose manual refresh controls.
- Add dashboard API helpers and routes to refresh one or all custom-provider model lists while preserving concurrent settings edits.
- Start background model refresh from serve, dashboard, and daemon startup paths after the server begins listening.
- Add Settings UI refresh actions, row-level status messaging, styles, docs, and regression coverage for refresh behavior.
Files changed:
.changeset/fn-7263-custom-provider-model-refresh.md | 7 +
docs/dashboard-guide.md | 6 +-
docs/settings-reference.md | 2 +-
packages/cli/src/commands/__tests__/daemon.test.ts | 59 +++++
.../cli/src/commands/__tests__/dashboard.test.ts | 51 ++++
packages/cli/src/commands/__tests__/serve.test.ts | 59 ++++-
packages/cli/src/commands/daemon.ts | 39 +++-
packages/cli/src/commands/dashboard.ts | 10 +
packages/cli/src/commands/serve.ts | 11 +-
.../app/__tests__/api-custom-providers.test.ts | 43 ++++
packages/dashboard/app/api/legacy.ts | 11 +
.../app/components/CustomProvidersSection.css | 41 +++-
.../app/components/CustomProvidersSection.tsx | 68 +++++-
.../__tests__/CustomProvidersSection.test.tsx | 227 ++++++++++++++++++
packages/dashboard/src/index.ts | 6 +
.../__tests__/custom-provider-routes.test.ts | 255 ++++++++++++++++++++
.../src/routes/__tests__/custom-providers.test.ts | 12 +
.../src/routes/register-custom-provider-routes.ts | 259 ++++++++++++++++-----
18 files changed, 1101 insertions(+), 65 deletions(-)
Fusion-Task-Id: FN-7263
Fusion-Task-Lineage: 60ee0637-ac85-409f-a376-c01f4bc8e8c5
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 01:23:09 -07:00
gsxdsm
273553429c
FN-7262: restore terminal shortcut handling
...
Restore reliable copy, paste, and input gating for embedded session terminals.
- Add platform-aware copy handling so selected text copies while no-selection Ctrl+C reaches the shell.
- Gate xterm stdin, mobile controls, cursor blink, and input sends on authoritative attach-ticket writability.
- Keep mobile send submission on one form path and cover shortcut/input behavior across desktop, modal, and mobile tests.
- Document embedded terminal shortcut semantics and add a patch changeset for @runfusion/fusion.
Files changed:
.changeset/fn-7262-terminal-shortcuts.md | 7 ++
docs/dashboard-guide.md | 2 +-
.../dashboard/app/components/SessionTerminal.tsx | 76 +++++++++++++----
.../__tests__/SessionTerminal.mobile.test.tsx | 34 ++++++--
.../components/__tests__/SessionTerminal.test.tsx | 96 +++++++++++++++++++++-
.../components/__tests__/TerminalModal.test.tsx | 33 ++++++++
6 files changed, 221 insertions(+), 27 deletions(-)
Fusion-Task-Id: FN-7262
Fusion-Task-Lineage: 8a7af0a4-0b52-44fe-b949-63486068fa97
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 01:18:16 -07:00
gsxdsm
3e0391eada
FN-7267: expose MCP tools to planning sessions
...
Expose configured MCP session tools to read-only planning and mission lanes while keeping other read-only sessions locked down.
- Add an explicit allowMcpToolsInReadonly option to createFnAgent and apply it only to connected MCP tools.
- Opt planning, streaming planning, mission, milestone, and slice interview sessions into read-only MCP tools.
- Expand regression coverage for MCP forwarding, read-only filtering, and session tool disposal behavior.
- Document the read-only MCP opt-in model and add a published package changeset.
Files changed:
.changeset/fn-7267-planning-mission-mcp.md | 7 +++
docs/mcp.md | 4 +-
.../src/__tests__/mcp-lane-forwarding.test.ts | 4 ++
.../dashboard/src/milestone-slice-interview.ts | 4 ++
packages/dashboard/src/mission-interview.ts | 4 ++
packages/dashboard/src/planning.ts | 4 ++
.../src/__tests__/mcp-surface-coverage.test.ts | 25 +++++++-
.../src/__tests__/pi-create-fn-agent.test.ts | 67 ++++++++++++++++++++++
.../src/__tests__/pi-mcp-session-tools.test.ts | 6 +-
.../workflow-step-readonly-allowlist.test.ts | 17 +++++-
packages/engine/src/pi.ts | 17 +++++-
packages/engine/src/workflow-step-tool-policy.ts | 15 ++++-
12 files changed, 163 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-7267
Fusion-Task-Lineage: 8d9cac1a-edcc-453d-bda1-9abb58de7f86
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 00:09:36 -07:00
gsxdsm
46232118e1
FN-7253: add worktree picker to terminal sessions
...
Terminal sessions can now start from a selected safe project worktree.
- Add a Terminal modal worktree selector with searchable branch/path context and responsive styling.
- Thread worktree selection through session hooks, terminal routes, and terminal service creation.
- Centralize safe git worktree discovery and reuse it from git and terminal routes.
- Cover the picker, hook behavior, service worktree validation, and route wiring with tests.
- Document the terminal worktree picker and add a release changeset.
Files changed:
.changeset/fn-7253-terminal-worktree-picker.md | 7 +
docs/dashboard-guide.md | 13 +-
.../dashboard/app/components/TerminalModal.css | 189 +++++++++++++++-
.../dashboard/app/components/TerminalModal.tsx | 190 ++++++++++++++++-
.../components/__tests__/TerminalModal.test.tsx | 169 +++++++++++++++
.../hooks/__tests__/useTerminalSessions.test.ts | 237 ++++++++++++++++++++-
.../dashboard/app/hooks/useTerminalSessions.ts | 59 +++--
.../src/__tests__/routes-automation.test.ts | 37 ++--
.../src/__tests__/terminal-service.test.ts | 125 +++++++++++
packages/dashboard/src/git-worktree-safety.ts | 113 ++++++++++
.../dashboard/src/routes/register-git-github.ts | 54 +----
.../src/routes/register-messaging-scripts.ts | 1 +
.../src/routes/register-terminal-routes.ts | 1 +
packages/dashboard/src/terminal-service.ts | 66 ++++--
14 files changed, 1157 insertions(+), 104 deletions(-)
Fusion-Task-Id: FN-7253
Fusion-Task-Lineage: 6a0c0b4f-74cc-42b3-8bbd-2ca94c4c26d9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 00:03:37 -07:00
gsxdsm
7427fa3faa
FN-7249: show optional block child connectors
...
Show optional workflow block children as connected without persisting synthetic topology.
- Add visual-only optional-group boundary edges and refresh them after editor graph changes.
- Prevent manual connections from reserved boundary handles and exclude visual edges from IR saves/cycle checks.
- Cover built-in/custom optional block connector rendering across canvas and mobile graph tests.
- Document optional block boundary connector behavior and add a patch changeset.
Files changed:
.../fn-7249-optional-block-subnode-connections.md | 7 +
docs/dashboard-guide.md | 5 +-
.../app/components/WorkflowNodeEditor.tsx | 103 ++++--
.../__tests__/WorkflowNodeEditor.test.tsx | 90 ++++-
.../__tests__/workflow-flow-mapping.test.ts | 379 ++++++++++++++++++++-
.../__tests__/workflow-mobile-graph.test.ts | 14 +-
.../app/components/nodes/WorkflowNodeTypes.tsx | 15 +
.../app/components/workflow-flow-mapping.ts | 245 ++++++++++++-
.../app/components/workflow-mobile-graph.ts | 2 +
9 files changed, 799 insertions(+), 61 deletions(-)
Fusion-Task-Id: FN-7249
Fusion-Task-Lineage: edd5d37d-a0a9-4788-9b57-8e7d4649f459
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 23:41:51 -07:00
gsxdsm
ea0707c573
FN-7264: add opt-in absolute file-browser paths
...
Add an opt-in project setting that lets the workspace file browser use slash-prefixed absolute paths while preserving existing confined defaults.
- Add the allowAbsoluteFileBrowserPaths project setting, docs, and changeset release note.
- Thread absolute-path validation through workspace file-browser listing, editing, file operations, and downloads without widening other path APIs.
- Add Settings UI controls and keep settings-specific file pickers project-relative.
- Cover absolute-path browsing, percent-literal paths, root navigation, and settings picker behavior with tests.
Files changed:
.changeset/fn-7264-absolute-file-browser-paths.md | 7 +
docs/settings-reference.md | 3 +
.../core/src/__tests__/settings-parity.test.ts | 8 +
packages/core/src/settings-schema.ts | 5 +
packages/core/src/types.ts | 5 +
.../app/__tests__/settings-sections.test.tsx | 41 +++++
packages/dashboard/app/components/FileBrowser.tsx | 26 ++-
.../dashboard/app/components/FileBrowserModal.tsx | 7 +
.../dashboard/app/components/SettingsModal.tsx | 34 +++-
.../components/__tests__/FileBrowserModal.test.tsx | 18 ++
.../__tests__/SettingsModal.general.test.tsx | 17 ++
.../settings/sections/GeneralSection.tsx | 9 +
.../__tests__/useWorkspaceFileBrowser.test.ts | 18 ++
.../dashboard/app/hooks/useWorkspaceFileBrowser.ts | 20 ++-
.../dashboard/src/__tests__/file-service.test.ts | 199 ++++++++++++++++++++-
packages/dashboard/src/file-service.ts | 129 ++++++++-----
16 files changed, 489 insertions(+), 57 deletions(-)
Fusion-Task-Id: FN-7264
Fusion-Task-Lineage: ec71facd-0345-4490-a3df-244b98e24c2d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 23:17:49 -07:00
gsxdsm
17fce43205
FN-7259: add mobile task popup setting
...
Add an opt-in mobile board-card route that opens task details in the existing popup.
- Add the openMobileTasksInPopup project setting, defaults, types, docs, and changeset.
- Expose the Appearance setting and include it in dashboard settings persistence.
- Route mobile board-card clicks without deep tabs into the task FloatingWindow while preserving dock and main-panel behavior.
- Add coverage for settings defaults, Appearance controls, mobile routing, and task popup sizing.
Files changed:
.changeset/fn-7259-mobile-task-popups.md | 7 ++++
docs/dashboard-guide.md | 5 ++-
docs/settings-reference.md | 1 +
.../core/src/__tests__/settings-defaults.test.ts | 13 ++++++
packages/core/src/settings-schema.ts | 5 +++
packages/core/src/types.ts | 7 ++++
packages/dashboard/app/App.tsx | 45 ++++++++++++++++++--
.../__tests__/App.openTasksInRightSidebar.test.ts | 48 +++++++++++++++++++++-
.../dashboard/app/components/FloatingWindow.css | 28 +++++++++++++
.../dashboard/app/components/SettingsModal.tsx | 1 +
.../components/__tests__/FloatingWindow.test.tsx | 22 ++++++++++
.../settings/sections/AppearanceSection.tsx | 7 ++++
.../sections/__tests__/AppearanceSection.test.tsx | 19 +++++++++
packages/dashboard/app/hooks/useAppSettings.ts | 5 +++
14 files changed, 206 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-7259
Fusion-Task-Lineage: 05f22978-ede7-4d13-940c-5108390959f7
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 23:12:56 -07:00
gsxdsm
2a5a108123
FN-7265: preserve workflow on refinements
...
Preserve workflow context when creating refinement tasks from completed or reviewed work.
- Inherit explicit source workflow selections when creating refinement tasks and seed the new card into the workflow entry column.
- Write task rows and workflow-selection rows atomically so refinements cannot be stranded outside their intended board.
- Clear successful done-task chat refinement composer bubbles and document the dashboard behavior.
- Add core and dashboard regression coverage for refinement workflow preservation.
Files changed:
.changeset/fuzzy-refinements-dance.md | 7 +
.changeset/preserve-refinement-workflow.md | 7 +
docs/dashboard-guide.md | 3 +-
.../src/__tests__/workflow-selection-store.test.ts | 159 +++++++++++++++++++--
packages/core/src/store.ts | 55 ++++++-
.../workflow-selection-cross-surface.test.tsx | 41 +++++-
packages/dashboard/app/components/TaskChatTab.tsx | 5 +
.../app/components/__tests__/TaskChatTab.test.tsx | 27 +++-
.../TaskDetailModal.definition-actions.test.tsx | 52 +++++++
9 files changed, 335 insertions(+), 21 deletions(-)
Fusion-Task-Id: FN-7265
Fusion-Task-Lineage: 48700e3e-9f3a-474e-806c-47db0b75fca1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 22:54:50 -07:00
gsxdsm
d05ca2154f
FN-7258: restore mobile board scroll on return
...
Preserve the board lane position when mobile users return from full-panel task detail.
- Capture and restore board, column, project-content, and document scroll offsets for board detail navigation.
- Retry board scroll restoration across bounded animation frames after remount and hydration.
- Cover mobile and desktop Back to board behavior with focused tests and document the mobile scroll contract.
- Add a patch changeset for the published CLI package.
Files changed:
.changeset/fn-7258-mobile-board-scroll.md | 7 ++
docs/dashboard-guide.md | 2 +
.../__tests__/navigation-history.test.tsx | 111 ++++++++++++++++++---
.../hooks/__tests__/useBoardScrollRestore.test.ts | 43 +++++++-
.../dashboard/app/hooks/useBoardScrollRestore.ts | 45 ++++++---
.../utils/__tests__/boardScrollSnapshot.test.ts | 91 +++++++++++++++--
.../dashboard/app/utils/boardScrollSnapshot.ts | 41 +++++++-
7 files changed, 305 insertions(+), 35 deletions(-)
Fusion-Task-Id: FN-7258
Fusion-Task-Lineage: 97faf031-4244-4117-9948-45491c364134
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 21:02:34 -07:00
gsxdsm
480d4d03fd
FN-7254: add worktree commit history targets
...
Allow Git Manager users to inspect commits and diffs from registered worktrees without changing mutation targets.
- Add read-only worktreePath targeting to Git commit list and commit diff APIs with registered-worktree validation.
- Add a Commits history target selector and Worktrees "View commits" shortcuts that clear stale diff state when targets change.
- Document the read-only scope and cover API, UI, responsive layout, and mutation-target invariants with tests.
Files changed:
.changeset/fn-7254-git-manager-worktree-commits.md | 7 +
.changeset/fn-7254-worktree-commit-target-ui.md | 7 +
.changeset/fn-7254-worktree-commits.md | 7 +
docs/dashboard-guide.md | 6 +-
packages/dashboard/app/api/legacy.ts | 15 +-
.../dashboard/app/components/GitManagerModal.tsx | 133 ++++++++++++++--
packages/dashboard/app/components/ScriptsModal.css | 113 ++++++++++++++
.../components/__tests__/GitManagerModal.test.tsx | 167 +++++++++++++++++++++
.../dashboard/src/__tests__/routes-git.test.ts | 34 +++++
.../dashboard/src/routes/register-git-github.ts | 31 +++-
10 files changed, 497 insertions(+), 23 deletions(-)
Fusion-Task-Id: FN-7254
Fusion-Task-Lineage: 37314175-fef4-4f8d-8268-cf27fee09857
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 20:24:24 -07:00
gsxdsm
45dd8082b3
FN-7256: reuse fresh task snapshots on board return
...
Reuse fresh task data when users return to Board or List views.
- Track the confirmed task snapshot context and freshness window before deciding whether task-view re-entry needs a catch-up fetch.
- Preserve SSE reconnect, stale snapshot, query, archive, project-change, missing-data, and error recovery fetch paths.
- Cover fresh, stale, empty, failed, no-snapshot, project-scoped, and reconnect return behavior in useTasks tests.
- Document the Board/List return cache behavior and add a patch changeset for the published CLI package.
Files changed:
.changeset/fn-7256-board-return-cache.md | 7 +
docs/dashboard-guide.md | 2 +
.../dashboard/app/hooks/__tests__/useTasks.test.ts | 221 ++++++++++++++++++++-
packages/dashboard/app/hooks/useTasks.ts | 34 +++-
4 files changed, 258 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-7256
Fusion-Task-Lineage: 14dd91c4-bf06-4dcf-8324-2572828fd2ee
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 20:16:41 -07:00
gsxdsm
f01e5c9651
FN-7247: document current workflow behavior
...
Refresh workflow documentation to match the latest runtime, dashboard, and agent tool behavior.
- Add a current workflow behavior inventory covering built-ins, fail-closed runtime semantics, optional gates, settings, tools, routing, and create forwarding.
- Clarify dashboard All workflows aggregation, workflow badges, and workflow-aware task creation behavior.
- Expand editor, agent, CLI, and settings docs for governed workflow authoring, values, trait inspection, and selection boundaries.
- Add docs drift tests requiring workflow docs index coverage and current behavior markers.
Files changed:
docs/agents.md | 5 +-
docs/cli-reference.md | 11 ++-
docs/dashboard-guide.md | 10 ++-
docs/settings-reference.md | 5 ++
docs/workflow-editor.md | 15 +++-
docs/workflow-steps.md | 48 ++++++++---
.../cli/src/__tests__/docs-readme-index.test.ts | 4 +
.../src/__tests__/workflow-docs-current.test.ts | 95 ++++++++++++++++++++++
8 files changed, 172 insertions(+), 21 deletions(-)
Fusion-Task-Id: FN-7247
Fusion-Task-Lineage: 72bf0c89-80a3-440c-b6aa-1aea315279f5
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 19:46:23 -07:00
gsxdsm
ffe2092109
FN-7248: require confirmation for footer concurrency edits
...
Footer concurrency controls now require explicit confirmation before persisting scheduler-capacity changes.
- Add local pending state for global and project footer concurrency slider edits so dismissals revert instead of saving.
- Reuse Command Center confirmation copy for single and grouped concurrency changes.
- Cover confirm, cancel, close, Escape, outside-click, loading, and error behaviors in EngineControlMenu tests.
- Document the footer confirmation and dismissal semantics and add a patch changeset.
Files changed:
.../fn-7248-footer-concurrency-confirmation.md | 7 +
docs/dashboard-guide.md | 3 +-
.../dashboard/app/components/EngineControlMenu.tsx | 235 ++++++++++++++---
.../__tests__/EngineControlMenu.test.tsx | 287 +++++++++++++++++++--
4 files changed, 478 insertions(+), 54 deletions(-)
Fusion-Task-Id: FN-7248
Fusion-Task-Lineage: cbcd21fa-62c3-4c05-ac3d-67a641cf47c8
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 19:29:36 -07:00
gsxdsm
797b30ce5d
FN-7242: add all-workflows board view and workflow badges
...
Adds an aggregate workflow board mode with workflow-name context on mixed-workflow task surfaces.
- Add a dashboard-only All workflows switcher option that unions visible workflow columns without persisting the sentinel as a real workflow selection.
- Thread workflow metadata into board cards, worktree groups, and task detail headers so mixed workflow views show the task workflow name.
- Update workflow status counts, quick-create targeting, docs, changesets, and regression coverage for aggregate board and badge behavior.
Files changed:
.changeset/fn-7242-all-workflows-board.md | 7 +
.changeset/fn-7242-task-detail-workflow-badge.md | 7 +
.changeset/fn-7242-workflow-badges.md | 7 +
docs/dashboard-guide.md | 8 +-
.../workflow-selection-cross-surface.test.tsx | 6 +-
packages/dashboard/app/components/Board.tsx | 295 +++++++++++++++++++--
packages/dashboard/app/components/Column.tsx | 6 +-
packages/dashboard/app/components/TaskCard.css | 16 +-
packages/dashboard/app/components/TaskCard.tsx | 23 +-
.../dashboard/app/components/TaskDetailModal.css | 14 +-
.../dashboard/app/components/TaskDetailModal.tsx | 43 ++-
.../dashboard/app/components/WorkflowSwitcher.tsx | 38 ++-
.../dashboard/app/components/WorktreeGroup.tsx | 5 +
.../app/components/__tests__/Board.test.tsx | 192 +++++++++++++-
.../__tests__/TaskCard.badge-wrap.test.tsx | 2 +
.../app/components/__tests__/TaskCard.test.tsx | 38 +++
.../__tests__/TaskDetailModal.rendering.test.tsx | 161 ++++++++++-
.../components/__tests__/WorkflowSwitcher.test.tsx | 50 ++++
.../__tests__/workflowStatusCounts.test.ts | 26 +-
.../app/components/workflowStatusCounts.ts | 16 +-
20 files changed, 887 insertions(+), 73 deletions(-)
Fusion-Task-Id: FN-7242
Fusion-Task-Lineage: 7ff9d35a-83ef-406c-88f4-a8846edad381
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 18:54:28 -07:00
gsxdsm
03d4f95e8a
FN-7224: separate Anthropic subscription and API-key auth
...
Separate Claude subscription OAuth from raw Anthropic API-key authentication surfaces.
- Add synthetic Anthropic Subscription and Anthropic API Key provider IDs while preserving upstream credential storage compatibility.\n- Map dashboard auth routes, CLI auth storage, Settings, and onboarding flows so OAuth login/logout and API-key save/clear no longer share one user-facing card.\n- Extend auth tests, docs, icons, and the release changeset for the split Anthropic authentication behavior.\n\nFiles changed:\n .changeset/fn-7224-separate-anthropic-api-key.md | 7 +\n docs/dashboard-guide.md | 2 +-\n docs/settings-reference.md | 2 +-\n .../src/commands/__tests__/provider-auth.test.ts | 233 +++++++++++++++++++--\n packages/cli/src/commands/provider-auth.ts | 202 +++++++++++++++---\n packages/dashboard/app/api/legacy.ts | 2 -\n .../app/components/ModelOnboardingModal.tsx | 146 ++++---------\n packages/dashboard/app/components/ProviderIcon.tsx | 7 +\n .../__tests__/AuthenticationSection.test.tsx | 89 ++++----\n .../__tests__/SettingsModal.models-auth.test.tsx | 77 ++++---\n .../components/__tests__/onboarding-flow.test.tsx | 29 ++-\n .../components/__tests__/settings-mobile.test.tsx | 17 +-\n .../settings/sections/AuthenticationSection.tsx | 20 +-\n .../dashboard/src/__tests__/routes-auth.test.ts | 111 ++++++----\n .../dashboard/src/routes/register-auth-routes.ts | 93 +++++---\n 15 files changed, 713 insertions(+), 324 deletions(-)
Fusion-Task-Id: FN-7224
Fusion-Task-Lineage: a2db2cf6-3452-4516-81e5-41dcdf47e1d2
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 18:32:36 -07:00
gsxdsm
90b62b7884
FN-7246: preserve explicit empty step dependencies
...
Preserve authored empty workflow step dependencies so parallel roots remain independent.
- Keep parser and TaskStep projections from dropping explicit empty dependsOn arrays.
- Treat missing dependsOn as the legacy previous-step fallback while allowing [] to mean no dependencies.
- Cover heading and JSON parsers plus parallel foreach scheduling with regression tests and docs.
Files changed:
.changeset/fn-7246-workflow-depends-on-empty.md | 7 +++++++
docs/workflow-steps.md | 4 ++--
packages/core/src/__tests__/step-parsers.test.ts | 8 ++++----
packages/core/src/step-parsers.ts | 30 +++++++++++++++++++++---------
packages/core/src/types.ts | 13 +++++++++----
packages/engine/src/__tests__/workflow-parse-steps.test.ts | 12 ++++++++++++
packages/engine/src/__tests__/workflow-step-parallel.test.ts | 30 +++++++++++++++++++++++++++++-
packages/engine/src/workflow-graph-foreach.ts | 9 +++++++--
packages/engine/src/workflow-node-handlers.ts | 6 +++++-
9 files changed, 96 insertions(+), 23 deletions(-)
Fusion-Task-Id: FN-7246
Fusion-Task-Lineage: a75687fa-5711-4509-b60f-43669323a6c0
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 18:05:44 -07:00
gsxdsm
6f2b8ab6e5
FN-7244: retry unavailable Plan Review without replanning
...
Preserve existing task specs when Plan Review retries after reviewer outages.
- Route plan-review-unavailable triage tasks through the Plan Review/finalization path instead of the planner.
- Validate existing PROMPT.md content and fail clearly when it is missing, empty, or invalid.
- Preserve retry status across interrupted triage work and cover retry behavior with engine tests.
- Document the retry lifecycle and add a patch changeset.
Files changed:
.../fn-7244-plan-review-unavailable-retry.md | 7 +
docs/architecture.md | 2 +
docs/workflow-steps.md | 2 +
.../triage-plan-review-unavailable-retry.test.ts | 251 +++++++++
packages/engine/src/__tests__/triage.test.ts | 604 +++++++++++++++++++++
packages/engine/src/triage.ts | 108 +++-
6 files changed, 945 insertions(+), 29 deletions(-)
Fusion-Task-Id: FN-7244
Fusion-Task-Lineage: 80e790e3-d2b9-4309-beec-3dbf6a03db39
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 17:40:00 -07:00
gsxdsm
42226edde1
FN-7245: expose workflow authoring tools to agents
...
Expose workflow authoring and selection tools through agent-visible extension surfaces.
- Register workflow list/get/create/update/delete/settings/select and trait-list tools in the published pi extension.
- Export shared workflow tool schemas/factories and include workflow settings in centralized authoring tool sets.
- Update action-gate classifications, permission examples, docs, tests, and the changeset for the new agent workflow surface.
Files changed:
.changeset/FN-7245-workflow-tools.md | 7 +
docs/agents.md | 4 +-
docs/cli-reference.md | 17 ++
docs/workflow-steps.md | 9 +-
.../src/__tests__/extension-workflow-tools.test.ts | 244 +++++++++++++++++++++
packages/cli/src/__tests__/extension.test.ts | 8 +
packages/cli/src/extension.ts | 142 ++++++++++++
packages/core/src/types.ts | 6 +-
.../dashboard/src/__tests__/chat-manager.test.ts | 9 +-
.../planning-document-tools-exposure.test.ts | 19 +-
.../engine/src/__tests__/agent-action-gate.test.ts | 8 +
.../agent-workflow-tools-exposure.test.ts | 30 ++-
.../src/__tests__/gating-classifications.test.ts | 13 +-
.../src/__tests__/permanent-agent-gating.test.ts | 4 +-
packages/engine/src/agent-tools.ts | 13 +-
packages/engine/src/gating-classifications.ts | 6 +-
packages/engine/src/index.ts | 7 +
17 files changed, 506 insertions(+), 40 deletions(-)
Fusion-Task-Id: FN-7245
Fusion-Task-Lineage: 82501602-7177-4ee8-a67b-32de35aa73de
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 16:35:51 -07:00
gsxdsm
5b668d297f
FN-7238: add Done column sort modes
...
Add Done-column controls for choosing descending completion-date or task-ID order.
- Add a Done-only sort selector shared by legacy and workflow complete columns.
- Extend task display sorting with completion-date and task-ID descending modes.
- Cover board, column, and sorting behavior with regression tests and docs.
- Add a minor changeset for the published CLI package.
Files changed:
.changeset/fn-7238-done-column-sort.md | 7 +
docs/dashboard-guide.md | 5 +-
packages/dashboard/app/components/Board.tsx | 28 +++-
packages/dashboard/app/components/Column.tsx | 33 ++++-
.../app/components/__tests__/Board.test.tsx | 133 ++++++++++++++++-
.../app/components/__tests__/Column.test.tsx | 158 +++++++++++++++++++++
.../app/components/__tests__/taskSorting.test.ts | 114 +++++++++++++++
packages/dashboard/app/components/taskSorting.ts | 39 ++++-
packages/dashboard/app/styles.css | 35 +++++
9 files changed, 538 insertions(+), 14 deletions(-)
Fusion-Task-Id: FN-7238
Fusion-Task-Lineage: 143722e9-0b59-41e5-954d-810263f18ba9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 15:46:35 -07:00
gsxdsm
b36327059a
FN-7234: preserve board workflow selections
...
Persist workflow choices across dashboard board surfaces so operators return to their selected lane reliably.
- Add project-scoped durable storage helpers for board workflow selection with stale-id validation and cleanup.
- Share the workflow selection hook across Board, List, Header, and Graph surfaces while preserving cached payloads on transient refresh failures.
- Update List quick-create/planning handoffs, cross-surface tests, and dashboard documentation for durable workflow selection behavior.
- Add patch changesets for the published Fusion package.
Files changed:
.changeset/fn-7234-durable-board-workflow-selection.md | 7 ++
.changeset/workflow-selection-board-list.md | 7 ++
docs/dashboard-guide.md | 5 +-
.../workflow-selection-cross-surface.test.tsx | 66 ++++++++--
packages/dashboard/app/components/ListView.tsx | 111 ++++-------------
.../app/components/__tests__/Board.test.tsx | 45 +++++++
.../__tests__/GraphWorkflowSwitcherSlot.test.tsx | 57 +++++++++
.../__tests__/HeaderWorkflowSwitcherSlot.test.tsx | 42 ++++++-
.../app/components/__tests__/ListView.test.tsx | 122 +++++++++++++++++++
.../app/hooks/__tests__/useBoardWorkflows.test.ts | 29 +++++
packages/dashboard/app/hooks/useBoardWorkflows.ts | 64 ++++++++-
.../utils/__tests__/boardWorkflowSelection.test.ts | 135 +++++++++++++++++++++
.../app/utils/__tests__/projectStorage.test.ts | 3 +-
.../dashboard/app/utils/boardWorkflowSelection.ts | 49 ++++++++
packages/dashboard/app/utils/projectStorage.ts | 1 +
15 files changed, 633 insertions(+), 110 deletions(-)
Fusion-Task-Id: FN-7234
Fusion-Task-Lineage: 6ebc000c-19c3-4a8e-9303-4e18a59902ed
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 14:41:52 -07:00
gsxdsm
7b43f73327
FN-7235: align footer concurrency use markers
...
Align footer concurrency indicators with absolute running-agent utilization.
- Change footer use-marker ratio math to use current running count over configured cap.
- Cover zero, one-active, mid-track, over-cap, loading, and error marker states in EngineControlMenu tests.
- Document the footer marker behavior and add a patch changeset for the published CLI package.
Files changed:
.changeset/fn-7235-footer-concurrency-marker.md | 7 +++
docs/dashboard-guide.md | 3 +-
.../dashboard/app/components/EngineControlMenu.tsx | 14 +++--
.../__tests__/EngineControlMenu.test.tsx | 70 +++++++++++++++++++---
4 files changed, 79 insertions(+), 15 deletions(-)
Fusion-Task-Id: FN-7235
Fusion-Task-Lineage: 0dda1277-2d89-4195-882c-6488dfc67288
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 13:44:09 -07:00
gsxdsm
b169072224
fix(FN-7233): enforce workflow summary and done guards
2026-06-29 11:07:11 -07:00
gsxdsm
998a7f2745
fix(FN-7226): make plan review the single pre-execution gate
...
Fusion-Task-Id: FN-7226
2026-06-29 01:48:27 -07:00
gsxdsm
138d6447fb
fix(workflows): address review feedback on recovery and docs
2026-06-29 00:10:27 -07:00
gsxdsm
d1caa3bdbf
test(workflows): cover coding optional gates
2026-06-28 23:45:32 -07:00
gsxdsm
d4b8032f28
feat(workflows): add optional plan review gate
2026-06-28 23:38:33 -07:00
gsxdsm
6ce0b44058
feat(workflows): make coding stepwise with final review
2026-06-28 23:24:29 -07:00
gsxdsm
e963be4088
FN-7220: harden workflow recovery lineage checks
...
Harden workflow recovery so pause/resume parks and already-merged detection preserve task ownership lineage.
- Reject already-merged recovery candidates with foreign task or lineage trailers before accepting patch-id, tree, or branch-tip matches.
- Recover benign pause/resume abort parks back to todo when the task has no live executor/session state.
- Add real-git and executor regression coverage plus architecture docs and a changeset for recovery behavior.
Files changed:
.changeset/fn-7220-workflow-recovery-lineage.md | 7 +
docs/architecture.md | 8 +-
.../already-merged-detector.real-git.test.ts | 69 ++++++++
.../executor-paused-abort-todo-benign.test.ts | 194 ++++++++++++++++++---
.../self-healing-already-merged.real-git.test.ts | 64 ++++++-
packages/engine/src/already-merged-detector.ts | 113 +++++++++---
packages/engine/src/executor.ts | 84 +++++++++
packages/engine/src/self-healing.ts | 134 ++++++++++++--
8 files changed, 609 insertions(+), 64 deletions(-)
Fusion-Task-Id: FN-7220
Fusion-Task-Lineage: 186c65bc-fe1a-457a-b90a-abbd73044252
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-28 22:43:02 -07:00
gsxdsm
d0a369e34d
FN-7218: default the task sidebar to active work
...
Default the right-dock task sidebar to active work and make task-detail navigation reversible.
- Filter the dock Tasks list to hide done tasks by default while keeping archived tasks out of the compact sidebar.
- Add a Show Done toggle, updated empty states, and styling for the compact controls.
- Convert the task-detail header arrow into an accessible back button that uses the existing close-detail path.
- Document the sidebar behavior, add a patch changeset, and cover the active/default/back-button flows in tests.
Files changed:
.changeset/fn-7218-task-sidebar-active-list.md | 7 ++
docs/dashboard-guide.md | 5 +-
packages/dashboard/app/components/DockTaskList.css | 37 +++++++++
packages/dashboard/app/components/DockTaskList.tsx | 53 ++++++++++---
packages/dashboard/app/components/RightDock.tsx | 17 ++++-
.../app/components/__tests__/DockTaskList.test.tsx | 89 ++++++++++++++++++++--
.../app/components/__tests__/RightDock.test.tsx | 69 ++++++++++++-----
7 files changed, 239 insertions(+), 38 deletions(-)
Fusion-Task-Id: FN-7218
Fusion-Task-Lineage: ce8fe55e-a89e-4ca6-940e-2ca06c3c26df
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-28 21:10:28 -07:00
gsxdsm
f3d9bfb27b
FN-7210: add right-dock Tasks tab
...
Add a first-class Tasks panel to the right dock while preserving Files as the default dock view.
- Register a Tasks overflow view with a compact dock task list and empty state.
- Anchor in-dock task detail to the Tasks tab so tab switches preserve the last-viewed task snapshot.
- Update right-dock controller wiring, tests, docs, and changesets for the new dock task surface.
Files changed:
...210-recover-completed-incomplete-steps-guard.md | 2 +-
.changeset/fn-7210-right-dock-tasks-tab.md | 7 ++
docs/dashboard-guide.md | 7 +-
packages/dashboard/app/components/DockTaskList.css | 36 +++++++
packages/dashboard/app/components/DockTaskList.tsx | 58 +++++++++++
packages/dashboard/app/components/RightDock.tsx | 26 ++++-
.../app/components/__tests__/DockTaskList.test.tsx | 48 ++++++++++
.../app/components/__tests__/RightDock.test.tsx | 106 +++++++++++++++++----
.../__tests__/overflowViewRegistry.test.tsx | 5 +-
.../app/components/overflowViewRegistry.tsx | 26 ++++-
.../app/components/useRightDockController.tsx | 7 +-
11 files changed, 298 insertions(+), 30 deletions(-)
Fusion-Task-Id: FN-7210
Fusion-Task-Lineage: 27468cc2-6ce9-46cc-a27e-cf5f49e93c40
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-28 20:11:43 -07:00
gsxdsm
d87db1490e
FN-7215: compact task chat tool summaries
...
Compact task-detail chat tool-call history so collapsed summaries stay scannable.
- Tighten collapsed tool-call summary styling to one-line, ellipsis-friendly rows on desktop and mobile.
- Preserve count, deduped tool names, overflow, and error indicators while keeping expanded details dense.
- Document the compact task chat behavior and add regression coverage against regular Chat styling.
Files changed:
.changeset/fn-7215-compact-task-chat-tools.md | 7 +++
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/TaskChatTab.css | 63 +++++++++++++++-------
packages/dashboard/app/components/TaskChatTab.tsx | 4 ++
.../app/components/__tests__/TaskChatTab.test.tsx | 50 ++++++++++++++++-
5 files changed, 105 insertions(+), 21 deletions(-)
Fusion-Task-Id: FN-7215
Fusion-Task-Lineage: 0cec8c11-1539-4c11-96d9-ec5a7936862b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-28 20:02:14 -07:00
gsxdsm
58a0c1f1d6
FN-7214: make workflow node pause resume re-entrant
...
Workflow graph pause aborts now re-enter interrupted nodes instead of failing the task.
- Track and abort active workflow graph runners during hard cancel and global pause flows.
- Stamp interrupted workflow nodes with typed engine-pause abort context and surface it through graph run results.
- Re-enter safe todo, in-progress, and auto-mergeable in-review graph nodes with retry bounds and run-audit evidence.
- Add regression coverage and architecture notes for paused node re-entry behavior.
Files changed:
.changeset/fn-7214-workflow-graph-node-pause-resume.md | 7 +
docs/architecture.md | 4 +-
packages/engine/src/__tests__/executor-paused-abort-todo-benign.test.ts | 231 ++++++++++++++++++++-
packages/engine/src/__tests__/workflow-graph-paused-node-resume.test.ts | 148 +++++++++++++
packages/engine/src/executor.ts | 158 +++++++++++++-
packages/engine/src/workflow-graph-executor.ts | 50 ++++-
packages/engine/src/workflow-graph-task-runner.ts | 26 ++-
7 files changed, 614 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-7214
Fusion-Task-Lineage: 1689e3fd-e35f-4e83-8049-aabbab49cecd
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-28 19:42:45 -07:00
gsxdsm
013d50fe8b
FN-7206: add Anthropic API-key authentication
...
Add Anthropic API-key authentication alongside the existing OAuth flow.
- Expose Anthropic as a built-in API-key provider without hiding its OAuth controls.
- Render dual-auth Anthropic cards in Settings and model onboarding with key hints, save, and clear actions.
- Cover API status, CLI provider classification, desktop/mobile settings, and onboarding flows with tests and docs.
Files changed:
.changeset/fn-7206-anthropic-api-key.md | 7 +
docs/dashboard-guide.md | 2 +
docs/settings-reference.md | 4 +
.../src/commands/__tests__/provider-auth.test.ts | 51 ++++---
packages/cli/src/commands/provider-auth.ts | 10 +-
packages/dashboard/app/api/legacy.ts | 2 +
.../app/components/ModelOnboardingModal.tsx | 121 +++++++++++++++-
.../__tests__/AuthenticationSection.test.tsx | 141 +++++++++++++++++++
.../__tests__/SettingsModal.models-auth.test.tsx | 51 +++++++
.../__tests__/SettingsModal.test-harness.tsx | 2 +
.../components/__tests__/onboarding-flow.test.tsx | 28 ++++
.../components/__tests__/settings-mobile.test.tsx | 16 ++-
.../settings/sections/AuthenticationSection.tsx | 153 ++++++++++-----------
.../dashboard/src/__tests__/routes-auth.test.ts | 70 ++++++++++
.../dashboard/src/routes/register-auth-routes.ts | 17 ++-
15 files changed, 569 insertions(+), 106 deletions(-)
Fusion-Task-Id: FN-7206
Fusion-Task-Lineage: 3559b7ea-47c6-4f8c-9aa1-5318f47ce07e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-28 17:03:11 -07:00
gsxdsm
befb49b1e6
FN-7204: make narrow chat messages full width
...
Narrow chat surfaces now let messages span their constrained container width.
- Add a ChatView container query that makes all message variants full-width in narrow hosts such as Quick Chat popups and the right dock.
- Update the mobile bubble cap to full width while preserving tablet assistant widening and desktop caps.
- Cover the responsive CSS contracts in dashboard tests and document the behavior with a patch changeset.
Files changed:
.changeset/fn-7204-full-width-chat-messages.md | 7 +++++++
docs/dashboard-guide.md | 6 +++---
packages/dashboard/app/components/ChatView.css | 12 +++++++++++-
.../__tests__/ChatView.core-contracts.test.tsx | 20 +++++++++++++++++---
.../components/__tests__/ChatView.mobile.test.tsx | 4 ++--
5 files changed, 40 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-7204
Fusion-Task-Lineage: 19da0d46-f0bf-46e7-9f87-900c5184f378
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-28 14:56:52 -07:00
gsxdsm
6cf6ad3bd2
FN-7202: add Quick Chat outside-click dismissal setting
...
Add a project setting that lets operators keep Quick Chat open until explicitly closed.
- Add quickChatCloseOnOutsideClick to project settings defaults, schema, types, and app settings hook.
- Wire the Quick Chat floating window to honor the setting while preserving default outside-click dismissal.
- Add a Settings > General toggle, documentation, release changeset, and coverage for defaults, settings loading, modal form, and floating-window behavior.
Files changed:
.../fn-7202-quick-chat-outside-click-setting.md | 7 +++
docs/dashboard-guide.md | 2 +-
docs/settings-reference.md | 1 +
.../core/src/__tests__/settings-defaults.test.ts | 13 +++++
packages/core/src/settings-schema.ts | 5 ++
packages/core/src/types.ts | 6 +++
packages/dashboard/app/App.tsx | 6 ++-
.../components/__tests__/FloatingWindow.test.tsx | 13 +++++
.../__tests__/SettingsModal.general.test.tsx | 8 +++
.../settings/sections/GeneralSection.tsx | 9 ++++
.../app/hooks/__tests__/useAppSettings.test.ts | 62 ++++++++++++++++++++++
packages/dashboard/app/hooks/useAppSettings.ts | 5 ++
12 files changed, 135 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-7202
Fusion-Task-Lineage: 4d52ea30-6475-404e-b1b9-28e8e581005c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-28 13:17:33 -07:00
gsxdsm
ac4c3b7a01
FN-7192: Document custom workflow capacity dispatch
...
Clarify the custom workflow migration boundary and lock dispatch behavior with tests.
- Document that pure-v1 custom workflows keep trait-less default columns for rollback compatibility.
- Show the v2 hold(capacity) and wip traits required for custom workflow capacity dispatch.
- Add core and engine regression coverage for pure-v1 stranding and authored-v2 release behavior.
Files changed:
docs/workflow-editor.md | 34 +++++
docs/workflow-steps.md | 40 ++++++
.../__tests__/custom-v1-workflow-dispatch.test.ts | 154 +++++++++++++++++++++
packages/engine/src/__tests__/hold-release.test.ts | 81 ++++++++++-
4 files changed, 306 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-7192
Fusion-Task-Lineage: ff7af258-c0cb-4b81-8919-9e076c3ac1df
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-28 09:59:57 -07:00
gsxdsm
631e8fc675
FN-7159: add canonical CE HTML checklist repair
...
Enable CE HTML document review to safely canonicalize malformed checklists.
- Add a DOM-safe checklist-repair operation that rewrites provable markdown-marker and checkbox list shapes into canonical CE checklist HTML.
- Refuse ambiguous, nested, state-bearing, or protected checklist-like markup while preserving report-only fallback semantics.
- Expand HTML mutation and CE doc-review tests plus operator docs and rendering guidance for the canonical checklist contract.
Files changed:
.changeset/fn-7159-canonical-html-checklist.md | 7 +
docs/workflow-editor.md | 2 +-
docs/workflow-steps.md | 5 +-
.../src/__tests__/ce-doc-review-html-mode.test.ts | 6 +-
.../src/artifacts/__tests__/html-mutation.test.ts | 135 ++++++++++++++-
.../src/artifacts/html-mutation.ts | 186 ++++++++++++++++++++-
.../ce-brainstorm/references/html-rendering.md | 31 ++++
.../src/skills/ce-doc-review/SKILL.md | 13 +-
.../skills/ce-ideate/references/html-rendering.md | 31 ++++
.../skills/ce-plan/references/html-rendering.md | 31 ++++
10 files changed, 436 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-7159
Fusion-Task-Lineage: bbde7003-2942-4363-98d5-53bc3a5976b8
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-28 09:20:17 -07:00