From 16e337b66e6d00b238fb8d1d2b8713e7ef986814 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 5 Aug 2026 12:45:15 +0000 Subject: [PATCH] chore: release packages --- .../action-engine-cel-envelope-routing.md | 5 - .changeset/address-geo-unique-ids.md | 5 - ...-shell-sidebars-derived-area-visibility.md | 30 - .../area-visibility-derived-from-items.md | 41 -- .changeset/aria-required-five-more-sites.md | 15 - .../aria-required-reaches-the-control.md | 54 -- .../builtin-select-empty-state-translated.md | 39 -- .../combobox-trigger-never-submits-forms.md | 12 - .changeset/console-chrome-i18n-5407.md | 29 - .changeset/core-server-dispatcher-factory.md | 39 -- ...l-authored-type-narrow-only-editability.md | 17 - ...lldown-config-declared-equals-delivered.md | 12 - ...entitlement-error-context-reads-details.md | 46 -- .changeset/field-widget-dom-prop-whitelist.md | 90 --- .../field-widget-error-slot-follows-spec.md | 86 --- .../field-widget-single-metadata-carrier.md | 74 --- .../flow-node-geometry-is-spec-position.md | 38 -- .../flow-wait-seed-drops-retired-ontimeout.md | 42 -- .changeset/gallery-cover-file-value-shape.md | 36 -- .changeset/gantt-quickfilter-labels-i18n.md | 8 - .changeset/highlights-entry-readonly.md | 6 - .../label-control-association-two-sites.md | 13 - .../list-toolbar-filter-fold-to-spec-rules.md | 10 - .changeset/live-e2e-lane.md | 39 -- .changeset/locale-choice-survives-reload.md | 9 - ...ile-fullscreen-rides-the-field-metadata.md | 46 -- .../modal-dead-fallthrough-record-page.md | 5 - .../object-chart-drilldown-declared-input.md | 11 - ...option-widgets-empty-hint-single-source.md | 45 -- .../page-block-inspector-visible-when.md | 56 -- .../page-header-inputs-declare-subtitle.md | 39 -- .../permission-facet-link-field-carrier.md | 11 - .changeset/popup-copy-english-i18n.md | 19 - .../previews-read-only-spec-declared-keys.md | 77 --- .changeset/record-chatter-loading-signal.md | 49 -- .changeset/record-feed-keyed-by-record.md | 55 -- .changeset/record-picker-select-label.md | 20 - .changeset/retire-action-param-validation.md | 48 -- .../richtext-honors-mobile-fullscreen.md | 49 -- .changeset/select-aria-reaches-the-trigger.md | 29 - ...settings-client-reads-response-envelope.md | 40 -- .changeset/spec-17-rc2-pin-bump.md | 90 --- .changeset/tags-placeholder-i18n.md | 13 - ...extarea-mobile-fullscreen-single-source.md | 47 -- .../toolpreview-drop-retired-flag-pills.md | 39 -- .../widget-aria-invalid-delivery-batch.md | 33 - apps/console/CHANGELOG.md | 126 ++++ apps/console/package.json | 2 +- packages/app-shell/CHANGELOG.md | 601 ++++++++++++++++++ packages/app-shell/package.json | 2 +- packages/auth/CHANGELOG.md | 11 + packages/auth/package.json | 2 +- packages/cli/CHANGELOG.md | 23 + packages/cli/package.json | 2 +- packages/collaboration/CHANGELOG.md | 11 + packages/collaboration/package.json | 2 +- packages/components/CHANGELOG.md | 383 +++++++++++ packages/components/package.json | 2 +- packages/core/CHANGELOG.md | 175 +++++ packages/core/package.json | 2 +- packages/create-plugin/CHANGELOG.md | 2 + packages/create-plugin/package.json | 2 +- packages/data-objectstack/CHANGELOG.md | 98 +++ packages/data-objectstack/package.json | 2 +- packages/fields/CHANGELOG.md | 505 +++++++++++++++ packages/fields/package.json | 2 +- packages/i18n/CHANGELOG.md | 109 ++++ packages/i18n/package.json | 2 +- packages/layout/CHANGELOG.md | 183 ++++++ packages/layout/package.json | 2 +- packages/mobile/CHANGELOG.md | 11 + packages/mobile/package.json | 2 +- packages/permissions/CHANGELOG.md | 11 + packages/permissions/package.json | 2 +- packages/plugin-ai/CHANGELOG.md | 26 + packages/plugin-ai/package.json | 2 +- packages/plugin-calendar/CHANGELOG.md | 44 ++ packages/plugin-calendar/package.json | 2 +- packages/plugin-charts/CHANGELOG.md | 50 ++ packages/plugin-charts/package.json | 2 +- packages/plugin-chatbot/CHANGELOG.md | 32 + packages/plugin-chatbot/package.json | 2 +- packages/plugin-dashboard/CHANGELOG.md | 39 ++ packages/plugin-dashboard/package.json | 2 +- packages/plugin-designer/CHANGELOG.md | 42 ++ packages/plugin-designer/package.json | 2 +- packages/plugin-detail/CHANGELOG.md | 122 ++++ packages/plugin-detail/package.json | 2 +- packages/plugin-editor/CHANGELOG.md | 26 + packages/plugin-editor/package.json | 2 +- packages/plugin-form/CHANGELOG.md | 129 ++++ packages/plugin-form/package.json | 2 +- packages/plugin-gantt/CHANGELOG.md | 47 ++ packages/plugin-gantt/package.json | 2 +- packages/plugin-grid/CHANGELOG.md | 41 ++ packages/plugin-grid/package.json | 2 +- packages/plugin-kanban/CHANGELOG.md | 43 ++ packages/plugin-kanban/package.json | 2 +- packages/plugin-list/CHANGELOG.md | 36 ++ packages/plugin-list/package.json | 2 +- packages/plugin-map/CHANGELOG.md | 26 + packages/plugin-map/package.json | 2 +- packages/plugin-markdown/CHANGELOG.md | 26 + packages/plugin-markdown/package.json | 2 +- packages/plugin-report/CHANGELOG.md | 40 ++ packages/plugin-report/package.json | 2 +- packages/plugin-timeline/CHANGELOG.md | 33 + packages/plugin-timeline/package.json | 2 +- packages/plugin-tree/CHANGELOG.md | 26 + packages/plugin-tree/package.json | 2 +- packages/plugin-view/CHANGELOG.md | 35 + packages/plugin-view/package.json | 2 +- packages/providers/CHANGELOG.md | 11 + packages/providers/package.json | 2 +- packages/react-runtime/CHANGELOG.md | 2 + packages/react-runtime/package.json | 2 +- packages/react/CHANGELOG.md | 23 + packages/react/package.json | 2 +- packages/runner/CHANGELOG.md | 29 + packages/runner/package.json | 2 +- packages/sdui-parser/CHANGELOG.md | 2 + packages/sdui-parser/package.json | 2 +- packages/types/CHANGELOG.md | 184 ++++++ packages/types/package.json | 2 +- packages/vscode-extension/CHANGELOG.md | 14 + packages/vscode-extension/package.json | 2 +- 126 files changed, 3417 insertions(+), 1656 deletions(-) delete mode 100644 .changeset/action-engine-cel-envelope-routing.md delete mode 100644 .changeset/address-geo-unique-ids.md delete mode 100644 .changeset/app-shell-sidebars-derived-area-visibility.md delete mode 100644 .changeset/area-visibility-derived-from-items.md delete mode 100644 .changeset/aria-required-five-more-sites.md delete mode 100644 .changeset/aria-required-reaches-the-control.md delete mode 100644 .changeset/builtin-select-empty-state-translated.md delete mode 100644 .changeset/combobox-trigger-never-submits-forms.md delete mode 100644 .changeset/console-chrome-i18n-5407.md delete mode 100644 .changeset/core-server-dispatcher-factory.md delete mode 100644 .changeset/detail-authored-type-narrow-only-editability.md delete mode 100644 .changeset/drilldown-config-declared-equals-delivered.md delete mode 100644 .changeset/entitlement-error-context-reads-details.md delete mode 100644 .changeset/field-widget-dom-prop-whitelist.md delete mode 100644 .changeset/field-widget-error-slot-follows-spec.md delete mode 100644 .changeset/field-widget-single-metadata-carrier.md delete mode 100644 .changeset/flow-node-geometry-is-spec-position.md delete mode 100644 .changeset/flow-wait-seed-drops-retired-ontimeout.md delete mode 100644 .changeset/gallery-cover-file-value-shape.md delete mode 100644 .changeset/gantt-quickfilter-labels-i18n.md delete mode 100644 .changeset/highlights-entry-readonly.md delete mode 100644 .changeset/label-control-association-two-sites.md delete mode 100644 .changeset/list-toolbar-filter-fold-to-spec-rules.md delete mode 100644 .changeset/live-e2e-lane.md delete mode 100644 .changeset/locale-choice-survives-reload.md delete mode 100644 .changeset/mobile-fullscreen-rides-the-field-metadata.md delete mode 100644 .changeset/modal-dead-fallthrough-record-page.md delete mode 100644 .changeset/object-chart-drilldown-declared-input.md delete mode 100644 .changeset/option-widgets-empty-hint-single-source.md delete mode 100644 .changeset/page-block-inspector-visible-when.md delete mode 100644 .changeset/page-header-inputs-declare-subtitle.md delete mode 100644 .changeset/permission-facet-link-field-carrier.md delete mode 100644 .changeset/popup-copy-english-i18n.md delete mode 100644 .changeset/previews-read-only-spec-declared-keys.md delete mode 100644 .changeset/record-chatter-loading-signal.md delete mode 100644 .changeset/record-feed-keyed-by-record.md delete mode 100644 .changeset/record-picker-select-label.md delete mode 100644 .changeset/retire-action-param-validation.md delete mode 100644 .changeset/richtext-honors-mobile-fullscreen.md delete mode 100644 .changeset/select-aria-reaches-the-trigger.md delete mode 100644 .changeset/settings-client-reads-response-envelope.md delete mode 100644 .changeset/spec-17-rc2-pin-bump.md delete mode 100644 .changeset/tags-placeholder-i18n.md delete mode 100644 .changeset/textarea-mobile-fullscreen-single-source.md delete mode 100644 .changeset/toolpreview-drop-retired-flag-pills.md delete mode 100644 .changeset/widget-aria-invalid-delivery-batch.md diff --git a/.changeset/action-engine-cel-envelope-routing.md b/.changeset/action-engine-cel-envelope-routing.md deleted file mode 100644 index 40cb058e2b..0000000000 --- a/.changeset/action-engine-cel-envelope-routing.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@object-ui/core': patch ---- - -`ActionEngine.getActionsForLocation` now evaluates a `{ dialect: 'cel', source }` action `visible` predicate on the canonical `@objectstack/formula` engine instead of the legacy JS evaluator. The method used to unwrap the envelope into a `${source}` string before calling `evaluateCondition`, which only routes to the CEL engine while its argument is still an envelope — so the engine silently demoted every CEL predicate to the legacy path while every action renderer (`action-button`, `action-menu`, `action-bar`, … via `toPredicateInput`) ran the same predicate on CEL (#2661). Because `ExpressionInputSchema` normalizes even a bare authored string into a CEL envelope, that was the common case, and the two engines disagree: `null < null` faults in CEL (fail-closed hide) but is `false` in JS, and CEL-only builtins such as `today()` do not exist on the JS path at all — so one `visible:` predicate could hide a button in the renderer while the engine kept it (or the reverse). Normalization now goes through a shared `toPredicateInput` helper exported from `@object-ui/core`, pinned to the renderer-side twin by a parity suite. Bare strings, non-`cel` dialects, empty `source`, and boolean predicates all behave exactly as before (#3314). diff --git a/.changeset/address-geo-unique-ids.md b/.changeset/address-geo-unique-ids.md deleted file mode 100644 index e0e4d3b595..0000000000 --- a/.changeset/address-geo-unique-ids.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@object-ui/fields': patch ---- - -AddressField / GeolocationField sub-inputs now derive their DOM ids from a `useId()` prefix + sub-field name (the RadioField / CheckboxesField `groupId` paradigm) instead of hardcoded literals ("street", "city", "state", "zipCode", "country", "latitude", "longitude"). Two address or geolocation fields in one form no longer produce duplicate DOM ids, and each sub-label's `htmlFor` resolves to and focuses its own field's input instead of the first match in the document (#3343). diff --git a/.changeset/app-shell-sidebars-derived-area-visibility.md b/.changeset/app-shell-sidebars-derived-area-visibility.md deleted file mode 100644 index 97d8736adb..0000000000 --- a/.changeset/app-shell-sidebars-derived-area-visibility.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -"@object-ui/app-shell": patch ---- - -`AppSidebar` and `UnifiedSidebar` area switchers now adopt the derived area -visibility introduced for `AppSchemaRenderer` in objectui#3311, closing the -same visible-but-empty gap in the console shells (objectui#3319). - -Both sidebars inlined their own area switcher without any area-level -filtering, so an area whose navigation items were **all** gated away -(`visible` expression, `requiredPermissions`, `requiresObject` / -`requiresService` capability gates) still appeared in the switcher and -rendered an empty navigation — and a fully gated *first* area was even -auto-activated, landing the user on an empty sidebar. - -## What changed - -- **Shared predicate, not a second implementation.** Both switchers now call - `hasVisibleNavigationItems` from `@object-ui/layout` — the exact guards - `NavigationRenderer` applies per item — so the switcher can never disagree - with the rendered navigation. In `UnifiedSidebar`, `action` items count as - content (it wires `onAction`, framework#4509); in `AppSidebar` they do not - (it wires none). -- **The active area is elected among visible areas only**: first visible by - default, re-elected when the active area is gated away, and a gating change - that merely *reveals* an area never steals the user's current selection. -- `areas: any[]` tightened to `NavigationArea[]` in both components. - -No authorable area-level key is introduced — visibility stays derived, per -the objectui#3311 ruling. diff --git a/.changeset/area-visibility-derived-from-items.md b/.changeset/area-visibility-derived-from-items.md deleted file mode 100644 index 6b8c75213c..0000000000 --- a/.changeset/area-visibility-derived-from-items.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -"@object-ui/layout": minor ---- - -`AppSchemaRenderer` now derives area visibility from the items inside the -area, closing the visible-but-empty regression the spec 17.0.0 area-key -retirement left behind (objectui#3311, option C of the recorded ruling). - -Spec 17.0.0 retired the authorable area-level `visible` / -`requiredPermissions` (`AREA_VISIBLE_RETIRED` / -`AREA_REQUIRED_PERMISSIONS_RETIRED`) — an area is a layout grouping, not an -access boundary — and objectui followed in #3315 by deleting the area -switcher's filter. Correct on the contract, but it changed the navigation -surface: an area whose items are **all** gated away used to disappear from -the switcher and instead rendered as a selectable, empty area. - -## What changed - -- **Area visibility is now derived, not authored.** An area appears in the - switcher iff at least one of its navigation items survives the exact - item-level guards `NavigationRenderer` applies: the `visible` expression, - `requiredPermissions`, the `requiresObject` / `requiresService` runtime - capability gates, and — for `action` items — the presence of an `onAction` - dispatcher (framework#4509: without one they are not rendered, so they - cannot carry an area either). Separators never count; a `group` counts only - through its children. -- **The active area is elected among visible areas only.** A fully gated - first area is no longer auto-activated, and when a gating change hides the - currently active area the shell re-elects the first visible one. A gating - change that merely *reveals* an area never yanks the user away from where - they are. -- **An area with no items at all derives the same way**: no visible item → - hidden. (Boundary recorded in objectui#3311.) -- New export `hasVisibleNavigationItems(items, options)` from - `@object-ui/layout` — the predicate behind the derivation, usable by other - shells that render their own area switchers. - -No authorable key is involved anywhere: the platform's `.strict()` area -object still rejects the retired keys, and the derivation — computed from the -same guards that decide what renders — cannot disagree with the rendered -navigation, so there is nothing for a metadata author to get wrong. diff --git a/.changeset/aria-required-five-more-sites.md b/.changeset/aria-required-five-more-sites.md deleted file mode 100644 index b3a3f72be7..0000000000 --- a/.changeset/aria-required-five-more-sites.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -'@object-ui/components': patch -'@object-ui/app-shell': patch -'@object-ui/plugin-detail': patch ---- - -Deliver the required state to the control in the five renderers outside the object form that still painted it as an asterisk only (objectui#3299 — the same defect #3290/#3298 fixed in `form.tsx`). - -Each site converges on the reference shape (`EmbeddableForm.tsx`): the control carries `aria-required={required || undefined}` and the asterisk is `aria-hidden="true"`, so assistive tech announces required once, as a state — instead of hearing a bare "asterisk" folded into the accessible name, or nothing at all. - -- `@object-ui/app-shell` — `ActionParamDialog` (both the boolean row and the default branch, delivered through the real field widgets' `toDomProps` whitelist) and `CreateViewDialog` (display label, machine name, and every type-specific required-field selector). -- `@object-ui/components` — the custom `ActionParamDialog` (all five typed branches, including the Radix select trigger) and `FieldContainer`, whose existing Slot injection (`id` / `aria-describedby` / `aria-invalid`) now also injects `aria-required`, covering every consumer in one place. -- `@object-ui/plugin-detail` — `InlineCreateRelated`'s create-tab inputs. - -Deliberately NOT the native `required` attribute (#3290 ruling): each of these hosts runs its own validation, and native `required` would arm the browser's constraint-validation bubble beside it. The SDUI controls that already use native `required` (`renderers/form/{input,textarea,select,checkbox}.tsx`, `basic/text-input.tsx`) are unchanged — they don't have a second validator, so their channel is already correct. diff --git a/.changeset/aria-required-reaches-the-control.md b/.changeset/aria-required-reaches-the-control.md deleted file mode 100644 index 40a226d10d..0000000000 --- a/.changeset/aria-required-reaches-the-control.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -"@object-ui/components": patch ---- - -The required state now reaches the input control as `aria-required`, instead of -existing only as part of the control's accessible name (objectui#3290). - -The form renderer has always computed a correct `required` — the static -`required` flag merged with the `requiredWhen` CEL verdict — and then spent it -on exactly one thing: the red asterisk in ``. That asterisk carried -`aria-label="required"`, so the only path from the computed state to assistive -tech was `