From 4f4055ce783f85771e7e1dca73bfbe2f46c1303d Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Fri, 17 Jul 2026 15:43:07 +0000
Subject: [PATCH] chore: release packages
---
...apt-atomic-publish-and-honest-discovery.md | 6 -
.changeset/ai-plan-approve-feedback.md | 12 --
.changeset/approval-band-request-tracked.md | 17 ---
.../approver-type-membership-tier-picker.md | 24 ----
.changeset/cascade-select-dependent-values.md | 23 ----
.changeset/listview-spec-derive.md | 35 ------
.changeset/login-config-race-sso-timeout.md | 21 ----
.changeset/login-dev-admin-hint.md | 6 -
.changeset/oidc-signin-social-route.md | 15 ---
.changeset/register-double-divider.md | 8 --
.changeset/row-crud-cel-predicates-2614.md | 22 ----
.changeset/spec-15-ui-schema-reexports.md | 9 --
.changeset/spec-bridge-listview-types.md | 15 ---
.changeset/welcome-cta-autocreate.md | 14 ---
apps/console/CHANGELOG.md | 8 ++
apps/console/package.json | 2 +-
packages/app-shell/CHANGELOG.md | 109 ++++++++++++++++++
packages/app-shell/package.json | 2 +-
packages/auth/CHANGELOG.md | 43 +++++++
packages/auth/package.json | 2 +-
packages/cli/CHANGELOG.md | 16 +++
packages/cli/package.json | 2 +-
packages/collaboration/CHANGELOG.md | 9 ++
packages/collaboration/package.json | 2 +-
packages/components/CHANGELOG.md | 63 ++++++++++
packages/components/package.json | 2 +-
packages/core/CHANGELOG.md | 9 ++
packages/core/package.json | 2 +-
packages/create-plugin/CHANGELOG.md | 2 +
packages/create-plugin/package.json | 2 +-
packages/data-objectstack/CHANGELOG.md | 10 ++
packages/data-objectstack/package.json | 2 +-
packages/fields/CHANGELOG.md | 20 ++++
packages/fields/package.json | 2 +-
packages/i18n/CHANGELOG.md | 6 +
packages/i18n/package.json | 2 +-
packages/layout/CHANGELOG.md | 17 +++
packages/layout/package.json | 2 +-
packages/mobile/CHANGELOG.md | 9 ++
packages/mobile/package.json | 2 +-
packages/permissions/CHANGELOG.md | 9 ++
packages/permissions/package.json | 2 +-
packages/plugin-ai/CHANGELOG.md | 17 +++
packages/plugin-ai/package.json | 2 +-
packages/plugin-calendar/CHANGELOG.md | 22 ++++
packages/plugin-calendar/package.json | 2 +-
packages/plugin-charts/CHANGELOG.md | 19 +++
packages/plugin-charts/package.json | 2 +-
packages/plugin-chatbot/CHANGELOG.md | 24 ++++
packages/plugin-chatbot/package.json | 2 +-
packages/plugin-dashboard/CHANGELOG.md | 20 ++++
packages/plugin-dashboard/package.json | 2 +-
packages/plugin-designer/CHANGELOG.md | 23 ++++
packages/plugin-designer/package.json | 2 +-
packages/plugin-detail/CHANGELOG.md | 49 ++++++++
packages/plugin-detail/package.json | 2 +-
packages/plugin-editor/CHANGELOG.md | 17 +++
packages/plugin-editor/package.json | 2 +-
packages/plugin-form/CHANGELOG.md | 35 ++++++
packages/plugin-form/package.json | 2 +-
packages/plugin-gantt/CHANGELOG.md | 21 ++++
packages/plugin-gantt/package.json | 2 +-
packages/plugin-grid/CHANGELOG.md | 37 ++++++
packages/plugin-grid/package.json | 2 +-
packages/plugin-kanban/CHANGELOG.md | 21 ++++
packages/plugin-kanban/package.json | 2 +-
packages/plugin-list/CHANGELOG.md | 22 ++++
packages/plugin-list/package.json | 2 +-
packages/plugin-map/CHANGELOG.md | 17 +++
packages/plugin-map/package.json | 2 +-
packages/plugin-markdown/CHANGELOG.md | 17 +++
packages/plugin-markdown/package.json | 2 +-
packages/plugin-report/CHANGELOG.md | 21 ++++
packages/plugin-report/package.json | 2 +-
packages/plugin-timeline/CHANGELOG.md | 18 +++
packages/plugin-timeline/package.json | 2 +-
packages/plugin-tree/CHANGELOG.md | 17 +++
packages/plugin-tree/package.json | 2 +-
packages/plugin-view/CHANGELOG.md | 21 ++++
packages/plugin-view/package.json | 2 +-
packages/providers/CHANGELOG.md | 9 ++
packages/providers/package.json | 2 +-
packages/react-runtime/CHANGELOG.md | 2 +
packages/react-runtime/package.json | 2 +-
packages/react/CHANGELOG.md | 41 +++++++
packages/react/package.json | 2 +-
packages/runner/CHANGELOG.md | 19 +++
packages/runner/package.json | 2 +-
packages/sdui-parser/CHANGELOG.md | 2 +
packages/sdui-parser/package.json | 2 +-
packages/types/CHANGELOG.md | 58 ++++++++++
packages/types/package.json | 2 +-
packages/vscode-extension/CHANGELOG.md | 10 ++
packages/vscode-extension/package.json | 2 +-
94 files changed, 949 insertions(+), 267 deletions(-)
delete mode 100644 .changeset/adapt-atomic-publish-and-honest-discovery.md
delete mode 100644 .changeset/ai-plan-approve-feedback.md
delete mode 100644 .changeset/approval-band-request-tracked.md
delete mode 100644 .changeset/approver-type-membership-tier-picker.md
delete mode 100644 .changeset/cascade-select-dependent-values.md
delete mode 100644 .changeset/listview-spec-derive.md
delete mode 100644 .changeset/login-config-race-sso-timeout.md
delete mode 100644 .changeset/login-dev-admin-hint.md
delete mode 100644 .changeset/oidc-signin-social-route.md
delete mode 100644 .changeset/register-double-divider.md
delete mode 100644 .changeset/row-crud-cel-predicates-2614.md
delete mode 100644 .changeset/spec-15-ui-schema-reexports.md
delete mode 100644 .changeset/spec-bridge-listview-types.md
delete mode 100644 .changeset/welcome-cta-autocreate.md
diff --git a/.changeset/adapt-atomic-publish-and-honest-discovery.md b/.changeset/adapt-atomic-publish-and-honest-discovery.md
deleted file mode 100644
index 789343681..000000000
--- a/.changeset/adapt-atomic-publish-and-honest-discovery.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-"@object-ui/react": minor
-"@object-ui/app-shell": minor
----
-
-Adapt to framework 15.1: (1) ADR-0067 D2 all-or-nothing publishes — `formatPublishFailures` renders a rolled-back batch as ONE banner anchored on the causal item (`batch_aborted` entries are summarized, not listed as parallel errors); PackagesPage says "rolled back because X" instead of "{n} failed"; the AI chat publish toast surfaces the real reason instead of a bare count. Pre-15.1 partial-publish responses keep their per-item rendering. (2) ADR-0076 D12 honest discovery — `DiscoveryServiceStatus` gains `handlerReady` + `degraded`/`stub` statuses, new backward-tolerant `isServiceUsable()` helper (absent fields keep the pre-15.1 default; `stub`/`handlerReady:false` gate off; `degraded` stays usable), consumed by `isAuthEnabled`/`isAiEnabled` and `ConditionalAuthWrapper`.
diff --git a/.changeset/ai-plan-approve-feedback.md b/.changeset/ai-plan-approve-feedback.md
deleted file mode 100644
index 65edf2c81..000000000
--- a/.changeset/ai-plan-approve-feedback.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-'@object-ui/plugin-chatbot': patch
-'@object-ui/app-shell': patch
----
-
-Plan-card approval gives immediate in-card feedback (#2627): clicking
-"Build it" flips the clicked card to a spinning "Building…" badge right away
-(the approval's chat-level effects land at the bottom of the thread, outside
-the viewport, so the card looked untouched for ~10s and users double-clicked).
-The durable Built state still derives from the message stream; an approval
-that never left the client (rate limit / offline) rolls the badge back so the
-button returns. New `planBuildingLabel` prop (AiChatPage passes zh).
diff --git a/.changeset/approval-band-request-tracked.md b/.changeset/approval-band-request-tracked.md
deleted file mode 100644
index c0a43a5b7..000000000
--- a/.changeset/approval-band-request-tracked.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-"@object-ui/react": patch
-"@object-ui/plugin-detail": patch
-"@object-ui/app-shell": patch
----
-
-fix(detail): show the "Locked for approval" band on request-tracked backends (objectui#2618)
-
-The DetailView approval-lock band keyed only off the record's own
-`approval_status` field, so it never rendered on backends that track the lock
-via an open approval request and never materialize that field — even though
-the lock was real (writes rejected with `RECORD_LOCKED`). The record-level
-`InlineEditContext` now carries the host's `locked`/`lockedReason` signal
-(the same dual-source `approvalLocked` that already gates `canEdit` in
-`RecordDetailView`), and the band renders from it while keeping `DetailView`
-DataSource-agnostic. Also backfills the approval-lock strings into the detail
-translation defaults so a bare DetailView shows the label, not the raw i18n key.
diff --git a/.changeset/approver-type-membership-tier-picker.md b/.changeset/approver-type-membership-tier-picker.md
deleted file mode 100644
index 3ccc9a4b7..000000000
--- a/.changeset/approver-type-membership-tier-picker.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-"@object-ui/app-shell": patch
----
-
-fix(studio): approver Type is a real dropdown that drops the deprecated `role` spelling (framework #3133)
-
-The flow designer's approver `Type` control silently rendered as free text:
-`FlowObjectListField` had no `select` branch, so an objectList column of kind
-`select` (which the approver type is, derived from the spec enum) fell through
-to a plain `` and its computed options were never shown. Added the
-missing branch — it renders a real dropdown from the column's `options`, and
-keeps a **stored** value that is no longer offered (a deprecated enum member)
-visible-but-flagged so editing a legacy row can't silently blank it.
-
-With the dropdown live, it honors framework's new `xEnumDeprecated` schema
-annotation (ADR-0090 D3): the deprecated `role` approver type is dropped from
-the options while `org_membership_level` is offered, so Studio no longer walks
-authors into the trap of picking `role` (which resolves against the better-auth
-membership tier and silently matches nobody).
-
-Also: the `org-membership-level` reference picker is a fixed three-value enum
-(owner/admin/member) instead of the dead `client.list('role')` — the `role`
-metadata type was removed by ADR-0090 D3, so that call returned nothing and the
-Value box degraded to free text.
diff --git a/.changeset/cascade-select-dependent-values.md b/.changeset/cascade-select-dependent-values.md
deleted file mode 100644
index 85a964628..000000000
--- a/.changeset/cascade-select-dependent-values.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-'@object-ui/components': patch
----
-
-fix(form): thread live `dependentValues` to cascading option fields (#2284/#1583)
-
-The form renderer only injected the live form record into data-source widgets
-(`lookup`/`master_detail`/… — the `DATA_SOURCE_FIELD_TYPES` set). Registered
-option widgets (`field:select`/`field:radio`/`field:multiselect`) that carry
-per-option `visibleWhen` + `dependsOn` cascading were **excluded**, so
-`stripRegisteredFieldProps` dropped `dependentValues` before it reached
-`SelectField`. With no live record and no `formValues` context fallback, a
-cascading `select` never saw its controlling field: in a create form the
-dependent field stayed permanently gated on the "Select the parent first" hint
-even after the parent was chosen (reproduced on the showcase `showcase_cascade`
-B3 fixture — country → province never unlocked).
-
-Option field types now receive `dependentValues` too, so the widget's
-`dependsOn` gate lifts and its `visibleWhen` set re-filters live as the parent
-changes — the same channel the lookup fix (#2215/#2216) already used. Regression
-guard added in `form-dependent-values.test.tsx` (drives the registered
-`field:select` path, not just the builtin `case 'select'` fallback the prior
-cascading-select test covered).
diff --git a/.changeset/listview-spec-derive.md b/.changeset/listview-spec-derive.md
deleted file mode 100644
index 667796206..000000000
--- a/.changeset/listview-spec-derive.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-"@object-ui/types": minor
----
-
-feat(types): derive `ListViewSchema` from `@objectstack/spec/ui` instead of a hand-written copy (#2231)
-
-`@object-ui/types` shipped a hand-written mirror of the spec's UI ListView zod
-(`packages/types/src/zod/objectql.zod.ts`) plus a parallel hand-written TS `interface`
-(`objectql.ts`). Both had drifted from the authoritative `@objectstack/spec/ui`
-`ListViewSchema`, with nothing enforcing they stay in sync.
-
-- The zod `ListViewSchema` now **derives** from the spec's `ListViewSchema`: spec-owned
- fields (`filter`, `sort`, `selection`, `navigation`, `pagination`, `grouping`,
- `rowColor`, `userActions`, `appearance`, `tabs`, `addRecord`, `rowHeight`, `sharing`,
- `chart`/`tree` configs, `responsive`, `performance`, …) flow in **by reference** instead
- of being re-typed. The component envelope (`type: 'list-view'` discriminator +
- `objectName`) and the legacy objectui vocabulary (`viewType`, `fields`, `filters`, the
- `show*` toolbar flags, `densityMode`, `color`, …) plus the configs whose objectui shape
- is intentionally broader than spec's (`userFilters`, `sharing`, `aria`,
- `conditionalFormatting`, `exportOptions`, `kanban`/`calendar`/`gantt`/`gallery`/
- `timeline`) remain as sanctioned local `.extend()`s. Existing payloads keep validating;
- spec-canonical payloads (`columns`/`filter`/`userActions`) now validate too.
-- The hand-written TS `interface ListViewSchema` is replaced by
- `z.infer & ListViewRuntimeProps`, so the type can no longer drift
- from the schema. Non-serializable runtime-only props (`onNavigate`, `onDensityChange`,
- `refreshTrigger`) live in `ListViewRuntimeProps`.
-- Added a drift-guard test (`list-view-spec-parity.test.ts`) that fails if the spec grows a
- field objectui hasn't triaged, renames an aliased anchor (`type`/`columns`/`filter`), or
- an objectui-only field is added outside the sanctioned-local set.
-- Bumped the `@objectstack/spec` dependency `^14.6.0` → `^15.1.0` across the workspace
- (15.1.0 carries the framework#3021 `lazySchema`/`z.toJSONSchema` identity fix that the
- spec-derived Page/View inspectors depend on).
-
-Migrating the legacy vocabulary to the spec-canonical keys and adopting spec's narrower
-sub-shapes are deferred follow-ups (see #2231). No runtime behavior change.
diff --git a/.changeset/login-config-race-sso-timeout.md b/.changeset/login-config-race-sso-timeout.md
deleted file mode 100644
index 038e22666..000000000
--- a/.changeset/login-config-race-sso-timeout.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-'@object-ui/auth': patch
----
-
-Login-page auth-config hardening (#2625, #2626):
-
-- `createAuthClient.getConfig` now single-flights + caches the `/auth/config`
- fetch (the login page's three consumers used to fire three requests) and
- retries failures with backoff (500ms/1.5s/3.5s, 8s per-attempt abort) before
- rejecting. A cold-starting environment kernel no longer strands the page
- without its SSO buttons; a final failure clears the cache so later callers
- retry.
-- `LoginForm` holds a spinner instead of painting the password-form defaults
- while config resolves — an SSO-only deployment must never flash a password
- wall at JIT users who have no password. A failed config still falls back to
- the password form (break-glass beats lock-out).
-- `signInWithProvider` gains a 20s watchdog: a sign-in request that hangs now
- rejects with a clear timeout error so the provider button recovers instead
- of spinning forever.
-- Removed LoginForm's duplicate "or" divider — SocialSignInButtons already
- renders its own, and the stacked pair read as a rendering glitch.
diff --git a/.changeset/login-dev-admin-hint.md b/.changeset/login-dev-admin-hint.md
deleted file mode 100644
index e9ed48c0d..000000000
--- a/.changeset/login-dev-admin-hint.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-"@object-ui/console": patch
-"@object-ui/i18n": patch
----
-
-Login page surfaces the dev-seeded admin credentials. The framework runtime seeds `admin@objectos.ai` on an empty development database, but nothing on the login page said so — new users clicked "Sign up" and landed in an empty non-admin workspace (15.1 third-party eval). When `GET /api/v1/auth/config` reports `devSeedAdmin` (dev-only; the server omits the field in production and once the default password is changed), the page renders a dismissible amber banner with the credentials. Dismissal persists per browser via localStorage.
diff --git a/.changeset/oidc-signin-social-route.md b/.changeset/oidc-signin-social-route.md
deleted file mode 100644
index 337df201b..000000000
--- a/.changeset/oidc-signin-social-route.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-'@object-ui/auth': patch
----
-
-`signInWithProvider` with `type: 'oidc'` now signs in through better-auth's
-core social route (`POST /sign-in/social`) and only falls back to the legacy
-`POST /sign-in/oauth2` endpoint when the social route rejects the provider.
-
-better-auth ≥ 1.7 restructured the `genericOAuth` plugin: generic OAuth/OIDC
-providers are injected into the core social sign-in flow and the dedicated
-`/sign-in/oauth2` endpoint no longer exists. The old client therefore 404'd on
-every "Continue with ObjectStack" click (platform SSO broken end-to-end on
-current framework). The fallback keeps the button working against older
-(< 1.7) servers during the coordinated rollout; when both routes fail, the
-social-route error is surfaced since on a ≥ 1.7 server it is the real failure.
diff --git a/.changeset/register-double-divider.md b/.changeset/register-double-divider.md
deleted file mode 100644
index 0c8342810..000000000
--- a/.changeset/register-double-divider.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-'@object-ui/auth': patch
----
-
-RegisterForm: drop the duplicate "or" divider (matching the LoginForm fix in
-#2629). SocialSignInButtons already renders its own "or continue with email"
-divider under the provider buttons; RegisterForm stacked a second "OR" line on
-top, which read as a rendering glitch on the sign-up page.
diff --git a/.changeset/row-crud-cel-predicates-2614.md b/.changeset/row-crud-cel-predicates-2614.md
deleted file mode 100644
index ae1d1be33..000000000
--- a/.changeset/row-crud-cel-predicates-2614.md
+++ /dev/null
@@ -1,22 +0,0 @@
----
-'@object-ui/plugin-grid': minor
-'@object-ui/components': minor
-'@object-ui/plugin-detail': minor
-'@object-ui/plugin-form': patch
-'@object-ui/app-shell': minor
-'@object-ui/types': minor
----
-
-feat(grid): built-in row Edit/Delete honor per-record CEL predicates (#2614)
-
-The object's `userActions.edit` / `userActions.delete` now also accept an
-object form `{ enabled?, visibleWhen?, disabledWhen? }`. The predicates are
-evaluated per row on the canonical CEL engine (`useRowPredicate`, the same
-machinery custom row actions use): `visibleWhen` false → the built-in
-Edit/Delete item is not rendered for that row (fail-closed); `disabledWhen`
-true → rendered disabled (fail-soft). Wired through ObjectGrid's
-RowActionMenu and the data-table's row overflow menu (the related-list
-path), with the app-shell `crudAffordances` mirror kept in lockstep.
-Omitting the predicates (or using plain booleans) keeps today's behavior
-bit-for-bit; declared predicates evaluate only when a row's menu opens, so
-grid rendering cost is unchanged.
diff --git a/.changeset/spec-15-ui-schema-reexports.md b/.changeset/spec-15-ui-schema-reexports.md
deleted file mode 100644
index d5e7beaf8..000000000
--- a/.changeset/spec-15-ui-schema-reexports.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-'@object-ui/types': major
----
-
-Adopt `@objectstack/spec` 15 across the workspace and drop the value-erased `…Schema` re-exports from `@object-ui/types` (#2561).
-
-**Removed exports.** `packages/types` re-exported the `@objectstack/spec/ui` surface inside `export type { … }` blocks, and those blocks included the zod validators (`DndConfigSchema`, `SpecFormViewSchema`, `ThemeModeSchema`, … 84 names in total). Under `export type` a zod value is erased, so importing any of them as a value from `@object-ui/types` silently yielded `undefined` at runtime. Per the #2561 decision (option a) the schema names are removed from the public surface instead of being converted to value re-exports — consumers that need the runtime validators import them from `@objectstack/spec/ui` directly. The inferred types (`DndConfig`, `SpecFormView`, …) are unchanged, and the genuine value re-exports (`defineStack`, `ObjectStackSchema`, `SpecReportSchema`, …) keep working. `BreakpointColumnMapSchema` / `BreakpointOrderMapSchema` are dropped without a type replacement (the spec exports no companion inferred type). A guardrail test (`spec-ui-schema-reexports.test.ts`) pins the contract.
-
-**Spec 15.** Every workspace package now depends on `@objectstack/spec` ^15.1.1. The `/ui` export-name set is identical to 14.6; the spec-level breaking change is ADR-0089 D3a — `FormFieldSchema` / `FormSectionSchema` / `PageComponentSchema` are `.strict()` and reject undeclared keys, which the workspace test suite passes under. The floor is 15.1.1 (not 15.0.0) because D3a's `.strict().transform(…)` pipes crashed `z.toJSONSchema` over spec's lazySchema proxies (`Cannot set properties of undefined (setting 'ref')`), breaking Studio's spec-derived Page/View inspector schemas; fixed upstream in framework#3021, which shipped in spec 15.1.1. New `view-schema.test.ts` pins the View-inspector derivation (previously untested — it degraded silently).
diff --git a/.changeset/spec-bridge-listview-types.md b/.changeset/spec-bridge-listview-types.md
deleted file mode 100644
index fe60e9d08..000000000
--- a/.changeset/spec-bridge-listview-types.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-"@object-ui/react": patch
----
-
-refactor(spec-bridge): retire the hand-written `ListViewSpec`/`ListColumn` mirrors in the list-view bridge (#2231 follow-up)
-
-The SpecBridge's list-view bridge kept a third hand-written copy of the ListView shape
-(after the zod schema and the TS interface unified in the previous #2231 PR). It now
-derives its input type from `@objectstack/spec/ui` (`Partial`, spec `ListColumn`),
-so the bridge can no longer drift from the protocol.
-
-Behavior fix surfaced by the real types: spec `columns` is `string[] | ListColumn[]`, but
-the old local interface only admitted `ListColumn[]` — a bare field-name column would have
-produced a broken `{ accessorKey: undefined }` mapping. String columns now map to a default
-column (`{ accessorKey: field, header: field }`).
diff --git a/.changeset/welcome-cta-autocreate.md b/.changeset/welcome-cta-autocreate.md
deleted file mode 100644
index ed4cef79e..000000000
--- a/.changeset/welcome-cta-autocreate.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-'@object-ui/components': patch
-'@object-ui/app-shell': patch
----
-
-Welcome-page "Create your environment" deep-links straight into the create
-dialog (#844): `action:button` gains a client-side `autoTrigger` flag (runs
-the action once on mount — same execute path as a click, so param dialogs /
-confirms / entitlement gates still apply), and the environments list consumes
-`?runAction=create_environment` to mark its create action once entitlements
-resolve (upgrade-locked orgs get the upgrade prompt instead; the param is
-stripped after consumption so refresh/back don't re-open). Also localizes the
-EnvironmentListToolbar's state-aware label overrides ({en,zh}) — they were
-hard-coded English inside a zh console.
diff --git a/apps/console/CHANGELOG.md b/apps/console/CHANGELOG.md
index 9d3923857..34cd71b66 100644
--- a/apps/console/CHANGELOG.md
+++ b/apps/console/CHANGELOG.md
@@ -1,5 +1,13 @@
# @object-ui/console
+## 16.0.0
+
+### Patch Changes
+
+- ca0f5f0: Login page surfaces the dev-seeded admin credentials. The framework runtime seeds `admin@objectos.ai` on an empty development database, but nothing on the login page said so — new users clicked "Sign up" and landed in an empty non-admin workspace (15.1 third-party eval). When `GET /api/v1/auth/config` reports `devSeedAdmin` (dev-only; the server omits the field in production and once the default password is changed), the page renders a dismissible amber banner with the credentials. Dismissal persists per browser via localStorage.
+ - @object-ui/react-runtime@16.0.0
+ - @object-ui/sdui-parser@16.0.0
+
## 15.0.0
### Major Changes
diff --git a/apps/console/package.json b/apps/console/package.json
index 735fb4c47..bc150a362 100644
--- a/apps/console/package.json
+++ b/apps/console/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/console",
- "version": "15.0.0",
+ "version": "16.0.0",
"description": "ObjectStack Console — opinionated, fork-ready runtime console built on @object-ui/app-shell with the full plugin set wired up. Ships as a Hono UI plugin serving a pre-built SPA.",
"license": "MIT",
"type": "module",
diff --git a/packages/app-shell/CHANGELOG.md b/packages/app-shell/CHANGELOG.md
index ef0ffb329..753309982 100644
--- a/packages/app-shell/CHANGELOG.md
+++ b/packages/app-shell/CHANGELOG.md
@@ -1,5 +1,114 @@
# @object-ui/app-shell — Changelog
+## 16.0.0
+
+### Minor Changes
+
+- d3e19ed: Adapt to framework 15.1: (1) ADR-0067 D2 all-or-nothing publishes — `formatPublishFailures` renders a rolled-back batch as ONE banner anchored on the causal item (`batch_aborted` entries are summarized, not listed as parallel errors); PackagesPage says "rolled back because X" instead of "{n} failed"; the AI chat publish toast surfaces the real reason instead of a bare count. Pre-15.1 partial-publish responses keep their per-item rendering. (2) ADR-0076 D12 honest discovery — `DiscoveryServiceStatus` gains `handlerReady` + `degraded`/`stub` statuses, new backward-tolerant `isServiceUsable()` helper (absent fields keep the pre-15.1 default; `stub`/`handlerReady:false` gate off; `degraded` stays usable), consumed by `isAuthEnabled`/`isAiEnabled` and `ConditionalAuthWrapper`.
+- 5534535: feat(grid): built-in row Edit/Delete honor per-record CEL predicates (#2614)
+
+ The object's `userActions.edit` / `userActions.delete` now also accept an
+ object form `{ enabled?, visibleWhen?, disabledWhen? }`. The predicates are
+ evaluated per row on the canonical CEL engine (`useRowPredicate`, the same
+ machinery custom row actions use): `visibleWhen` false → the built-in
+ Edit/Delete item is not rendered for that row (fail-closed); `disabledWhen`
+ true → rendered disabled (fail-soft). Wired through ObjectGrid's
+ RowActionMenu and the data-table's row overflow menu (the related-list
+ path), with the app-shell `crudAffordances` mirror kept in lockstep.
+ Omitting the predicates (or using plain booleans) keeps today's behavior
+ bit-for-bit; declared predicates evaluate only when a row's menu opens, so
+ grid rendering cost is unchanged.
+
+### Patch Changes
+
+- c0bd483: Plan-card approval gives immediate in-card feedback (#2627): clicking
+ "Build it" flips the clicked card to a spinning "Building…" badge right away
+ (the approval's chat-level effects land at the bottom of the thread, outside
+ the viewport, so the card looked untouched for ~10s and users double-clicked).
+ The durable Built state still derives from the message stream; an approval
+ that never left the client (rate limit / offline) rolls the badge back so the
+ button returns. New `planBuildingLabel` prop (AiChatPage passes zh).
+- 59d4fa9: fix(detail): show the "Locked for approval" band on request-tracked backends (objectui#2618)
+
+ The DetailView approval-lock band keyed only off the record's own
+ `approval_status` field, so it never rendered on backends that track the lock
+ via an open approval request and never materialize that field — even though
+ the lock was real (writes rejected with `RECORD_LOCKED`). The record-level
+ `InlineEditContext` now carries the host's `locked`/`lockedReason` signal
+ (the same dual-source `approvalLocked` that already gates `canEdit` in
+ `RecordDetailView`), and the band renders from it while keeping `DetailView`
+ DataSource-agnostic. Also backfills the approval-lock strings into the detail
+ translation defaults so a bare DetailView shows the label, not the raw i18n key.
+
+- 6c53960: fix(studio): approver Type is a real dropdown that drops the deprecated `role` spelling (framework #3133)
+
+ The flow designer's approver `Type` control silently rendered as free text:
+ `FlowObjectListField` had no `select` branch, so an objectList column of kind
+ `select` (which the approver type is, derived from the spec enum) fell through
+ to a plain `` and its computed options were never shown. Added the
+ missing branch — it renders a real dropdown from the column's `options`, and
+ keeps a **stored** value that is no longer offered (a deprecated enum member)
+ visible-but-flagged so editing a legacy row can't silently blank it.
+
+ With the dropdown live, it honors framework's new `xEnumDeprecated` schema
+ annotation (ADR-0090 D3): the deprecated `role` approver type is dropped from
+ the options while `org_membership_level` is offered, so Studio no longer walks
+ authors into the trap of picking `role` (which resolves against the better-auth
+ membership tier and silently matches nobody).
+
+ Also: the `org-membership-level` reference picker is a fixed three-value enum
+ (owner/admin/member) instead of the dead `client.list('role')` — the `role`
+ metadata type was removed by ADR-0090 D3, so that call returned nothing and the
+ Value box degraded to free text.
+
+- 33b4995: Welcome-page "Create your environment" deep-links straight into the create
+ dialog (#844): `action:button` gains a client-side `autoTrigger` flag (runs
+ the action once on mount — same execute path as a click, so param dialogs /
+ confirms / entitlement gates still apply), and the environments list consumes
+ `?runAction=create_environment` to mark its create action once entitlements
+ resolve (upgrade-locked orgs get the upgrade prompt instead; the param is
+ stripped after consumption so refresh/back don't re-open). Also localizes the
+ EnvironmentListToolbar's state-aware label overrides ({en,zh}) — they were
+ hard-coded English inside a zh console.
+- Updated dependencies [d3e19ed]
+- Updated dependencies [c0bd483]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [4c7c47f]
+- Updated dependencies [b4ef588]
+- Updated dependencies [45c6fb4]
+- Updated dependencies [ca0f5f0]
+- Updated dependencies [077e45b]
+- Updated dependencies [022735f]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+- Updated dependencies [33b4995]
+ - @object-ui/react@16.0.0
+ - @object-ui/plugin-chatbot@16.0.0
+ - @object-ui/plugin-detail@16.0.0
+ - @object-ui/components@16.0.0
+ - @object-ui/types@16.0.0
+ - @object-ui/auth@16.0.0
+ - @object-ui/i18n@16.0.0
+ - @object-ui/plugin-grid@16.0.0
+ - @object-ui/plugin-form@16.0.0
+ - @object-ui/fields@16.0.0
+ - @object-ui/layout@16.0.0
+ - @object-ui/plugin-calendar@16.0.0
+ - @object-ui/plugin-charts@16.0.0
+ - @object-ui/plugin-dashboard@16.0.0
+ - @object-ui/plugin-designer@16.0.0
+ - @object-ui/plugin-editor@16.0.0
+ - @object-ui/plugin-kanban@16.0.0
+ - @object-ui/plugin-list@16.0.0
+ - @object-ui/plugin-report@16.0.0
+ - @object-ui/plugin-view@16.0.0
+ - @object-ui/collaboration@16.0.0
+ - @object-ui/core@16.0.0
+ - @object-ui/data-objectstack@16.0.0
+ - @object-ui/permissions@16.0.0
+ - @object-ui/providers@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/app-shell/package.json b/packages/app-shell/package.json
index b06108908..1fad9582a 100644
--- a/packages/app-shell/package.json
+++ b/packages/app-shell/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/app-shell",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "Minimal application shell for ObjectUI - framework-agnostic rendering engine",
diff --git a/packages/auth/CHANGELOG.md b/packages/auth/CHANGELOG.md
index 23da52419..1c31fae4d 100644
--- a/packages/auth/CHANGELOG.md
+++ b/packages/auth/CHANGELOG.md
@@ -1,5 +1,48 @@
# @object-ui/auth
+## 16.0.0
+
+### Patch Changes
+
+- 45c6fb4: Login-page auth-config hardening (#2625, #2626):
+
+ - `createAuthClient.getConfig` now single-flights + caches the `/auth/config`
+ fetch (the login page's three consumers used to fire three requests) and
+ retries failures with backoff (500ms/1.5s/3.5s, 8s per-attempt abort) before
+ rejecting. A cold-starting environment kernel no longer strands the page
+ without its SSO buttons; a final failure clears the cache so later callers
+ retry.
+ - `LoginForm` holds a spinner instead of painting the password-form defaults
+ while config resolves — an SSO-only deployment must never flash a password
+ wall at JIT users who have no password. A failed config still falls back to
+ the password form (break-glass beats lock-out).
+ - `signInWithProvider` gains a 20s watchdog: a sign-in request that hangs now
+ rejects with a clear timeout error so the provider button recovers instead
+ of spinning forever.
+ - Removed LoginForm's duplicate "or" divider — SocialSignInButtons already
+ renders its own, and the stacked pair read as a rendering glitch.
+
+- 077e45b: `signInWithProvider` with `type: 'oidc'` now signs in through better-auth's
+ core social route (`POST /sign-in/social`) and only falls back to the legacy
+ `POST /sign-in/oauth2` endpoint when the social route rejects the provider.
+
+ better-auth ≥ 1.7 restructured the `genericOAuth` plugin: generic OAuth/OIDC
+ providers are injected into the core social sign-in flow and the dedicated
+ `/sign-in/oauth2` endpoint no longer exists. The old client therefore 404'd on
+ every "Continue with ObjectStack" click (platform SSO broken end-to-end on
+ current framework). The fallback keeps the button working against older
+ (< 1.7) servers during the coordinated rollout; when both routes fail, the
+ social-route error is surfaced since on a ≥ 1.7 server it is the real failure.
+
+- 022735f: RegisterForm: drop the duplicate "or" divider (matching the LoginForm fix in
+ #2629). SocialSignInButtons already renders its own "or continue with email"
+ divider under the provider buttons; RegisterForm stacked a second "OR" line on
+ top, which read as a rendering glitch on the sign-up page.
+- Updated dependencies [b4ef588]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+ - @object-ui/types@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/auth/package.json b/packages/auth/package.json
index 4ab2b8441..f50949929 100644
--- a/packages/auth/package.json
+++ b/packages/auth/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/auth",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "Authentication system for Object UI with AuthProvider, useAuth hook, AuthGuard, and form components.",
diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md
index dec3466f2..be3cb5f0b 100644
--- a/packages/cli/CHANGELOG.md
+++ b/packages/cli/CHANGELOG.md
@@ -1,5 +1,21 @@
# @object-ui/cli
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [d3e19ed]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [4c7c47f]
+- Updated dependencies [b4ef588]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+- Updated dependencies [33b4995]
+ - @object-ui/react@16.0.0
+ - @object-ui/components@16.0.0
+ - @object-ui/types@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/cli/package.json b/packages/cli/package.json
index 757ad05a0..3d52db7ce 100644
--- a/packages/cli/package.json
+++ b/packages/cli/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/cli",
- "version": "15.0.0",
+ "version": "16.0.0",
"description": "Standalone CLI for Object UI — scaffold, develop, build and validate JSON/YAML schema-driven applications.",
"type": "module",
"homepage": "https://www.objectui.org/docs/utilities/cli",
diff --git a/packages/collaboration/CHANGELOG.md b/packages/collaboration/CHANGELOG.md
index c70dfed20..edf87ebe4 100644
--- a/packages/collaboration/CHANGELOG.md
+++ b/packages/collaboration/CHANGELOG.md
@@ -1,5 +1,14 @@
# @object-ui/collaboration
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [b4ef588]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+ - @object-ui/types@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/collaboration/package.json b/packages/collaboration/package.json
index 1363132f8..763c33695 100644
--- a/packages/collaboration/package.json
+++ b/packages/collaboration/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/collaboration",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "Real-time collaboration for Object UI with presence tracking, live cursors, conflict resolution, and comment threads.",
diff --git a/packages/components/CHANGELOG.md b/packages/components/CHANGELOG.md
index 0ff23346b..58634e642 100644
--- a/packages/components/CHANGELOG.md
+++ b/packages/components/CHANGELOG.md
@@ -1,5 +1,68 @@
# @object-ui/components
+## 16.0.0
+
+### Minor Changes
+
+- 5534535: feat(grid): built-in row Edit/Delete honor per-record CEL predicates (#2614)
+
+ The object's `userActions.edit` / `userActions.delete` now also accept an
+ object form `{ enabled?, visibleWhen?, disabledWhen? }`. The predicates are
+ evaluated per row on the canonical CEL engine (`useRowPredicate`, the same
+ machinery custom row actions use): `visibleWhen` false → the built-in
+ Edit/Delete item is not rendered for that row (fail-closed); `disabledWhen`
+ true → rendered disabled (fail-soft). Wired through ObjectGrid's
+ RowActionMenu and the data-table's row overflow menu (the related-list
+ path), with the app-shell `crudAffordances` mirror kept in lockstep.
+ Omitting the predicates (or using plain booleans) keeps today's behavior
+ bit-for-bit; declared predicates evaluate only when a row's menu opens, so
+ grid rendering cost is unchanged.
+
+### Patch Changes
+
+- 4c7c47f: fix(form): thread live `dependentValues` to cascading option fields (#2284/#1583)
+
+ The form renderer only injected the live form record into data-source widgets
+ (`lookup`/`master_detail`/… — the `DATA_SOURCE_FIELD_TYPES` set). Registered
+ option widgets (`field:select`/`field:radio`/`field:multiselect`) that carry
+ per-option `visibleWhen` + `dependsOn` cascading were **excluded**, so
+ `stripRegisteredFieldProps` dropped `dependentValues` before it reached
+ `SelectField`. With no live record and no `formValues` context fallback, a
+ cascading `select` never saw its controlling field: in a create form the
+ dependent field stayed permanently gated on the "Select the parent first" hint
+ even after the parent was chosen (reproduced on the showcase `showcase_cascade`
+ B3 fixture — country → province never unlocked).
+
+ Option field types now receive `dependentValues` too, so the widget's
+ `dependsOn` gate lifts and its `visibleWhen` set re-filters live as the parent
+ changes — the same channel the lookup fix (#2215/#2216) already used. Regression
+ guard added in `form-dependent-values.test.tsx` (drives the registered
+ `field:select` path, not just the builtin `case 'select'` fallback the prior
+ cascading-select test covered).
+
+- 33b4995: Welcome-page "Create your environment" deep-links straight into the create
+ dialog (#844): `action:button` gains a client-side `autoTrigger` flag (runs
+ the action once on mount — same execute path as a click, so param dialogs /
+ confirms / entitlement gates still apply), and the environments list consumes
+ `?runAction=create_environment` to mark its create action once entitlements
+ resolve (upgrade-locked orgs get the upgrade prompt instead; the param is
+ stripped after consumption so refresh/back don't re-open). Also localizes the
+ EnvironmentListToolbar's state-aware label overrides ({en,zh}) — they were
+ hard-coded English inside a zh console.
+- Updated dependencies [d3e19ed]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [b4ef588]
+- Updated dependencies [ca0f5f0]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+ - @object-ui/react@16.0.0
+ - @object-ui/types@16.0.0
+ - @object-ui/i18n@16.0.0
+ - @object-ui/core@16.0.0
+ - @object-ui/react-runtime@16.0.0
+ - @object-ui/sdui-parser@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/components/package.json b/packages/components/package.json
index ca8ab6aff..3b5c0b6f9 100644
--- a/packages/components/package.json
+++ b/packages/components/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/components",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "Standard UI component library for Object UI, built with Shadcn UI + Tailwind CSS",
diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md
index aa2648068..ce922c5df 100644
--- a/packages/core/CHANGELOG.md
+++ b/packages/core/CHANGELOG.md
@@ -1,5 +1,14 @@
# @object-ui/core
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [b4ef588]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+ - @object-ui/types@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/core/package.json b/packages/core/package.json
index 98eb75e55..12fa4df21 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/core",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"sideEffects": false,
"license": "MIT",
diff --git a/packages/create-plugin/CHANGELOG.md b/packages/create-plugin/CHANGELOG.md
index 8cb405f10..b8c4c5338 100644
--- a/packages/create-plugin/CHANGELOG.md
+++ b/packages/create-plugin/CHANGELOG.md
@@ -1,5 +1,7 @@
# @object-ui/create-plugin
+## 16.0.0
+
## 15.0.0
## 14.1.0
diff --git a/packages/create-plugin/package.json b/packages/create-plugin/package.json
index 0b108c41f..db125b272 100644
--- a/packages/create-plugin/package.json
+++ b/packages/create-plugin/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/create-plugin",
- "version": "15.0.0",
+ "version": "16.0.0",
"description": "CLI tool to scaffold ObjectUI plugins",
"type": "module",
"license": "MIT",
diff --git a/packages/data-objectstack/CHANGELOG.md b/packages/data-objectstack/CHANGELOG.md
index 2aa4ebc14..27f60f875 100644
--- a/packages/data-objectstack/CHANGELOG.md
+++ b/packages/data-objectstack/CHANGELOG.md
@@ -1,5 +1,15 @@
# @object-ui/data-objectstack
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [b4ef588]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+ - @object-ui/types@16.0.0
+ - @object-ui/core@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/data-objectstack/package.json b/packages/data-objectstack/package.json
index 907438b58..89b1c7ba6 100644
--- a/packages/data-objectstack/package.json
+++ b/packages/data-objectstack/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/data-objectstack",
- "version": "15.0.0",
+ "version": "16.0.0",
"description": "ObjectStack Data Adapter for Object UI",
"license": "MIT",
"type": "module",
diff --git a/packages/fields/CHANGELOG.md b/packages/fields/CHANGELOG.md
index 20b8f516c..8257c8898 100644
--- a/packages/fields/CHANGELOG.md
+++ b/packages/fields/CHANGELOG.md
@@ -1,5 +1,25 @@
# @object-ui/fields
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [d3e19ed]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [4c7c47f]
+- Updated dependencies [b4ef588]
+- Updated dependencies [ca0f5f0]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+- Updated dependencies [33b4995]
+ - @object-ui/react@16.0.0
+ - @object-ui/components@16.0.0
+ - @object-ui/types@16.0.0
+ - @object-ui/i18n@16.0.0
+ - @object-ui/core@16.0.0
+ - @object-ui/providers@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/fields/package.json b/packages/fields/package.json
index cda7d4209..6761c6a18 100644
--- a/packages/fields/package.json
+++ b/packages/fields/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/fields",
- "version": "15.0.0",
+ "version": "16.0.0",
"description": "Field renderers and registry for Object UI",
"license": "MIT",
"type": "module",
diff --git a/packages/i18n/CHANGELOG.md b/packages/i18n/CHANGELOG.md
index edeb7eac1..070d71d2c 100644
--- a/packages/i18n/CHANGELOG.md
+++ b/packages/i18n/CHANGELOG.md
@@ -1,5 +1,11 @@
# @object-ui/i18n
+## 16.0.0
+
+### Patch Changes
+
+- ca0f5f0: Login page surfaces the dev-seeded admin credentials. The framework runtime seeds `admin@objectos.ai` on an empty development database, but nothing on the login page said so — new users clicked "Sign up" and landed in an empty non-admin workspace (15.1 third-party eval). When `GET /api/v1/auth/config` reports `devSeedAdmin` (dev-only; the server omits the field in production and once the default password is changed), the page renders a dismissible amber banner with the credentials. Dismissal persists per browser via localStorage.
+
## 15.0.0
## 14.1.0
diff --git a/packages/i18n/package.json b/packages/i18n/package.json
index 3f152fec6..0926cc3a5 100644
--- a/packages/i18n/package.json
+++ b/packages/i18n/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/i18n",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"sideEffects": false,
"license": "MIT",
diff --git a/packages/layout/CHANGELOG.md b/packages/layout/CHANGELOG.md
index 238c40d36..a7b3c3288 100644
--- a/packages/layout/CHANGELOG.md
+++ b/packages/layout/CHANGELOG.md
@@ -1,5 +1,22 @@
# @object-ui/layout
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [d3e19ed]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [4c7c47f]
+- Updated dependencies [b4ef588]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+- Updated dependencies [33b4995]
+ - @object-ui/react@16.0.0
+ - @object-ui/components@16.0.0
+ - @object-ui/types@16.0.0
+ - @object-ui/core@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/layout/package.json b/packages/layout/package.json
index 01eeefab0..854540216 100644
--- a/packages/layout/package.json
+++ b/packages/layout/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/layout",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"sideEffects": false,
"main": "dist/index.umd.cjs",
diff --git a/packages/mobile/CHANGELOG.md b/packages/mobile/CHANGELOG.md
index 54c589069..d0367468c 100644
--- a/packages/mobile/CHANGELOG.md
+++ b/packages/mobile/CHANGELOG.md
@@ -1,5 +1,14 @@
# @object-ui/mobile
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [b4ef588]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+ - @object-ui/types@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/mobile/package.json b/packages/mobile/package.json
index 2b9138a48..2d3131131 100644
--- a/packages/mobile/package.json
+++ b/packages/mobile/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/mobile",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "Mobile optimization for Object UI with responsive components, PWA support, and touch gesture handling.",
diff --git a/packages/permissions/CHANGELOG.md b/packages/permissions/CHANGELOG.md
index 7283c8c83..de7965bc9 100644
--- a/packages/permissions/CHANGELOG.md
+++ b/packages/permissions/CHANGELOG.md
@@ -1,5 +1,14 @@
# @object-ui/permissions
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [b4ef588]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+ - @object-ui/types@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/permissions/package.json b/packages/permissions/package.json
index 73102a795..f6b8069b4 100644
--- a/packages/permissions/package.json
+++ b/packages/permissions/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/permissions",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "RBAC permission system for Object UI with object/field/row-level access control, permission guards, and hooks.",
diff --git a/packages/plugin-ai/CHANGELOG.md b/packages/plugin-ai/CHANGELOG.md
index 933667e14..9f8ea89db 100644
--- a/packages/plugin-ai/CHANGELOG.md
+++ b/packages/plugin-ai/CHANGELOG.md
@@ -1,5 +1,22 @@
# @object-ui/plugin-ai
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [d3e19ed]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [4c7c47f]
+- Updated dependencies [b4ef588]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+- Updated dependencies [33b4995]
+ - @object-ui/react@16.0.0
+ - @object-ui/components@16.0.0
+ - @object-ui/types@16.0.0
+ - @object-ui/core@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/plugin-ai/package.json b/packages/plugin-ai/package.json
index 13f7f3945..b74c892b1 100644
--- a/packages/plugin-ai/package.json
+++ b/packages/plugin-ai/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/plugin-ai",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"main": "dist/index.umd.cjs",
"module": "dist/index.js",
diff --git a/packages/plugin-calendar/CHANGELOG.md b/packages/plugin-calendar/CHANGELOG.md
index 11181f206..8cebef296 100644
--- a/packages/plugin-calendar/CHANGELOG.md
+++ b/packages/plugin-calendar/CHANGELOG.md
@@ -1,5 +1,27 @@
# @object-ui/plugin-calendar
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [d3e19ed]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [4c7c47f]
+- Updated dependencies [b4ef588]
+- Updated dependencies [ca0f5f0]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+- Updated dependencies [33b4995]
+ - @object-ui/react@16.0.0
+ - @object-ui/plugin-detail@16.0.0
+ - @object-ui/components@16.0.0
+ - @object-ui/types@16.0.0
+ - @object-ui/i18n@16.0.0
+ - @object-ui/fields@16.0.0
+ - @object-ui/core@16.0.0
+ - @object-ui/mobile@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/plugin-calendar/package.json b/packages/plugin-calendar/package.json
index be208a5fa..2d1f40a77 100644
--- a/packages/plugin-calendar/package.json
+++ b/packages/plugin-calendar/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/plugin-calendar",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "Calendar view plugins for Object UI - includes both ObjectQL-integrated and standalone calendar components",
diff --git a/packages/plugin-charts/CHANGELOG.md b/packages/plugin-charts/CHANGELOG.md
index 6c112a737..cfe61b825 100644
--- a/packages/plugin-charts/CHANGELOG.md
+++ b/packages/plugin-charts/CHANGELOG.md
@@ -1,5 +1,24 @@
# @object-ui/plugin-charts
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [d3e19ed]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [4c7c47f]
+- Updated dependencies [b4ef588]
+- Updated dependencies [ca0f5f0]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+- Updated dependencies [33b4995]
+ - @object-ui/react@16.0.0
+ - @object-ui/components@16.0.0
+ - @object-ui/types@16.0.0
+ - @object-ui/i18n@16.0.0
+ - @object-ui/core@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/plugin-charts/package.json b/packages/plugin-charts/package.json
index 68aa0fc3d..3b6ed5fba 100644
--- a/packages/plugin-charts/package.json
+++ b/packages/plugin-charts/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/plugin-charts",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "Chart components plugin for Object UI, powered by Recharts",
diff --git a/packages/plugin-chatbot/CHANGELOG.md b/packages/plugin-chatbot/CHANGELOG.md
index 489481f6c..35d23b34d 100644
--- a/packages/plugin-chatbot/CHANGELOG.md
+++ b/packages/plugin-chatbot/CHANGELOG.md
@@ -1,5 +1,29 @@
# @object-ui/plugin-chatbot
+## 16.0.0
+
+### Patch Changes
+
+- c0bd483: Plan-card approval gives immediate in-card feedback (#2627): clicking
+ "Build it" flips the clicked card to a spinning "Building…" badge right away
+ (the approval's chat-level effects land at the bottom of the thread, outside
+ the viewport, so the card looked untouched for ~10s and users double-clicked).
+ The durable Built state still derives from the message stream; an approval
+ that never left the client (rate limit / offline) rolls the badge back so the
+ button returns. New `planBuildingLabel` prop (AiChatPage passes zh).
+- Updated dependencies [d3e19ed]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [4c7c47f]
+- Updated dependencies [b4ef588]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+- Updated dependencies [33b4995]
+ - @object-ui/react@16.0.0
+ - @object-ui/components@16.0.0
+ - @object-ui/types@16.0.0
+ - @object-ui/core@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/plugin-chatbot/package.json b/packages/plugin-chatbot/package.json
index c865c3d98..36df0c764 100644
--- a/packages/plugin-chatbot/package.json
+++ b/packages/plugin-chatbot/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/plugin-chatbot",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "Chatbot interface plugin for Object UI",
diff --git a/packages/plugin-dashboard/CHANGELOG.md b/packages/plugin-dashboard/CHANGELOG.md
index 6bc54b588..0aa70c6ff 100644
--- a/packages/plugin-dashboard/CHANGELOG.md
+++ b/packages/plugin-dashboard/CHANGELOG.md
@@ -1,5 +1,25 @@
# @object-ui/plugin-dashboard
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [d3e19ed]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [4c7c47f]
+- Updated dependencies [b4ef588]
+- Updated dependencies [ca0f5f0]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+- Updated dependencies [33b4995]
+ - @object-ui/react@16.0.0
+ - @object-ui/components@16.0.0
+ - @object-ui/types@16.0.0
+ - @object-ui/i18n@16.0.0
+ - @object-ui/fields@16.0.0
+ - @object-ui/core@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/plugin-dashboard/package.json b/packages/plugin-dashboard/package.json
index f706da2a9..2fe86dee1 100644
--- a/packages/plugin-dashboard/package.json
+++ b/packages/plugin-dashboard/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/plugin-dashboard",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "Dashboard plugin for Object UI",
diff --git a/packages/plugin-designer/CHANGELOG.md b/packages/plugin-designer/CHANGELOG.md
index 6e2e7507b..1c8f7fc95 100644
--- a/packages/plugin-designer/CHANGELOG.md
+++ b/packages/plugin-designer/CHANGELOG.md
@@ -1,5 +1,28 @@
# @object-ui/plugin-designer
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [d3e19ed]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [4c7c47f]
+- Updated dependencies [b4ef588]
+- Updated dependencies [ca0f5f0]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+- Updated dependencies [33b4995]
+ - @object-ui/react@16.0.0
+ - @object-ui/components@16.0.0
+ - @object-ui/types@16.0.0
+ - @object-ui/i18n@16.0.0
+ - @object-ui/plugin-grid@16.0.0
+ - @object-ui/plugin-form@16.0.0
+ - @object-ui/fields@16.0.0
+ - @object-ui/core@16.0.0
+ - @object-ui/data-objectstack@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/plugin-designer/package.json b/packages/plugin-designer/package.json
index 7a042395a..10b98b17b 100644
--- a/packages/plugin-designer/package.json
+++ b/packages/plugin-designer/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/plugin-designer",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "Visual designer plugin for Object UI with page, data model, process, and report designers plus collaborative editing.",
diff --git a/packages/plugin-detail/CHANGELOG.md b/packages/plugin-detail/CHANGELOG.md
index e9b584268..78864a55e 100644
--- a/packages/plugin-detail/CHANGELOG.md
+++ b/packages/plugin-detail/CHANGELOG.md
@@ -1,5 +1,54 @@
# @object-ui/plugin-detail
+## 16.0.0
+
+### Minor Changes
+
+- 5534535: feat(grid): built-in row Edit/Delete honor per-record CEL predicates (#2614)
+
+ The object's `userActions.edit` / `userActions.delete` now also accept an
+ object form `{ enabled?, visibleWhen?, disabledWhen? }`. The predicates are
+ evaluated per row on the canonical CEL engine (`useRowPredicate`, the same
+ machinery custom row actions use): `visibleWhen` false → the built-in
+ Edit/Delete item is not rendered for that row (fail-closed); `disabledWhen`
+ true → rendered disabled (fail-soft). Wired through ObjectGrid's
+ RowActionMenu and the data-table's row overflow menu (the related-list
+ path), with the app-shell `crudAffordances` mirror kept in lockstep.
+ Omitting the predicates (or using plain booleans) keeps today's behavior
+ bit-for-bit; declared predicates evaluate only when a row's menu opens, so
+ grid rendering cost is unchanged.
+
+### Patch Changes
+
+- 59d4fa9: fix(detail): show the "Locked for approval" band on request-tracked backends (objectui#2618)
+
+ The DetailView approval-lock band keyed only off the record's own
+ `approval_status` field, so it never rendered on backends that track the lock
+ via an open approval request and never materialize that field — even though
+ the lock was real (writes rejected with `RECORD_LOCKED`). The record-level
+ `InlineEditContext` now carries the host's `locked`/`lockedReason` signal
+ (the same dual-source `approvalLocked` that already gates `canEdit` in
+ `RecordDetailView`), and the band renders from it while keeping `DetailView`
+ DataSource-agnostic. Also backfills the approval-lock strings into the detail
+ translation defaults so a bare DetailView shows the label, not the raw i18n key.
+
+- Updated dependencies [d3e19ed]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [4c7c47f]
+- Updated dependencies [b4ef588]
+- Updated dependencies [ca0f5f0]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+- Updated dependencies [33b4995]
+ - @object-ui/react@16.0.0
+ - @object-ui/components@16.0.0
+ - @object-ui/types@16.0.0
+ - @object-ui/i18n@16.0.0
+ - @object-ui/fields@16.0.0
+ - @object-ui/core@16.0.0
+ - @object-ui/permissions@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/plugin-detail/package.json b/packages/plugin-detail/package.json
index 012b0b5f8..d4d11be5a 100644
--- a/packages/plugin-detail/package.json
+++ b/packages/plugin-detail/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/plugin-detail",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "DetailView plugin for Object UI - comprehensive detail page with sections, tabs, and related lists",
diff --git a/packages/plugin-editor/CHANGELOG.md b/packages/plugin-editor/CHANGELOG.md
index 5f2710264..789b40f8c 100644
--- a/packages/plugin-editor/CHANGELOG.md
+++ b/packages/plugin-editor/CHANGELOG.md
@@ -1,5 +1,22 @@
# @object-ui/plugin-editor
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [d3e19ed]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [4c7c47f]
+- Updated dependencies [b4ef588]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+- Updated dependencies [33b4995]
+ - @object-ui/react@16.0.0
+ - @object-ui/components@16.0.0
+ - @object-ui/types@16.0.0
+ - @object-ui/core@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/plugin-editor/package.json b/packages/plugin-editor/package.json
index 6c0fc31be..3bf9f80dd 100644
--- a/packages/plugin-editor/package.json
+++ b/packages/plugin-editor/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/plugin-editor",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "Rich text editor plugin for Object UI, powered by Monaco Editor",
diff --git a/packages/plugin-form/CHANGELOG.md b/packages/plugin-form/CHANGELOG.md
index 680ec3afc..bf284f109 100644
--- a/packages/plugin-form/CHANGELOG.md
+++ b/packages/plugin-form/CHANGELOG.md
@@ -1,5 +1,40 @@
# @object-ui/plugin-form
+## 16.0.0
+
+### Patch Changes
+
+- 5534535: feat(grid): built-in row Edit/Delete honor per-record CEL predicates (#2614)
+
+ The object's `userActions.edit` / `userActions.delete` now also accept an
+ object form `{ enabled?, visibleWhen?, disabledWhen? }`. The predicates are
+ evaluated per row on the canonical CEL engine (`useRowPredicate`, the same
+ machinery custom row actions use): `visibleWhen` false → the built-in
+ Edit/Delete item is not rendered for that row (fail-closed); `disabledWhen`
+ true → rendered disabled (fail-soft). Wired through ObjectGrid's
+ RowActionMenu and the data-table's row overflow menu (the related-list
+ path), with the app-shell `crudAffordances` mirror kept in lockstep.
+ Omitting the predicates (or using plain booleans) keeps today's behavior
+ bit-for-bit; declared predicates evaluate only when a row's menu opens, so
+ grid rendering cost is unchanged.
+
+- Updated dependencies [d3e19ed]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [4c7c47f]
+- Updated dependencies [b4ef588]
+- Updated dependencies [ca0f5f0]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+- Updated dependencies [33b4995]
+ - @object-ui/react@16.0.0
+ - @object-ui/components@16.0.0
+ - @object-ui/types@16.0.0
+ - @object-ui/i18n@16.0.0
+ - @object-ui/fields@16.0.0
+ - @object-ui/core@16.0.0
+ - @object-ui/permissions@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/plugin-form/package.json b/packages/plugin-form/package.json
index 95595fb07..09b2fc1f9 100644
--- a/packages/plugin-form/package.json
+++ b/packages/plugin-form/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/plugin-form",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "Form plugin for Object UI",
diff --git a/packages/plugin-gantt/CHANGELOG.md b/packages/plugin-gantt/CHANGELOG.md
index f181ca048..23094248f 100644
--- a/packages/plugin-gantt/CHANGELOG.md
+++ b/packages/plugin-gantt/CHANGELOG.md
@@ -1,5 +1,26 @@
# @object-ui/plugin-gantt
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [d3e19ed]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [4c7c47f]
+- Updated dependencies [b4ef588]
+- Updated dependencies [ca0f5f0]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+- Updated dependencies [33b4995]
+ - @object-ui/react@16.0.0
+ - @object-ui/plugin-detail@16.0.0
+ - @object-ui/components@16.0.0
+ - @object-ui/types@16.0.0
+ - @object-ui/i18n@16.0.0
+ - @object-ui/fields@16.0.0
+ - @object-ui/core@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/plugin-gantt/package.json b/packages/plugin-gantt/package.json
index 2de086598..f8698d849 100644
--- a/packages/plugin-gantt/package.json
+++ b/packages/plugin-gantt/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/plugin-gantt",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "Gantt chart plugin for Object UI",
diff --git a/packages/plugin-grid/CHANGELOG.md b/packages/plugin-grid/CHANGELOG.md
index 67414fd7a..7b93396ce 100644
--- a/packages/plugin-grid/CHANGELOG.md
+++ b/packages/plugin-grid/CHANGELOG.md
@@ -1,5 +1,42 @@
# @object-ui/plugin-grid
+## 16.0.0
+
+### Minor Changes
+
+- 5534535: feat(grid): built-in row Edit/Delete honor per-record CEL predicates (#2614)
+
+ The object's `userActions.edit` / `userActions.delete` now also accept an
+ object form `{ enabled?, visibleWhen?, disabledWhen? }`. The predicates are
+ evaluated per row on the canonical CEL engine (`useRowPredicate`, the same
+ machinery custom row actions use): `visibleWhen` false → the built-in
+ Edit/Delete item is not rendered for that row (fail-closed); `disabledWhen`
+ true → rendered disabled (fail-soft). Wired through ObjectGrid's
+ RowActionMenu and the data-table's row overflow menu (the related-list
+ path), with the app-shell `crudAffordances` mirror kept in lockstep.
+ Omitting the predicates (or using plain booleans) keeps today's behavior
+ bit-for-bit; declared predicates evaluate only when a row's menu opens, so
+ grid rendering cost is unchanged.
+
+### Patch Changes
+
+- Updated dependencies [d3e19ed]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [4c7c47f]
+- Updated dependencies [b4ef588]
+- Updated dependencies [ca0f5f0]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+- Updated dependencies [33b4995]
+ - @object-ui/react@16.0.0
+ - @object-ui/components@16.0.0
+ - @object-ui/types@16.0.0
+ - @object-ui/i18n@16.0.0
+ - @object-ui/fields@16.0.0
+ - @object-ui/core@16.0.0
+ - @object-ui/mobile@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/plugin-grid/package.json b/packages/plugin-grid/package.json
index 9fa7170fc..44690de82 100644
--- a/packages/plugin-grid/package.json
+++ b/packages/plugin-grid/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/plugin-grid",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "Grid plugin for Object UI",
diff --git a/packages/plugin-kanban/CHANGELOG.md b/packages/plugin-kanban/CHANGELOG.md
index ce04d7dcd..891187cd3 100644
--- a/packages/plugin-kanban/CHANGELOG.md
+++ b/packages/plugin-kanban/CHANGELOG.md
@@ -1,5 +1,26 @@
# @object-ui/plugin-kanban
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [d3e19ed]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [4c7c47f]
+- Updated dependencies [b4ef588]
+- Updated dependencies [ca0f5f0]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+- Updated dependencies [33b4995]
+ - @object-ui/react@16.0.0
+ - @object-ui/plugin-detail@16.0.0
+ - @object-ui/components@16.0.0
+ - @object-ui/types@16.0.0
+ - @object-ui/i18n@16.0.0
+ - @object-ui/fields@16.0.0
+ - @object-ui/core@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/plugin-kanban/package.json b/packages/plugin-kanban/package.json
index d7b0341f9..e16f9f11e 100644
--- a/packages/plugin-kanban/package.json
+++ b/packages/plugin-kanban/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/plugin-kanban",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "Kanban board plugin for Object UI, powered by dnd-kit",
diff --git a/packages/plugin-list/CHANGELOG.md b/packages/plugin-list/CHANGELOG.md
index 6d4e72de2..73e9b451e 100644
--- a/packages/plugin-list/CHANGELOG.md
+++ b/packages/plugin-list/CHANGELOG.md
@@ -1,5 +1,27 @@
# @object-ui/plugin-list
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [d3e19ed]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [4c7c47f]
+- Updated dependencies [b4ef588]
+- Updated dependencies [ca0f5f0]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+- Updated dependencies [33b4995]
+ - @object-ui/react@16.0.0
+ - @object-ui/components@16.0.0
+ - @object-ui/types@16.0.0
+ - @object-ui/i18n@16.0.0
+ - @object-ui/fields@16.0.0
+ - @object-ui/core@16.0.0
+ - @object-ui/mobile@16.0.0
+ - @object-ui/permissions@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/plugin-list/package.json b/packages/plugin-list/package.json
index 04a39a65f..38a13dbc4 100644
--- a/packages/plugin-list/package.json
+++ b/packages/plugin-list/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/plugin-list",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "ListView plugin for Object UI - unified view component with view type switching",
diff --git a/packages/plugin-map/CHANGELOG.md b/packages/plugin-map/CHANGELOG.md
index 46dcc69df..16ef348d4 100644
--- a/packages/plugin-map/CHANGELOG.md
+++ b/packages/plugin-map/CHANGELOG.md
@@ -1,5 +1,22 @@
# @object-ui/plugin-map
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [d3e19ed]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [4c7c47f]
+- Updated dependencies [b4ef588]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+- Updated dependencies [33b4995]
+ - @object-ui/react@16.0.0
+ - @object-ui/components@16.0.0
+ - @object-ui/types@16.0.0
+ - @object-ui/core@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/plugin-map/package.json b/packages/plugin-map/package.json
index d31754610..c110f7a74 100644
--- a/packages/plugin-map/package.json
+++ b/packages/plugin-map/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/plugin-map",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "Map visualization plugin for Object UI",
diff --git a/packages/plugin-markdown/CHANGELOG.md b/packages/plugin-markdown/CHANGELOG.md
index 1b0f49dde..8a9407236 100644
--- a/packages/plugin-markdown/CHANGELOG.md
+++ b/packages/plugin-markdown/CHANGELOG.md
@@ -1,5 +1,22 @@
# @object-ui/plugin-markdown
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [d3e19ed]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [4c7c47f]
+- Updated dependencies [b4ef588]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+- Updated dependencies [33b4995]
+ - @object-ui/react@16.0.0
+ - @object-ui/components@16.0.0
+ - @object-ui/types@16.0.0
+ - @object-ui/core@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/plugin-markdown/package.json b/packages/plugin-markdown/package.json
index 546817e9a..e7a3328c7 100644
--- a/packages/plugin-markdown/package.json
+++ b/packages/plugin-markdown/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/plugin-markdown",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "Markdown rendering plugin for Object UI, powered by react-markdown",
diff --git a/packages/plugin-report/CHANGELOG.md b/packages/plugin-report/CHANGELOG.md
index 8b92f47e1..65e862125 100644
--- a/packages/plugin-report/CHANGELOG.md
+++ b/packages/plugin-report/CHANGELOG.md
@@ -1,5 +1,26 @@
# @object-ui/plugin-report
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [d3e19ed]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [4c7c47f]
+- Updated dependencies [b4ef588]
+- Updated dependencies [ca0f5f0]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+- Updated dependencies [33b4995]
+ - @object-ui/react@16.0.0
+ - @object-ui/components@16.0.0
+ - @object-ui/types@16.0.0
+ - @object-ui/i18n@16.0.0
+ - @object-ui/plugin-grid@16.0.0
+ - @object-ui/fields@16.0.0
+ - @object-ui/core@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/plugin-report/package.json b/packages/plugin-report/package.json
index 60982ced3..f88940e7d 100644
--- a/packages/plugin-report/package.json
+++ b/packages/plugin-report/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/plugin-report",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"main": "dist/index.umd.cjs",
"module": "dist/index.js",
diff --git a/packages/plugin-timeline/CHANGELOG.md b/packages/plugin-timeline/CHANGELOG.md
index 0b094f862..4f1a06da8 100644
--- a/packages/plugin-timeline/CHANGELOG.md
+++ b/packages/plugin-timeline/CHANGELOG.md
@@ -1,5 +1,23 @@
# @object-ui/plugin-timeline
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [d3e19ed]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [4c7c47f]
+- Updated dependencies [b4ef588]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+- Updated dependencies [33b4995]
+ - @object-ui/react@16.0.0
+ - @object-ui/components@16.0.0
+ - @object-ui/types@16.0.0
+ - @object-ui/core@16.0.0
+ - @object-ui/mobile@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/plugin-timeline/package.json b/packages/plugin-timeline/package.json
index 41ab7850a..54ccb06b4 100644
--- a/packages/plugin-timeline/package.json
+++ b/packages/plugin-timeline/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/plugin-timeline",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "Timeline component plugin for Object UI",
diff --git a/packages/plugin-tree/CHANGELOG.md b/packages/plugin-tree/CHANGELOG.md
index a19783845..4bbee3026 100644
--- a/packages/plugin-tree/CHANGELOG.md
+++ b/packages/plugin-tree/CHANGELOG.md
@@ -1,5 +1,22 @@
# @object-ui/plugin-tree
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [d3e19ed]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [4c7c47f]
+- Updated dependencies [b4ef588]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+- Updated dependencies [33b4995]
+ - @object-ui/react@16.0.0
+ - @object-ui/components@16.0.0
+ - @object-ui/types@16.0.0
+ - @object-ui/core@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/plugin-tree/package.json b/packages/plugin-tree/package.json
index 748bd14ba..8f972a562 100644
--- a/packages/plugin-tree/package.json
+++ b/packages/plugin-tree/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/plugin-tree",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "Tree / tree-grid visualization plugin for Object UI",
diff --git a/packages/plugin-view/CHANGELOG.md b/packages/plugin-view/CHANGELOG.md
index e16a482fc..ed455350b 100644
--- a/packages/plugin-view/CHANGELOG.md
+++ b/packages/plugin-view/CHANGELOG.md
@@ -1,5 +1,26 @@
# @object-ui/plugin-view
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [d3e19ed]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [4c7c47f]
+- Updated dependencies [b4ef588]
+- Updated dependencies [ca0f5f0]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+- Updated dependencies [33b4995]
+ - @object-ui/react@16.0.0
+ - @object-ui/components@16.0.0
+ - @object-ui/types@16.0.0
+ - @object-ui/i18n@16.0.0
+ - @object-ui/plugin-grid@16.0.0
+ - @object-ui/plugin-form@16.0.0
+ - @object-ui/core@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/plugin-view/package.json b/packages/plugin-view/package.json
index 53dbe718b..6bee0eb6b 100644
--- a/packages/plugin-view/package.json
+++ b/packages/plugin-view/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/plugin-view",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "Object View plugin for Object UI",
diff --git a/packages/providers/CHANGELOG.md b/packages/providers/CHANGELOG.md
index e30488ea3..b1709e127 100644
--- a/packages/providers/CHANGELOG.md
+++ b/packages/providers/CHANGELOG.md
@@ -1,5 +1,14 @@
# @object-ui/providers — Changelog
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [b4ef588]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+ - @object-ui/types@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/providers/package.json b/packages/providers/package.json
index 97bce9714..32bf22756 100644
--- a/packages/providers/package.json
+++ b/packages/providers/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/providers",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "Reusable context providers for ObjectUI applications",
diff --git a/packages/react-runtime/CHANGELOG.md b/packages/react-runtime/CHANGELOG.md
index d68783250..9d59847c9 100644
--- a/packages/react-runtime/CHANGELOG.md
+++ b/packages/react-runtime/CHANGELOG.md
@@ -1,5 +1,7 @@
# @object-ui/react-runtime
+## 16.0.0
+
## 15.0.0
## 14.1.0
diff --git a/packages/react-runtime/package.json b/packages/react-runtime/package.json
index 9c2419fae..45c4c1e1d 100644
--- a/packages/react-runtime/package.json
+++ b/packages/react-runtime/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/react-runtime",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"sideEffects": false,
"license": "MIT",
diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md
index 46ef00bfe..a276c7fea 100644
--- a/packages/react/CHANGELOG.md
+++ b/packages/react/CHANGELOG.md
@@ -1,5 +1,46 @@
# @object-ui/react
+## 16.0.0
+
+### Minor Changes
+
+- d3e19ed: Adapt to framework 15.1: (1) ADR-0067 D2 all-or-nothing publishes — `formatPublishFailures` renders a rolled-back batch as ONE banner anchored on the causal item (`batch_aborted` entries are summarized, not listed as parallel errors); PackagesPage says "rolled back because X" instead of "{n} failed"; the AI chat publish toast surfaces the real reason instead of a bare count. Pre-15.1 partial-publish responses keep their per-item rendering. (2) ADR-0076 D12 honest discovery — `DiscoveryServiceStatus` gains `handlerReady` + `degraded`/`stub` statuses, new backward-tolerant `isServiceUsable()` helper (absent fields keep the pre-15.1 default; `stub`/`handlerReady:false` gate off; `degraded` stays usable), consumed by `isAuthEnabled`/`isAiEnabled` and `ConditionalAuthWrapper`.
+
+### Patch Changes
+
+- 59d4fa9: fix(detail): show the "Locked for approval" band on request-tracked backends (objectui#2618)
+
+ The DetailView approval-lock band keyed only off the record's own
+ `approval_status` field, so it never rendered on backends that track the lock
+ via an open approval request and never materialize that field — even though
+ the lock was real (writes rejected with `RECORD_LOCKED`). The record-level
+ `InlineEditContext` now carries the host's `locked`/`lockedReason` signal
+ (the same dual-source `approvalLocked` that already gates `canEdit` in
+ `RecordDetailView`), and the band renders from it while keeping `DetailView`
+ DataSource-agnostic. Also backfills the approval-lock strings into the detail
+ translation defaults so a bare DetailView shows the label, not the raw i18n key.
+
+- 195a651: refactor(spec-bridge): retire the hand-written `ListViewSpec`/`ListColumn` mirrors in the list-view bridge (#2231 follow-up)
+
+ The SpecBridge's list-view bridge kept a third hand-written copy of the ListView shape
+ (after the zod schema and the TS interface unified in the previous #2231 PR). It now
+ derives its input type from `@objectstack/spec/ui` (`Partial`, spec `ListColumn`),
+ so the bridge can no longer drift from the protocol.
+
+ Behavior fix surfaced by the real types: spec `columns` is `string[] | ListColumn[]`, but
+ the old local interface only admitted `ListColumn[]` — a bare field-name column would have
+ produced a broken `{ accessorKey: undefined }` mapping. String columns now map to a default
+ column (`{ accessorKey: field, header: field }`).
+
+- Updated dependencies [b4ef588]
+- Updated dependencies [ca0f5f0]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+ - @object-ui/types@16.0.0
+ - @object-ui/i18n@16.0.0
+ - @object-ui/core@16.0.0
+ - @object-ui/data-objectstack@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/react/package.json b/packages/react/package.json
index 0f2214722..a7f63bac0 100644
--- a/packages/react/package.json
+++ b/packages/react/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/react",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"license": "MIT",
"description": "React bindings and SchemaRenderer component for Object UI",
diff --git a/packages/runner/CHANGELOG.md b/packages/runner/CHANGELOG.md
index ab3a13a3f..54dc5786f 100644
--- a/packages/runner/CHANGELOG.md
+++ b/packages/runner/CHANGELOG.md
@@ -1,5 +1,24 @@
# @object-ui/runner
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [d3e19ed]
+- Updated dependencies [59d4fa9]
+- Updated dependencies [4c7c47f]
+- Updated dependencies [b4ef588]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+- Updated dependencies [195a651]
+- Updated dependencies [33b4995]
+ - @object-ui/react@16.0.0
+ - @object-ui/components@16.0.0
+ - @object-ui/types@16.0.0
+ - @object-ui/plugin-charts@16.0.0
+ - @object-ui/plugin-kanban@16.0.0
+ - @object-ui/core@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/runner/package.json b/packages/runner/package.json
index 5fb4a6129..43b863937 100644
--- a/packages/runner/package.json
+++ b/packages/runner/package.json
@@ -1,7 +1,7 @@
{
"name": "@object-ui/runner",
"private": false,
- "version": "15.0.0",
+ "version": "16.0.0",
"description": "Universal Object UI Application Runner",
"type": "module",
"homepage": "https://www.objectui.org/docs/utilities/runner",
diff --git a/packages/sdui-parser/CHANGELOG.md b/packages/sdui-parser/CHANGELOG.md
index e4175035e..bd3748717 100644
--- a/packages/sdui-parser/CHANGELOG.md
+++ b/packages/sdui-parser/CHANGELOG.md
@@ -1,5 +1,7 @@
# @object-ui/sdui-parser
+## 16.0.0
+
## 15.0.0
## 14.1.0
diff --git a/packages/sdui-parser/package.json b/packages/sdui-parser/package.json
index 78180c319..34a385d96 100644
--- a/packages/sdui-parser/package.json
+++ b/packages/sdui-parser/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/sdui-parser",
- "version": "15.0.0",
+ "version": "16.0.0",
"type": "module",
"sideEffects": false,
"license": "MIT",
diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md
index 584e8e9aa..f6406540d 100644
--- a/packages/types/CHANGELOG.md
+++ b/packages/types/CHANGELOG.md
@@ -1,5 +1,63 @@
# @object-ui/types
+## 16.0.0
+
+### Major Changes
+
+- 9b8f978: Adopt `@objectstack/spec` 15 across the workspace and drop the value-erased `…Schema` re-exports from `@object-ui/types` (#2561).
+
+ **Removed exports.** `packages/types` re-exported the `@objectstack/spec/ui` surface inside `export type { … }` blocks, and those blocks included the zod validators (`DndConfigSchema`, `SpecFormViewSchema`, `ThemeModeSchema`, … 84 names in total). Under `export type` a zod value is erased, so importing any of them as a value from `@object-ui/types` silently yielded `undefined` at runtime. Per the #2561 decision (option a) the schema names are removed from the public surface instead of being converted to value re-exports — consumers that need the runtime validators import them from `@objectstack/spec/ui` directly. The inferred types (`DndConfig`, `SpecFormView`, …) are unchanged, and the genuine value re-exports (`defineStack`, `ObjectStackSchema`, `SpecReportSchema`, …) keep working. `BreakpointColumnMapSchema` / `BreakpointOrderMapSchema` are dropped without a type replacement (the spec exports no companion inferred type). A guardrail test (`spec-ui-schema-reexports.test.ts`) pins the contract.
+
+ **Spec 15.** Every workspace package now depends on `@objectstack/spec` ^15.1.1. The `/ui` export-name set is identical to 14.6; the spec-level breaking change is ADR-0089 D3a — `FormFieldSchema` / `FormSectionSchema` / `PageComponentSchema` are `.strict()` and reject undeclared keys, which the workspace test suite passes under. The floor is 15.1.1 (not 15.0.0) because D3a's `.strict().transform(…)` pipes crashed `z.toJSONSchema` over spec's lazySchema proxies (`Cannot set properties of undefined (setting 'ref')`), breaking Studio's spec-derived Page/View inspector schemas; fixed upstream in framework#3021, which shipped in spec 15.1.1. New `view-schema.test.ts` pins the View-inspector derivation (previously untested — it degraded silently).
+
+### Minor Changes
+
+- b4ef588: feat(types): derive `ListViewSchema` from `@objectstack/spec/ui` instead of a hand-written copy (#2231)
+
+ `@object-ui/types` shipped a hand-written mirror of the spec's UI ListView zod
+ (`packages/types/src/zod/objectql.zod.ts`) plus a parallel hand-written TS `interface`
+ (`objectql.ts`). Both had drifted from the authoritative `@objectstack/spec/ui`
+ `ListViewSchema`, with nothing enforcing they stay in sync.
+
+ - The zod `ListViewSchema` now **derives** from the spec's `ListViewSchema`: spec-owned
+ fields (`filter`, `sort`, `selection`, `navigation`, `pagination`, `grouping`,
+ `rowColor`, `userActions`, `appearance`, `tabs`, `addRecord`, `rowHeight`, `sharing`,
+ `chart`/`tree` configs, `responsive`, `performance`, …) flow in **by reference** instead
+ of being re-typed. The component envelope (`type: 'list-view'` discriminator +
+ `objectName`) and the legacy objectui vocabulary (`viewType`, `fields`, `filters`, the
+ `show*` toolbar flags, `densityMode`, `color`, …) plus the configs whose objectui shape
+ is intentionally broader than spec's (`userFilters`, `sharing`, `aria`,
+ `conditionalFormatting`, `exportOptions`, `kanban`/`calendar`/`gantt`/`gallery`/
+ `timeline`) remain as sanctioned local `.extend()`s. Existing payloads keep validating;
+ spec-canonical payloads (`columns`/`filter`/`userActions`) now validate too.
+ - The hand-written TS `interface ListViewSchema` is replaced by
+ `z.infer & ListViewRuntimeProps`, so the type can no longer drift
+ from the schema. Non-serializable runtime-only props (`onNavigate`, `onDensityChange`,
+ `refreshTrigger`) live in `ListViewRuntimeProps`.
+ - Added a drift-guard test (`list-view-spec-parity.test.ts`) that fails if the spec grows a
+ field objectui hasn't triaged, renames an aliased anchor (`type`/`columns`/`filter`), or
+ an objectui-only field is added outside the sanctioned-local set.
+ - Bumped the `@objectstack/spec` dependency `^14.6.0` → `^15.1.0` across the workspace
+ (15.1.0 carries the framework#3021 `lazySchema`/`z.toJSONSchema` identity fix that the
+ spec-derived Page/View inspectors depend on).
+
+ Migrating the legacy vocabulary to the spec-canonical keys and adopting spec's narrower
+ sub-shapes are deferred follow-ups (see #2231). No runtime behavior change.
+
+- 5534535: feat(grid): built-in row Edit/Delete honor per-record CEL predicates (#2614)
+
+ The object's `userActions.edit` / `userActions.delete` now also accept an
+ object form `{ enabled?, visibleWhen?, disabledWhen? }`. The predicates are
+ evaluated per row on the canonical CEL engine (`useRowPredicate`, the same
+ machinery custom row actions use): `visibleWhen` false → the built-in
+ Edit/Delete item is not rendered for that row (fail-closed); `disabledWhen`
+ true → rendered disabled (fail-soft). Wired through ObjectGrid's
+ RowActionMenu and the data-table's row overflow menu (the related-list
+ path), with the app-shell `crudAffordances` mirror kept in lockstep.
+ Omitting the predicates (or using plain booleans) keeps today's behavior
+ bit-for-bit; declared predicates evaluate only when a row's menu opens, so
+ grid rendering cost is unchanged.
+
## 15.0.0
## 14.1.0
diff --git a/packages/types/package.json b/packages/types/package.json
index 183af67f5..3d956b22b 100644
--- a/packages/types/package.json
+++ b/packages/types/package.json
@@ -1,6 +1,6 @@
{
"name": "@object-ui/types",
- "version": "15.0.0",
+ "version": "16.0.0",
"description": "Pure TypeScript type definitions for Object UI - The Protocol Layer",
"type": "module",
"sideEffects": false,
diff --git a/packages/vscode-extension/CHANGELOG.md b/packages/vscode-extension/CHANGELOG.md
index fc5a6e975..97608f58f 100644
--- a/packages/vscode-extension/CHANGELOG.md
+++ b/packages/vscode-extension/CHANGELOG.md
@@ -1,5 +1,15 @@
# Changelog
+## 16.0.0
+
+### Patch Changes
+
+- Updated dependencies [b4ef588]
+- Updated dependencies [5534535]
+- Updated dependencies [9b8f978]
+ - @object-ui/types@16.0.0
+ - @object-ui/core@16.0.0
+
## 15.0.0
### Patch Changes
diff --git a/packages/vscode-extension/package.json b/packages/vscode-extension/package.json
index 456a21191..792737ac1 100644
--- a/packages/vscode-extension/package.json
+++ b/packages/vscode-extension/package.json
@@ -2,7 +2,7 @@
"name": "object-ui",
"displayName": "Object UI",
"description": "VSCode extension for Object UI - Schema-driven UI development with IntelliSense, validation, and live preview",
- "version": "15.0.0",
+ "version": "16.0.0",
"publisher": "objectui",
"private": true,
"icon": "icon.svg",