github maziggy/bambuddy v0.2.0

7 hours ago

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

Reduce Log Noise (#365, #374)

  • 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)

Don't miss a new bambuddy release

NewReleases is sending notifications on new releases.