Commit Graph

1774 Commits

Author SHA1 Message Date
gsxdsm
fed60ecff6 FN-7364: hide task chats from common feed by default
Hide task-detail planner chats from the common Chat feed unless a project opts in.

- Add a project setting and Settings UI toggle for showing populated task chats in the common feed.
- Filter task-planner sessions on chat list routes and avoid stale cached/SSE planner rows in the Chat hook.
- Cover default-hidden and opt-in behavior with route, hook, settings, and parity tests.
- Document the Chat feed behavior and include a patch changeset.

Files changed:
 .changeset/fn-7364-task-chat-feed-setting.md       |  7 ++
 docs/dashboard-guide.md                            |  2 +
 .../core/src/__tests__/settings-parity.test.ts     |  8 +++
 packages/core/src/settings-schema.ts               |  5 ++
 packages/core/src/types.ts                         |  5 ++
 .../__tests__/SettingsModal.general.test.tsx       | 18 +++++
 .../settings/sections/GeneralSection.tsx           |  9 +++
 .../dashboard/app/hooks/__tests__/useChat.test.ts  | 65 +++++++++++++++++
 packages/dashboard/app/hooks/useChat.ts            | 22 ++++--
 .../dashboard/src/__tests__/chat-routes.test.ts    | 82 +++++++++++++++++++++-
 .../dashboard/src/routes/register-chat-routes.ts   | 13 +++-
 11 files changed, 227 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-7364
Fusion-Task-Lineage: 79a0706c-ba7f-4417-b88b-c5282ae7877c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-01 08:50:29 -07:00
gsxdsm
62c58402ff fix(workflow): raise step review timeout default 2026-07-01 08:22:04 -07:00
gsxdsm
1f3a15ec1c FN-7360: fix Windows desktop runtime packaging
Fix packaged Windows desktop startup by preserving Node-safe runtime dependencies and dashboard registry assets.

- Externalize Electron main/preload npm packages so CommonJS updater dependencies load natively.
- Load the dashboard plugin registry manifest through file IO and copy it into dashboard server dist from all build paths.
- Split Windows NSIS and portable artifact names and verify required Electron runtime resources in CI.
- Cover the packaging/runtime invariants with desktop and dashboard regression tests.

Files changed:
 .changeset/fn-7360-desktop-windows.md              |  7 +++
 .github/workflows/desktop-windows.yml              | 21 ++++++++
 packages/dashboard/package.json                    |  2 +-
 .../src/__tests__/plugin-registry-dist.test.ts     | 32 ++++++++++++
 .../src/__tests__/routes-plugin-registry.test.ts   | 10 ++--
 packages/dashboard/src/plugin-routes.ts            | 27 +++++++++-
 packages/desktop/README.md                         |  5 +-
 packages/desktop/electron-builder.yml              |  9 ++++
 packages/desktop/scripts/build.ts                  | 29 ++++++++--
 packages/desktop/scripts/workspace-tools.ts        |  4 ++
 .../desktop/src/__tests__/build-bundling.test.ts   | 61 ++++++++++++++++++++++
 .../src/__tests__/electron-builder-config.test.ts  | 15 ++++++
 packages/desktop/src/__tests__/ipc.test.ts         | 15 ++++++
 .../desktop/src/__tests__/local-runtime.test.ts    | 20 +++++++
 14 files changed, 247 insertions(+), 10 deletions(-)

Fusion-Task-Id: FN-7360

Fusion-Task-Lineage: a2d88130-c24f-43e2-932a-1e174b6afa35

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-01 08:01:59 -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
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
4a1a04303f fix(FN-7344): hide stall badges during active agent logs 2026-06-30 23:45:03 -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
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
Phil Larson
9432339363 fix: keep dashboard available after planning failures 2026-06-30 23:35:27 -07:00
gsxdsm
cb0d38a0c6 FN-7313: add guarded planner chat steering
Task-detail planner chat now turns only clear task change requests into persisted steering comments while keeping ambiguous requests in clarification flow.

