Releases ·
Roastwarden 0.2.0
Everything since v0.1.0 (2026-03-02). rustRoast became a server-centric Artisan replacement: the server runs the roast (replay, alarms, fan assist, auto events) and any browser is a view.
Added
- Telemetry v2: typed samples, a 2 h in-memory ring, CBOR WebSocket with sequence numbers and gap-free catch-up after a reload or reconnect; one server-side RoR for every transport.
- Live scope on uPlot: phases, landmarks, projections, the profile with its RoR and Δ band, development guidance after first crack, time-axis views, tracking RMS.
- Profiles v2: heater feedforward points, events by time or BT, recorded background curves, save a roast as a profile, fluid-bed seed profiles (light filter, medium filter, light espresso). Profile pages read like an Artisan background; profiles keep beans, batch size and roaster.
- Artisan interop: import roasts and profiles from
.alog, export roasts and profiles to.alogthat Artisan opens as a roast or a background (Profiles); import and export alarm files (.alrm), with a row-by-row list of what does not map (Alarms and auto events). - Profile drive (replay engine): setpoint, feedforward or feedforward + PID; events by time or BT; align on CHARGE/TP/DRY/FC; ghost dry run; per-channel pause; a control lease that sends the roaster to safe if the server stops.
- Alarms in the server with actions on the roaster, arming, repeats, BT-vs-profile and lost-telemetry conditions, auto DRY and DROP, webhook and sound.
- Control: relay autotune with quality checks and history, PID gain schedule by fan, fan assist for a heat-limited roaster, heater and fan in percent end to end.
- Virtual roaster: a closed-loop simulator in the server, fitted to the real roaster, speaking the firmware's MQTT.
- Roast records: roast properties (purpose, colour, moisture, density, flags, rating), printable report, ranking table with CSV, comparator with a reference roast.
- Transports and setup: transport registry (MQTT, WebSocket, Modbus TCP, serial TC4), mDNS discovery, API-key auth, tracked migrations.
- Dashboard structure (
docs/ui-structure.md): Roast cockpit that fits the window with one next step per stage, History, Profiles, Roasters (tuning per roaster), Settings; global roaster picker and STOP; °C/°F; light and dark.
Changed
- A new look, "Chart paper": a chart recorder's paper and ink (carbon blue in dark, recorder-green paper in light), Atkinson Hyperlegible Next, ink-blue actions. Buttons, focus, go, selection and "where you are" have their own colour tokens.
- Pages moved to
/history,/roasters(one URL per roaster tab) and/settings/...; the old/sessions/...and/devices/...URLs redirect. - Heater and fan are percentages on the wire and in the API (firmware 3.3.0+).
Fixed
- The profile overlay no longer disappears during a virtual roast.
- Landmarks marked on one screen reach the others at once (the row was committed after the
broadcast). The same late commit is gone from every other
RETURNINGwrite: session create, start, pause, resume and complete, devices, device profiles, connections, cupping. - The auto turning point ignores samples before a late CHARGE, and a cold charge (BT never dips) gets no turning point instead of one at 0:00; the Roast page says why.
- Scope: landmark labels close together (Charge, Dry end on a phone) stack instead of overlapping, and event values along the bottom no longer pile up; projections wait 30 s after CHARGE and never fit across it, so they no longer swing right after charging.
- The Profile drive tab shows the drive's state and profile time (Live, Ghost, Paused).
- Saving a profile in the designer no longer clears its first-crack target.
- Artisan: 0 % burner and air events survive import; exported roasts no longer replace the extra-device setup of the Artisan that opens them.