Changelog
changelog
releases
reference
All notable changes to the Cade Runtime are documented in this file.
The format is based on Keep a Changelog, and the project adheres to Semantic Versioning.
For a readable walk through what a release means rather than an entry-by-entry list, see the Cade Runtime release notes for its version series.
[v0.1.0] - 2026-07-31 “Bagatelle”
Initial release of the Cade Runtime, codenamed “Bagatelle” after pinball’s tabletop ancestor — a declarative, high-performance engine for authoring and running pinball machine behavior from HCL, with real-time event processing, scoring, audio synthesis, and lighting.
Added
Core runtime & configuration
- Declarative HCL-based machine configuration (
.cadefiles) interpreted at runtime - Fragment-based reusable configuration with variables, defaults, and validation
- Expression language with module namespaces and compile-time optimization (constant folding, dead-code elimination), so complex conditions stay cheap at runtime
- Reserved-word validation with a
cade migrate reservedwordscommand to scan and fix conflicting identifiers - Hot-reload of machine configuration — edit a
.cadefile mid-session and the table recompiles with player state preserved - Cross-platform builds for Linux (amd64/arm64) and Windows (amd64)
cade versioncommand and--versionflag with embedded build metadata
Event system
- High-performance typed event processing (50–100 Hz) with parallel execution
- Event aggregation primitives: burst, coincidence, and rate windows
- Live event tree with cascade depth, inline timing, and multi-player turn rotation
- Event deduplication with correlation IDs and per-processor rate limiting
- Cascade reconstruction from history exports for offline replay
Scoring & modes
- Declarative scoring engine with compile-time optimization (< 1 ms latency)
- Timer variables (auto-decay, auto-grow, elapsed) and probability variables with weighted, bucketed, and without-replacement sampling
- Three-tier fallback value system with safety-mode activation and panic recovery
tag.<name>.<action>group bindings for scoring targets- Module-based game modes with automatic
module.activeinjection, passive-mode primitives, owner-tracked inhibition, and mid-game player join
Audio system
- Real-time audio pipeline with < 5 ms device latency
- Modular synth engine: named envelopes, biquad low-pass/high-pass filters,
envelope-to-cutoff modulation, and an explicit signal graph — carriers,
mixers, a delay comb, and
z1cross-node feedback with cycle detection - Faithful in-browser synth playback — a patch sounds the same in the browser as on the native runtime
- Sustain-aware synth notes: duration-driven and switch-edge-driven note-off, with an optional amp envelope and a default amplitude gate when none is authored
- Audio routing and selection blocks: owner-weighted routes, device-owned routed audio, deterministic seeded selection, and assembly-provided defaults
- Audio-clip manifest so
play_clipsounds play faithfully in the browser
Lighting system
- Light show compiler that translates shows to FAST EXP scripts for firmware-assisted playback
- Time-parameterized show frames for deterministic, replayable light playback
- Sprite and video sources baked into real frame sequences with an authorable
fit light_layoutplacement with per-LED device names on the layout handshake
Node-editor authoring surface
- Structured edit operations for audio, lighting, and rules graphs, with per-operation error reporting and validate-only dry runs
- Unit-scoped source replacement with per-file snapshot undo
- Rules graph served with a full node-type catalog for graph-based editing
- Graceful parse-lenient / compile-strict handling, so incomplete graphs still boot instead of failing the whole table
- Browser authoring session with automatic asset loading and live engine probes
Platform & networking
- gRPC platform server with bidirectional event streaming for hardware and simulator integrations
- Visual Pinball (VPX) bridge with kicker/coil registration and connection hardening
- Web server for health monitoring and debugging
TUI & console
- Borderless themed TUI with a collapsible game-status bar and standalone Logs and Events panels
- Debug console with cascade visualization, event inspection, and pipe-mode support for scripted, non-interactive use
Tooling & testing
- Scenario testing framework for reproducible game-logic validation
- Replay tooling (
cade replay tree,cade replay analyze) for offline regression