Skip to content

Releases: m-mcgowan/note-cpp

Release list

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 08 Jul 16:49

Added

  • Typed request/response coverage for fields introduced in notecard-schema v1.3.1:
    • note.update — new sync request field (sync the Notefile immediately after the update).
    • card.voltagemode now accepts a string value, plus response fields including calibration, alert, on, and sync.
    • card.motion.mode — response fields motion, seconds, start, and stop.
    • card.transport — additional response fields (allow, umin, and related).
    • card.aux.serial — response fields max and ms.
    • card.location.mode / card.location.track — heartbeat fields including journey and hours.
    • Smaller additions across hub.status, hub.sync.status, card.temp, card.wifi, and ntn.gps.

Changed

  • Synced the bundled Notecard API definitions to notecard-schema v1.3.1 (upstream fa30210), regenerating the typed API and the API reference. Existing code continues to compile unchanged — the update only adds fields.

Validation

ab4a163 · full (hardware-in-the-loop) · 17/17 steps passed · 90m40s · 2026-07-08T16:48:13Z

Validation steps
Step Result Duration
version-check 0s
changelog-check 0s
codegen 1s
host-tests 943s
full-checks 1673s
integrations 2s
coverage 155s
fuzz 5s
mutate 1s
docs 335s
pio-build 658s
arduino-build 263s
hw-esp32-serial 427s
hw-esp32-i2c 720s
hw-esp32-arduino-serial 89s
hw-esp32-arduino-i2c 116s
avr-runtime 52s

Hardware & simulation: ESP32-S3 serial + I²C (native + Arduino) against a real Notecard; AVR ATmega328P runtime via Wokwi (full execute() cycle).

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 03 Jul 01:36

Added

  • 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)
  • First-class memory controlHeapResetPool and the NOTE_NO_RESPONSE_RAII opt-out for arena-only builds. (72a5d12, 420094e)

Changed

Fixed

  • 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).