Changelog

What shipped.

Model and runtime releases, most recent first.

Metal compositor on device

July 2026. The compositor now runs on the GPU with bit-exact parity against the CPU path — verified at max absolute difference 0 on an iPhone Air, where it measured 2.94× faster. Parity is asserted at launch; the Metal path refuses to enable itself if it does not match.

Audio encoder: 404 MB to 6.8 MB

July 2026. Replaced Wav2Vec2-L15 with FeatherHuBERT at the same tensor boundary. Cosine agreement 0.999998 against the teacher, MAE well inside the registered gate. This is the change that made the whole pipeline fit on a phone.

Weight-only int8 for geometry and renderer

July 2026. Roughly halved model size with no measurable quality loss on the frozen gates. Static activation quantisation was tested and rejected — it collapses on the gated and attention layers, so we ship weight-only.

Listening and acknowledgement states

July 2026. The character now reacts while the user is speaking rather than idling identically through the whole conversation. Segment graph with seam validation on every mined corpus; a nod is an overlay with a cooldown, not a state swap.

Web runtime: 543 MB to 164 MB

July 2026. Feather port plus packed asset banks. Cold wire transfer dropped from 108.6 to 52.7 MiB with Brotli, and model opening now overlaps the remaining downloads instead of blocking on them.

We publish releases here when they change what you can ship, not when we merge a branch.