Commit Graph

6016 Commits

Author SHA1 Message Date
Fusion
31fb995324 feat(FN-3888): fix dependency graph plugin ESM imports for Node16
Fixed ESM import resolution in the dependency graph plugin by repointing its tsconfig to Node16 and adding compatible import extensions, with verification tests covering the raw-node plugin entrypoint resolution path.

Fusion-Task-Id: FN-3888
2026-05-09 16:57:43 -07:00
gsxdsm
958af16ded fix(FN-3888): resolve dependency-graph plugin from src in dashboard build
The dashboard dynamically imports `@fusion-plugin-examples/dependency-graph/dashboard-view`, which resolved through the plugin's package.json exports to `dist/`. When plugin source was edited without rebuilding, stale `dist/` (extensionless ESM imports) made the import throw and the UI surfaced "Bundled plugin view unavailable". Add vite/vitest aliases mapping the plugin (and its `/dashboard-view` subpath) to `src/` so the dashboard never depends on `dist/`. Mirrors the existing pattern for hermes/openclaw/paperclip runtimes. Also extends the runtime-plugin alias regression test, and emits `.js` extensions from the plugin source for the CLI-bundled path.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 16:44:44 -07:00
gsxdsm
98b9e25ca4 fix(engine): rescue auto-merge handoff from stale mergeActive entries
The 15s `scheduleMergeRetry` sweep was silently re-skipping in-review
tasks whose `mergeActive` entry leaked from a wedged prior attempt
(uncaught error inside `drainMergeQueue`, restart between push and
finally, etc.). FN-002, FN-004, FN-3898, FN-3899 all sat in in-review
until the 15-min maintenance loop logged "Auto-recovered: eligible
in-review task re-enqueued for merge".

Two changes:

* `reconcileStaleMergeActive()` runs before each 15s sweep. Any
  `mergeActive` taskId that isn't in `mergeQueue` and isn't the
  `activeMergeTaskId` is treated as leaked and dropped, so the next
  enqueue actually pushes through.
* The `task:moved → in-review` immediate handoff (`wireAutoMerge`) now
  logs every skip reason instead of returning silently, clears its own
  stale `mergeActive` entry before enqueueing, and identifies the task
  in its catch-block warning. `internalEnqueueMerge` also warns when a
  leaked entry causes a skip — the next regression won't be invisible.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 16:33:54 -07:00
Fusion
7ed685a21b feat(FN-3899): add chat rooms with send routing and delete-room UI
This merge delivers chat rooms with room send routing and delete-room UI in the dashboard (FN-3899), including fixes for bundled plugin view imports and a release changeset. Supporting changes include a merger improvement that tightens scope-warning diff base when baseBranch is missing, companies.sh

Fusion-Task-Id: FN-3899
2026-05-09 16:29:11 -07:00
Fusion
0db491028e fix(FN-3885): preserve mainline plugin bundling in squash merge
- Resolve squash conflict in packages/cli/tsup.config.ts using smart-prefer-main safety rules
- Keep mainline dependency-graph plugin bundling path and avoid reintroducing stale branch copy logic
- Verify merged result with mandatory pnpm test and pnpm build before finalizing
2026-05-09 16:16:17 -07:00
gsxdsm
c335754c5f chore(release): bump homebrew tap formula automatically after npm publish
Adds a `bumpHomebrewTap(version)` step that fetches the freshly published
tarball from registry.npmjs.org, recomputes its sha256, rewrites
homebrew-tap/Formula/fusion.rb (url + sha256), and pushes a follow-up
`chore(tap): bump fusion to vX.Y.Z` commit to main. Includes a short
retry loop because the registry can take a few seconds to surface a
just-published tarball. All failures are warnings — they don't abort
the release since the npm publish + tag are already out.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 16:09:57 -07:00
gsxdsm
200ea8ead0 fix(engine): tighten merger scope-warning diff base when baseBranch is missing
Mirrors dashboard `resolveDiffBase` display-recovery: when `baseBranch` is
absent, compute `merge-base(HEAD, main)` and prefer it over a stale
`baseCommitSha` only if it strictly descends that SHA. Pre-merge rebase
on legacy/imported tasks (no recorded baseBranch) was producing inflated
"N files changed outside declared File Scope" warnings — FN-3898 surfaced
17 ghost files for a 3-file change.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 16:06:42 -07:00
Fusion
68ec5e2e9d feat(FN-3898): add checkout/schema self-heal and import compatibility updates
- Add self-healing for legacy tasks schema/columns and checkout-lease recovery with regression coverage
- Extend companies.sh import parsing and dashboard import routes for repo subpath handling
- Fix verification command spawning to disable Corepack download prompts in engine tooling
- Update dependency-graph plugin packaging/exports and wire CLI dashboard interop types
- Add and include follow-up changesets for FN-3856, FN-3883, FN-3896, and FN-3898

