v0.1.0 — initial public release
First public release of the @lumencast/* TypeScript SDK on npm.
Published packages
| Package | Description |
|---|---|
| `@lumencast/protocol` | LSDP/1 wire protocol — envelope, codec, sequence, leaf-path utilities, error taxonomy, types. Pure code, no IO. |
| `@lumencast/server` | Node server kit for LSDP/1 — HTTP+WS, scene composition, leaf store, server-side adapters, token-agnostic auth hooks. |
| `@lumencast/dev-server` | Mock LSDP/1 server for tests — WS protocol + HTTP bundle serving + `/__mock/*` control plane. |
| `@lumencast/runtime` | Browser runtime — `mount()`, transport, leaf-grain store, LSML render, animations, overlays. |
| `@lumencast/runtime-svelte` | Headless Svelte adapter — live LSDP/1 leaf state as Svelte stores. |
| `@lumencast/runtime-vue` | Headless Vue 3 adapter — live LSDP/1 leaf state as Vue refs. |
| `@lumencast/compiler` | LSML 1.0 → flat RenderBundle compiler. |
What's in 0.1.0
The browser runtime is feature-complete for the LSML 1.1 / LSDP 1.1 receiver-side surface :
- §3.2.2 per-leaf transition directives on delta patches
- §3.3.1 scene-swap transitions
- §4.1 stack `wrap` + `crossGap`
- §4.6 / §4.12 multi-fill + linear/radial gradients on `shape` / `frame`
- §4.9 `instance` primitive scaffold
- §5.4 universal props (`visible`, `opacity`, `rotation`, `sizing`)
- §6.5 sRGB colour interpolation
- §6.6 keyframe sequences
- §6.7 `repeat.stagger_ms`
- §17.3 `profiles[]` gating with `BUNDLE_INCOMPATIBLE` rejection
- §18 `since_sequence` resume
The server kit + dev-server speak the same protocol level. The conformance harness covers 33 scenarios.
Quickstart
```bash
pnpm add @lumencast/runtime
```
```ts
import { mount } from "@lumencast/runtime";
const handle = mount({
target: document.getElementById("stage")!,
serverUrl: "wss://example.com/lsdp/v1",
token: "",
mode: "broadcast",
});
```
A working hello-world lives in `examples/basic-scoreboard`.