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
- Link to Spoolman: Manually link existing Spoolman spools to AMS trays
- Hover over AMS slot to see "Link to Spoolman" button
- Select from list of unlinked Spoolman spools
- Automatically sets extra.tag field in Spoolman
- Spool UUID display: View and copy Bambu Lab spool UUID in AMS hover card
- Shows first 8 chars with copy button (full UUID to clipboard)
- Fallback copy method for HTTP contexts
- Sync feedback: Shows synced count and skipped spools with reasons
- Expandable list when more than 5 skipped
- Color swatches for identification
- Fixed Spoolman 400 Bad Request: extra field values must be valid JSON
- Updated documentation (wiki, website)
- Skip Objects Modal:
- Object ID markers overlaid on preview image (grid layout)
- Large prominent ID badges to match printer display
- Info banner explaining to match IDs with printer screen
- Layer warning when skip unavailable (layer <= 1)
- Red badge on button showing skipped count
- Preview image now shown when paused (not just running)
- Close with ESC key or click outside modal
- Full light/dark theme support
- Backend:
- Extract object positions from 3MF (include_positions=True)
- API returns x/y coordinates for objects (when available)
- Parse s_obj from printer MQTT for skipped state persistence
- Cover URL available in PAUSE/PAUSED states
- Tests:
- Added test for objects with position data
**v0.1.6b4**
### New Features
## Printer Cards
- Refactored AMS section for better visual grouping and spacing
### Bugfixes
## Printer Hour Counter
- Fixed runtime_seconds not incrementing during prints
- first timestamp was set but never committed
## Slicer Protocol
- Add OS detection for slicer protocol handler
- Windows: bambustudio://, macOS/Linux: bambustudioopen://
- Updated all usages in Archives and Model Viewer
## Camera Popup Window
- Auto-resize to fit video resolution on first open
- Persist window size and position to localStorage
- Restore saved window state for subsequent opens
## Maintenance Page
- Improved duration display with better precision (weeks instead of imprecise months)
- Large print hours now show readable units (e.g., 478h → 3w, 100h → 4d)
## Docker
- Docker update detection for in-app updates
- Added _is_docker_environment() function
- Check endpoint returns is_docker and update_method fields
- Apply endpoint rejects Docker with helpful instructions
- Added updates API tests
v0.1.6b4
### New Features
# Printer Cards
- Refactored AMS section for better visual grouping and spacing
### Bugfixes
### Printer Hour Counter
- Fixed runtime_seconds not incrementing during prints
- Bug fix: first timestamp was set but never committed
### Slicer Protocol
- Add OS detection for slicer protocol handler
- Windows: `bambustudio://`, macOS/Linux: `bambustudioopen://`
- Updated all usages in Archives and Model Viewer
-
### Camera Popup Window
- Auto-resize to fit video resolution on first open
- Persist window size and position to localStorage
- Restore saved window state for subsequent opens
### Maintenance Page
- Improved duration display with better precision (weeks instead of imprecise months)
- Large print hours now show readable units (e.g., 478h → 3w, 100h → 4d)