lua_runtime now loads the running script from a new LittleFS-backed drivers::storage (joltwallet/littlefs, the project's fifth external managed component -- mounts the "storage" partition already reserved in partitions.csv), falling back to the compiled-in default script only on first boot. transport exposes GET/POST /api/script -- raw Lua text, not JSON, since json_helpers.h can't round-trip scripts safely -- relayed to lua_runtime via the same callback-registration pattern already used for LedColorHandler, keeping transport free of a dependency on lua_runtime. lua_runtime_reload() persists and hot-swaps to a fresh Lua state immediately, no reboot. Verified on real ESP32-C6 hardware: script loads via kvida-sdk, an edited script hot-reloads within one tick, and the edit survives a power cycle (proving LittleFS persistence, not just an in-RAM change). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
drivers
Hardware abstraction: wraps ESP32-C6 peripherals (GPIO, ADC, I2C) behind a board-independent interface used by sensors. No dependency on other Kvida components.
chip_temperature.h/.cpp-- wraps ESP-IDF's built-intemperature_sensordriver (die temperature; there's no external ambient temperature sensor on the ESP32-C6-DevKitC-1).rgb_led.h/.cpp-- wraps the DevKitC-1's onboard WS2812 addressable RGB LED (GPIO8) via theespressif/led_stripmanaged component (idf_component.yml).storage.h/.cpp-- mounts thestorageLittleFS partition (seepartitions.csv) at/storageviajoltwallet/littlefs(verified against the component's actual header, not guessed -- the real mount function isesp_vfs_littlefs_register(), notesp_vfs_littlefs_mount()despite what some docs summaries say), then exposes plain whole-filestorage_read_file()/storage_write_file()helpers over the standardfopen/fread/fwriteVFS calls. Used bylua_runtimeto persist the running script (components/lua_runtime/README.md).