Beta 0.84.0
Usage you can see, sign-in that lands, schema that mutates like data
Studio shows storage, traffic, and compute — and a 429 names the quota it hit. Portal magic links take you into the app with branded mail. Kind updates fold dataFields through the same mutation tree as data, and queries can bind co-kind fields that are not in $kinds.
- Usage meters and hard quotas. Space usage shows storage, traffic, and compute. Caps reject with
QUOTA_EXCEEDEDand the named quota instead of a generic limit. - Co-kind fields without changing the selector.
$fieldsand$filtercan bind a field declared only on another kind the unit also has. ExpectOFF_SELECTOR_FIELD_BINDwhen that name is off the selected$kinds. - Kind
dataFieldson update. Add, patch, or delete fields inside a kind update; they fold to canonical field ops. Schema mutations now share the data mutation planner.
- Magic links land in the app. Challenge completion is a 303 into engine onboarding, not a JSON dump. Auth emails are branded, and the first Resend attempt is waited on for up to a second.
- MCP must pick a Space. Connect approval cannot skip the Space selector; Better Auth owns the authorize handshake.
- Credential rotation keeps the same principal. Rotating an MCP or agent credential no longer rewrites who the grant is.
- BlitzCRM role paths match the engine. The template no longer uses dotted role traversal the portal-op validator rejects.
- Unsorted queries order by
$iid, not$id.$idis a per-kind claim map and has no total order. Nested expands default the same way. Pass$sort: "$id"if you need public-id order. - Kind field DX is
valueType, nottype. Inlinefields: []and the legacytypekey are rejected. Updating or deleting an inherited-only field errors instead of no-op’ing.