What's new in flua — 0.1.127 through 0.1.137

Eleven releases in five days — the usual changelog is in the repo, but here is the human version of what actually changed and why you should care. The short version: the VS Code extension grew up, proxy mode stopped mangling your UI text, and a pile of small things stopped being annoying.

The big one: flua lives inside VS Code now

flua started as a command-line engine — and stays one, because agents and scripts need that. But the releases from 0.1.136 on add the app layer on top: a flua icon in the activity bar with an HC3 hub view.

Everything the tree does is a --tool command first (hubList, house, hub), so agents get the same surface as the GUI — that's the design rule, and it holds.

Proxy mode: your UI text stopped turning into garbage

Several releases hardened proxy mode — the QA runs on your laptop while the device lives on the HC3. The headline fix: non-ASCII survives. UI labels with ▲ ▼ °C ∞ were being stored by the HC3 as mangled Latin-1 whenever flua escaped them as JSON sequences; flua now sends raw UTF-8 everywhere, uploads and updates alike. Related fixes landed around it: updateView and updateProperty from the proxy now reach the live HC3 UI through the proxy's own QA, half-created devices from failed uploads are reported instead of piling up, proxy cleanup failures abort with a clear message, and a firmware that answers uploads with a bare id or Latin-1-encoded text is handled.

Two developer niceties in the same stretch: _FLUA.mainPath gives a QA the directory its main file lives in, so io.open(_FLUA.mainPath .. "zones.json") finds sibling data files from any working directory; and one HC3 quirk is now documented in the notes (the classic web UI does not re-render a slider's value on updateView — the new mobile view does, and a reload shows the stored value, so it's a display bug, not your code).

Small fixes you will feel

Under the hood

CI runs the suite on Python 3.11–3.15; the 3.15 track was 3× slower because it compiled lupa from source every run — a poisoned cache held a lupa version flua deliberately excludes. Fixed and pinned; the track now runs in ~1m15s like the others. And the project's positioning got written down: flua is the engine, wizards and views are apps on top of it — the extension is the first one, not the last.

The full series lives in the forum index (posts 01–32) — the newest, "Your QA workflow inside VS Code", shows the extension's pieces in action. If something here misbehaves for you, the troubleshooting post tells you where to look first, and the feedback loop post tells you how to make it our problem, not yours.