Skip to content

Compatibility matrix

Known-good tuples: combinations that were actually run together, not combinations that should theoretically work.

Release Firmware Server App MQTT API
v0.2 "Field Trial" 1.4.x 1.x.x 1.8.x v1 v1

Append rows. Never edit a shipped one.

A row describes a combination that exists in the world — on a board in a field, or on a phone someone hasn't updated. Editing it doesn't change that reality, it just destroys the record of it. If something turns out to be wrong or a combination stops being supported, add a new row and annotate the old one. Never rewrite history here.

Reading this table

The MQTT and API columns are the interface versions that release speaks — the payload major integer and the HTTP path version. They move far more slowly than the component versions next to them, and that's the point: a v1 payload from 1.4.x firmware is still a v1 payload two server releases later.

v1 is nominal today

Neither interface carries its version explicitly yet: the MQTT payload has no version field and the API is served under /api/… with no version segment. v1 in these columns means "the first and so far only shape of that interface" — it is a label this matrix applies, not a value you can read off a message or a URL. Once the versioning scheme lands, these columns start recording something the wire itself declares.

Component versions are x.y.z ranges because patch releases don't change the interface. If a patch release did change the interface, that was a mistake in the patch release.