Three fixes, all found by users reading the code or their own device logs.
H5310 temperatures above 36.7 °C were wrong by 25.6 °C
The gateway frame decode used byte 13 alone. It's actually a 9-bit value, with the low bit of byte 14 as the carry:
T[°C] = (byte13 + 256 × (byte14 & 1) + 112) / 10
Above 36.7 °C the byte wrapped, so 39.0 °C was reported as 13.4 °C.
@dkalweit captured the rollover directly — 36.7 °C at b13=FF b14=82, 36.8 °C at b13=00 b14=83 — which is about as clean as protocol evidence gets. Verified against every other capture we hold: the 30 labelled frames the original formula came from still decode within 0.10 K, and a cross-account reading from a third device still lands exactly.
It also removed a guard I'd added that discarded 0x00 and 0xFF at byte 13 as no-data markers. That was inference on my part; their capture shows both are real temperatures at exactly the rollover, so the guard would have thrown away the readings either side of it.
This was @dkalweit's first pull request anywhere (#180).
An expired account sign-in could still break MQTT publishing, invisibly
v2026.8.4 fixed this for the account device-list calls. Two holes remained, and together they made an expired token both invisible and unrecoverable.
Device topics weren't covered (#178). That call uses a different Govee endpoint with its own response shape, and it wasn't included in the earlier fix. An expired token there returned an empty topic list rather than an error, so every MQTT publish — ptReal control, gateway relays — was refused permanently, across restarts. Nothing surfaced: MQTT stays connected on its certificates, and all Developer-API control keeps working, so only the publish features die. And because nothing raised, the automatic re-login never ran.
Reconfigure discarded the credentials it had just obtained (#179). The flow logged in, cached the fresh token, and then wrote a snapshot taken before that back over it. You'd see "Reconfiguration successful" and still hold the expired token — so the obvious way to fix the problem above silently didn't.
Both reported by @JohnAposto83, who read the code on main and cited exact lines. There turned out to be two places doing the reconfigure overwrite, not one; the second was only found because an end-to-end test still failed after the first was fixed. Both now share one helper so they can't diverge again.
Upgrading
No action needed. If MQTT publishing had stopped for you, updating restores it — and if your account sign-in needs attention, you'll now get a repair notification rather than silence.
Full Changelog: v2026.8.6...v2026.8.7