# Changelog 0.13

## v0.13.2 — 2026-08-19

### ✨ Added

#### Runtime

- `fx.deadLetters(signal)` lists dead-lettered messages for one signal. Records `read` on `signal:<name>` (inferred, capability-gated). Build a `GET /notifications/failed` flow with `fx.json.withQuery`.

#### Docs

- Signal and fx pages document `fx.deadLetters` and a failed-messages HTTP flow.

## v0.13.1 — 2026-08-19

### ✨ Added

#### Runtime

- `fx.clock.ago()`, `fromNow()`, and `duration()` — relative instants and spans, using the same duration strings as `every()` and `sleep()`.

#### Docs

- Clock, Flow, and fx pages document `ago` / `fromNow` / `duration` and replace `now() - 30 * 24 * 60 * 60 * 1000` with `ago("30d")`.

## v0.13.0 — 2026-08-18

### ✨ Added

#### Runtime

- `store.kv(name, { durable: true })` persists that namespace in SQL (`oke_kv` JSONB on `DATABASE_URL`). Cache namespaces stay on `REDIS_URL`. Expired keys are hidden on read and deleted on write/open.

#### Docs

- Store, Redis/Valkey/Dragonfly recipes, and env/config pages document durable KV as a SQL table — not a second Redis.

- Site header adds two square actions before GitHub — a light/dark toggle and an npm cube (brand red) linking to the published package.

### ♻️ Changed

#### Docs

- Homepage hero lattice is now an isometric Three.js field — eight rounded slabs with real thickness, two-letter lid marks, and a hover / idle lift instead of the flat periodic-table grid.

- Homepage hero headline is now two beats — One law. / Eight elements. — the Ten exports. line and its proof panel are gone (exports still live in the vocabulary band).

### 🐛 Fixed

#### Docs

- Hero lattice no longer flashes white on dark-mode refresh, and the canvas stays transparent so the page background shows through. Slabs now use a clean two-material keycap build: neutral matte lids with a subtle metal edge, and walls painted with each element's color so the depth reads clearly in both themes.
