Releases: Lazybone/ESP32-OpenSpool
Releases · Lazybone/ESP32-OpenSpool
v0.2.1
Highlights
This release adds a complete custom filament management system and fixes several issues, including the brand/type deletion bug.
New Features
Custom Filament Database
- Custom Brands: Add your own filament brands (appear in Brand dropdown)
- Custom Material Types: Add custom materials like PLA+, PETG-HT, etc.
- Temperature Presets: Save custom temperature settings per brand/type combination
- Import/Export: Backup and restore your custom filament database as JSON
- Data stored in ESP32 NVS (survives reboots, ~150-200 entries)
Progressive Web App (PWA)
- Install as app on mobile devices (Add to Homescreen)
- Fullscreen standalone mode
- Offline caching of UI via Service Worker
Sound Feedback
- Optional piezo buzzer support (GPIO6)
- Beeps for tag detection, successful operations, and errors
Built-in Filament Database
- Auto-fill temperatures for popular brands: Bambu Lab, Prusament, eSun, Polymaker, Hatchbox, Overture, SUNLU, Jayo
- 15 material types with sensible defaults
Bug Fixes
- Fixed: Custom brand/type deletion not working (endpoint routing issue)
- Fixed: Blocking delays in async handlers causing watchdog resets
- Fixed: Race conditions with
std::atomic<bool>for thread safety - Fixed: NDEF format now compatible with Orca Slicer (MIME type record)
- Fixed: LittleFS auto-recovery on mount failure
- Fixed: XSS vulnerability in WiFi SSID display
Technical Improvements
- Added HTTP security headers (X-Content-Type-Options, X-Frame-Options, X-XSS-Protection)
- Input validation with payload size limits
- Consistent JSON error responses across all API endpoints
- Deferred action system for WiFi operations
New API Endpoints
GET /api/filaments - Get complete database
POST /api/filaments - Save temperature preset
POST /api/filaments/brand - Add custom brand
POST /api/filaments/brand/delete - Delete custom brand
POST /api/filaments/type - Add custom material type
POST /api/filaments/type/delete - Delete custom material type
POST /api/filaments/reset - Clear all custom data
POST /api/filaments/import - Bulk import from JSON
v0.1.6
Fixed
- NDEF format compatibility: Changed from Text Record (TNF=0x01) to MIME type Record (TNF=0x02) with
application/json - Tags written by ESP32-OpenSpool are now recognized by Orca Slicer and other OpenSpool-compatible applications
Added
- Comprehensive NFC tag information output on Serial when reading:
- UID, tag type, memory capacity
- ATQA and SAK values
- Password protection status
- Write protection and config lock status
- Authentication attempts remaining
- Originality signature (if readable)
- Raw hex dump of tag pages
- Parsed OpenSpool data fields
Technical
- NDEF Record format:
D2 10 [len] "application/json" + JSON payload - Updated file header comments (I2C → SPI documentation)
v0.1.5 - Initial Release
Changed
- Switched from I2C to SPI for PN532 communication (more reliable without pull-up resistors)
- Improved WiFi scan with auto-retry and progress indicator
- New modern confirmation modal for destructive actions (Erase Tag)
- Moved static file handler after API routes (fixes API not responding)
Fixed
- WiFi scan causing watchdog timeout and device restart
- API endpoints returning 404 (static handler was catching all requests)
- Erase confirmation dialog not triggering erase action
Technical
- SPI Pins: SCK=GPIO12, MISO=GPIO13, MOSI=GPIO11, SS=GPIO10
- Using software SPI for better compatibility
- Background task for WiFi scanning to prevent blocking