# Host-rendered prefabs (SDK 1.0)

Discover `et.prefabs.v1` (UI capability) and `et.surface.v1` for the host Canvas
surface renderer. C uses the node types in `ui.h`; C++ authors use
`PanelBuilder::prefab(type, nodeId, targetId, parentId)`. Configure ordinary UI
properties; no Qt type, controller pointer or authored QML crosses the boundary.

| Node | Configuration / host behavior |
|---|---|
| FIELD_EDITOR | target is numeric field ID; resolved bounds, digits, units and enum options; Enter commits, Escape reverts; read-only and capability guards |
| CALIBRATION_TABLE | target is real table ID; existing heatmap, selection, keyboard/clipboard, axis operations, trace and undo/redo |
| CURVE_EDITOR | target is real curve ID; existing numeric grid, graph and grouped drag undo |
| TABLE_SURFACE | target is table ID; host isometric surface, rotation/zoom and data refresh |
| CHANNEL_PICKER | options are bounded newline metadata labels; value is selected label; TWO_WAY enables multiple selections; search and optional persistence |
| LIVE_PANEL | target is a channel ID; host snapshot quality/timestamp/units and bounded 512-point history; STEP configures 1..30 display Hz; empty target uses plugin DATA and VALUE |
| DATALOG_PANEL | host open-log picker, ranges, channel selection, cursors and graph; requires datalog.read; recording controls are hidden |
| ANALYSIS_PANEL | VALUE summary, DATA tabular preview, MINIMUM progress percent; emits analyze/cancel/apply COMMIT strings; TWO_WAY enables Apply only with host Apply permission |

Calibration targets are resolved by the host. Invalid IDs show an unavailable
state. Editors are per-instance and retain the established ET controls, colormaps,
clipboard parsing and keyboard behavior. Host capability/session/ownership guards
run before writes, including keyboard and clipboard actions. Undo/redo from a
prefab is rejected when an external edit has intervened. Prefab controllers are
not exposed to workers. All panel restoration rules in [UI.md](UI.md) apply;
restoration never replays actions or calibration writes.

An empty calibration target selects an independent plugin dataset. DATA is
initial row-major TSV; COLUMNS is width, VALUE is the edited TSV. Set PERSIST to
retain VALUE with the panel. Dataset Enter/Escape, clipboard, undo/redo and finite
range validation remain local to the panel; COMMIT notifies the plugin. These
values never implicitly become a tune proposal. Graph datasets use sequential
point indices; host calibration IDs expose the complete INI axis semantics.

Prefab field/table/curve edits are explicit user edits through native controllers;
programmatic multi-field transactions use [TUNE.md](TUNE.md). A worker cannot
obtain extra rights by enabling a button. Plugin panels use the current theme and
scale, and inherit workspace/floating/modal ownership and crash recovery.
