v0.2.0
Bambuddy v0.2.0 Release Notes
Highlights
Spool Inventory with AMS slot assignment and 3MF-based usage tracking, print queue clear plate confirmation, print log timeline, dual-nozzle AMS mapping improvements, timelapse management, notification thumbnails, and 30+ bug fixes including phantom prints, inventory weight corruption, and universal slicer-initiated print tracking.
New Features
Spool Inventory — AMS Slot Assignment, Weight Editing & 3MF-Based Usage Tracking (#336)
- Built-in spool inventory with AMS slot assignment — hover over any non-Bambu-Lab slot to assign/unassign spools
- Edit remaining filament weight when adding or editing a spool
- All spools (Bambu Lab and third-party) now use 3MF slicer estimates as the primary tracking source
- Per-filament used_g from archived 3MF provides precise per-spool consumption
- Failed prints use per-layer G-code analysis for accurate partial usage up to the exact failure layer
- AMS remain% delta is the final fallback for G-code-only prints
Notification Templates — Filament Usage Variables (#336)
- {filament_grams}, {filament_details}, and {progress} variables for print_complete, print_failed, and print_stopped events
- Per-filament breakdown with AMS slot info (e.g. "AMS-A T1 PLA: 12.4g | AMS-A T3 PETG: 2.8g")
- Webhook payloads include filament_used, filament_details, and progress fields
Print Queue: Clear Plate Confirmation (#410)
- When a print finishes or fails and more items are queued, the printer card shows a "Clear Plate & Start Next" button
- Scheduler no longer auto-starts the next print — user must confirm the plate has been cleared first
- State persists across page refresh via the printer status API
Print Log
- New timeline view on the Archives page showing chronological table of all print activity
- Columns: date/time, print name, printer, user, status, duration, filament
- Filtering by search text, printer, user, status, and date range with configurable pagination
Bed Cooled Notification (#378)
- New notification event when the bed cools below a configurable threshold (default 35°C) after a print completes
- Background task polls bed temperature every 15 seconds; cancels on new print or disconnect
Printer Status Summary Bar — Next Available & Availability Count (#354)
- Status bar shows "X available" count and "Next available" indicator with printer name, progress bar, and remaining time
- Real-time updates via WebSocket
Nozzle-Aware AMS Filament Mapping for Dual-Nozzle Printers (#318)
- Reads nozzle assignments from 3MF and constrains filament matching to AMS trays on the correct nozzle via ams_extruder_map
- Applies to print scheduler, reprint modal, queue modal, and multi-printer selection
- L/R nozzle badges shown in filament mapping UI
**Dual External Spool Support **
- Two external spool holders (Ext-L and Ext-R) fully supported with grid display
- Applies to printer card, filament mapping, print scheduler, usage tracking, and inventory
AMS Slot Configuration — Model Filtering & Pre-Population
- Configure modal filters filament presets by connected printer model
- Re-configuring pre-selects the saved preset, color, and active K-profile
Notification Thumbnails for Telegram & ntfy (#372)
- Print thumbnails now attached to Telegram (sendPhoto API) and ntfy (binary PUT) notifications automatically
Clear HMS Errors
- New "Clear Errors" button in HMS error modal sends clean_print_error MQTT command
- Permission-gated to printers:control
Sync Spool Weights from AMS
- Force-sync all inventory spool weights from live AMS remain% values in Settings → Filament Tracking
External Links: Open in New Tab (#338)
- External sidebar links can optionally open in a new tab instead of an iframe — fixes sites with X-Frame-Options: SAMEORIGIN
K-Profiles View — Accurate Filament Name Resolution
- Filament names resolved from builtin tables and user cloud presets instead of raw IDs like "GFU99"
Improved
Virtual Printer: Port 3000 Bind/Detect Server
- BambuStudio/OrcaSlicer now require a bind/detect handshake on port 3000 — added BindServer for all server modes
- Docker users in bridge mode need -p 3000:3000
Timelapse — AVI Format Support & Upload/Remove (#405, #406)
- P1-series .avi timelapses now detected; auto-converted to MP4 via FFmpeg in background
- New "Upload Timelapse" and "Remove Timelapse" context menu items for manual correction
Skip Objects: Click-to-Enlarge Lightbox (#396)
- Clicking the skip objects image opens a fullscreen lightbox (up to 600px)
Skip Objects: Confirmation Dialog (#346)
- Warning modal before skipping an object — shows name and warns action is irreversible
SQLite WAL Mode for Database Reliability
- Write-Ahead Logging with 5-second busy timeout reduces "database is locked" errors
- 58 MQTT diagnostic messages downgraded from INFO to DEBUG
- Debug log volume reduced ~90% by suppressing sqlalchemy/aiosqlite noise
- Print command tracing added for phantom print investigation
External Camera Not Used for Snapshot + Stream Dropping (#325)
- Snapshot endpoint now checks external camera first; MJPEG/RTSP streams retry on timeout instead of dropping
Default Color Catalog Expanded to 638 Colors Across 20 Brands
- Added Overture, Sunlu, Creality, Elegoo, Jayo, Inland, Eryone, ColorFabb, Fillamentum, FormFutura, Fiberlogy, MatterHackers, Protopasta, 3DXTECH, Sakata3D
Additional Currency Options (#329, #333)
- 17 additional currencies: HKD, INR, KRW, SEK, NOK, DKK, PLN, BRL, TWD, SGD, NZD, MXN, CZK, THB, ZAR, RUB
Other Improvements
- File downloads preserve original filenames with special characters (#334)
- Printer card cover image updates between prints without page reload
- Telegram bold formatting no longer breaks on underscores (#332)
- Nozzle rack text uses dark color on light filament backgrounds (#300)
- Email settings moved under Authentication tab
- Inventory confirmation modals for delete & archive actions
- Usage tracking diagnostic logging for mapping investigation (#364)
Fixed
- Phantom Prints on Power Cycle (#374) — Uploaded 3MF files left on SD card root caused auto-start on reboot; now deleted after print completion with retry logic
- Inventory Spool Weight Resets After Print — AMS remain% sync no longer overwrites precise usage-tracker values; also handles remain=0 on printer power-off
- Spool Edit Form Overwrites Usage-Tracked Weight — Form only includes weight_used when explicitly changed
- Inventory Usage Wrong Tray for Slicer-Initiated Prints (#364) — Now subscribes to MQTT request topic to capture ams_mapping from any source (BambuStudio, OrcaSlicer,
Bambu Handy); fail-safe for printers that reject the subscription - Inventory Usage Not Tracked for Remapped AMS Slots (#364) — Reprint/library/queue AMS mappings now stored and used as highest-priority source
- Queue Items Stuck in "Printing" After Print Completes — Queue status update moved before archive lookup early return
- 3MF Usage Tracking Broken for Queue Prints from File Manager (#364) — Scheduler now creates archive from library file before uploading
- Queued Jobs Incorrectly Skipped After Duplicate Detection (#341) — Removed overly broad 4-hour duplicate detection check
- Schedule Print Allows No Plate Selected for Multi-Plate Files (#394) — Auto-selects first plate by default
- Queue Widget Shows "Archive #null" for File Manager Prints (#364) — Falls back to library_file_name
- Archive Duplicate Badge Misses Name-Based Duplicates (#315) — Now also matches by print name
- Loose Archive Name Matching (#374) — Tightened to exact print_name match
- Reprint Fails for Archives Without 3MF (#376) — Backend returns clear error; frontend disables buttons with tooltip
- Update Check Runs When Disabled (#367) — Backend returns early when setting is disabled
- Archive List View Not Labeling Failed Prints (#365) — Added inline status badge
- AMS Slot Configuration Overwritten on Startup — Compares spool RFID before unlinking; preserves existing assignments
- AMS Slot Configure Overwrites RFID Spool State — Skips filament setting command for RFID spools
- K-Profile Selection Corrupts Existing Profiles on X1C/P1S — Removed problematic setting_id field
- Bambu Lab Spool Detection False Positives — Uses only RFID identifiers, not tray_info_idx
- AMS Slot Configure — Black Color Not Pre-Populated — Removed unnecessary hex 000000 guard
- Spool Form Scrollbar Flicker in Edge (#364) — Added scrollbar-gutter: stable
- Stale Inventory Assignments After Switching to Spoolman — Bulk-deletes assignments on mode switch
- Bulk Archive Delete Race Condition — Database record deleted first, files after commit
- Maintenance Tasks Wrong Rod Type (#351) — Carbon rods for X1/P1/P2S, linear rails for A1/H2
- FTP Disconnect Raises EOFError — Now catches EOFError alongside OSError and ftplib.Error
- RFID Spool Data Erased by AMS Updates — tag_uid/tray_uuid preserved during periodic updates
- Spool Assignments Falsely Unlinked Due to Color Variation — Color similarity function with tolerance threshold instead of exact hex match
- Firmware Upload Uses Wrong Filename on Cache Hit — Caches using original filename
Testing
- Mock FTPS Server & 67 FTP Test Cases — Covers every known FTP failure mode: connection, upload (chunked transfercmd), download, model-specific behavior (X1C session
reuse, A1 prot_c fallback), and failure injection - Nozzle Rack Tests — 7 backend tests (MQTT parsing) + 3 frontend tests (rack rendering)
Community Contributors
Thank you to everyone who contributed to this release!
- @Keybored02 (Matteo Parenti) — Storage usage metering (#383), material mismatch check (#361), spool card improvements & Italian locale (#360), soft-delete for
maintenance tasks (#359), R nozzle hover card filament info (#357), archive card clipping fix (#387), mobile view fix (#382) - @aneopsy (AneoPsy) — Queue plate name display (#401), currently printing job details (#395), queue weight display (#356), 3MF usage tracking tests
- @sbcrumb (SBCrumb) — Discord notification thumbnails (#350), duplicate HMS error fix (#348)
- @devzwf (DevZwF) — French localization (#353)
- @bnap00 (Bharat Parsiya) — Currency symbol handling (#331)
- @jeffsf (Jeff Kletsky) — Clean MQTT/smart plug shutdown (#328), external camera cleanup (#330)
- @nmori (Mori Naoyuki) — Windows launcher fix (#381)