All notable changes to bloccs_web are documented here. The format is based on
Keep a Changelog, and this project
adheres to Semantic Versioning.
0.2.0 - 2026-06-07
Now requires bloccs ~> 0.5 (per-message lineage + the introspect
contract/config fields the panels render).
Added
- Live topology map. The Topology panel animates packets moving along active
edges, with a summary strip and per-node hover stats. Clicking a node opens an
inspector showing its primitive (kind, ports with schemas, effects), live
metrics, and the code that implements it —
pure_core/effect_shellrefs plus retry / idempotency / batch / join / rate / delay policy (fromBloccs.Introspectcontract/config, bloccs 0.4+). - Message journey. Selecting a message in the Messages panel opens a
right-side drawer that tracks it across the network via
bloccs0.5 lineage: the full path highlighted on a mini-graph, the ordered list of hops it took (branching/merging through split, batch, and join), and per-hop detail + payload. Prev/Next (and ↑/↓) walk the message's hops; the journey is snapshotted at selection so it never drifts as the live feed scrolls. - Network overview cards on the Networks panel — per-network sparkline, rate, and error count.
- Richer Metrics panel and a Sentry-style per-second throughput volume chart (failures stacked) on Messages, with a pause control to freeze the live feed for inspection.
- BloccsWeb brand — the real bloccs mark + wordmark in the nav, and a palette aligned to bloccs.io.
Changed
- Requires
bloccs ~> 0.5(was~> 0.3).
Fixed
- Topology inspector no longer crashes selecting a
join/batch/ratenode (readBloccs.Manifest.*primitive structs withMap.get/2, notAccess). - Aggregate nodes' emits (e.g. a join's output) now appear in the Messages feed, so a fan-in journey is complete.
- Node labels are no longer clipped in the topology / coverage graph.
0.1.0 - 2026-06-06
First release. A self-hosted, observe-only Phoenix LiveView dashboard for running
bloccs networks, mounted into a host app with one router macro (the oban_web
model). Requires bloccs ~> 0.3.
Added
- Message payloads in the Messages feed. When
Bloccs.Inspectcapture is enabled (bloccs 0.3+), the feed shows a bounded, redacted snapshot of each message's payload in a new column, read from the:payloadkey on the[:bloccs, :emit]telemetry. A hint appears when capture is off. - Messages panel — a live view of packages moving through a network. A
server-rendered throughput chart over per-second buckets plus a scrolling feed
of recent edge traversals (
from.port → to.port), each with its outcome and the emitting node's latency, filterable by node and outcome. Built from the[:bloccs, :emit]+ node telemetry: emits are correlated with their node's:stopin a per-process buffer inBloccs.Web.Telemetry.Handler, folded byBloccs.Web.Telemetry.Flow, and broadcast onbloccs:flow:<net>. Flow metadata only — payload contents are a future opt-in bloccs capability. - P2–P5 — the four live panels. All read the v0.2.0 introspection API and the
[:bloccs, …]telemetry stream; observe-only.- Networks — every running network with version, node/edge counts, and
uptime (
Bloccs.Introspect.list_networks/0), each row linking into topology. - Topology — the network DAG drawn in the bloccs hexagon notation, computed
by a pure server-side layered layout (
Bloccs.Web.Topology.Layout) and rendered as one SVG (Bloccs.Web.Components.Graph). Node state lights up live. - Live metrics — per-node throughput, p50/p95 latency, completed, and error
rate on a 1 Hz rolling window. A telemetry handler folds the bloccs node
events into
Bloccs.Web.Telemetry.Metrics(pure core) in a singleCollector, which broadcasts coalesced frames over PubSub; the topology glyphs light from the same frames. - Coverage — structural coverage (
Bloccs.Web.Coverage) from a recorded run or a loaded.bloccs-trace: a summary bar, the reached/unreached overlay on the graph, and the unreached-obligation list. Trace export is gated by the:trace_exportfeature (the Pro seam) — available in the open build.
- Networks — every running network with version, node/edge counts, and
uptime (
- P0 — package skeleton and mount. The dashboard mounts into a host Phoenix
app and renders its empty shell:
Bloccs.Web.Router.bloccs_dashboard/2— the one-line router macro; a singlelive_sessionover the four panel routes (networks, topology, metrics, coverage), inheriting host auth from the surrounding pipeline.Bloccs.Web.Resolverbehaviour +Bloccs.Web.Accessdefault resolver — the Pro-gating seam (resolve_user/resolve_access/resolve_features+enabled?/2). The free baseline enables every feature.Bloccs.Web.DashboardLive— the single LiveView (onelive_actionper panel); P0 ships the chrome and empty panel bodies.Bloccs.Web.HexGlyph— the bloccs hexagon notation as inline SVG, keyed by the atomsBloccs.Introspect.glyph/1returns; live state is a CSS class.Bloccs.Web.Application+Bloccs.Web.Telemetry.Collector— auto-starting OTP app with a private PubSub and the (P4) metrics collector, currently a no-op snapshot source.- Precompiled-asset packaging (the oban_web model):
assets/is dev-only and excluded from the Hex package; the committedpriv/static/assetsbundles ship in the release.
- Licensed under Apache License 2.0, matching the
bloccslibrary (adds an explicit patent grant).