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)
98 lines
3.8 KiB
Markdown
98 lines
3.8 KiB
Markdown
# Changelog
|
|
|
|
## [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)
|
|
|
|
## [1.0.0] - 2026-03-11 🎉
|
|
|
|
### Added
|
|
- Core streaming: pipeline, protocol, splitter, congestion, stats, ACK, codec, flow control, version negotiation
|
|
- 9 new tests (264 total)
|