Skip to content

v2.6.2 — Correlation coverage and plugin settings that arrive

Latest

Choose a tag to compare

@thomas-stegemann thomas-stegemann released this 04 Sep 12:48
· 29 commits to main since this release

A small patch release: one defect in the correlated timeline, one plugin finally honouring the setting it advertises, and a documentation change that moves where plugin pages are written. No API, package, or wire changes.

Fixes

The correlation scanner walks interpretation payloads

ScanStep documented itself as covering "every JSON-bearing surface of one step" and skipped the interpretations. ScanFrame walked a frame's body and data but not its interpretations either, so a streaming frame had the same hole as its step.

An interpretation payload is where a semantic widget's data lives — a coordinate pair, a decoded identifier, a resolved entity reference — and it is carried verbatim through save and load. A recording can legitimately carry its only shared identifier there, and when it did, both steps stayed dark on the correlated timeline with nothing on screen to say why. Nothing errored, so there was no thread to pull.

The DIS plugin honours probeDuration

Kuestenlogik.Bowire.Protocol.Dis declared a probeDuration setting and then hard-coded three seconds. The control rendered, the value persisted across reloads, and discovery ignored it — so anyone who raised the window because a probe missed an entity watched the number stick and concluded the entity was not there.

It read like a forgotten line in that plugin and was not. Nothing upstream carried plugin settings back to any plugin until v2.6.0 built the seam, and this repository was still pinned to Bowire 2.5.0 — the type the fix needs did not exist in its compilation. MQTT, NATS and SOAP have honoured their settings since v2.6.0; DIS joins them now, and MQTT's and SOAP's settings are documented for the first time.

The publish pipeline can report its own failures again

Homebrew and Winget both failed during the v2.6.1 release and neither raised the issue that exists to make exactly that visible. Two defects stacked:

The reporter spliced its inputs into JavaScript template literals, and every caller's hint text contains backticks — `homebrew-bowire`, `WINGET_TOKEN`. Those closed the literal, so the step died with a syntax error before filing anything. Inputs now travel through the environment, which also removes the injection shape.

The token guard used run: exit 0, which ends that step and nothing else. Every following step still ran, so an unconfigured channel did not skip — it failed, on the first step needing the token. The check is now its own job gating the rest through needs. That distinction is not cosmetic: a channel reporting red on every release teaches everyone to ignore red publish jobs, which is how seven releases of silent failure happened once already.

Documentation

Protocol plugins own the page that describes them

A plugin living in its own repository had its documentation here, in a repository it cannot push to. A claim and the code making it true could only be fixed in two separate commits — and they drifted: this site said DIS's probeDuration was configurable for weeks while the plugin hard-coded three seconds.

Seven pages — AMQP, Akka.NET, DIS, Kafka, Surgewave, TacticalAPI, UDP — now live in their plugin repositories. The docs build discovers those repositories by topic, fetches one file from each, and links it automatically. The site pulls; nothing pushes at it, and the destination path is derived from the repository name, so a plugin contributes exactly one file at one path it does not choose.

Nothing on the site changes as a result — the pages moved verbatim.

Two stale preview marks removed

TacticalAPI's node in the protocol diagram was dashed, from when it was a preview entry in May. It has been on nuget.org since. The cruise-ship deployment card carried a "preview" ribbon whose note said the multi-user and OIDC story was still being delivered; v2.6 shipped it, Kuestenlogik.Bowire.Auth.Oidc ships as a first-party provider, and v2.6.1 moved the last browser-only piece into the identity's slot.

A stale preview mark is not neutral — it tells people not to rely on something they could have relied on for months.

AsyncAPI is filed as a discovery source

Its page describes a schema format Bowire reads, not a protocol Bowire speaks, which is why it appeared in neither the protocol diagram nor the protocol table. It had also been orphaned since May — reachable by URL, findable by search, unreachable by clicking. It now sits under Making requests, next to Auto-discovery.

Upgrading

Drop-in. Nothing in this release changes behaviour you can configure.


The full commit list, contributors, and compare-URL diff are auto-generated below.

Fixed

  • recordings — the correlation scanner claimed a surface it did not walk (fffb768)

Documentation

  • release — notes for v2.6.2 (08d7856)
  • file AsyncAPI as the discovery source it is, not as a protocol (06d03a7)
  • let protocol plugins own the page that describes them (5e1548c)
  • protocols — MQTT and SOAP document the settings they declare (cd19c34)

Other

  • docs+site: drop two preview marks that outlived what they marked (1cfacce)
Maintenance — 5 maintenance commits
  • roadmap — sync from Project board (2c49625)
  • recordings — the interpretation tests asserted through a filter I had not read (9ed85bd)
  • roadmap — sync from Project board (b4926e0)
  • ci — the publish-failure reporter crashed, and the skip did not skip (aa0a7eb)
  • roadmap — sync from Project board (d9f7719)

Contributors: Thomas Stegemann

Full diff: v2.6.1...v2.6.2