# DreamStack TODO

## Streaming ✅
- [x] Signal streaming, pixel streaming, delta streaming, touch/gamepad/resize input
- [x] Pixel streaming for DOM apps, Opus audio, receiver gamepad, adaptive quality
- [x] Neural frame types, remaining input types, layout serialization, WASM codec

## Streaming — Phase 2 ✅
- [x] **Stream transforms** — `_streamMap`/`_streamFilter`/`_streamDebounce`/`_streamDistinct`/`_streamThrottle` pipe operators
- [x] **Replay / Time-travel** — relay replay ring buffer with configurable `replay_depth`
- [x] **Stream recording** — `recording_dir` config in relay for frame-level recording
- [x] **Multi-relay federation** — `federation_upstreams` relay config for cross-network forwarding

## Language ✅
- [x] **Closures / lambdas** — `(x) -> x * 2` first-class functions (parser + codegen)
- [x] **Pattern destructuring** — `let { count, doubled } = stream from "..."` desugars to dot-access lets
- [x] **Async/await** — `await fetch("/api")` native async in handlers
- [x] **Better error messages** — source context with line + caret in parse errors

## Composition ✅
- [x] **`merge` operator** — `merge(stream1, stream2)` → `DS._mergeStreams()` reactive merge
- [x] **`pipe` operator** — `stream from "..." | fn` pipe syntax in parser + enhanced runtime
- [x] **Stream-to-component** — component with dynamic `stream from` param
- [x] **Channel groups** — `channel_matches()` wildcard matching: `games/*` matches `games/chess`

## Architecture
- [ ] Compiler plugin system for custom output targets
- [ ] Language server (ds-lsp) for IDE integration
- [ ] Package registry for sharing .ds components