- Add a scoped planner-chat steering tool with task-bound persistence and richer result details.
- Refresh task details and show steering confirmation, pending, and error states in the planner chat transcript.
- Expand planner chat prompt guidance and tests for clear steering, ambiguous clarification, and ordinary status questions.
- Add a published Fusion changeset for the new task chat steering behavior.

Files changed:
 .changeset/fn-7313-task-chat-steering.md           |   7 ++
 .../dashboard/app/components/TaskDetailModal.tsx   |   1 +
 .../app/components/TaskPlannerChatTab.css          |  28 +++++
 .../app/components/TaskPlannerChatTab.tsx          |  96 ++++++++++++++++-
 .../__tests__/TaskPlannerChatTab.test.tsx          |  72 ++++++++++++-
 .../dashboard/src/__tests__/chat-manager.test.ts   | 120 +++++++++++++++++++++
 packages/dashboard/src/chat.ts                     |  32 +++++-
 7 files changed, 347 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-7313
Fusion-Task-Lineage: 29da54cc-c379-4fe5-8419-be3acc712495
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 19:15:11 -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
a186dccaf6 test(auth): stub auth route CLI probes 2026-06-30 18:39:52 -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
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
2335a07620 FN-7291: add Claude Sonnet 5 Anthropic support
Adds Claude Sonnet 5 to Anthropic model catalogs, pricing, and pi execution paths.

- Register supplemental direct Anthropic model metadata for Claude Sonnet 5 with deduping.
- Surface the model through dashboard model routes and engine session creation for non-Claude-CLI pi sessions.
- Add Claude CLI provider metadata, pricing coverage, tests, and a published package changeset.

Files changed:
 .changeset/fn-7291-sonnet-5-anthropic.md           |   7 ++
 packages/core/src/__tests__/model-pricing.test.ts  |  28 +++++
 packages/core/src/anthropic-models.ts              | 127 +++++++++++++++++++++
 packages/core/src/index.ts                         |   7 ++
 packages/core/src/model-pricing.ts                 |  13 ++-
 .../dashboard/src/__tests__/routes-auth.test.ts    |  67 +++++++++++
 packages/dashboard/src/routes.ts                   |   6 +-
 .../dashboard/src/routes/register-model-routes.ts  |   5 +-
 .../src/__tests__/pi-create-fn-agent.test.ts       |  67 +++++++++++
 .../src/cli-agent/adapters/__tests__/pi.test.ts    |  16 +++
 packages/engine/src/pi.ts                          |   2 +
 packages/pi-claude-cli/index.ts                    |  13 +++
 .../src/__tests__/process-manager.test.ts          |   4 +-
 .../pi-claude-cli/src/__tests__/provider.test.ts   |  31 ++++-
 14 files changed, 384 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-7291

Fusion-Task-Lineage: 6494fce8-4101-47f5-9137-306408fd7920

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-30 13:20:27 -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
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
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
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
cfd9d5b32e test(FN-7249): cover phantom worktree recovery 2026-06-29 22:30:23 -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
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
copilot-swe-agent[bot]
1bf8d83bc1 Merge remote-tracking branch 'origin/main' into fusion/fn-7143 2026-06-30 00:14:37 +00: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
b26d8a6772 fix(FN-7143): address image artifact review feedback
- classify image artifact support as a minor feature changeset
- reject non-image, empty, and signature-mismatched dataBase64 payloads
- trap keyboard focus in the task image lightbox
- assert media streaming with raw image bytes

