3.1.1 (2026-03-16)
🐞 Bug Fixes
- charging-station: add try/finally guards to Bootstrap start/stop (c939a38)
- ocpp16: align BootNotification runtime schema maxLength with spec §6.3 (a74b742)
- ocpp16: reject float values for integer configuration keys per spec §5.3 (8dc905b)
- ocpp16: return Idle in TriggerMessage when not actively uploading/updating (b9b505d)
- ocpp20: send actual MeterValues on trigger and block sessions during firmware update (9198720)
- ocpp20: send TransactionEvent(Started) on RequestStartTransaction (E02.FR.01) (5205429)
- ocpp: graceful OCPPError fallback instead of throw in buildMessageToSend (927f891)
- ocpp: replace unsafe messagePayload as OCPPError casts with instanceof (d1cd3fd)
- tests: add second flushMicrotasks for RequestStopTransaction listener (7cd726e)
- tests: add second flushMicrotasks for RequestStopTransaction listener (6635145)
- tests: remove unnecessary double flushMicrotasks in skipped test (9653bc1)
- tests: skip flaky RequestStopTransaction test on macOS + Node 22 (ce6ebab)
- tests: use conditional callCount expectation instead of skip for Node 22 (37575de)
✨ Polish
- extract ensureError and getErrorMessage helpers (207b589)
- ocpp20: harmonize per-station state naming (f1e33ea)
- ocpp20: move TransactionEvent(Started) to event listener pattern (65f9d78)
- ocpp20: prefix FirmwareStatusEnumType, extend FirmwareStatus union (fd51179)
- ocpp20: prefix OperationalStatusEnumType with OCPP20 (0f05c92)
- ocpp20: remove redundant lastFirmwareStatus from per-station state (07cee73)
- ocpp: harmonize post-response event listener pattern across stacks (52d9bac)
- ocpp: use union types in common code where possible (ce77ea9)
- tests: separate handler/listener tests and remove setTimeout hacks (b50f9e5)
- tests: split RequestStopTransaction tests into handler and listener groups (64b8f85)
- tests: use union types instead of stack-specific types in common tests (b994f09)
- use union types consistently in common code and tests (19ab6a4)