Enables checking and uploading firmware updates for printers operating
in LAN-only mode without Bambu Cloud connectivity.
Features:
- Automatic firmware version checking against Bambu Lab servers
- Orange "Update" badge on printer cards when updates available
- Firmware update modal with version info and release notes
- One-click firmware upload to printer SD card via FTP
- Real-time upload progress (actual bytes transferred)
- Step-by-step instructions for triggering update from printer
- Local firmware caching for faster re-uploads
- Supports all Bambu Lab printer models
New files:
- backend/app/services/firmware_check.py - Version checking service
- backend/app/services/firmware_update.py - Upload orchestration
- backend/app/api/routes/firmware.py - REST API endpoints
Also includes:
- FTP upload progress callback support
- 10-minute upload timeout protection
- Firmware cache directory in .gitignore
v0.1.6b6
### FEATURES
- Resizable printer cards - Four sizes (Small, Medium, Large, XL) with persistent preference
- Queue Only mode - Stage prints without automatic scheduling, manual release with play button
- Virtual printer model selection - Choose from X1, P, A1, H2 series models with auto-restart on change
- Pending upload delete confirmation - Confirmation modal when discarding pending uploads
### Fixes
- Camera stream reconnection - Improved stuck stream detection with automatic reconnection
- Virtual printer SSDP model codes - Corrected C11=P1P, C12=P1S, N7=P2S
- Virtual printer serial prefixes - Fixed to match actual Bambu Lab format
- Virtual printer startup model - Now correctly loads saved model from database on restart
- Virtual printer model change - Model changes auto-restart (no manual disable/enable needed)
- Docker certificate persistence - Certificates correctly persist in bambuddy_data volume
- Correct SSDP model codes: C11=P1P, C12=P1S, N7=P2S, C13=X1E
- Fix serial prefixes based on actual Bambu serial format
- Add confirmation modal for pending upload discard
- Sort model dropdown alphabetically, remove internal codes
- Add "Setup Required" warning with link to wiki documentation
- Update wiki with certificate installation and platform setup guides
Features:
- Configurable printer model for virtual printer emulation
- Supports X1 series (X1C, X1, X1E), P series (P1S, P1P, P2S),
A1 series (A1, A1 Mini), and H2 series (H2D, H2C, H2S)
- Dropdown in Settings > Virtual Printer to select model
- Model affects SSDP discovery and slicer compatibility
- Model change restarts virtual printer services automatically
Backend:
- Added VIRTUAL_PRINTER_MODELS mapping in manager.py
- Added virtual_printer_model setting in database
- New GET /api/v1/settings/virtual-printer/models endpoint
- Updated PUT /api/v1/settings/virtual-printer to accept model
Frontend:
- Added model dropdown to VirtualPrinterSettings component
- Status display shows selected model name
- Model change disabled while virtual printer is running
Tests:
- Added 3 unit tests for model configuration
- Updated frontend test mocks for getModels API
Features:
- Resizable printer cards (S/M/L/XL) with toolbar controls on Printers page
- Queue Only mode for staging prints without automatic scheduling
- "Queue Only" option in add/edit queue modals
- Purple "Staged" badge and Play button to release to queue
- manual_start field in database with migration
Fixes:
- Improved camera stream stuck detection with automatic reconnection
Tests:
- Added 16 integration tests for print queue API endpoints
- Controls section: New section before Filaments with fan status and printer controls
- Part cooling fan (Fan icon, cyan)
- Auxiliary fan (Wind icon, blue)
- Chamber fan (AirVent icon, green)
- Stop/Pause/Resume buttons moved from Temperature section
- Real-time updates: Fan speeds now broadcast via WebSocket
- Backend: Parse MQTT fan data (cooling_fan_speed, big_fan1_speed, big_fan2_speed)
- Convert 0-15 scale to 0-100%
- Always-visible badges with dynamic coloring based on fan state
- Removed horizontal dividers before Controls and Filaments sections
- New APIBrowser component with full OpenAPI schema integration
- Fetches and parses /openapi.json automatically
- Groups endpoints by API tags (printers, archives, settings, etc.)
- Expandable endpoint sections with color-coded method badges
- Path parameter, query parameter, and JSON body editors
- Auto-populates request body with schema examples
- Live API request execution with response display
- Response shows status code, timing, and formatted JSON
- Copy response button with clipboard fallback
- Search to filter endpoints across all categories
- Expand All / Collapse All buttons
- Link to Swagger UI (/docs)
- Two-column layout for API Keys tab
- Left: API key management + webhook documentation
- Right: API Browser with dedicated test key input
- Parameter validation
- Shows warning for missing required parameters
- Validates before sending requests to avoid 422 errors
- UX improvements
- "Use in API Browser" button on newly created keys
- Responsive layout (stacked on mobile, side-by-side on xl+)
- AMS "Unexpected format" warnings fixed - P1S/P1P send partial updates without full tray list (per https://github.com/Doridian/OpenBambuAPI/blob/main/mqtt.md). Now handled correctly.
- FTP improvements:
- Added timeouts (60s download, 30s listing)
- Better logging at INFO level
- Shows what files exist in /cache
- Fallback archive - When 3MF can't be downloaded, creates minimal archive so prints are tracked
v0.1.6b5
### 🚀 Highlights
## Pre-built Docker Images
No more building from source! Pull directly from GitHub Container Registry:
docker pull ghcr.io/maziggy/bambuddy:latest
- Multi-architecture: linux/amd64 and linux/arm64 (Raspberry Pi 4/5)
- Docker automatically pulls the correct image for your system
- Just docker compose up -d — no --build required
## Printer Controls
New stop and pause/resume buttons on printer cards while printing. Includes confirmation modals to prevent accidental clicks.
## Skip Objects
Skip individual objects during a print without canceling the entire job:
- Skip button appears when printing with 2+ objects
- Preview image with object ID markers to match your printer display
- Requires "Exclude Objects" enabled in slicer
## Spoolman Improvements
- Link Spool: Manually link existing Spoolman spools to AMS trays
- UUID Display: View and copy Bambu Lab spool UUID from AMS hover card
- Sync Feedback: See which spools synced and which were skipped (with reasons)
### ✨ What's New
## Added
- Pre-built Docker images on GitHub Container Registry (ghcr.io)
- Printer control buttons — Stop and Pause/Resume on printer cards
- Skip objects — Skip individual objects mid-print
- AMS slot RFID re-read — Re-read filament info via hover menu
- Spoolman Link Spool — Connect existing Spoolman spools to AMS trays
- Spool UUID display — View/copy Bambu spool UUID in AMS hover card
- Spoolman sync feedback — Shows synced count and skipped spools with reasons
- Print quantity tracking — Track items per print for project progress
## Changed
- Temperature cards layout refactored for control buttons
- Cover image now shown when paused (for skip objects modal)
- Spoolman info banner updated with clearer documentation
## Fixed
- Spoolman 400 Bad Request when creating spools (extra field JSON encoding)
### 📦 Installation
Docker (Recommended):
mkdir bambuddy && cd bambuddy
curl -O https://raw.githubusercontent.com/maziggy/bambuddy/main/docker-compose.yml
docker compose up -d
Updating from 0.1.6b4:
docker compose pull && docker compose up -d
---
Full Changelog: https://github.com/maziggy/bambuddy/compare/0.1.6b4...0.1.6b5
- Add multi-architecture support: linux/amd64 and linux/arm64 (Raspberry Pi 4/5)
- Add docker-publish.sh script for building and pushing images
- Supports --parallel flag for simultaneous architecture builds
- Uses Docker Buildx with QEMU emulation
- Update docker-compose.yml to support both pre-built and source builds
- `docker compose up -d` pulls pre-built image
- `docker compose up -d --build` builds from source
- Track number of items per print job (default: 1)
- Project stats now show total items vs print jobs
- Progress bar counts items toward target, not just archives
- "Items Printed" field in archive edit modal
Backend:
- Added quantity field to PrintArchive model
- Database migration for quantity column
- Updated project stats to use SUM(quantity)
- Updated backup/restore to include quantity
- Updated CSV/Excel export with quantity field
Frontend:
- Added quantity input to EditArchiveModal
- Updated ProjectsPage to display total_items
- Updated ProjectDetailPage stats
- Fixed project delete not refreshing the list