Skip to content

Guided tour

FabrCore 2.0 · Release and package availability

These guides track the current 2.0 source. Stable 2.0.0 publication is pending; package commands show the release target. Until it is published, follow the source quick start or use a matching available prerelease set. Release migration · Runtime modes

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.

  1. Add SurfaceNotify to the header and link it to /surface. Keep all three components on the same scoped workspace.
  2. Send messages from the panel and the command center in turn. Check shared history, collapsed-panel unread indicators and agent-specific unread clearing.
  3. 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.
SurfaceNotify · reference snippet
@using FabrCore.Surface.Components

<SurfaceNotify SurfacePath="/surface"
               Icon="bi bi-bell"
               Tooltip="Open Surface" />

Follow a response across two views

  1. 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.
  2. 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.
  3. 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.