Fusion-Task-Id: FN-7143
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-29 14:59:07 -07:00
gsxdsm
353aaf3b4a fix(FN-7143): support task image artifacts
Fusion-Task-Id: FN-7143
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-29 09:47:59 -07:00
gsxdsm
1efcdcfe35 fix(FN-7224): clear stale graph pins on reset 2026-06-29 02:55:35 -07:00
gsxdsm
7cd5552f76 fix(FN-7224): clear workflow pins on retry
Fusion-Task-Id: FN-7224
2026-06-29 02:12:25 -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
1f365163a4 fix(FN-7225): clear stale pause state on workflow retry 2026-06-29 01:05:44 -07:00
gsxdsm
b86ddf4d10 fix(FN-7225): route failed plan review to triage 2026-06-29 00:48:49 -07:00
gsxdsm
c7cbd1dbf1 fix(FN-7221): clear stale workflow pins on spec rebuild 2026-06-29 00:37:17 -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
2051516f8b FN-7205: prefer live concurrency counts
Prefer live runtime stores for concurrency counters so dashboard totals match active agent enforcement.

- Prefer engine-manager task stores before default fallback stores when sourcing live running-agent counts.
- Count running agents from slim task lists across active lifecycle states instead of trusting stale in-progress queries.
- Add regressions for count normalization, default-project store precedence, and scoped semaphore limit changes.
- Add a patch changeset for the published Fusion CLI package.

Files changed:
 .changeset/fn-7205-concurrency-counter-enforcement.md     |  7 ++++
 packages/core/src/__tests__/live-agent-count.test.ts      | 18 ++++++++-
 packages/dashboard/src/__tests__/server.test.ts           | 44 ++++++++++++++++++++--
 packages/dashboard/src/server.ts                          |  8 ++--
 packages/engine/src/__tests__/concurrency.test.ts         | 38 +++++++++++++++++++
 5 files changed, 106 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-7205

Fusion-Task-Lineage: 957d6b2a-b7c4-4fd1-b83b-62f5cd51ebda

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-28 17:14:00 -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
8eed09c126 FN-7211: fix image attachment MIME sniffing
Correct image attachment media types from bytes before sending image blocks to models.

- Add core image MIME sniffing for PNG, JPEG, GIF, and WEBP signatures.
- Use detected image bytes in task triage and dashboard chat attachment image blocks while preserving stored attachment metadata.
- Cover mismatched and unknown image bytes with core, triage, and chat attachment tests.
- Add a patch changeset for the published CLI package.

Files changed:
 .changeset/fn-7211-webp-image-mime-sniff.md        |  7 +++
 packages/core/src/__tests__/image-mime.test.ts     | 29 ++++++++++
 packages/core/src/image-mime.ts                    | 50 +++++++++++++++++
 packages/core/src/index.ts                         |  2 +
 .../src/__tests__/chat-attachment-content.test.ts  | 54 +++++++++++++++++--
 packages/dashboard/src/chat-attachment-content.ts  |  9 +++-
 packages/engine/src/__tests__/triage.test.ts       | 63 +++++++++++++++++-----
 packages/engine/src/triage.ts                      |  8 ++-
 8 files changed, 201 insertions(+), 21 deletions(-)

Fusion-Task-Id: FN-7211

Fusion-Task-Lineage: 22bfb812-15c4-4ff7-a281-87b25427561e

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-28 16:51:49 -07:00
gsxdsm
b2e1c3efc2 FN-7201: refresh plugin dashboard-view metadata from manifests
Refresh plugin dashboard navigation metadata from the current on-disk manifest so rebuilt plugins do not serve stale view details.

- Resolve the authoritative manifest path from plugin entry directories and package roots.
- Re-read and validate dashboardViews metadata before returning dashboard navigation entries, falling back only when the manifest cannot be used.
- Await refreshed dashboard-view metadata in the dashboard route and cover rebuild/removal cases with tests.
- Add a patch changeset for the published CLI package.

Files changed:
 .../FN-7201-plugin-dashboard-view-refresh.md       |   7 ++
 packages/core/src/__tests__/plugin-loader.test.ts  | 114 ++++++++++++++++++++-
 packages/core/src/plugin-loader.ts                 |  94 ++++++++++++++++-
 .../dashboard/src/__tests__/plugin-routes.test.ts  |  42 +++++++-
 packages/dashboard/src/routes.ts                   |   2 +-
 5 files changed, 244 insertions(+), 15 deletions(-)