Fusion-Task-Id: FN-3898
2026-05-09 16:06:42 -07:00
gsxdsm
07d26996f8 test(engine): stub git-shelling worktree-pool helpers in in-process runtime tests
Prevents flaky 30s subprocess-guard timeouts on `git rev-parse --git-dir`
when fake-timer tests race the kill timer.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 15:56:19 -07:00
Fusion
62666882f6 feat(FN-3896): support companies.sh repo subpaths in company imports
- Add secure archive subPath handling to company package parsing, including traversal/absolute-path validation
- Parse GitHub website tree URLs from companies.sh metadata to derive preferred branch and nested subPath
- Wire dashboard company import flow to download the correct branch archive and parse nested manifests with clear API errors
- Add parser and route tests for subPath success/failure cases and include changeset for @runfusion/fusion

Fusion-Task-Id: FN-3896
2026-05-09 15:56:11 -07:00
gsxdsm
4090076c4d fix(engine): disable Corepack download prompt in verification spawns
Non-TTY children spawned by the verification runner hung until the hard
timeout when Corepack prompted before fetching a pinned packageManager
version. Set COREPACK_ENABLE_DOWNLOAD_PROMPT=0 in the spawn env so the
fetch proceeds (or fails fast) without waiting on stdin.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 15:29:05 -07:00
Fusion
1b7d5f5e5c feat(FN-3856): add stuck merge deadlock recovery sweep and self-healing aut
Merges deadlock recovery for stuck merge tasks (FN-3856) — the engine now runs an already-merged sweep before pausing blocked tasks, and recovers metadata alignment with MergeDetails type. Also adds memory backup CLI commands with core support, a resizable split pane to the mailbox view, peer-agent

Fusion-Task-Id: FN-3856
2026-05-09 15:26:30 -07:00
Fusion
9d998e762d feat(FN-3883): fix dependency-graph plugin exports and add CLI bundle entry
Fixed the `@fusion-plugin/dependency-graph` plugin's exports and build entry points so it bundles correctly with the CLI, added test coverage for plugin enable success and error-state toasts, and included the plugin's dist in the CLI bundle via tsup config.

Fusion-Task-Id: FN-3883
2026-05-09 15:12:13 -07:00
Fusion
2d3af5b6ce fix(FN-3886): resolve peer agent names in mail and notifications
- Resolve participant display names in AgentDetailView mail tab for peer agents
- Update MailboxModal labeling to use readable agent names instead of raw IDs
- Propagate resolved agent names through notification service, notifier, and provider payloads
- Add and update dashboard/engine tests plus a changeset for @runfusion/fusion

Fusion-Task-Id: FN-3886
2026-05-09 14:58:56 -07:00
Fusion
7d3b22616c feat(FN-3882): document clearStaleBlockedBy() in SelfHealingManager section
Added a single line documenting `clearStaleBlockedBy()` in the SelfHealingManager section of the architecture docs.

Fusion-Task-Id: FN-3882
2026-05-09 14:51:58 -07:00
Fusion
ff20e9f337 feat(FN-3891): document memory backup settings in settings reference
Documents the memory backup feature in the settings reference and adds a changeset to prepare for publishing.

Fusion-Task-Id: FN-3891
2026-05-09 14:41:58 -07:00
Fusion
1d20c420c2 feat(FN-3885): add resizable split pane to mailbox view
Adds a resizable split-pane to the MailboxView component (FN-3885) and introduces a report archive feature to fusion-plugin-reports with a full store, schema, and types layer (FN-3784). Also adds tests for the notification dispatcher pipeline, updates the MemoryView test allowlist, and clarifies the

Fusion-Task-Id: FN-3885
2026-05-09 14:25:35 -07:00
Fusion
ca28002085 feat(FN-3890): include MemoryView in dashboard quality test allowlist
Adds MemoryView to the dashboard test quality gate allowlist so it participates in the curated default test run.

Fusion-Task-Id: FN-3890
2026-05-09 14:20:03 -07:00
Fusion
e433e68dd7 feat(FN-3784): document report archive feature in fusion-plugin-reports REA
Documents the report archive feature in the Fusion Plugin Reports README and adds a patch changeset for the release.

Fusion-Task-Id: FN-3784
2026-05-09 14:12:08 -07:00
Fusion
61e941c749 docs(FN-3887): clarify ntfy allowlist requirement for agent messages
- Update settings reference language for ntfy integration
- Clarify that agent messages require allowlisting configuration
- Keep notification setup guidance aligned with current behavior

