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
| Case | Severity | Path | Message |
|---|---|---|---|
| Unknown key in params (with a suggestion) | error | /params/orbitn | unknown key orbitn -- did you mean orbitN? |
| Unknown pattern | error | /pattern | unknown pattern breathin |
| Pattern from another object | error | /object | breathing is an orb pattern; this file's object is ring |
| Value out of range | error | /materials/glow/strength | 2 is out of range [0, 1] |
| Runtime input in params | error | /params/audioLevel | audioLevel 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 params | error | /params/glowStrength | glowStrength belongs in /materials/glow, not in params |
An old name: state (the pattern's name before 1.7) | error | /state | state is pattern (the visual; the lifecycle key is the states map) |
An old name: state (the pattern's name before 1.7) | error | /pattern | missing pattern |
| An old name: an engine-key binding target | error | /bindings/glowStrength | glowStrength is glow.strength |
| A version older than 1.8 (the runtime's floor) | error | /fxSpec | FX 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/color | color is a top-level section in an FX Spec file: move it to /color |
| Binding to something that isn't bindable | error | /bindings/lanes | lanes 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 list | warning | /states | state speaking isn't in states; rendering the base design |
| A newer 1.x file (forward compatible) | warning | /timeline | unknown key timeline (newer 1.x spec? ignored) |
| An unsupported major version | error | /fxSpec | FX Spec 2.x isn't supported by this runtime (1.x) |
In overrides (checkOverrides)
| Case | Severity | Path | Message |
|---|---|---|---|
| Unknown override key (did you mean) | warning | /lanse | unknown key lanse for orb/breathing (did you mean lanes?) |
| Abbreviated key | warning | /lineWidth | unknown key lineWidth for orb/connecting (did you mean lineW?) |
| Override out of range | warning | /lanes | lanes = 40 is outside 1..16 (the engine clamps or ignores it) |
| Fractional value for a whole-number key | warning | /segs | segs expects a whole number, got 88.5 |