Binding Sources
Binding expressions follow the formatsource.path.to.value. The first segment determines which data source is queried.
session.*
Maps to the live session state received from the backend:session:update events from the WebSocket connection.
goals.*
Maps to goal progress data. Access goals by index or name:goal:update events.
fields.*
Maps to widget custom field values. The first segment afterfields is the widget type or ID:
widget:field_change events (fired by SBCanvas.setField()).
vars.*
Maps to runtime variables set withSBCanvas.vars.set():
vars.set() is called.
Resolution Order
When a binding expression doesn’t match any known prefix (session, goals, fields, vars), it falls back to resolving against the session state directly:
Null Handling
If a binding resolves tonull or undefined, the element’s textContent is set to an empty string. No error is thrown.