# Changelog
All notable changes to `bloccs_web` are documented here. The format is based on
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project
adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [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.Inspect` capture is
enabled (bloccs 0.3+), the feed shows a bounded, redacted snapshot of each
message's payload in a new column, read from the `:payload` key 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
`:stop` in a per-process buffer in `Bloccs.Web.Telemetry.Handler`, folded by
`Bloccs.Web.Telemetry.Flow`, and broadcast on `bloccs: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 single
`Collector`, 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_export` feature (the Pro seam) — available in the open build.
- **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 single
`live_session` over the four panel routes (networks, topology, metrics,
coverage), inheriting host auth from the surrounding pipeline.
- `Bloccs.Web.Resolver` behaviour + `Bloccs.Web.Access` default 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 (one `live_action` per
panel); P0 ships the chrome and empty panel bodies.
- `Bloccs.Web.HexGlyph` — the bloccs hexagon notation as inline SVG, keyed by
the atoms `Bloccs.Introspect.glyph/1` returns; 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 committed `priv/static/assets` bundles
ship in the release.
- **Licensed under Apache License 2.0**, matching the `bloccs` library (adds an
explicit patent grant).
[0.1.0]: https://github.com/Bloccs/bloccs_web/releases/tag/v0.1.0