Skip to content
Gardenly3D
User Guide
User Guide

Visual Flow Editor

Build automation programs by connecting node cards — no code required. Each node represents one action or statement. The graph compiles to Lua automatically.

The Visual Flow Editor is the Visual tab in the automation IDE. It presents automation logic as a top-to-bottom chain of rectangular cards on a scrollable canvas. The canvas has a dot-grid background, a minimap in the bottom right, and a toolbar at the top. Every change you make to the graph is immediately reflected in the Code tab — Lua source is always kept in sync.

1

Adding nodes

Click the '+ Add step' button at the bottom of the canvas, or press / anywhere on the canvas. The Node Picker opens. The landing screen shows a grid of category tiles plus a Recently Used row. Click a category to drill into a filtered list of nodes in that category. Start typing in the search field to search all categories at once. Click a node to add it below the last step.

TIP

Press / as your main way to add nodes — it works anywhere on the canvas regardless of selection state.

2

Node categories

Nodes are grouped into 13 categories: FIND (search entities on the canvas by category, type, layer, name, selection, proximity, or all), PLACE (create new plants, shapes, text, or structures), EDIT (move, rotate, scale, delete, hide, show, duplicate, rename, set style, set layer), MEASURE (compute geometry values), LAYERS (manage layers), SELECTION (control canvas selection), OUTPUT (log messages and values), CONTROL (if/else conditions, for loops, while loops), FUNCTION (define and call reusable functions), VARIABLE (local variables, table assignments), OPERATOR (boolean and comparison operators), MATH (math functions), STRING (string functions).

TIP

Press / as your primary shortcut for adding nodes — it opens the Node Picker from anywhere on the canvas regardless of what is currently selected.

3

Node cards

Each node is a flat rectangular card. The card header shows the category label (e.g. FIND) in the category colour and the node sub-label (e.g. 'by category') in muted text. Below the header are the node's inline form fields — you edit them directly on the card. A delete [×] button in the corner removes the node. An error state shows a red (ruby) border when the node caused a runtime error during the last run.

4

Connecting nodes

Nodes execute top to bottom. Drag from the output handle at the bottom of one card to the input handle at the top of another to connect them. A '+' button appears at the midpoint of every edge — click it to insert a new node between two existing nodes. Container nodes (if, for, while, function) have a dashed body area where child nodes are nested using child edges.

5

Node inspector

Click a node to select it. When exactly one node is selected, the Node Inspector slides in from the right edge of the canvas. It shows the node's documentation, a summary of data dependencies (variables in scope), and after a run, a trace of the most recent execution result for that node. Press Esc or click the × to dismiss.

6

Variable scope

Nodes that produce a result (FIND, PLACE, EDIT with duplicate, VARIABLE locals) store their result in an auto-named variable (e.g. _r1, _r2). Subsequent nodes reference these by typing the variable name into their Entities or other expression fields. The Node Inspector's Dependencies section lists all variables visible at the selected node.

7

Canvas navigation

Pan by middle-click drag or two-finger trackpad pan. Zoom with pinch or the toolbar zoom buttons. Fit the whole graph to view with the Fit button. Toggle Pan mode on/off from the toolbar to switch between panning (left-drag pans) and selecting (left-drag creates a selection box). The minimap in the bottom right shows the full graph — click or drag to navigate.

8

Grouping and subflows

Select multiple nodes and press Ctrl+G to group them into a subflow container. This collapses the nodes into a single card, keeping the canvas tidy for complex automations. Press Ctrl+Shift+G (or select the subflow and use the command) to expand it back into individual nodes.

INFO

The Visual and Code tabs share the same Lua source — every node graph change compiles instantly to Lua, and every code edit is parsed back into nodes when you switch to Visual. A stale-graph banner in the IDE toolbar appears if the graph may be out of sync with a recent code edit.

TIP

The Tidy up layout button in the toolbar is useful after importing or pasting multiple nodes — it redistributes cards into a clean top-to-bottom column so edges stop crossing.

Keyboard Shortcuts

KeyAction
/Open node picker
Ctrl+ZUndo
Ctrl+YRedo
Ctrl+CCopy selected nodes
Ctrl+VPaste nodes
Ctrl+GGroup selection into subflow
Ctrl+Shift+GUngroup subflow
EscDismiss node picker or inspector

Frequently Asked Questions

Can I mix visual nodes and hand-written Lua code?

Yes. The Visual and Code tabs share the same Lua source file. Edit in the Code tab, then switch to Visual — the graph is rebuilt from your updated code. Edit in Visual, then switch to Code — the compiled Lua appears immediately. A stale-graph banner warns you if the visual graph may not fully reflect recent code edits.

What happens if my code contains Lua constructs the visual editor cannot represent?

The flow editor attempts to represent all supported Lua constructs as node cards. Any construct that cannot be mapped to a node type is left in the compiled Lua source but may not appear as a card in the visual graph. The stale-graph banner in the IDE toolbar indicates when the two views may be out of sync.

How do I run my automation after building it in the Visual editor?

Use the Run button in the IDE toolbar — it is the same button used when working in the Code tab. The visual graph compiles to Lua automatically before each run, so you do not need to switch to the Code tab first.

Can I reuse a group of nodes in multiple places?

Yes. Select the nodes you want to reuse, press Cmd/Ctrl+G to group them into a subflow, then copy and paste the subflow container wherever you need it. Each pasted copy is independent — editing one copy does not affect the others.

How do I see what value a node produced during the last run?

Click the node card to select it and open the Node Inspector on the right. The inspector shows an execution trace from the most recent run, including the output value of that specific node. This is useful for debugging unexpected results without adding log nodes.