Skip to content

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 25 Sep 08:41
3da9658

0.1.0 (2026-09-25)

Features

  • Ability for an entity to reserve DELETE for trusted writes (a85a506)
  • Add full-text search with relevance ranking (28bff8f)
  • Add one-hop query support for relations (5032134)
  • Allow collaborative text fields inside keyed-list elements and map values (5a25573)
  • Allow grouping a match set by a path, with counts or distinct values (53192c7)
  • Allow limiting which fields a client can write (223b97a)
  • Allow oneof use for references (16ca1db)
  • Allow syncing only certain fields (3c2f02f)
  • client: Add devtools for easier debugging (4c0468b)
  • client: Add purgeLocalData for local sign-out (d6cd206)
  • client: Add storagePrefix option (0b2b9fd)
  • client: Add syncplane/testing for easier testing (e8df539)
  • client: Add useQueryAll hook for React (7a589e4)
  • client: Batch include hydration and add per-relation options (b539af2)
  • client: Cache movable lists (19f3f12)
  • client: Coalesce a burst of local writes into one push (1f15878)
  • client: Cut local index storage by a third and speed up entity scans (818de3d)
  • client: Examine large semi-join membership moves in probe-sized batches (f7bcb5e)
  • client: Fast path for search postings (5bf4da2)
  • client: Hydrate include trees with one read per relation instead of one per row (14d2d8b)
  • client: Improve bootstrap performance by overlapping decoding with store writes (a84ca1e)
  • client: Improve query and indexing speeds (cdd2cac)
  • client: Improve querying performance with focus on total counts (b6fd692)
  • client: Local queries report which path answered them through onSyncEvent (e2d0e52)
  • client: Push the changes that happened mid-push before pulling (4e0ff7c)
  • client: Rank a byWorkspace query by relevance (9d2dd81)
  • client: Read rows across workspaces by ref, and add useRowsAll (47db376)
  • client: Read rows by key without deriving the entity, and add useRows (a8e450c)
  • client: Scope cross-workspace reads to named workspaces (d276525)
  • client: Serve cross-workspace queries from secondary indexes (b96cb5f)
  • client: Serve indexed queries as soon as a cold bootstrap completes (92d346a)
  • client: Speed up watcher scope prune (bd1f16c)
  • client: Support for scoped undo management (e11e7f2)
  • client: Support movable window and totals for live query results (8a35d42)
  • Cross-namespace referencing of objects (3b5f9eb)
  • engine: Add MaxResyncScan to bound delta-resync work per Pull (e05bda2)
  • engine: Add work queries so maintenance passes skip idle workspaces (4fbdf46)
  • engine: Batch queued pokes into one NOTIFY round trip (fccfdb6)
  • engine: Dedup background work across nodes with per-workspace leases (8e2f6a4)
  • engine: Enumerate index candidates by key without reading the rows twice (56a6e7b)
  • engine: Hash-partition support for pgstore (41f1593)
  • engine: Improve background index build performance (421c234)
  • engine: Judge pgstore compatibility by what migrations did not version (e48addd)
  • engine: Let a deployment turn off SQLite's memory-mapped reads (3916fc5)
  • engine: Let text compaction run as its own sweep instead of as part of GC (e84ca8d)
  • engine: Load data in batches when querying via index (d417b29)
  • engine: Maintain a forward follow closure from what changed instead of rebuilding it (8667aea)
  • engine: Prepare SQLite statements once per pool and reuse them across transactions (35cc870)
  • engine: Read a row's recorded actor and version through GetMeta (337b588)
  • engine: Refuse text inside repeated/map elements and list identities inside a oneof (f3f5c2f)
  • engine: Serve delta resync from indexes instead of scanning the workspace (cd4a4dd)
  • engine: Serve partial bootstraps from indexes, closures and windows (bb8496b)
  • engine: Speed up following subscriptions (e2475d6)
  • engine: Subscribe to a workspace set through one wake channel instead of a goroutine per scope (9c785e9)
  • engine: Wake the listener for a new channel without dropping its session (c342eca)
  • engine: Write only the index entries a row write changes (37a782b)
  • Entities can now declare who may create and update their rows (aa1e2fa)
  • Faceting support for queries (1703088)
  • Feed cursors now name the store that issued them for safety (88a4474)
  • Improve performance of pull via incremental window and closure membership (92ee35d)
  • Improve querying and indexing for maps (eee9ba7)
  • Initial version (04e6d1e)
  • Introduce presence via the concept of rooms (97a7521)
  • Limit workspace names to ASCII alphanumerics and a few control characters (9c26b21)
  • Make text compaction linear in document size (6401917)
  • Merge repeated workspace-qualified references per element, (74d4a96)
  • Persist cursor membership to avoid large cursors on the client (3bd3e34)
  • Pick the narrowest ordered index for queries, not the first declared (0365802)
  • Read the first rows of each group instead of every row (cd02056)
  • Reduce cost of seeking with cursors (67622d0)
  • Serve or filters, BETWEEN ranges and presence checks from indexes (5be1341)
  • server: Clients no longer receive tombstones for hidden rows they never held (262fcf4)
  • Stable reverse relation names and ability to give them specific names (dafe976)
  • Store write attribution as subject/system (6cd0587)
  • Support for before/after cursors for queries (907e53c)
  • Support for storing history of entities (77c7355)
  • Support serving data from read-replicas when using Postgres (4919952)
  • Support syncing a row on-demand via holding it (70b7f1a)
  • Warn when trying patch a row that doesn't exist (fc2deb9)

