Releases ·
Roastwarden 0.22.0
rustRoast now installs as one container: the server can run its own MQTT broker, with the same locked-down rules as the Mosquitto it shipped with, so a Raspberry Pi needs nothing but Docker, and a new install guide walks a new owner through it. Tested on arm64. The install test also found two problems now fixed: a data folder the server cannot write stops it with the fix in the message instead of running on a database in memory, and the broker restarts cleanly.
Added
- One container, with the server's own MQTT broker (Next 68, Install,
Running it, "One container"):
RUSTROAST_BROKER_ADDR=0.0.0.0:1883makes the server run its own broker (rmqtt as a library,broker.rs) and sign in to it itself, so an install on a Raspberry Pi is one container and no Mosquitto. The same rules as the shipped Mosquitto: no anonymous clients, the roasters inMQTT_DEVICESeach kept toroaster/<id>/#and reading the server's presence, retained messages kept in memory;MQTT_PASSWORDis optional.docker-compose.single.yml(host networking, so mDNS reaches the LAN; every.envvariable passed through) and it goes in each release's compose bundle withINSTALL.md, a step-by-step guide for a new owner.GET /api/aboutandroast statushavemqtt_broker(where it listens, which roasters may sign in); Settings → About says it on the MQTT line. Its passwords never reach the log, whateverRUST_LOGasks.
Fixed
rustroast_mqtt_connectedin/metricsread 0 while connected: the client connected before the loop that sets it subscribed to its events; it now starts from the client's state.- A database that cannot be opened stops the server instead of running on one in memory:
on a fresh install whose
data/folder the server (uid 999) could not write, it started normally with a single warning and would have lost every roast at the next restart (found installing on arm64). It now exits with the path and the fix (sudo chown 999:999 data); the owner-key error says the same. - The built-in broker binds again at once after a restart (
SO_REUSEADDR): without itdocker compose restartstopped the server with "address in use" for a minute. - The live-prediction test's CI flake (
a_running_roast_is_predicted_kept_and_scored): the background refit could fit a half-inserted history roast, a model that never reached first crack; the test now fits after its history is in, and says the last answer it saw when it fails. Production could not hit it. - The skill's receipt flow: a clean check on an order the owner asked to record is recorded at once (it stopped to ask before; eval tasks 47 and 50); eval task 46's setup hooks were missing. Eval tasks 46–51 pass on hermes.