Harden chat source links across streaming providers while improving new-tab behavior and visual contrast. - Preserve source-link metadata through streamed delta and event bridges. - Open chat source links safely in new tabs across desktop and mobile surfaces. - Improve source-link contrast and add regression coverage plus user-facing guidance. Files changed: .changeset/fn-040-chat-source-links.md | 7 +++ docs/dashboard-guide.md | 3 + .../ui-bugs/chat-streamed-source-link-integrity.md | 53 ++++++++++++++++ packages/dashboard/app/components/ChatView.css | 24 ++++++++ .../app/components/StandardChatSurface.tsx | 8 ++- .../components/__tests__/ChatView.core.test.tsx | 38 ++++++++++++ .../components/__tests__/ChatView.mobile.test.tsx | 70 ++++++++++++++++++++-- .../__tests__/ChatView.sessions-rooms.test.tsx | 49 +++++++++++++++ ...andardChatSurface.nativeStructureEmbed.test.tsx | 52 +++++++++++++++- .../__tests__/TaskPlannerChatTab.test.tsx | 48 +++++++++++++++ .../engine/src/__tests__/streaming-delta.test.ts | 36 +++++++++++ packages/engine/src/execution/streaming-delta.ts | 17 +++++- .../src/__tests__/event-bridge.test.ts | 30 +++++++++- packages/pi-claude-cli/src/event-bridge.ts | 14 +++-- .../src/__tests__/event-bridge.test.ts | 42 +++++++++++++ .../fusion-plugin-acp-runtime/src/event-bridge.ts | 8 ++- .../src/__tests__/provider.test.ts | 34 +++++++++++ .../src/acp/event-bridge.ts | 8 ++- .../src/__tests__/event-bridge.test.ts | 28 +++++++++ .../src/event-bridge.ts | 14 +++-- .../src/__tests__/provider.test.ts | 34 +++++++++++ .../src/acp/event-bridge.ts | 8 ++- .../src/__tests__/runtime-adapter.test.ts | 34 +++++++++++ .../src/acp/event-bridge.ts | 8 ++- 24 files changed, 642 insertions(+), 25 deletions(-) Fusion-Task-Id: FN-040 Fusion-Task-Lineage: 364ad678-df3e-4fb2-b19c-29eb44d8a429 Co-authored-by: Fusion <noreply@runfusion.ai>
Claude Runtime Plugin
fusion-plugin-claude-runtime exposes Claude Code as Fusion runtime claude and CLI provider claude-cli. It communicates through Agent Client Protocol (ACP), preserving streaming updates, tool calls, and multi-turn sessions.
The plugin uses the pinned claude-code-cli-acp bridge (0.1.1). CLI packaging stages its reviewed launcher beside the bundled plugin, while the published @runfusion/fusion dependency installs the matching optional native bridge for the operator's OS and CPU. The runtime never falls back to a same-named executable on PATH.
This is additive to Fusion's experimental pi-claude-cli Route A. Route A remains available; selecting the claude runtime explicitly selects this first-class ACP transport.
Fusion custom-tools bridge
The fusion-custom-tools MCP server launches mcp-schema-server.cjs beside the loaded bridge module. It is kept beside src/ for source loading and copied beside dist/ by pnpm build; do not remove that postbuild copy or dist-loaded sessions will fail initialize with handshake failed: connection closed: initialize response.
When requested Fusion tools cannot start their bridge, the adapter emits FUSION_TOOL_BRIDGE_FAILED: mcp-schema-server-missing or FUSION_TOOL_BRIDGE_FAILED: bridge-start-failed, omits the unusable MCP entry, and the engine stores only the fixed outcome and tool count in session:runtime-resolved run audit metadata.