Inspector
The inspector is the right-hand panel, and it is where you edit. It shows three things at once: the component you have open, the child or compartment selected inside it, and the vertex selected inside that. The upper zone is the component; the lower zone is the selection. Drag the boundary between the two, or the panel’s left edge, to give whichever you are working in more room — both are remembered.
The header
The header names the open component and carries the three actions that apply to the component as a whole.
The name is editable in place and commits when you press Enter or click away. A name that is empty, already taken, or not a valid identifier is refused, and the field returns to the real name.
The star sets the component as the design’s root — the one the file designates and exports. It is disabled when the component already is the root, where the grayed star reads as a marker rather than a button.
The trash deletes the component. The deletion is refused if the component is the root, or if another component instantiates it; rather than hiding the button, the inspector disables it and the tooltip says which of the two applies.
A component opened from Libraries is another file’s definition, so the header drops to a plain heading marked built-in component (read-only) and no edit controls appear.
If the open component cannot be built — an expression that does not type-check, a missing argument — the reason appears in red under the header and stays there while you fix it. The viewport goes on showing the last version that built.
The tabs
The component’s four facets are tabs, so the one you are working in gets the whole zone: Params, Computed, Pins and Body. A tab carries a count when there is something behind it. The + on the tab strip adds to the tab you are looking at, and appears only on Params and Computed — pins and children are created elsewhere. The tab you pick stays picked as you move between components. A built-in shows three tabs; it has no authored body.
Params
name │ type │ default │ 🗑
The component’s inputs — what someone placing it can set. + adds a row.
The type dropdown commits as soon as you pick. The default editor matches that type: drag a number and the viewport follows, release to commit; typed values commit on Enter or focus loss. A parameter loaded without a default reads (required) and is not editable here. Deleting a parameter that something refers to is refused, and the tooltip lists what refers to it.
Computed
name │ (type) │ expression │ 🗑
Values derived from the parameters by expression. You author the name and the expression;
the type is inferred rather than declared, which is why the type column is parenthesized
and read-only. It reads (?) while the component does not type-check — the error under
the header says why.
The expression commits on Enter or focus loss. One that does not parse simply does not take effect.
Pins
name │ world │ source │ 🗑
The connection points the component exposes to whoever places it.
The name renames on Enter or focus loss. It locks, with the references in its
tooltip, while another component refers to the pin — a rename would break it. The
world checkbox marks the pin as a boundary port, and takes effect immediately. The
source names the terminal behind the pin (← p1, ← mixer / out) and selects it when
clicked; it is hidden when it would only repeat the pin name. Hovering anywhere on the row
lights that terminal in the viewport.
There is no + here. You expose a pin from the terminal itself — right-click a point or a placed component’s pin, or use the Expose button in its detail block — the same way you create a child in the viewport rather than from a list.
Body
The component’s children as a tree: placed components, channels, points and regions, with a region’s compartments nested beneath it.
This is the same selection the viewport uses, so a row click and a click on the geometry are interchangeable, and selecting in the viewport scrolls the matching row into view. Hovering a row lights the child. The trash on a row deletes it, and is refused with a reason when something refers to the child by label.
The selection zone
The lower zone shows what is selected. It is always there — with nothing selected it says so rather than collapsing, because a zone that came and went would move the controls above it out from under your cursor.
The breadcrumb
Pinned at the top of the zone, the breadcrumb names the chain of scopes down to what you are editing — component, child, compartment, vertex. Each crumb is clickable, so it is also how you step back out. The trash beside it deletes the last scope in the chain, so read the final crumb before using it.
A selected child
What the detail shows depends on what kind of child it is.
A placed component shows its pos, rot and layer placement rows, then its args —
one row per parameter of the component it places, each with a checkbox that overrides the
parameter or returns it to the placed component’s own default. Below those sits one row
per pin the placed component exposes, with an Expose button that forwards the pin through
the component you are editing, or a readout of the name it is already forwarded as.
A channel has no placement rows — its placement is fixed, anchored to the pins at its
ends, and the panel says so. Instead it shows an ends block: one row per end, naming what
that end connects to (end 0 · at p1), each carrying that end’s width control, which is
either inherited or explicit. Hovering an end row lights the terminal it connects to.
A point shows its placement, its span lo/hi and width, and whether it is exposed
as a pin — with an Expose button when it is not. Where the point is a junction between
exactly two channels, Dissolve into channel merges them back into one; it is disabled
with a reason when the junction does not qualify.
A region is edited one compartment at a time, so its detail is the compartment’s.
A selected compartment
region · N vertices sits at the top of every compartment’s detail, and the fill
control below it is the one that matters: void is a carved pocket, material is
untouched slab. Switching a void compartment to material is how you make a hole; switching
it back makes a pocket. The direction that would leave material inside material is disabled
and the tooltip says which case applies.
The outermost compartment is the region child, so it carries the region’s own placement
rows. A nested one carries a name field instead — leave it empty and it falls back to
the derived label shown dimmed beside it — plus dx, dy and rot, which move the
compartment within its parent. There is no layer row on a nested compartment: it cannot
leave its region’s plane.
Fabrication
Void compartments, channels and points carry a fabrication group of override rows. Each row has a checkbox: ticked, the value is this child’s own; unticked, it is inherited, and the effective value is shown dimmed beside the name of what it came from. Ticking seeds the override from whatever the row is displaying, so ticking alone changes no geometry. Unticking clears it and returns to tracking the inherited value.
face chooses which side of the slab the shape is formed from, and appears only at the
scope that is the child itself. depth in µm is what makes a chamber deeper than the
channels running into it, or a pocket a step in that chamber’s floor. walls is the wall
profile — its second row appears only when the profile has a parameter to set. The two
corner-radius rows close the group, inner and outer.
face, depth and walls inherit from the child’s layer; corner radii inherit from the
process forming it. A child sitting off the stack has no layer to inherit from, so its
unset rows read — and cannot be ticked. Existing overrides stay removable either way.
A selected vertex
Selecting a single vertex adds a section at the very bottom, titled with what it is
(Selected vertex — rg · hole 1 · vertex 2 / 5) and carrying the delete for it. A
channel’s vertex shows its pos and width; a region’s shows its position local to the
compartment. Both carry their own corner-radius rows, which override the child’s.
Deleting a region vertex is refused at three — a region needs at least three vertices. A channel’s interior vertex always deletes; removing one straightens the channel through it.
See also
- Components, parameters & pins — the model behind the Params, Computed and Pins tabs.
- Channels & points — what the children in the Body tab are.
- Regions & compartments — the model behind the compartment detail and the fill control.
- Fabrication overrides — the inherit/override grammar the fabrication group and the corner rows follow.
- Layers, stacks & processes — what those rows inherit from.