Commit Graph

2006 Commits

Author SHA1 Message Date
gsxdsm
f04f01db1d FN-7362: Fix board task context menu clipping
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>
2026-07-01 07:33:57 -07:00
gsxdsm
98ca9ac090 FN-7353: fix mobile task menu action taps
Fix task context menu touch activation so mobile popup actions complete reliably.

- Commit touch and pen menu actions on pointer release while preserving mouse click activation.
- Guard synthesized mobile clicks so each selected task action runs exactly once and closes the menu.
- Cover Board, List, shared context menu, and Task Detail mobile popup action selection in tests and docs.
- Add a patch changeset for the published CLI bundle.

Files changed:
 .changeset/fn-7353-mobile-popup-context-menu.md    |  7 ++++
 docs/dashboard-guide.md                            | 12 ++++---
 .../dashboard/app/components/TaskContextMenu.tsx   | 41 ++++++++++++++++++----
 .../app/components/__tests__/ListView.test.tsx     | 12 +++++--
 .../app/components/__tests__/TaskCard.test.tsx     | 26 +++++++++++---
 .../components/__tests__/TaskContextMenu.test.tsx  | 23 ++++++++++++
 .../TaskDetailModal.definition-actions.test.tsx    | 31 ++++++++++++++++
 7 files changed, 133 insertions(+), 19 deletions(-)

Fusion-Task-Id: FN-7353

Fusion-Task-Lineage: 4de96306-1bcc-403d-88fa-be4ec0d9149d

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-01 07:33:56 -07:00
gsxdsm
62c4aae038 FN-7358: recover Sonnet 5 chat fallbacks
Recover Sonnet 5 chat sends by applying configured fallback models and clearer failure context.

- Allow explicit dashboard chat model selections to use the configured fallback on retryable provider/model failures.
- Preserve selected provider/model context in no-fallback chat errors so operators can identify unavailable models.
- Expand provider not-found detection and regression coverage for Anthropic Sonnet 5 404 payloads.
- Document fallback behavior and add the published package changeset.

Files changed:
 .changeset/fn-7358-sonnet-5-response-failed.md     |  7 +++
 docs/settings-reference.md                         |  2 +-
 .../dashboard/src/__tests__/chat-manager.test.ts   | 71 +++++++++++++++++++---
 packages/dashboard/src/chat.ts                     | 67 +++++++++++++++++---
 packages/engine/src/__tests__/pi.test.ts           | 71 +++++++++++++++++++++-
 .../src/__tests__/transient-error-detector.test.ts |  4 ++
 packages/engine/src/pi.ts                          |  4 +-
 packages/engine/src/transient-error-detector.ts    |  4 +-
 8 files changed, 208 insertions(+), 22 deletions(-)

Fusion-Task-Id: FN-7358

Fusion-Task-Lineage: 095a3218-1d4a-4ccb-a8c9-c9f81822b084

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-01 07:33:56 -07:00
gsxdsm
7457f04287 FN-7355: reuse standard chat surface for planner
Task planner chat now renders through the shared Chat surface while preserving task-scoped behavior.

- Extract shared standard chat message, streaming, tool-call, and action-button rendering for reuse outside ChatView.
- Update TaskPlannerChatTab to use the shared surface for messages, thinking output, mobile send dedupe, and stop generation.
- Cover planner chat standard-surface rendering and mobile first-tap behavior in tests, docs, and a patch changeset.

Files changed:
 .changeset/fn-7355-standard-planner-chat.md        |   7 +
 docs/dashboard-guide.md                            |   2 +-
 packages/dashboard/app/components/ChatView.css     |  18 +
 packages/dashboard/app/components/ChatView.tsx     | 795 ++-------------------
 .../app/components/StandardChatSurface.tsx         | 417 +++++++++++
 .../app/components/TaskPlannerChatTab.css          |  39 +-
 .../app/components/TaskPlannerChatTab.tsx          | 246 ++++---
 ...etailModal.responsive-and-dependencies.test.tsx |   4 +-
 .../__tests__/TaskPlannerChatTab.test.tsx          |  52 ++
 9 files changed, 693 insertions(+), 887 deletions(-)

Fusion-Task-Id: FN-7355

Fusion-Task-Lineage: 608ee0d7-3a1b-4f5f-a295-d3a4e62d759e

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-01 07:33:56 -07:00
gsxdsm
b3b01bc25d FN-7357: add all workflows to top-level selectors
Extend the dashboard aggregate workflow view across top-level workflow selectors without leaking its sentinel into task creation.