Fusion-Task-Id: FN-7201

Fusion-Task-Lineage: dbdd5575-1999-4c9c-93a4-25eb8f213e07

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-28 13:23:00 -07:00
gsxdsm
4405dec310 FN-7187: re-engage executors from in-review chat
Route user comments on in-review tasks through the executor re-engagement path.

- Reuse review-address re-engagement for Chat steering and Comments-tab user comments.
- Suppress re-engagement for open PR blockers, live sessions, and non-user task comments.
- Cover the in-review comment wake behavior with dashboard route tests and operator docs.

Files changed:
 .changeset/fn-7187-in-review-chat-reengage.md      |   7 +
 docs/dashboard-guide.md                            |   2 +-
 .../src/__tests__/routes-tasks-ops.test.ts         | 236 +++++++++++++++++++++
 .../src/routes/register-task-workflow-routes.ts    | 138 +++++++++---
 4 files changed, 351 insertions(+), 32 deletions(-)

Fusion-Task-Id: FN-7187

Fusion-Task-Lineage: f0984ede-4038-439a-a8b4-5d6ed6756c40

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-28 02:47:38 -07:00
gsxdsm
9050ee1a42 FN-7185: add PR feedback addressing action
Add a dashboard action that starts an AI pass for actionable pull-request review feedback.

- Add a lifecycle route that validates linked PR tasks, seeds a ce-resolve-pr-feedback steering prompt, returns in-review tasks to active work, and wakes assigned agents when needed.
- Add shared PR feedback gating plus task-card and Review tab buttons with loading states, toasts, styling, docs, and translations.
- Cover the route, API client, task card, and Review tab behavior with regression tests.

Files changed:
 .changeset/fn-7185-address-pr-feedback.md          |   7 +
 docs/dashboard-guide.md                            |   1 +
 packages/dashboard/app/__tests__/api-tasks.test.ts |  12 ++
 packages/dashboard/app/api/legacy.ts               |  11 ++
 packages/dashboard/app/components/TaskCard.css     |   7 +-
 packages/dashboard/app/components/TaskCard.tsx     |  44 +++++-
 .../dashboard/app/components/TaskReviewTab.tsx     |  41 ++++-
 .../app/components/__tests__/TaskCard.test.tsx     | 164 +++++++++++++++++++-
 .../components/__tests__/TaskReviewTab.test.tsx    | 127 ++++++++++++++++
 packages/dashboard/app/utils/prFeedback.ts         |  22 +++
 .../dashboard/src/__tests__/routes-tasks.test.ts   | 165 +++++++++++++++++++++
 .../src/routes/register-task-workflow-routes.ts    |  67 +++++++++
 packages/i18n/locales/en/app.json                  |  10 ++
 packages/i18n/locales/es/app.json                  |  22 ++-
 packages/i18n/locales/fr/app.json                  |  22 ++-
 packages/i18n/locales/ko/app.json                  |  22 ++-
 packages/i18n/locales/zh-CN/app.json               |  22 ++-
 packages/i18n/locales/zh-TW/app.json               |  22 ++-
 18 files changed, 764 insertions(+), 24 deletions(-)

Fusion-Task-Id: FN-7185

Fusion-Task-Lineage: b2e98163-4fc6-45c9-8ace-a14eeb096e10

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-28 02:04:31 -07:00
gsxdsm
dc54b615d4 FN-7182: pause auto-merge for manual pull requests
Manual pull requests now pause automatic merge processing until human action closes or merges the PR.

- Mark dashboard-created or linked pull requests with manual provenance and preserve it across PR refreshes and merges.
- Exclude tasks with manual open or draft PRs from automatic merge processing while preserving pipeline PR automation.
- Add regression coverage and document the manual PR handoff behavior.

