You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I2C shared-bus & multi-threaded safety — opt-in NOTE_I2C_BUS_LOCK with an IBusLock seam and a ready-made FreeRtosBusLock adapter. exclusive() and keep_ready() group several exchanges into one atomic operation (with optional RTX/CTX readiness signalling), so a shared I²C bus can be driven safely from multiple tasks. (429458b, ae53234)
nc.ping() — one-shot echo connectivity probe (single attempt, short timeout, no retry/CRC/reset); safe before any other transaction. Also on StaticNotecard. (65217f8)
Compile-time body_template — build request bodies (nested objects and arrays) at compile time, emitted as either JSON text or JSONB. (b8be3dc)
Raw JSON body literals now work under NOTE_JSONB, re-encoded to binary opcodes via SAX replay. (cd94afa)
Streaming is now the primary presentation: responses SAX-stream into typed sinks by default, with the buffered JSON-tree path as the fallback. The NOTE_NO_BUFFERED flag was renamed to NOTE_NO_JSON_TREE; the old spelling is honoured as a deprecated alias. (92bb655)
Singleton (NOTE_SINGLETON) correctness: the streaming-parse flag is set on the singleton path, Notecard error messages get allocator-backed lifetime (no longer dangle past execute()), and safety / request IDs / array fields are plumbed through the singleton thunks. (7b7664b, d8006d4, 9985116)
Internal
Testing: JSON/JSONB parser fuzzing under ASan/UBSan added to the release gate (b69854f); an on-demand mutation-testing harness (ci.sh --mutate) that drove new assertions into the COBS, retry, JSONB, and dispatch tests (cb20035, 6dee91a); a hardware-in-the-loop sweep over ESP32-S3 serial + I²C (17f95a2); device coverage extended to the I²C interface (b5abf7b).
Refactoring: Notecard::execute()'s type-independent prologue collapsed into a non-template core (525dd4b); a re-entrant run_operation chokepoint underpins the operation lock (73d1b45).