Your app. Pages are View, not HTML files.
Pages return a typed tree; hosts paint it.
Writes are typed closed acts.
An act repaints only islands it hits.
Rust stamps data-attrs; tokens own the look.
crates/velvet_canvas_core Document model, commands, spatial index crates/velvet_canvas_render DrawCmd IR, Canvas2D + SVG backends src/canvas/editor/ Wasm editor (input, paint, kit, room) src/room.rs Native room server (SSE + POST) web/canvas.html Standalone editor page css/app.css tokens + skins