Skip to content

Commit 9d47716

Browse files
committed
chore: add changeset for objectui#2614 spec slice
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HnCZhYpQjRyg2E44RHBiNE
1 parent dcf4c56 commit 9d47716

1 file changed

Lines changed: 24 additions & 0 deletions

File tree

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
'@objectstack/spec': minor
3+
'@objectstack/plugin-hono-server': patch
4+
---
5+
6+
feat(spec): userActions.edit/delete accept per-record CEL predicates (objectui#2614)
7+
8+
`userActions.edit` / `userActions.delete` now accept, in addition to the
9+
plain boolean, an object form `{ enabled?, visibleWhen?, disabledWhen? }`
10+
(`RowCrudActionOverrideSchema`) so the built-in row Edit/Delete affordances
11+
can be hidden or disabled **per record** via CEL predicates — the same
12+
evaluation contract custom row actions already use. `visibleWhen` false →
13+
button not rendered (fail-closed); `disabledWhen` true → rendered disabled
14+
(fail-soft). Advisory UI gating only; server enforcement stays with
15+
permissions/hooks.
16+
17+
`resolveCrudAffordances()` keeps returning the resolved booleans (`enabled`
18+
falls back to the `managedBy` bucket default) and now surfaces the
19+
predicates as `editPredicates` / `deletePredicates`. Boolean-only inputs
20+
produce byte-identical output — zero behavior change for existing schemas.
21+
22+
`clampManagedObjectWrites` (ADR-0092 D2 hint clamp) treats the object form
23+
by its explicit `enabled` flag only: per-record predicates are not a write
24+
grant, so managed objects stay fail-closed unless `enabled === true`.

0 commit comments

Comments
 (0)