Files
isokit/docs/ROADMAP.md
T
grabowski 95ea4a8512
Deploy web Studio / deploy (push) Successful in 3m27s
Build your own house: walls, windows, doors, floors, roof, stairs, furniture
House parts (stdlib isokit/house): house_wall drawn along a line, with ends
that adapt at corners, T-junctions and straight runs so no two walls
overlap; window and door that sit on a wall and cut its opening (door
styles panel, glass, double, sliding, opening; swing and hinge by
rotation); floor (boards, tiles, carpet, stone); roof (hip, gable, flat,
optional solar); stairs.

Furniture (stdlib isokit/furniture): chair, sofa / armchair, table with
chairs, desk with monitor and chair, TV, bed, cupboard, bookshelf, kitchen
run, bathtub, shower, toilet, washbasin, plant, rug, floor lamp.

Cut-open levels: on gf / 1f the walls in front of a room are cut low
(rooms are found by their floors), the roof becomes an outline on the
floor, and storeys above are left out. A part's storey comes from z
(storey_h, default 3 m).

Scripting: objects_of, objects_at, objects_on, mount_of, mounted, frame,
to_world, to_local, local_of. Prefab meta: shape (line / rect), mount,
storey.

Studio: drag to draw lines and rectangles (walls, roads, fences, hedges,
floors, areas, buildings, roofs). The Room tool draws a floor plus walls,
without doubling walls that already stand on an edge. Windows and doors
snap onto walls with a hover preview, and they move, turn, copy and
delete with their wall in one undo step. New parts land on the storey
the view shows. Palette categories collapse, and the palette scrolls
apart from the object list.

The MCP instructions explain house building, and list_prefabs shows
sits_on. examples/house is a furnished bungalow; the web Studio gets a
House demo button. Tests: wall corners and junctions, zero depth-sort
cycles in every view, cut levels, and the house demo in every view;
check_studio covers the room / window / door / storey flow, check_web
the House demo.
2026-10-24 17:39:04 +07:00

7.0 KiB

Roadmap

Each phase ends with tests, a Studio/viewer check in Edge, commit and push.

Phase 1: engine, Studio, MCP (done)

  • 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
  • Theme: built-in palette, materials and rules converted from the Mooban/CNX CSS; TOML overrides
  • Rhai runtime: drawing API, module imports from memory, errors with file:line, safety limits
  • 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
  • Scene document + prefab catalog with property schemas
  • Project folder, ops (add/update/remove/duplicate/reorder/set_cfg/replace), Workspace (save, undo, reload on outside changes), check, static HTML page, SVG export
  • Viewer JS: port of the views' mount() (pan, pinch, wheel, declutter, tooltips, full screen) for prerendered, server and future WASM sources
  • 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
  • MCP: 15 tools over stdio and HTTP (/mcp), validation messages for agents
  • Demo project, 52 Rust tests, Playwright Studio + MCP test

Web Studio (done)

  • 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
  • studio.js runs on a pluggable backend; the web shell answers it from WASM
  • 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
  • Folder projects (File System Access, Chrome / Edge): edits written to disk, outside changes followed live and undoable, Build page writes dist/index.html
  • Code editor for scripts, prefabs, theme and manifest, with script errors by file and line
  • MCP tools inside the page (isokit.mcp), WebMCP registration when the browser offers it
  • 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

Agent window (done)

  • ✦ Agent in the Studio: chat with a model on an OpenAI-compatible endpoint (default: B4L's inference server) that edits the scene with the MCP tools + page tools (select, view); streamed answers and reasoning, tool calls with results, clickable object ids, Stop, Undo
  • isokit studio relays the calls (/api/agent/*, key stays on the machine, no CORS); settings from ISOKIT_LLM_* or agent.json in the user's config folder
  • Web Studio calls the endpoint from the page; isokit.buildfor.life relays /llm/ to the inference server (Caddy) so the page needs no CORS from it
  • tools/mock_llm.py + tools/agent_checks.py in both Studio checks
  • Keep the conversation per project across reloads; attach a rendered view (PNG, Phase 4) for vision models

Build your own house (done)

  • House parts: house_wall (drawn along a line, ends adapt at corners, T-junctions and straight runs), window and door that sit on a wall and cut its opening (door styles: panel, glass, double, sliding, opening; open / closed, hinge and swing by rotation), floor (boards / tiles / carpet / stone), roof (hip, gable, flat, solar), stairs
  • Furniture: chair, sofa / armchair, table with chairs, desk with monitor and chair, TV, bed with nightstands, cupboard, bookshelf, kitchen run (sink, hob, wall cabinets, fridge), bathtub, shower, toilet, washbasin, plant, rug, floor lamp
  • Cut-open levels for houses: walls in front of rooms cut low (rooms found by their floors), roof as an outline, storeys from z (storey_h), upper storeys left out
  • Scripting: objects_of, objects_at, objects_on, mount_of, mounted, frame, to_world, to_local, local_of; prefab meta shape (line / rect), mount, storey
  • Studio: drag to draw lines and rectangles (walls, roads, fences, floors, areas, buildings), Room tool (floor + walls, shared walls not doubled), windows and doors snap onto walls (hover preview) and move, turn, copy and delete with them, new parts land on the storey shown, collapsible palette that scrolls on its own
  • examples/house (a furnished house built from parts), House demo in the web Studio
  • Openings across two walls; diagonal walls; floor openings for stairs

Backlog (2026-10)

  1. Web performance: the web build runs smoothly on low-power machines
  2. Conveyors: placeable conveyors
  3. Producers with adjustable production speed
  4. Robotic arms
  5. Rounded streets: curved road segments
  6. Sidewalks along streets
  7. Roundabouts
  8. Waypoint animation: a person or car moving along a path of waypoints
  9. Build your own house (done, see above)

Phase 2: richer editing

  • Interior prefabs (see Build your own house); a building rooms prop is still open
  • 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: <style> + <script> blocks for the Python build scripts of the host pages (replace inline.py)
  • Host API parity with CNXIso (mount, update(cfg), setLevel, focus, info, onPick)
  • Port the existing scenes: mooban estate, CNX Scuba centre (section cut), CNX Vinyl plant; check each against its old view with the QA checklist from the skill

Phase 4: output and QA

  • Section cut layer (underground scenes) from iso-scuba: cut plane, clip-path per cavity
  • PNG export (static style resolution + resvg) so agents get an image from render_view
  • isokit check rules from the QA checklist: props on paved areas, runs ending in the air, covers drawn over their contents, tag overlaps
  • Performance budget test (render ms per view, 60 fps pan) on a 3,500-node scene
  • Packaged desktop app (Tauri); shared projects for the hosted web Studio (behind login)