Changelog
What shipped, what's coming
Shipped means in the build you can install today. Roadmap means coming — never implied as shipped.
v0.11
current
- Azure Bicep support —
.bicep and .bicepparam as a peer language on the same canvas: params, vars, outputs and resources as nodes, references as wires, resolved values, and the same surgical write-back. A hand-rolled Bicep engine in the WebAssembly bundle — no Bicep CLI. Details.
- Bicep environments as multiple
.bicepparam files on one canvas (simulated workspaces stay Terraform-only). Local Bicep modules load as boxes with ports; a registry br: module shows as a box with a note.
- MCP server for AI agents — a standalone Model Context Protocol server exposing the same deterministic engine to Claude Code, Cursor or any MCP client, for Terraform and Bicep. Read and propose only: it reads the graph, resolves values and returns validated diffs, and never writes a file. Set it up with Copy MCP Setup for AI Agents. Details.
- The display name is now SchematIaC — Terraform & Bicep Visual Editor; a canvas holds one language, chosen by the first file added.
- Free six-month licence — register with your email and the six-digit code we send back; the licence it issues unlocks everything for six months from the day you start.
- Analyze — one button asks the engine what the graph would rather be wired as, by rule: an output echoing what a module takes should read the module, and so on. Each finding draws its proposed wire on the canvas — solid green, arrowed, its source lit through the trace — and Apply stages it like any hand edit, then moves to the next.
- Show Diffs — colour the canvas by what changed against the git baseline, so a review reads on the drawing, not just in the files. Vendored modules resolve in the diff view too.
- Groups — gather nodes by hand, fold the groups you are not reading (same glyph a node has), move an open group by its title, carry a folded one anywhere. What lands inside a group is decided by where you drop it.
- Mappings panel — pick a row and see both directions at once: what feeds it, and what reads it.
- Structured values — a list or object shows as structure, and one value inside it can be edited without touching its neighbours.
- Overview panel — the project's folder structure at a glance, with a door from each folder into its canvas.
- Big canvases got fast — dragging, zooming and trace clicks repaint instead of rebuilding, at roughly half the paint cost per frame.
- Multi-select with a shift-drag marquee; walk a node's rows with the arrow keys; drop a wire on a row's dot, not just its body; expand or collapse one node or the whole canvas; rows with a staged, unsaved change are highlighted; a wire can re-point to a resource's own attribute.
- Modules read honestly: a module's defaults sit in their own band so a default cannot pass for an argument, an input is told apart from the output sharing its name (in the diff too), and an unvendored registry module is a warning on its own box — not an error that blocks the canvas.
- A legend explains every colour text is painted in, including what a red name means.
- Sturdier evaluation:
try() and can() evaluate, an unsupported function names itself instead of failing silently, a comment is never read as a value, and a half-written file mid-save no longer takes the canvas down — for Terraform and Bicep both.
- Licensing quality of life: Email My Key re-sends a lost trial key, trial reminder emails carry a call to action, and teams can be issued licence keys in one batch.
v0.9
earlier
- Canvas view over
.tf, .tfvars and local modules — blocks as nodes, properties as rows, references as wires.
- Resolved values on every row, computed locally by the WebAssembly HCL engine; honest (known after apply) for values that depend on a real apply.
- Lineage tracing — click a row, its whole path lights up.
- Value marks on every row — literal, reference, interpolated or computed — with a legend, so a resolved value is never mistaken for a hard-coded one.
- Bidirectional write-back: re-point a reference, or edit a value in the properties panel. Both are HCL-validated, both show the exact diff for approval, and only that expression's bytes change.
- Type-aware re-pointing: while you drag, compatible targets light up and incompatible ones refuse the drop. Where several wires share a source, you pick the destination first so the edit can only mean one thing.
- Everything staged until Save, with a review of every pending Terraform change and per-file revert. Reload asks before discarding staged work.
- Simulated workspaces: named sets of variable values kept in the
.canvas file, switched from the toolbar or compared all at once — for the values a real workspace injects at plan time.
- File panel and grouping: every file on the canvas with its resources, click to highlight; group the canvas by file, location or resource group, and collapse the groups you are not reading.
- Checked-in
.canvas files: one definition, parameterized by workspaces, with overridden values marked.
- Offline licence verification; air-gapped operation after activation.
Roadmap
not yet shipped
- Project-wide forest view — the whole configuration on one canvas. The headline item, and the reason the tool exists.
moved-block refactoring — rename and restructure with state-safe moves.
- Registry and git module sources (local
./ and ../ today).
- Drilling into a module — today it is a box with input and output ports.
- Provider schemas — read from
terraform providers schema after you have run init, on your explicit command, never automatically. Shows the attributes a resource could set, makes required/optional/computed exact, and flags a missing required attribute before validate does.
- Provider upgrade impact — pick a target provider version and see, on your own resources, every attribute that was removed, renamed, deprecated, changed type or became required — before you touch a version constraint. The breakage list for your config, not the release notes.
- A palette of provider attributes and resources, driven by those schemas — adding what you have not written yet.
- Adding and deleting resources from the canvas.
- Instance expansion for
count and for_each — today a resource with three instances is one node.