From aaa1a14e183a293c65194a17ceb997781c825947 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 25 Oct 2026 12:21:36 +0000 Subject: [PATCH] chore: release packages --- .changeset/12724-plan-card-posture.md | 8 - .../13353-datasource-enum-option-labels.md | 10 -- .changeset/13386-fold-all-empty-section.md | 9 -- .changeset/13442-bulk-per-row-results.md | 18 --- .changeset/13449-retire-html-renderer.md | 19 --- .../13450-retire-widget-module-source.md | 23 --- ...13453-collaboration-retire-live-cursors.md | 8 - .changeset/13453-core-retire-dead-modules.md | 12 -- .changeset/13453-react-retire-dead-hooks.md | 8 - .changeset/13453-test-helpers-off-barrels.md | 10 -- .changeset/13458-record-preview-panel.md | 16 -- .../13459-refuse-invalid-gantt-block.md | 11 -- .changeset/13460-console-pages-i18n.md | 14 -- .changeset/13460-console-second-pass.md | 12 -- .changeset/13461-keyboard-and-names.md | 20 --- .changeset/13464-declare-side-effects.md | 35 ---- .changeset/13465-react-peer-app-shell.md | 8 - .changeset/13465-react-peer-auth.md | 8 - .changeset/13465-react-peer-collaboration.md | 8 - .changeset/13465-react-peer-components.md | 8 - .changeset/13465-react-peer-create-plugin.md | 8 - .changeset/13465-react-peer-fields.md | 8 - .changeset/13465-react-peer-i18n.md | 8 - .changeset/13465-react-peer-layout.md | 8 - .changeset/13465-react-peer-mobile.md | 8 - .changeset/13465-react-peer-permissions.md | 8 - .changeset/13465-react-peer-plugin-ai.md | 8 - .../13465-react-peer-plugin-calendar.md | 8 - .changeset/13465-react-peer-plugin-charts.md | 8 - .changeset/13465-react-peer-plugin-chatbot.md | 8 - .../13465-react-peer-plugin-dashboard.md | 8 - .../13465-react-peer-plugin-designer.md | 8 - .changeset/13465-react-peer-plugin-detail.md | 8 - .changeset/13465-react-peer-plugin-editor.md | 8 - .changeset/13465-react-peer-plugin-form.md | 8 - .changeset/13465-react-peer-plugin-gantt.md | 8 - .changeset/13465-react-peer-plugin-grid.md | 8 - .changeset/13465-react-peer-plugin-kanban.md | 8 - .changeset/13465-react-peer-plugin-list.md | 8 - .changeset/13465-react-peer-plugin-map.md | 8 - .../13465-react-peer-plugin-markdown.md | 8 - .changeset/13465-react-peer-plugin-report.md | 8 - .../13465-react-peer-plugin-timeline.md | 8 - .changeset/13465-react-peer-plugin-tree.md | 8 - .changeset/13465-react-peer-plugin-view.md | 8 - .changeset/13465-react-peer-providers.md | 8 - .changeset/13465-react-peer-react-runtime.md | 8 - .changeset/13465-react-peer-react.md | 8 - .../13470-report-inline-locale-label.md | 10 -- .changeset/13471-calendar-lookup-title.md | 8 - .changeset/13476-holeless-action-copy.md | 14 -- .../13477-assigned-users-position-label.md | 10 -- ...anslation-preview-positions-permissions.md | 11 -- .changeset/13488-page-inline-locale-label.md | 11 -- .changeset/13492-chat-chart-order.md | 8 - .changeset/25685-one-react-line.md | 36 ----- .changeset/25685-one-zod-range.md | 11 -- .changeset/25723-workspace-root-readers.md | 4 - .changeset/25727-round2-dependency-pins.md | 9 -- .../25733-workspace-root-test-assumptions.md | 4 - .changeset/25763-warm-test-imports.md | 4 - QUICK_REFERENCE.md | 2 +- apps/console/CHANGELOG.md | 24 +++ apps/console/package.json | 2 +- packages/app-shell/CHANGELOG.md | 149 ++++++++++++++++++ packages/app-shell/package.json | 2 +- packages/auth/CHANGELOG.md | 24 +++ packages/auth/package.json | 2 +- packages/cli/CHANGELOG.md | 46 ++++++ packages/cli/package.json | 2 +- packages/collaboration/CHANGELOG.md | 38 +++++ packages/collaboration/package.json | 2 +- packages/components/CHANGELOG.md | 81 ++++++++++ packages/components/package.json | 2 +- packages/core/CHANGELOG.md | 80 ++++++++++ packages/core/package.json | 2 +- packages/create-plugin/CHANGELOG.md | 16 ++ packages/create-plugin/package.json | 2 +- packages/data-objectstack/CHANGELOG.md | 34 ++++ packages/data-objectstack/package.json | 2 +- packages/fields/CHANGELOG.md | 57 +++++++ packages/fields/package.json | 2 +- packages/i18n/CHANGELOG.md | 55 +++++++ packages/i18n/package.json | 2 +- packages/layout/CHANGELOG.md | 37 +++++ packages/layout/package.json | 2 +- packages/mobile/CHANGELOG.md | 27 ++++ packages/mobile/package.json | 2 +- packages/permissions/CHANGELOG.md | 27 ++++ packages/permissions/package.json | 2 +- packages/plugin-ai/CHANGELOG.md | 41 +++++ packages/plugin-ai/package.json | 2 +- packages/plugin-calendar/CHANGELOG.md | 55 +++++++ packages/plugin-calendar/package.json | 2 +- packages/plugin-charts/CHANGELOG.md | 45 ++++++ packages/plugin-charts/package.json | 2 +- packages/plugin-chatbot/CHANGELOG.md | 69 ++++++++ packages/plugin-chatbot/package.json | 2 +- packages/plugin-dashboard/CHANGELOG.md | 49 ++++++ packages/plugin-dashboard/package.json | 2 +- packages/plugin-designer/CHANGELOG.md | 52 ++++++ packages/plugin-designer/package.json | 2 +- packages/plugin-detail/CHANGELOG.md | 57 +++++++ packages/plugin-detail/package.json | 2 +- packages/plugin-editor/CHANGELOG.md | 37 +++++ packages/plugin-editor/package.json | 2 +- packages/plugin-form/CHANGELOG.md | 45 ++++++ packages/plugin-form/package.json | 2 +- packages/plugin-gantt/CHANGELOG.md | 57 +++++++ packages/plugin-gantt/package.json | 2 +- packages/plugin-grid/CHANGELOG.md | 66 ++++++++ packages/plugin-grid/package.json | 2 +- packages/plugin-kanban/CHANGELOG.md | 51 ++++++ packages/plugin-kanban/package.json | 2 +- packages/plugin-list/CHANGELOG.md | 59 +++++++ packages/plugin-list/package.json | 2 +- packages/plugin-map/CHANGELOG.md | 51 ++++++ packages/plugin-map/package.json | 2 +- packages/plugin-markdown/CHANGELOG.md | 37 +++++ packages/plugin-markdown/package.json | 2 +- packages/plugin-report/CHANGELOG.md | 47 ++++++ packages/plugin-report/package.json | 2 +- packages/plugin-timeline/CHANGELOG.md | 61 +++++++ packages/plugin-timeline/package.json | 2 +- packages/plugin-tree/CHANGELOG.md | 51 ++++++ packages/plugin-tree/package.json | 2 +- packages/plugin-view/CHANGELOG.md | 53 +++++++ packages/plugin-view/package.json | 2 +- packages/providers/CHANGELOG.md | 27 ++++ packages/providers/package.json | 2 +- packages/react-runtime/CHANGELOG.md | 9 ++ packages/react-runtime/package.json | 2 +- packages/react/CHANGELOG.md | 50 ++++++ packages/react/package.json | 2 +- packages/sdui-parser/CHANGELOG.md | 2 + packages/sdui-parser/package.json | 2 +- packages/types/CHANGELOG.md | 61 +++++++ packages/types/package.json | 2 +- packages/vscode-extension/CHANGELOG.md | 16 ++ packages/vscode-extension/package.json | 2 +- 140 files changed, 1883 insertions(+), 669 deletions(-) delete mode 100644 .changeset/12724-plan-card-posture.md delete mode 100644 .changeset/13353-datasource-enum-option-labels.md delete mode 100644 .changeset/13386-fold-all-empty-section.md delete mode 100644 .changeset/13442-bulk-per-row-results.md delete mode 100644 .changeset/13449-retire-html-renderer.md delete mode 100644 .changeset/13450-retire-widget-module-source.md delete mode 100644 .changeset/13453-collaboration-retire-live-cursors.md delete mode 100644 .changeset/13453-core-retire-dead-modules.md delete mode 100644 .changeset/13453-react-retire-dead-hooks.md delete mode 100644 .changeset/13453-test-helpers-off-barrels.md delete mode 100644 .changeset/13458-record-preview-panel.md delete mode 100644 .changeset/13459-refuse-invalid-gantt-block.md delete mode 100644 .changeset/13460-console-pages-i18n.md delete mode 100644 .changeset/13460-console-second-pass.md delete mode 100644 .changeset/13461-keyboard-and-names.md delete mode 100644 .changeset/13464-declare-side-effects.md delete mode 100644 .changeset/13465-react-peer-app-shell.md delete mode 100644 .changeset/13465-react-peer-auth.md delete mode 100644 .changeset/13465-react-peer-collaboration.md delete mode 100644 .changeset/13465-react-peer-components.md delete mode 100644 .changeset/13465-react-peer-create-plugin.md delete mode 100644 .changeset/13465-react-peer-fields.md delete mode 100644 .changeset/13465-react-peer-i18n.md delete mode 100644 .changeset/13465-react-peer-layout.md delete mode 100644 .changeset/13465-react-peer-mobile.md delete mode 100644 .changeset/13465-react-peer-permissions.md delete mode 100644 .changeset/13465-react-peer-plugin-ai.md delete mode 100644 .changeset/13465-react-peer-plugin-calendar.md delete mode 100644 .changeset/13465-react-peer-plugin-charts.md delete mode 100644 .changeset/13465-react-peer-plugin-chatbot.md delete mode 100644 .changeset/13465-react-peer-plugin-dashboard.md delete mode 100644 .changeset/13465-react-peer-plugin-designer.md delete mode 100644 .changeset/13465-react-peer-plugin-detail.md delete mode 100644 .changeset/13465-react-peer-plugin-editor.md delete mode 100644 .changeset/13465-react-peer-plugin-form.md delete mode 100644 .changeset/13465-react-peer-plugin-gantt.md delete mode 100644 .changeset/13465-react-peer-plugin-grid.md delete mode 100644 .changeset/13465-react-peer-plugin-kanban.md delete mode 100644 .changeset/13465-react-peer-plugin-list.md delete mode 100644 .changeset/13465-react-peer-plugin-map.md delete mode 100644 .changeset/13465-react-peer-plugin-markdown.md delete mode 100644 .changeset/13465-react-peer-plugin-report.md delete mode 100644 .changeset/13465-react-peer-plugin-timeline.md delete mode 100644 .changeset/13465-react-peer-plugin-tree.md delete mode 100644 .changeset/13465-react-peer-plugin-view.md delete mode 100644 .changeset/13465-react-peer-providers.md delete mode 100644 .changeset/13465-react-peer-react-runtime.md delete mode 100644 .changeset/13465-react-peer-react.md delete mode 100644 .changeset/13470-report-inline-locale-label.md delete mode 100644 .changeset/13471-calendar-lookup-title.md delete mode 100644 .changeset/13476-holeless-action-copy.md delete mode 100644 .changeset/13477-assigned-users-position-label.md delete mode 100644 .changeset/13478-translation-preview-positions-permissions.md delete mode 100644 .changeset/13488-page-inline-locale-label.md delete mode 100644 .changeset/13492-chat-chart-order.md delete mode 100644 .changeset/25685-one-react-line.md delete mode 100644 .changeset/25685-one-zod-range.md delete mode 100644 .changeset/25723-workspace-root-readers.md delete mode 100644 .changeset/25727-round2-dependency-pins.md delete mode 100644 .changeset/25733-workspace-root-test-assumptions.md delete mode 100644 .changeset/25763-warm-test-imports.md diff --git a/.changeset/12724-plan-card-posture.md b/.changeset/12724-plan-card-posture.md deleted file mode 100644 index 7541f743df..0000000000 --- a/.changeset/12724-plan-card-posture.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/plugin-chatbot": minor ---- - -Clause-②: yes -Metadata-protocol: none - -The AI build chat's plan card now says how the build will land. When `propose_blueprint`'s `planCard` carries `posture` (objectstack-ai/cloud#2924 ruling A), its `line` (e.g. "This first build goes live at once; later changes are saved as drafts for you to publish") is drawn as the last item of the assumptions list. The exported `ProposedPlanCard` type gains the optional `posture: { mode: 'publish' | 'draft'; line: string }`. A plan card without the key draws as before (objectui#12724). diff --git a/.changeset/13353-datasource-enum-option-labels.md b/.changeset/13353-datasource-enum-option-labels.md deleted file mode 100644 index 7dd0584757..0000000000 --- a/.changeset/13353-datasource-enum-option-labels.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -'@object-ui/app-shell': patch ---- - -fix(app-shell): readable option labels for unlabeled datasource enum selects (objectui#13353) - -Setup → Datasources: a driver-config JSON Schema `enum` select showed each raw value (`off`, `safe`) as its option text. The driver-config schema declares no per-option label, so each option's text is now built from its raw value with Studio's `humanizeKey`, the helper `SchemaForm`'s enum selects already use (`off` → "Off", `read_only` → "Read Only", `fullSync` → "Full Sync"). The value the form saves stays the raw enum member. - -Clause-②: no -Metadata-protocol: none diff --git a/.changeset/13386-fold-all-empty-section.md b/.changeset/13386-fold-all-empty-section.md deleted file mode 100644 index fefcffa43c..0000000000 --- a/.changeset/13386-fold-all-empty-section.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@object-ui/plugin-detail": minor -"@object-ui/types": patch ---- - -Clause-②: no -Metadata-protocol: semantic - -A record section whose fields are all empty, and that the page keeps (`hideEmpty: false`), now draws its heading plus one "Show N empty fields" row in read-only mode, the same fold a partly-filled section uses, instead of a placeholder row per field. Edit mode still draws every field as an editable row, and a print page still prints every row. When every section of a detail body is empty and at least two are kept, the body draws one "Show N empty fields" row for all of them (objectui#13386, objectui#12618). diff --git a/.changeset/13442-bulk-per-row-results.md b/.changeset/13442-bulk-per-row-results.md deleted file mode 100644 index 1e2a331a07..0000000000 --- a/.changeset/13442-bulk-per-row-results.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -'@object-ui/types': minor -'@object-ui/core': minor -'@object-ui/data-objectstack': minor -'@object-ui/plugin-grid': minor ---- - -Clause-②: yes -Metadata-protocol: none - -A list bulk action keeps each failed record's id and the server's reason, and a bulk run refreshes the bound list once instead of once per row (objectui#13442). - -A 100-row bulk update took about 100 s in the console for about 19 s of server work. `bulkUpdate` read only the server's `succeeded` count, so a partial failure reached the result dialog and the error CSV as one `batch_0: N records failed` entry with no record id or reason. Apps that needed the reason ran `batchSize: 1`, and on that per-row path every write refetched and re-rendered the whole list. - -- `DataSource.bulkUpdate` / `bulkDelete` (`@object-ui/types`) may now resolve to a `BulkWriteResult`, `{ succeeded, errors: [{ id, error }] }`, as well as to a plain count. Both new types are exported. An adapter that returns a number keeps working unchanged. A caller that reads the result must now handle both shapes; the bulk executor does. -- `ObjectStackAdapter.bulkUpdate` / `bulkDelete` (`@object-ui/data-objectstack`) resolve to a `BulkWriteResult` built from the `results[].errors[]` that `updateMany` / `deleteMany` already answer, and the per-id fallback loop keeps each row's reason instead of discarding it. Breaking for direct callers: these two methods used to resolve to a number. Code that calls them directly and reads the result as a count must read `.succeeded`. -- `executeBulkBatch` (`@object-ui/core`) reports each failure the bulk call names under its own id and reason. Only failures it does not name still fold into one `batch_${offset}` entry. So the result dialog, the error CSV and Retry work per record whatever the `batchSize`, and Undo skips the failed rows. -- New optional `DataSource.batchMutationEvents(work)`: runs `work` with `onMutation` events held, then delivers them when it settles, one per resource and mutation type. `ObjectStackAdapter` implements it. `useBulkExecutor` (`@object-ui/plugin-grid`) runs each bulk run and each undo inside it, so ListView, ObjectView, kanban, calendar and the console's invalidation bridge refetch once per run, not once per row. The executor's `dataSource` face gains the matching optional member. diff --git a/.changeset/13449-retire-html-renderer.md b/.changeset/13449-retire-html-renderer.md deleted file mode 100644 index d5cf2f6b1b..0000000000 --- a/.changeset/13449-retire-html-renderer.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -'@object-ui/components': minor -'@object-ui/types': minor -'@object-ui/core': minor -'@object-ui/cli': minor ---- - -The raw-HTML `html` node type is retired (objectui#13449). Its renderer wrote the authored `html` string into the page through `dangerouslySetInnerHTML` with no sanitiser, so anyone who could write metadata could put script-bearing markup in front of every viewer — a `kind: 'html'` page included, which compiled an `html` tag carrying an `html` attribute with no diagnostic. `@objectstack/spec` declares no `html` component, so it is removed rather than sanitised, at once, with no deprecation alias. This is breaking for a page that still names it; it is marked `minor` under this repository's version policy. - -- **SDUI node `html`**, also registered as `ui:html`. FROM: `@object-ui/components` registered both keys. TO: neither is registered. A JSON node that still names it draws the unknown-component panel, a `kind: 'html'` page that writes the tag fails to compile with `forbidden-tag` and `unknown-component`, and `objectui check` no longer counts either key among the known component types. -- **Public block `html`** in `PUBLIC_BLOCKS` (`@object-ui/core`). FROM: listed as the curated tier's escape hatch, so `getPublicConfigs()` and the published `sdui.manifest.json` carried it. TO: not listed, so neither names it. -- **Schema `HtmlSchema`** in `@object-ui/types`: the TypeScript interface from the package entry, with its `DataDisplaySchema` member and its `SchemaRegistry` row (so `ComponentType` no longer offers `'html'`), and the zod arm from `@object-ui/types/zod`. FROM: exported, and a `type: "html"` node validated against the arm. TO: there is no such export, so importing it fails to compile. `DataDisplaySchema` keeps a refusal arm for the literal, which is not exported, so `objectui validate` refuses a `type: "html"` node BY NAME at `type`, and the message names the remedy. - -The `html` FIELD type (`HtmlFieldMetadata`, drawn by `field:html`) is a different layer and stays: its value displays through the sanitised fields path. - -Fix for a page that still names it: in place of `{ "type": "html", "html": "…" }`, declare rich text a user edits as an `html` or `richtext` field on the object, whose value renders sanitised, and write authored page copy as a `kind: 'html'` page. - -Clause-②: no (narrowing) -Metadata-protocol: narrowed diff --git a/.changeset/13450-retire-widget-module-source.md b/.changeset/13450-retire-widget-module-source.md deleted file mode 100644 index f10f989080..0000000000 --- a/.changeset/13450-retire-widget-module-source.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -'@object-ui/core': minor -'@object-ui/types': minor ---- - -**BREAKING:** the `module` widget source is retired. `WidgetRegistry` no longer loads a widget's code from a URL at runtime (objectui#13450). - -`RuntimeWidgetSource` had a `module` member, `{ type: 'module', url, exportName? }`, and `WidgetRegistry.load()` resolved it with a dynamic `import()` built through the Function constructor so that bundlers could not see it. That is the runtime dynamic import AGENTS.md commandment #6 forbids ("No `eval()` / runtime dynamic imports to load components"), and it also needs `unsafe-eval` under a strict Content Security Policy. The member, its `WidgetSourceModule` interface and the loader arm are removed. `RuntimeWidgetSource` is now `WidgetSourceInline | WidgetSourceRegistry`. - -An old manifest is refused loudly, not skipped. In TypeScript, `type: 'module'` no longer type-checks, and importing `WidgetSourceModule` is `TS2305`. A manifest that reaches `WidgetRegistry.load()` untyped (plain JavaScript, a cast, or an older `@object-ui/types`) is rejected before anything is fetched. The rejection names the retired `module` source and both replacements, `load()` emits `widget:error`, and `loadAll()` reports the error for that widget. Any other unknown source type is rejected the same way, and the message lists the supported types. - -Migration, FROM → TO: - -- FROM `source: { type: 'module', url: '/widgets/chart.js', exportName: 'Chart' }` -- TO `import { Chart } from './widgets/chart';` and then `source: { type: 'inline', component: Chart }`. The component is imported at build time, so the bundler sees it. -- OR register the component once with the component registry (`ComponentRegistry.register('chart', Chart)`) and declare `source: { type: 'registry', registryKey: 'chart' }`. - -One-line fix: replace each `{ type: 'module', url }` with `{ type: 'inline', component }`, where `component` is imported at build time. - -Remote widgets as a product capability would be a new contract (a signed manifest and an allow-listed origin, decided in `@objectstack/spec`). This release does not add one. - -Clause-②: no (narrowing) -Metadata-protocol: narrowed diff --git a/.changeset/13453-collaboration-retire-live-cursors.md b/.changeset/13453-collaboration-retire-live-cursors.md deleted file mode 100644 index 698d18bb7c..0000000000 --- a/.changeset/13453-collaboration-retire-live-cursors.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/collaboration": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** removed `LiveCursors` and `LiveCursorsProps`, which nothing rendered (objectui#13453). Declared `minor` per the version-alignment policy (a changeset never declares `major`). `usePresence` still reports each user's cursor, so a host can draw them itself. diff --git a/.changeset/13453-core-retire-dead-modules.md b/.changeset/13453-core-retire-dead-modules.md deleted file mode 100644 index 856950dc95..0000000000 --- a/.changeset/13453-core-retire-dead-modules.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@object-ui/core": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** removed exports with no reader (objectui#13453). Declared `minor` per the version-alignment policy (a changeset never declares `major`). - -- The fluent schema builders from `builder/schema-builder`: `form`, `button`, `input`, `card`, `grid`, `flex` and the `FormBuilder`, `ButtonBuilder`, `InputBuilder`, `CardBuilder`, `GridBuilder`, `FlexBuilder` classes. Write the schema object literally instead. -- The three protocol bridges, `DndProtocol`, `KeyboardProtocol` and `SharingProtocol`: `resolveDndConfig`, `createDragItemProps`, `createDropZoneProps`, `resolveDragConstraints`, `resolveKeyboardConfig`, `parseShortcutKey`, `matchesShortcut`, `createFocusTrapConfig`, `resolveSharingConfig`, `resolveEmbedConfig`, `generateEmbedCode`, `validateSharingConfig` and their types (`DndConfig`, `DragItem`, `DropZone`, `KeyboardShortcut`, `FocusTrapConfig`, `KeyboardNavigationConfig` and the rest). The spec vocabulary they bridged was already deleted upstream; no replacement. -- The test-only helpers `resetColumnIdentityWarnings`, `resetRetiredSortSpellingReports`, `resetDashboardFilterWarnings` and `resetReferenceKeyWarnings` are no longer on the package root. They reset module state for tests and had no other reader. diff --git a/.changeset/13453-react-retire-dead-hooks.md b/.changeset/13453-react-retire-dead-hooks.md deleted file mode 100644 index 90d7cba659..0000000000 --- a/.changeset/13453-react-retire-dead-hooks.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/react": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** removed four hooks with no reader (objectui#13453): `useFocusTrap`, `useFocusReturn` and `useRovingFocus` (from `useFocusManagement`), `usePageTransition`, and `useSchemaPersistence` with `createLocalStorageAdapter`, plus their option and result types. Declared `minor` per the version-alignment policy (a changeset never declares `major`). No replacement inside ObjectUI; a host that used one should keep its own copy. diff --git a/.changeset/13453-test-helpers-off-barrels.md b/.changeset/13453-test-helpers-off-barrels.md deleted file mode 100644 index 5628fc031f..0000000000 --- a/.changeset/13453-test-helpers-off-barrels.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@object-ui/app-shell": minor -"@object-ui/types": minor -"@object-ui/plugin-detail": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** test-only reset helpers are no longer on the package roots (objectui#13453): `resetRuntimeConfigForTesting` (`@object-ui/app-shell`), `resetInflightGetsForTesting` (`@object-ui/types`) and `__clearRecordEditableCache` (`@object-ui/plugin-detail`). They reset module state between tests and had no other reader. Declared `minor` per the version-alignment policy (a changeset never declares `major`). diff --git a/.changeset/13458-record-preview-panel.md b/.changeset/13458-record-preview-panel.md deleted file mode 100644 index 54f63efc85..0000000000 --- a/.changeset/13458-record-preview-panel.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -"@object-ui/plugin-list": patch -"@object-ui/plugin-map": patch -"@object-ui/plugin-timeline": patch -"@object-ui/plugin-grid": patch -"@object-ui/plugin-view": patch -"@object-ui/core": patch -"@object-ui/react": patch ---- - -Clause-②: no -Metadata-protocol: none - -The record overlay opened from a list, gallery, map or timeline view now mounts `RecordDetailPanel` from `@object-ui/plugin-detail`, as the grid, tree, kanban, calendar and gantt overlays already did, in place of a raw dump of the record's keys and values. A record previewed from any view reads with the object's declared labels and typed values, and without its `hidden` fields. The panel is read-only there, as on the grid and the tree; a row with no object name or id keeps the plain reading. - -Drifted copies folded: `GANTT_CONFIG_SPELLING` is exported once from `@object-ui/core` (used by `ListView` and `ObjectView`); `isSameAuthoredFilter` is exported from `@object-ui/react` and `ObjectGrid` drops its copy; `@object-ui/core` exports `isPlainObject` (a non-null, non-array object) for private copies to switch to when their file is next touched. diff --git a/.changeset/13459-refuse-invalid-gantt-block.md b/.changeset/13459-refuse-invalid-gantt-block.md deleted file mode 100644 index 57910f5830..0000000000 --- a/.changeset/13459-refuse-invalid-gantt-block.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@object-ui/plugin-gantt": patch -"@object-ui/app-shell": patch ---- - -Clause-②: no -Metadata-protocol: narrowed - -An invalid `gantt` block is refused instead of drawn (objectui#13459). `ObjectGantt` used to log `Invalid gantt configuration` and render the block anyway, so a block with a misspelt or missing key still drew a chart. It now renders a refusal that names each `GanttConfigSchema` issue by its path in the block (`gantt.endDateField: …`); a valid block and the flat ObjectView / ListView spelling render as before. - -The Studio designers' spec derivations (`dashboard`, `package`, `page`, `report` and `view` schemas in `metadata-admin`) no longer catch a failed derivation and return `undefined`, which rendered a designer form silently missing fields. Their only input is the bundled spec, so a failure is a build-time fact that fails their tests; at runtime it reaches the route's error boundary. diff --git a/.changeset/13460-console-pages-i18n.md b/.changeset/13460-console-pages-i18n.md deleted file mode 100644 index 0be712a114..0000000000 --- a/.changeset/13460-console-pages-i18n.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -"@object-ui/console": patch -"@object-ui/app-shell": patch -"@object-ui/i18n": patch ---- - -Clause-②: no -Metadata-protocol: none - -fix(console, app-shell): four routed console pages and the Studio datasource page speak the session's language instead of hard-coded English (objectui#13460). - -- Developer → API Console, Developer → Public Forms, Developer → Integrations & APIs and System → AI Approvals read their copy from new `console.developer.apiConsole.*`, `console.developer.publicForms.*`, `console.developer.integrations.*` and `console.system.aiApprovals.*` keys, translated in all ten locale packs. Sentences with an inline bold action or `` key are one translated string each, so every language places the element itself. -- Setup → Datasources reads its copy from new `engine.datasource.*` rows in the Studio table (en-US and zh-CN, the `engine.*` carve-out). The driver config form's enum option values are unchanged. -- English renders exactly as before, with or without an i18n provider. Code samples, verbs, paths, example slugs and server messages stay as written. diff --git a/.changeset/13460-console-second-pass.md b/.changeset/13460-console-second-pass.md deleted file mode 100644 index 4f12e73ad5..0000000000 --- a/.changeset/13460-console-second-pass.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@object-ui/console": patch -"@object-ui/components": patch -"@object-ui/i18n": patch ---- - -Clause-②: no -Metadata-protocol: none - -More console surfaces now speak the session's language (objectui#13460, second pass). System → Audit Log, Developer → Flow Runs, the Integrations page's "Connect an AI agent" card, the share-link dialog and the public `/s/:token` share landing drew their copy as English literals. They now read `console.system.auditLog.*`, `console.developer.flowRuns.*`, `console.developer.agentConnect.*`, `shareDialog.*` and `sharedRecord.*`, each with an `en` inline default and a row in all ten packs. A sentence that names another control names it by that control's translated label, and a sentence with inline code is one translated string. Error states are kept as codes and worded at render. - -The dev-only surfaces moved under `dev/`: `PerformanceDashboard` to `apps/console/src/dev/`, and the components package's `debug/` folder (the `DebugPanel`) to `dev/`. The package's exports are unchanged. diff --git a/.changeset/13461-keyboard-and-names.md b/.changeset/13461-keyboard-and-names.md deleted file mode 100644 index 31e8a44451..0000000000 --- a/.changeset/13461-keyboard-and-names.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -'@object-ui/app-shell': patch -'@object-ui/components': patch -'@object-ui/fields': patch -'@object-ui/i18n': patch -'@object-ui/plugin-chatbot': patch ---- - -Icon-only buttons in the console now have an accessible name, and the clickable `div` / `span` controls the console drew are real buttons a keyboard can reach (objectui#13461). - -Clause-②: no -Metadata-protocol: none - -- Named, in every shipped language: the AI canvas's close button, the secret value's show / hide toggle in the action result dialog, the permission set editor's remove-policy and remove-tab buttons, the metadata history page's refresh button, the sort builder's remove button, the `file-upload` renderer's remove buttons, the file, master-detail, password and QR-code field widgets' icon buttons, the chat composer's send button, the chat's scroll-to-latest button, and the top bar's avatar button ("Account menu"). -- The organization picker's "Manage" link is its own button beside the card, not a clickable `span` inside the card's button, so it can be tabbed to and is no longer read as part of the card's name. -- A flow canvas branch label selects its edge with Enter or Space when the edge is selectable. -- `tree-view`: the expand toggle is named ("Expand" / "Collapse") and reports `aria-expanded`; a node is a button only when the host passes `onNodeClick`, instead of a clickable row wrapped round the toggle. -- `file-upload`: the dropzone opens the file picker with Enter or Space. -- The app preview's read-only navigation list no longer carries a click handler that could never fire. -- New pack keys: `common.expand`, `common.collapse`, `user.accountMenu`, `actions.resultDialog.showValue` / `hideValue`, `fields.masterDetail.view` / `remove`, `fields.password.show` / `hide`, `fields.qrCode.copy` / `show` / `hide`, `chatbot.sendMessage`, `chatbot.scrollToBottom`. diff --git a/.changeset/13464-declare-side-effects.md b/.changeset/13464-declare-side-effects.md deleted file mode 100644 index c36d502c4c..0000000000 --- a/.changeset/13464-declare-side-effects.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -"@object-ui/auth": patch -"@object-ui/cli": patch -"@object-ui/collaboration": patch -"@object-ui/create-plugin": patch -"@object-ui/data-objectstack": patch -"@object-ui/mobile": patch -"@object-ui/permissions": patch -"@object-ui/plugin-ai": patch -"@object-ui/plugin-calendar": patch -"@object-ui/plugin-charts": patch -"@object-ui/plugin-chatbot": patch -"@object-ui/plugin-dashboard": patch -"@object-ui/plugin-designer": patch -"@object-ui/plugin-detail": patch -"@object-ui/plugin-editor": patch -"@object-ui/plugin-form": patch -"@object-ui/plugin-gantt": patch -"@object-ui/plugin-grid": patch -"@object-ui/plugin-kanban": patch -"@object-ui/plugin-list": patch -"@object-ui/plugin-map": patch -"@object-ui/plugin-markdown": patch -"@object-ui/plugin-report": patch -"@object-ui/plugin-timeline": patch -"@object-ui/plugin-tree": patch -"@object-ui/plugin-view": patch -"@object-ui/providers": patch -"@object-ui/react": patch ---- - -Clause-②: no -Metadata-protocol: none - -Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). diff --git a/.changeset/13465-react-peer-app-shell.md b/.changeset/13465-react-peer-app-shell.md deleted file mode 100644 index 543aaaca8f..0000000000 --- a/.changeset/13465-react-peer-app-shell.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/app-shell": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-auth.md b/.changeset/13465-react-peer-auth.md deleted file mode 100644 index 548183377b..0000000000 --- a/.changeset/13465-react-peer-auth.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/auth": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` now reads `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-collaboration.md b/.changeset/13465-react-peer-collaboration.md deleted file mode 100644 index fec9eb55e9..0000000000 --- a/.changeset/13465-react-peer-collaboration.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/collaboration": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` now reads `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-components.md b/.changeset/13465-react-peer-components.md deleted file mode 100644 index 1d4b93f943..0000000000 --- a/.changeset/13465-react-peer-components.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/components": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-create-plugin.md b/.changeset/13465-react-peer-create-plugin.md deleted file mode 100644 index 557ec2cebf..0000000000 --- a/.changeset/13465-react-peer-create-plugin.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/create-plugin": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** a generated plugin's `package.json` now declares `react` and `react-dom` peers as `^19.0.0` (was `^18.0.0 || ^19.0.0`), matching the React 19-only peer range every `@object-ui/*` package now declares. Plugins already generated are unchanged; their authors may narrow the range the same way. Declared `minor` per the version-alignment policy (objectui#13465). diff --git a/.changeset/13465-react-peer-fields.md b/.changeset/13465-react-peer-fields.md deleted file mode 100644 index 9e7b68fd2b..0000000000 --- a/.changeset/13465-react-peer-fields.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/fields": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-i18n.md b/.changeset/13465-react-peer-i18n.md deleted file mode 100644 index d36268325a..0000000000 --- a/.changeset/13465-react-peer-i18n.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/i18n": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` now reads `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-layout.md b/.changeset/13465-react-peer-layout.md deleted file mode 100644 index adfa35ac63..0000000000 --- a/.changeset/13465-react-peer-layout.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/layout": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-mobile.md b/.changeset/13465-react-peer-mobile.md deleted file mode 100644 index bdc4b1429a..0000000000 --- a/.changeset/13465-react-peer-mobile.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/mobile": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` now reads `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-permissions.md b/.changeset/13465-react-peer-permissions.md deleted file mode 100644 index 245f7006b8..0000000000 --- a/.changeset/13465-react-peer-permissions.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/permissions": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` now reads `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-plugin-ai.md b/.changeset/13465-react-peer-plugin-ai.md deleted file mode 100644 index d5dffaad46..0000000000 --- a/.changeset/13465-react-peer-plugin-ai.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/plugin-ai": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-plugin-calendar.md b/.changeset/13465-react-peer-plugin-calendar.md deleted file mode 100644 index c22bc79ba3..0000000000 --- a/.changeset/13465-react-peer-plugin-calendar.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/plugin-calendar": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-plugin-charts.md b/.changeset/13465-react-peer-plugin-charts.md deleted file mode 100644 index 4b88eddfc9..0000000000 --- a/.changeset/13465-react-peer-plugin-charts.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/plugin-charts": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-plugin-chatbot.md b/.changeset/13465-react-peer-plugin-chatbot.md deleted file mode 100644 index c7d399d5a7..0000000000 --- a/.changeset/13465-react-peer-plugin-chatbot.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/plugin-chatbot": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-plugin-dashboard.md b/.changeset/13465-react-peer-plugin-dashboard.md deleted file mode 100644 index 9e7f59d926..0000000000 --- a/.changeset/13465-react-peer-plugin-dashboard.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/plugin-dashboard": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-plugin-designer.md b/.changeset/13465-react-peer-plugin-designer.md deleted file mode 100644 index c94bab9175..0000000000 --- a/.changeset/13465-react-peer-plugin-designer.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/plugin-designer": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-plugin-detail.md b/.changeset/13465-react-peer-plugin-detail.md deleted file mode 100644 index a372fc2909..0000000000 --- a/.changeset/13465-react-peer-plugin-detail.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/plugin-detail": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-plugin-editor.md b/.changeset/13465-react-peer-plugin-editor.md deleted file mode 100644 index bf300144d8..0000000000 --- a/.changeset/13465-react-peer-plugin-editor.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/plugin-editor": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-plugin-form.md b/.changeset/13465-react-peer-plugin-form.md deleted file mode 100644 index c1aa9aca83..0000000000 --- a/.changeset/13465-react-peer-plugin-form.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/plugin-form": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-plugin-gantt.md b/.changeset/13465-react-peer-plugin-gantt.md deleted file mode 100644 index 24489a8330..0000000000 --- a/.changeset/13465-react-peer-plugin-gantt.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/plugin-gantt": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-plugin-grid.md b/.changeset/13465-react-peer-plugin-grid.md deleted file mode 100644 index 15279ac0e3..0000000000 --- a/.changeset/13465-react-peer-plugin-grid.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/plugin-grid": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-plugin-kanban.md b/.changeset/13465-react-peer-plugin-kanban.md deleted file mode 100644 index 789bef3aef..0000000000 --- a/.changeset/13465-react-peer-plugin-kanban.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/plugin-kanban": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-plugin-list.md b/.changeset/13465-react-peer-plugin-list.md deleted file mode 100644 index 99df9b6710..0000000000 --- a/.changeset/13465-react-peer-plugin-list.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/plugin-list": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-plugin-map.md b/.changeset/13465-react-peer-plugin-map.md deleted file mode 100644 index c66550095f..0000000000 --- a/.changeset/13465-react-peer-plugin-map.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/plugin-map": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-plugin-markdown.md b/.changeset/13465-react-peer-plugin-markdown.md deleted file mode 100644 index 7c219352e0..0000000000 --- a/.changeset/13465-react-peer-plugin-markdown.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/plugin-markdown": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-plugin-report.md b/.changeset/13465-react-peer-plugin-report.md deleted file mode 100644 index e683276611..0000000000 --- a/.changeset/13465-react-peer-plugin-report.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/plugin-report": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-plugin-timeline.md b/.changeset/13465-react-peer-plugin-timeline.md deleted file mode 100644 index 7a79a4708e..0000000000 --- a/.changeset/13465-react-peer-plugin-timeline.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/plugin-timeline": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-plugin-tree.md b/.changeset/13465-react-peer-plugin-tree.md deleted file mode 100644 index aa26439298..0000000000 --- a/.changeset/13465-react-peer-plugin-tree.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/plugin-tree": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-plugin-view.md b/.changeset/13465-react-peer-plugin-view.md deleted file mode 100644 index de0b7852c7..0000000000 --- a/.changeset/13465-react-peer-plugin-view.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/plugin-view": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-providers.md b/.changeset/13465-react-peer-providers.md deleted file mode 100644 index d31dde1540..0000000000 --- a/.changeset/13465-react-peer-providers.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/providers": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-react-runtime.md b/.changeset/13465-react-peer-react-runtime.md deleted file mode 100644 index 792b42eccc..0000000000 --- a/.changeset/13465-react-peer-react-runtime.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/react-runtime": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` now reads `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13465-react-peer-react.md b/.changeset/13465-react-peer-react.md deleted file mode 100644 index 2e608f6282..0000000000 --- a/.changeset/13465-react-peer-react.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/react": minor ---- - -Clause-②: no -Metadata-protocol: none - -**Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). diff --git a/.changeset/13470-report-inline-locale-label.md b/.changeset/13470-report-inline-locale-label.md deleted file mode 100644 index 3b970af639..0000000000 --- a/.changeset/13470-report-inline-locale-label.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -'@object-ui/app-shell': patch ---- - -Clause-②: no -Metadata-protocol: none - -A report whose `label` or `description` is an inline locale map (`{ en, 'zh-CN' }`) now opens, and shows both in the viewer's language (objectui#13470). - -`@objectstack/spec` types both keys as `I18nLabel`, so the map is valid metadata and is served unchanged, but the report page drew it straight into its heading, the line under it and the report's crumb in the app bar: React refused the object (error #31) and the page was blank for every viewer. A drill on the whole report titled its drawer `[object Object]`. Each of these now resolves the map to the viewer's language with the reader the app's report index already names a report with. A plain-string label or description draws exactly as before. diff --git a/.changeset/13471-calendar-lookup-title.md b/.changeset/13471-calendar-lookup-title.md deleted file mode 100644 index 4a8fa31764..0000000000 --- a/.changeset/13471-calendar-lookup-title.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/plugin-calendar": patch ---- - -Clause-②: no -Metadata-protocol: none - -Fix calendar events reading `[object Object]` when `calendar.titleField` names a lookup field. `ObjectCalendar` now passes the author's `titleField` to the unified record display-name resolver instead of stringifying the value itself, so an expanded lookup shows the referenced record's display name, a raw id string still shows as it did, and an expanded reference with no usable name falls through to the object-level title ladder. diff --git a/.changeset/13476-holeless-action-copy.md b/.changeset/13476-holeless-action-copy.md deleted file mode 100644 index c735d1aa13..0000000000 --- a/.changeset/13476-holeless-action-copy.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -"@object-ui/core": minor ---- - -Clause-②: no -Metadata-protocol: narrowed - -An action's `confirmText` or `successMessage` with no `{{ }}` hole is now shown exactly as written (objectui#13476). - -objectui#13367 kept one transitional reading: a sentence with no `{{ }}` hole still had its `${…}` tokens filled, `${record.*}` in the confirm dialog and `${result.*}` in the success toast. That reading is gone. A `${…}` token in either text is now plain text, the same as in any other copy with no hole. To put a value into the sentence, write a `{{ }}` hole: `Archive {{ record.name }}?`, `Invitation sent to {{ result.email }}`. - -No in-tree producer writes the holeless `${…}` shape. objectstack's measurement of its examples, `platform-objects`, `plugin-approvals` and HotCRM found none. objectstack's lint already warns on the shape and refuses every other `${…}` token in this copy (objectstack#25702). The paired objectstack card turns the warning into an error once its objectui pin carries this change. - -`outcomeMessages` entries are unchanged: they still fill `${result.*}`. `errorMessage` is unchanged: it is shown as written. diff --git a/.changeset/13477-assigned-users-position-label.md b/.changeset/13477-assigned-users-position-label.md deleted file mode 100644 index 632e4169f4..0000000000 --- a/.changeset/13477-assigned-users-position-label.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -'@object-ui/app-shell': patch ---- - -Clause-②: no -Metadata-protocol: none - -A permission set's Assigned users list now names the position a person holds the set through by the position's label, in the viewer's language, instead of its machine name (objectui#13477). - -The "via position" chip drew the `position` column of the holder's `sys_user_position` row, the machine name, although the section had already listed the registry's position definitions to find the positions that distribute the set, and that list carries each definition's label as the server localizes it. The chip now reads the label from that list and keeps the name on its tooltip, as the access explainer's position chips do. A position whose definition has no label still reads by its name. diff --git a/.changeset/13478-translation-preview-positions-permissions.md b/.changeset/13478-translation-preview-positions-permissions.md deleted file mode 100644 index 68b15a2e83..0000000000 --- a/.changeset/13478-translation-preview-positions-permissions.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@object-ui/app-shell": patch -"@object-ui/i18n": patch ---- - -Clause-②: yes -Metadata-protocol: none - -The metadata designer's translation preview draws the `positions` and `permissions` groups that `@objectstack/spec` now declares on a translation bundle, each with its own card, count and sample, and counts them in the coverage bar. Before, the preview did not type-check against that spec, and a bundle that translated only position or permission-set labels read as empty. - -`isSpecTranslationData` recognises a served translation document by those two groups as well, so a bundle that translates only positions or permission sets is namespaced under `app` like any other spec bundle instead of being returned untransformed. diff --git a/.changeset/13488-page-inline-locale-label.md b/.changeset/13488-page-inline-locale-label.md deleted file mode 100644 index acddf81f64..0000000000 --- a/.changeset/13488-page-inline-locale-label.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@object-ui/app-shell': patch -'@object-ui/components': patch ---- - -Clause-②: no -Metadata-protocol: none - -A page whose `label` or `description` is an inline locale map (`{ en, 'zh-CN' }`) now opens, and shows both in the viewer's language (objectui#13488). A dashboard whose `label` is one no longer blanks its route through the app bar. - -`@objectstack/spec` types a page's `label` and `description`, and a dashboard's `label`, as `I18nLabel`, so the map is valid metadata and is served unchanged. The page drew it straight into its own heading, the line under it, and the description a titled `page:header` draws, and the app bar drew a page's or a dashboard's label as the phone bar's title: React refused the object (error #31) and the route was blank for every viewer. Each of these now resolves the map to the viewer's language. A plain-string label or description draws exactly as before. diff --git a/.changeset/13492-chat-chart-order.md b/.changeset/13492-chat-chart-order.md deleted file mode 100644 index 8632e18882..0000000000 --- a/.changeset/13492-chat-chart-order.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@object-ui/plugin-chatbot": patch ---- - -Clause-②: no -Metadata-protocol: none - -An assistant answer now renders its text and its charts in the order the stream produced them. A chart the model drew before writing its analysis shows first, instead of below every paragraph of it, so an open-ended analysis in the assistant panel puts its chart on the first screen. `mapMessages` records where each `data-chart` part arrived among the text parts as the chart's new optional `textOffset`, and `` splits the answer at those points. A message without offsets (one a host builds itself, or the legacy string-content shape) keeps the old layout: all the text, then the charts. `content` and `charts` keep their shape; long-answer folding and record links work in every text run. diff --git a/.changeset/25685-one-react-line.md b/.changeset/25685-one-react-line.md deleted file mode 100644 index b452ceae2e..0000000000 --- a/.changeset/25685-one-react-line.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -"@object-ui/app-shell": patch -"@object-ui/auth": patch -"@object-ui/cli": patch -"@object-ui/collaboration": patch -"@object-ui/components": patch -"@object-ui/console": patch -"@object-ui/fields": patch -"@object-ui/i18n": patch -"@object-ui/layout": patch -"@object-ui/mobile": patch -"@object-ui/permissions": patch -"@object-ui/plugin-ai": patch -"@object-ui/plugin-calendar": patch -"@object-ui/plugin-charts": patch -"@object-ui/plugin-chatbot": patch -"@object-ui/plugin-dashboard": patch -"@object-ui/plugin-designer": patch -"@object-ui/plugin-detail": patch -"@object-ui/plugin-editor": patch -"@object-ui/plugin-gantt": patch -"@object-ui/plugin-kanban": patch -"@object-ui/plugin-list": patch -"@object-ui/plugin-map": patch -"@object-ui/plugin-markdown": patch -"@object-ui/plugin-report": patch -"@object-ui/plugin-timeline": patch -"@object-ui/plugin-tree": patch -"@object-ui/providers": patch -"@object-ui/react": patch ---- - -Clause-②: no -Metadata-protocol: none - -One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. diff --git a/.changeset/25685-one-zod-range.md b/.changeset/25685-one-zod-range.md deleted file mode 100644 index 40945ec5f1..0000000000 --- a/.changeset/25685-one-zod-range.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@object-ui/app-shell": patch -"@object-ui/components": patch -"@object-ui/plugin-timeline": patch -"@object-ui/types": patch ---- - -Clause-②: no -Metadata-protocol: none - -One zod range: `@object-ui/app-shell`, `@object-ui/components`, `@object-ui/types` and `@object-ui/plugin-timeline` declare `zod` as `^4.6.5`, the range the objectstack monorepo declares, so the merged lockfile resolves one zod rather than two. The console bundle already carried a single copy; what changes is the declared floor. diff --git a/.changeset/25723-workspace-root-readers.md b/.changeset/25723-workspace-root-readers.md deleted file mode 100644 index a3994dd749..0000000000 --- a/.changeset/25723-workspace-root-readers.md +++ /dev/null @@ -1,4 +0,0 @@ ---- ---- - -Tooling-only change (objectstack#25723): the scripts, gate tests and e2e specs that read `pnpm-workspace.yaml`, `pnpm-lock.yaml`, the root manifest's `pnpm` block or `turbo.json` resolve the file through `scripts/workspace-root.mjs`, which answers the same path in this repository and one level up when the tree is the objectstack monorepo's `ui/`. The two package test files touched (`@object-ui/cli`, `@object-ui/i18n`) read this repository's own workspace manifest; no published behaviour changes. diff --git a/.changeset/25727-round2-dependency-pins.md b/.changeset/25727-round2-dependency-pins.md deleted file mode 100644 index 3d35da8ac1..0000000000 --- a/.changeset/25727-round2-dependency-pins.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@object-ui/plugin-chatbot": patch -"@object-ui/auth": patch ---- - -Clause-②: no -Metadata-protocol: none - -Dependency pins the merged objectstack tree resolves to one copy: `@object-ui/plugin-chatbot` pins `@ai-sdk/react` to `4.0.121` and `ai` to `7.0.118` (the `ai` that `@ai-sdk/react` 4.0.121 itself pins, so the chat transport's types come from one `ai`), and `@object-ui/auth` pins `better-auth` to `1.7.12`. diff --git a/.changeset/25733-workspace-root-test-assumptions.md b/.changeset/25733-workspace-root-test-assumptions.md deleted file mode 100644 index 83721fc69e..0000000000 --- a/.changeset/25733-workspace-root-test-assumptions.md +++ /dev/null @@ -1,4 +0,0 @@ ---- ---- - -Tooling-only change (objectstack#25733): three tests no longer assume this tree is the pnpm workspace root. `check-doc-snippet-types` finds installed copies in the workspace root's `node_modules/.pnpm` (`virtualStorePath()` in `scripts/workspace-root.mjs`), the Console vendor-chunk tests read their standalone and merged arms off fixture layouts, and the CLI generator test runs its in-workspace case from a fixture workspace. `@object-ui/cli`'s `currentContext()` now asks `isWorkspaceRoot(cwd)`, the predicate `dev`, `serve` and `build` already use: the same expression, so no published behaviour changes. diff --git a/.changeset/25763-warm-test-imports.md b/.changeset/25763-warm-test-imports.md deleted file mode 100644 index 6efee839db..0000000000 --- a/.changeset/25763-warm-test-imports.md +++ /dev/null @@ -1,4 +0,0 @@ ---- ---- - -Test-only change: the test files that `check:test-source-alias` named now load, at module scope, the `@objectstack/*` / `@object-ui/*` specifiers they otherwise first load inside a test body, a `vi.mock` factory or after `vi.resetModules()`, so the cold transform is paid during collection instead of inside a clocked window (objectstack#25763). No published behaviour changes. diff --git a/QUICK_REFERENCE.md b/QUICK_REFERENCE.md index 5177c3b5af..c12455d267 100644 --- a/QUICK_REFERENCE.md +++ b/QUICK_REFERENCE.md @@ -125,7 +125,7 @@ release path runs the sync itself: `changeset:version` bumps every manifest and this block in the same commit, so a release can no longer leave the block a version behind (objectui#5394 — that had happened once per release, three times). -- **Version:** 18.1.0 (the version every `@object-ui/*` manifest carries — they are one +- **Version:** 18.2.0 (the version every `@object-ui/*` manifest carries — they are one `fixed` group in `.changeset/config.json`, so a release moves all of them together) - **Spec:** `@objectstack/spec` ^18.0.0-next.1 (declared by the root `package.json` and by `apps/console/package.json`) diff --git a/apps/console/CHANGELOG.md b/apps/console/CHANGELOG.md index 07e2934a5a..723fc1751d 100644 --- a/apps/console/CHANGELOG.md +++ b/apps/console/CHANGELOG.md @@ -1,5 +1,29 @@ # @object-ui/console +## 18.2.0 + +### Patch Changes + +- d0c9650: Clause-②: no + Metadata-protocol: none + + fix(console, app-shell): four routed console pages and the Studio datasource page speak the session's language instead of hard-coded English (objectui#13460). + + - Developer → API Console, Developer → Public Forms, Developer → Integrations & APIs and System → AI Approvals read their copy from new `console.developer.apiConsole.*`, `console.developer.publicForms.*`, `console.developer.integrations.*` and `console.system.aiApprovals.*` keys, translated in all ten locale packs. Sentences with an inline bold action or `` key are one translated string each, so every language places the element itself. + - Setup → Datasources reads its copy from new `engine.datasource.*` rows in the Studio table (en-US and zh-CN, the `engine.*` carve-out). The driver config form's enum option values are unchanged. + - English renders exactly as before, with or without an i18n provider. Code samples, verbs, paths, example slugs and server messages stay as written. +- 5399bbc: Clause-②: no + Metadata-protocol: none + + More console surfaces now speak the session's language (objectui#13460, second pass). System → Audit Log, Developer → Flow Runs, the Integrations page's "Connect an AI agent" card, the share-link dialog and the public `/s/:token` share landing drew their copy as English literals. They now read `console.system.auditLog.*`, `console.developer.flowRuns.*`, `console.developer.agentConnect.*`, `shareDialog.*` and `sharedRecord.*`, each with an `en` inline default and a row in all ten packs. A sentence that names another control names it by that control's translated label, and a sentence with inline code is one translated string. Error states are kept as codes and worded at render. + + The dev-only surfaces moved under `dev/`: `PerformanceDashboard` to `apps/console/src/dev/`, and the components package's `debug/` folder (the `DebugPanel`) to `dev/`. The package's exports are unchanged. +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- @object-ui/sdui-parser@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/apps/console/package.json b/apps/console/package.json index b530396447..cfb79d4630 100644 --- a/apps/console/package.json +++ b/apps/console/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/console", - "version": "18.1.0", + "version": "18.2.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 4671479e51..c30ca40de5 100644 --- a/packages/app-shell/CHANGELOG.md +++ b/packages/app-shell/CHANGELOG.md @@ -1,5 +1,154 @@ # @object-ui/app-shell — Changelog +## 18.2.0 + +### Minor Changes + +- 0063f22: Clause-②: no + Metadata-protocol: none + + **Breaking:** test-only reset helpers are no longer on the package roots (objectui#13453): `resetRuntimeConfigForTesting` (`@object-ui/app-shell`), `resetInflightGetsForTesting` (`@object-ui/types`) and `__clearRecordEditableCache` (`@object-ui/plugin-detail`). They reset module state between tests and had no other reader. Declared `minor` per the version-alignment policy (a changeset never declares `major`). +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- ebd20ec: fix(app-shell): readable option labels for unlabeled datasource enum selects (objectui#13353) + + Setup → Datasources: a driver-config JSON Schema `enum` select showed each raw value (`off`, `safe`) as its option text. The driver-config schema declares no per-option label, so each option's text is now built from its raw value with Studio's `humanizeKey`, the helper `SchemaForm`'s enum selects already use (`off` → "Off", `read_only` → "Read Only", `fullSync` → "Full Sync"). The value the form saves stays the raw enum member. + + Clause-②: no + Metadata-protocol: none +- 320ec35: Clause-②: no + Metadata-protocol: narrowed + + An invalid `gantt` block is refused instead of drawn (objectui#13459). `ObjectGantt` used to log `Invalid gantt configuration` and render the block anyway, so a block with a misspelt or missing key still drew a chart. It now renders a refusal that names each `GanttConfigSchema` issue by its path in the block (`gantt.endDateField: …`); a valid block and the flat ObjectView / ListView spelling render as before. + + The Studio designers' spec derivations (`dashboard`, `package`, `page`, `report` and `view` schemas in `metadata-admin`) no longer catch a failed derivation and return `undefined`, which rendered a designer form silently missing fields. Their only input is the bundled spec, so a failure is a build-time fact that fails their tests; at runtime it reaches the route's error boundary. +- d0c9650: Clause-②: no + Metadata-protocol: none + + fix(console, app-shell): four routed console pages and the Studio datasource page speak the session's language instead of hard-coded English (objectui#13460). + + - Developer → API Console, Developer → Public Forms, Developer → Integrations & APIs and System → AI Approvals read their copy from new `console.developer.apiConsole.*`, `console.developer.publicForms.*`, `console.developer.integrations.*` and `console.system.aiApprovals.*` keys, translated in all ten locale packs. Sentences with an inline bold action or `` key are one translated string each, so every language places the element itself. + - Setup → Datasources reads its copy from new `engine.datasource.*` rows in the Studio table (en-US and zh-CN, the `engine.*` carve-out). The driver config form's enum option values are unchanged. + - English renders exactly as before, with or without an i18n provider. Code samples, verbs, paths, example slugs and server messages stay as written. +- 4aa90ba: Icon-only buttons in the console now have an accessible name, and the clickable `div` / `span` controls the console drew are real buttons a keyboard can reach (objectui#13461). + + Clause-②: no + Metadata-protocol: none + + - Named, in every shipped language: the AI canvas's close button, the secret value's show / hide toggle in the action result dialog, the permission set editor's remove-policy and remove-tab buttons, the metadata history page's refresh button, the sort builder's remove button, the `file-upload` renderer's remove buttons, the file, master-detail, password and QR-code field widgets' icon buttons, the chat composer's send button, the chat's scroll-to-latest button, and the top bar's avatar button ("Account menu"). + - The organization picker's "Manage" link is its own button beside the card, not a clickable `span` inside the card's button, so it can be tabbed to and is no longer read as part of the card's name. + - A flow canvas branch label selects its edge with Enter or Space when the edge is selectable. + - `tree-view`: the expand toggle is named ("Expand" / "Collapse") and reports `aria-expanded`; a node is a button only when the host passes `onNodeClick`, instead of a clickable row wrapped round the toggle. + - `file-upload`: the dropzone opens the file picker with Enter or Space. + - The app preview's read-only navigation list no longer carries a click handler that could never fire. + - New pack keys: `common.expand`, `common.collapse`, `user.accountMenu`, `actions.resultDialog.showValue` / `hideValue`, `fields.masterDetail.view` / `remove`, `fields.password.show` / `hide`, `fields.qrCode.copy` / `show` / `hide`, `chatbot.sendMessage`, `chatbot.scrollToBottom`. +- 23e912e: Clause-②: no + Metadata-protocol: none + + A report whose `label` or `description` is an inline locale map (`{ en, 'zh-CN' }`) now opens, and shows both in the viewer's language (objectui#13470). + + `@objectstack/spec` types both keys as `I18nLabel`, so the map is valid metadata and is served unchanged, but the report page drew it straight into its heading, the line under it and the report's crumb in the app bar: React refused the object (error #31) and the page was blank for every viewer. A drill on the whole report titled its drawer `[object Object]`. Each of these now resolves the map to the viewer's language with the reader the app's report index already names a report with. A plain-string label or description draws exactly as before. +- 5698ec7: Clause-②: no + Metadata-protocol: none + + A permission set's Assigned users list now names the position a person holds the set through by the position's label, in the viewer's language, instead of its machine name (objectui#13477). + + The "via position" chip drew the `position` column of the holder's `sys_user_position` row, the machine name, although the section had already listed the registry's position definitions to find the positions that distribute the set, and that list carries each definition's label as the server localizes it. The chip now reads the label from that list and keeps the name on its tooltip, as the access explainer's position chips do. A position whose definition has no label still reads by its name. +- b41ed7f: Clause-②: yes + Metadata-protocol: none + + The metadata designer's translation preview draws the `positions` and `permissions` groups that `@objectstack/spec` now declares on a translation bundle, each with its own card, count and sample, and counts them in the coverage bar. Before, the preview did not type-check against that spec, and a bundle that translated only position or permission-set labels read as empty. + + `isSpecTranslationData` recognises a served translation document by those two groups as well, so a bundle that translates only positions or permission sets is namespaced under `app` like any other spec bundle instead of being returned untransformed. +- db9af10: Clause-②: no + Metadata-protocol: none + + A page whose `label` or `description` is an inline locale map (`{ en, 'zh-CN' }`) now opens, and shows both in the viewer's language (objectui#13488). A dashboard whose `label` is one no longer blanks its route through the app bar. + + `@objectstack/spec` types a page's `label` and `description`, and a dashboard's `label`, as `I18nLabel`, so the map is valid metadata and is served unchanged. The page drew it straight into its own heading, the line under it, and the description a titled `page:header` draws, and the app bar drew a page's or a dashboard's label as the phone bar's title: React refused the object (error #31) and the route was blank for every viewer. Each of these now resolves the map to the viewer's language. A plain-string label or description draws exactly as before. +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- cd70b78: Clause-②: no + Metadata-protocol: none + + One zod range: `@object-ui/app-shell`, `@object-ui/components`, `@object-ui/types` and `@object-ui/plugin-timeline` declare `zod` as `^4.6.5`, the range the objectstack monorepo declares, so the merged lockfile resolves one zod rather than two. The console bundle already carried a single copy; what changes is the declared floor. +- Updated dependencies [d12c615] +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [d0c9650] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [85b6a48] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [ee7e3a6] +- Updated dependencies [84ce59c] +- Updated dependencies [b41ed7f] +- Updated dependencies [db9af10] +- Updated dependencies [76c560e] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] +- Updated dependencies [be64bf6] + - @object-ui/plugin-chatbot@18.2.0 + - @object-ui/plugin-detail@18.2.0 + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + - @object-ui/data-objectstack@18.2.0 + - @object-ui/plugin-grid@18.2.0 + - @object-ui/components@18.2.0 + - @object-ui/collaboration@18.2.0 + - @object-ui/react@18.2.0 + - @object-ui/plugin-list@18.2.0 + - @object-ui/plugin-view@18.2.0 + - @object-ui/i18n@18.2.0 + - @object-ui/fields@18.2.0 + - @object-ui/auth@18.2.0 + - @object-ui/permissions@18.2.0 + - @object-ui/plugin-calendar@18.2.0 + - @object-ui/plugin-charts@18.2.0 + - @object-ui/plugin-dashboard@18.2.0 + - @object-ui/plugin-designer@18.2.0 + - @object-ui/plugin-editor@18.2.0 + - @object-ui/plugin-form@18.2.0 + - @object-ui/plugin-kanban@18.2.0 + - @object-ui/plugin-report@18.2.0 + - @object-ui/providers@18.2.0 + - @object-ui/layout@18.2.0 + ## 18.1.0 ### Minor Changes diff --git a/packages/app-shell/package.json b/packages/app-shell/package.json index 8eb01f7b10..92db571008 100644 --- a/packages/app-shell/package.json +++ b/packages/app-shell/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/app-shell", - "version": "18.1.0", + "version": "18.2.0", "type": "module", "sideEffects": [ "./dist/index.js", diff --git a/packages/auth/CHANGELOG.md b/packages/auth/CHANGELOG.md index 8998441d00..571a7c1ed0 100644 --- a/packages/auth/CHANGELOG.md +++ b/packages/auth/CHANGELOG.md @@ -1,5 +1,29 @@ # @object-ui/auth +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` now reads `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- be64bf6: Clause-②: no + Metadata-protocol: none + + Dependency pins the merged objectstack tree resolves to one copy: `@object-ui/plugin-chatbot` pins `@ai-sdk/react` to `4.0.121` and `ai` to `7.0.118` (the `ai` that `@ai-sdk/react` 4.0.121 itself pins, so the chat transport's types come from one `ai`), and `@object-ui/auth` pins `better-auth` to `1.7.12`. + ## 18.1.0 ### Minor Changes diff --git a/packages/auth/package.json b/packages/auth/package.json index 2e2b262c45..a50a71c8a7 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/auth", - "version": "18.1.0", + "version": "18.2.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 651777ee5d..d60a4b4ab7 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,51 @@ # @object-ui/cli +## 18.2.0 + +### Minor Changes + +- 610d9ef: The raw-HTML `html` node type is retired (objectui#13449). Its renderer wrote the authored `html` string into the page through `dangerouslySetInnerHTML` with no sanitiser, so anyone who could write metadata could put script-bearing markup in front of every viewer — a `kind: 'html'` page included, which compiled an `html` tag carrying an `html` attribute with no diagnostic. `@objectstack/spec` declares no `html` component, so it is removed rather than sanitised, at once, with no deprecation alias. This is breaking for a page that still names it; it is marked `minor` under this repository's version policy. + + - **SDUI node `html`**, also registered as `ui:html`. FROM: `@object-ui/components` registered both keys. TO: neither is registered. A JSON node that still names it draws the unknown-component panel, a `kind: 'html'` page that writes the tag fails to compile with `forbidden-tag` and `unknown-component`, and `objectui check` no longer counts either key among the known component types. + - **Public block `html`** in `PUBLIC_BLOCKS` (`@object-ui/core`). FROM: listed as the curated tier's escape hatch, so `getPublicConfigs()` and the published `sdui.manifest.json` carried it. TO: not listed, so neither names it. + - **Schema `HtmlSchema`** in `@object-ui/types`: the TypeScript interface from the package entry, with its `DataDisplaySchema` member and its `SchemaRegistry` row (so `ComponentType` no longer offers `'html'`), and the zod arm from `@object-ui/types/zod`. FROM: exported, and a `type: "html"` node validated against the arm. TO: there is no such export, so importing it fails to compile. `DataDisplaySchema` keeps a refusal arm for the literal, which is not exported, so `objectui validate` refuses a `type: "html"` node BY NAME at `type`, and the message names the remedy. + + The `html` FIELD type (`HtmlFieldMetadata`, drawn by `field:html`) is a different layer and stays: its value displays through the sanitised fields path. + + Fix for a page that still names it: in place of `{ "type": "html", "html": "…" }`, declare rich text a user edits as an `html` or `richtext` field on the object, whose value renders sanitised, and write authored page copy as a `kind: 'html'` page. + + Clause-②: no (narrowing) + Metadata-protocol: narrowed + +### Patch Changes + +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [85b6a48] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [db9af10] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/types@18.2.0 + - @object-ui/components@18.2.0 + - @object-ui/react@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 4be59f52e5..db00083708 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/cli", - "version": "18.1.0", + "version": "18.2.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 3f518bce3a..818ff04622 100644 --- a/packages/collaboration/CHANGELOG.md +++ b/packages/collaboration/CHANGELOG.md @@ -1,5 +1,43 @@ # @object-ui/collaboration +## 18.2.0 + +### Minor Changes + +- 0063f22: Clause-②: no + Metadata-protocol: none + + **Breaking:** removed `LiveCursors` and `LiveCursorsProps`, which nothing rendered (objectui#13453). Declared `minor` per the version-alignment policy (a changeset never declares `major`). `usePresence` still reports each user's cursor, so a host can draw them itself. +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` now reads `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [d0c9650] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [6f629a7] +- Updated dependencies [b41ed7f] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/types@18.2.0 + - @object-ui/i18n@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/packages/collaboration/package.json b/packages/collaboration/package.json index 8ff344fa05..098124951b 100644 --- a/packages/collaboration/package.json +++ b/packages/collaboration/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/collaboration", - "version": "18.1.0", + "version": "18.2.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 8d8e21cac3..d261c33829 100644 --- a/packages/components/CHANGELOG.md +++ b/packages/components/CHANGELOG.md @@ -1,5 +1,86 @@ # @object-ui/components +## 18.2.0 + +### Minor Changes + +- 610d9ef: The raw-HTML `html` node type is retired (objectui#13449). Its renderer wrote the authored `html` string into the page through `dangerouslySetInnerHTML` with no sanitiser, so anyone who could write metadata could put script-bearing markup in front of every viewer — a `kind: 'html'` page included, which compiled an `html` tag carrying an `html` attribute with no diagnostic. `@objectstack/spec` declares no `html` component, so it is removed rather than sanitised, at once, with no deprecation alias. This is breaking for a page that still names it; it is marked `minor` under this repository's version policy. + + - **SDUI node `html`**, also registered as `ui:html`. FROM: `@object-ui/components` registered both keys. TO: neither is registered. A JSON node that still names it draws the unknown-component panel, a `kind: 'html'` page that writes the tag fails to compile with `forbidden-tag` and `unknown-component`, and `objectui check` no longer counts either key among the known component types. + - **Public block `html`** in `PUBLIC_BLOCKS` (`@object-ui/core`). FROM: listed as the curated tier's escape hatch, so `getPublicConfigs()` and the published `sdui.manifest.json` carried it. TO: not listed, so neither names it. + - **Schema `HtmlSchema`** in `@object-ui/types`: the TypeScript interface from the package entry, with its `DataDisplaySchema` member and its `SchemaRegistry` row (so `ComponentType` no longer offers `'html'`), and the zod arm from `@object-ui/types/zod`. FROM: exported, and a `type: "html"` node validated against the arm. TO: there is no such export, so importing it fails to compile. `DataDisplaySchema` keeps a refusal arm for the literal, which is not exported, so `objectui validate` refuses a `type: "html"` node BY NAME at `type`, and the message names the remedy. + + The `html` FIELD type (`HtmlFieldMetadata`, drawn by `field:html`) is a different layer and stays: its value displays through the sanitised fields path. + + Fix for a page that still names it: in place of `{ "type": "html", "html": "…" }`, declare rich text a user edits as an `html` or `richtext` field on the object, whose value renders sanitised, and write authored page copy as a `kind: 'html'` page. + + Clause-②: no (narrowing) + Metadata-protocol: narrowed +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 5399bbc: Clause-②: no + Metadata-protocol: none + + More console surfaces now speak the session's language (objectui#13460, second pass). System → Audit Log, Developer → Flow Runs, the Integrations page's "Connect an AI agent" card, the share-link dialog and the public `/s/:token` share landing drew their copy as English literals. They now read `console.system.auditLog.*`, `console.developer.flowRuns.*`, `console.developer.agentConnect.*`, `shareDialog.*` and `sharedRecord.*`, each with an `en` inline default and a row in all ten packs. A sentence that names another control names it by that control's translated label, and a sentence with inline code is one translated string. Error states are kept as codes and worded at render. + + The dev-only surfaces moved under `dev/`: `PerformanceDashboard` to `apps/console/src/dev/`, and the components package's `debug/` folder (the `DebugPanel`) to `dev/`. The package's exports are unchanged. +- 4aa90ba: Icon-only buttons in the console now have an accessible name, and the clickable `div` / `span` controls the console drew are real buttons a keyboard can reach (objectui#13461). + + Clause-②: no + Metadata-protocol: none + + - Named, in every shipped language: the AI canvas's close button, the secret value's show / hide toggle in the action result dialog, the permission set editor's remove-policy and remove-tab buttons, the metadata history page's refresh button, the sort builder's remove button, the `file-upload` renderer's remove buttons, the file, master-detail, password and QR-code field widgets' icon buttons, the chat composer's send button, the chat's scroll-to-latest button, and the top bar's avatar button ("Account menu"). + - The organization picker's "Manage" link is its own button beside the card, not a clickable `span` inside the card's button, so it can be tabbed to and is no longer read as part of the card's name. + - A flow canvas branch label selects its edge with Enter or Space when the edge is selectable. + - `tree-view`: the expand toggle is named ("Expand" / "Collapse") and reports `aria-expanded`; a node is a button only when the host passes `onNodeClick`, instead of a clickable row wrapped round the toggle. + - `file-upload`: the dropzone opens the file picker with Enter or Space. + - The app preview's read-only navigation list no longer carries a click handler that could never fire. + - New pack keys: `common.expand`, `common.collapse`, `user.accountMenu`, `actions.resultDialog.showValue` / `hideValue`, `fields.masterDetail.view` / `remove`, `fields.password.show` / `hide`, `fields.qrCode.copy` / `show` / `hide`, `chatbot.sendMessage`, `chatbot.scrollToBottom`. +- db9af10: Clause-②: no + Metadata-protocol: none + + A page whose `label` or `description` is an inline locale map (`{ en, 'zh-CN' }`) now opens, and shows both in the viewer's language (objectui#13488). A dashboard whose `label` is one no longer blanks its route through the app bar. + + `@objectstack/spec` types a page's `label` and `description`, and a dashboard's `label`, as `I18nLabel`, so the map is valid metadata and is served unchanged. The page drew it straight into its own heading, the line under it, and the description a titled `page:header` draws, and the app bar drew a page's or a dashboard's label as the phone bar's title: React refused the object (error #31) and the route was blank for every viewer. Each of these now resolves the map to the viewer's language. A plain-string label or description draws exactly as before. +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- cd70b78: Clause-②: no + Metadata-protocol: none + + One zod range: `@object-ui/app-shell`, `@object-ui/components`, `@object-ui/types` and `@object-ui/plugin-timeline` declare `zod` as `^4.6.5`, the range the objectstack monorepo declares, so the merged lockfile resolves one zod rather than two. The console bundle already carried a single copy; what changes is the declared floor. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [d0c9650] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [85b6a48] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [84ce59c] +- Updated dependencies [b41ed7f] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + - @object-ui/react@18.2.0 + - @object-ui/i18n@18.2.0 + - @object-ui/react-runtime@18.2.0 + - @object-ui/sdui-parser@18.2.0 + ## 18.1.0 ### Minor Changes diff --git a/packages/components/package.json b/packages/components/package.json index 76ac1f5305..62092ff80a 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/components", - "version": "18.1.0", + "version": "18.2.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 b7e7b66d9f..92059f95eb 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,85 @@ # @object-ui/core +## 18.2.0 + +### Minor Changes + +- ee4f1ef: Clause-②: yes + Metadata-protocol: none + + A list bulk action keeps each failed record's id and the server's reason, and a bulk run refreshes the bound list once instead of once per row (objectui#13442). + + A 100-row bulk update took about 100 s in the console for about 19 s of server work. `bulkUpdate` read only the server's `succeeded` count, so a partial failure reached the result dialog and the error CSV as one `batch_0: N records failed` entry with no record id or reason. Apps that needed the reason ran `batchSize: 1`, and on that per-row path every write refetched and re-rendered the whole list. + + - `DataSource.bulkUpdate` / `bulkDelete` (`@object-ui/types`) may now resolve to a `BulkWriteResult`, `{ succeeded, errors: [{ id, error }] }`, as well as to a plain count. Both new types are exported. An adapter that returns a number keeps working unchanged. A caller that reads the result must now handle both shapes; the bulk executor does. + - `ObjectStackAdapter.bulkUpdate` / `bulkDelete` (`@object-ui/data-objectstack`) resolve to a `BulkWriteResult` built from the `results[].errors[]` that `updateMany` / `deleteMany` already answer, and the per-id fallback loop keeps each row's reason instead of discarding it. Breaking for direct callers: these two methods used to resolve to a number. Code that calls them directly and reads the result as a count must read `.succeeded`. + - `executeBulkBatch` (`@object-ui/core`) reports each failure the bulk call names under its own id and reason. Only failures it does not name still fold into one `batch_${offset}` entry. So the result dialog, the error CSV and Retry work per record whatever the `batchSize`, and Undo skips the failed rows. + - New optional `DataSource.batchMutationEvents(work)`: runs `work` with `onMutation` events held, then delivers them when it settles, one per resource and mutation type. `ObjectStackAdapter` implements it. `useBulkExecutor` (`@object-ui/plugin-grid`) runs each bulk run and each undo inside it, so ListView, ObjectView, kanban, calendar and the console's invalidation bridge refetch once per run, not once per row. The executor's `dataSource` face gains the matching optional member. +- 610d9ef: The raw-HTML `html` node type is retired (objectui#13449). Its renderer wrote the authored `html` string into the page through `dangerouslySetInnerHTML` with no sanitiser, so anyone who could write metadata could put script-bearing markup in front of every viewer — a `kind: 'html'` page included, which compiled an `html` tag carrying an `html` attribute with no diagnostic. `@objectstack/spec` declares no `html` component, so it is removed rather than sanitised, at once, with no deprecation alias. This is breaking for a page that still names it; it is marked `minor` under this repository's version policy. + + - **SDUI node `html`**, also registered as `ui:html`. FROM: `@object-ui/components` registered both keys. TO: neither is registered. A JSON node that still names it draws the unknown-component panel, a `kind: 'html'` page that writes the tag fails to compile with `forbidden-tag` and `unknown-component`, and `objectui check` no longer counts either key among the known component types. + - **Public block `html`** in `PUBLIC_BLOCKS` (`@object-ui/core`). FROM: listed as the curated tier's escape hatch, so `getPublicConfigs()` and the published `sdui.manifest.json` carried it. TO: not listed, so neither names it. + - **Schema `HtmlSchema`** in `@object-ui/types`: the TypeScript interface from the package entry, with its `DataDisplaySchema` member and its `SchemaRegistry` row (so `ComponentType` no longer offers `'html'`), and the zod arm from `@object-ui/types/zod`. FROM: exported, and a `type: "html"` node validated against the arm. TO: there is no such export, so importing it fails to compile. `DataDisplaySchema` keeps a refusal arm for the literal, which is not exported, so `objectui validate` refuses a `type: "html"` node BY NAME at `type`, and the message names the remedy. + + The `html` FIELD type (`HtmlFieldMetadata`, drawn by `field:html`) is a different layer and stays: its value displays through the sanitised fields path. + + Fix for a page that still names it: in place of `{ "type": "html", "html": "…" }`, declare rich text a user edits as an `html` or `richtext` field on the object, whose value renders sanitised, and write authored page copy as a `kind: 'html'` page. + + Clause-②: no (narrowing) + Metadata-protocol: narrowed +- 899f381: **BREAKING:** the `module` widget source is retired. `WidgetRegistry` no longer loads a widget's code from a URL at runtime (objectui#13450). + + `RuntimeWidgetSource` had a `module` member, `{ type: 'module', url, exportName? }`, and `WidgetRegistry.load()` resolved it with a dynamic `import()` built through the Function constructor so that bundlers could not see it. That is the runtime dynamic import AGENTS.md commandment #6 forbids ("No `eval()` / runtime dynamic imports to load components"), and it also needs `unsafe-eval` under a strict Content Security Policy. The member, its `WidgetSourceModule` interface and the loader arm are removed. `RuntimeWidgetSource` is now `WidgetSourceInline | WidgetSourceRegistry`. + + An old manifest is refused loudly, not skipped. In TypeScript, `type: 'module'` no longer type-checks, and importing `WidgetSourceModule` is `TS2305`. A manifest that reaches `WidgetRegistry.load()` untyped (plain JavaScript, a cast, or an older `@object-ui/types`) is rejected before anything is fetched. The rejection names the retired `module` source and both replacements, `load()` emits `widget:error`, and `loadAll()` reports the error for that widget. Any other unknown source type is rejected the same way, and the message lists the supported types. + + Migration, FROM → TO: + + - FROM `source: { type: 'module', url: '/widgets/chart.js', exportName: 'Chart' }` + - TO `import { Chart } from './widgets/chart';` and then `source: { type: 'inline', component: Chart }`. The component is imported at build time, so the bundler sees it. + - OR register the component once with the component registry (`ComponentRegistry.register('chart', Chart)`) and declare `source: { type: 'registry', registryKey: 'chart' }`. + + One-line fix: replace each `{ type: 'module', url }` with `{ type: 'inline', component }`, where `component` is imported at build time. + + Remote widgets as a product capability would be a new contract (a signed manifest and an allow-listed origin, decided in `@objectstack/spec`). This release does not add one. + + Clause-②: no (narrowing) + Metadata-protocol: narrowed +- 0063f22: Clause-②: no + Metadata-protocol: none + + **Breaking:** removed exports with no reader (objectui#13453). Declared `minor` per the version-alignment policy (a changeset never declares `major`). + + - The fluent schema builders from `builder/schema-builder`: `form`, `button`, `input`, `card`, `grid`, `flex` and the `FormBuilder`, `ButtonBuilder`, `InputBuilder`, `CardBuilder`, `GridBuilder`, `FlexBuilder` classes. Write the schema object literally instead. + - The three protocol bridges, `DndProtocol`, `KeyboardProtocol` and `SharingProtocol`: `resolveDndConfig`, `createDragItemProps`, `createDropZoneProps`, `resolveDragConstraints`, `resolveKeyboardConfig`, `parseShortcutKey`, `matchesShortcut`, `createFocusTrapConfig`, `resolveSharingConfig`, `resolveEmbedConfig`, `generateEmbedCode`, `validateSharingConfig` and their types (`DndConfig`, `DragItem`, `DropZone`, `KeyboardShortcut`, `FocusTrapConfig`, `KeyboardNavigationConfig` and the rest). The spec vocabulary they bridged was already deleted upstream; no replacement. + - The test-only helpers `resetColumnIdentityWarnings`, `resetRetiredSortSpellingReports`, `resetDashboardFilterWarnings` and `resetReferenceKeyWarnings` are no longer on the package root. They reset module state for tests and had no other reader. +- 84ce59c: Clause-②: no + Metadata-protocol: narrowed + + An action's `confirmText` or `successMessage` with no `{{ }}` hole is now shown exactly as written (objectui#13476). + + objectui#13367 kept one transitional reading: a sentence with no `{{ }}` hole still had its `${…}` tokens filled, `${record.*}` in the confirm dialog and `${result.*}` in the success toast. That reading is gone. A `${…}` token in either text is now plain text, the same as in any other copy with no hole. To put a value into the sentence, write a `{{ }}` hole: `Archive {{ record.name }}?`, `Invitation sent to {{ result.email }}`. + + No in-tree producer writes the holeless `${…}` shape. objectstack's measurement of its examples, `platform-objects`, `plugin-approvals` and HotCRM found none. objectstack's lint already warns on the shape and refuses every other `${…}` token in this copy (objectstack#25702). The paired objectstack card turns the warning into an error once its objectui pin carries this change. + + `outcomeMessages` entries are unchanged: they still fill `${result.*}`. `errorMessage` is unchanged: it is shown as written. + +### Patch Changes + +- 96c3649: Clause-②: no + Metadata-protocol: none + + The record overlay opened from a list, gallery, map or timeline view now mounts `RecordDetailPanel` from `@object-ui/plugin-detail`, as the grid, tree, kanban, calendar and gantt overlays already did, in place of a raw dump of the record's keys and values. A record previewed from any view reads with the object's declared labels and typed values, and without its `hidden` fields. The panel is read-only there, as on the grid and the tree; a row with no object name or id keeps the plain reading. + + Drifted copies folded: `GANTT_CONFIG_SPELLING` is exported once from `@object-ui/core` (used by `ListView` and `ObjectView`); `isSameAuthoredFilter` is exported from `@object-ui/react` and `ObjectGrid` drops its copy; `@object-ui/core` exports `isPlainObject` (a non-null, non-array object) for private copies to switch to when their file is next touched. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [cd70b78] + - @object-ui/types@18.2.0 + ## 18.1.0 ### Minor Changes diff --git a/packages/core/package.json b/packages/core/package.json index 48aee52b0b..5309e0485b 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/core", - "version": "18.1.0", + "version": "18.2.0", "type": "module", "sideEffects": false, "license": "MIT", diff --git a/packages/create-plugin/CHANGELOG.md b/packages/create-plugin/CHANGELOG.md index 4d7bd98db1..b88bb8f338 100644 --- a/packages/create-plugin/CHANGELOG.md +++ b/packages/create-plugin/CHANGELOG.md @@ -1,5 +1,21 @@ # @object-ui/create-plugin +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** a generated plugin's `package.json` now declares `react` and `react-dom` peers as `^19.0.0` (was `^18.0.0 || ^19.0.0`), matching the React 19-only peer range every `@object-ui/*` package now declares. Plugins already generated are unchanged; their authors may narrow the range the same way. Declared `minor` per the version-alignment policy (objectui#13465). + +### Patch Changes + +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). + ## 18.1.0 ## 18.0.0 diff --git a/packages/create-plugin/package.json b/packages/create-plugin/package.json index 03db814dc3..de343d1b64 100644 --- a/packages/create-plugin/package.json +++ b/packages/create-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/create-plugin", - "version": "18.1.0", + "version": "18.2.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 c4eae00d19..56cddc6c65 100644 --- a/packages/data-objectstack/CHANGELOG.md +++ b/packages/data-objectstack/CHANGELOG.md @@ -1,5 +1,39 @@ # @object-ui/data-objectstack +## 18.2.0 + +### Minor Changes + +- ee4f1ef: Clause-②: yes + Metadata-protocol: none + + A list bulk action keeps each failed record's id and the server's reason, and a bulk run refreshes the bound list once instead of once per row (objectui#13442). + + A 100-row bulk update took about 100 s in the console for about 19 s of server work. `bulkUpdate` read only the server's `succeeded` count, so a partial failure reached the result dialog and the error CSV as one `batch_0: N records failed` entry with no record id or reason. Apps that needed the reason ran `batchSize: 1`, and on that per-row path every write refetched and re-rendered the whole list. + + - `DataSource.bulkUpdate` / `bulkDelete` (`@object-ui/types`) may now resolve to a `BulkWriteResult`, `{ succeeded, errors: [{ id, error }] }`, as well as to a plain count. Both new types are exported. An adapter that returns a number keeps working unchanged. A caller that reads the result must now handle both shapes; the bulk executor does. + - `ObjectStackAdapter.bulkUpdate` / `bulkDelete` (`@object-ui/data-objectstack`) resolve to a `BulkWriteResult` built from the `results[].errors[]` that `updateMany` / `deleteMany` already answer, and the per-id fallback loop keeps each row's reason instead of discarding it. Breaking for direct callers: these two methods used to resolve to a number. Code that calls them directly and reads the result as a count must read `.succeeded`. + - `executeBulkBatch` (`@object-ui/core`) reports each failure the bulk call names under its own id and reason. Only failures it does not name still fold into one `batch_${offset}` entry. So the result dialog, the error CSV and Retry work per record whatever the `batchSize`, and Undo skips the failed rows. + - New optional `DataSource.batchMutationEvents(work)`: runs `work` with `onMutation` events held, then delivers them when it settles, one per resource and mutation type. `ObjectStackAdapter` implements it. `useBulkExecutor` (`@object-ui/plugin-grid`) runs each bulk run and each undo inside it, so ListView, ObjectView, kanban, calendar and the console's invalidation bridge refetch once per run, not once per row. The executor's `dataSource` face gains the matching optional member. + +### Patch Changes + +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [84ce59c] +- Updated dependencies [cd70b78] + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + ## 18.1.0 ### Minor Changes diff --git a/packages/data-objectstack/package.json b/packages/data-objectstack/package.json index c54aad8756..6e8d8fcba8 100644 --- a/packages/data-objectstack/package.json +++ b/packages/data-objectstack/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/data-objectstack", - "version": "18.1.0", + "version": "18.2.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 92c4ab68af..dcadf63d64 100644 --- a/packages/fields/CHANGELOG.md +++ b/packages/fields/CHANGELOG.md @@ -1,5 +1,62 @@ # @object-ui/fields +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 4aa90ba: Icon-only buttons in the console now have an accessible name, and the clickable `div` / `span` controls the console drew are real buttons a keyboard can reach (objectui#13461). + + Clause-②: no + Metadata-protocol: none + + - Named, in every shipped language: the AI canvas's close button, the secret value's show / hide toggle in the action result dialog, the permission set editor's remove-policy and remove-tab buttons, the metadata history page's refresh button, the sort builder's remove button, the `file-upload` renderer's remove buttons, the file, master-detail, password and QR-code field widgets' icon buttons, the chat composer's send button, the chat's scroll-to-latest button, and the top bar's avatar button ("Account menu"). + - The organization picker's "Manage" link is its own button beside the card, not a clickable `span` inside the card's button, so it can be tabbed to and is no longer read as part of the card's name. + - A flow canvas branch label selects its edge with Enter or Space when the edge is selectable. + - `tree-view`: the expand toggle is named ("Expand" / "Collapse") and reports `aria-expanded`; a node is a button only when the host passes `onNodeClick`, instead of a clickable row wrapped round the toggle. + - `file-upload`: the dropzone opens the file picker with Enter or Space. + - The app preview's read-only navigation list no longer carries a click handler that could never fire. + - New pack keys: `common.expand`, `common.collapse`, `user.accountMenu`, `actions.resultDialog.showValue` / `hideValue`, `fields.masterDetail.view` / `remove`, `fields.password.show` / `hide`, `fields.qrCode.copy` / `show` / `hide`, `chatbot.sendMessage`, `chatbot.scrollToBottom`. +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [d0c9650] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [85b6a48] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [84ce59c] +- Updated dependencies [b41ed7f] +- Updated dependencies [db9af10] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + - @object-ui/components@18.2.0 + - @object-ui/react@18.2.0 + - @object-ui/i18n@18.2.0 + - @object-ui/permissions@18.2.0 + - @object-ui/providers@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/packages/fields/package.json b/packages/fields/package.json index ed6e7b87d4..2f55a795f8 100644 --- a/packages/fields/package.json +++ b/packages/fields/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/fields", - "version": "18.1.0", + "version": "18.2.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 5ed3cda286..3ad5594765 100644 --- a/packages/i18n/CHANGELOG.md +++ b/packages/i18n/CHANGELOG.md @@ -1,5 +1,60 @@ # @object-ui/i18n +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` now reads `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- d0c9650: Clause-②: no + Metadata-protocol: none + + fix(console, app-shell): four routed console pages and the Studio datasource page speak the session's language instead of hard-coded English (objectui#13460). + + - Developer → API Console, Developer → Public Forms, Developer → Integrations & APIs and System → AI Approvals read their copy from new `console.developer.apiConsole.*`, `console.developer.publicForms.*`, `console.developer.integrations.*` and `console.system.aiApprovals.*` keys, translated in all ten locale packs. Sentences with an inline bold action or `` key are one translated string each, so every language places the element itself. + - Setup → Datasources reads its copy from new `engine.datasource.*` rows in the Studio table (en-US and zh-CN, the `engine.*` carve-out). The driver config form's enum option values are unchanged. + - English renders exactly as before, with or without an i18n provider. Code samples, verbs, paths, example slugs and server messages stay as written. +- 5399bbc: Clause-②: no + Metadata-protocol: none + + More console surfaces now speak the session's language (objectui#13460, second pass). System → Audit Log, Developer → Flow Runs, the Integrations page's "Connect an AI agent" card, the share-link dialog and the public `/s/:token` share landing drew their copy as English literals. They now read `console.system.auditLog.*`, `console.developer.flowRuns.*`, `console.developer.agentConnect.*`, `shareDialog.*` and `sharedRecord.*`, each with an `en` inline default and a row in all ten packs. A sentence that names another control names it by that control's translated label, and a sentence with inline code is one translated string. Error states are kept as codes and worded at render. + + The dev-only surfaces moved under `dev/`: `PerformanceDashboard` to `apps/console/src/dev/`, and the components package's `debug/` folder (the `DebugPanel`) to `dev/`. The package's exports are unchanged. +- 4aa90ba: Icon-only buttons in the console now have an accessible name, and the clickable `div` / `span` controls the console drew are real buttons a keyboard can reach (objectui#13461). + + Clause-②: no + Metadata-protocol: none + + - Named, in every shipped language: the AI canvas's close button, the secret value's show / hide toggle in the action result dialog, the permission set editor's remove-policy and remove-tab buttons, the metadata history page's refresh button, the sort builder's remove button, the `file-upload` renderer's remove buttons, the file, master-detail, password and QR-code field widgets' icon buttons, the chat composer's send button, the chat's scroll-to-latest button, and the top bar's avatar button ("Account menu"). + - The organization picker's "Manage" link is its own button beside the card, not a clickable `span` inside the card's button, so it can be tabbed to and is no longer read as part of the card's name. + - A flow canvas branch label selects its edge with Enter or Space when the edge is selectable. + - `tree-view`: the expand toggle is named ("Expand" / "Collapse") and reports `aria-expanded`; a node is a button only when the host passes `onNodeClick`, instead of a clickable row wrapped round the toggle. + - `file-upload`: the dropzone opens the file picker with Enter or Space. + - The app preview's read-only navigation list no longer carries a click handler that could never fire. + - New pack keys: `common.expand`, `common.collapse`, `user.accountMenu`, `actions.resultDialog.showValue` / `hideValue`, `fields.masterDetail.view` / `remove`, `fields.password.show` / `hide`, `fields.qrCode.copy` / `show` / `hide`, `chatbot.sendMessage`, `chatbot.scrollToBottom`. +- b41ed7f: Clause-②: yes + Metadata-protocol: none + + The metadata designer's translation preview draws the `positions` and `permissions` groups that `@objectstack/spec` now declares on a translation bundle, each with its own card, count and sample, and counts them in the coverage bar. Before, the preview did not type-check against that spec, and a bundle that translated only position or permission-set labels read as empty. + + `isSpecTranslationData` recognises a served translation document by those two groups as well, so a bundle that translates only positions or permission sets is namespaced under `app` like any other spec bundle instead of being returned untransformed. +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [84ce59c] + - @object-ui/core@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 430e9db991..9a78fca46f 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/i18n", - "version": "18.1.0", + "version": "18.2.0", "type": "module", "sideEffects": false, "license": "MIT", diff --git a/packages/layout/CHANGELOG.md b/packages/layout/CHANGELOG.md index 84da850d96..36729c0145 100644 --- a/packages/layout/CHANGELOG.md +++ b/packages/layout/CHANGELOG.md @@ -1,5 +1,42 @@ # @object-ui/layout +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [85b6a48] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [84ce59c] +- Updated dependencies [db9af10] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + - @object-ui/components@18.2.0 + - @object-ui/react@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/packages/layout/package.json b/packages/layout/package.json index 8db0364269..05737ab280 100644 --- a/packages/layout/package.json +++ b/packages/layout/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/layout", - "version": "18.1.0", + "version": "18.2.0", "type": "module", "sideEffects": [ "./dist/index.js", diff --git a/packages/mobile/CHANGELOG.md b/packages/mobile/CHANGELOG.md index fa8b9857be..e7e92f5272 100644 --- a/packages/mobile/CHANGELOG.md +++ b/packages/mobile/CHANGELOG.md @@ -1,5 +1,32 @@ # @object-ui/mobile +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` now reads `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [cd70b78] + - @object-ui/types@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/packages/mobile/package.json b/packages/mobile/package.json index 9b0e7663c4..614dc65298 100644 --- a/packages/mobile/package.json +++ b/packages/mobile/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/mobile", - "version": "18.1.0", + "version": "18.2.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 ef63deaa7e..023fb06dde 100644 --- a/packages/permissions/CHANGELOG.md +++ b/packages/permissions/CHANGELOG.md @@ -1,5 +1,32 @@ # @object-ui/permissions +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` now reads `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [cd70b78] + - @object-ui/types@18.2.0 + ## 18.1.0 ### Minor Changes diff --git a/packages/permissions/package.json b/packages/permissions/package.json index e41325dd23..c71055ef29 100644 --- a/packages/permissions/package.json +++ b/packages/permissions/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/permissions", - "version": "18.1.0", + "version": "18.2.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 bfe8fdf5d8..0f66e18fc9 100644 --- a/packages/plugin-ai/CHANGELOG.md +++ b/packages/plugin-ai/CHANGELOG.md @@ -1,5 +1,46 @@ # @object-ui/plugin-ai +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [d0c9650] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [84ce59c] +- Updated dependencies [b41ed7f] +- Updated dependencies [db9af10] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + - @object-ui/components@18.2.0 + - @object-ui/i18n@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/packages/plugin-ai/package.json b/packages/plugin-ai/package.json index ede40b408c..394a3f52ad 100644 --- a/packages/plugin-ai/package.json +++ b/packages/plugin-ai/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/plugin-ai", - "version": "18.1.0", + "version": "18.2.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 1414485b44..f9b8d402da 100644 --- a/packages/plugin-calendar/CHANGELOG.md +++ b/packages/plugin-calendar/CHANGELOG.md @@ -1,5 +1,60 @@ # @object-ui/plugin-calendar +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- ee7e3a6: Clause-②: no + Metadata-protocol: none + + Fix calendar events reading `[object Object]` when `calendar.titleField` names a lookup field. `ObjectCalendar` now passes the author's `titleField` to the unified record display-name resolver instead of stringifying the value itself, so an expanded lookup shows the referenced record's display name, a raw id string still shows as it did, and an expanded reference with no usable name falls through to the object-level title ladder. +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [d0c9650] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [85b6a48] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [84ce59c] +- Updated dependencies [b41ed7f] +- Updated dependencies [db9af10] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/plugin-detail@18.2.0 + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + - @object-ui/components@18.2.0 + - @object-ui/react@18.2.0 + - @object-ui/i18n@18.2.0 + - @object-ui/mobile@18.2.0 + - @object-ui/permissions@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/packages/plugin-calendar/package.json b/packages/plugin-calendar/package.json index b5678fb3d6..74cfabe8ba 100644 --- a/packages/plugin-calendar/package.json +++ b/packages/plugin-calendar/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/plugin-calendar", - "version": "18.1.0", + "version": "18.2.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 f7bf84368b..ddc92fb954 100644 --- a/packages/plugin-charts/CHANGELOG.md +++ b/packages/plugin-charts/CHANGELOG.md @@ -1,5 +1,50 @@ # @object-ui/plugin-charts +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [d0c9650] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [85b6a48] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [84ce59c] +- Updated dependencies [b41ed7f] +- Updated dependencies [db9af10] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + - @object-ui/components@18.2.0 + - @object-ui/react@18.2.0 + - @object-ui/i18n@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/packages/plugin-charts/package.json b/packages/plugin-charts/package.json index 371fc680ed..e5bef197fc 100644 --- a/packages/plugin-charts/package.json +++ b/packages/plugin-charts/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/plugin-charts", - "version": "18.1.0", + "version": "18.2.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 602c83db51..4131848ba4 100644 --- a/packages/plugin-chatbot/CHANGELOG.md +++ b/packages/plugin-chatbot/CHANGELOG.md @@ -1,5 +1,74 @@ # @object-ui/plugin-chatbot +## 18.2.0 + +### Minor Changes + +- d12c615: Clause-②: yes + Metadata-protocol: none + + The AI build chat's plan card now says how the build will land. When `propose_blueprint`'s `planCard` carries `posture` (objectstack-ai/cloud#2924 ruling A), its `line` (e.g. "This first build goes live at once; later changes are saved as drafts for you to publish") is drawn as the last item of the assumptions list. The exported `ProposedPlanCard` type gains the optional `posture: { mode: 'publish' | 'draft'; line: string }`. A plan card without the key draws as before (objectui#12724). +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 4aa90ba: Icon-only buttons in the console now have an accessible name, and the clickable `div` / `span` controls the console drew are real buttons a keyboard can reach (objectui#13461). + + Clause-②: no + Metadata-protocol: none + + - Named, in every shipped language: the AI canvas's close button, the secret value's show / hide toggle in the action result dialog, the permission set editor's remove-policy and remove-tab buttons, the metadata history page's refresh button, the sort builder's remove button, the `file-upload` renderer's remove buttons, the file, master-detail, password and QR-code field widgets' icon buttons, the chat composer's send button, the chat's scroll-to-latest button, and the top bar's avatar button ("Account menu"). + - The organization picker's "Manage" link is its own button beside the card, not a clickable `span` inside the card's button, so it can be tabbed to and is no longer read as part of the card's name. + - A flow canvas branch label selects its edge with Enter or Space when the edge is selectable. + - `tree-view`: the expand toggle is named ("Expand" / "Collapse") and reports `aria-expanded`; a node is a button only when the host passes `onNodeClick`, instead of a clickable row wrapped round the toggle. + - `file-upload`: the dropzone opens the file picker with Enter or Space. + - The app preview's read-only navigation list no longer carries a click handler that could never fire. + - New pack keys: `common.expand`, `common.collapse`, `user.accountMenu`, `actions.resultDialog.showValue` / `hideValue`, `fields.masterDetail.view` / `remove`, `fields.password.show` / `hide`, `fields.qrCode.copy` / `show` / `hide`, `chatbot.sendMessage`, `chatbot.scrollToBottom`. +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- 76c560e: Clause-②: no + Metadata-protocol: none + + An assistant answer now renders its text and its charts in the order the stream produced them. A chart the model drew before writing its analysis shows first, instead of below every paragraph of it, so an open-ended analysis in the assistant panel puts its chart on the first screen. `mapMessages` records where each `data-chart` part arrived among the text parts as the chart's new optional `textOffset`, and `` splits the answer at those points. A message without offsets (one a host builds itself, or the legacy string-content shape) keeps the old layout: all the text, then the charts. `content` and `charts` keep their shape; long-answer folding and record links work in every text run. +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- be64bf6: Clause-②: no + Metadata-protocol: none + + Dependency pins the merged objectstack tree resolves to one copy: `@object-ui/plugin-chatbot` pins `@ai-sdk/react` to `4.0.121` and `ai` to `7.0.118` (the `ai` that `@ai-sdk/react` 4.0.121 itself pins, so the chat transport's types come from one `ai`), and `@object-ui/auth` pins `better-auth` to `1.7.12`. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [d0c9650] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [85b6a48] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [84ce59c] +- Updated dependencies [b41ed7f] +- Updated dependencies [db9af10] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + - @object-ui/components@18.2.0 + - @object-ui/react@18.2.0 + - @object-ui/i18n@18.2.0 + ## 18.1.0 ### Minor Changes diff --git a/packages/plugin-chatbot/package.json b/packages/plugin-chatbot/package.json index 6811f5c961..1de7ce5622 100644 --- a/packages/plugin-chatbot/package.json +++ b/packages/plugin-chatbot/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/plugin-chatbot", - "version": "18.1.0", + "version": "18.2.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 85af8775d1..a6f8179bc4 100644 --- a/packages/plugin-dashboard/CHANGELOG.md +++ b/packages/plugin-dashboard/CHANGELOG.md @@ -1,5 +1,54 @@ # @object-ui/plugin-dashboard +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [d0c9650] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [85b6a48] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [84ce59c] +- Updated dependencies [b41ed7f] +- Updated dependencies [db9af10] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + - @object-ui/components@18.2.0 + - @object-ui/react@18.2.0 + - @object-ui/i18n@18.2.0 + - @object-ui/fields@18.2.0 + - @object-ui/permissions@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/packages/plugin-dashboard/package.json b/packages/plugin-dashboard/package.json index 17c4d7192e..0832c0079b 100644 --- a/packages/plugin-dashboard/package.json +++ b/packages/plugin-dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/plugin-dashboard", - "version": "18.1.0", + "version": "18.2.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 be7a576aa6..409ae91442 100644 --- a/packages/plugin-designer/CHANGELOG.md +++ b/packages/plugin-designer/CHANGELOG.md @@ -1,5 +1,57 @@ # @object-ui/plugin-designer +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [d0c9650] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [85b6a48] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [84ce59c] +- Updated dependencies [b41ed7f] +- Updated dependencies [db9af10] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + - @object-ui/data-objectstack@18.2.0 + - @object-ui/plugin-grid@18.2.0 + - @object-ui/components@18.2.0 + - @object-ui/react@18.2.0 + - @object-ui/i18n@18.2.0 + - @object-ui/plugin-form@18.2.0 + - @object-ui/layout@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/packages/plugin-designer/package.json b/packages/plugin-designer/package.json index 0af4fe57aa..be4a3c009e 100644 --- a/packages/plugin-designer/package.json +++ b/packages/plugin-designer/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/plugin-designer", - "version": "18.1.0", + "version": "18.2.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 716736f810..e6dba2e3b2 100644 --- a/packages/plugin-detail/CHANGELOG.md +++ b/packages/plugin-detail/CHANGELOG.md @@ -1,5 +1,62 @@ # @object-ui/plugin-detail +## 18.2.0 + +### Minor Changes + +- 46c56ee: Clause-②: no + Metadata-protocol: semantic + + A record section whose fields are all empty, and that the page keeps (`hideEmpty: false`), now draws its heading plus one "Show N empty fields" row in read-only mode, the same fold a partly-filled section uses, instead of a placeholder row per field. Edit mode still draws every field as an editable row, and a print page still prints every row. When every section of a detail body is empty and at least two are kept, the body draws one "Show N empty fields" row for all of them (objectui#13386, objectui#12618). +- 0063f22: Clause-②: no + Metadata-protocol: none + + **Breaking:** test-only reset helpers are no longer on the package roots (objectui#13453): `resetRuntimeConfigForTesting` (`@object-ui/app-shell`), `resetInflightGetsForTesting` (`@object-ui/types`) and `__clearRecordEditableCache` (`@object-ui/plugin-detail`). They reset module state between tests and had no other reader. Declared `minor` per the version-alignment policy (a changeset never declares `major`). +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [d0c9650] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [85b6a48] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [84ce59c] +- Updated dependencies [b41ed7f] +- Updated dependencies [db9af10] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + - @object-ui/components@18.2.0 + - @object-ui/react@18.2.0 + - @object-ui/i18n@18.2.0 + - @object-ui/fields@18.2.0 + - @object-ui/permissions@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/packages/plugin-detail/package.json b/packages/plugin-detail/package.json index 2faa8a2b20..1417b09558 100644 --- a/packages/plugin-detail/package.json +++ b/packages/plugin-detail/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/plugin-detail", - "version": "18.1.0", + "version": "18.2.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 b9891aa2f1..58ba8848e5 100644 --- a/packages/plugin-editor/CHANGELOG.md +++ b/packages/plugin-editor/CHANGELOG.md @@ -1,5 +1,42 @@ # @object-ui/plugin-editor +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [6f629a7] +- Updated dependencies [84ce59c] +- Updated dependencies [db9af10] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + - @object-ui/components@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/packages/plugin-editor/package.json b/packages/plugin-editor/package.json index 64998e6fac..daef4e381f 100644 --- a/packages/plugin-editor/package.json +++ b/packages/plugin-editor/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/plugin-editor", - "version": "18.1.0", + "version": "18.2.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 9a705ec145..3dc6746f8a 100644 --- a/packages/plugin-form/CHANGELOG.md +++ b/packages/plugin-form/CHANGELOG.md @@ -1,5 +1,50 @@ # @object-ui/plugin-form +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [d0c9650] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [85b6a48] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [84ce59c] +- Updated dependencies [b41ed7f] +- Updated dependencies [db9af10] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + - @object-ui/components@18.2.0 + - @object-ui/react@18.2.0 + - @object-ui/i18n@18.2.0 + - @object-ui/fields@18.2.0 + - @object-ui/permissions@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/packages/plugin-form/package.json b/packages/plugin-form/package.json index fe76c1a083..ee5995b2c1 100644 --- a/packages/plugin-form/package.json +++ b/packages/plugin-form/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/plugin-form", - "version": "18.1.0", + "version": "18.2.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 1995378f03..c23d1ee86f 100644 --- a/packages/plugin-gantt/CHANGELOG.md +++ b/packages/plugin-gantt/CHANGELOG.md @@ -1,5 +1,62 @@ # @object-ui/plugin-gantt +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 320ec35: Clause-②: no + Metadata-protocol: narrowed + + An invalid `gantt` block is refused instead of drawn (objectui#13459). `ObjectGantt` used to log `Invalid gantt configuration` and render the block anyway, so a block with a misspelt or missing key still drew a chart. It now renders a refusal that names each `GanttConfigSchema` issue by its path in the block (`gantt.endDateField: …`); a valid block and the flat ObjectView / ListView spelling render as before. + + The Studio designers' spec derivations (`dashboard`, `package`, `page`, `report` and `view` schemas in `metadata-admin`) no longer catch a failed derivation and return `undefined`, which rendered a designer form silently missing fields. Their only input is the bundled spec, so a failure is a build-time fact that fails their tests; at runtime it reaches the route's error boundary. +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [d0c9650] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [85b6a48] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [84ce59c] +- Updated dependencies [b41ed7f] +- Updated dependencies [db9af10] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/plugin-detail@18.2.0 + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + - @object-ui/components@18.2.0 + - @object-ui/react@18.2.0 + - @object-ui/i18n@18.2.0 + - @object-ui/fields@18.2.0 + - @object-ui/permissions@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/packages/plugin-gantt/package.json b/packages/plugin-gantt/package.json index 089122de11..2998659506 100644 --- a/packages/plugin-gantt/package.json +++ b/packages/plugin-gantt/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/plugin-gantt", - "version": "18.1.0", + "version": "18.2.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 ded5a511e8..ec79314801 100644 --- a/packages/plugin-grid/CHANGELOG.md +++ b/packages/plugin-grid/CHANGELOG.md @@ -1,5 +1,71 @@ # @object-ui/plugin-grid +## 18.2.0 + +### Minor Changes + +- ee4f1ef: Clause-②: yes + Metadata-protocol: none + + A list bulk action keeps each failed record's id and the server's reason, and a bulk run refreshes the bound list once instead of once per row (objectui#13442). + + A 100-row bulk update took about 100 s in the console for about 19 s of server work. `bulkUpdate` read only the server's `succeeded` count, so a partial failure reached the result dialog and the error CSV as one `batch_0: N records failed` entry with no record id or reason. Apps that needed the reason ran `batchSize: 1`, and on that per-row path every write refetched and re-rendered the whole list. + + - `DataSource.bulkUpdate` / `bulkDelete` (`@object-ui/types`) may now resolve to a `BulkWriteResult`, `{ succeeded, errors: [{ id, error }] }`, as well as to a plain count. Both new types are exported. An adapter that returns a number keeps working unchanged. A caller that reads the result must now handle both shapes; the bulk executor does. + - `ObjectStackAdapter.bulkUpdate` / `bulkDelete` (`@object-ui/data-objectstack`) resolve to a `BulkWriteResult` built from the `results[].errors[]` that `updateMany` / `deleteMany` already answer, and the per-id fallback loop keeps each row's reason instead of discarding it. Breaking for direct callers: these two methods used to resolve to a number. Code that calls them directly and reads the result as a count must read `.succeeded`. + - `executeBulkBatch` (`@object-ui/core`) reports each failure the bulk call names under its own id and reason. Only failures it does not name still fold into one `batch_${offset}` entry. So the result dialog, the error CSV and Retry work per record whatever the `batchSize`, and Undo skips the failed rows. + - New optional `DataSource.batchMutationEvents(work)`: runs `work` with `onMutation` events held, then delivers them when it settles, one per resource and mutation type. `ObjectStackAdapter` implements it. `useBulkExecutor` (`@object-ui/plugin-grid`) runs each bulk run and each undo inside it, so ListView, ObjectView, kanban, calendar and the console's invalidation bridge refetch once per run, not once per row. The executor's `dataSource` face gains the matching optional member. +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 96c3649: Clause-②: no + Metadata-protocol: none + + The record overlay opened from a list, gallery, map or timeline view now mounts `RecordDetailPanel` from `@object-ui/plugin-detail`, as the grid, tree, kanban, calendar and gantt overlays already did, in place of a raw dump of the record's keys and values. A record previewed from any view reads with the object's declared labels and typed values, and without its `hidden` fields. The panel is read-only there, as on the grid and the tree; a row with no object name or id keeps the plain reading. + + Drifted copies folded: `GANTT_CONFIG_SPELLING` is exported once from `@object-ui/core` (used by `ListView` and `ObjectView`); `isSameAuthoredFilter` is exported from `@object-ui/react` and `ObjectGrid` drops its copy; `@object-ui/core` exports `isPlainObject` (a non-null, non-array object) for private copies to switch to when their file is next touched. +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [d0c9650] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [85b6a48] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [84ce59c] +- Updated dependencies [b41ed7f] +- Updated dependencies [db9af10] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/plugin-detail@18.2.0 + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + - @object-ui/components@18.2.0 + - @object-ui/react@18.2.0 + - @object-ui/i18n@18.2.0 + - @object-ui/fields@18.2.0 + - @object-ui/mobile@18.2.0 + - @object-ui/permissions@18.2.0 + ## 18.1.0 ### Minor Changes diff --git a/packages/plugin-grid/package.json b/packages/plugin-grid/package.json index db2ec3cdcd..5d7c777f24 100644 --- a/packages/plugin-grid/package.json +++ b/packages/plugin-grid/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/plugin-grid", - "version": "18.1.0", + "version": "18.2.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 a373acb972..6d0e8f5902 100644 --- a/packages/plugin-kanban/CHANGELOG.md +++ b/packages/plugin-kanban/CHANGELOG.md @@ -1,5 +1,56 @@ # @object-ui/plugin-kanban +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [d0c9650] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [85b6a48] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [84ce59c] +- Updated dependencies [b41ed7f] +- Updated dependencies [db9af10] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/plugin-detail@18.2.0 + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + - @object-ui/components@18.2.0 + - @object-ui/react@18.2.0 + - @object-ui/i18n@18.2.0 + - @object-ui/fields@18.2.0 + - @object-ui/permissions@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/packages/plugin-kanban/package.json b/packages/plugin-kanban/package.json index 9cc71260a5..6415c7b6c9 100644 --- a/packages/plugin-kanban/package.json +++ b/packages/plugin-kanban/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/plugin-kanban", - "version": "18.1.0", + "version": "18.2.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 44b492983d..edc710fb2d 100644 --- a/packages/plugin-list/CHANGELOG.md +++ b/packages/plugin-list/CHANGELOG.md @@ -1,5 +1,64 @@ # @object-ui/plugin-list +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 96c3649: Clause-②: no + Metadata-protocol: none + + The record overlay opened from a list, gallery, map or timeline view now mounts `RecordDetailPanel` from `@object-ui/plugin-detail`, as the grid, tree, kanban, calendar and gantt overlays already did, in place of a raw dump of the record's keys and values. A record previewed from any view reads with the object's declared labels and typed values, and without its `hidden` fields. The panel is read-only there, as on the grid and the tree; a row with no object name or id keeps the plain reading. + + Drifted copies folded: `GANTT_CONFIG_SPELLING` is exported once from `@object-ui/core` (used by `ListView` and `ObjectView`); `isSameAuthoredFilter` is exported from `@object-ui/react` and `ObjectGrid` drops its copy; `@object-ui/core` exports `isPlainObject` (a non-null, non-array object) for private copies to switch to when their file is next touched. +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [d0c9650] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [85b6a48] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [84ce59c] +- Updated dependencies [b41ed7f] +- Updated dependencies [db9af10] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/plugin-detail@18.2.0 + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + - @object-ui/components@18.2.0 + - @object-ui/react@18.2.0 + - @object-ui/i18n@18.2.0 + - @object-ui/fields@18.2.0 + - @object-ui/mobile@18.2.0 + - @object-ui/permissions@18.2.0 + ## 18.1.0 ### Minor Changes diff --git a/packages/plugin-list/package.json b/packages/plugin-list/package.json index ac44e41590..842ac78436 100644 --- a/packages/plugin-list/package.json +++ b/packages/plugin-list/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/plugin-list", - "version": "18.1.0", + "version": "18.2.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 e7f87d3170..6f8415f4a2 100644 --- a/packages/plugin-map/CHANGELOG.md +++ b/packages/plugin-map/CHANGELOG.md @@ -1,5 +1,56 @@ # @object-ui/plugin-map +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 96c3649: Clause-②: no + Metadata-protocol: none + + The record overlay opened from a list, gallery, map or timeline view now mounts `RecordDetailPanel` from `@object-ui/plugin-detail`, as the grid, tree, kanban, calendar and gantt overlays already did, in place of a raw dump of the record's keys and values. A record previewed from any view reads with the object's declared labels and typed values, and without its `hidden` fields. The panel is read-only there, as on the grid and the tree; a row with no object name or id keeps the plain reading. + + Drifted copies folded: `GANTT_CONFIG_SPELLING` is exported once from `@object-ui/core` (used by `ListView` and `ObjectView`); `isSameAuthoredFilter` is exported from `@object-ui/react` and `ObjectGrid` drops its copy; `@object-ui/core` exports `isPlainObject` (a non-null, non-array object) for private copies to switch to when their file is next touched. +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [85b6a48] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [84ce59c] +- Updated dependencies [db9af10] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/plugin-detail@18.2.0 + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + - @object-ui/components@18.2.0 + - @object-ui/react@18.2.0 + - @object-ui/permissions@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/packages/plugin-map/package.json b/packages/plugin-map/package.json index 4f19cc13e4..6d09e3e8dc 100644 --- a/packages/plugin-map/package.json +++ b/packages/plugin-map/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/plugin-map", - "version": "18.1.0", + "version": "18.2.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 4f3c42487c..dda01ed2f9 100644 --- a/packages/plugin-markdown/CHANGELOG.md +++ b/packages/plugin-markdown/CHANGELOG.md @@ -1,5 +1,42 @@ # @object-ui/plugin-markdown +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [6f629a7] +- Updated dependencies [84ce59c] +- Updated dependencies [db9af10] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + - @object-ui/components@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/packages/plugin-markdown/package.json b/packages/plugin-markdown/package.json index 3f7c192644..4797827f4f 100644 --- a/packages/plugin-markdown/package.json +++ b/packages/plugin-markdown/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/plugin-markdown", - "version": "18.1.0", + "version": "18.2.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 dc90f68ed0..eb237848aa 100644 --- a/packages/plugin-report/CHANGELOG.md +++ b/packages/plugin-report/CHANGELOG.md @@ -1,5 +1,52 @@ # @object-ui/plugin-report +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [d0c9650] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [85b6a48] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [84ce59c] +- Updated dependencies [b41ed7f] +- Updated dependencies [db9af10] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + - @object-ui/components@18.2.0 + - @object-ui/react@18.2.0 + - @object-ui/i18n@18.2.0 + - @object-ui/fields@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/packages/plugin-report/package.json b/packages/plugin-report/package.json index a8ae7905d4..b8eda07a9a 100644 --- a/packages/plugin-report/package.json +++ b/packages/plugin-report/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/plugin-report", - "version": "18.1.0", + "version": "18.2.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 bf6c981aa1..3cecb03f59 100644 --- a/packages/plugin-timeline/CHANGELOG.md +++ b/packages/plugin-timeline/CHANGELOG.md @@ -1,5 +1,66 @@ # @object-ui/plugin-timeline +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 96c3649: Clause-②: no + Metadata-protocol: none + + The record overlay opened from a list, gallery, map or timeline view now mounts `RecordDetailPanel` from `@object-ui/plugin-detail`, as the grid, tree, kanban, calendar and gantt overlays already did, in place of a raw dump of the record's keys and values. A record previewed from any view reads with the object's declared labels and typed values, and without its `hidden` fields. The panel is read-only there, as on the grid and the tree; a row with no object name or id keeps the plain reading. + + Drifted copies folded: `GANTT_CONFIG_SPELLING` is exported once from `@object-ui/core` (used by `ListView` and `ObjectView`); `isSameAuthoredFilter` is exported from `@object-ui/react` and `ObjectGrid` drops its copy; `@object-ui/core` exports `isPlainObject` (a non-null, non-array object) for private copies to switch to when their file is next touched. +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- cd70b78: Clause-②: no + Metadata-protocol: none + + One zod range: `@object-ui/app-shell`, `@object-ui/components`, `@object-ui/types` and `@object-ui/plugin-timeline` declare `zod` as `^4.6.5`, the range the objectstack monorepo declares, so the merged lockfile resolves one zod rather than two. The console bundle already carried a single copy; what changes is the declared floor. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [d0c9650] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [85b6a48] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [84ce59c] +- Updated dependencies [b41ed7f] +- Updated dependencies [db9af10] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/plugin-detail@18.2.0 + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + - @object-ui/components@18.2.0 + - @object-ui/react@18.2.0 + - @object-ui/i18n@18.2.0 + - @object-ui/mobile@18.2.0 + - @object-ui/permissions@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/packages/plugin-timeline/package.json b/packages/plugin-timeline/package.json index 0107d34c46..47bcac225d 100644 --- a/packages/plugin-timeline/package.json +++ b/packages/plugin-timeline/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/plugin-timeline", - "version": "18.1.0", + "version": "18.2.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 b1bfb9c47b..a51101c130 100644 --- a/packages/plugin-tree/CHANGELOG.md +++ b/packages/plugin-tree/CHANGELOG.md @@ -1,5 +1,56 @@ # @object-ui/plugin-tree +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [d0c9650] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [85b6a48] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [84ce59c] +- Updated dependencies [b41ed7f] +- Updated dependencies [db9af10] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/plugin-detail@18.2.0 + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + - @object-ui/components@18.2.0 + - @object-ui/react@18.2.0 + - @object-ui/i18n@18.2.0 + - @object-ui/fields@18.2.0 + - @object-ui/permissions@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/packages/plugin-tree/package.json b/packages/plugin-tree/package.json index 9c778b84e5..77460a7921 100644 --- a/packages/plugin-tree/package.json +++ b/packages/plugin-tree/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/plugin-tree", - "version": "18.1.0", + "version": "18.2.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 fa04f9e67b..d7b5b4ad47 100644 --- a/packages/plugin-view/CHANGELOG.md +++ b/packages/plugin-view/CHANGELOG.md @@ -1,5 +1,58 @@ # @object-ui/plugin-view +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 96c3649: Clause-②: no + Metadata-protocol: none + + The record overlay opened from a list, gallery, map or timeline view now mounts `RecordDetailPanel` from `@object-ui/plugin-detail`, as the grid, tree, kanban, calendar and gantt overlays already did, in place of a raw dump of the record's keys and values. A record previewed from any view reads with the object's declared labels and typed values, and without its `hidden` fields. The panel is read-only there, as on the grid and the tree; a row with no object name or id keeps the plain reading. + + Drifted copies folded: `GANTT_CONFIG_SPELLING` is exported once from `@object-ui/core` (used by `ListView` and `ObjectView`); `isSameAuthoredFilter` is exported from `@object-ui/react` and `ObjectGrid` drops its copy; `@object-ui/core` exports `isPlainObject` (a non-null, non-array object) for private copies to switch to when their file is next touched. +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [d0c9650] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [85b6a48] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [6f629a7] +- Updated dependencies [84ce59c] +- Updated dependencies [b41ed7f] +- Updated dependencies [db9af10] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + - @object-ui/plugin-grid@18.2.0 + - @object-ui/components@18.2.0 + - @object-ui/react@18.2.0 + - @object-ui/i18n@18.2.0 + - @object-ui/permissions@18.2.0 + - @object-ui/plugin-form@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/packages/plugin-view/package.json b/packages/plugin-view/package.json index bb01a8b928..e778babcd1 100644 --- a/packages/plugin-view/package.json +++ b/packages/plugin-view/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/plugin-view", - "version": "18.1.0", + "version": "18.2.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 c2f70938f1..08f3021648 100644 --- a/packages/providers/CHANGELOG.md +++ b/packages/providers/CHANGELOG.md @@ -1,5 +1,32 @@ # @object-ui/providers — Changelog +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [cd70b78] + - @object-ui/types@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/packages/providers/package.json b/packages/providers/package.json index 1e013d4cdc..6934cb97e9 100644 --- a/packages/providers/package.json +++ b/packages/providers/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/providers", - "version": "18.1.0", + "version": "18.2.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 04616a7e4f..4baaf05258 100644 --- a/packages/react-runtime/CHANGELOG.md +++ b/packages/react-runtime/CHANGELOG.md @@ -1,5 +1,14 @@ # @object-ui/react-runtime +## 18.2.0 + +### Minor Changes + +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` now reads `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + ## 18.1.0 ## 18.0.0 diff --git a/packages/react-runtime/package.json b/packages/react-runtime/package.json index ba20d90e9c..18ed116e48 100644 --- a/packages/react-runtime/package.json +++ b/packages/react-runtime/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/react-runtime", - "version": "18.1.0", + "version": "18.2.0", "type": "module", "sideEffects": false, "license": "MIT", diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index 4416c338de..5db1de7b5d 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -1,5 +1,55 @@ # @object-ui/react +## 18.2.0 + +### Minor Changes + +- 0063f22: Clause-②: no + Metadata-protocol: none + + **Breaking:** removed four hooks with no reader (objectui#13453): `useFocusTrap`, `useFocusReturn` and `useRovingFocus` (from `useFocusManagement`), `usePageTransition`, and `useSchemaPersistence` with `createLocalStorageAdapter`, plus their option and result types. Declared `minor` per the version-alignment policy (a changeset never declares `major`). No replacement inside ObjectUI; a host that used one should keep its own copy. +- 6f629a7: Clause-②: no + Metadata-protocol: none + + **Breaking:** React 18 is no longer a supported host. `peerDependencies.react` and `peerDependencies.react-dom` now read `^19.0.0` (was `^18.0.0 || ^19.0.0`). Nothing in this repository ever installed or tested React 18, so the old range was a promise without a test behind it; a React 18 host now gets a peer-dependency warning or refusal at install time instead of an untested runtime. Declared `minor` per the version-alignment policy (a changeset never declares `major`). Upgrade the host to React 19 (objectui#13465). + +### Patch Changes + +- 96c3649: Clause-②: no + Metadata-protocol: none + + The record overlay opened from a list, gallery, map or timeline view now mounts `RecordDetailPanel` from `@object-ui/plugin-detail`, as the grid, tree, kanban, calendar and gantt overlays already did, in place of a raw dump of the record's keys and values. A record previewed from any view reads with the object's declared labels and typed values, and without its `hidden` fields. The panel is read-only there, as on the grid and the tree; a row with no object name or id keeps the plain reading. + + Drifted copies folded: `GANTT_CONFIG_SPELLING` is exported once from `@object-ui/core` (used by `ListView` and `ObjectView`); `isSameAuthoredFilter` is exported from `@object-ui/react` and `ObjectGrid` drops its copy; `@object-ui/core` exports `isPlainObject` (a non-null, non-array object) for private copies to switch to when their file is next touched. +- 85b6a48: Clause-②: no + Metadata-protocol: none + + Every published package now declares `sideEffects`, so a host that bundles `@object-ui/*` can tree-shake the ones that do nothing on import. `@object-ui/react`, `auth`, `collaboration`, `data-objectstack`, `mobile`, `permissions` and `providers` declare `false`: no module in them registers, imports CSS or writes a global when it loads. Every `plugin-*` package except `plugin-ai`, `plugin-chatbot`, `plugin-dashboard` and `plugin-grid` declares an array naming exactly its entry forms and the modules that register components at load time, so `import '@object-ui/plugin-x'` still registers everything it did before. `plugin-ai`, `plugin-chatbot`, `plugin-dashboard`, `plugin-grid`, `cli`, `create-plugin` and `runner` declare `true` (objectui#13464). +- cd70b78: Clause-②: no + Metadata-protocol: none + + One react line: every manifest that pins `react` / `react-dom` now pins 19.3.0, and every `@types/react` / `@types/react-dom` pin is 19.3.0, matching the root `pnpm.overrides`. The objectstack monorepo's `@objectstack/client-react` requires react `^19.3.0`, and a second `@types/react` copy broke `@object-ui/plugin-view`'s declaration build in the merged tree. The CLI's scaffold (`REACT_RANGE` and the shared dev-dependency map in `scaffold-dependencies.ts`) quotes the same pins, as its anchor test requires. +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [d0c9650] +- Updated dependencies [5399bbc] +- Updated dependencies [4aa90ba] +- Updated dependencies [85b6a48] +- Updated dependencies [6f629a7] +- Updated dependencies [84ce59c] +- Updated dependencies [b41ed7f] +- Updated dependencies [cd70b78] +- Updated dependencies [cd70b78] + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + - @object-ui/data-objectstack@18.2.0 + - @object-ui/i18n@18.2.0 + ## 18.1.0 ### Minor Changes diff --git a/packages/react/package.json b/packages/react/package.json index 5c54ffead7..ba45cc150d 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/react", - "version": "18.1.0", + "version": "18.2.0", "type": "module", "license": "MIT", "description": "React bindings and SchemaRenderer component for Object UI", diff --git a/packages/sdui-parser/CHANGELOG.md b/packages/sdui-parser/CHANGELOG.md index b984bfe557..8121cdb8d8 100644 --- a/packages/sdui-parser/CHANGELOG.md +++ b/packages/sdui-parser/CHANGELOG.md @@ -1,5 +1,7 @@ # @object-ui/sdui-parser +## 18.2.0 + ## 18.1.0 ## 18.0.0 diff --git a/packages/sdui-parser/package.json b/packages/sdui-parser/package.json index b302b8538b..b8a5fbc7f8 100644 --- a/packages/sdui-parser/package.json +++ b/packages/sdui-parser/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/sdui-parser", - "version": "18.1.0", + "version": "18.2.0", "type": "module", "sideEffects": false, "license": "MIT", diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index fada6261be..4c59e36b71 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -1,5 +1,66 @@ # @object-ui/types +## 18.2.0 + +### Minor Changes + +- ee4f1ef: Clause-②: yes + Metadata-protocol: none + + A list bulk action keeps each failed record's id and the server's reason, and a bulk run refreshes the bound list once instead of once per row (objectui#13442). + + A 100-row bulk update took about 100 s in the console for about 19 s of server work. `bulkUpdate` read only the server's `succeeded` count, so a partial failure reached the result dialog and the error CSV as one `batch_0: N records failed` entry with no record id or reason. Apps that needed the reason ran `batchSize: 1`, and on that per-row path every write refetched and re-rendered the whole list. + + - `DataSource.bulkUpdate` / `bulkDelete` (`@object-ui/types`) may now resolve to a `BulkWriteResult`, `{ succeeded, errors: [{ id, error }] }`, as well as to a plain count. Both new types are exported. An adapter that returns a number keeps working unchanged. A caller that reads the result must now handle both shapes; the bulk executor does. + - `ObjectStackAdapter.bulkUpdate` / `bulkDelete` (`@object-ui/data-objectstack`) resolve to a `BulkWriteResult` built from the `results[].errors[]` that `updateMany` / `deleteMany` already answer, and the per-id fallback loop keeps each row's reason instead of discarding it. Breaking for direct callers: these two methods used to resolve to a number. Code that calls them directly and reads the result as a count must read `.succeeded`. + - `executeBulkBatch` (`@object-ui/core`) reports each failure the bulk call names under its own id and reason. Only failures it does not name still fold into one `batch_${offset}` entry. So the result dialog, the error CSV and Retry work per record whatever the `batchSize`, and Undo skips the failed rows. + - New optional `DataSource.batchMutationEvents(work)`: runs `work` with `onMutation` events held, then delivers them when it settles, one per resource and mutation type. `ObjectStackAdapter` implements it. `useBulkExecutor` (`@object-ui/plugin-grid`) runs each bulk run and each undo inside it, so ListView, ObjectView, kanban, calendar and the console's invalidation bridge refetch once per run, not once per row. The executor's `dataSource` face gains the matching optional member. +- 610d9ef: The raw-HTML `html` node type is retired (objectui#13449). Its renderer wrote the authored `html` string into the page through `dangerouslySetInnerHTML` with no sanitiser, so anyone who could write metadata could put script-bearing markup in front of every viewer — a `kind: 'html'` page included, which compiled an `html` tag carrying an `html` attribute with no diagnostic. `@objectstack/spec` declares no `html` component, so it is removed rather than sanitised, at once, with no deprecation alias. This is breaking for a page that still names it; it is marked `minor` under this repository's version policy. + + - **SDUI node `html`**, also registered as `ui:html`. FROM: `@object-ui/components` registered both keys. TO: neither is registered. A JSON node that still names it draws the unknown-component panel, a `kind: 'html'` page that writes the tag fails to compile with `forbidden-tag` and `unknown-component`, and `objectui check` no longer counts either key among the known component types. + - **Public block `html`** in `PUBLIC_BLOCKS` (`@object-ui/core`). FROM: listed as the curated tier's escape hatch, so `getPublicConfigs()` and the published `sdui.manifest.json` carried it. TO: not listed, so neither names it. + - **Schema `HtmlSchema`** in `@object-ui/types`: the TypeScript interface from the package entry, with its `DataDisplaySchema` member and its `SchemaRegistry` row (so `ComponentType` no longer offers `'html'`), and the zod arm from `@object-ui/types/zod`. FROM: exported, and a `type: "html"` node validated against the arm. TO: there is no such export, so importing it fails to compile. `DataDisplaySchema` keeps a refusal arm for the literal, which is not exported, so `objectui validate` refuses a `type: "html"` node BY NAME at `type`, and the message names the remedy. + + The `html` FIELD type (`HtmlFieldMetadata`, drawn by `field:html`) is a different layer and stays: its value displays through the sanitised fields path. + + Fix for a page that still names it: in place of `{ "type": "html", "html": "…" }`, declare rich text a user edits as an `html` or `richtext` field on the object, whose value renders sanitised, and write authored page copy as a `kind: 'html'` page. + + Clause-②: no (narrowing) + Metadata-protocol: narrowed +- 899f381: **BREAKING:** the `module` widget source is retired. `WidgetRegistry` no longer loads a widget's code from a URL at runtime (objectui#13450). + + `RuntimeWidgetSource` had a `module` member, `{ type: 'module', url, exportName? }`, and `WidgetRegistry.load()` resolved it with a dynamic `import()` built through the Function constructor so that bundlers could not see it. That is the runtime dynamic import AGENTS.md commandment #6 forbids ("No `eval()` / runtime dynamic imports to load components"), and it also needs `unsafe-eval` under a strict Content Security Policy. The member, its `WidgetSourceModule` interface and the loader arm are removed. `RuntimeWidgetSource` is now `WidgetSourceInline | WidgetSourceRegistry`. + + An old manifest is refused loudly, not skipped. In TypeScript, `type: 'module'` no longer type-checks, and importing `WidgetSourceModule` is `TS2305`. A manifest that reaches `WidgetRegistry.load()` untyped (plain JavaScript, a cast, or an older `@object-ui/types`) is rejected before anything is fetched. The rejection names the retired `module` source and both replacements, `load()` emits `widget:error`, and `loadAll()` reports the error for that widget. Any other unknown source type is rejected the same way, and the message lists the supported types. + + Migration, FROM → TO: + + - FROM `source: { type: 'module', url: '/widgets/chart.js', exportName: 'Chart' }` + - TO `import { Chart } from './widgets/chart';` and then `source: { type: 'inline', component: Chart }`. The component is imported at build time, so the bundler sees it. + - OR register the component once with the component registry (`ComponentRegistry.register('chart', Chart)`) and declare `source: { type: 'registry', registryKey: 'chart' }`. + + One-line fix: replace each `{ type: 'module', url }` with `{ type: 'inline', component }`, where `component` is imported at build time. + + Remote widgets as a product capability would be a new contract (a signed manifest and an allow-listed origin, decided in `@objectstack/spec`). This release does not add one. + + Clause-②: no (narrowing) + Metadata-protocol: narrowed +- 0063f22: Clause-②: no + Metadata-protocol: none + + **Breaking:** test-only reset helpers are no longer on the package roots (objectui#13453): `resetRuntimeConfigForTesting` (`@object-ui/app-shell`), `resetInflightGetsForTesting` (`@object-ui/types`) and `__clearRecordEditableCache` (`@object-ui/plugin-detail`). They reset module state between tests and had no other reader. Declared `minor` per the version-alignment policy (a changeset never declares `major`). + +### Patch Changes + +- 46c56ee: Clause-②: no + Metadata-protocol: semantic + + A record section whose fields are all empty, and that the page keeps (`hideEmpty: false`), now draws its heading plus one "Show N empty fields" row in read-only mode, the same fold a partly-filled section uses, instead of a placeholder row per field. Edit mode still draws every field as an editable row, and a print page still prints every row. When every section of a detail body is empty and at least two are kept, the body draws one "Show N empty fields" row for all of them (objectui#13386, objectui#12618). +- cd70b78: Clause-②: no + Metadata-protocol: none + + One zod range: `@object-ui/app-shell`, `@object-ui/components`, `@object-ui/types` and `@object-ui/plugin-timeline` declare `zod` as `^4.6.5`, the range the objectstack monorepo declares, so the merged lockfile resolves one zod rather than two. The console bundle already carried a single copy; what changes is the declared floor. + ## 18.1.0 ### Minor Changes diff --git a/packages/types/package.json b/packages/types/package.json index eaaaa376d5..6f141c2426 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@object-ui/types", - "version": "18.1.0", + "version": "18.2.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 c378f4820d..4f2ef14bb2 100644 --- a/packages/vscode-extension/CHANGELOG.md +++ b/packages/vscode-extension/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## 18.2.0 + +### Patch Changes + +- Updated dependencies [46c56ee] +- Updated dependencies [ee4f1ef] +- Updated dependencies [610d9ef] +- Updated dependencies [899f381] +- Updated dependencies [0063f22] +- Updated dependencies [0063f22] +- Updated dependencies [96c3649] +- Updated dependencies [84ce59c] +- Updated dependencies [cd70b78] + - @object-ui/types@18.2.0 + - @object-ui/core@18.2.0 + ## 18.1.0 ### Patch Changes diff --git a/packages/vscode-extension/package.json b/packages/vscode-extension/package.json index a3a6dd79c0..2aef41e704 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": "18.1.0", + "version": "18.2.0", "publisher": "objectui", "private": true, "icon": "icon.svg",