Skip to content

v1.6.0

@VistaApps-za VistaApps-za tagged this 10 Jun 13:02
`backend/docs/event-envelope-spec-v1.md`).

**Added:**

- **`envelopeVersion: 1`** (integer) on every batch POST body. Both the
  queue-flush path (`EventQueue.flush()`) and the direct `ingest()` path
  now emit this field. The server will reject payloads missing this field
  once ingest enforcement lands.
- **`seq`** (number) on every wire event — per-session monotonic sequence
  number. Captured synchronously with the event's `timestamp` at
  `track()` / enqueue time. Counter starts at 0 when the `CrossdeckServer`
  instance is constructed (session start) and increments once per event.
  Matches spec §3: monotonic within a session, never reset between
  background/foreground (Node has no such lifecycle; the instance lifetime
  IS the session).
- **`context`** (object) on every wire event — standardized device/platform
  context (spec §4), promoted out of `properties`. Common fields: `os`,
  `osVersion`, `appVersion`, `sdkName`, `sdkVersion`, `locale`, `timezone`.
  Node-specific: `nodeVersion`, `host`, `region` (the existing
  `runtime.*` props, promoted).

**Changed:**

- `track()` no longer merges `runtime.*` keys into `properties`. Those
  facts now live in the top-level `context` object on the wire event.
  Super-properties registered via `server.register()` continue to appear
  in `properties` unchanged (caller-supplied values are unaffected).
Assets 2
Loading