---
title: Changelog
path: changelog
status: published
---

# Changelog

User-visible changes to ScaiFlow, newest first.

## v0.2 (April 2026) — current

The first end-to-end release: canvas + backend + compiler + ScaiGrid integration. Major surface area covered:

- **Visual designer.** 24 node kinds across 9 categories (Entry, LLM, Logic, Tool, Data, Checkpoint, Queue/HITL, Compute, Sub-flow). Drag-from-palette, per-kind property editors, hand-written SVG renderer.
- **Compiler.** Flow JSON → ScaiCore YAML (default) or SCIR MessagePack IR (`--format ir`). Three rigidity levels (`@rigid` / `@guarded` / `@flexible`). Match-style decisions, `@checkpoint` with `hitl_target` for one-step HITL, `core_call` for sub-flow composition, scaibunker/scaiqueue plugin calls.
- **Multi-model registry.** Declare every model your flow uses under a role alias (`primary`, `fast`, `voice`, …); LLM nodes pick a role from a dropdown sourced from your tenant's ScaiGrid frontend-model catalog (`GET /v1/scaigrid/models`).
- **Backend (`apps/api`).** ScaiKey-authenticated `/v1/flows/*` CRUD + deploy + tests + versions + presence; CRDT-backed real-time editing over WebSocket; live preview (`/v1/flows/compile`) + validation (`/v1/flows/validate`); proxies for ScaiQueue, ScaiBunker, ScaiGrid catalog reads; deferred `POST /v1/dev/deploy` legacy path retained until canvas auth fully transitions.
- **Persistence.** DB metadata (SQLAlchemy async on sqlite-for-dev / MariaDB-for-prod) + object storage for flow content (filesystem-for-dev / S3-for-prod). Versioned writes keyed by `flows/{tenant}/{flow}/v{version}.flow.json`. Alembic migrations.
- **Multi-tenancy.** ScaiKey OIDC (Authorization Code + PKCE for the canvas, BFF token exchange via `/v1/auth/exchange`); per-tenant ScaiGrid credentials in ScaiVault; group-mirroring sync with webhook + scheduled fallback; per-flow ACLs (view/edit/deploy/admin); tenant catalog visibility.
- **Visual debugger.** Live events panel polling `/v1/scaicore/events`, per-execution overlay on the canvas (entered → blue, exited → green, failed → red), step-through controller, replay button, pending-breakpoints bar for paused checkpoints.
- **Real-time collaboration.** Yjs-based CRDT shared document over `/v1/flows/{id}/sync` WebSocket; multi-cursor presence overlay; falls back to 10-second REST presence polling when WS unavailable.
- **CLI (`scaiflow`).** `validate`, `compile`, `deploy`, `test`, `publish`, `import`, plus a `scaikey-register` helper that creates the tenant-specific application + dev API key.
- **Distribution.** `.scaipkg` package format (deterministic zip of `flow.json` + `manifest.yaml` + `package.json` + optional README) for sharing flows between tenants. Per-tenant catalog with version-bump-on-republish.

### Compared to v0.1 (February 2026)

Rewritten end-to-end. v0.1 was a paper spec; v0.2 is the actual product.

- Three-tier rigidity, not four — `@adaptive` was dropped (it never had an implementation).
- ScaiQueue/ScaiBunker integration shipped as first-class node kinds, not as a `tool_plugin` workaround.
- Frontend is SolidJS + Tailwind v4 + daisyUI v5, not React.
- Visual debugger ships in v0.2 (was deferred).
- Catalog ships; public ScaiExchange marketplace deferred to post-GA.
- Code → flow round-trip is partial only (YAML-emitted flows round-trip losslessly; hand-edited YAML preserves unknown steps under `metadata.unknown_steps`).

## Known-deferred

The following are designed-in but not built in v0.2 — see the [open items](./troubleshooting) for workarounds:

- Public ScaiExchange marketplace (private tenant catalog is shipped; the format is forward-compatible).
- Conditional / runtime-set debugger breakpoints (toggle-based pause on a `@checkpoint` is shipped).
- Multi-replica CRDT relay (in-memory single-process today — fine for one-replica deploys, swap for Redis pub/sub at scale).
- Cursor sharing at sub-second fidelity (CRDT-based concurrent editing is shipped; cursors fall back to 10 s polling).
- AI-assisted flow generation.
