Skip to content

Releases: Lazybone/ESP32-OpenSpool

v0.2.1

18 Jan 18:27

Choose a tag to compare

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

17 Jan 11:13

Choose a tag to compare

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

16 Jan 12:48

Choose a tag to compare

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