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)
14 KiB
14 KiB
Changelog
All notable changes to this project will be documented in this file.
[Unreleased]
🏗️ Engine v2.3.0 — ds-stream Pipeline v4 — 2026-03-11
ChecksumCodec— CRC32 integrity: append on encode, verify+strip on decode, Error on mismatchRateLimitCodec— Token bucket algorithm (burst-tolerant, refills over time)TagCodec— Attach channel ID for mux routing, drop wrong-channel frames on decodePipeline::chain()— Compose two pipelines into onePipeline::describe()— Human-readable dump (dedup → compress → encrypt)- Error propagation tested — Corrupt checksum →
PipelineResult.errorscollects the error - 474 total ds-stream tests (+13 new)
🏗️ Engine v2.2.0 — ds-stream Pipeline v3 — 2026-03-11
PipelineResult— returns frames + collected errors + consumed countStageMetric— per-stage frames_in/frames_out/consumed/errors observabilityReassemblyCodec— reassemble chunked frames (counterpart to SlicerCodec)ConditionalCodec— wrap any codec with runtime enable/disable togglePipeline::signal(key)— preset: dedup→compress→encryptPipeline::media(mtu)— preset: compress→slicerPipeline::metrics()— per-stage counter snapshot- Slicer↔Reassembly roundtrip — verified end-to-end chunk→reassemble
- 461 total ds-stream tests (+12 new)
🏗️ Engine v2.1.0 — ds-stream Pipeline v2 — 2026-03-11
CodecOutput::Many— codecs can fan-out (1 frame → N frames)EncryptCodec— XOR cipher encrypt/decrypt adapterFilterCodec— drop frames by type (FilterCodec::drop_control())Codec::reset()— clear internal state on reconnectPipeline::encode_all/decode_all— batch frame processingSlicerCodecrewritten — real MTU chunking viaMany(no more truncation)- Full roundtrip test — Compress→Encrypt→encode→decode→verify original
- 449 total ds-stream tests (+11 new)
🏗️ Engine v2.0.0 — ds-stream Pipeline Architecture — 2026-03-11
- [NEW]
pipeline.rs—Frame,CodecResult,Codectrait,Pipelinebuilder - 6 codec adapters —
PassthroughCodec,DedupCodec,CompressCodec,PacerCodec,SlicerCodec,StatsCodec - 15 pipeline tests — frame roundtrip, pipeline composition, per-codec verification (438 total ds-stream tests)
🚀 Engine v1.15.0 — 2026-03-11
- ds-stream —
StreamStats1150,PacketCoalescer,ErrorBudget(423 tests) - ds-stream-wasm —
stats_v1150,coal_v1150,ebudget_v1150WASM bindings (281 tests) - ds-physics —
find_fastest_body_v1150,get_total_mass_v1150,apply_magnet_v1150,get_body_angle_v1150(350 tests)
🚀 Engine v1.14.0 — 2026-03-11
- ds-stream —
PriorityQueue1140,LatencyTracker1140,FrameWindow(413 tests) - ds-stream-wasm —
pq_v1140,lat_v1140,fw_v1140WASM bindings (274 tests) - ds-physics —
get_body_aabb_v1140,get_max_speed_v1140,apply_buoyancy_v1140,is_body_colliding_v1140(340 tests)
🎯 Engine v1.13.0 — 2026-03-11 — 1,000 TESTS MILESTONE
- ds-stream —
ChannelMux1130,FrameSlicer,BandwidthProbe(403 tests) - ds-stream-wasm —
mux_v1130,slicer_v1130,probe_v1130WASM bindings (267 tests) - ds-physics —
get_body_distance_v1130,get_world_centroid_v1130,apply_wind_v1130,count_bodies_in_radius_v1130(330 tests)
🚀 Engine v1.12.0 — 2026-03-11
- ds-stream —
FrameFingerprint,AdaptiveBitrate1120,JitterBuffer1120(393 tests) - ds-stream-wasm —
fingerprint_v1120,abr_v1120,jitter_v1120WASM bindings (260 tests) - ds-physics —
get_contact_count_v1120,get_world_momentum_v1120,apply_vortex_v1120,get_body_inertia_v1120(320 tests)
🚀 Engine v1.11.0 — 2026-03-11
- ds-stream —
FrameDropPolicy,StreamTimeline,PacketPacer(383 tests) - ds-stream-wasm —
drop_policy_v1110,timeline_v1110,pacer_v1110WASM bindings (253 tests) - ds-physics —
get_world_aabb_v1110,get_total_angular_ke_v1110,apply_drag_field_v1110,get_body_speed_v1110(310 tests)
🚀 Engine v1.10.0 — 2026-03-11
- ds-stream —
FrameRateLimiter,DeltaAccumulator,ConnectionGrade(373 tests) - ds-stream-wasm —
rate_limit_v1100,delta_accum_v1100,conn_grade_v1100WASM bindings (246 tests) - ds-physics —
get_body_rotation_v1100,get_energy_ratio_v1100,apply_explosion_v1100,get_nearest_body_v1100(300 tests)
🚀 Engine v1.9.0 — 2026-03-11
- ds-stream —
SequenceValidator,FrameTagMap,BurstDetector(363 tests) - ds-stream-wasm —
seq_v190,burst_v190,tag_v190WASM bindings (239 tests) - ds-physics —
get_gravity_v190,get_body_mass_v190,apply_central_impulse_v190,get_total_potential_energy_v190(290 tests)
🚀 Engine v1.8.0 — 2026-03-11
- ds-stream —
RingMetric180,FrameCompactor,RetransmitQueue(353 tests) - ds-stream-wasm —
ring_v180,compactor_v180,retransmit_v180WASM bindings (232 tests) - ds-physics —
set/get_angular_damping_v180,set_restitution_v180,sleep/wake_body_v180,count_sleeping_v180(280 tests)
🚀 Engine v1.7.0 — 2026-03-11
- ds-stream —
DelayBuffer170,PacketInterleaver,HeartbeatWatchdog(343 tests) - ds-stream-wasm —
loss_v170,watchdog_v170,interleave_v170WASM bindings (225 tests) - ds-physics —
set/get_linear_damping_v170,is_out_of_bounds_v170,clamp_velocities_v170,count_dynamic_bodies_v170(270 tests)
🚀 Engine v1.6.0 — 2026-03-11
- ds-stream —
AesFrameCipher,LossInjector,StreamCheckpoint(333 tests) - ds-stream-wasm —
throttle_v160,cipher_v160,checkpoint_v160WASM bindings (218 tests) - ds-physics —
get_body_type_v160,get_world_center_of_mass_v160,apply_gravity_well_v160,get_total_kinetic_energy_v160(260 tests)
🚀 Engine v1.5.0 — 2026-03-11
- ds-stream —
ContentDedup,StreamHealthTracker,FrameThrottler(323 tests) - ds-stream-wasm —
bw_limiter_v150,dedup_v150,metrics_v150WASM bindings (211 tests) - ds-physics —
apply_force_field_v150,freeze/unfreeze_body_v150,get_distance_v150,get_angular_momentum_v150(250 tests)
🚀 Engine v1.4.0 — 2026-03-11
- ds-stream —
SessionRecorder,PriorityScheduler,BandwidthLimiter(313 tests) - ds-stream-wasm —
compositor_v140,recorder_v140,priority_v140WASM bindings (204 tests) - ds-physics —
raycast_v140,get_collision_events_v140,time_scale_v140,get_body_momentum_v140(240 tests)
🚀 Engine v1.3.0 — 2026-03-11
- ds-stream —
QualityPolicy,FrameLayerCompositor,ReorderBuffer,QualityDecision+FrameMode(303 tests) - ds-stream-wasm —
quality_decide_v130,reorder_push/drain_v130,channel_auth_check_v130(197 tests) - ds-physics —
snapshot_scene_v130,restore_scene_v130,get_body_aabb_v130,apply_torque_v130(230 tests)
🚀 Engine v1.2.0 — 2026-03-11
- ds-stream —
HapticPayload,haptic_frame(),FrameBatch,StreamDigest,ChannelAuth(291 tests) - ds-stream-wasm —
haptic_message_v120,batch_frames_v120,digest_v120(190 tests) - ds-physics —
create_spring_joint_v120,get_joint_info_v120,set_body_rotation_v120,get_body_energy_v120(220 tests)
🚀 Engine v1.1.0 — 2026-03-11
- ds-stream —
FrameType::Error,ErrorPayload,ProtocolInfo,encrypt_frame/decrypt_frame,FrameRouter,error_frame()builder (277 tests) - ds-stream-wasm —
error_frame_v110,decode_error_payload,protocol_info_v110,encrypt_frame_v110/decrypt_frame_v110(183 tests) - ds-physics —
get_body_velocity_v110,set_body_position_v110,get_contact_pairs_v110,engine_version_v110(210 tests)
🚀 Features
- V2 phase 1 — array access, timer, string interpolation
- Step sequencer demo — reactive pads, playhead, BPM
- V2 built-in functions — 90+ native functions
- V2 module system — import/export with multi-file compilation
- V2 codegen hardening — scoped local variables
- Todo app demo — streamable, showcases v2 builtins
- Bidirectional signal streaming sync
- Peer mode relay + self-echo filtering for true bidirectional sync
- Per-signal version counters for conflict resolution
- Explicit signal output API for stream declarations
- 4-app signal composition demo with explicit outputs
- Chained signal composition — 3→1→final + mood mixing
- Stream composition API — select, schema, relay filtering
- Dependent types — refinement types, type aliases, type annotations
- Dependent types review — cycle detection, precision, error quality
- Component registry with styled variants, dreamstack add/convert CLI, and showcase
- Container variant props, 11-component registry, rich dashboard
- Each loop, dreamstack init, expanded registry
- When/else conditional branching
- Slot/children composition for components
- Dev server improvements - recursive watching, auto-open browser
- Dynamic lists (push/remove/pop) + TodoMVC demo
- Component event callbacks + function prop forwarding
- Upgrade init starter app to showcase all DreamStack features
- Multi-page routing demo with 4 routes
- Project Manager demo — comprehensive 4-page routed app
- Multi-statement event handlers with semicolons
- Streaming dashboard with imported components + live data
- Comprehensive streaming improvements
- HTTP /meta API, signal dedup, periodic auto-sync
- Enhanced 14 registry components + component gallery
- Expanded variant system — 30+ new CSS class mappings
- *= /= operators + 6 new array methods
- Snake game streaming via relay
- Game-pong.ds + two compiler improvements
- Keyboard input, Web Audio synthesis, and multiplayer demo
- Pong spectator viewer + stream proxy reactivity fix
- Beats viewer, score sounds, audio early-exit guards
- Core language & stream improvements
- Complete type system — HM unification, signal-aware types, effect scoping
- Tetris — signal composition showcase with 6 reactive layers
- Live signal debug panel for tetris
- Full grid collision, freeze, and T-piece support (20 rows)
- Complete tetris rewrite — flat grid, SRS rotation, ghost piece toggle
- Add Waveshare P4 panel device integration with display streaming and touch input, alongside core streaming engine
- Implement Panel IR emitter to generate JSON UI descriptions for LVGL panels.
- Implement ds-screencast engine, panel preview, and Waveshare ESP-NOW communication.
🐛 Bug Fixes
- Bidirectional streaming sync — phone→laptop now works
- Add _streamDiff to push/pop/reverse built-ins
- Streaming polish — bind diff, state snapshot, dead code cleanup
- Signal composition — stream derived signals, fix identity check, correct relay routing
- Use explicit /peer/counter channel for streaming-counter
- Integer division + streaming restart
- Component prop signal wrapping + import demo
- When/else parentNode null guard for slot context + match parser boundaries + showcase demo
- Match parser allows container bodies in arms
- Merge duplicate click props + upgrade streaming examples
- For-in parser token mismatch + enhanced step sequencer
- Reactive component props + breakout improvements
- Tetris collision detection — pieces now stack properly
- Collision off-by-one — pieces now stack adjacently
- Keyboard inputs now respect collision — soft drop and hard drop gated on blocked
- Complete collision — checks both top row and bottom cell
- Piece-type aware collision — only T-piece checks bottom cell
- No-overlap rendering — hide foot cell for non-T pieces, render all 20 rows
- I-piece now persists all 4 cells and renders at correct row
🔧 Refactoring
- Type system second pass — deeper unification throughout
- Complete collision system rewrite — decomposed sub-signals
📚 Documentation
- Add STREAM_COMPOSITION.md — full API reference and protocol spec
- Comprehensive documentation update
⚡ Performance
- Streaming core improvements — batched diffs, RTT tracking, relay merging
- Merge same-interval timers + breakout game + beats viewer
[0.1.0] - 2026-02-26
🚀 Features
- Add DreamStack project vision and detailed implementation plan documentation.
- DreamStack compiler foundation — Phase 0/1
- TodoMVC example with full reactivity
- Phase 2+3 — effects, streams, springs, search + dashboard
- Phase 3+4 — Cassowary constraint solver + type system
- Phase 5 — Live Playground with editor, preview, signal graph, console
- Showcase — What DreamStack Does That Nothing Else Can
- Dev server with file watching + poll-based HMR
- Signal propagation benchmarks + dev server HMR fix
- For-in list rendering + component system
- Hash-based router + keyed list reconciliation
- Two-way binding, form props, and async resources
- Universal bitstream streaming — any input → any output
- Physics language integration — scene container with Rapier2D WASM
- ds-stream: RLE compression, input events, keyframe caching
- demos: Sync protocol with Rust codec, add touch/gamepad support
- compiler: Full bitstream integration across 7 pipeline stages
- compiler: Complete bitstream integration — all 9 changes
- examples: Add streaming .ds examples — compiler-native streaming
- wasm: Add ds-stream-wasm crate — browser codec via WebAssembly
- relay: Multi-source routing — /source/{name} and /stream/{name}
- examples: Add streaming-physics.ds, mark all roadmap items complete
- WebRTC transport — peer-to-peer data channels with auto-fallback
- Production hardening — relay v1.0.0, receiver protocol completeness
📚 Documentation
- Add implementation status, benchmarks, and React comparison to DREAMSTACK.md
- Add router to DREAMSTACK.md features and comparison
- Mark all integration spec changes as implemented, update test counts
- Add Next Steps roadmap (Phases A-C) to integration spec
- Add compiler-native streaming syntax to language reference
- Add USE_CASES.md — vision, revenue paths, and demo roadmap