Studio is built in milestones, each mapping to a semantic version. Milestones are tracked as GitHub milestones; this file is the human-readable summary. Scope may be refined as we learn — the sequencing rationale (engine before UI, capture after the inspector exists) is the stable part.
| Milestone | Version | Theme | Status |
|---|---|---|---|
| S0 | 0.0.x | Foundation | ✅ Complete |
| S1 | 0.1.0 | Engine core | ✅ Complete |
| S2 | 0.1.0 | Detection + conformance | ✅ Complete |
| S3 | 0.2.0 | Inspector UI | ✅ Complete |
| S4 | 0.3.0 | Analysis parity+ | ✅ Complete |
| S5 | 0.4.0 | Live capture ⭐ | Planned |
| S6 | 0.5.0 | Public release & launch | ✅ Released |
Studio stays in the 0.x range until its foundations settle. Zig, the Native
SDK, and the toolkit — Studio's conformance reference, itself 0.3.x — are all
pre-1.0 and still make breaking changes. A 1.0 waits for that ground to
stabilize: releasing one on a shifting substrate would claim more stability than
the stack, or the reference implementation Studio mirrors, actually offers.
Until then, 0.x minors may carry breaking changes, always called out in the
release notes.
Repo, tooling, and CI. A native window that opens, an automation-driven smoke
test, founding docs, and architecture decision records. Exit criteria met:
CI green on macOS + Linux; native doctor --strict clean.
The pure-Zig OCPP engine, headless and testable: canonical Event / Session
types and the std.json.Value value boundary (ADR-0005), a parser for the three
input formats (JSON object, JSONL, bare array) with untrusted-input limits, the
normalizer (message classification, timestamp normalization, and direction
inference), and session correlation by transaction id. Exit criteria met: the
vendored normal-session fixture parses and correlates end to end; engine tests
run green headlessly (native test -Dplatform=null) on macOS + Linux.
The full OCPP 1.6J failure taxonomy in Zig — all 16 detection rules — plus the
conformance harness that runs the 15 shared scenario fixtures and checks Studio's
detected failures against locked goldens generated from the toolkit.
Exit criteria met: 15/15 scenarios match the contract-v1 goldens under
native test.
The native inspector: a virtualized event timeline, the per-message inspector (raw / normalized / payload tree), the session and failure panels, search / filter, and a multi-trace workspace — handling traces far larger than a browser tab can hold. Traces open from command-line paths and a built-in sample; interactive open (native dialog + drag-drop) is deferred to #33 (needs an ejected runner, ADR-0006).
Parity with the toolkit's analysis surface: Markdown / HTML reports,
anonymize-on-export, trace diffing, and a deterministic replay engine with a
manual-scrub transport. A headless CLI ships in the same binary (inspect /
report / diff / anonymize / ci / scenario) — see
docs/cli-parity.md. Exit criteria met: all six issues
(#41–#45) merged; native test green (123 tests) and the app builds and runs the
CLI. Real wall-clock replay playback is deferred to #33 (the zero-config runner
exposes no timer effect), tracked as a follow-up.
The flagship. A live WebSocket proxy between a charge point and its CSMS, decoding OCPP frames in flight, running detection as events stream, recording to the canonical trace format, and surfacing it all in a live timeline — with OS notifications on critical failures. This is the capability a browser tab cannot provide, and the reason Studio exists.
A signed macOS app and a Linux package, a menu-bar live monitor, a complete docs set, an automation-driven GUI test suite, and the frozen conformance contract — Studio's first packaged, signed public release.
Studio also joins the ecosystem's web presence: a Studio section on
ocppdebugkit.com — a /studio page (positioning,
the "library vs. instrument" split with the toolkit, feature highlights,
screenshots, download links) plus cross-links from the toolkit landing and
inspector, with the conformance contract — two independent implementations, one
trace format — as the trust hook. This is a cross-repo deliverable: the site
lives in the toolkit monorepo (apps/web), so the page and its issues are filed
there. It stays in the monorepo rather than a separate website repo because the
site's live inspector already depends on the toolkit's workspace packages and
Studio coverage is static content; revisit only if the site later needs an
independent brand or deploy cadence.
Sequenced one theme per minor: a message composer / playground, a charge-point simulator, a CSMS mock, an active scenario runner (running the assertion suite against live endpoints), TLS proxy support, and — behind the same version-tagged decoder boundary — OCPP 2.0.1.