Fusion
e46f2d4a28
feat(FN-2869): merge fusion/fn-2869
...
- Add pluggable notification provider system with changeset and docs (`@runfusion/fusion` patch)
- Strengthen node routing and task diff visibility (FN-2840): merge-base resolution, routing guards, and unavailable-node policy tests in dashboard
- Overhaul `QuickChatFAB` component: redesigned FAB with modal, chat thread UI, CSS expansion (140 lines added), and comprehensive test coverage
- Rewrite `useQuickChat` hook: switch to polling-based state, expose dismiss/reset, improve retry and error handling
- Fix executor/merger concurrency races and reviewer pause TOCTOU in `packages/engine`
- Add `AgentSemaphore` defensive guards for invalid limits (NaN, Infinity)
- Expand `agent-runtime`, `agent-session-helpers`, `self-healing`, and `triage` engine modules
- Improve TUI: stack utilities/settings under stats in wide layout, add log entry copy feedback
- Add routing and file-diffs test coverage (`routes.test.ts`, `routes-file-diffs.test.ts`)
Commits merged:
- docs(FN-2869): complete Step 2 — document notification provider settings
- chore(FN-2869): add changeset for pluggable notification providers
- feat(FN-2849): merge fusion/fn-2849-2
- feat(tui): stack utilities/settings under stats in wide layout
- fix(engine): close executor/merger concurrency races and reviewer pause TOCTOU
- fix(dashboard): prefer merge-base over outdated baseCommitSha
- fix(tui): surface visible feedback when copying a log entry
- feat(FN-2840): strengthen node routing and task diff visibility
- feat(FN-2910): merge fusion/fn-2910
Files changed:
.changeset/pluggable-notification-providers.md | 4 +
docs/settings-reference.md | 17 +-
packages/cli/src/commands/dashboard-tui/app.tsx | 71 +++++--
.../cli/src/commands/dashboard-tui/controller.ts | 18 ++
packages/cli/src/commands/dashboard-tui/state.ts | 5 +
.../core/src/__tests__/node-override-guard.test.ts | 24 +++
packages/core/src/__tests__/store.test.ts | 27 +++
.../core/src/__tests__/task-node-override.test.ts | 25 +++
.../src/__tests__/unavailable-node-policy.test.ts | 42 ++++
packages/dashboard/app/api/legacy.ts | 3 +-
packages/dashboard/app/components/QuickChatFAB.css | 140 ++++++++++++-
packages/dashboard/app/components/QuickChatFAB.tsx | 226 ++++++++++++++++++++-
.../app/components/__tests__/QuickChatFAB.test.tsx | 133 +++++++++++-
.../app/hooks/__tests__/useQuickChat.test.ts | 12 +-
packages/dashboard/app/hooks/useQuickChat.ts | 149 ++++++++------
.../src/__tests__/routes-file-diffs.test.ts | 52 +++++
packages/dashboard/src/__tests__/routes.test.ts | 177 ++++++++++++++++
packages/dashboard/src/routes/resolve-diff-base.ts | 76 ++++---
.../engine/src/__tests__/project-engine.test.ts | 8 +-
packages/engine/src/agent-runtime.ts | 15 ++
packages/engine/src/agent-session-helpers.ts | 14 +-
packages/engine/src/concurrency.ts | 37 +++-
packages/engine/src/executor.ts | 183 ++++++++++++-----
packages/engine/src/pi.ts | 11 +
packages/engine/src/project-engine.ts | 47 ++++-
packages/engine/src/reviewer.ts | 95 +++++++--
packages/engine/src/self-healing.ts | 8 +
packages/engine/src/triage.ts | 10 +-
28 files changed, 1412 insertions(+), 217 deletions(-)
Fusion-Task-Id: FN-2869
2026-04-29 11:42:25 -07:00
..
2026-04-10 10:44:48 -07:00
2026-04-26 12:34:02 -07:00
2026-04-14 19:30:57 -07:00
2026-04-27 00:53:23 -07:00
2026-04-29 09:54:12 -07:00
2026-04-29 09:54:12 -07:00
2026-03-26 22:44:11 -04:00
2026-04-18 22:47:17 -07:00
2026-04-26 12:34:02 -07:00
2026-04-29 09:54:12 -07:00
2026-04-21 07:32:50 -07:00
2026-04-21 08:18:27 -07:00
2026-04-21 20:12:00 -07:00
2026-04-26 12:34:02 -07:00
2026-04-27 08:45:49 -07:00
2026-04-26 12:34:02 -07:00
2026-04-26 12:34:02 -07:00
2026-04-29 09:54:12 -07:00
2026-04-22 13:01:25 -07:00
2026-04-26 12:34:02 -07:00
2026-04-26 11:49:43 -07:00
2026-04-29 11:42:25 -07:00
2026-04-23 14:26:12 -07:00
2026-04-26 12:34:02 -07:00
2026-04-29 09:54:12 -07:00
2026-04-22 17:43:30 -07:00
2026-04-26 12:34:02 -07:00
2026-04-26 12:34:02 -07:00