MODULE 05 · LESSON 5.9
Share history, cards, and notifications across the web app
Share transcripts and unread state across SurfaceChatLink and the command center.
Lesson 29 of 86 · FabrCore 2.0
Overview
SurfaceChatLink, /surface and SurfaceNotify use the same principal-scoped workspace. The panel is another view of an agent's timeline, not a separate conversation database. SurfaceNotify is a header notification/navigation control, not a composer.
Several views can show one workspace
The inline chat panel, the full /surface page and SurfaceNotify refer to the current principal's workspace. That makes it possible to discover an agent response in a header notification and then open its conversation elsewhere. SurfaceNotify is a navigation/notification control, not another independent composer or history store.
Account scope must follow the circuit
A workspace service or subscription that leaks across users can display another principal's messages even if each underlying agent is correctly owned. Keep authenticated user state scoped to the web session/circuit and dispose old subscriptions on sign-out or navigation as appropriate. Shared UI components should share the user's workspace, not a global singleton transcript.
Connect shared history and notifications
Download the Operations Desk source. The README lists project setup, package prerequisites and local ports.
- Add SurfaceNotify to the header and link it to /surface. Keep all three components on the same scoped workspace.
- Send messages from the panel and the command center in turn. Check shared history, collapsed-panel unread indicators and agent-specific unread clearing.
- Test two signed-in users and two agent targets. Verify card rendering/action behavior in both views and distinguish a panel Clear action from actual history deletion.
@using FabrCore.Surface.Components
<SurfaceNotify SurfacePath="/surface"
Icon="bi bi-bell"
Tooltip="Open Surface" />
Follow a response across two views
- Open a chat link and /surface for the same authenticated principal. Send a recognizable message and inspect the same agent's history in both views.
- Trigger an eligible notification while the relevant conversation is not in focus. Use SurfaceNotify to open it and confirm it leads to the expected agent/timeline.
- Repeat with a second test account. The first account's response must not appear in the second account's workspace or notification list.
This tests a shared per-user experience. Cross-view continuity and cross-user isolation are both necessary for the integration to be correct.
If the result is different
Right-click notification inspection does not itself clear unread state. Standalone state remains ephemeral across a server restart even if the browser remembers its UI settings.
Go deeper
Explore the related documentation.