2026-03-08 23:12:54 -07:00
|
|
|
# Changelog
|
|
|
|
|
|
feat(ds-stream): v2.0-2.3 composable codec pipeline
v2.0 — Pipeline Architecture
- Frame, CodecResult, Codec trait, Pipeline builder
- 6 adapters: Passthrough, Dedup, Compress, Pacer, Slicer, Stats
v2.1 — Multi-frame & new codecs
- CodecOutput::Many fan-out, EncryptCodec, FilterCodec
- Codec::reset(), encode_all/decode_all, real SlicerCodec chunking
v2.2 — Observability & reassembly
- PipelineResult (frames+errors+consumed), StageMetric
- ReassemblyCodec, ConditionalCodec, Pipeline presets & metrics
v2.3 — Integrity & rate control
- ChecksumCodec (CRC32), RateLimitCodec (token bucket), TagCodec
- Pipeline::chain(), Pipeline::describe()
13 codec adapters, 474 tests (all green, 0 regressions)
2026-03-11 23:50:35 -07:00
|
|
|
## [2.3.0] - 2026-03-11 — Pipeline v4
|
|
|
|
|
|
|
|
|
|
### Added
|
|
|
|
|
- **`ChecksumCodec`** — CRC32 integrity: append on encode, verify+strip on decode, Error on mismatch
|
|
|
|
|
- **`RateLimitCodec`** — Token bucket algorithm (burst-tolerant, refills over time)
|
|
|
|
|
- **`TagCodec`** — Attach channel ID for mux routing, drop wrong-channel frames on decode
|
|
|
|
|
- **`Pipeline::chain()`** — Compose two pipelines into one
|
|
|
|
|
- **`Pipeline::describe()`** — Human-readable dump (`dedup → compress → encrypt`)
|
|
|
|
|
- Error propagation tested — corrupt checksum → `PipelineResult.errors`
|
|
|
|
|
- 474 total tests (+13 new)
|
|
|
|
|
|
|
|
|
|
## [2.2.0] - 2026-03-11 — Pipeline v3
|
|
|
|
|
|
|
|
|
|
### Added
|
|
|
|
|
- **`PipelineResult`** — returns frames + collected errors + consumed count
|
|
|
|
|
- **`StageMetric`** — per-stage frames_in/frames_out/consumed/errors observability
|
|
|
|
|
- **`ReassemblyCodec`** — reassemble chunked frames (counterpart to SlicerCodec)
|
|
|
|
|
- **`ConditionalCodec`** — wrap any codec with runtime enable/disable toggle
|
|
|
|
|
- **`Pipeline::signal(key)`** — preset: dedup→compress→encrypt
|
|
|
|
|
- **`Pipeline::media(mtu)`** — preset: compress→slicer
|
|
|
|
|
- **`Pipeline::metrics()`** — per-stage counter snapshot
|
|
|
|
|
- Slicer↔Reassembly roundtrip verified
|
|
|
|
|
- 461 total tests (+12 new)
|
|
|
|
|
|
|
|
|
|
## [2.1.0] - 2026-03-11 — Pipeline v2
|
|
|
|
|
|
|
|
|
|
### Added
|
|
|
|
|
- **`CodecOutput::Many`** — codecs can fan-out (1 frame → N frames)
|
|
|
|
|
- **`EncryptCodec`** — XOR cipher encrypt/decrypt adapter
|
|
|
|
|
- **`FilterCodec`** — drop frames by type (`FilterCodec::drop_control()`)
|
|
|
|
|
- **`Codec::reset()`** — clear internal state on reconnect
|
|
|
|
|
- **`Pipeline::encode_all/decode_all`** — batch frame processing
|
|
|
|
|
- **`SlicerCodec`** rewritten — real MTU chunking via `Many`
|
|
|
|
|
- Full roundtrip test — Compress→Encrypt→encode→decode→verify
|
|
|
|
|
- 449 total tests (+11 new)
|
|
|
|
|
|
|
|
|
|
## [2.0.0] - 2026-03-11 — Pipeline Architecture 🏗️
|
|
|
|
|
|
|
|
|
|
### Added
|
|
|
|
|
- **[NEW] `pipeline.rs`** — `Frame`, `CodecResult`, `Codec` trait, `Pipeline` builder
|
|
|
|
|
- **6 codec adapters** — `PassthroughCodec`, `DedupCodec`, `CompressCodec`, `PacerCodec`, `SlicerCodec`, `StatsCodec`
|
|
|
|
|
- 15 pipeline tests (438 total)
|
|
|
|
|
|
|
|
|
|
## [1.6.0] - 2026-03-11
|
|
|
|
|
|
|
|
|
|
### Added
|
|
|
|
|
- **`AesFrameCipher`** — XOR-rotate frame cipher with configurable key and round tracking (encrypt, decrypt, rounds, reset)
|
|
|
|
|
- **`LossInjector`** — deterministic packet loss simulation for testing (should_deliver, total_dropped, reset)
|
|
|
|
|
- **`StreamCheckpoint`** — serializable stream state snapshot as 32 bytes (capture, to_bytes, from_bytes)
|
|
|
|
|
- 10 new tests (333 total)
|
|
|
|
|
|
|
|
|
|
## [1.5.0] - 2026-03-11
|
|
|
|
|
|
|
|
|
|
### Added
|
|
|
|
|
- **`ContentDedup`** — hash-based frame deduplication (check, dedup_count, reset)
|
|
|
|
|
- **`StreamHealthTracker`** — latency/throughput/loss tracking
|
|
|
|
|
- **`FrameThrottler`** — FPS-based frame throttling
|
|
|
|
|
- 10 new tests (323 total)
|
|
|
|
|
|
|
|
|
|
## [1.4.0] - 2026-03-11
|
|
|
|
|
|
|
|
|
|
### Added
|
|
|
|
|
- **`SessionRecorder`** — frame recording with timestamps
|
|
|
|
|
- **`PriorityScheduler`** — priority-based frame scheduling
|
|
|
|
|
- **`BandwidthLimiter`** — token bucket rate limiter
|
|
|
|
|
- 10 new tests (313 total)
|
|
|
|
|
|
|
|
|
|
## [1.3.0] - 2026-03-11
|
|
|
|
|
|
|
|
|
|
### Added
|
|
|
|
|
- **`QualityDecision`** / **`QualityPolicy`** — adaptive quality
|
|
|
|
|
- **`FrameLayerCompositor`** — multi-source compositing
|
|
|
|
|
- **`ReorderBuffer`** — out-of-order frame reordering
|
|
|
|
|
- 12 new tests (303 total)
|
|
|
|
|
|
|
|
|
|
## [1.2.0] - 2026-03-11
|
|
|
|
|
|
|
|
|
|
### Added
|
|
|
|
|
- **`HapticPayload`** / **`haptic_frame()`** — haptic vibration
|
|
|
|
|
- **`batch_frames/unbatch_frames`** — frame coalescing
|
|
|
|
|
- **`StreamDigest`** / **`ChannelAuth`** — integrity + auth
|
|
|
|
|
- 14 new tests (291 total)
|
|
|
|
|
|
|
|
|
|
## [1.1.0] - 2026-03-11
|
|
|
|
|
|
|
|
|
|
### Added
|
|
|
|
|
- **`FrameType::Error`** / **`ErrorPayload`** — error frames
|
|
|
|
|
- **`encrypt_frame/decrypt_frame`** — XOR envelope
|
|
|
|
|
- **`FrameRouter`** — content-based dispatch
|
|
|
|
|
- 13 new tests (277 total)
|
|
|
|
|
|
engine: v0.90–v1.0.0 milestone 🎉
v0.90: World Layers, Stream Encryption V2, Multi-Channel
- ds-physics: set/get layer, gravity scale, angular vel, body type, world gravity, freeze/unfreeze, body tag (183 tests)
- ds-stream: XorCipherV2, ChannelRouter, AckTracker, FramePoolV2, BandwidthEstimatorV2, PriorityMux, NonceGenerator, StreamValidator, RetryQueue (246 tests)
- ds-stream-wasm: 9 exports (156 tests)
v0.95: Scene Graph, Stream Compression V2, Telemetry
- ds-physics: body count all, step count, get gravity, is frozen, get color, AABB, raycast, restitution, emitter count (192 tests)
- ds-stream: Lz4Lite, TelemetrySink, FrameDiffer, BackoffTimer, StreamMirror, QuotaManager, HeartbeatV2, TagFilter, MovingAverage (255 tests)
- ds-stream-wasm: 9 exports (165 tests)
v1.0.0: Production Ready — ECS Foundation, Stream Pipeline, Protocol Finalization
- ds-physics: get tag, body list, impulse, mass, friction, world bounds, body exists, reset world, engine version (201 tests)
- ds-stream: StreamPipeline, ProtocolHeader, FrameSplitterV2, CongestionWindowV2, StreamStatsV2, AckWindow, CodecRegistryV2, FlowControllerV2, VersionNegotiator (264 tests)
- ds-stream-wasm: 9 exports (174 tests)
Total: 639 tests across 3 packages
2026-03-11 14:58:39 -07:00
|
|
|
## [1.0.0] - 2026-03-11 🎉
|
2026-03-08 23:12:54 -07:00
|
|
|
|
2026-03-10 21:07:22 -07:00
|
|
|
### Added
|
feat(ds-stream): v2.0-2.3 composable codec pipeline
v2.0 — Pipeline Architecture
- Frame, CodecResult, Codec trait, Pipeline builder
- 6 adapters: Passthrough, Dedup, Compress, Pacer, Slicer, Stats
v2.1 — Multi-frame & new codecs
- CodecOutput::Many fan-out, EncryptCodec, FilterCodec
- Codec::reset(), encode_all/decode_all, real SlicerCodec chunking
v2.2 — Observability & reassembly
- PipelineResult (frames+errors+consumed), StageMetric
- ReassemblyCodec, ConditionalCodec, Pipeline presets & metrics
v2.3 — Integrity & rate control
- ChecksumCodec (CRC32), RateLimitCodec (token bucket), TagCodec
- Pipeline::chain(), Pipeline::describe()
13 codec adapters, 474 tests (all green, 0 regressions)
2026-03-11 23:50:35 -07:00
|
|
|
- Core streaming: pipeline, protocol, splitter, congestion, stats, ACK, codec, flow control, version negotiation
|
engine: v0.90–v1.0.0 milestone 🎉
v0.90: World Layers, Stream Encryption V2, Multi-Channel
- ds-physics: set/get layer, gravity scale, angular vel, body type, world gravity, freeze/unfreeze, body tag (183 tests)
- ds-stream: XorCipherV2, ChannelRouter, AckTracker, FramePoolV2, BandwidthEstimatorV2, PriorityMux, NonceGenerator, StreamValidator, RetryQueue (246 tests)
- ds-stream-wasm: 9 exports (156 tests)
v0.95: Scene Graph, Stream Compression V2, Telemetry
- ds-physics: body count all, step count, get gravity, is frozen, get color, AABB, raycast, restitution, emitter count (192 tests)
- ds-stream: Lz4Lite, TelemetrySink, FrameDiffer, BackoffTimer, StreamMirror, QuotaManager, HeartbeatV2, TagFilter, MovingAverage (255 tests)
- ds-stream-wasm: 9 exports (165 tests)
v1.0.0: Production Ready — ECS Foundation, Stream Pipeline, Protocol Finalization
- ds-physics: get tag, body list, impulse, mass, friction, world bounds, body exists, reset world, engine version (201 tests)
- ds-stream: StreamPipeline, ProtocolHeader, FrameSplitterV2, CongestionWindowV2, StreamStatsV2, AckWindow, CodecRegistryV2, FlowControllerV2, VersionNegotiator (264 tests)
- ds-stream-wasm: 9 exports (174 tests)
Total: 639 tests across 3 packages
2026-03-11 14:58:39 -07:00
|
|
|
- 9 new tests (264 total)
|