Maurice
5bb45bc188
feat(offline): stamp queued writes with their format and skip newer ones on replay
...
A queued write outlives the bundle that wrote it. After a deploy a tab can
still run the previous bundle, and an install can be rolled back, so a row
written by a newer build may be replayed by an older one that does not know
its shape.
Each row enqueue() writes now carries schemaVersion (MUTATION_SCHEMA_VERSION)
and the UI build that queued it. Both fields are optional, so rows queued
before this read as format 1 and replay as before. A flush leaves a row from a
newer format in the queue without sending, marking or dropping it, and holds
back the later writes to the same entity as it does behind a parked write, so
they keep their order until a build that knows the format replays them.
2026-10-08 18:38:29 +02:00
..
2026-09-28 13:19:04 +02:00
2026-07-18 22:13:52 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-08 14:11:54 +02:00
2026-10-01 19:40:22 +02:00
2026-08-25 12:36:52 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-08 18:38:28 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-09-28 12:19:49 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-09-19 21:45:16 +02:00
2026-10-01 19:40:22 +02:00
2026-10-08 18:38:29 +02:00
2026-10-08 14:11:54 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-07 17:11:56 +02:00
2026-10-08 13:02:57 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-08 13:04:43 +02:00
2026-10-07 17:11:56 +02:00
2026-09-20 12:48:44 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-08 00:01:59 +00:00
2026-10-01 19:40:22 +02:00
2026-10-04 16:20:16 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-04-20 10:11:53 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-07 17:11:56 +02:00
2026-10-08 18:38:29 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-08-25 12:36:52 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-04 16:20:16 +02:00
2026-09-25 09:19:11 +02:00
2026-10-07 17:11:56 +02:00
2026-09-25 09:19:11 +02:00
2026-09-20 12:11:41 +02:00
2026-09-25 01:24:55 +00:00
2026-10-01 09:22:37 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-06 19:27:30 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-09-29 21:16:26 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-06 19:27:30 +02:00
2026-10-01 19:40:22 +02:00
2026-10-08 14:11:54 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-10-01 19:40:22 +02:00
2026-09-28 12:19:49 +02:00