You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(core): evaluate bare CEL predicates in evaluateCondition (#1788)
`evaluateCondition` delegated to `evaluate`, which only processes `${...}`
templates and returns any other string verbatim — so a bare predicate like
`record.status == "converted"` (what objectstack build emits for
disabled/visible/condition) coerced to `true`, making every bare-expression
predicate silently always-truthy.
Symptom: a param-collecting api action on the record header (CRM "Reassign
Lead") was treated as permanently disabled, so ActionRunner.execute bailed
before opening the param dialog. The page:header renderer was unaffected
because it uses evaluateExpression directly.
- evaluateCondition: treat a non-`${}` condition as a single expression via
evaluateExpression; keep the template path; preserve empty/undefined and
unparseable -> visible/enabled fallbacks.
- ActionRunner: evaluate the `disabled` gate (boolean/string/envelope) instead
of treating any object as truthy.
- plugin-grid RowActionMenu: unify the row-action predicate scope so `record.*`
and bare-field predicates resolve identically on every surface.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
0 commit comments