docs: add Next Steps roadmap (Phases A-C) to integration spec
This commit is contained in:
parent
439a775dec
commit
2fec039a28
1 changed files with 55 additions and 0 deletions
|
|
@ -894,3 +894,58 @@ The relay uses `tokio-tungstenite` and routes:
|
|||
6. **No `Serialize`/`Deserialize` on AST**: The AST types don't derive serde traits. `SignalManifest` should derive `Serialize` if you want to embed it as JSON in the compiled output.
|
||||
|
||||
7. **`ds-cli` doesn't depend on `ds-stream`**: The CLI can't import relay code directly. To auto-start the relay, use `std::process::Command::new("cargo").args(["run", "-p", "ds-stream"])`.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Next Steps
|
||||
|
||||
All spec changes are implemented. The pipeline is wired end-to-end. Here's the roadmap for what comes next:
|
||||
|
||||
### Phase A: Prove It Works (High Priority)
|
||||
|
||||
#### 1. End-to-End Integration Test
|
||||
Write a `.ds` file with `stream main on "ws://..."`, run the relay + `dreamstack dev`, open two browser tabs, and verify signal changes propagate in real time. This is the first time compiler-generated streaming code talks to the Rust relay.
|
||||
|
||||
```bash
|
||||
# Terminal 1: start relay
|
||||
cargo run -p ds-stream
|
||||
|
||||
# Terminal 2: compile and serve
|
||||
dreamstack stream examples/counter.ds
|
||||
|
||||
# Open http://localhost:3000 — click buttons, verify signals stream to relay
|
||||
# Open stream-receiver.html — verify it receives updates
|
||||
```
|
||||
|
||||
#### 2. Receiver `.ds` Syntax Demo
|
||||
Create a `receiver.ds` that uses `stream from "ws://localhost:9100"` to consume a remote stream and render it locally — closing the compiler-to-compiler loop.
|
||||
|
||||
```
|
||||
let remote = stream from "ws://localhost:9100"
|
||||
|
||||
view main = column [
|
||||
text "Remote count: {remote.count}"
|
||||
text "Remote doubled: {remote.doubled}"
|
||||
]
|
||||
```
|
||||
|
||||
### Phase B: Infrastructure
|
||||
|
||||
#### 3. WASM Codec
|
||||
Compile `ds-stream` codec to WebAssembly so browsers share the exact same `rle_encode`/`rle_decode` as the Rust relay. Eliminates protocol drift risk from duplicated JS implementations.
|
||||
|
||||
#### 4. Multi-Source Routing
|
||||
Support `/source/{view_name}` on the relay so multiple views can stream independently through the same relay instance.
|
||||
|
||||
#### 5. WebRTC Transport
|
||||
Add WebRTC as a transport option alongside WebSocket for sub-frame latency. WebSocket adds ~1-2 frames of buffering; WebRTC data channels can eliminate this.
|
||||
|
||||
### Phase C: Polish
|
||||
|
||||
#### 6. Language Documentation
|
||||
Add a streaming section to `DREAMSTACK.md` covering the `stream` keyword, `stream from` expression, and streaming modes.
|
||||
|
||||
#### 7. Example `.ds` Files
|
||||
Create compiler-native streaming examples:
|
||||
- `examples/streaming-counter.ds` — basic signal streaming
|
||||
- `examples/streaming-physics.ds` — scene state streaming with physics bodies
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue