Skip to content

2026.09.10

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 07 Sep 03:54
· 27 commits to main since this release

Added

  • Make refresh, pause and the metric charts tell the truth (b25868e7)

    The shell reported freshness, but three of its claims were wrong, and the
    metrics page was wrong in a way a screenshot hides.

    Refresh now means your refresh. The control's busy state came from
    cache-wide isFetching, so it spun on every background poll — a spinner that
    never stops says nothing. It now tracks only the promise the operator started,
    floored at 350ms so a fast refetch reads as an acknowledgement rather than a
    flicker, and repeated activation joins the running refetch instead of aborting
    and restarting it (cancelRefetch: false).

    Pause now holds. It stopped intervals but not mounts, so pausing and then
    navigating silently resumed. refetchOnMount goes through the same seam, gated
    so a query that has never resolved still fetches once — pausing a screen to stop
    it moving is not asking for an empty one. The paused control also renders
    differently, rather than differing only in aria-pressed.

    Metric charts carry time. The x-axis was array position, so an omitted
    bucket rendered flush against its neighbour — the metrics capability requires a
    cold subject to show a gap, and it could not. The axis is now a numeric time
    scale over the requested window. The live window was also frozen at page-open by
    a useMemo that never re-ran; it now advances, quantized to the bucket width so
    the query key changes once per bucket rather than once per second. A failed read
    rendered as "No samples yet" — an absence presented as a fact — and now states
    the failure.

    The dashboard around them is rebuilt: current depth, added/s, acked/s and
    consumers as stat tiles that say "Not sampled" rather than showing zero; each
    chart a titled panel with its unit; a table view of the window; and ?subject=
    to scope the whole page to one queue, linked from the queue drawer.

    Bounded views. Requests, events, audit and DLQ rendered every row they were
    given. They page now, through one shared pager, with events and audit moved onto
    the virtualised grid. Above 24 nodes the topology canvas collapses each pair to
    one node, drops edge labels, renders only what is visible, and says that detail
    has been reduced.

    Two fixes found while shooting the screenshots. The command palette mounts on
    every route and asked for /clusters//queues outside a cluster — a 400, and one
    errored observed query put the whole shell into its offline state, so every
    cluster-less screen claimed Studio had lost the brokers. And the consumer chart's
    y-axis rounded fractional ticks to integers, printing "0" five times beside bars
    of visibly different heights.

    Colour. The latency panel used the reserved warning and danger colours as
    series colours; p50/p95/p99 are now a validated sequential blue ramp. The depth
    chart's two neutral series failed the normal-vision separation floor and are now
    one hue distinguished by mark shape. Both checked with the palette validator in
    both schemes rather than by eye.

    Release. The Docker Hub description step has failed with Forbidden on every
    release, hidden by continue-on-error. It now points at a real docs/dockerhub.md,
    completes relative URLs so the screenshots resolve, and fails loudly. The
    credential must be a PAT with read, write and delete scope — the description
    endpoint rejects a repo-scoped token. It is the last step of the release job, so
    a failure there cannot burn a version.

    Screenshots are recaptured from a four-node cluster carrying real traffic:
    just demo brings up two live/backup pairs, registers them through Studio's own
    API and drives messages with the broker image's own client — nothing is written
    to metric_sample by hand — and just shots captures the four README images.

    ADR-0055 records the time axis and the quantized window. ADR-0056 records bounded
    views and topology level of detail.