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
{{ message }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Studio: CEL editor (validate + autocomplete) for field conditional rules (visibleWhen/readonlyWhen/requiredWhen) #1582
B2 added field-level conditional rules authored as CEL: visibleWhen / readonlyWhen / requiredWhen (+ deprecated conditionalRequired). Today a low-code author can only type a raw CEL string into the field config — no validation, no field-name help.
Goal
In Studio's metadata-admin field-config form, give each *When property a proper CEL editor:
Inline syntax/semantic validation as you type.
Field-name autocomplete scoped to the object's fields (and record.* / previous.* / parent.*).
Clear error surfacing when a predicate is invalid.
Reuse (don't reimplement)
@objectstack/formula already exports the validators the server uses:
Wire these into the Studio form widget rather than writing a parallel checker. See the objectstack-studio-admin skill for how metadata types map fields → form widgets and how to register a custom widget per property.
feat(app-shell): CEL lint + field autocomplete for condition predicates (#1582) #2567 — ConditionBuilder's raw-expression mode is now CelPredicateField: inline syntax/semantic lint + field-name autocomplete on the canonical @objectstack/formula validators (validateExpression / introspectScope), per this issue's "reuse, don't reimplement" note. Covers the field-level visibleWhen / readonlyWhen / requiredWhen inputs (SchemaForm's /When$/ condition-widget mapping) and action visible / disabled and every other condition-widget property. An invalid predicate surfaces a readable inline error (the "or warns" acceptance arm); the no-code builder path is unchanged.
Round-trip (author → persist → runtime enforcement in form + grid) is the existing B2 path (#1578 / #1579) with its live e2e; the sibling-field catalog reaches the editor via the existing widgetContext.objectFields plumbing.
Activity
feat(app-shell): Studio CEL editor for list-view conditional formatti…
feat(app-shell): CEL lint + field autocomplete for condition predicat…
os-zhuang commentedon Jul 16, 2026
Delivered — closing as completed.
ConditionBuilder's raw-expression mode is nowCelPredicateField: inline syntax/semantic lint + field-name autocomplete on the canonical@objectstack/formulavalidators (validateExpression/introspectScope), per this issue's "reuse, don't reimplement" note. Covers the field-levelvisibleWhen/readonlyWhen/requiredWheninputs (SchemaForm's/When$/condition-widget mapping) and actionvisible/disabledand every other condition-widget property. An invalid predicate surfaces a readable inline error (the "or warns" acceptance arm); the no-code builder path is unchanged.conditionalFormattingrules editor.Round-trip (author → persist → runtime enforcement in form + grid) is the existing B2 path (#1578 / #1579) with its live e2e; the sibling-field catalog reaches the editor via the existing
widgetContext.objectFieldsplumbing.Generated by Claude Code
feat(studio): CEL editor with validate + autocomplete for field condi…
Resolve merge conflicts for #2575 (merge main into claude/github-issu…
feat(studio): CEL formula editor with inferred result type; structure…