✨ New features
- AppendRecords (Dynamic Consistency Boundary) — atomically append across multiple streams with cross-stream consistency checks (v2
StreamsService). Requires server support (KurrentDB 25.1+). - BatchAppend — high-throughput pipelined multi-stream append over v1
BatchAppend; non-atomic with per-item results, for bulk writes. - Server-side
$allfiltering — filter$allreads on the server by stream name or event type, with prefix or regex matching. - Per-call credentials & Bearer auth — override authentication per operation via
.authenticated(_:), and authenticate with Bearer tokens for multi-tenant / per-request authorization. - StreamFilter —
SubscriptionFilteris renamed toStreamFilter(the old name is deprecated) and shared across subscriptions and filtered reads.
🔧 Fixes
- Persistent subscription connection lifecycle — connection tasks are now owned and torn down deterministically; connection failures are observable instead of silently swallowed; node-level drops surface as
KurrentError.subscriptionDroppedwith the resume position;$allsubscription read errors are wrapped consistently asKurrentError. - Fixed an intermittent CI hang in
testReplayParkedcaused by a park/replay race.
Full Changelog: 2.0.3...2.1.0