Editing

SchematIaC edits are surgical: the extension computes the exact byte range of the expression you changed and splices only that. It never rewrites or reformats a .tf or .bicep file — comments, alignment and ordering stay exactly as you wrote them. A value you type is validated in that file’s own language — HCL for Terraform, Bicep for Bicep — before it can touch a file.

Re-point a reference

Drag a wire’s source dot onto a different variable, local, module output or resource attribute. A real resource value is a dependency Terraform can order, where a matching local is only a string. While you drag:

  • compatible target rows tint — targets are type-aware, so a list cannot be dropped where a string is expected;
  • the wire reads solid over a valid target (dashed means it will not connect);
  • a source dot that feeds several wires is inert until you trace a row to narrow it to one, so you can never grab the wrong wire.

You can drop on a row’s dot, not just its body, and a wire can re-point to a resource’s own attribute. Dropping shows the one-line diff of the consuming file. Apply stages it; Cancel stages nothing.

Screenshot to come
Mid-drag: compatible targets tinted, the wire solid over a valid drop.

Edit a value

Click a definition in the properties panel and type a new expression. It is parsed in the file’s own language — HCL or Bicep — before it can go anywhere; garbage is refused with the reason. A valid edit shows its diff, then stages on Apply. Structured values (a list or object) let you edit one member without touching its neighbours.

Analyze

One click lists the re-wirings the canvas argues for — rules over the graph, not a model. Each suggestion draws the wire it would make, and Apply shows the same diff a drag does. Full walk-through in Analyze.

Copy resources between canvases

Select resource, data or module nodes and press Ctrl+C, then Ctrl+V on another canvas — a second environment open beside the first, say. Paste over a file’s box in the Group: file view to choose where the block goes, or pick the file from a list that puts the matching one first (qa/main.tf → prod/main.tf). The block arrives byte for byte, comments included, at the end of that file; a name that is already taken asks for a new one, and anything the block reads that the target does not have yet is listed before you approve. It is ordinary HCL on the clipboard, so it pastes into a text editor too, and HCL copied from anywhere pastes onto a canvas.

Terraform only, for now. You can also Ctrl-drag between canvases in the same VS Code window. Creating a resource from scratch, deleting one, and moved-block refactoring are roadmap.

Staging, Save and the review

Nothing reaches disk before Save. Staged work keeps the Save button live and the canvas marked dirty. Save opens a review of every pending file — the full diff per file, with per-file Revert — and writes only what survives the review.

The pre-save review lists source-file changes only — your .tf, .tfvars, .bicep or .bicepparam edits. Layout moves and other .canvas changes are saved without ceremony — the .canvas file is machine-managed, not one of your files.

Screenshot to come
The Save review: every pending file's diff, with per-file revert.

Reload

Reload re-reads every file from disk. An untouched canvas follows disk silently as you edit files in the text editor; if you have staged work, Reload asks before discarding it.