Skip to content

v1.1.0-rc1

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 09 Aug 00:40
· 30 commits to main since this release

Dragon-family shared-core split, plus two new Klipper/HA integration paths.
DragonBreath is now a thin product layer over the shared
dragon-core foundation (network,
control-source selector, Bambu client, the dashboard SPA, and the MQTT client),
keeping the board, sensors, heater, safety policy, and product UI local. Existing
NVS keys, API routes, and OTA/recovery behavior are unchanged. Pre-release for
community + hardware validation
— the MQTT-Klipper and read-only-HA paths below are
new and not yet hardware-validated end-to-end.

Added

  • MQTT-only Klipper control source (RFC #66) — for locked/managed Klipper
    installs that can't add the dragonbreath-klipper extra. The device is commanded
    by printer.cfg macros over the printer's own Moonraker MQTT: a retained-aware
    arming
    contract (heat engages only on a fresh coherent seq and a live
    heartbeat; 3×5 s missed heartbeats force heat off + latch comms_lost; never arms
    from retained state), an M141 shim (non-blocking M191 alias), and a /setup
    group. GET /km-config generates the exact moonraker.conf + printer.cfg +
    Mosquitto ACL from your settings. Mutually exclusive with the other control
    sources. New — pending validation on a real locked Klipper install.
  • Read-only Home Assistant telemetry alongside a control source. HA can now run
    as a passive monitor concurrently with Bambu/Klipper — it auto-starts when an
    HA broker is configured but HA isn't the selected source, publishing MQTT-Discovery
    sensors (chamber/element temp, target, mode) without subscribing commands or taking
    a control lease. New — pending concurrent HA + source hardware validation.

Changed

  • Shared core extracted to dragon-core. The board-neutral event log,
    control-source selector, Bambu client, Wi-Fi/provisioning service, and Moonraker
    client now come from the pinned dragon-core dependency under the product-neutral
    dc_* namespace. Existing NVS namespaces and keys are preserved across the move.
  • Dashboard UI extracted to dragon-core (dc_ui). The STA-mode single-page
    dashboard now comes from the pinned dc_ui component — a capability-aware, shared
    Dragon-family SPA served as a reproducible embedded gzip — instead of a local
    pb_portal/www/app.html gzipped at build time. The portal owns only the HTTP
    response and routes; /setup, /fw, OTA/recovery, auth, and favicon stay
    product-local. Adds an additive GET /api/v2/infoui descriptor
    (schema / product / display_name) so the shared SPA adapts per product;
    older firmware without it is handled by the SPA's compatibility fallback.
  • MQTT clients unified on a shared, hardened dc_mqtt. The Bambu, Home
    Assistant, and Klipper-MQTT clients now share one dragon-core MQTT client with
    consistent locking and reconnect, replacing per-component esp-mqtt usage.

Install (no USB — recommended): on the stock Panda web UI ("Firmware Update"), upload dragonbreath-v1.1.0-rc1.bin. It installs as an app through the stock firmware's own OTA — the stock bootloader/partitions stay in place, so you can revert to Panda later over WiFi.
Update / revert (already on DragonBreath): upload dragonbreath-v1.1.0-rc1.bin via /fw; to return to Panda, upload your stock backup's app image via /fw.
Recovery only (USB): from a source checkout, python3 tools/flash.py (backs up stock first). The full/factory image is not published — build it locally if you need it.

Alpha/beta testers: if your unit was USB-flashed, restore your stock backup first, then install this via the stock updater — a stock-layout install can't be reached by OTA from a native-layout one.

asset purpose
dragonbreath-v1.1.0-rc1.bin application image — install via stock's OTA, or update/revert via /fw
manifest.json provenance (source SHA, ESP-IDF, vendored-core) + per-artifact SHA-256
SHA256SUMS.txt sha256sum -c SHA256SUMS.txt