Fusion-Task-Id: FN-3887
2026-05-09 14:04:01 -07:00
gsxdsm
5202b8e68f chore(release): v0.24.0
Version bump via changesets.
2026-05-09 13:56:53 -07:00
gsxdsm
6bb949da6b docs(FN-3882): document clearStaleBlockedBy() in architecture.md SelfHealingManager section 2026-05-09 13:55:51 -07:00
Fusion
f934cd6c3c feat(FN-3889): emit shutdown event when Fusion session is disposed
Emit a session shutdown event when a Fusion session is disposed, with a matching test update in the engine package.

Fusion-Task-Id: FN-3889
2026-05-09 13:55:05 -07:00
Fusion
cd90a43329 feat(FN-3884): anchor QuickChatFAB and chat messages to latest on layout sh
Merges FN-3884 chat scroll anchoring — ChatView now re-scrolls to the latest message when reopened or when activation transitions occur, with a bounded bottom-anchor helper preventing layout-shift overshoots. QuickChatFAB was updated to wire the new anchoring behavior, and both components gained com

Fusion-Task-Id: FN-3884
2026-05-09 13:49:11 -07:00
Fusion
e197585ebb feat(FN-3866): add changeset for clearing stale blocked-by relationships
Merges the changeset for a patch release of `@runfusion/fusion` related to clearing stale blocked-by relationships (FN-3864).

Fusion-Task-Id: FN-3866
2026-05-09 13:37:20 -07:00
Fusion
3c51d527eb feat(FN-3865): complete Step 8 — documentation and delivery 2026-05-09 13:21:47 -07:00
Fusion
39e0b3c6a7 fix(FN-3865): align merge recovery types and real-git fixtures 2026-05-09 13:21:47 -07:00
Fusion
602a7da512 feat(FN-3865): complete Steps 3-6 — recover already-merged review tasks 2026-05-09 13:21:47 -07:00
Fusion
d0fd3fb98e feat(FN-3865): complete Step 2 — add already-merged detection helpers 2026-05-09 13:21:47 -07:00
Fusion
39f036c451 feat(FN-3878): add restore-merge-sha script for commitSha restoration
Adds a new merge commitSha restoration script (`scripts/restore-merge-sha-fn-3878.mjs`) with test coverage to handle a specific FN-3878 merge case, along with a changeset for publishing and a minor plugin vitest config governance alignment across three plugins.

Fusion-Task-Id: FN-3878
2026-05-09 13:21:47 -07:00
Fusion
2278ceff31 feat(FN-3879): add chat room management in ChatView
- Add useChatRooms hook with room lifecycle state and API integration
- Wire ChatView UI for room selection/creation and update room-focused tests
- Tokenize ChatView and TaskCard color usage to align with dashboard design tokens
- Update architecture docs and include FN-3879 changesets for published CLI package

Fusion-Task-Id: FN-3879
2026-05-09 13:21:47 -07:00
Fusion
cfa4896d38 feat(FN-3783): add review panel plugin for fusion reports with type definit
The merge delivers the **Reports Review Panel** (FN-3783) as a multi-step plugin feature — defining review panel types, implementing orchestration logic, and wiring them through the fusion-plugin-reports entry point — alongside a collection of complementary improvements: section-aware prompt compact

Fusion-Task-Id: FN-3783
2026-05-09 13:21:47 -07:00
Fusion
44252e8c8b feat(FN-3877): add section-aware prompt compaction for triage task specific
The merge adds section-aware prompt compaction for task triage (reducing spec payload size by intelligently trimming planning context), enriches the Settings modal with GitHub tracking configuration, and improves the engine's self-healing behavior.

Fusion-Task-Id: FN-3877
2026-05-09 13:21:47 -07:00
Fusion
25dd8cbb34 feat(FN-3868): add changeset for github tracking settings
Adds a changeset for the GitHub tracking settings feature (FN-3868), preparing it for the next release. The feature itself was implemented in earlier steps; this changeset marks it for publication to npm.

Fusion-Task-Id: FN-3868
2026-05-09 13:21:47 -07:00
Fusion
a2a3f8ad08 feat(FN-3862): add merge attribution changeset
Completes Step 6 of FN-3862 with documentation and delivery, including a changeset for the `@runfusion/fusion` package. Also removes an unused line from the self-healing module.

Fusion-Task-Id: FN-3862
2026-05-09 13:21:47 -07:00
Fusion
06d9de791d feat(FN-3867): add changeset for paused scope exclusion feature
Completes Step 4 by adding a patch changeset for `@runfusion/fusion`, signaling that the FN-3864 scope-exclusion work is ready for the next release.

