FW 0.12.11
FW 0.12.11 Release Notes
Spectoda Firmware v0.12.11 Release Notes
Section titled “Spectoda Firmware v0.12.11 Release Notes”Release Date: November 2, 2025
Version: 0.12.11
🚀 Major Features
Section titled “🚀 Major Features”- NetworkStorageData sync with App Controller: Adds storage synchronization between devices and app.
- Berry API expansions:
spectoda.tx()/spectoda.rx()for low-level transport.ble.enable(...),espnow.enable(...), full ESP-NOW configuration API, andespnow.datarate(...).- APDS9960 sensor API.
- Config support for
"plugins"and Controller"scripts".
- Lighting protocols: ART-NET and sACN can now receive from multiple universes.
- Connector compatibility:
CONNECTOR_LEGACY_JS_RUNTIMEoption for legacy integrations. - allow overriding PCB/Product codes
🔧 Technical Improvements & Refactors
Section titled “🔧 Technical Improvements & Refactors”- Introduced
fw_platform_code; addednetworksnapshot_unix_timestamp,controllerstore_fingerprint. - Renames/cleanups:
fw_compilation_timestamp→fw_compilation_unix_time,clock_ms→clockms_t,IDENTIFIER(0)→IDENTIFIER_UNDEFINED. - Berry internals: standardized names (EVT/PLG), cleaned C/C++ handlers, unified utils helpers (e.g.,
utils::berry::getBytesBufferAndSize()), DMX Berry improvements. - Moved
synchronization_tto dedicated header; improved error paths in BLE/ESP-NOW members. - Build/Tooling: fixed WASM and DMX builds; new options to exclude APDS9930 and Pixel Port R/W; release build configuration.
📈 Performance & Stability
Section titled “📈 Performance & Stability”- Faster network OTA via higher data rate.
- Longer Ethernet startup window for reliability.
- Turned off Berry debug info and strict module for production performance.
- Increased IO port max size from 1200 → 2048.
- WS2805 signal timing corrected to reduce flicker/glitches.
- FW flooding mechanism hardened.
🐛 Bug Fixes
Section titled “🐛 Bug Fixes”- Device context: fixed
registerDeviceContextevent-state initialization. - Clock writes: allowed higher-frequency FW clock updates.
- Serial: reliable synchronization packet sending; resolved large-payload issues (multiple fixes through Nov 7).
- Persistence: early reboot could skip writing Network Signature/Key—fixed.
- LoadingBar animation crash fixed.
- Protocols: no crash on ArtNet without a valid Berry VM.
- Berry runtime: memory corruption and render stack memory leak fixed; empty mapped bytes creation crash fixed; general bug fixes in C++ and VM glue.
- ESP-NOW: synchronization tweaks and NetworkData sync fixes.
- Error handling: improved handling for
FLAG_EVENT_HISTORY_BC_REQUEST; suppressed noisy “BLE max connection reached” log.
🧩 Compatibility & Migration Notes
Section titled “🧩 Compatibility & Migration Notes”- Potentially breaking:
- Default config segment ID changed from
ID255toID0(verify scripts/configs relying on defaults). FLAG_EVENT_HISTORY_BC_REQUESTdisabled (behavioral change for history broadcast).
- Default config segment ID changed from
- Berry internal renames are largely non-breaking for user scripts, but update custom native plugins if they touch internals.
- System revision awareness:
- Controllers can now be distinguished not only by firmware version, but also by system revision such as
rev0orrev1. - System revision represents the low-level runtime profile of the controller, for example partition layout, OTA slot geometry, or future flash / bootloader differences.
- The same firmware line can temporarily run on multiple system revisions during migration.
- Controllers can now be distinguished not only by firmware version, but also by system revision such as
- Partition migration path:
rev0controllers may require a one-time partition migration torev1before they can reliably accept larger OTA images.- After a controller is migrated to
rev1, regular OTA updates continue normally within the new layout. - Future low-level migrations are expected to stay stepwise, for example
rev0 -> rev1 -> rev2, not to skip directly between distant revisions.
- Peer-to-peer OTA safety in mixed networks:
- Controllers advertising a larger OTA slot no longer assume that every peer can accept the same image size.
- Peer firmware distribution uses the real running firmware image size rather than the full app partition size.
- If a target controller cannot accept the image, the update should be skipped or rejected instead of entering a broken OTA state.
🔎 Service & Diagnostics Notes
Section titled “🔎 Service & Diagnostics Notes”- Controller Info can expose both firmware version and system revision.
- In practice, this helps distinguish cases such as:
- two controllers both running firmware
0.12.11 - but one still being on
rev0and another already migrated torev1
- two controllers both running firmware
- This is useful mainly for service, rollout planning, and OTA diagnostics in mixed installations.
🧪 Build & Developer Notes
Section titled “🧪 Build & Developer Notes”- New build exclusions: ESPNOWRADIO, APDS9930
- WASM build fixes applied; DMX WASM build corrected.
🔗 Full Changelog
Section titled “🔗 Full Changelog”https://github.com/Spectoda/Spectoda_Firmware/compare/v0.12.10...v0.12.11