Sinua
Reference

Diagnostics

Every warning and error the engine reports for FX Spec files and props, with the exact message.

When a spec or a set of props has a problem, the engine explains it rather than silently ignoring it. Each diagnostic has:

  • severity: an error means the spec doesn't render (the view draws nothing and reports it); a warning means it renders, but something is probably not what you meant.
  • path: a JSON Pointer to the offending key, e.g. /states/listening/pattern.
  • message: what's wrong, and usually the fix (a "did you mean", or the new name).

Views report diagnostics once per change of spec: through onError on the web, and as a logged warning on native.

Props: warnings only

Component props are checked against the parameter catalog, and the result is always a warning. The visual renders anyway, and out-of-range values are clamped. You can run the same check yourself (checkOverrides, see Values).

Every message

These tables are produced by running real inputs through the engine, so they show the exact current wording.

In an FX Spec

CaseSeverityPathMessage
Unknown key in params (with a suggestion)error/params/orbitnunknown key orbitn -- did you mean orbitN?
Unknown patternerror/patternunknown pattern breathin
Pattern from another objecterror/objectbreathing is an orb pattern; this file's object is ring
Value out of rangeerror/materials/glow/strength2 is out of range [0, 1]
Runtime input in paramserror/params/audioLevelaudioLevel is a runtime input, not design: audio levels/bands are live inputs (the voice pipeline); bind it under bindings.audioLevel instead
Section-owned key in paramserror/params/glowStrengthglowStrength belongs in /materials/glow, not in params
An old name: state (the pattern's name before 1.7)error/statestate is pattern (the visual; the lifecycle key is the states map)
An old name: state (the pattern's name before 1.7)error/patternmissing pattern
An old name: an engine-key binding targeterror/bindings/glowStrengthglowStrength is glow.strength
A version older than 1.8 (the runtime's floor)error/fxSpecFX Spec 1.7 isn't supported; this runtime reads 1.8 and later
A section that isn't a material in a file (color / gradient)error/materials/colorcolor is a top-level section in an FX Spec file: move it to /color
Binding to something that isn't bindableerror/bindings/laneslanes isn't a bindable target; bindings drive only the curated Reactive Inputs (progress, progress[0], progress[1], progress[2], progress[3], quality, accuracy, audioLevel, glow.strength, noise.strength, gradient.strength, pulse.strength, color.mix, muted)
A lifecycle state the file doesn't listwarning/statesstate speaking isn't in states; rendering the base design
A newer 1.x file (forward compatible)warning/timelineunknown key timeline (newer 1.x spec? ignored)
An unsupported major versionerror/fxSpecFX Spec 2.x isn't supported by this runtime (1.x)

In overrides (checkOverrides)

CaseSeverityPathMessage
Unknown override key (did you mean)warning/lanseunknown key lanse for orb/breathing (did you mean lanes?)
Abbreviated keywarning/lineWidthunknown key lineWidth for orb/connecting (did you mean lineW?)
Override out of rangewarning/laneslanes = 40 is outside 1..16 (the engine clamps or ignores it)
Fractional value for a whole-number keywarning/segssegs expects a whole number, got 88.5

On this page