Files changed:
 .changeset/FN-7182-no-auto-merge-with-manual-pr.md |  7 ++
 docs/architecture.md                               |  2 +-
 docs/dashboard-guide.md                            |  1 +
 packages/core/src/__tests__/task-helpers.test.ts   | 49 ++++++++++++-
 packages/core/src/__tests__/task-merge.test.ts     | 60 +++++++++++++++-
 packages/core/src/index.ts                         |  2 +-
 packages/core/src/task-helpers.ts                  | 13 ++++
 packages/core/src/task-merge.ts                    | 10 ++-
 packages/core/src/types.ts                         |  6 ++
 .../dashboard/src/__tests__/routes-auth.test.ts    | 80 ++++++++++++++++++++++
 .../dashboard/src/__tests__/routes-github.test.ts  | 45 +++++++++++-
 .../dashboard/src/routes/register-git-github.ts    | 20 +++++-
 12 files changed, 285 insertions(+), 10 deletions(-)

Fusion-Task-Id: FN-7182

Fusion-Task-Lineage: c415a9dc-43c1-4609-a032-367991e949a1

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-28 01:43:08 -07:00
gsxdsm
65abae26c6 FN-7181: improve PR metadata generation feedback
Ground PR metadata generation in repository evidence and make Create PR loading states explicit.

- Upgrade the PR metadata system/context prompt while preserving configurable title and description guidance.\n- Show disabled title/body skeleton states while AI metadata generates and block submission until content resolves.\n- Extend dashboard tests, docs, and changeset coverage for the improved PR prompt and loading behavior.\n\nFiles changed:\n .../fn-7181-pr-generation-prompt-and-loading.md    |  7 +++\n docs/dashboard-guide.md                            |  2 +-\n .../dashboard/app/components/PrCreateModal.css     | 62 ++++++++++++++++++++++\n .../dashboard/app/components/PrCreateModal.tsx     | 47 +++++++++++++---\n .../components/__tests__/PrCreateModal.test.tsx    | 60 ++++++++++++++++-----\n .../src/__tests__/pr-metadata-generator.test.ts    | 44 ++++++++++++---\n packages/dashboard/src/pr-metadata-generator.ts    | 33 +++++++++---\n 7 files changed, 221 insertions(+), 34 deletions(-)

Fusion-Task-Id: FN-7181

Fusion-Task-Lineage: 6565ddce-c205-4050-a37f-ffbb2f2d46d4

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-28 01:17:22 -07:00
gsxdsm
b60a743377 FN-7186: fix reviewer-agent revision requests
Route review revision requests through canonical review data so reviewer-agent feedback can be selected reliably.

- Rebuild /review/address validation from PR review details or direct reviewer-agent logs before matching selected items.
- Preserve addressing state while accepting log-derived reviewer-agent item ids and rejecting mismatched sources.
- Cover reviewer-agent, fallback-log, PR, and invalid-selection paths in dashboard route tests.
- Document that Review revision feedback may come from PR data or reviewer-agent logs.
- Add a patch changeset for the published Fusion package.

Files changed:
 .changeset/fn-7186-review-revision-fix.md          |   7 ++
 docs/dashboard-guide.md                            |   4 +-
 .../dashboard/src/__tests__/routes-tasks.test.ts   | 126 +++++++++++++++++----
 .../src/routes/register-task-workflow-routes.ts    |  76 +++++++++----
 4 files changed, 170 insertions(+), 43 deletions(-)

Fusion-Task-Id: FN-7186

Fusion-Task-Lineage: 8b0f6e4c-93b1-489c-ab96-5a2541b7c18a

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-28 00:33:26 -07:00
gsxdsm
9c207fd286 FN-7180: add configurable PR metadata prompts
Add project-scoped guidance fields for AI-generated Create PR metadata.

- Store PR title and description prompt guidance as project settings only.
- Surface editable guidance textareas in Project Models settings.
- Append trimmed guidance to the PR metadata system prompt without changing defaults for blank values.
- Document the settings and add release notes/tests for persistence, UI, and prompt generation.

