2026.09.32 — 2026-09-21
Added
Draw line width in proportion to throughput, in step with dot speed (cb66d194)
On the Flow screen, an edge's width now grows continuously with its throughput, from 2px to 10px on a square-root scale that stops growing at 1000 msg/s. Dot speed and dot count follow the same value, so a thicker line always has faster dots. Widths glide to their new size on each refresh, or change instantly under reduced motion. The legend draws reference lines at 1, 100 and 1000+ msg/s. Idle and not-yet-measured edges share the thinnest width and differ by dash pattern (ADR-0095).
Move the routing builder to Routing, redesign it, and create queues inline (705ac296)
The routing builder is now the Builder tab of the Routing screen: Routing in the navigation, then Builder. It is no longer a tab of Configuration, and
/configuration?tab=routingnow opens the Declared tab, so update any bookmark to/routing?tab=builder. The builder still edits the declaration and applies through the same Review & apply path (ADR-0094).The To-address field of the divert editor can create a queue in place. Type a name, choose "Create queue", pick its routing type and durability, and it is added to the declaration. It appears on the canvas straight away as declared but not yet applied, and it reaches the brokers in the same apply as the divert. The flow works from the keyboard alone: Escape collapses it and returns focus to the field. The builder toolbar also gains "Add queue".
The canvas has been redesigned. Nodes are cards that name their kind in an icon and a word and state whether each is declared or observed. Divert lines carry arrowheads and say whether they copy or take. The selection highlights its connections and the rest recede. "Review & apply" sits in the toolbar and says how many nodes are behind.
Fixed
Stop refusing every bulk preview with 400, and align the selection checkboxes (c1d0f6ab)
Every bulk pause, resume, purge and delete failed at the preview with 400 Bad Request. The preview body left out
disconnectConsumers, which the API contract described as optional. The server, though, declares it as a primitive boolean, and Jackson 3 rejects a missing primitive by default. The request therefore failed before any bulk logic ran.The API contract now marks every primitive field as required, so what it promises matches what the server enforces. The web client sends the field. API clients that already sent every boolean are unaffected. A client that omitted one was already being refused with 400; it now finds out from the published contract instead (ADR-0096).
The selection checkboxes in the queue grid now sit centred in their rows, level with the header checkbox. The "Selected queues" bar is always shown, so ticking the first queue no longer pushes the grid down under the pointer. With nothing selected, the bulk actions are disabled and each one explains why.