- Add All workflows as an aggregate option for List, Header, Planning/Missions, and Graph selectors.\n- Preserve real workflow handoffs for quick create, planning, missions, and workflow editor entry points.\n- Include aggregate workflow counts and cross-surface regression coverage, plus docs and a changeset.\n\nFiles changed:\n .changeset/fn-7357-all-workflows-selectors.md      |  7 +++\n docs/dashboard-guide.md                            |  9 ++--\n .../workflow-selection-cross-surface.test.tsx      | 20 ++++---\n .../app/components/GraphWorkflowSwitcherSlot.tsx   | 12 +++--\n .../app/components/HeaderWorkflowSwitcherSlot.tsx  | 10 ++--\n packages/dashboard/app/components/ListView.tsx     | 63 +++++++++++++++++-----\n .../components/PlanningWorkflowSwitcherSlot.tsx    |  5 +-\n .../__tests__/GraphWorkflowSwitcherSlot.test.tsx   | 34 ++++++++++++\n .../__tests__/HeaderWorkflowSwitcherSlot.test.tsx  | 27 ++++++++++\n .../app/components/__tests__/ListView.test.tsx     | 41 +++++++++++++-\n .../app/components/dashboard/MainContent.tsx       | 17 ++++--\n .../app/components/workflowStatusCounts.ts         |  5 ++\n packages/dashboard/app/hooks/useBoardWorkflows.ts  | 20 +++++--\n .../dashboard/app/utils/boardWorkflowSelection.ts  |  5 +-\n 14 files changed, 233 insertions(+), 42 deletions(-)

Fusion-Task-Id: FN-7357

Fusion-Task-Lineage: b8658cad-7b12-4a06-b627-e2bde7de6951

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-01 07:33:56 -07:00
gsxdsm
d448603e71 FN-7352: route completed-task refine menus to detail
Completed task context menus now open the existing Task Detail refinement composer.\n\n- Add one-shot detail initial actions so Refine can reopen the composer from board and list menus.\n- Wire Board, List, Column, and grouped task cards to pass Refine through Task Detail instead of hiding it.\n- Cover board/list refine menu behavior with dashboard tests and document the completed-task flow.\n\nFiles changed:\n .changeset/fn-7352-done-context-refine.md          |  7 +++\n docs/dashboard-guide.md                            |  9 ++--\n packages/dashboard/app/components/AppModals.tsx    |  9 +++-\n packages/dashboard/app/components/Board.tsx        |  7 ++-\n packages/dashboard/app/components/Column.tsx       |  5 +-\n packages/dashboard/app/components/ListView.tsx     |  7 +--\n packages/dashboard/app/components/TaskCard.tsx     | 12 +++--\n .../dashboard/app/components/TaskDetailModal.tsx   | 13 +++++\n .../dashboard/app/components/WorktreeGroup.tsx     |  4 ++\n .../app/components/__tests__/ListView.test.tsx     | 62 +++++++++++++++++++++-\n .../app/components/__tests__/TaskCard.test.tsx     | 43 +++++++++++++++\n .../TaskDetailModal.definition-actions.test.tsx    | 18 +++++++\n .../app/components/dashboard/MainContent.tsx       |  2 +\n .../dashboard/app/components/dashboard/types.ts    |  4 +-\n packages/dashboard/app/hooks/useModalManager.ts    | 28 ++++++++--\n 15 files changed, 208 insertions(+), 22 deletions(-)

Fusion-Task-Id: FN-7352

Fusion-Task-Lineage: 3f1107a6-fdac-4430-ab8d-50096c36cc3c

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-01 07:33:56 -07:00
gsxdsm
03160ebac0 FN-7354: add mobile terminal tab selector
Add a compact mobile terminal tab selector while preserving desktop tab behavior.

- Replace the mobile terminal tab strip with a native dropdown, new-tab action, and current-tab close action.
- Update mobile terminal header styles so tab, workspace, and session controls wrap cleanly on narrow screens.
- Cover mobile selector behavior with dashboard tests and document the mobile terminal tab workflow.
- Add a release changeset for the published Fusion package.

Files changed:
 .changeset/mobile-terminal-tabs-dropdown.md        |   7 ++
 docs/dashboard-guide.md                            |   8 +-
 .../__tests__/terminal-mobile-header-row.test.ts   |  22 ++--
 .../dashboard/app/components/TerminalModal.css     |  69 +++++++++++-
 .../dashboard/app/components/TerminalModal.tsx     | 119 +++++++++++++++------
 .../components/__tests__/TerminalModal.test.tsx    | 107 ++++++++++++++++++
 6 files changed, 282 insertions(+), 50 deletions(-)

Fusion-Task-Id: FN-7354

Fusion-Task-Lineage: 20b5b7d5-5795-4cc6-9975-c363954adb97

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-01 07:33:56 -07:00
gsxdsm
c93f2d4da0 FN-7346: fix TUI settings arrow editing
Fix Settings keyboard handling so arrow keys edit selected enum values in the terminal dashboard.

