Note
This is a daily beta build (2026-03-05). It contains the latest fixes and improvements but may have undiscovered issues.
Docker users: Update by pulling the new image:
docker pull ghcr.io/maziggy/bambuddy:0.2.2b2
or
docker pull maziggy/bambuddy:0.2.2b2
**Tip:** Use [Watchtower](https://containrrr.dev/watchtower/) to automatically update when new daily builds are pushed.
New Features
- AMS Info Card & Custom Labels (#570) — Hovering an AMS label (e.g. "AMS-A") on the Printers page now shows a popover with serial number, firmware version, and an editable friendly name. Custom labels are stored by AMS serial number so they persist when the unit is moved to a different printer. Slot numbers are now displayed inside each filament color circle with auto-inverted contrast for readability. Labels also appear in the Inventory page's location column. Contributed by @cadtoolbox.
Improved
- Install Script: Branch Selection — The native install script (
install.sh) now supports a--branchoption and an interactive branch prompt (defaults tomain). Previously the script hardcodedorigin/main, so beta testers told to install from a beta branch would silently get the stable release instead. Fresh installs usegit clone --branch, existing installs checkout and reset to the selected branch. The install summary highlights non-main branches in yellow with a "(beta)" label. Invalid branch names are caught early with an error message listing available branches. - Print Queue Scheduler Diagnostics (#616) — Added diagnostic logging to the print queue scheduler to help diagnose why queued prints aren't starting. After each queue check, the scheduler now logs a skip summary (how many items were skipped due to manual_start, scheduled_time, etc.) and for each busy printer, logs the exact state preventing it from being considered idle (connected status, printer state, plate_cleared flag). Previously the scheduler only logged "found N pending items" with no visibility into why items were skipped.
Fixed
- Python 3.10 Compatibility — Bambuddy failed to start on Python 3.10 with
ImportError: cannot import name 'StrEnum' from 'enum'becauseenum.StrEnumwas added in Python 3.11. Added a compatibility shim that falls back to(str, Enum)on Python < 3.11, matching the documented requirement of Python 3.10+. - Bug Report Bubble Overlapping Toasts — Moved toast notifications and upload progress up so they stack above the bug report bubble instead of overlapping on top of each other.
- Virtual Printer: Bind-TLS Proxy Handshake Failure on OpenSSL 3.x — The TLS proxy connecting to the printer's bind port (3002) failed with
SSLV3_ALERT_HANDSHAKE_FAILUREon systems with OpenSSL 3.x (e.g. Python 3.12+) because the default cipher set excludes plain RSA key exchange, which is the only mode Bambu printers support. AddedAES256-GCM-SHA384andAES128-GCM-SHA256to the client SSL context's cipher list. - Windows: Server Shuts Down After 60 Seconds (#605) — On Windows, terminating orphaned ffmpeg camera processes broadcast
CTRL_C_EVENTto the entire process group, causing uvicorn to interpret it as a user-initiated shutdown. ffmpeg is now spawned in its own process group (CREATE_NEW_PROCESS_GROUP) so cleanup no longer affects the server. Reported by @Reactantvr. - Multi-Printer Filament Mapping Shows Wrong Nozzle Filaments on Dual-Nozzle Printers (#624) — When selecting multiple printers for a print job on dual-nozzle printers (H2D), the per-printer filament mapping override dropdown showed filaments from both nozzles instead of only the correct nozzle for each slot. The single-printer filament mapping (FilamentMapping.tsx) was fixed in v0.2.1 to filter by
nozzle_id, but the multi-printer path (InlineMappingEditor in PrinterSelector.tsx) was missed. Both the auto-match logic and the dropdown options now filter bynozzle_id, matching the single-printer behavior. Reported by @cadtoolbox.