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 .alog that 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 RETURNING write: 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.