# Roadmap Each phase ends with tests, a Studio/viewer check in Edge, commit and push. ## Phase 1: engine, Studio, MCP (done) - [x] Core: projection with 4 rotations, primitives (box, prism, cylinder, frustum, face, poly, flat, openings, lines, disc, circle, stem, figures, puffs, fan, raw, groups, sequences), sprites with 90° object frames, depth sort ported from the JS views, SVG writer, tags, tooltips - [x] Theme: built-in palette, materials and rules converted from the Mooban/CNX CSS; TOML overrides - [x] Rhai runtime: drawing API, module imports from memory, errors with file:line, safety limits - [x] Prefab library: site, area, road, parking, wall, fence, lamp, marker, tree, tree row, hedge, building (storeys, windows, door, flat/gable roof, solar, AC, cut-open levels), carport, shed, car (driving), truck, motorbike, person, crowd, tank, container, generator, solar field, chimney - [x] Scene document + prefab catalog with property schemas - [x] Project folder, ops (add/update/remove/duplicate/reorder/set_cfg/replace), Workspace (save, undo, reload on outside changes), check, static HTML page, SVG export - [x] Viewer JS: port of the views' mount() (pan, pinch, wheel, declutter, tooltips, full screen) for prerendered, server and future WASM sources - [x] Studio GUI: palette, object list, placing, drag-to-move with snap, keyboard, forms from schemas, levels, undo/redo, live follow of agent edits, MCP connection panel - [x] MCP: 15 tools over stdio and HTTP (`/mcp`), validation messages for agents - [x] Demo project, 52 Rust tests, Playwright Studio + MCP test ## Web Studio (done) - [x] `isokit-wasm`: the engine in the browser (wasm-bindgen, 2.8 MB / 0.75 MB gzipped); `Store` trait (folder or memory) under the `Workspace`; Studio JSON API shared with `isokit studio` - [x] `studio.js` runs on a pluggable backend; the web shell answers it from WASM - [x] Projects in IndexedDB; new, demo copy, delete; export / import `.zip` (stored or deflated) and folders (drop or pick); two tabs on one project stay in step - [x] Folder projects (File System Access, Chrome / Edge): edits written to disk, outside changes followed live and undoable, Build page writes `dist/index.html` - [x] Code editor for scripts, prefabs, theme and manifest, with script errors by file and line - [x] MCP tools inside the page (`isokit.mcp`), WebMCP registration when the browser offers it - [x] `tools/build_web.py` (static output), `tools/check_web.py` (44 checks, Edge) - [ ] Deploy a hosted copy; render in a Web Worker for very large scenes ## Phase 2: richer editing - [ ] Interior prefabs (desk, table with chairs, shelf, machine, bed, sofa, partition walls) and a building `rooms` prop, so the GF/1F levels show something - [ ] Path objects in the Studio: click points for areas, roads (polyline with width), fences, walls, pipe runs; vertex handles - [ ] Multi-select (box select, Shift-click), group move, align/distribute - [ ] Copy/paste between projects; prefab thumbnails in the palette (rendered icons) - [ ] Measure tool and grid overlay; numeric resize handles on the selection - [ ] Studio editor for `theme.toml` (colour pickers) and for project parameters ## Phase 3: embedding in the other projects - [ ] Host pages on the WASM build (`isokit-wasm` exists, see Web Studio): the same scene recomputes in the browser when a host page's calculator changes the parameters (cnx_vinyl fleet calculator) - [ ] `isokit build --fragment`: `