dreamstack/CHANGELOG.md
enzotar 35b39a1cf1 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

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 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 collects 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 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 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 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 (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.rsFrame, CodecResult, Codec trait, Pipeline builder
  • 6 codec adaptersPassthroughCodec, 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-streamStreamStats1150, PacketCoalescer, ErrorBudget (423 tests)
  • ds-stream-wasmstats_v1150, coal_v1150, ebudget_v1150 WASM bindings (281 tests)
  • ds-physicsfind_fastest_body_v1150, get_total_mass_v1150, apply_magnet_v1150, get_body_angle_v1150 (350 tests)

🚀 Engine v1.14.0 — 2026-03-11

  • ds-streamPriorityQueue1140, LatencyTracker1140, FrameWindow (413 tests)
  • ds-stream-wasmpq_v1140, lat_v1140, fw_v1140 WASM bindings (274 tests)
  • ds-physicsget_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-streamChannelMux1130, FrameSlicer, BandwidthProbe (403 tests)
  • ds-stream-wasmmux_v1130, slicer_v1130, probe_v1130 WASM bindings (267 tests)
  • ds-physicsget_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-streamFrameFingerprint, AdaptiveBitrate1120, JitterBuffer1120 (393 tests)
  • ds-stream-wasmfingerprint_v1120, abr_v1120, jitter_v1120 WASM bindings (260 tests)
  • ds-physicsget_contact_count_v1120, get_world_momentum_v1120, apply_vortex_v1120, get_body_inertia_v1120 (320 tests)

🚀 Engine v1.11.0 — 2026-03-11

  • ds-streamFrameDropPolicy, StreamTimeline, PacketPacer (383 tests)
  • ds-stream-wasmdrop_policy_v1110, timeline_v1110, pacer_v1110 WASM bindings (253 tests)
  • ds-physicsget_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-streamFrameRateLimiter, DeltaAccumulator, ConnectionGrade (373 tests)
  • ds-stream-wasmrate_limit_v1100, delta_accum_v1100, conn_grade_v1100 WASM bindings (246 tests)
  • ds-physicsget_body_rotation_v1100, get_energy_ratio_v1100, apply_explosion_v1100, get_nearest_body_v1100 (300 tests)

🚀 Engine v1.9.0 — 2026-03-11

  • ds-streamSequenceValidator, FrameTagMap, BurstDetector (363 tests)
  • ds-stream-wasmseq_v190, burst_v190, tag_v190 WASM bindings (239 tests)
  • ds-physicsget_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-streamRingMetric180, FrameCompactor, RetransmitQueue (353 tests)
  • ds-stream-wasmring_v180, compactor_v180, retransmit_v180 WASM bindings (232 tests)
  • ds-physicsset/get_angular_damping_v180, set_restitution_v180, sleep/wake_body_v180, count_sleeping_v180 (280 tests)

🚀 Engine v1.7.0 — 2026-03-11

  • ds-streamDelayBuffer170, PacketInterleaver, HeartbeatWatchdog (343 tests)
  • ds-stream-wasmloss_v170, watchdog_v170, interleave_v170 WASM bindings (225 tests)
  • ds-physicsset/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-streamAesFrameCipher, LossInjector, StreamCheckpoint (333 tests)
  • ds-stream-wasmthrottle_v160, cipher_v160, checkpoint_v160 WASM bindings (218 tests)
  • ds-physicsget_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-streamContentDedup, StreamHealthTracker, FrameThrottler (323 tests)
  • ds-stream-wasmbw_limiter_v150, dedup_v150, metrics_v150 WASM bindings (211 tests)
  • ds-physicsapply_force_field_v150, freeze/unfreeze_body_v150, get_distance_v150, get_angular_momentum_v150 (250 tests)

🚀 Engine v1.4.0 — 2026-03-11

  • ds-streamSessionRecorder, PriorityScheduler, BandwidthLimiter (313 tests)
  • ds-stream-wasmcompositor_v140, recorder_v140, priority_v140 WASM bindings (204 tests)
  • ds-physicsraycast_v140, get_collision_events_v140, time_scale_v140, get_body_momentum_v140 (240 tests)

🚀 Engine v1.3.0 — 2026-03-11

  • ds-streamQualityPolicy, FrameLayerCompositor, ReorderBuffer, QualityDecision+FrameMode (303 tests)
  • ds-stream-wasmquality_decide_v130, reorder_push/drain_v130, channel_auth_check_v130 (197 tests)
  • ds-physicssnapshot_scene_v130, restore_scene_v130, get_body_aabb_v130, apply_torque_v130 (230 tests)

🚀 Engine v1.2.0 — 2026-03-11

  • ds-streamHapticPayload, haptic_frame(), FrameBatch, StreamDigest, ChannelAuth (291 tests)
  • ds-stream-wasmhaptic_message_v120, batch_frames_v120, digest_v120 (190 tests)
  • ds-physicscreate_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-streamFrameType::Error, ErrorPayload, ProtocolInfo, encrypt_frame/decrypt_frame, FrameRouter, error_frame() builder (277 tests)
  • ds-stream-wasmerror_frame_v110, decode_error_payload, protocol_info_v110, encrypt_frame_v110/decrypt_frame_v110 (183 tests)
  • ds-physicsget_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