Group nodes on the Vilva canvas

Two ways to create groups on the canvas — right-click drag any area (even empty), or multi-select nodes and click the centered Group button. Plus what groups do with their children.

By Shruti Saagar

Stake out a region, or wrap a selection. Groups hold, move and nest your work on the canvas.


Groups are containers on the canvas. They hold related nodes, can be coloured, titled, resized, and nested. Anything you drop inside is registered as a child — moving the group moves its contents; deleting the group keeps the children unless you explicitly cascade.

There are two ways to create one.


1. Right-click drag — stake out any area

Hold the right mouse button and drag a rectangle over the canvas. When you release, a group node materialises at that rectangle.

  • With nodes inside the rectangle: they all become children of the new group, and the group is sized to enclose them with a tidy padding margin.
  • With no nodes inside: the group is still created, sized exactly to the rectangle you drew. This is the workflow for staking out blank canvas space — draw a region first, drop content into it later.

The drag has to cover at least a small distance (≥30px in either direction) so an accidental right-click doesn't spawn a group.

Right-clicking on a regular node is a no-op — that gesture is reserved for node menus. Right-clicking on a group (or empty canvas) starts the drag, which is also how you create subgroups inside an existing group.


2. Multi-select — click the centered Group button

Marquee-select two or more nodes (Shift+drag, or Cmd+click to add individually). A small Group button appears centered above the selection's bounding box. Click it and the selected nodes get wrapped into a new group.

The button sits on the horizontal centroid of the selection, just above the topmost edge. This puts it in the same visual zone as the bulk-edge + handle (which lives at the right-middle of the bounding box) — together they form a consistent pair of multi-select affordances on different axes of the bbox, so neither obscures the other.

Single-node selections don't show the button — groups always have at least two members at creation time. (You can still drag standalone nodes into an existing group later.)


Sub-groups (nested groups)

If every node you're grouping already shares a single parent group, the new group is registered as a subgroup inside that parent and clamped to its bounds. The parent's childNodeIds list grows by one — the subgroup — and the children's groupParentId flips to point at the subgroup. The result: a clean two-level hierarchy with no orphans, no spillover, and no extra clicks.

If the selection spans multiple parents, the new group lives at the top level.


What you can do with a group

  • Title and summary — click the title row to rename, click the summary row to add a one-liner.
  • Colour — colour picker in the group's hover menu. Default is #c8c4bf (warm grey).
  • Resize — drag any edge handle. Children stay where they are visually; only the group's bounds change.
  • Reference in prompts@[group-uuid].images pulls every image in the group into a single prompt mention. See the @-references guide for the full grammar.
  • Move as a unit — drag the group's title bar to translate all children together.

Keyboard

There's no dedicated group shortcut yet. The two creation paths above are the canonical entry points; both are also accessible via the context menu on the canvas.