Skip to content

v2.11.0

Latest

Choose a tag to compare

@github-actions github-actions released this 18 Jul 18:19

Highlights

Canvas (AMS) support lands for the Centauri Carbon (CC1) — per-slot filament sensors, active tray, and filament colors, matching the existing CC2 experience. Legacy/MQTT-transport printers (e.g. Mars 4 Ultra) can now optionally use an external MQTT broker. And WebSocket discovery finally handles hostnames correctly.

What's New

  • CC1 Canvas / AMS support — per-slot filament sensors, active tray, and filament colors on the Centauri Carbon, sharing the same entity structure as the CC2. Canvas presence is auto-detected at setup and stored per printer; a manual toggle is available in both the setup and options flows as a fallback. (#389)
  • Per-slot filament usage sensors for the CC1 via the gcode capture proxy. The proxy URL is now configured in the WebSocket printer options and works with or without a Canvas installed. (#389)
  • External MQTT broker support for legacy/MQTT-transport printers — two new optional fields (mqtt_external_host, mqtt_external_port) let you point the integration at an existing Mosquitto-style broker instead of always starting the embedded one. (#390)
  • New FDM print states reported verbatim from the printer — auto leveling, resonance testing, preheating / homing / leveling completed, auto feeding, and filament unload — with an explicit unrecognized fallback so unknown codes can no longer freeze the status sensor. (#389)

Fixes

  • FDM print status codes now map 1:1 from the printer's own FDM status table instead of being approximated through resin states. Mid-print milestones no longer surface as misleading states like "leveling". (#389)
  • CC1 print status no longer sticks on a stale state for the remainder of a job when the printer holds an unmapped milestone code. (#389)
  • WebSocket discovery now resolves configured hostnames to their IPv4 address before comparing with discovery results, and options updates validate the newly submitted address instead of the previously stored one. (#391)
  • MQTT / legacy transport — the M66666 redirect command no longer hardcodes the broker host as localhost (which resolved against the printer's own loopback, not Home Assistant), preventing the printer from reaching the embedded broker and causing setup to time out and retry indefinitely. (#390)
  • Canvas auto-detection in setup is now bounded by a timeout, so a device that accepts connections but never answers can no longer hang the config flow. (#389)

Configuration migration

Config entries migrate automatically (v4 → v5) to record the per-printer Canvas flag. No action needed. (#389)

Documentation

  • docs/CC2_PROTOCOL.md cross-referenced against the open-source Klipper fork, the elegoo-link SDK, and ElegooSlicer — corrected inaccuracies, filled gaps, and verified undocumented MQTT fields via live capture (including the bed_mesh_detect rename, the gcode_movegcode_move_inf transformation, and the Canvas safety fields that are not published over MQTT). (#388)
  • SPOOLMAN.md expanded with per-slot Spoolman remaining-weight template sensors, a cascade spool-drain script that handles multi-spool print jobs, and the previously-missing "Cache 3D Print Filename" automation for the CC1. (#388)
  • README.md proxy description rewritten with a concrete explanation of why the proxy is needed (per-slot data only lives in G-code, not on the printer). (#388)

Welcome to our new contributors! 🎉

Huge thanks to @echo-bravo-yahoo for their first contribution. They diagnosed the MQTT / legacy transport localhost bug end-to-end against a physical Mars 4 Ultra, traced it to the M66666 redirect hardcoding localhost (which resolves against the printer, not Home Assistant), and went the extra mile by adding optional external broker support for anyone who'd rather use their own Mosquitto (or similar) over the embedded one. Verified manually against real hardware and shipped with tests. (#390)

And a warm welcome to @Manuel-S (Manuel Schweigert) for their first contribution. Manuel caught a subtle but real WebSocket discovery bug where printers configured by hostname were being rejected because discovery returned their IPv4 address. The fix resolves configured hostnames before comparison, accepts either form, validates the newly submitted address in the options flow, and gracefully handles DNS failure. Tested and shipped. (#391)

Also thanks to

  • @lantern-eight — delivered the headline feature of this release (CC1 Canvas / AMS support, the FDM print-status table rewrite, and the gcode capture proxy integration), plus a massive cross-referenced documentation update bringing CC2_PROTOCOL.md and SPOOLMAN.md up to date against the open-source Klipper fork and live MQTT captures. The kind of dual contribution that genuinely makes the project better. (#389, #388)

Full Changelog: v2.10.2...v2.11.0