All notable changes to OCPP DebugKit Studio are documented here.
The format follows Keep a Changelog. This project is pre-1.0: while Zig, the Native SDK, and the toolkit conformance reference are all pre-1.0, minor (0.x) releases may include breaking changes.
0.5.5 - 2026-07-30
- The conformance contract is now
contract-v2: 18 shared scenarios, up from 15, regenerated against toolkit0.4.5.studio ciand the build-time harness gate on 18/18. The three added scenarios (firmware-update-success,firmware-update-failure,refused-authorization) cover the firmware statuses and the non-Invalidauthorization refusals the frozen corpus never reached, which is how the rule defects fixed in 0.5.4 stayed green at 15/15.contract-v2is a strict superset of v1: the 15 existing fixtures and goldens are unchanged, byte for byte. See ADR-0013.
0.5.4 - 2026-07-30
-
Three detection rules now follow the OCPP 1.6 specification where they previously diverged from it, matching the toolkit fixes released as toolkit 0.4.5 (toolkit#154, #155, #156):
FIRMWARE_UPDATE_FAILUREmatches exactly the two failure values of theFirmwareStatusenumeration,DownloadFailedandInstallationFailed(OCPP 1.6 edition 2, section 7.25). It previously matchedDownloadPaused,InstallFailedandInstallRebootingFailed, none of them 1.6 values, and missedInstallationFailed, so a station reporting a failed install was not flagged.STATUS_TRANSITION_VIOLATIONuses the section 4.9 transition table as written, 53 permitted transitions. The old matrix flagged 22 transitions the table permits, most of them recoveries fromFaultedandUnavailableback into an operative state, and permitted 2 the table omits (Preparing -> Unavailable,Finishing -> Reserved).FAILED_AUTHORIZATIONreports every refusingAuthorizationStatus(section 7.2):Blocked,ExpiredandConcurrentTxalongsideInvalid, with the status named in the description.
The 15 conformance goldens are unchanged, so
contract-v1still holds. Equivalence with the toolkit was also checked directly: both engines return identical failure-code sets on 97 probe traces covering every firmware and authorization status and all 81 ordered connector-status pairs.
0.5.3 - 2026-07-22
METER_VALUE_ANOMALYno longer false-positives on charge points that report more than one measurand per sample, or on multi-connector stations. Meter readings are now bucketed by (connectorId, measurand, phase, unit, location), and the monotonic and non-negative checks apply only to cumulativeEnergy.*.Registermeasurands (OCPP 1.6 section 7.28). Reported by shiv3.STATUS_TRANSITION_VIOLATIONno longer false-positives on multi-connector stations. Connector status is tracked per connector (connectorId 0, the whole charge point, is its own series), so a notification from one connector is not compared against another's.
0.5.2 — 2026-07-13
- macOS one-line installer —
curl -fsSL https://raw.githubusercontent.com/ocpp-debugkit/studio/main/scripts/install-macos.sh | bashdownloads the latest release, verifies its SHA-256, installs the app to Applications, and opens it. Releases now publish aSHA256SUMSchecksums asset.
- The README macOS install is now the one-liner; the manual download / quarantine instructions were removed.
0.5.1 — 2026-07-12
- macOS — the packaged app bundle is now named
OCPP DebugKit Studio.app(previouslystudio.app), so its on-disk name matches its display name; the CLI binary is unchanged (studio). The install docs now cover clearing the Gatekeeper quarantine on the ad-hoc build.
0.5.0 — 2026-07-12
Studio's first packaged, signed public release, assembled across milestones S0–S5. Highlights:
- Engine — a pure-Zig, headless OCPP 1.6J engine: canonical event / session /
failure model, a trace parser (JSON object, JSONL, and bare-array formats with
untrusted-input limits), timestamp + direction normalization, and
transactionIdsession correlation. - Detection — the full 16-rule OCPP 1.6J failure taxonomy, conformant with the
TypeScript toolkit and locked to the
contract-v1goldens (15/15 scenarios). - Inspector — a native window with a virtualized event timeline (smooth past 500k events), a message inspector (raw OCPP-J array, normalized fields, a bounded payload disclosure tree), a session-correlation panel, a ranked failure drawer with remediation steps, and search / filter facets. Traces open from command-line paths, with a built-in sample.
- Analysis — Markdown and self-contained HTML reports, anonymize-on-export (redacts idTag / serials / stationId / identifier, resequences transaction ids, and scrubs email / phone / IPv4 patterns), semantic trace diff, and a deterministic step-through replay engine with a manual scrub transport.
- Live capture — a live WebSocket MITM proxy between a charge point and its CSMS (hand-rolled RFC 6455 subset): frames are relayed verbatim, decoded in flight into canonical events, run through detection as they stream, and recorded to the canonical trace format. Surfaced both in a live inspector timeline and from the CLI; OS notifications fire on critical live failures.
- Headless CLI — the same binary is a scriptable CLI:
inspect,report(markdown / html),diff(text / json),anonymize,capture,ci, andscenario. - Packaging — macOS (
.dmg, ad-hoc signed) and Linux (.tar.gz) packages vianative package, published by a tag-triggered release workflow. - Conformance contract — the Studio ⇄ toolkit contract frozen and documented
as
contract-v1(CONTRACT.md), CI-gated on every change.
- macOS builds are ad-hoc signed, not notarized (first launch needs right-click → Open). Notarization is planned post-0.5.
- Failure detection is capped at 50k events (several rules are O(n²)); larger traces stay fully inspectable with detection skipped. The O(n) rewrite is tracked upstream.
- TLS (
wss://) live capture, a menu-bar monitor, and interactive open (dialog / drag-drop) are planned for later releases.