Files changed:
 .changeset/fn-7180-pr-prompt-settings.md           |  7 ++
 docs/dashboard-guide.md                            |  1 +
 docs/settings-reference.md                         |  2 +
 .../core/src/__tests__/settings-defaults.test.ts   | 11 ++-
 packages/core/src/__tests__/store-settings.test.ts | 19 +++++
 packages/core/src/settings-schema.ts               |  2 +
 packages/core/src/types.ts                         | 12 ++++
 .../app/__tests__/settings-sections.test.tsx       | 54 ++++++++++++++
 .../dashboard/app/components/SettingsModal.tsx     |  4 ++
 .../settings/sections/ProjectModelsSection.tsx     | 12 ++++
 .../src/__tests__/pr-metadata-generator.test.ts    | 84 ++++++++++++++++++++++
 packages/dashboard/src/pr-metadata-generator.ts    | 23 ++++--
 12 files changed, 225 insertions(+), 6 deletions(-)

Fusion-Task-Id: FN-7180

Fusion-Task-Lineage: 9bdc42d5-ffd3-4208-b64a-96d142cc1dc8

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-28 00:28:13 -07:00
gsxdsm
e5a0273282 FN-7166: Refresh artifact lists from registration events
Artifact list surfaces now refresh from authoritative registry and artifact-message signals.\n\n- Emit an artifact:registered TaskStore event after successful registry writes and forward it over dashboard SSE.\n- Subscribe useArtifacts to artifact/message SSE events, scope refreshes by project/task, debounce duplicate signals, and avoid loading flashes when project context is missing.\n- Document live artifact refresh behavior and add regression coverage for store events and hook refresh paths.\n\nFiles changed:\n .changeset/FN-7166-artifact-live-refresh.md        |   7 +\n docs/dashboard-guide.md                            |   3 +-\n packages/core/src/__tests__/artifacts.test.ts      |  20 +-\n packages/core/src/store.ts                         |   8 +-\n .../app/hooks/__tests__/useArtifacts.test.ts       | 227 +++++++++++++++++++--\n packages/dashboard/app/hooks/useArtifacts.ts       |  83 +++++++-\n packages/dashboard/src/sse.ts                      |   7 +\n 7 files changed, 335 insertions(+), 20 deletions(-)

Fusion-Task-Id: FN-7166

Fusion-Task-Lineage: f13e254d-d65c-423e-8d9c-94c31761eac2

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 22:15:53 -07:00
gsxdsm
a95cfa7f92 FN-7160: unify live agent counts and fix use markers
Unifies running-agent slot accounting across engine, CLI, and dashboard surfaces.

- Add shared core helpers for identifying and counting active top-level agent tasks, including in-review reviewer, merger, fix, and PR merge states.
- Reuse the shared count in engine semaphore repair, project health displays, and dashboard project-store routes.
- Correct Command Center utilization markers to use a zero-based active/cap ratio.
- Cover the shared predicate and affected CLI, dashboard, and engine behaviors with regression tests.

Files changed:
 .changeset/fn-7160-running-agent-count.md          |  7 ++++
 docs/dashboard-guide.md                            |  2 +-
 .../cli/src/commands/__tests__/project.test.ts     | 40 ++++++++++++++----
 packages/cli/src/commands/project.ts               | 15 +++----
 .../core/src/__tests__/live-agent-count.test.ts    | 47 ++++++++++++++++++++++
 packages/core/src/index.ts                         |  2 +
 packages/core/src/live-agent-count.ts              | 30 ++++++++++++++
 packages/core/src/types.ts                         |  2 +-
 .../command-center/CommandCenterControls.tsx       | 14 ++++---
 .../__tests__/CommandCenterControls.test.tsx       | 22 +++++++++-
 .../dashboard/src/__tests__/project-routes.test.ts | 31 +++++++++-----
 .../src/__tests__/project-store-resolver.test.ts   | 20 ++++++---
 packages/dashboard/src/project-store-resolver.ts   |  9 ++---
 .../src/routes/register-project-routes.ts          |  7 ++--
 packages/engine/src/__tests__/concurrency.test.ts  | 18 +++++++++
 packages/engine/src/concurrency.ts                 | 12 +++---
 16 files changed, 220 insertions(+), 58 deletions(-)

