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 (.cade files) 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 reservedwords command to scan and fix conflicting identifiers
  • Hot-reload of machine configuration — edit a .cade file mid-session and the table recompiles with player state preserved
  • Cross-platform builds for Linux (amd64/arm64) and Windows (amd64)
  • cade version command and --version flag 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.active injection, 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 z1 cross-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_clip sounds 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_layout placement 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