Field types and default values
Each record field has Array and Nullable checkboxes. Both are false
for new fields. Existing documents initialize the controls from their types,
including shorthand such as Asset[]? and expanded nullable union/array forms.
The inline type input displays the base type; use the checkboxes to add/remove
wrappers. A named type entered or wired to the field preserves the flags.
Advanced shorthand typed explicitly in the input still works.
Nullable applies to the field value (the array itself if Array is checked), not to every element. Existing nullable array-item types are retained when changing the outer Nullable flag. Multi-type unions and inline definitions are preserved when wrapping/unwrapping them. For nested inline record fields, the same checkboxes are available through their Properties dialog.
Default-value controls
Right-click a field → Properties… → Default value. Choose No default, Set a value, or Null when permitted. Then edit using:
| Field type | Default-value control |
|---|---|
| String | Plain text, including empty strings; no YAML quoting |
| Boolean | Checkbox |
| Integer / number | Numeric input with whole-number/range checks |
| Local enum | Dropdown of symbols, including inherited symbols |
| Array | Add/remove list items, each using its own type's control |
| Local record | Include controls and typed inputs for its fields |
| Mapping | Key/value rows with add/remove controls |
| Union | Choice of branch and a matching value editor |
| Any / unresolved external type | Choice of text, number, boolean, list, or object |
Save default commits one typed value. No default, null, empty text, false, zero, and an empty list remain distinct. The host validates defaults against supported local types before accepting them. Incompatible defaults after a type change are preserved and reported in local checks rather than silently coerced.
The form supports finite nested values, including records/maps and inherited
local fields. Very deeply nested values can still use Advanced node editing.
Numeric integer inputs are restricted to JavaScript's safe integer range;
int also respects its signed 32-bit bounds. Imported types are not resolved,
so their generic form cannot enforce the external schema. Full Schema Salad
validation, including specialization semantics, remains separate.
For a worked procedure, see set a field default.