- Keep Tab as the Settings pane switcher so arrow keys remain scoped to the active pane.
- Route detail-pane left/right arrows and h/l keys through enum setting cycling and remote provider activation.
- Add terminal dashboard coverage for list navigation and enum cycling, plus CLI docs and release note coverage.

Files changed:
 .changeset/fn-7346-tui-settings-arrows.md          |   7 ++
 docs/cli-reference.md                              |   5 +
 .../commands/dashboard-tui/__tests__/app.test.tsx  | 121 ++++++++++++++++++++-
 packages/cli/src/commands/dashboard-tui/app.tsx    | 119 ++++++++++----------
 4 files changed, 186 insertions(+), 66 deletions(-)

Fusion-Task-Id: FN-7346

Fusion-Task-Lineage: c67861a7-7bb3-408d-926c-e85a44fe2dec

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-01 07:33:56 -07:00
gsxdsm
cbd61c56ca Merge branch 'main' into feature/workflow-nodes 2026-07-01 07:27:51 -07:00
gsxdsm
2eb6edb2fc fix: keep dashboard available after planning failures (#1846)
## Summary
- keep malformed planning-session responses persisted as retryable error
state instead of deleting the session
- add `fn dashboard --supervise` to restart unexpected dashboard exits
with bounded exponential backoff
- document the supervised-dashboard run mode and add a patch changeset

## Test Plan
- `corepack pnpm --filter @runfusion/fusion exec vitest run
src/commands/__tests__/dashboard.test.ts --silent=passed-only
--reporter=dot`
- `corepack pnpm --filter @fusion/dashboard exec vitest run
src/__tests__/session-error-recovery.test.ts --silent=passed-only
--reporter=dot`
- `corepack pnpm --filter @fusion/dashboard exec vitest run
src/__tests__/server.test.ts -t "returns health OK independently"
--silent=passed-only --reporter=dot`
- `corepack pnpm lint`
- `corepack pnpm typecheck`
- `corepack pnpm build`
- `corepack pnpm test:gate`

Note: a full `server.test.ts` run also exposes four existing
routine-runner expectation failures unrelated to this change; the added
health check passes when run by name.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added dashboard supervised mode via a new `--supervise` option, with
automatic restarts using a bounded restart budget and exponential
backoff.
* **Bug Fixes**
* Planning sessions now persist as retryable error states when AI output
can’t be parsed, preventing session loss.
* Improved reliability so `GET /api/health` remains available during
these planning error states.
* **Documentation**
* Documented “Dashboard Availability &amp;amp; Supervised Mode”,
including health-check guidance and operational guardrails.
* **Tests**
* Added test coverage for supervised restart behavior, health during
planning errors, and ensuring no unhandled rejections on parse failures.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-01 07:26:24 -07:00
gsxdsm
b07105dbfb fix(workflows): address workflow node PR feedback 2026-07-01 00:51:01 -07:00
gsxdsm
3a2f3b5ade refactor(workflow): extract node runner boundaries 2026-07-01 00:51:01 -07:00
gsxdsm
519f158400 FN-7345: Persist remote access settings saves
Remote Access settings now save from the main Settings dialog without requiring tunnel startup.

- Map flattened Remote Access form fields into the canonical global remoteAccess payload during section saves.
- Preserve provider, token, and lifecycle branches while saving Tailscale accept-routes and remember-running options.
- Cover the UI save flow, split helper, API route contract, docs, and release note.

Files changed:
 .changeset/fn-7345-remote-settings-windows.md      |   7 +
 docs/dashboard-guide.md                            |   1 +
 .../app/__tests__/settings-save-split.test.ts      |  56 ++++++++
 .../SettingsModal.remote-notifications.test.tsx    | 144 +++++++++++++++++++++
 .../app/components/settings/save-split.ts          | 103 +++++++++++++++
 .../src/__tests__/routes-remote-access.test.ts     |  54 ++++++++
 6 files changed, 365 insertions(+)

Fusion-Task-Id: FN-7345

Fusion-Task-Lineage: 9d1eb7f7-7e13-4070-af7d-eb6c6a41fe44

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 23:45:02 -07:00
gsxdsm
d786e7b9c9 FN-7340: align footer concurrency marker geometry
Align footer Engine Controls current-use dots with Command Center slider geometry.

- Mirror Command Center range sizing, touch behavior, and mobile thumb geometry in the footer controls.
- Cover the shared marker geometry contract and pending-cap marker recalculation in EngineControlMenu tests.
- Document the footer/Command Center alignment requirement and add a patch changeset for the published CLI package.

Files changed:
 .changeset/fn-7340-footer-concurrency-dot-alignment.md    |  7 ++
 docs/dashboard-guide.md                            |  3 +-
 packages/dashboard/app/components/EngineControlMenu.css | 28 ++++++-
 packages/dashboard/app/components/__tests__/EngineControlMenu.test.tsx           | 85 ++++++++++++++++++++++
 4 files changed, 121 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-7340

Fusion-Task-Lineage: 5cb4d829-2b70-429c-b9da-0c559fdbf131

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 23:45:02 -07:00
gsxdsm
5ff81cb460 FN-7343: Remove task chat steering guidance copy
Remove the visible steering/refinement guidance shell from task Activity chat while preserving composer behavior.

- Drop the TaskChatTab composer label/hint affordance and stale aria-describedby wiring.
- Keep accessible form names and existing steering/refinement send flows intact.
- Update dashboard docs, regression tests, and the published package changeset for the copy removal.

Files changed:
 .changeset/fn-7343-task-chat-copy.md               |  7 ++++
 docs/dashboard-guide.md                            |  2 +-
 packages/dashboard/app/components/TaskChatTab.css  | 29 ---------------
 packages/dashboard/app/components/TaskChatTab.tsx  | 24 +++++--------
 .../app/components/__tests__/TaskChatTab.test.tsx  | 41 +++++++++++++---------
 .../TaskDetailModal.task-activity-chat.test.tsx    | 13 ++++---
 .../components/__tests__/TaskDetailModal.test.tsx  | 15 ++++----
 7 files changed, 59 insertions(+), 72 deletions(-)

Fusion-Task-Id: FN-7343

Fusion-Task-Lineage: ebcffb2c-a42e-46af-8291-1ff77bcec2c6

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 23:45:02 -07:00
gsxdsm
c54b231290 FN-7335: default task details to Activity first
Default task detail opens now prioritize Activity while preserving an opt-in Chat-first mode.

- Add a project setting and dashboard plumbing for Chat-first task detail ordering.
- Default non-done task detail opens to Activity/Live while keeping explicit Chat, Activity, and Logs links stable.
- Update Settings, docs, changeset, and regression coverage for Activity-first and Chat-first behavior.

Files changed:
 .changeset/activity-first-task-detail.md           |  7 +++
 docs/dashboard-guide.md                            |  6 +-
 .../core/src/__tests__/settings-defaults.test.ts   | 13 ++++
 packages/core/src/settings-schema.ts               |  5 ++
 packages/core/src/types.ts                         |  5 ++
 packages/dashboard/app/App.tsx                     |  7 ++-
 packages/dashboard/app/components/AppModals.tsx    |  2 +
 packages/dashboard/app/components/ListView.tsx     |  3 +
 .../dashboard/app/components/SettingsModal.tsx     |  6 ++
 .../dashboard/app/components/TaskDetailModal.tsx   | 71 ++++++++++++++-------
 .../TaskDetailModal.attachments-and-tabs.test.tsx  | 19 ++++--
 ...etailModal.responsive-and-dependencies.test.tsx |  2 +-
 .../TaskDetailModal.task-activity-chat.test.tsx    | 72 +++++++++++++++++++---
 .../components/__tests__/TaskDetailModal.test.tsx  |  3 +
 .../app/components/dashboard/MainContent.tsx       |  3 +
 .../dashboard/app/components/dashboard/types.ts    |  1 +
 .../settings/sections/AppearanceSection.tsx        |  8 +++
 .../sections/__tests__/AppearanceSection.test.tsx  | 20 ++++++
 .../app/components/useRightDockController.tsx      |  2 +
 packages/dashboard/app/hooks/useAppSettings.ts     |  9 +++
 20 files changed, 220 insertions(+), 44 deletions(-)

Fusion-Task-Id: FN-7335

Fusion-Task-Lineage: d983c41a-f2f5-4e53-aee4-3ec3a4c057a3

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 23:45:01 -07:00
gsxdsm
7d2bd9794e FN-7337: make planner chats lazy and archive-scoped
Task planner chats now stay out of global chat history until a user interacts and are retained until task archive.

- Load task planner chat tabs with lookup-only resume before any user send.
- Show task-planner sessions in global Chat only after messages exist, including SSE refresh handling.
- Keep interacted planner chats for done tasks while deleting task-scoped planner sessions on archive.
- Cover chat store deletion, planner tab behavior, route filtering, and chat-list refresh with regression tests.

Files changed:
 .changeset/fn-7337-planner-chat-retention.md       |   7 ++
 docs/dashboard-guide.md                            |   4 +-
 packages/core/src/__tests__/chat-store.test.ts     |  44 +++++++++
 packages/core/src/chat-store.ts                    |  22 +++++
 packages/dashboard/app/api/legacy.ts               |  35 ++++++-
 .../app/components/TaskPlannerChatTab.tsx          |  13 ++-
 .../__tests__/TaskPlannerChatTab.test.tsx          |  91 +++++++++++++-----
 .../dashboard/app/hooks/__tests__/useChat.test.ts  |  41 ++++++++
 packages/dashboard/app/hooks/useChat.ts            |  15 ++-
 .../dashboard/src/__tests__/chat-routes.test.ts    | 105 +++++++++++++++++++++
 .../dashboard/src/routes/register-chat-routes.ts   |  17 +++-
 packages/dashboard/src/server.ts                   |  10 +-
 packages/engine/src/runtimes/in-process-runtime.ts |   8 ++
 13 files changed, 378 insertions(+), 34 deletions(-)

Fusion-Task-Id: FN-7337

Fusion-Task-Lineage: 7ef9ed8f-af2e-4fa9-a2b6-0e8c8a805d5e

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 23:45:01 -07:00
gsxdsm
2f5e15ac43 FN-7324: Focus task details on planner chat
Task details now prioritize the planner Chat experience while preserving Activity links and done-task summaries.

- Default active task details to Chat and render it before Activity without breaking legacy Activity tab ids.
- Add focused planner Chat expansion, pinned composer, mobile row hiding, and in-view expand/collapse controls.
- Update responsive coverage, planner-chat tests, dashboard docs, and the release changeset.

Files changed:
 .changeset/fn-7324-chat-focused-task-detail.md     |  7 ++
 docs/dashboard-guide.md                            | 11 +--
 .../dashboard/app/components/TaskDetailModal.css   | 47 ++++++++++-
 .../dashboard/app/components/TaskDetailModal.tsx   | 36 +++++----
 .../app/components/TaskPlannerChatTab.css          | 36 ++++++++-
 .../app/components/TaskPlannerChatTab.tsx          | 37 ++++++---
 ...etailModal.responsive-and-dependencies.test.tsx | 14 +++-
 .../components/__tests__/TaskDetailModal.test.tsx  | 93 +++++++++++++++++++---
 .../__tests__/TaskPlannerChatTab.test.tsx          | 18 +++++
 9 files changed, 255 insertions(+), 44 deletions(-)

Fusion-Task-Id: FN-7324
Fusion-Task-Lineage: 0699d224-7280-4959-8086-b0ea985937a2
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 23:45:00 -07:00
gsxdsm
863c5ce83f FN-7325: rename Activity Current to Live
Renames the task-detail Activity Current segment to Live and makes expansion available across Activity views.

- relabel Activity Current as Live while preserving the legacy internal current segment routing
- move the Activity expand/collapse control to the shared Activity toolbar for Live, Feed, and Raw Logs
- update expanded Activity layout, docs, tests, and release notes for the shared behavior

Files changed:
 .changeset/fn-7325-activity-live-expand.md         |   7 ++
 docs/dashboard-guide.md                            |   8 +-
 packages/dashboard/app/components/TaskChatTab.tsx  |   6 +-
 .../dashboard/app/components/TaskDetailModal.css   |  53 ++++++++++-
 .../dashboard/app/components/TaskDetailModal.tsx   | 103 ++++++++++++---------
 .../app/components/__tests__/TaskChatTab.test.tsx  |  12 +--
 .../TaskDetailModal.attachments-and-tabs.test.tsx  |  90 ++++++++++++++++--
 .../__tests__/TaskDetailModal.rendering.test.tsx   |   2 +-
 .../components/__tests__/TaskDetailModal.test.tsx  |   8 +-
 9 files changed, 213 insertions(+), 76 deletions(-)

Fusion-Task-Id: FN-7325
Fusion-Task-Lineage: 1aee503b-ace8-4238-a9f9-3e536a43c1f8
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 23:44:59 -07:00
Phil Larson
9432339363 fix: keep dashboard available after planning failures 2026-06-30 23:35:27 -07:00
Phil Larson
ddafada719 docs: add CE plan artifact for dashboard themes 2026-06-30 22:20:00 -07:00
Phil Larson
03629d635a docs: add DESIGN.md theme direction 2026-06-30 22:15:27 -07:00
Phil Larson
fd26c310cf docs: propose dashboard theme plugin system 2026-06-30 21:59:53 -07:00
gsxdsm
ddfd841b53 FN-7312: send task context to planner chat
Send bounded task state into task-detail planner chat so status and progress questions can be answered in context.

- Build reusable server-side planner chat context from task metadata, dependencies, steps, comments, activity, source, and review state.
- Pass and validate the task id on planner chat sends to keep sessions scoped to the current task.
- Update planner chat copy, docs, tests, and changeset coverage for task-aware status/progress questions.

Files changed:
 .changeset/fn-7312-task-planner-chat-context.md    |   7 +
 docs/dashboard-guide.md                            |   4 +-
 packages/dashboard/app/api/legacy.ts               |   5 +-
 .../app/components/TaskPlannerChatTab.tsx          |   5 +-
 .../__tests__/TaskPlannerChatTab.test.tsx          |  22 ++
 .../dashboard/src/__tests__/chat-manager.test.ts   |  17 +-
 .../dashboard/src/__tests__/chat-routes.test.ts    |  76 +++++
 .../__tests__/task-planner-chat-context.test.ts    | 165 +++++++++++
 packages/dashboard/src/chat.ts                     |  92 +-----
 .../dashboard/src/routes/register-chat-routes.ts   |  11 +-
 .../dashboard/src/task-planner-chat-context.ts     | 326 +++++++++++++++++++++
 11 files changed, 634 insertions(+), 96 deletions(-)

Fusion-Task-Id: FN-7312

Fusion-Task-Lineage: 90cf0fe3-3984-4a67-bb44-fce492c256eb

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 18:51:41 -07:00
gsxdsm
45509708e5 FN-7311: add planner chat starter prompts
Add guided prompts to the empty task-detail Chat tab so operators can start useful planner conversations quickly.

- Render a task-aware Chat empty state with four accessible starter prompt buttons.
- Send starter selections through the normal planner-chat stream while guarding stale session loads and stream callbacks.
- Style responsive prompt cards and document the Chat/Activity separation.
- Cover empty-state, loading, history, sending, and task-switch behavior with dashboard tests.

Files changed:
 .changeset/fn-7311-chat-starter-prompts.md         |   7 +
 docs/dashboard-guide.md                            |   2 +
 .../app/components/TaskPlannerChatTab.css          |  55 ++++-
 .../app/components/TaskPlannerChatTab.tsx          | 185 ++++++++++++---
 ...etailModal.responsive-and-dependencies.test.tsx |   3 +
 .../__tests__/TaskPlannerChatTab.test.tsx          | 252 ++++++++++++++++++++-
 6 files changed, 460 insertions(+), 44 deletions(-)

Fusion-Task-Id: FN-7311

Fusion-Task-Lineage: 5a58bc4f-1139-4c68-9ade-b79a52558bef

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 18:20:16 -07:00
gsxdsm
db7b46f60f FN-7310: add task planner chat tab
Add a dedicated task-detail Chat surface for planner-model conversations separate from Activity steering.

- Add task-scoped planner chat session creation and routing with planning-model overrides.
- Render a new top-level Chat tab next to Activity, including streaming responses, tool-call cards, and retry/error states.
- Cover planner chat tab ordering, session reuse, route validation, manager dispatch, and dashboard documentation.

Files changed:
 .changeset/fn-7310-planner-chat.md                 |   7 +
 docs/dashboard-guide.md                            |   3 +-
 packages/dashboard/app/api/legacy.ts               |  35 +++
 .../dashboard/app/components/TaskDetailModal.tsx   |  40 ++-
 .../app/components/TaskPlannerChatTab.css          | 149 ++++++++++
 .../app/components/TaskPlannerChatTab.tsx          | 322 +++++++++++++++++++++
 ...etailModal.responsive-and-dependencies.test.tsx |  13 +-
 .../__tests__/TaskDetailModal.test-helpers.ts      |   3 +
 .../components/__tests__/TaskDetailModal.test.tsx  |  58 ++++
 .../__tests__/TaskPlannerChatTab.test.tsx          | 193 ++++++++++++
 .../dashboard/src/__tests__/chat-manager.test.ts   |  65 +++++
 .../dashboard/src/__tests__/chat-routes.test.ts    | 106 +++++++
 packages/dashboard/src/chat.ts                     | 132 ++++++++-
 .../dashboard/src/routes/register-chat-routes.ts   |  68 +++++
 14 files changed, 1181 insertions(+), 13 deletions(-)

Fusion-Task-Id: FN-7310

Fusion-Task-Lineage: a276c356-599e-4495-9879-472d157d95e5

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 17:20:42 -07:00
gsxdsm
f677ab4f19 FN-7309: add Activity steering composer labels
Make Activity Current clearly expose steering and refinement entry points.

- Add explicit Steering comment and Refinement request labels with accessible hints to the Activity Current composer.
- Keep Feed and Raw Logs read-only while preserving done-task Summary defaults and legacy Activity Current links.
- Cover desktop, mobile, embedded detail, completed-task, and segment-switching behavior in dashboard tests.
- Document the Activity steering affordance and add a patch changeset for the published CLI package.

Files changed:
 .changeset/fn-7309-activity-steering.md            |  7 ++
 docs/dashboard-guide.md                            |  9 +--
 packages/dashboard/app/components/TaskChatTab.css  | 29 ++++++++
 packages/dashboard/app/components/TaskChatTab.tsx  | 22 +++++--
 .../dashboard/app/components/TaskDetailModal.tsx   | 12 +++-
 .../app/components/__tests__/TaskChatTab.test.tsx  | 19 +++++-
 .../__tests__/TaskDetailModal.summary-tab.test.tsx | 22 +++----
 .../components/__tests__/TaskDetailModal.test.tsx  | 77 ++++++++++++++++++++++
 8 files changed, 173 insertions(+), 24 deletions(-)

Fusion-Task-Id: FN-7309
Fusion-Task-Lineage: 0674bf35-b0a3-4fa7-81c3-4312024c9c53
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 16:23:12 -07:00
gsxdsm
bba415f91b FN-7308: preserve legacy Activity log access
Preserve the legacy task log affordances inside the Activity tab.

- Route legacy Logs entrypoints to Activity → Feed while keeping Raw Logs as the raw agent-output segment.
- Document the Activity Current, Feed, and Raw Logs behavior across operator docs.
- Add regression coverage for Feed legacy entries, duplicate feed rows, and Raw Logs pagination.
- Add a patch changeset for the published CLI package.

Files changed:
 .changeset/fn-7308-preserve-activity-logs.md       |  7 ++++
 docs/agents.md                                     |  4 +-
 docs/dashboard-guide.md                            |  8 ++--
 packages/dashboard/README.md                       |  2 +-
 .../dashboard/app/components/TaskDetailModal.tsx   |  8 ++--
 .../TaskDetailModal.attachments-and-tabs.test.tsx  | 29 ++++++++++++++
 .../components/__tests__/TaskDetailModal.test.tsx  | 45 ++++++++++++++++++++++
 7 files changed, 92 insertions(+), 11 deletions(-)

Fusion-Task-Id: FN-7308

Fusion-Task-Lineage: 45483e4e-4de8-4b5b-96ae-fca6914545d4

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 15:58:30 -07:00
gsxdsm
21fc28698f FN-7304: add Quick Add drag-and-drop attachments
Quick Add now supports compact icon-only image attachment controls and drag/drop intake.

- Convert the Quick Add attach action to an accessible icon-only button with pending-count feedback.
- Add file drag-over and drop handling that reuses the existing image preview/upload path.
- Document the Quick Add attachment affordances, add a changeset, and cover icon/drop behavior with tests.

Files changed:
 .changeset/fn-7304-quick-add-attachments.md        |   7 ++
 docs/dashboard-guide.md                            |   3 +
 .../dashboard/app/components/QuickEntryBox.css     |  49 ++++++++
 .../dashboard/app/components/QuickEntryBox.tsx     |  81 ++++++++++++-
 .../components/__tests__/QuickEntryBox.test.tsx    | 128 ++++++++++++++++++++-
 5 files changed, 257 insertions(+), 11 deletions(-)

Fusion-Task-Id: FN-7304

Fusion-Task-Lineage: 0ff78d99-5b6a-476c-99d2-32f53389f808

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 14:42:45 -07:00
gsxdsm
ea93f68ad9 FN-7301: add icon workflow picker to new task form
Add an icon-capable New Task workflow picker that preserves create-time workflow selection semantics.

- Replace the native workflow select in TaskForm with a styled dropdown showing workflow icons, default badges, duplicate-name IDs, and explicit No workflow opt-out.
- Wire the inline workflow chip to reveal and open the new picker while keeping workflowId payload handling unchanged.
- Add dropdown layout styles, dashboard docs, release notes, and regression coverage for modal create flows and TaskForm selection behavior.

Files changed:
 .changeset/fn-7301-new-task-workflow-dropdown.md   |   7 +
 docs/dashboard-guide.md                            |   3 +
 packages/dashboard/app/components/NewTaskModal.css |  75 ++++++++++
 packages/dashboard/app/components/TaskForm.tsx     | 166 ++++++++++++++++-----
 .../app/components/__tests__/NewTaskModal.test.tsx |  61 ++++++--
 .../app/components/__tests__/TaskForm.test.tsx     | 128 +++++++++++-----
 6 files changed, 351 insertions(+), 89 deletions(-)

Fusion-Task-Id: FN-7301

Fusion-Task-Lineage: f3d534a2-48bd-416a-88a6-f85410ee4f85

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 14:03:50 -07:00
gsxdsm
7f3bd80dbe FN-7297: include ephemeral agents in activity stats
Count ephemeral task-worker runs in dashboard activity analytics so active-agent stats reflect task execution.

- Include agentRuns agent ids alongside usage_events when computing active-agent range totals and daily series.
- Preserve distinct per-agent counting across both activity sources and handle missing agentRuns tables.
- Cover activity analytics, API route fixtures, and Command Center UI expectations for run-only task workers.
- Document the Command Center activity semantics and add a patch changeset for the published CLI bundle.

Files changed:
 .changeset/fn-7297-ephemeral-activity.md           |   7 ++
 docs/dashboard-guide.md                            |   5 +-
 .../core/src/__tests__/activity-analytics.test.ts  |  70 ++++++++++++--
 packages/core/src/activity-analytics.ts            | 101 ++++++++++++++++++---
 .../__tests__/CommandCenter.test.tsx               |  32 ++++++-
 .../register-command-center-routes.test.ts         |  47 +++++++++-
 6 files changed, 234 insertions(+), 28 deletions(-)

Fusion-Task-Id: FN-7297

Fusion-Task-Lineage: 51e46b3c-64f3-4546-954f-97d82b8426fb

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 13:30:28 -07:00
gsxdsm
7e74fe3a9b FN-7293: honor workflow review revision overrides
Allow workflow review steps to opt into unbounded or capped revision retries while keeping recovery caps accurate.

- Add workflow settings for Plan Review and Code Review max revisions with display, docs, and changeset coverage.
- Resolve optional-step revision budgets through workflow settings, node overrides, and existing fallback limits.
- Track revision attempts per workflow step and hydrate slim self-healing rows before enforcing retry caps.
- Cover unbounded, capped, per-step, and slim-row recovery behavior with focused tests.

Files changed:
 .changeset/fn-7293-unbounded-review-revisions.md   |   7 +
 docs/settings-reference.md                         |  12 +-
 docs/workflow-editor.md                            |   4 +-
 docs/workflow-steps.md                             |   3 +-
 .../builtin-workflow-settings-triage.test.ts       |  28 +++-
 .../core/src/__tests__/builtin-workflows.test.ts   |  29 ++++-
 .../__tests__/workflow-settings-resolver.test.ts   |  73 +++++++++++
 packages/core/src/builtin-plan-review-group.ts     |   6 +-
 packages/core/src/builtin-workflow-settings.ts     |  30 +++++
 packages/core/src/index.ts                         |   5 +
 packages/core/src/workflow-ir-types.ts             |  15 ++-
 packages/core/src/workflow-ir.ts                   |   5 +-
 packages/core/src/workflow-settings-resolver.ts    |  49 ++++++-
 .../__tests__/WorkflowSettingsPanel.test.tsx       |  52 ++++++++
 .../app/components/workflow-setting-display.ts     |  18 +++
 packages/engine/src/__tests__/self-healing.test.ts | 143 ++++++++++++++++++++-
 .../workflow-graph-optional-step-fix.test.ts       | 130 ++++++++++++++++++-
 packages/engine/src/executor.ts                    |  77 +++++++++--
 packages/engine/src/self-healing.ts                |  82 ++++++++++--
 packages/engine/src/workflow-graph-executor.ts     |   5 +-
 20 files changed, 725 insertions(+), 48 deletions(-)

Fusion-Task-Id: FN-7293

Fusion-Task-Lineage: 19ee533f-ab8d-4e20-9a27-9cf0cf6dfec9

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 13:12:27 -07:00
gsxdsm
01e04333ce FN-7294: pass user context into workflow reviewers
Pass operator-authored task context into reviewer and workflow gate prompts.

- Include de-duped user comments and legacy steering in Plan Review, code review, and workflow-step prompt agents.
- Preserve reviewer comment context on reduced context-limit retry prompts and refresh comments before in-session review calls.
- Document workflow prompt-agent comment behavior, add regression coverage, and add a patch changeset.

Files changed:
 .changeset/FN-7294-reviewer-comment-context.md     |   7 +
 docs/workflow-steps.md                             |   7 +
 .../src/__tests__/agent-user-comments.test.ts      |  81 ++++++++--
 .../executor-review-step-indexing.test.ts          | 165 ++++++++++++++++++++-
 .../src/__tests__/reviewer-workspace.test.ts       |  39 +++++
 packages/engine/src/__tests__/reviewer.test.ts     |  26 +++-
 packages/engine/src/__tests__/triage.test.ts       |  49 ++++++
 packages/engine/src/agent-user-comments.ts         |  42 ++++--
 packages/engine/src/executor.ts                    |  31 +++-
 packages/engine/src/reviewer.ts                    |  10 +-
 packages/engine/src/triage.ts                      |  20 ++-
 11 files changed, 443 insertions(+), 34 deletions(-)

Fusion-Task-Id: FN-7294

Fusion-Task-Lineage: ea5ff33e-99ba-4fdd-9257-9778849b91bb

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 12:56:03 -07:00
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