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.
|
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"])`.
|
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