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 from @sinua/core/dev, 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) | error | /timeline | unknown key timeline |
| A 1.9 key in a 1.8 file | error | /transitions | transitions needs "fxSpec": "1.9" (this file says 1.8) |
| A transitions entry that can't apply | warning | /transitions/idle->speaking | speaking is not a key of states, so this entry never applies |
| A transitions entry that can't apply | error | /transitions/idle->speaking/curve | expected one of linear, ease, easeIn, easeOut, easeInOut |
| 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 |