Every view is data-bound (core: Doc/GUI/DataBinding → Templates first, data later). A node page in this pack used to subscribe to GetMeshNodeStream() on its hub, wait, and only then build its controls out of the record. Until the owning hub answered the page was a spinner, and each emission rebuilt the whole tree. Each converted page now has three parts.

The shape

Part What it is
Template BuildTemplate… (pure) returns the whole tree. Every view in it is a control, and every value is a JsonPointerReference into a projection record. A section the record may lack is in the tree anyway; its style is bound and is display: none; when the projection says it is absent. The tree's shape never depends on the data.
Projection Project(…) (pure) turns the node's content into that record (ApiTokenView, ReleaseView, NotificationView). It holds the decisions the builders used to make inline: which sections show, the status label and colour, the toggle's label, the viewer-zone instants. The area returns stream.Select(Project).Bind(_ => template, ViewId), so the framework feeds /data/{ViewId} live.
Slots Two platform pieces still take a LOADED node. The header is MeshNodeLayoutAreas.BuildHeader. The property form is OverviewLayoutArea.BuildPropertyOverview, which picks its fields from the content's runtime type. Each renders in a nested area (NodePageSlots.HeaderArea = PageHeader, NodePageSlots.PropertiesArea = PageProperties) with SpinnerType.Skeleton, so the page around it is already there. When core offers path-bound forms of the two, NodePageSlots is the one place to swap them in.

A page gated on Read (GroupMembership) keeps its gate as DATA. The access-denied notice and the body are both in the template. NodePageSlots.ReadGated binds their styles to the viewer's effective permission.

The bound style hides; it does not withhold. Every viewer receives the body, so a read-gated body holds nothing of the node: only static controls and references to slots. The node's content is served by the slots, and each is an area of its own that a client can ask for with nothing but the node's address. Two things keep it from a viewer without Read:

Node content in the page

Until the projection arrives, the bound fields draw the platform's loading shape (LoadingShape). A node that has not loaded projects to "every section hidden". A node that loaded without the expected content projects to the notice the page always showed.

Converted

Page Areas
API token Overview, Thumbnail
Release Overview
Notification Overview, Thumbnail (a node without a notification falls back to the path-only platform card)
GroupMembership Overview (header and property form in their slots)

The text these pages used to carry inline now lives in the module-owned table NodeChromeTexts (English and German). Strings that were already catalog keys stay catalog keys.

Pinned by

src/MeshWeaver.Graph.Views.Test/NodeChromeTemplatesTest.cs checks these things:

Negative control: adding one deferred view to a template fails EveryViewIsStatic.

Deploy

These views are compiled into the pack's assembly, so a new activation picks them up. A node hub that is already running keeps the old views until it is disposed. After the roll, recycle the NodeTypes ApiToken, Release, Notification and GroupMembership; the dispose cascades to their live instances.