# Changelog All notable changes to Bambuddy will be documented in this file. ## [0.1.6] - 2026-01-24 ### New Features - **External Link for Archives** - Add custom external links to archives for non-MakerWorld sources (Issue #151): - Link archives to Printables, Thingiverse, or any other URL - Globe button opens external link when set, falls back to auto-detected MakerWorld URL - Edit via archive edit modal - Included in backup/restore - **External Network Camera Support** - Add external cameras (MJPEG, RTSP, HTTP snapshot) to replace built-in printer cameras (Issue #143): - Configure per-printer external camera URL and type in Settings → Camera - Live streaming uses external camera when enabled - Finish photo capture uses external camera - Layer-based timelapse: captures frame on each layer change, stitches to MP4 on print completion - Test connection button to verify camera accessibility - **Recalculate Costs Button** - New button on Dashboard to recalculate all archive costs using current filament prices (Issue #120) - **Create Folder from ZIP** - New option in File Manager upload to automatically create a folder named after the ZIP file (Issue #121) - **Multi-File Selection in Printer Files** - Printer card file browser now supports multiple file selection (Issue #144): - Checkbox selection for individual files - Select All / Deselect All buttons - Bulk download as ZIP when multiple files selected - Bulk delete for multiple files at once ### Fixes - **Empty AMS Slot Not Recognized** - Fixed bug where removed spools still appeared in Bambuddy (Issue #147): - Old AMS: Now properly applies empty values from tray data updates - New AMS (AMS 2 Pro): Now checks `tray_exist_bits` bitmask to detect and clear empty slots - **Reprint Cost Tracking** - Reprinting an archive now adds the cost to the existing total, so statistics accurately reflect total filament expenditure across all prints - **HA Energy Sensors Not Detected** - Home Assistant energy sensors with lowercase units (w, kwh) are now properly detected; unit matching is now case-insensitive (Issue #119) - **File Manager Upload** - Upload modal now accepts all file types, not just ZIP files - **Camera Zoom & Pan Improvements** - Enhanced camera viewer zoom/pan functionality (Issue #132): - Pan range now based on actual container size, allowing full navigation of zoomed image - Added pinch-to-zoom support for mobile/touch devices - Added touch-based panning when zoomed in - Both embedded camera viewer and standalone camera page updated ## [0.1.6b11] - 2026-01-22 ### New Features - **Camera Zoom & Fullscreen** - Enhanced camera viewer controls: - Fullscreen mode for embedded camera viewer (new button in header) - Zoom controls (100%-400%) for both embedded and window modes - Pan support when zoomed in (click and drag) - Mouse wheel zoom support - Zoom resets on mode switch, refresh, or fullscreen toggle - **Searchable HA Entity Selection** - Improved Home Assistant smart plug configuration: - Entity dropdown replaced with searchable combobox - Type to search across all HA entities (not just switch/light/input_boolean) - Energy sensor dropdowns (Power, Energy Today, Total) are now searchable - Find sensors with non-standard naming that don't match the switch entity name - **Home Assistant Energy Sensor Support** - HA smart plugs can now use separate sensor entities for energy monitoring: - Configure dedicated power sensor (W), today's energy (kWh), and total energy (kWh) sensors - Supports plugs where energy data is exposed as separate sensor entities (common with Tapo, IKEA Zigbee2mqtt, etc.) - Energy sensors are selectable from all available HA sensors with power/energy units - Falls back to switch entity attributes if no sensors configured - Print energy tracking now works correctly for HA plugs (not just Tasmota) - New API endpoint: `GET /api/v1/smart-plugs/ha/sensors` to list available energy sensors - **Finish Photo in Notifications** - Camera snapshot URL available in notification templates (Issue #126): - New `{finish_photo_url}` template variable for print_complete, print_failed, print_stopped events - Photo is captured before notification is sent (ensures image is available) - New "External URL" setting in Settings → Network (auto-detects from browser) - Full URL constructed for external notification services (Telegram, Email, Discord, etc.) - **ZIP File Support in File Manager** - Upload and extract ZIP files directly in the library (Issue #121): - Drop or select ZIP files to automatically extract contents - Option to preserve folder structure from ZIP or extract flat - Extracts thumbnails and metadata from 3MF/gcode files inside ZIP - Progress indicator shows number of files extracted ### Fixed - **Print time stats using slicer estimates** - Quick Stats "Print Time" now uses actual elapsed time (`completed_at - started_at`) instead of slicer estimates; cancelled prints only count time actually printed (Issue #137) - **Skip objects modal overflow** - Modal now has max height (85vh) with scrollable object list when printing many items on the bed (Issue #134) - **Filament cost using wrong default** - Statistics now correctly uses the "Default filament cost (per kg)" setting instead of hardcoded €25 value (Issue #120) - **Spoolman tag field not auto-created** - The required "tag" extra field is now automatically created in Spoolman on first connect, fixing sync failures for fresh Spoolman installs (Issue #123) - **P2S/X1E/H2 completion photo not captured** - Internal model codes (N7, C13, O1D, etc.) from MQTT/SSDP are now recognized for RTSP camera support (Issue #127) - **Mattermost/Slack webhook 400 error** - Added "Slack / Mattermost" payload format option that sends `{"text": "..."}` instead of custom fields (Issue #133) - **Subnet scan serial number** - Fixed A1 Mini subnet discovery showing "unknown-*" placeholder; serial field is now cleared so users know to enter it manually (Issue #140) ## [0.1.6b10] - 2026-01-21 ### New Features - **Unified Print Modal** - Consolidated three separate modals into one unified component: - Single modal handles reprint, add-to-queue, and edit-queue-item operations - Consistent UI/UX across all print operations - Reduced code duplication (~1300 LOC removed) - **Multi-Printer Selection** - Send prints or queue items to multiple printers at once: - Checkbox selection for multiple printers in reprint and add-to-queue modes - "Select all" / "Clear" buttons for quick selection - Progress indicator during multi-printer submission - Ideal for print farms with identical filament configurations - **Per-Printer AMS Mapping** - Configure filament slot mapping individually for each printer: - Enable "Custom mapping" checkbox under each selected printer - Auto-configure uses RFID data to match filaments automatically - Manual override for specific slot assignments - Match status indicator shows exact/partial/missing matches - Re-read button to refresh printer's loaded filaments - New setting in Settings → Filament to expand custom mapping by default - **Enhanced Add-to-Queue** - Now includes plate selection and print options: - Configure all print settings upfront instead of editing afterward - Filament mapping with manual override capability - **Print from File Manager** - Full print configuration when printing from library files: - Plate selection for multi-plate 3MF files with thumbnails - Filament slot mapping with comparison to loaded filaments - All print options (bed levelling, flow calibration, etc.) - **File Manager Print Button** - Print directly from multi-selection toolbar: - "Print" button appears when exactly one sliced file is selected - Opens full PrintModal with plate selection and print options - "Add to Queue" button now uses Clock icon for clarity - **Multiple Embedded Camera Viewers** - Open camera streams for multiple printers simultaneously in embedded mode: - Each viewer has its own remembered position and size - New viewers are automatically offset to prevent stacking - Printer-specific persistence in localStorage - **Navigation persistence** - Open cameras stay open when navigating away and back to Printers page - **Application Log Viewer** - View and filter application logs in real-time from System Information page: - Start/Stop live streaming with 2-second auto-refresh - Filter by log level (DEBUG, INFO, WARNING, ERROR) - Text search across messages and logger names - Clear logs with one click - Expandable multi-line log entries (stack traces, etc.) - Auto-scroll to follow new entries - **Deferred archive creation** - Queue items from File Manager no longer create archives upfront: - Queue items store `library_file_id` directly - Archives are created automatically when prints start - Reduces clutter in Archives from unprinted queued files - Queue displays library file name, thumbnail, and print time - **Expandable Color Picker** - Configure AMS Slot modal now has an expandable color palette: - 8 basic colors shown by default (White, Black, Red, Blue, Green, Yellow, Orange, Gray) - Click "+" to expand 24 additional colors (Cyan, Magenta, Purple, Pink, Brown, Beige, Navy, Teal, Lime, Gold, Silver, Maroon, Olive, Coral, Salmon, Turquoise, Violet, Indigo, Chocolate, Tan, Slate, Charcoal, Ivory, Cream) - Click "-" to collapse back to basic colors - **File Manager Sorting** - Printer file manager now has sorting options: - Sort by name (A-Z or Z-A) - Sort by size (smallest or largest first) - Sort by date (oldest or newest first) - Directories always sorted first - **Camera View Mode Setting** - Choose how camera streams open: - "New Window" (default): Opens camera in a separate browser window - "Embedded": Shows camera as a floating overlay on the main screen - Embedded viewer is draggable and resizable with persistent position/size - Configure in Settings → General → Camera section - **File Manager Rename** - Rename files and folders directly in File Manager: - Right-click context menu "Rename" option for files and folders - Inline rename button in list view - Validates filenames (no path separators allowed) - **File Manager Mobile Accessibility** - Improved touch device support: - Three-dot menu button always visible on mobile (hover-only on desktop) - Selection checkbox always visible on mobile devices - Better PWA experience for file management - **Optional Authentication** - Secure your Bambuddy instance with user authentication: - Enable/disable authentication via Setup page or Settings → Users - Role-based access control: Admin and User roles - Admins have full access; Users can manage prints but not settings - JWT-based authentication with 7-day token expiration - User management page for creating, editing, and deleting users - Backward compatible: existing installations work without authentication - Settings page restricted to admin users when auth is enabled ### Changed - **Edit Queue Item modal** - Single printer selection only (reassigns item, doesn't duplicate) - **Edit Queue Item button** - Changed from "Print to X Printers" to "Save" ### Fixed - **File Manager folder navigation** - Fixed bug where opening a folder would briefly show files then jump back to root: - Removed `selectedFolderId` from useEffect dependency array that was causing a reset loop - Folder navigation now works correctly without resetting - **Queue items with library files** - Fixed 500 errors when listing/updating queue items from File Manager - **User preset AMS configuration** - Fixed user presets (inheriting from Bambu presets) showing empty fields in Bambu Studio after configuration: - Now correctly derives `tray_info_idx` from the preset's `base_id` when `filament_id` is null - User presets that inherit from Bambu presets (e.g., "# Overture Matte PLA @BBL H2D") now work correctly - **Faster AMS slot updates** - Frontend now updates immediately after configuring AMS slots: - Added WebSocket broadcast to AMS change callback for instant UI updates - Removed unnecessary delayed refetch that was causing slow updates ## [0.1.6b9] - 2026-01-19 ### New Features - **Add to Queue from File Manager** - Queue sliced files directly from File Manager: - New "Add to Queue" toolbar button appears when sliced files are selected - Context menu and list view button options for individual files - Supports multiple file selection for batch queueing - Only accepts sliced files (.gcode or .gcode.3mf) - Creates archive and queue item in one action - **Print Queue plate selection and options** - Full print configuration in queue edit modal: - Plate selection grid with thumbnails for multi-plate 3MF files - Print options section (bed levelling, flow calibration, vibration calibration, layer inspect, timelapse, use AMS) - Options saved with queue item and used when print starts - **Multi-plate 3MF plate selection** - When reprinting multi-plate 3MF files (exported with "All sliced file"), users can now select which plate to print: - Plate selection grid with thumbnails, names, and print times - Filament requirements filtered to show only selected plate's filaments - Prevents incorrect filament mapping across plates - Closes [#93](https://github.com/maziggy/bambuddy/issues/93) - **Home Assistant smart plug integration** - Control any Home Assistant switch/light entity as a smart plug: - Configure HA connection (URL + Long-Lived Access Token) in Settings → Network - Add HA-controlled plugs via Settings → Plugs → Add Smart Plug → Home Assistant tab - Entity dropdown shows all available switch/light/input_boolean entities - Full automation support: auto-on, auto-off, scheduling, power alerts - Works alongside existing Tasmota plugs - Closes [#91](https://github.com/maziggy/bambuddy/issues/91) - **Fusion 360 design file attachments** - Attach F3D files to archives for complete design tracking: - Upload F3D files via archive context menu ("Upload F3D" / "Replace F3D") - Cyan badge on archive card indicates attached F3D file (next to source 3MF badge) - Click badge to download, or use "Download F3D" in context menu - F3D files included in backup/restore - API tests for F3D endpoints ### Fixed - **Multi-plate 3MF metadata extraction** - Single-plate exports from multi-plate projects now show correct thumbnail and name: - Extracts plate index from slice_info.config metadata - Uses correct plate thumbnail (e.g., plate_5.png instead of plate_1.png) - Appends "Plate N" to print name for plates > 1 - Closes [#92](https://github.com/maziggy/bambuddy/issues/92) ## [0.1.6b8] - 2026-01-17 ### Added - **MQTT Publishing** - Publish BamBuddy events to external MQTT brokers for integration with Home Assistant, Node-RED, and other automation platforms: - New "Network" tab in Settings for MQTT configuration - Configure broker, port, credentials, TLS, and topic prefix - Real-time connection status indicator - Topics: printer status, print lifecycle, AMS changes, queue events, maintenance alerts, smart plug states, archive events - **Virtual Printer Queue Mode** - New mode that archives files and adds them directly to the print queue: - Three modes: Archive (immediate), Review (pending list), Queue (print queue) - Queue mode creates unassigned items that can be assigned to a printer later - **Unassigned Queue Items** - Print queue now supports items without an assigned printer: - "Unassigned" filter option on Queue page - Unassigned items highlighted in orange - Assign printer via edit modal - **Sidebar Badge Indicators** - Visual indicators on sidebar icons: - Queue icon: yellow badge with pending item count - Archive icon: blue badge with pending uploads count - Auto-updates every 5 seconds and on window focus - **Project Parts Tracking** - Track individual parts/objects separately from print plates: - "Target Parts" field alongside "Target Plates" - Separate progress bars for plates vs parts - Parts count auto-detected from 3MF files ### Fixed - Chamber temp on A1/P1S - Fixed regression where chamber temperature appeared on printers without sensors in multi-printer setups - Queue prints on A1 - Fixed "MicroSD Card read/write exception error" when starting prints from queue - Spoolman sync - Fixed Bambu Lab spool detection and AMS tray data persistence - FTP downloads - Fixed downloads failing for .3mf files without .gcode extension - Project statistics - Fixed inconsistent display between project list and detail views - Chamber light state - Fixed WebSocket broadcasts not including light state changes - Backup/restore - Improved handling of nullable fields and AMS mapping data ## [0.1.6b7] - 2026-01-12 ### Added - **AMS Color Mapping** - Manual AMS slot selection in ReprintModal, AddToQueueModal, EditQueueItemModal: - Dropdown to override auto-matched AMS slots with any loaded filament - Blue ring indicator distinguishes manual selections from auto-matches - Status indicators: green (match), yellow (type only), orange (not found) - Shared color utility with ~200 Bambu color mappings - Fixed AMS mapping format to match Bambu Studio exactly - **Print Options in Reprint Modal** - Bed leveling, flow calibration, vibration calibration, first layer inspection, timelapse toggles - **Time Format Setting** - New date utilities applied to 12 components, fixes archive times showing in UTC - **Statistics Dashboard Improvements** - Size-aware rendering for PrintCalendar, SuccessRateWidget, TimeAccuracyWidget, FilamentTypesWidget, FailureAnalysisWidget - **Firmware Update Helper** - Check firmware versions against Bambu Lab servers for LAN-only printers with one-click upload - **FTP Reliability** - Configurable retry (1-10 attempts, 1-30s delay), A1/A1 Mini SSL fix, configurable timeout - **Bulk Project Assignment** - Assign multiple archives to a project at once from multi-select toolbar - **Chamber Light Control** - Light toggle button on printer cards - **Support Bundle Feature** - Debug logging toggle with ZIP generation for issue reporting - **Archive Improvements** - List view with full parity, object count display, cross-view highlighting, context menu button - **Maintenance Improvements** - wiki_url field for documentation links, model-specific Bambu Lab wiki URLs - **Spoolman Integration** - Clear location when spools removed from AMS during sync ### Fixed - Browser freeze from CameraPage WebSocket - Project card filament badges showing duplicates and raw color codes - Print object label positioning in skip objects modal - Printer hour counter not updated on backend restart - Virtual printer excluded from discovery - Print cover fetch in Docker environments - Archive delete safety checks prevent deleting parent dirs ## [0.1.6b6] - 2026-01-04 ### Added - **Resizable Printer Cards** - Four sizes (S/M/L/XL) with +/- buttons in toolbar - **Queue Only Mode** - Stage prints without auto-start, release when ready with purple "Staged" badge - **Virtual Printer Model Selection** - Choose which Bambu printer model to emulate - **Tasmota Admin Link** - Quick access to smart plug web interface with auto-login - **Pending Upload Delete Confirmation** - Confirmation modal when discarding pending uploads ### Fixed - Camera stream reconnection with automatic recovery from stalled streams - Active AMS slot display for H2D printers with multiple AMS units - Spoolman sync matching only Bambu Lab vendor filaments - Skip objects modal object ID markers positioning - Virtual printer model codes, serial prefixes, startup model, certificate persistence - Archive card context menu positioning ## [0.1.6b5] - 2026-01-02 ### Added - **Pre-built Docker Images** - Pull directly from GitHub Container Registry (ghcr.io) - **Printer Controls** - Stop and Pause/Resume buttons on printer cards with confirmation modals - **Skip Objects** - Skip individual objects during print without canceling entire job - **Spoolman Improvements** - Link Spool, UUID Display, Sync Feedback - **AMS Slot RFID Re-read** - Re-read filament info via hover menu - **Print Quantity Tracking** - Track items per print for project progress ### Fixed - Spoolman 400 Bad Request when creating spools - Update module for Docker based installations ## [0.1.6b4] - 2026-01-01 ### Changed - Refactored AMS section for better visual grouping and spacing ### Fixed - Printer hour counter not incrementing during prints - Slicer protocol OS detection (Windows: bambustudio://, macOS/Linux: bambustudioopen://) - Camera popup window auto-resize and position persistence - Maintenance page duration display with better precision - Docker update detection for in-app updates ## [0.1.6b3] - 2025-12-31 ### Added - Confirmation modal for quick power switch in sidebar ### Fixed - Printer hour counter inconsistency between card and maintenance page - Improved printer hour tracking accuracy with real-time runtime counter - Add Smart Plug modal scrolling on lower resolution screens - Excluded virtual printer from discovery results - Bottom sidebar layout ## [0.1.6b2] - 2025-12-29 ### Added - **Virtual Printer** - Emulates a Bambu Lab printer on your network: - Auto-discovery via SSDP protocol - Send prints directly from Bambu Studio/Orca Slicer - Queue mode or Auto-start mode - TLS 1.3 encrypted MQTT + FTPS with auto-generated certificates - Persistent archive page filters ### Fixed - AMS filament matching in reprint modal - Archive card cache bug with wrong cover image - Queueing module re-queue modal ## [0.1.6b] - 2025-12-28 ### Added - **Smart Plugs** - Tasmota device discovery and Switchbar quick access widget - **Timelapse Editor** - Trim, speed adjustment (0.25x-4x), and music overlay - **Printer Discovery** - Docker subnet scanning, printer model mapping, detailed status stages - **Archives & Projects** - AMS filament preview, file type badges, project filament colors, BOM filter - **Maintenance** - Custom maintenance types with manual per-printer assignment - Delete printer options to keep or delete archives ### Fixed - Notifications sent when printer offline - Camera stream stopping with auto-reconnection - A1/P1 camera streaming with extended timeouts - Attachment uploads not persisting - Total print hours calculation ## [0.1.5] - 2025-12-19 ### Added - **Docker Support** - One-command deployment with docker compose - **Mobile PWA** - Full mobile support with responsive navigation and touch gestures - **Projects** - Group related prints with progress tracking - **Archive Comparison** - Compare 2-5 archives side-by-side - **Smart Plug Automation** - Tasmota integration with auto power-on/off - **Telemetry Dashboard** - Anonymous usage statistics (opt-out available) - **Full-Text Search** - Efficient search across print names, filenames, tags, notes, designer, filament type - **Failure Analysis** - Dashboard widget showing failure rate with correlations and trends - **CSV/Excel Export** - Export archives and statistics with current filters - **AMS Humidity/Temperature History** - Clickable indicators with charts and statistics - **Daily Digest Notifications** - Consolidated daily summary - **Notification Template System** - Customizable message templates - **Webhooks & API Keys** - API key authentication with granular permissions - **System Info Page** - Database and resource statistics - **Comprehensive Backup/Restore** - Including user options and external links ### Changed - Redesigned AMS section with BambuStudio-style device icons - Tabbed design and auto-save for settings page - Improved archive card context menu with submenu support - WebSocket throttle reduced to 100ms for smoother updates ### Fixed - Browser freeze on print completion when camera stream was open - Printer status "timelapse" effect after print completion - Complete rewrite of timelapse auto-download with retry mechanism - Reprint from archive sending slicer source file instead of sliced gcode - Import shadowing bugs causing "cannot access local variable" error - Archive PATCH 500 error - ffmpeg processes not killed when closing webcam window ### Removed - Control page - PWA push notifications (replaced with standard notification providers)