Fusion-Task-Id: FN-3867
2026-05-09 13:21:47 -07:00
Fusion
8f5cf45e77 feat(FN-3855): add chat stream reattach, hybrid room responder policy, mesh
This merge introduces a model selector to the Insights view with favorites, provider filtering, and configured-only options (FN-3842/3843), alongside chat stream reattach support for dashboard chat recovery. It adds mesh lease recovery semantics and a manager to the engine for improved node resilien

Fusion-Task-Id: FN-3855
2026-05-09 13:21:47 -07:00
Fusion
52fd9774ec feat(FN-3859): add hybrid room chat responder policy helper
Adds a room responder policy helper for hybrid room chat across the core type definitions and dashboard implementation, with corresponding tests in the core package.

Fusion-Task-Id: FN-3859
2026-05-09 13:21:47 -07:00
Fusion
f3f8dfbf52 feat(FN-3810): define room responder policy helper for hybrid room chat
Defines a room responder policy helper in `@fusion/core` with corresponding types, implements supporting logic in the dashboard chat module, and adds comprehensive tests for the hybrid room manager scenario (FN-3810 step 2).

Fusion-Task-Id: FN-3810
2026-05-09 13:21:47 -07:00
Fusion
32a7f8965f feat(FN-3782): enforce mobile touch target for settings star action
Enforces the 44px mobile touch target on the settings star action in `SettingsModal.css`, fixing an accessibility regression introduced in FN-3782.

Fusion-Task-Id: FN-3782
2026-05-09 13:21:47 -07:00
Fusion
f9b45d1e90 feat(FN-3864): add mesh lease recovery and compact assigned-agent badge
- Add mesh lease manager integration so engine/self-healing can recover and reconcile stale lease state
- Extend core store/agent-store types, DB handling, and tests to track lease recovery semantics across runtimes
- Collapse TaskCard assigned-agent badge label in narrow cards while preserving accessible labeling behavior
- Update dashboard and engine test coverage for lease recovery flows and assigned-agent badge accessibility
- Document mesh lease recovery behavior in architecture, multi-project, and agents docs

Fusion-Task-Id: FN-3864
2026-05-09 11:31:57 -07:00
Fusion
e0a84b27fb feat(FN-3452): document mesh lease recovery semantics
Documents mesh lease recovery semantics across the agents, architecture, and multi-project reference files, adding 32 lines of clarifying documentation to explain how mesh leases are recovered in the system.

Fusion-Task-Id: FN-3452
2026-05-09 11:31:57 -07:00
Fusion
0bd460bb7f feat(FN-3855): bypass send-message binding in gate wrappers
- Remove hard dependency on sendMessage in pi agent wrappers so no-approval gates can run without chat bindings
- Add regression coverage for createFnAgent behavior when sendMessage is absent and when tool calls still execute
- Add changeset for @runfusion/fusion documenting the no-approval gate send-message fix

Fusion-Task-Id: FN-3855
2026-05-09 11:31:57 -07:00
gsxdsm
b78189c778 Delete .fusion/tasks/FN-3568 directory 2026-05-09 11:22:03 -07:00
Fusion
7bf93e8501 fix(FN-3825): surface inline notification test feedback in settings
- Persist per-provider notification test results and render inline success/error feedback blocks
- Add ntfy "Test message notification" action wired to message-event test payload
- Keep toast notifications while also showing provider-specific status text with aria-live feedback
- Update SettingsModal tests to verify ntfy message-event call path and inline webhook/ntfy feedback rendering

Fusion-Task-Id: FN-3825
2026-05-09 11:02:12 -07:00
gsxdsm
2b5b98697f Merge pull request #61 from bluk1020/fix/pr-retry-missing-task-branch
Fix PR retry handling for missing task branches
2026-05-09 11:00:57 -07:00
gsxdsm
43200f6de1 Merge pull request #56 from timothyjlaurent/timothyjlaurent/Anthropic-error
fix: settings scope leak, insights model selector & provider filtering
2026-05-09 10:58:48 -07:00
Fusion
31caa6a00a feat(FN-3842): finalize dashboard chat reattach and cleanup merge
- Isolate DocumentsView mobile styling while preserving dashboard UI behavior
- Add legacy chat stream reattach support across API routes and chat hooks with updated tests
- Remove tracked hermes runtime dist artifacts to prevent plugin autostash conflicts
- Rename the FN-3842 merge finalize changeset file and keep related changeset updates

Fusion-Task-Id: FN-3842
2026-05-09 10:46:52 -07:00
Fusion
80f65de994 feat(FN-3843): add chat stream reattach support
Adds the changeset for FN-3843, completing the chat stream reattach feature for the `@runfusion/fusion` CLI package.

Fusion-Task-Id: FN-3843
2026-05-09 10:44:29 -07:00
gsxdsm
e8f9865170 Merge branch 'main' into timothyjlaurent/Anthropic-error 2026-05-09 10:42:33 -07:00