Skip to content

Changelog

All notable changes to ZenFG are documented in this file. The five publishable packages use independent versions; component tags identify each release.

Unreleased

0.1.0 - 2026-09-15

  • Publish all five packages as the first non-prerelease version, preserving beta.4 public APIs, runtime behavior and Snapshot 1.2 compatibility.

  • Update exact internal dependencies and public installation documentation to 0.1.0. npm packages use the latest channel. No migration from beta.4 is required.

  • Improve release tooling with a read-only package assessment, registry progress, Node 24 artifact Actions, deduplicated PR CI and version-independent golden checks. These tooling changes do not alter runtime APIs.

0.1.0-beta.4 - 2026-09-15

All five public packages release as 0.1.0-beta.4 in this coordinated update. Package versions remain independent for future releases.

Breaking changes

  • Replace GPU-only execution entrypoints with unified CPU/GPU/both timing APIs in TypeScript and Rust. Plain execution collects no timing.
  • Emit Snapshot 1.2 with CPU and GPU availability records. Readers explicitly migrate validated 1.1 inputs; canonical 1.0 remains rejected.
  • Require explicit TypeScript Snapshot frame indices and forward Inspector provider timing requests through host adapters.
  • See the migration guide.

Added and fixed

  • Add CPU timing for all executed node kinds and synchronous execution total; capture CPU/pool facts before GPU readback to preserve same-frame data.
  • Harden Snapshot validation against inherited fields and align Rust/TypeScript identifier, numeric and migration behavior.
  • Improve Inspector CPU measurements, themes, search, navigation, responsive details and capture replacement invalidation; defer inactive views.
  • Refresh packaged documentation and examples. Add a generated documentation site, PlayCanvas GSplat demos and shareable canvas fullscreen mode.
  • Add approved per-package OIDC publishing with verified archives and isolated registry consumers.

Per-package notes

0.1.0-beta.3 - 2026-09-07

Breaking changes

  • Upgrade the canonical Snapshot wire format from 1.0 to 1.1. Both decoders reject canonical 1.0; Legacy V0 and Legacy Candidate V1 remain supported.
  • Require normalized resource-root ranges and final-content resolution in native Snapshot 1.1. Roots now distinguish resource selections from side effects.
  • Replace Rust RootReport.producers with RootReport.resolution.producer_node_ids and change SnapshotRoot from a struct to a reason-tagged enum.
  • Reject undefined or discarded selected root contents during WebGPU compilation with FG1004, and reject empty resource-root ranges.

Added and changed

  • Add WebGPU buffer-range and texture-view root selections, final-writer and initial-content reporting, and matching cross-language conformance coverage.
  • Unify Inspector visualization into Frame Flow with output endpoints, range identity, final-content sources, and refined labels, colors, and legend.
  • Add the public Examples, runnable package recipes, interactive background, and attributed TypeGPU slime-mold showcase.

Coordinate all five packages at 0.1.0-beta.3 with exact internal dependencies. See the beta.3 migration guide.

0.1.0-beta.2 - 2026-09-02

  • Aligned WebGPU texture-size and copy-operation input types with the runtime's existing iterable support, including typed-array extents and origins, while materializing those inputs before compilation and execution.
  • Fixed Rust/wgpu GPU debug-group execution and timing ancestry when compilation retains non-contiguous recording group IDs.
  • Aligned the Inspector export menu, refined graph zoom behavior, and improved viewport framing for large or newly loaded graphs.
  • Reorganized public documentation around bilingual project entrypoints, package-local quick references, a single Core Concepts guide, and an explicit source-of-truth policy for API docs, examples, and future interactive stories.

This release coordinates all five packages at 0.1.0-beta.2 so package-local documentation and exact internal dependencies remain aligned.

0.1.0-beta.1 - 2026-09-01

The Inspector is now a host-sized, always-visible workbench with integrated branding, file selection, and drag-and-drop. The pre-release collapsible shell and its expanded/setExpanded() API have been removed.

The WebGPU runtime now enforces synchronous execution callbacks in both its TypeScript types and runtime checks. Render, compute, command, external submission, beforeSubmit, and afterSubmit callbacks must return undefined; Promise-like results are rejected without being awaited. execute() also rejects invalid frameIndex values before allocating resources or starting GPU work.

Initial public beta release of:

This candidate establishes the standalone TypeScript/WebGPU and Rust/wgpu FrameGraph runtimes, the renderer-independent Inspector, cross-language conformance fixtures, and manual package-verification workflows.

Developer and coding-agent usability is part of the candidate contract:

  • one compact Quick Reference maps package choice, lifecycle, ownership, content semantics, common tasks, TypeScript/Rust names, and failure fixes;
  • public TSDoc/rustdoc, self-contained package READMEs, and complete compiled recipes document the supported workflows without requiring repository search;
  • npm declaration maps point to packaged sources, while Rust crate READMEs serve as tested crate-level documentation;
  • documentation, recipes, package contents, and link integrity are guarded by release checks without changing runtime APIs or Snapshot 1.0 semantics.

The final candidate also hardens Snapshot decoding before the first public release:

  • TypeScript programmatic decode, validation, and encoding reject non-JSON runtime values without invoking getters or toJSON hooks or leaking native serialization errors; Legacy Candidate V1 migration is copy-on-write and never mutates the caller's input or silently discards invalid data;
  • Snapshot 1.0 defines a shared maximum of 64 object/array container levels for each extension value, enforced by the Schema and both TypeScript and Rust validators with the stable extension-depth-exceeded issue code.

The package versions are independent of the ZenFG FrameGraph Snapshot wire format, which is version 1.0 in this candidate.

Open source / MIT licensed