Fusion-Task-Id: FN-7160

Fusion-Task-Lineage: f48332f8-ac5d-46eb-b975-d2f6c880ddd5

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 21:39:40 -07:00
gsxdsm
100164dc50 FN-7150: show ephemeral agent token counts
Surface task-derived token usage for ephemeral agents in dashboard agent views.

- Attribute task token totals across assigned, source, and checkout agent links.
- Backfill zero-valued agent list token totals from linked task usage.
- Allow Agent Detail token usage windows for ephemeral/task-worker agents and cover the routes with tests.
- Document the dashboard behavior and add a patch changeset.

Files changed:
 .changeset/fn-7150-ephemeral-agent-token-counts.md |  7 ++
 docs/dashboard-guide.md                            |  1 +
 .../core/src/__tests__/agent-token-usage.test.ts   | 99 ++++++++++++++++++++--
 packages/core/src/__tests__/team-analytics.test.ts | 48 +++++++++++
 packages/core/src/agent-token-usage.ts             | 83 +++++++++++++++++-
 packages/core/src/index.ts                         |  4 +-
 .../__tests__/AgentTokenStatsPanel.test.tsx        | 21 +++++
 .../src/__tests__/routes-agent-token-usage.test.ts | 20 ++++-
 .../dashboard/src/__tests__/routes-agents.test.ts  | 87 +++++++++++++++++++
 .../src/routes/register-agent-core-routes.ts       | 38 ++++++++-
 .../src/routes/register-agent-runtime-routes.ts    |  5 +-
 11 files changed, 395 insertions(+), 18 deletions(-)

Fusion-Task-Id: FN-7150
Fusion-Task-Lineage: ce2661ce-5ba5-43b0-aa5c-7fddee90a915
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 19:37:39 -07:00
gsxdsm
e8163ab81b FN-7146: add workflow analytics to Command Center
Adds a read-only per-workflow analytics surface for Command Center operators.

- Add a core workflow analytics aggregator with token, cost, task status, and files-changed rollups.
- Expose workflow analytics through JSON and CSV Command Center routes using the scoped store default workflow.
- Add the Workflows Command Center tab, localized copy, docs, tests, and a release changeset.

Files changed:
 .changeset/fn-7146-workflow-analytics.md           |   7 +
 docs/dashboard-guide.md                            |   7 +-
 .../core/src/__tests__/workflow-analytics.test.ts  | 306 +++++++++++++++++++
 packages/core/src/index.ts                         |   7 +
 packages/core/src/workflow-analytics.ts            | 339 +++++++++++++++++++++
 .../components/command-center/CommandCenter.tsx    |   8 +
 .../__tests__/CommandCenter.test.tsx               |  51 +++-
 .../command-center/areas/WorkflowArea.tsx          | 170 +++++++++++
 .../areas/__tests__/WorkflowArea.test.tsx          | 136 +++++++++
 .../register-command-center-routes.auth.test.ts    |   5 +
 .../register-command-center-routes.test.ts         | 109 +++++++
 packages/dashboard/src/command-center-csv.ts       |  57 ++++
 .../src/routes/register-command-center-routes.ts   |  30 ++
 packages/i18n/locales/en/app.json                  |  21 ++
 packages/i18n/locales/es/app.json                  |  21 ++
 packages/i18n/locales/fr/app.json                  |  21 ++
 packages/i18n/locales/ko/app.json                  |  21 ++
 packages/i18n/locales/zh-CN/app.json               |  21 ++
 packages/i18n/locales/zh-TW/app.json               |  21 ++
 19 files changed, 1354 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-7146
Fusion-Task-Lineage: f75e40a5-9010-45d5-a729-132e547887d7
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 17:46:17 -07:00