v0.2.1b
Highlights
- Multiple Virtual Printers — Run multiple virtual printers per installation, each with a dedicated bind IP and fully independent FTP/MQTT/SSDP/Bind servers
- AMS Mapping Fixes (7 bugs) — Major fix pass for dual-nozzle (H2D/H2D Pro) and multi-AMS printers: nozzle filtering, external spool extruder, AMS-HT tray IDs, extruder map race conditions
- Usage Tracking Accuracy — Decoded the MQTT mapping field for correct spool tracking on multi-AMS/dual-nozzle printers; fixed cancelled print stale progress; color-matching fallback for printers without mapping data
- PFUS Preset ID Resolution — User-local PFUS* preset IDs no longer cause the slicer to reset AMS slot configuration; replaced with generic Bambu IDs or reused cloud-synced or local presets
- Clear Plate Permission — New dedicated permission for confirming plate cleared, separate from full printer control
New Features
- Multiple Virtual Printers (#445) — Each virtual printer gets a dedicated bind IP with completely independent FTP, MQTT, SSDP, and Bind servers. Full CRUD API and React UI. Supports all four modes, any of the 11 printer models, per-instance TLS certificates, and individual network interface override.
- Dual Bind/Detect Ports (#445) — The slicer bind/detect handshake now listens on both ports 3000 and 3002 for compatibility with different BambuStudio/OrcaSlicer versions.
- Clear Plate Permission (#446) — New printers:clear_plate permission allows granting plate-clear access without full printers:control. Existing groups with printers:control automatically receive it on startup.
- Full-Page Group Permission Editor (#446) — Replaced the cramped permission modal with a dedicated full-page editor featuring a 2-column grid, search/filtering, Select All / Clear All, and category-level checkboxes with partial state.
- Brazilian Portuguese Translation (#421) — Full pt-BR locale added by @wreuel.
- H2D Pro Printer Support (#436) — Added H2D Pro printer image and model mapping by @cimdDev.
- Native Updater Script (#434) — Systemd-based updater script with backup and safety checks by @uefigs139.
- Docker iptables Route Option (#388) — Option to include iptables route when installing via docker-install.sh by @wreuel.
Bug Fixes
- AMS Mapping Fixes (7 bugs) — Hard nozzle filter fallback, external spool extruder assignment, ams_extruder_map race condition, group_id priority in 3MF parsing, dual-nozzle detection, AMS-HT globalTrayId, dropdown nozzle filter (#364)
- H2D Tray Disambiguation Produces Bogus IDs for AMS-HT (#364) — AMS-HT units (IDs 128-135) now correctly use their unit ID as the global tray ID instead of computing ams_id * 4 + slot.
- Usage Tracking Wrong Spool on Multi-AMS Printers (#364) — Decoded MQTT mapping field from snow encoding for universal slot-to-tray mapping; color-matching fallback for printers without mapping data.
- PFUS Preset IDs Cause Slicer to Reset Slots — Replaced user-local PFUS* IDs with generic Bambu IDs (e.g., GFL99). Reuses existing cloud-synced presets when the material matches.
- Fill Level Bar Missing for Brand New Spools — Spools with weight_used = 0 now correctly show 100% fill level.
- HMS Flapping Notifications (#444) — Fixed flapping HMS error notifications by @sbcrumb.
- Print Queue Shows UUID Hash Instead of Filename (#438) — Library file prints now show the human-readable filename instead of the UUID.
- PAUSED State Never Matched (#447) — Removed dead PAUSED checks across frontend and backend; the printer only sends PAUSE via MQTT.
- Spool Form Allows Empty Brand & Subtype (#417) — Brand and Subtype are now mandatory fields with validation.
- Open in Slicer Fails When Auth Enabled (#433) — Fixed with short-lived, single-use download tokens.
- H2D Tray Disambiguation on Single-Nozzle Printers — No longer triggers false disambiguation on P2S, X1C, X1E.
- AMS-HT Snow Slot Mismatch Log Spam — Correctly computes snow_slot = 0 for AMS-HT single-slot units.
- Cancelled Print Uses Stale Progress — Captures last valid progress/layer during printing for accurate partial usage on cancellation.
Changed
- Filament Catalog API Renamed (#427) — /api/v1/filaments/ → /api/v1/filament-catalog/ to avoid confusion with the inventory spools page.
Improved
- Queue Mobile Responsiveness (#430) — Improved QueuePage mobile layout by @aneopsy.
- Show Remaining Spool Weight (#429) — Display remaining weight instead of used weight by @Keybored02.
- Date & File Size Formatting (#412) — Consolidated date and file formatting utilities by @aneopsy.
- Spool Catalog Entry ID Matching (#414) — Fixed core_weight_catalog_id handling by @Keybored02.
- i18n Label Updates — Updated remaining filament labels in multiple languages.
- Test Coverage — 63 AMS mapping tests, 28 tray disambiguation tests, 12 PFUS/tray_info_idx integration tests, 10 fill level frontend tests.
Community Contributors
Thank you to everyone who contributed to this release!
- @sbcrumb — HMS flapping notification fix (#444)
- @cimdDev — H2D Pro printer image (#436)
- @uefigs139 — Native updater script (#434)
- @aneopsy — Queue mobile UI, date/formatting refactor (#430, #412)
- @Keybored02 — Remaining weight display, spool catalog fix (#429, #414)
- @wreuel — Brazilian Portuguese translation, Docker iptables option (#421, #388)