...
Or, for a full-bleed dark background on a dark-themed display, place a full-size Rectangle with FillTheme: "PageBackground" as the first element.
...
The first 5 seconds an operator looks at the display decide whether the build is good. Compile cleanliness is necessary but not sufficient — errorList is blind to whether anyone would actually want to use the screen. Before responding as finished, three things must be true within five seconds of imagining the operator opening the display:
MainPage, has at least one piece of content visible above the fold. An empty MainPage is a UX failure even when errorList is clean.If any of the three fails, the build is not finished. Pair this with the errorList-blind list in §3 below: errorList handles compile correctness, the visual quality bar handles operator-perceived correctness. The two together — not errorList alone — gate "done."
Closing self-check before respond. Ask: "Would I be embarrassed to show this to an operator?" If the answer is "maybe" or "a little", run the visual checkpoint in §3 again before responding.
{
"Name": "MyDisplay",
{
"Name": "MyDisplay",
"PanelType": "Canvas",
"DisplayMode": "Page",
"Navigate": "true",
"Size": "1600 x 900",
"OnResize": "StretchFill",
"Width": 1600,
"Height": 900,
"Background": "theme:PageBackground",
"Elements": [ /* ... */ ]
}...
The Location string tells you which element (by Uid) and which property (LinkedValue, Expression, etc.) has the problem. Use it to find and fix the exact property.
If errorList is absent or empty, the display compiled clean.
Also check readOnly. If it is true, a subsequent write_objects will fail — check readOnlyReason and surface it to the user before retrying. Common causes: runtime is running, another client has the display open for edit.
errorList is ground truth for compile correctness: bindings resolve, required fields are present, the display will render without crashing. A clean errorList is necessary before you respond as finished.
errorList is blind to visual correctness. None of the following produce an error:
Left/TopTextBlock whose LinkedValue clips because its rendered length exceeds WidthRadialGauge with YMaxValue below the tag's engineering-range maximum (pegs at max forever)Polygon with valid Points but Fill equal to the background (invisible)or empty, the display compiled clean.
Also check readOnly. If it is true, a subsequent write_objects will fail — check readOnlyReason and surface it to the user before retrying. Common causes: runtime is running, another client has the display open for edit.
errorList is ground truth for compile correctness: bindings resolve, required fields are present, the display will render without crashing. A clean errorList is necessary before you respond as finished.
errorList is blind to visual correctness. None of the following produce an error:
Left/TopTextBlock whose LinkedValue clips because its rendered length exceeds WidthRadialGauge with YMaxValue below the tag's engineering-range maximum (pegs at max forever)Polygon with valid Points but Fill equal to the background (invisible)MainPage (or any landing display) that opens emptyAll of those compile clean. All are operator-rejected.
Before any paradigm-specific procedure, mentally open the display from the operator's seat, top edge first. If there is nothing in the top half of the canvas — or if the only thing there is a placeholder waiting for a master selection that never came — that is a failure even on a clean errorList. Go back and add content, restructure, or wire an empty-state placeholder before continuing to the paradigm-specific checkpoint below. This catches the empty-MainPage failure and the empty-detail-panel failure before any screenshot or pixel-tweakAll of those compile clean. All are operator-rejected.
...