Skip to content

0.3.0

Choose a tag to compare

@seriouslysean seriouslysean released this 10 Sep 18:17
· 339 commits to main since this release
e3fd46d

Fixes every finding from the 0.2.1 audit. One API change, which is why this is 0.3.0 and not 0.2.2.

Breaking

  • Signal gains sessionID, stamped at record time. SignalBatch loses it. A custom SignalTransport that read batch.sessionID reads signal.sessionID now.
  • A 0.2.x queue file is unreadable to 0.3.0 and is purged on first load; the signals in it are lost. The retention record is unaffected.

Consent and erasure

  • A batch built before a reset() or a decline cannot go out, and an outcome for it cannot touch what replaced it.
  • The identifier provider, the retention save and clear, and the purge all run under the recorder's lock; an erase waits for the purge to reach disk before returning.
  • Erasure clears the session id and the cached environment.
  • The adapter no longer writes a debug envelope file.
  • RetentionStore and SignalQueueStorage conformances must not call back into the recorder; the doc comments say so.

Queue

  • A purge whose delete is refused overwrites the file in place.
  • Acknowledged batches are removed by counting front evictions, so an overflow during a send no longer resends.
  • A non-finite measure is coerced to nil by Signal, on construction and on decode.
  • A signal recorded during the last batch of a drain is delivered without waiting for the next record.
  • A nil identifier backs off instead of waking every interval.
  • Intervals must be finite and positive; a backoff cap below the interval floors at the interval.
  • Corrupt retention counts saturate instead of trapping.

Prose and gates

  • STABILITY.md lists the whole public surface and states the 0.3.0 move.
  • Install snippets pin exact:.
  • The package's own leak scan reads the index, refuses numbered issue URLs, and scans history in CI.

Payload version stays 2.0.0.