Bug Fixes

  • A live subscription no longer restates the client's whole membership on every change (8317047)
  • A rejected edit no longer vanishes silently when a push response is lost (b2f2d62)
  • client/react: Make useRow's compare-and-swap opt-in (523d9a9)
  • client: A dead-letter that fails mid-way no longer wedges the queue (e6a7af6)
  • client: A mutation the server fails no longer wedges the queue forever (475ef59)
  • client: Adding a workspace mid-session no longer drops its queued edits (0f0f1d5)
  • client: An unapplicable queued mutation no longer wedges a workspace (d4edfd5)
  • client: Close mutation-id gaps that can wedge a workspace queue (8dd7555)
  • client: Edits made after a store format upgrade no longer go missing (4dcc222)
  • client: Fold pending mutations that share a CAS guard (2548b97)
  • client: Other tabs no longer lose edits after a store format upgrade (a803748)
  • client: Re-adding a purged workspace no longer breaks future editing (fd28944)
  • Clients no longer re-bootstrap per text edits to an undecodable entity (474c80f)
  • client: Spread reconnects across the whole backoff window, and pace the presence stream (9b816c7)
  • client: Stop a compaction from dropping typed text and re-sending a barrier mutation (7faf1a6)
  • client: Stop online edits from stalling behind full-scope watch rescans (7c81015)
  • client: Text editing no longer dies with a "different placement" merge conflict (ab0d6f5)
  • client: Text writer identities stay unique in browsers without Web Locks (0e03508)
  • client: Undoing a delete now conflicts instead of overwriting a row that took the key (64ae63b)
  • client: Whole-value text writers now coalesce into word-sized undo groups (9767f75)
  • engine: Stop a co-present user from evicting or overwriting another's presence (a652cfb)
  • engine: Stop a paged pull from skipping a tombstone GC removed at the cursor's version (864a847)
  • engine: Stop a pull from issuing three queries per changed row of a followed window (0835479)
  • engine: Stop GC from letting an old push overwrite newer writes (e0fa49b)
  • engine: Stop leaking authentication errors to clients (7d879cc)
  • engine: Stop losing followed rows after changing subscriptions (eca80c1)
  • engine: Stop one-row change from costing a full referrer scan per included target on Pull (d03698c)
  • engine: Stop the pull after a subscription change from shipping text deltas for rows the client never received (b336cbb)
  • engine: Stop windowed pulls on PostgreSQL failing after a change-log scan (2994a56)

Performance Improvements

  • Ack a whole push batch with one watermark write per client (6b68d44)
  • client: Apply projected decoding and size-based index pricing to groupCount, distinct and groupRows (44b90e8)
  • client: Decode only the fields needed for queries, for example for pure filtering and factes (67b1256)
  • client: Decode only the searchable fields when a match query falls back to a scan (d76b0ba)
  • client: Keep local queries fast when many writes are waiting to sync (5c3151c)
  • client: Memoize descriptor-derived reference and field-behavior lookups (5ed51f0)
  • client: Overlap IndexedDB reads with row decoding on full-entity scans (eac49cb)
  • client: Read index-served rows in bulk instead of one IndexedDB request per row (3c409e4)
  • client: Skip the second IndexedDB round trip when a local edit notifies watchers (f4896bb)
  • client: Stop decoding every pending row whole on each indexed query (07005f1)
  • client: Store search positions in their own record so most row updates skip them (619802f)
  • engine: Batch of mutations to PostgreSQL (405da77)
  • engine: Make Postgres pushes faster by inserting only new index entries (67210d2)
  • engine: Reduce number of Postgres roundtrips needed to answer a catch-up pull (7bb6962)
  • engine: Resolve followed reference targets in batches (e06db1b)
  • Keep a live query over a large result fast by rebuilding only the rows a write moved (ed73a53)
  • Make local edits faster by reading a write's rows in one IndexedDB transaction (af0951a)
  • Serve faceted queries from the index instead of a full scan when beneficial (c6fc5bd)