diff --git a/.changeset/15212-180-guards-fresh-single-only.md b/.changeset/pre/15212-180-guards-fresh-single-only.md similarity index 100% rename from .changeset/15212-180-guards-fresh-single-only.md rename to .changeset/pre/15212-180-guards-fresh-single-only.md diff --git a/.changeset/15212-8b0h-share-link-stamped.md b/.changeset/pre/15212-8b0h-share-link-stamped.md similarity index 100% rename from .changeset/15212-8b0h-share-link-stamped.md rename to .changeset/pre/15212-8b0h-share-link-stamped.md diff --git a/.changeset/23217-s5-auth-me-door.md b/.changeset/pre/23217-s5-auth-me-door.md similarity index 100% rename from .changeset/23217-s5-auth-me-door.md rename to .changeset/pre/23217-s5-auth-me-door.md diff --git a/.changeset/23561-duplicate-object-name-token.md b/.changeset/pre/23561-duplicate-object-name-token.md similarity index 100% rename from .changeset/23561-duplicate-object-name-token.md rename to .changeset/pre/23561-duplicate-object-name-token.md diff --git a/.changeset/23566-picklist-translation-refs.md b/.changeset/pre/23566-picklist-translation-refs.md similarity index 100% rename from .changeset/23566-picklist-translation-refs.md rename to .changeset/pre/23566-picklist-translation-refs.md diff --git a/.changeset/24289-named-hook-handler-ctx-title.md b/.changeset/pre/24289-named-hook-handler-ctx-title.md similarity index 100% rename from .changeset/24289-named-hook-handler-ctx-title.md rename to .changeset/pre/24289-named-hook-handler-ctx-title.md diff --git a/.changeset/24300-api-binding-rendered.md b/.changeset/pre/24300-api-binding-rendered.md similarity index 100% rename from .changeset/24300-api-binding-rendered.md rename to .changeset/pre/24300-api-binding-rendered.md diff --git a/.changeset/24332-nav-item-api-data-source.md b/.changeset/pre/24332-nav-item-api-data-source.md similarity index 100% rename from .changeset/24332-nav-item-api-data-source.md rename to .changeset/pre/24332-nav-item-api-data-source.md diff --git a/.changeset/24335-file-hydration-no-denial.md b/.changeset/pre/24335-file-hydration-no-denial.md similarity index 100% rename from .changeset/24335-file-hydration-no-denial.md rename to .changeset/pre/24335-file-hydration-no-denial.md diff --git a/.changeset/24340-default-row-scope-live.md b/.changeset/pre/24340-default-row-scope-live.md similarity index 100% rename from .changeset/24340-default-row-scope-live.md rename to .changeset/pre/24340-default-row-scope-live.md diff --git a/.changeset/24340-rls-object-default-scope.md b/.changeset/pre/24340-rls-object-default-scope.md similarity index 100% rename from .changeset/24340-rls-object-default-scope.md rename to .changeset/pre/24340-rls-object-default-scope.md diff --git a/.changeset/24343-8b0f-grant-on-first-membership.md b/.changeset/pre/24343-8b0f-grant-on-first-membership.md similarity index 100% rename from .changeset/24343-8b0f-grant-on-first-membership.md rename to .changeset/pre/24343-8b0f-grant-on-first-membership.md diff --git a/.changeset/24380-import-undo-controls.md b/.changeset/pre/24380-import-undo-controls.md similarity index 100% rename from .changeset/24380-import-undo-controls.md rename to .changeset/pre/24380-import-undo-controls.md diff --git a/.changeset/24380-undo-response-failures.md b/.changeset/pre/24380-undo-response-failures.md similarity index 100% rename from .changeset/24380-undo-response-failures.md rename to .changeset/pre/24380-undo-response-failures.md diff --git a/.changeset/24394-page-action-row-patch-retired.md b/.changeset/pre/24394-page-action-row-patch-retired.md similarity index 100% rename from .changeset/24394-page-action-row-patch-retired.md rename to .changeset/pre/24394-page-action-row-patch-retired.md diff --git a/.changeset/24395-draft-changes-surface.md b/.changeset/pre/24395-draft-changes-surface.md similarity index 100% rename from .changeset/24395-draft-changes-surface.md rename to .changeset/pre/24395-draft-changes-surface.md diff --git a/.changeset/24395-draft-changes-writer.md b/.changeset/pre/24395-draft-changes-writer.md similarity index 100% rename from .changeset/24395-draft-changes-writer.md rename to .changeset/pre/24395-draft-changes-writer.md diff --git a/.changeset/24395-http-save-surface.md b/.changeset/pre/24395-http-save-surface.md similarity index 100% rename from .changeset/24395-http-save-surface.md rename to .changeset/pre/24395-http-save-surface.md diff --git a/.changeset/24400-bound-action-foreign-object.md b/.changeset/pre/24400-bound-action-foreign-object.md similarity index 100% rename from .changeset/24400-bound-action-foreign-object.md rename to .changeset/pre/24400-bound-action-foreign-object.md diff --git a/.changeset/24405-mcp-connect-agent-subtitle.md b/.changeset/pre/24405-mcp-connect-agent-subtitle.md similarity index 100% rename from .changeset/24405-mcp-connect-agent-subtitle.md rename to .changeset/pre/24405-mcp-connect-agent-subtitle.md diff --git a/.changeset/24405-platform-objects-this-system.md b/.changeset/pre/24405-platform-objects-this-system.md similarity index 100% rename from .changeset/24405-platform-objects-this-system.md rename to .changeset/pre/24405-platform-objects-this-system.md diff --git a/.changeset/24406-spec-this-system-copy.md b/.changeset/pre/24406-spec-this-system-copy.md similarity index 100% rename from .changeset/24406-spec-this-system-copy.md rename to .changeset/pre/24406-spec-this-system-copy.md diff --git a/.changeset/24410-lint-formula-hop-undeclared-field.md b/.changeset/pre/24410-lint-formula-hop-undeclared-field.md similarity index 100% rename from .changeset/24410-lint-formula-hop-undeclared-field.md rename to .changeset/pre/24410-lint-formula-hop-undeclared-field.md diff --git a/.changeset/24410-objectql-formula-hop-sibling-isolation.md b/.changeset/pre/24410-objectql-formula-hop-sibling-isolation.md similarity index 100% rename from .changeset/24410-objectql-formula-hop-sibling-isolation.md rename to .changeset/pre/24410-objectql-formula-hop-sibling-isolation.md diff --git a/.changeset/24411-unstored-field-removal.md b/.changeset/pre/24411-unstored-field-removal.md similarity index 100% rename from .changeset/24411-unstored-field-removal.md rename to .changeset/pre/24411-unstored-field-removal.md diff --git a/.changeset/24421-sharing-rule-declared-name-guard.md b/.changeset/pre/24421-sharing-rule-declared-name-guard.md similarity index 100% rename from .changeset/24421-sharing-rule-declared-name-guard.md rename to .changeset/pre/24421-sharing-rule-declared-name-guard.md diff --git a/.changeset/24456-client-platform-objects-this-system.md b/.changeset/pre/24456-client-platform-objects-this-system.md similarity index 100% rename from .changeset/24456-client-platform-objects-this-system.md rename to .changeset/pre/24456-client-platform-objects-this-system.md diff --git a/.changeset/24457-console-pin-4016370af3c9.md b/.changeset/pre/24457-console-pin-4016370af3c9.md similarity index 100% rename from .changeset/24457-console-pin-4016370af3c9.md rename to .changeset/pre/24457-console-pin-4016370af3c9.md diff --git a/examples/app-crm/CHANGELOG.md b/examples/app-crm/CHANGELOG.md index cc9508f3e86..dd9abacf1e4 100644 --- a/examples/app-crm/CHANGELOG.md +++ b/examples/app-crm/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/example-crm +## 4.0.100-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] +- Updated dependencies [964a237] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/runtime@18.0.0-next.5 + - @objectstack/service-i18n@18.0.0-next.5 + ## 4.0.100-next.4 ### Patch Changes diff --git a/examples/app-crm/package.json b/examples/app-crm/package.json index 47208e54508..5c2adda7dc8 100644 --- a/examples/app-crm/package.json +++ b/examples/app-crm/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/example-crm", - "version": "4.0.100-next.4", + "version": "4.0.100-next.5", "description": "Minimal CRM example \u2014 a smoke-test workspace that exercises the metadata loading pipeline (objects \u2192 views \u2192 app \u2192 dashboard \u2192 hook \u2192 flow \u2192 seed). For a full-featured enterprise CRM see https://github.com/objectstack-ai/hotcrm.", "license": "Apache-2.0", "private": true, diff --git a/examples/app-multi-package/CHANGELOG.md b/examples/app-multi-package/CHANGELOG.md index 55ecacf085b..d2bb69e5c8f 100644 --- a/examples/app-multi-package/CHANGELOG.md +++ b/examples/app-multi-package/CHANGELOG.md @@ -1,5 +1,20 @@ # @objectstack/example-multi-package +## 0.0.7-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + ## 0.0.7-next.4 ### Patch Changes diff --git a/examples/app-multi-package/package.json b/examples/app-multi-package/package.json index a5ca23c6c63..88fac774981 100644 --- a/examples/app-multi-package/package.json +++ b/examples/app-multi-package/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/example-multi-package", - "version": "0.0.7-next.4", + "version": "0.0.7-next.5", "description": "One release artifact carrying TWO packages that share a namespace (ADR-0130 D4) — the producer-side fixture for `packages[]`", "license": "Apache-2.0", "private": true, diff --git a/examples/app-showcase/CHANGELOG.md b/examples/app-showcase/CHANGELOG.md index 1c575704e42..8af4e3d6a62 100644 --- a/examples/app-showcase/CHANGELOG.md +++ b/examples/app-showcase/CHANGELOG.md @@ -1,5 +1,32 @@ # @objectstack/example-showcase +## 0.3.22-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] +- Updated dependencies [964a237] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/runtime@18.0.0-next.5 + - @objectstack/service-datasource@18.0.0-next.5 + - @objectstack/cloud-connection@18.0.0-next.5 + - @objectstack/connector-mcp@18.0.0-next.5 + - @objectstack/connector-openapi@18.0.0-next.5 + - @objectstack/connector-rest@18.0.0-next.5 + - @objectstack/connector-slack@18.0.0-next.5 + - @objectstack/driver-sql@18.0.0-next.5 + - @objectstack/service-i18n@18.0.0-next.5 + - @objectstack/service-print@18.0.0-next.5 + ## 0.3.22-next.4 ### Patch Changes diff --git a/examples/app-showcase/package.json b/examples/app-showcase/package.json index 94b3522c61d..ff8a5dc9be9 100644 --- a/examples/app-showcase/package.json +++ b/examples/app-showcase/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/example-showcase", - "version": "0.3.22-next.4", + "version": "0.3.22-next.5", "description": "Kitchen-sink showcase workspace — exercises every metadata type, every view type, every chart type, and the major end-to-end capability chains (security, automation, analytics). Built for demonstration, debugging, and coverage-driven verification.", "license": "Apache-2.0", "private": true, diff --git a/examples/app-todo/CHANGELOG.md b/examples/app-todo/CHANGELOG.md index 8e3670a53e5..482636adc44 100644 --- a/examples/app-todo/CHANGELOG.md +++ b/examples/app-todo/CHANGELOG.md @@ -1,5 +1,35 @@ # @objectstack/example-todo +## 4.0.100-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [9112bcd] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [4d12b23] +- Updated dependencies [ff48407] +- Updated dependencies [45bec43] +- Updated dependencies [964a237] +- Updated dependencies [b7a688e] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/objectql@18.0.0-next.5 + - @objectstack/runtime@18.0.0-next.5 + - @objectstack/mcp@18.0.0-next.5 + - @objectstack/client@18.0.0-next.5 + - @objectstack/driver-sqlite-wasm@18.0.0-next.5 + - @objectstack/metadata@18.0.0-next.5 + - @objectstack/knowledge-memory@18.0.0-next.5 + - @objectstack/service-i18n@18.0.0-next.5 + - @objectstack/service-knowledge@18.0.0-next.5 + ## 4.0.100-next.4 ### Patch Changes diff --git a/examples/app-todo/package.json b/examples/app-todo/package.json index 3cec91b7b0c..eb85568d23e 100644 --- a/examples/app-todo/package.json +++ b/examples/app-todo/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/example-todo", - "version": "4.0.100-next.4", + "version": "4.0.100-next.5", "description": "Example Todo App using ObjectStack Protocol", "license": "Apache-2.0", "private": true, diff --git a/examples/embed-objectql/CHANGELOG.md b/examples/embed-objectql/CHANGELOG.md index 666e80712e1..99a3c6465c7 100644 --- a/examples/embed-objectql/CHANGELOG.md +++ b/examples/embed-objectql/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/example-embed-objectql +## 0.0.40-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [9112bcd] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] +- Updated dependencies [45bec43] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/objectql@18.0.0-next.5 + - @objectstack/driver-memory@18.0.0-next.5 + ## 0.0.40-next.4 ### Patch Changes diff --git a/examples/embed-objectql/package.json b/examples/embed-objectql/package.json index f86781cf51c..c3c5f129c00 100644 --- a/examples/embed-objectql/package.json +++ b/examples/embed-objectql/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/example-embed-objectql", - "version": "0.0.40-next.4", + "version": "0.0.40-next.5", "private": true, "description": "Embed the ObjectQL engine as a plain library via @objectstack/objectql/core — no kernel, no plugins, no metadata protocol (ADR-0076).", "type": "module", diff --git a/packages/adapters/hono/CHANGELOG.md b/packages/adapters/hono/CHANGELOG.md index 5fd97d42c42..1fa1b050028 100644 --- a/packages/adapters/hono/CHANGELOG.md +++ b/packages/adapters/hono/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/hono +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [8ed3786] +- Updated dependencies [fa26308] +- Updated dependencies [2ec6827] +- Updated dependencies [964a237] + - @objectstack/plugin-hono-server@18.0.0-next.5 + - @objectstack/runtime@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/adapters/hono/package.json b/packages/adapters/hono/package.json index 16f1e6ce6f0..29cb260d351 100644 --- a/packages/adapters/hono/package.json +++ b/packages/adapters/hono/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/hono", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/apps/account/CHANGELOG.md b/packages/apps/account/CHANGELOG.md index 30efb9f987b..7c6398bc41c 100644 --- a/packages/apps/account/CHANGELOG.md +++ b/packages/apps/account/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/account +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [4d12b23] +- Updated dependencies [ff48407] +- Updated dependencies [b7a688e] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/platform-objects@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/apps/account/package.json b/packages/apps/account/package.json index 21e1037d15e..4d5ae88b03f 100644 --- a/packages/apps/account/package.json +++ b/packages/apps/account/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/account", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "ObjectStack Account — the end-user account/self-service console app, packaged as its own ObjectStack app package (ADR-0048: one app per package).", "main": "dist/index.js", diff --git a/packages/apps/setup/CHANGELOG.md b/packages/apps/setup/CHANGELOG.md index f6aabfb3e5a..efc4414eff8 100644 --- a/packages/apps/setup/CHANGELOG.md +++ b/packages/apps/setup/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/setup +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [4d12b23] +- Updated dependencies [ff48407] +- Updated dependencies [b7a688e] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/platform-objects@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/apps/setup/package.json b/packages/apps/setup/package.json index 0930e8f51c8..0782d2a60bc 100644 --- a/packages/apps/setup/package.json +++ b/packages/apps/setup/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/setup", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "ObjectStack Setup — the platform administration app, packaged as its own ObjectStack app package (ADR-0048: one app per package).", "main": "dist/index.js", diff --git a/packages/apps/studio/CHANGELOG.md b/packages/apps/studio/CHANGELOG.md index d61c2d1c7e9..23e04a35eb2 100644 --- a/packages/apps/studio/CHANGELOG.md +++ b/packages/apps/studio/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/studio +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [4d12b23] +- Updated dependencies [ff48407] +- Updated dependencies [b7a688e] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/platform-objects@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/apps/studio/package.json b/packages/apps/studio/package.json index 1f115b34fde..9dfd03c4c9f 100644 --- a/packages/apps/studio/package.json +++ b/packages/apps/studio/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/studio", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "ObjectStack Studio — the metadata builder app, packaged as its own ObjectStack app package (ADR-0048: one app per package).", "main": "dist/index.js", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 84f60313125..6567e0f2a7b 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,103 @@ # @objectstack/cli +## 18.0.0-next.5 + +### Minor Changes + +- ae6bd1a: feat(cli)!: 18.0 supports fresh `single` installs only — `os migrate organization-ownership` refuses, and `os serve` refuses a walled posture at boot + + Clause-②: yes (narrowing) + + + + **BREAKING** (a command and a boot posture that used to run now refuse), shipped as `minor` under the launch-window convention for breaking changes. 18.0 supports fresh installs under the `single` tenancy posture only; upgrading a v17 database and the walled postures arrive in an 18.x release. + + - **FROM** `os migrate organization-ownership` (plan) and `os migrate organization-ownership --apply …` running the v18 ownership ceremony **TO** both refusing with exit `1` and the standard code `NOT_IMPLEMENTED` (under `--json`: `{ error: 'plan_refused' | 'apply_refused', reason: 'upgrade-unavailable', code: 'NOT_IMPLEMENTED', detail }`), reading and writing nothing. The 18.0 ceremony is knowingly incomplete, and an incomplete ceremony must never certify an old database. **Fix:** keep a v17 database on a 17.x release until the 18.x release that carries the upgrade path. `os dev`'s in-place upgrade of a v17 development database runs this command, so it now stops with the same refusal and changes nothing. + - **FROM** `os serve` (and so `os dev` and `os start`) booting with `OS_TENANCY_POSTURE=group` or `isolated`, or with `OS_MULTI_ORG_ENABLED=true`, **TO** a FATAL refusal at the tenancy-posture gate, exit `1`, naming `NOT_IMPLEMENTED` and the 18.x release, before a config is read. `OS_ALLOW_DEGRADED_TENANCY` does not lift it, and no flag or variable does. **Fix:** set `OS_TENANCY_POSTURE=single` (or unset it and `OS_MULTI_ORG_ENABLED`), or keep a walled deployment on a 17.x release. + + **What stays as it was.** A fresh install under `single` boots exactly as before. The boot guard that refuses a v17-shaped database is unchanged. Kernel-level boots (`@objectstack/verify`'s `bootStack`, embedded hosts) still accept every posture. + +### Patch Changes + +- Updated dependencies [9847f87] +- Updated dependencies [8ed3786] +- Updated dependencies [e67ac4b] +- Updated dependencies [4bd7215] +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [9112bcd] +- Updated dependencies [94e60c0] +- Updated dependencies [94e60c0] +- Updated dependencies [9524666] +- Updated dependencies [adb7910] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [4d12b23] +- Updated dependencies [4d12b23] +- Updated dependencies [ff48407] +- Updated dependencies [45bec43] +- Updated dependencies [45bec43] +- Updated dependencies [33a45cc] +- Updated dependencies [964a237] +- Updated dependencies [b7a688e] +- Updated dependencies [3b086e7] + - @objectstack/plugin-sharing@18.0.0-next.5 + - @objectstack/plugin-hono-server@18.0.0-next.5 + - @objectstack/metadata-protocol@18.0.0-next.5 + - @objectstack/lint@18.0.0-next.5 + - @objectstack/spec@18.0.0-next.5 + - @objectstack/objectql@18.0.0-next.5 + - @objectstack/runtime@18.0.0-next.5 + - @objectstack/plugin-security@18.0.0-next.5 + - @objectstack/plugin-auth@18.0.0-next.5 + - @objectstack/rest@18.0.0-next.5 + - @objectstack/metadata-core@18.0.0-next.5 + - @objectstack/platform-objects@18.0.0-next.5 + - @objectstack/mcp@18.0.0-next.5 + - @objectstack/client@18.0.0-next.5 + - @objectstack/console@18.0.0-next.5 + - @objectstack/verify@18.0.0-next.5 + - @objectstack/service-datasource@18.0.0-next.5 + - @objectstack/cloud-connection@18.0.0-next.5 + - @objectstack/plugin-approvals@18.0.0-next.5 + - @objectstack/service-automation@18.0.0-next.5 + - @objectstack/service-package@18.0.0-next.5 + - @objectstack/service-mailbox@18.0.0-next.5 + - @objectstack/account@18.0.0-next.5 + - @objectstack/setup@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - create-objectstack@18.0.0-next.5 + - @objectstack/driver-memory@18.0.0-next.5 + - @objectstack/driver-mongodb@18.0.0-next.5 + - @objectstack/driver-sql@18.0.0-next.5 + - @objectstack/driver-sqlite-wasm@18.0.0-next.5 + - @objectstack/driver-turso@18.0.0-next.5 + - @objectstack/formula@18.0.0-next.5 + - @objectstack/metadata@18.0.0-next.5 + - @objectstack/observability@18.0.0-next.5 + - @objectstack/plugin-audit@18.0.0-next.5 + - @objectstack/plugin-email@18.0.0-next.5 + - @objectstack/plugin-webhooks@18.0.0-next.5 + - @objectstack/service-analytics@18.0.0-next.5 + - @objectstack/service-cache@18.0.0-next.5 + - @objectstack/service-job@18.0.0-next.5 + - @objectstack/service-messaging@18.0.0-next.5 + - @objectstack/service-queue@18.0.0-next.5 + - @objectstack/service-realtime@18.0.0-next.5 + - @objectstack/service-settings@18.0.0-next.5 + - @objectstack/service-sms@18.0.0-next.5 + - @objectstack/service-storage@18.0.0-next.5 + - @objectstack/trigger-api@18.0.0-next.5 + - @objectstack/trigger-record-change@18.0.0-next.5 + - @objectstack/trigger-schedule@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + - @objectstack/plugin-pinyin-search@18.0.0-next.5 + ## 18.0.0-next.4 ### Minor Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 7ea71bce742..25c5b29f0e2 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/cli", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "description": "Command Line Interface for ObjectStack Protocol", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/client-react/CHANGELOG.md b/packages/client-react/CHANGELOG.md index 2a4abe28038..632565be872 100644 --- a/packages/client-react/CHANGELOG.md +++ b/packages/client-react/CHANGELOG.md @@ -1,5 +1,23 @@ # @objectstack/client-react +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] +- Updated dependencies [b7a688e] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/client@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/client-react/package.json b/packages/client-react/package.json index d3e31de4894..1279300e099 100644 --- a/packages/client-react/package.json +++ b/packages/client-react/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/client-react", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "React hooks for ObjectStack Client SDK", "main": "dist/index.js", diff --git a/packages/client/CHANGELOG.md b/packages/client/CHANGELOG.md index 957751dc84c..58333d0d728 100644 --- a/packages/client/CHANGELOG.md +++ b/packages/client/CHANGELOG.md @@ -1,5 +1,29 @@ # @objectstack/client +## 18.0.0-next.5 + +### Patch Changes + +- b7a688e: Clause-②: no + + fix(client,platform-objects): the `ai.models()` TSDoc and the translated permission-set `packageId` help say "this system", as the spec now does + + - **What changed.** Inside the running system, published copy names the system the reader is in as "this system", and a permission set made here, not shipped by a package, is "authored in this system". `@objectstack/spec` already says both (`AiModelsResponse.models`, the permission set's `packageId` help text); this follows it in two more places. + - The TSDoc of `client.ai.models()` now reads "Models this system offers in the chat model picker (cloud ADR-0028)". The citation is qualified as `cloud ADR-0028`: the AI service that serves this list is a cloud package, and this repository's ADR-0028 is about metadata naming. + - The zh-CN, ja-JP and es-ES values of the permission set's `packageId` help text in the Setup forms bundle now say 本系统 / このシステム / este sistema where they said 本环境 / この環境 / este entorno, matching the English text "Leave empty for a set authored in this system." + - **Unchanged.** Every method, route, type, form field, key and behaviour. No translation key is added or removed. +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + ## 18.0.0-next.4 ### Minor Changes diff --git a/packages/client/package.json b/packages/client/package.json index 593d4d3a5ef..2802941679e 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/client", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Official Client SDK for ObjectStack Protocol", "main": "dist/index.js", diff --git a/packages/cloud-connection/CHANGELOG.md b/packages/cloud-connection/CHANGELOG.md index e60227fb677..1774be19897 100644 --- a/packages/cloud-connection/CHANGELOG.md +++ b/packages/cloud-connection/CHANGELOG.md @@ -1,5 +1,33 @@ # @objectstack/cloud-connection +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [e67ac4b] +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [9112bcd] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] +- Updated dependencies [45bec43] +- Updated dependencies [33a45cc] +- Updated dependencies [964a237] + - @objectstack/metadata-protocol@18.0.0-next.5 + - @objectstack/spec@18.0.0-next.5 + - @objectstack/objectql@18.0.0-next.5 + - @objectstack/runtime@18.0.0-next.5 + - @objectstack/metadata-core@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Minor Changes diff --git a/packages/cloud-connection/package.json b/packages/cloud-connection/package.json index 413a626f5c0..1449203def3 100644 --- a/packages/cloud-connection/package.json +++ b/packages/cloud-connection/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/cloud-connection", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Runtime-side client for an ObjectStack cloud control plane — marketplace browse proxy, install-local, device-code binding, org catalog and installed views, and the /api/v1/runtime/config discovery endpoint. Open mechanism (cloud ADR-0008): the hub service, plan policy, and entitlements stay server-side.", "type": "module", diff --git a/packages/connectors/connector-imap/CHANGELOG.md b/packages/connectors/connector-imap/CHANGELOG.md index 53a368c11c2..58a23ee6ae5 100644 --- a/packages/connectors/connector-imap/CHANGELOG.md +++ b/packages/connectors/connector-imap/CHANGELOG.md @@ -1,5 +1,9 @@ # @objectstack/connector-imap +## 18.0.0-next.5 + +No changes in this release. + ## 18.0.0-next.4 No changes in this release. diff --git a/packages/connectors/connector-imap/package.json b/packages/connectors/connector-imap/package.json index 8903cecf821..79ec9117013 100644 --- a/packages/connectors/connector-imap/package.json +++ b/packages/connectors/connector-imap/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-imap", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "IMAP connector for ObjectStack — a read-only IMAP4rev1 session (EXAMINE, UID FETCH with BODY.PEEK) and the per-user-shaped mail account and credential abstraction the mailbox sync connects through.", "main": "dist/index.js", diff --git a/packages/connectors/connector-mcp/CHANGELOG.md b/packages/connectors/connector-mcp/CHANGELOG.md index cf14a87d28f..76e5908859a 100644 --- a/packages/connectors/connector-mcp/CHANGELOG.md +++ b/packages/connectors/connector-mcp/CHANGELOG.md @@ -1,5 +1,21 @@ # @objectstack/connector-mcp +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/connectors/connector-mcp/package.json b/packages/connectors/connector-mcp/package.json index 33c9f6d9de3..79d166fde02 100644 --- a/packages/connectors/connector-mcp/package.json +++ b/packages/connectors/connector-mcp/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-mcp", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Model Context Protocol (MCP) connector for ObjectStack — a generic adapter that turns any MCP server's tools into a connector's actions on the automation engine's connector registry (ADR-0024).", "main": "dist/index.js", diff --git a/packages/connectors/connector-openapi/CHANGELOG.md b/packages/connectors/connector-openapi/CHANGELOG.md index 11cb5671995..0d6cce52350 100644 --- a/packages/connectors/connector-openapi/CHANGELOG.md +++ b/packages/connectors/connector-openapi/CHANGELOG.md @@ -1,5 +1,21 @@ # @objectstack/connector-openapi +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/connectors/connector-openapi/package.json b/packages/connectors/connector-openapi/package.json index 983c9e82431..9bc95d74da9 100644 --- a/packages/connectors/connector-openapi/package.json +++ b/packages/connectors/connector-openapi/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-openapi", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "OpenAPI 3.x connector generator for ObjectStack — turns a declarative OpenAPI document into connector actions on the automation engine's registry, with a self-contained static-auth HTTP transport (ADR-0023).", "main": "dist/index.js", diff --git a/packages/connectors/connector-rest/CHANGELOG.md b/packages/connectors/connector-rest/CHANGELOG.md index 51f24c57f8b..9004a2be808 100644 --- a/packages/connectors/connector-rest/CHANGELOG.md +++ b/packages/connectors/connector-rest/CHANGELOG.md @@ -1,5 +1,21 @@ # @objectstack/connector-rest +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/connectors/connector-rest/package.json b/packages/connectors/connector-rest/package.json index f40c33b0ec1..e152b7a8077 100644 --- a/packages/connectors/connector-rest/package.json +++ b/packages/connectors/connector-rest/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-rest", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Generic REST connector for ObjectStack — the reference concrete connector that registers a `request` action on the automation engine's connector registry (ADR-0018 §Addendum).", "main": "dist/index.js", diff --git a/packages/connectors/connector-slack/CHANGELOG.md b/packages/connectors/connector-slack/CHANGELOG.md index 37d83b60834..c17cce15077 100644 --- a/packages/connectors/connector-slack/CHANGELOG.md +++ b/packages/connectors/connector-slack/CHANGELOG.md @@ -1,5 +1,21 @@ # @objectstack/connector-slack +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/connectors/connector-slack/package.json b/packages/connectors/connector-slack/package.json index 569aa4b0395..418f25b2dcb 100644 --- a/packages/connectors/connector-slack/package.json +++ b/packages/connectors/connector-slack/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-slack", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Slack Web API connector for ObjectStack — registers `chat.postMessage` / `chat.update` / `call` actions on the automation engine's connector registry (ADR-0018 §Addendum, ADR-0022).", "main": "dist/index.js", diff --git a/packages/console/CHANGELOG.md b/packages/console/CHANGELOG.md index 9404e7d340d..a9f2db7a227 100644 --- a/packages/console/CHANGELOG.md +++ b/packages/console/CHANGELOG.md @@ -1,5 +1,76 @@ # @objectstack/console +## 18.0.0-next.5 + +### Minor Changes + +- 3b086e7: Console (objectui) refreshed to `4016370af3c9`. Frontend changes in this range: + + Derived from the changesets objectui declared over the range — 32 releasing of 32 changesets added across 33 non-merge commits; omitted: 1 commit carrying no changeset (they ship no package code). + + - **minor** — **BREAKING** — The object-page special cases for the retired permission-set catalog object are removed (objectui#7611, after objectstack's ADR-0131 stage 8 retired `sys_position`, `sys_permissio… (objectui `78b07f468`) + - **minor** — `@object-ui/react` now exports `buildNodeEvaluationScope(predicateScope, boundRecord, pageVariables)`, the one builder of the scope a page node's `visibleWhen` and other values ar… (objectui `9e7e1a55b`) + - **minor** — A page route reads the objects its page binds, not the whole object registry (objectui#12980, part 1). (objectui `024b7b665`) + - **minor** — feat(plugin-chatbot): a drafted result's Preview button appears for any draft kind, and the draft preview bar names what is pending on the surface it shows (objectui#12968) (objectui `76f91f80d`) + - **minor** — A row action's templates read the row as `record`, the way the record header's do (objectui#12967). (objectui `025130ca0`) + - **minor** — The Studio copilot's applied card can open the change review and undo the draft; the 变更 badge follows an in-turn publish; the chat fits the copilot's slot at a 1010 px window (obj… (objectui `43efd078a`) + - **minor** — The list toolbar's Display control compares hidden fields and density against the view's own value again (objectui#12949). On a console list, after a user hid a column (or changed… (objectui `b5153f44e`) + - **minor** — Studio's 变更 badge and the item header follow the copilot's drafts as they land (objectui#12725, item 5). (objectui `eee54ed79`) + - **minor** — **The copilot's change card says when a change will be saved as a draft, and the applied card offers review and undo** (objectui#12894). (objectui `3da39ae42`) + - **patch** — data-table: the whole leading cell of a selectable row is now the selection's hit area. A click beside the small checkbox toggles the row instead of opening the record (objectui#1… (objectui `4016370af`) + - **patch** — `page:tabs` probes a related list's badge count from the record the record context names (`recordId`, the route's id on a record page) instead of the id inside the loaded row, so… (objectui `46dbf32bf`) + - **patch** — The permission-set editor's read-only badge now names the caller's capability when that is the gate that closed (objectui#13011). (objectui `09eadf4e1`) + - **patch** — The console sidebar's capability gate no longer loads the whole object registry in an app created in the console (an app with no package). It asks, by name, every object the app l… (objectui `2b1651d14`) + - **patch** — The by-name object scope no longer records a failed read as a missing object (objectui#13009). A by-name read that obtains no answer (a 5xx, a network drop, a 404 without the `RES… (objectui `d0934b919`) + - **patch** — The AI build plan card now draws a composed record title's line (for example 「名称:自动生成「{图书} · {读者} · {借出日期}」,表单里不出现」) in place of the plain 「名称:LABEL」 line, read from the plan card… (objectui `4b7ce4705`) + - **patch** — In an app that names no package (an app created in the console is stored bound to none), two chrome readers no longer load the whole object registry (`GET /api/v1/meta/object`) wh… (objectui `1624e08f6`) + - **patch** — A page route reads more of the objects its page binds in its own scope read, and an interface list page inside a package app no longer reads its source object a second time (objec… (objectui `d3fd5e4f9`) + - **patch** — `record:quick_actions`: a refused declared action array (a mixed id/object array) no longer draws its "refused at index N (see console)" box in a runtime view. That box is develop… (objectui `0d9764260`) + - **patch** — `record:quick_actions` no longer shows its authoring placeholder ("record:quick_actions — no actions configured") to a viewer whose named actions are all withheld. A block that na… (objectui `1d3da6c1e`) + - **patch** — The AI build plan card draws a stage field's lifecycle on its chip (for example 「借出 · 已还 ✓完成 · 逾期 ⚠」), read from the plan card's `lifecycle` key. A chip without the key draws as b… (objectui `5f599dbcd`) + - **patch** — Opening the console no longer starts nine reads the page does not show in the same moment as the page's own reads (objectui#12980, part 3). (objectui `6db875efc`) + - **patch** — On a free-plan organization, the environment list's locked mark, "Development environments · Team plan and up" (zh 「开发环境 · 团队版起」), is now drawn only for a viewer who can upgrade (… (objectui `4dfdebdf5`) + - **patch** — `page:tabs` no longer counts a related list the viewer cannot see (objectui#12987). A tab's derived badge sums the `record:related_list` blocks under it; a list whose own node-lev… (objectui `909c64e3a`) + - **patch** — `record:quick_actions` maps an action's spec `variant` onto the `Button` vocabulary the way the record header and the row menu do: `danger` draws the destructive style and `primar… (objectui `bcd9717e8`) + - **patch** — The Import Wizard no longer offers "Run automations & triggers" or "Import as historical data" (objectui#12985). Both import doors (`POST /api/v1/data/:object/import` and `/import… (objectui `cb8000181`) + - **patch** — A console route's view no longer holds the boot splash after the route's data is in (objectui#12980, part 2). (objectui `736b9cee6`) + - **patch** — Console: a create-workspace refusal carrying objectstack's `ORGANIZATION_CREATION_DISABLED` code now shows the localized "Creating new organizations is disabled on this instance."… (objectui `ccddde951`) + - **patch** — The help menu gains an About entry on every console bar (the tenant console and the control plane draw the same header). It opens a small dialog naming the build the console was c… (objectui `ea34d9b7e`) + - **patch** — The Studio copilot no longer draws the floating pending-changes bar over its composer (objectui#12965, part of objectui#12725). (objectui `32a171e56`) + - **patch** — The list's quick-search box and the record pickers' type-ahead are no longer offered on an object whose search resolves to no field, and a refused search shows the server's messag… (objectui `b7fe09eba`) + - **patch** — The metadata designer's copy no longer names the running system by the cloud noun "environment" (objectui#12960, the same rule objectui#12956 applied to the locale packs). Where a… (objectui `8dfc6b7a4`) + - **patch** — Console copy names the system the user is already in, not the cloud noun "environment" (objectui#12956). Inside a running deployment, the Settings subtitle and its first category,… (objectui `7f9cc37d0`) + + ⚠️ 1 of these carries a breaking change: 1 by the author's own breaking annotation in the changeset body — objectui declares no `major` inside a launch window (`scripts/check-changeset-no-major.mjs`). Each is marked **BREAKING** in the list above — read them before compiling the release record. + + **In this console build, declared nowhere** — objectui merged 1 commit in this range with no `.changeset/*.md`. The code is inside the pin above and ships here, but nothing upstream declared it, so it appears in no objectui CHANGELOG and in no entry above. Listed by subject rather than counted, because a count cannot tell a dependency bump from a form-behaviour change (objectstack#6174); the upstream gate that would prevent this is objectui#3387. + + - _(no changeset)_ feat(tooling): objectui consumes @objectstack/* by commit — .objectstack-sha, bump-objectstack.sh, dev and CI built from the pin (objectui#12957) (#12963) (objectui `749ed7607`) + + Clause-②: no + + + + objectui range: `0707b4ae3712...4016370af3c9` + ## 18.0.0-next.4 ### Minor Changes diff --git a/packages/console/package.json b/packages/console/package.json index ce2554c186e..345ad67daa0 100644 --- a/packages/console/package.json +++ b/packages/console/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/console", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "description": "Prebuilt Console SPA pinned to this framework release, installed as a dependency of @objectstack/cli. Source of truth: @object-ui/console (https://github.com/objectstack-ai/objectui).", "license": "Apache-2.0", "homepage": "https://github.com/objectstack-ai/objectstack/tree/main/packages/console", diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index d054bebd2b6..39d00ae5c39 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,21 @@ # @objectstack/core +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Minor Changes diff --git a/packages/core/package.json b/packages/core/package.json index 71490b3e7ba..c8feb555dff 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/core", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Microkernel Core for ObjectStack", "type": "module", diff --git a/packages/create-objectstack/CHANGELOG.md b/packages/create-objectstack/CHANGELOG.md index ac19ab7c18d..edb2fe2c032 100644 --- a/packages/create-objectstack/CHANGELOG.md +++ b/packages/create-objectstack/CHANGELOG.md @@ -1,5 +1,9 @@ # create-objectstack +## 18.0.0-next.5 + +No changes in this release. + ## 18.0.0-next.4 No changes in this release. diff --git a/packages/create-objectstack/package.json b/packages/create-objectstack/package.json index 6f50f8f8b74..c8f98ae48d4 100644 --- a/packages/create-objectstack/package.json +++ b/packages/create-objectstack/package.json @@ -1,6 +1,6 @@ { "name": "create-objectstack", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "description": "Create a new ObjectStack project — npx create-objectstack", "bin": { "create-objectstack": "./bin/create-objectstack.js" diff --git a/packages/drivers/driver-memory/CHANGELOG.md b/packages/drivers/driver-memory/CHANGELOG.md index 40041333c74..83b4e9d1041 100644 --- a/packages/drivers/driver-memory/CHANGELOG.md +++ b/packages/drivers/driver-memory/CHANGELOG.md @@ -1,5 +1,22 @@ # @objectstack/driver-memory +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/drivers/driver-memory/package.json b/packages/drivers/driver-memory/package.json index c86c9324fad..ba5011ebc1e 100644 --- a/packages/drivers/driver-memory/package.json +++ b/packages/drivers/driver-memory/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-memory", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "In-Memory Driver for ObjectStack (Reference Implementation)", "main": "dist/index.js", diff --git a/packages/drivers/driver-mongodb/CHANGELOG.md b/packages/drivers/driver-mongodb/CHANGELOG.md index 5f35c07e146..88d70cde516 100644 --- a/packages/drivers/driver-mongodb/CHANGELOG.md +++ b/packages/drivers/driver-mongodb/CHANGELOG.md @@ -1,5 +1,22 @@ # @objectstack/driver-mongodb +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/drivers/driver-mongodb/package.json b/packages/drivers/driver-mongodb/package.json index 34cdbe26394..bffc9d60341 100644 --- a/packages/drivers/driver-mongodb/package.json +++ b/packages/drivers/driver-mongodb/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-mongodb", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "MongoDB Driver for ObjectStack - Native document database driver via official mongodb client", "main": "dist/index.js", diff --git a/packages/drivers/driver-sql/CHANGELOG.md b/packages/drivers/driver-sql/CHANGELOG.md index 8502894c45e..b5d4efcbe93 100644 --- a/packages/drivers/driver-sql/CHANGELOG.md +++ b/packages/drivers/driver-sql/CHANGELOG.md @@ -1,5 +1,23 @@ # @objectstack/driver-sql +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/observability@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/drivers/driver-sql/package.json b/packages/drivers/driver-sql/package.json index edcc243f208..dda9cb9edde 100644 --- a/packages/drivers/driver-sql/package.json +++ b/packages/drivers/driver-sql/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-sql", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "SQL Driver for ObjectStack - Supports PostgreSQL, MySQL, SQLite via Knex", "main": "dist/index.js", diff --git a/packages/drivers/driver-sqlite-wasm/CHANGELOG.md b/packages/drivers/driver-sqlite-wasm/CHANGELOG.md index 7413a5529b1..fe80e12dd18 100644 --- a/packages/drivers/driver-sqlite-wasm/CHANGELOG.md +++ b/packages/drivers/driver-sqlite-wasm/CHANGELOG.md @@ -1,5 +1,22 @@ # @objectstack/driver-sqlite-wasm +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/driver-sql@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/drivers/driver-sqlite-wasm/package.json b/packages/drivers/driver-sqlite-wasm/package.json index 38246fabc50..385aec698b9 100644 --- a/packages/drivers/driver-sqlite-wasm/package.json +++ b/packages/drivers/driver-sqlite-wasm/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-sqlite-wasm", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "WASM SQLite Driver for ObjectStack — runs in browser/WebContainer (StackBlitz) without native bindings", "keywords": [ diff --git a/packages/drivers/driver-turso/CHANGELOG.md b/packages/drivers/driver-turso/CHANGELOG.md index ffc77771f0b..669cb231301 100644 --- a/packages/drivers/driver-turso/CHANGELOG.md +++ b/packages/drivers/driver-turso/CHANGELOG.md @@ -1,5 +1,22 @@ # @objectstack/driver-turso +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/driver-sql@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/drivers/driver-turso/package.json b/packages/drivers/driver-turso/package.json index 4278e76eb82..0f41425482b 100644 --- a/packages/drivers/driver-turso/package.json +++ b/packages/drivers/driver-turso/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-turso", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Turso/libSQL Driver for ObjectStack — Edge-first SQLite with embedded replicas", "keywords": [ diff --git a/packages/formula/CHANGELOG.md b/packages/formula/CHANGELOG.md index 21d5ba632dc..de73838b96b 100644 --- a/packages/formula/CHANGELOG.md +++ b/packages/formula/CHANGELOG.md @@ -1,5 +1,20 @@ # @objectstack/formula +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + ## 18.0.0-next.4 ### Minor Changes diff --git a/packages/formula/package.json b/packages/formula/package.json index e71a4dd6007..10c1ab60ef9 100644 --- a/packages/formula/package.json +++ b/packages/formula/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/formula", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "ObjectStack canonical expression engine — CEL (cel-js) + ObjectStack stdlib + dialect registry", "main": "dist/index.js", diff --git a/packages/lint/CHANGELOG.md b/packages/lint/CHANGELOG.md index e1e203e7d25..8091980090c 100644 --- a/packages/lint/CHANGELOG.md +++ b/packages/lint/CHANGELOG.md @@ -1,5 +1,50 @@ # @objectstack/lint +## 18.0.0-next.5 + +### Minor Changes + +- 45bec43: fix(lint)!: a formula that reads, through a reference, a field the reference's target does not declare is refused where it is written + + Clause-②: no (narrowing) + + + + **BREAKING** (an authoring narrowing), shipped as `minor` under the launch-window convention for breaking changes. + + The field-formula pass judges the field a formula reads one hop through a reference against the target object's fields: the fields it declares, the system columns the platform adds to it, and `id`. `os validate`, `os build` and the object save door (`PUT /api/v1/meta/object/:name`) run the same pass, under the existing `EXPRESSION_INVALID` rule. + + - FROM: `record.book.name`, where `book` is a lookup to an object that declares no `name`, saved with a 200 and read `null` on every row. TO: refused (`422 INVALID_METADATA` at the save door). The message names the field and the target: "unknown field `name` on ``". + - `record.book.title`, where the target declares `title`, passes as before. + - A target the stack does not carry is not judged. At the save door the stack carries the live registry's objects in the written package's closure, so a target from a package it depends on is judged. + + What to do. Read a field the target declares, or declare the field on the target object. Do not declare it on the object that carries the formula. At `os build` and `os validate` this pass does not see a target field that an `objectExtensions` entry contributes, while the save door judges the merged object. + +### Patch Changes + +- 4bd7215: fix(lint): the translation-reference rules now judge a locale pack's `picklists` face (#23566) + + Clause-②: no + + Before this change a locale pack's `picklists` entries were never checked. A key that named nothing passed `os lint --strict`, and at runtime the resolver simply never found it, so the label rendered in the source locale. The two existing rules now cover this face, each at the severity its field-level twin already has. No new rule id is added: + + - `picklists.` for a list that no package in the stack declares is `translation-target-unknown` (error). When a declared name is close, the finding offers it as "Did you mean". + - `picklists..options.`, where the key is not a value of the list or of a `picklistExtensions` entry for it, is `translation-option-key-unknown` (warning). A key spelled as an option's display label is told which value to rename it to. + + A list the stack only extends through `picklistExtensions`, and that no package of the stack declares, is skipped: its owner's options cannot be seen from here. A list declared by a sibling package of the same artifact resolves, and its option keys are judged. `os explain translation-target-unknown` and `os explain translation-option-key-unknown` name the new face. +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/formula@18.0.0-next.5 + - @objectstack/sdui-parser@18.0.0-next.5 + ## 18.0.0-next.4 ### Minor Changes diff --git a/packages/lint/package.json b/packages/lint/package.json index 12d6acc2ca8..357e75da10b 100644 --- a/packages/lint/package.json +++ b/packages/lint/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/lint", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Static, build-time validation for an ObjectStack metadata graph — dashboard widget bindings, CEL/predicate expressions, and more. Pure (stack) => Issue[] functions shared by the CLI's `os validate` and any other consumer (e.g. AI authoring). Depends on @objectstack/spec; never on a runtime.", "type": "module", diff --git a/packages/mcp/CHANGELOG.md b/packages/mcp/CHANGELOG.md index 5c86d641850..70c5432e4e5 100644 --- a/packages/mcp/CHANGELOG.md +++ b/packages/mcp/CHANGELOG.md @@ -1,5 +1,29 @@ # @objectstack/plugin-mcp-server +## 18.0.0-next.5 + +### Patch Changes + +- 4d12b23: Clause-②: no (copy only: no accept set or public surface moves; owes the seat's review of record at `TIER_DEFAULT` before the queue) + + fix(mcp): the Connect-an-Agent page subtitle says "this system" + + - **What changed.** The Connect-an-Agent page header now reads "Give any MCP-capable AI client governed access to this system — every call runs under the caller's own permissions and row-level security." Inside the running system, user-facing copy names the system the caller is in as "this system". + - **Unchanged.** The page's name, layout, components and navigation entries, and every MCP route and payload. +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/formula@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 3a0906c2296..e0a25958073 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/mcp", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "ObjectStack as an MCP server — exposes your app's objects (and AI tools) over the Model Context Protocol (stdio + Streamable HTTP)", "type": "module", diff --git a/packages/metadata-core/CHANGELOG.md b/packages/metadata-core/CHANGELOG.md index c75a05fe8ef..e5b45de7fc1 100644 --- a/packages/metadata-core/CHANGELOG.md +++ b/packages/metadata-core/CHANGELOG.md @@ -1,5 +1,33 @@ # @objectstack/metadata-core +## 18.0.0-next.5 + +### Minor Changes + +- 2ec6827: feat(metadata-protocol): the draft save records `draftChanges` — which surface, actor and instant last changed each key path of a pending draft — and the strict draft read serves it + + Clause-②: yes (widening) + + - **Recorded by the draft save.** `saveMetaItem({ mode: 'draft', surface })` compares the body it writes with the body it replaces, inside the write's own transaction: the draft row, else (the draft's first save) the active row its publish would replace, else nothing, which records `[]`, the whole body. A path is the object keys from the body root to the deepest changed key; an array is one leaf, with no index. Each changed path is stamped `{ by: surface ?? 'api', actor, at }`, where `actor` is the value the save's history event carries (or `null`) and `at` is the write's instant as `toISOString()`. + - **Kept until publish or discard.** No two entries share a path: a save replaces every entry at or under each path it changes, so the longest prefix answers for a key. A save that changes no key path leaves the entries as they were. Publish and discard delete the draft row, and the entries with it, so the next draft starts clean. A `migrate-stored` rewrite and an active save record nothing. + - **Served on the strict draft read only.** `getMetaItem({ state: 'draft' })` answering a stored draft row carries `draftChanges` beside `item`. It is absent on the active read, the cached branch, the `?preview=draft` read, and a draft row whose saves recorded none (one saved before this release) — never `[]`. + - **Stored on the row.** `sys_metadata` gains a nullable `draft_changes` column (`@objectstack/metadata-core`'s `SysMetadataObject`), never inside the stored body. Schema sync adds it to an existing table on boot with no manual step (measured on SQLite and the memory driver). + - **Translated labels.** `@objectstack/platform-objects`' translation bundles carry the new column's label and help text in every shipped locale. + - **An unknown `surface` is refused.** In-process, a value outside `copilot | studio | api` is refused `400 INVALID_REQUEST` before anything is written. + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/metadata-core/package.json b/packages/metadata-core/package.json index c0056a58eb0..7c5fef91cbb 100644 --- a/packages/metadata-core/package.json +++ b/packages/metadata-core/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata-core", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Metadata Repository contracts: types, canonicalization, errors, interface (ADR-0008).", "type": "module", diff --git a/packages/metadata-fs/CHANGELOG.md b/packages/metadata-fs/CHANGELOG.md index 178cd8d8182..d3e56cc9526 100644 --- a/packages/metadata-fs/CHANGELOG.md +++ b/packages/metadata-fs/CHANGELOG.md @@ -1,5 +1,12 @@ # @objectstack/metadata-fs +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [2ec6827] + - @objectstack/metadata-core@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/metadata-fs/package.json b/packages/metadata-fs/package.json index cdcb04af652..e16d09067fe 100644 --- a/packages/metadata-fs/package.json +++ b/packages/metadata-fs/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata-fs", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "FileSystemRepository: Node-only Repository implementation backed by JSON files and a JSONL change log (ADR-0008).", "type": "module", diff --git a/packages/metadata-protocol/CHANGELOG.md b/packages/metadata-protocol/CHANGELOG.md index 9469bb450e2..1a9f3948f15 100644 --- a/packages/metadata-protocol/CHANGELOG.md +++ b/packages/metadata-protocol/CHANGELOG.md @@ -1,5 +1,53 @@ # @objectstack/metadata-protocol +## 18.0.0-next.5 + +### Minor Changes + +- 2ec6827: feat(metadata-protocol): the draft save records `draftChanges` — which surface, actor and instant last changed each key path of a pending draft — and the strict draft read serves it + + Clause-②: yes (widening) + + - **Recorded by the draft save.** `saveMetaItem({ mode: 'draft', surface })` compares the body it writes with the body it replaces, inside the write's own transaction: the draft row, else (the draft's first save) the active row its publish would replace, else nothing, which records `[]`, the whole body. A path is the object keys from the body root to the deepest changed key; an array is one leaf, with no index. Each changed path is stamped `{ by: surface ?? 'api', actor, at }`, where `actor` is the value the save's history event carries (or `null`) and `at` is the write's instant as `toISOString()`. + - **Kept until publish or discard.** No two entries share a path: a save replaces every entry at or under each path it changes, so the longest prefix answers for a key. A save that changes no key path leaves the entries as they were. Publish and discard delete the draft row, and the entries with it, so the next draft starts clean. A `migrate-stored` rewrite and an active save record nothing. + - **Served on the strict draft read only.** `getMetaItem({ state: 'draft' })` answering a stored draft row carries `draftChanges` beside `item`. It is absent on the active read, the cached branch, the `?preview=draft` read, and a draft row whose saves recorded none (one saved before this release) — never `[]`. + - **Stored on the row.** `sys_metadata` gains a nullable `draft_changes` column (`@objectstack/metadata-core`'s `SysMetadataObject`), never inside the stored body. Schema sync adds it to an existing table on boot with no manual step (measured on SQLite and the memory driver). + - **Translated labels.** `@objectstack/platform-objects`' translation bundles carry the new column's label and help text in every shipped locale. + - **An unknown `surface` is refused.** In-process, a value outside `copilot | studio | api` is refused `400 INVALID_REQUEST` before anything is written. +- 33a45cc: fix(metadata-protocol): removing a field that stores nothing is not a destructive change + + Clause-②: yes (widening) (the save door newly accepts, without `force`, a removal it refused; owes the seat's `TIER_DEFAULT` review of record before the queue) + + - **What changed.** The object save's safety diff (`PUT /api/v1/meta/object/:name`, and every other door that reaches `saveMetaItem`'s destructive gate) now judges each finding by whether the field is stored, using the spec's storage predicate `isVirtualSearchField` (`SEARCH_VIRTUAL_TYPES`) on the field's own declaration — the predicate the sortability projection already reads. A `formula` field is computed on read and has no column (ADR-0079 addendum, item 9), so: + - removing a `formula` field saves `200` without `?force=true` (it answered `409 DESTRUCTIVE_CHANGE` with "existing data in this column will become inaccessible"); + - retyping a `formula` field into a stored kind saves without `force`: the new column starts empty, and no stored value is lost. + - **Not changed.** Removing a stored field, including an engine-computed but stored one (`autonumber`, `summary`), still answers `409 DESTRUCTIVE_CHANGE` with the same `field_removed` finding and message. Retyping a stored field into a `formula` still answers `409` with `field_type_change`. The `force` mechanism, the messages and the error codes are unchanged. + - **Who notices.** An author or an agent that removes a formula field no longer needs `force=true` for it, so `force=true` stays reserved for a real loss of stored data. + +### Patch Changes + +- e67ac4b: `duplicatePackage` no longer renames, in free text, a name that is both a prefixed package object and a field key of one of the package's objects. Such a name (for example a field keyed `acme_deal` on the object `acme_deal`) may name the field, so it is now rewritten only at object-reference properties (`object`, `reference`, `objectName`, a permission set's `objects` keys, …), the way a bare object name already is. A copied list view's `columns` and a copied form's `sections[].fields` keep naming the field the copy has, instead of a field named after the renamed object: the list view is no longer refused at the copy with `list-view-field-unknown`, and the form no longer copies a field the copy does not have. Free text naming such an object (a description) is left as stored; a prefixed object no field key spells is still renamed in free text as before. +- Updated dependencies [4bd7215] +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] +- Updated dependencies [45bec43] + - @objectstack/lint@18.0.0-next.5 + - @objectstack/spec@18.0.0-next.5 + - @objectstack/metadata-core@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/formula@18.0.0-next.5 + - @objectstack/metadata@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + - @objectstack/sdui-parser@18.0.0-next.5 + ## 18.0.0-next.4 ### Minor Changes diff --git a/packages/metadata-protocol/package.json b/packages/metadata-protocol/package.json index 9d6b1013ce4..3e72bda827a 100644 --- a/packages/metadata-protocol/package.json +++ b/packages/metadata-protocol/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata-protocol", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "ObjectStack metadata management protocol: sys_metadata CRUD, draft/publish, locks, package ownership, diagnostics (ADR-0076).", "type": "module", diff --git a/packages/metadata/CHANGELOG.md b/packages/metadata/CHANGELOG.md index 2c48f168f9f..743ead1117b 100644 --- a/packages/metadata/CHANGELOG.md +++ b/packages/metadata/CHANGELOG.md @@ -1,5 +1,25 @@ # @objectstack/metadata +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/metadata-core@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + - @objectstack/metadata-fs@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/metadata/package.json b/packages/metadata/package.json index c4073d1178f..dc000a1f294 100644 --- a/packages/metadata/package.json +++ b/packages/metadata/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Metadata loading, saving, and persistence for ObjectStack", "type": "module", diff --git a/packages/objectql/CHANGELOG.md b/packages/objectql/CHANGELOG.md index 4a750b98a13..6bdb323eeff 100644 --- a/packages/objectql/CHANGELOG.md +++ b/packages/objectql/CHANGELOG.md @@ -1,5 +1,78 @@ # @objectstack/objectql +## 18.0.0-next.5 + +### Minor Changes + +- fa26308: fix(objectql,runtime): a hook whose `handler` names a function gets `ctx.title(field?)` in-process, as an inline handler and a `body` do + + Clause-②: yes (widening) + + - **What was wrong.** A hook whose `handler` is a string naming a function ran in-process without `ctx.title`: `defineStack({ functions })` plus a hook naming an entry on a source boot (`@objectstack/verify`'s `bootStack(config)`, `os serve` over a config), and a string `handler` resolved from the artifact's `runtimeModule` (what `objectstack build` ships for a callable it could not lower to a `body`). The engine's binder resolved the name after the runtime had wrapped the inline handlers, so the function was called with the bare engine context and `await ctx.title()` threw `TypeError: ctx.title is not a function`. + - **What changed.** `bindHooksToEngine` (`@objectstack/objectql`) takes a `wrapHandler(handler, hook)` option, applied at bind to every handler a hook runs in-process, after a string `handler` resolves: an inline function, a name from the bind's `functions`, or a name the same package registered on the engine. A `body`'s handler (built by `bodyRunner`) never takes it. `ObjectQL.bindHooks` and the `IObjectQLEngine.bindHooks` contract (`@objectstack/spec`) carry the option. `bindAppArtifactHandlers` (`@objectstack/runtime`) passes the existing `withInProcessHookTitle` through it, in place of wrapping inline handlers before the bind, so the inline and the named handler take one wrap. + - **Unchanged.** A bind that passes no `wrapHandler` binds every handler exactly as resolved, so a host or harness that calls `bindHooks` itself, and a hook registered with `ql.registerHook(...)`, are not handed `ctx.title`. `HookContext` still declares no `title`. +- fb0d85b: feat(spec,objectql)!: a top-level action bound by `objectName` to an object another package owns is listed on that object wherever it is served, and a bound action whose object no loaded package registers fails the boot + + Clause-②: yes (narrowing) + + + + **BREAKING** (one narrowing beside a widening), shipped as `minor` under the launch-window convention for breaking changes. + + - **Widening** (`@objectstack/spec`, `@objectstack/objectql`): an action declared in a stack's top-level `actions` with `objectName` naming an object that another package owns now reaches that object. `defineStack()` accepts the action when the stack extends the object through `objectExtensions`, or when the object is a known platform object (`sys_organization` and the rest of the platform's named list). It keeps the action in the top-level `actions`. The engine's schema registry then attaches it to the object at the one step every object read ends in. That covers `GET /api/v1/meta/object/` (stored-row, MetadataService and registry layers alike), `engine.getSchema()` and the action router's object lookup, in whichever order the two packages register. The attached entry is the action's own declaration, so its `requiredPermissions`, `requiresMembershipReach` and execution identity are unchanged. An action the object already declares under the same name keeps the object's declaration. A disabled package's bound actions are not attached. Before this, such an action was refused by `defineStack()` whenever the stack declared an object of its own. Where it got through (an object-less stack, or `strict: false`), it registered but was listed on no object, so no client rendered it. + - **FROM** (`@objectstack/objectql`): a top-level action bound by `objectName` to an object no loaded package registers was registered and listed nowhere, and the boot succeeded. **TO:** the boot fails at `kernel:ready` with `INVALID_METADATA` (422), naming each such action, its package and the object. An artifact registered through the `manifest` service after the boot is refused before any of it registers. **Fix:** register the object (in the package or in one it depends on), or correct the action's `objectName`. + - **Unchanged:** a name `defineStack()` cannot attribute (an object this stack neither defines nor extends, and not a known platform object) is still refused at build with `STACK_CROSS_REFERENCE_INVALID`. A same-stack bound action is still merged into its object by `defineStack()` and is attached once. + + The `ObjectExtensionSchema` refusal for `actions` now says exactly this: declare a top-level action with `objectName: ''` in the same stack; the schema registry attaches it to the object wherever the object is served; a target no loaded package registers fails the boot. + +### Patch Changes + +- 9112bcd: fix(objectql): a record read that hydrates a file field no longer makes a `sys_file` access attempt for a reader without `sys_file` read + + The engine expands a stored file id by reading `sys_file`, and it issued that read as the caller. A member who may read the record but not `sys_file` (the platform default) was refused it, and the security layer logged `[Security] Access denied: operation 'find' on object 'sys_file'` at WARN on every by-id and list read by that member, although the body served was right. Those lines buried the real denials in the operator's log. + + The engine now asks the security service's `canReadObject('sys_file')` first, the same object-level read gate the security middleware applies, and serves a refused caller the field-owned answer without the read. Nothing else changes: + + - The served body is byte-identical, by id and by list, for a reader with and without `sys_file` read. A file owned by the record still hydrates, and every other id still reads `{ id, metadataRefused: true }`. + - A direct `GET /api/v1/data/sys_file/:id` by the same reader still answers `403 PERMISSION_DENIED` and still logs its denial. + - With no security service, or one that offers no `canReadObject`, the engine reads as the caller, as before. + + The ask is one cached permission check per read, not per row. + + Clause-②: no (no accept set or public surface moves: the served bodies and every refusal are unchanged; owes the seat's review of record at `TIER_DEFAULT` before the queue) +- 45bec43: fix(objectql): a formula reading a field its reference's target does not declare no longer makes the other formulas reading through the same reference read null + + Clause-②: no + + + + The formula read loads, once per page, every column the object's formulas read through each reference. When one formula named a field the target does not declare, the whole reference was answered as undeclared. Every formula reading through it then read `null` and reported the other formula's field. + + - The undeclared fields are left out of that shared read and judged for each formula on its own. + - A formula that names one reads `null`, with a fault report naming only its own undeclared fields. + - A formula that reads only declared fields through the same reference gets the value it gets when read alone (`?fields=`). + + What to do. Nothing. A formula that read `null` this way now reads its value. To find the formula at fault, re-save the object: the save door refuses the misspelt read and names the field. +- Updated dependencies [e67ac4b] +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] +- Updated dependencies [33a45cc] + - @objectstack/metadata-protocol@18.0.0-next.5 + - @objectstack/spec@18.0.0-next.5 + - @objectstack/metadata-core@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/formula@18.0.0-next.5 + - @objectstack/metadata@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Minor Changes diff --git a/packages/objectql/package.json b/packages/objectql/package.json index 079fdf290c6..6ba1db3ba29 100644 --- a/packages/objectql/package.json +++ b/packages/objectql/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/objectql", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Isomorphic ObjectQL Engine for ObjectStack", "main": "dist/index.js", diff --git a/packages/observability/CHANGELOG.md b/packages/observability/CHANGELOG.md index 9c5bb34f826..72388c9d3f3 100644 --- a/packages/observability/CHANGELOG.md +++ b/packages/observability/CHANGELOG.md @@ -1,5 +1,20 @@ # @objectstack/observability +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/observability/package.json b/packages/observability/package.json index 9e93f8312e2..62738f99fac 100644 --- a/packages/observability/package.json +++ b/packages/observability/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/observability", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Observability contracts and exporters for ObjectStack — MetricsRegistry, ErrorReporter, Logger plus noop/console/OTLP-HTTP exporters. Deployment-target neutral; runtime and services depend on this so the same instrumentation works on Cloudflare Workers, Node, and self-hosted Kubernetes.", "type": "module", diff --git a/packages/platform-objects/CHANGELOG.md b/packages/platform-objects/CHANGELOG.md index 26b4fd51706..9497566ee1c 100644 --- a/packages/platform-objects/CHANGELOG.md +++ b/packages/platform-objects/CHANGELOG.md @@ -1,5 +1,62 @@ # @objectstack/platform-objects +## 18.0.0-next.5 + +### Minor Changes + +- 2ec6827: feat(metadata-protocol): the draft save records `draftChanges` — which surface, actor and instant last changed each key path of a pending draft — and the strict draft read serves it + + Clause-②: yes (widening) + + - **Recorded by the draft save.** `saveMetaItem({ mode: 'draft', surface })` compares the body it writes with the body it replaces, inside the write's own transaction: the draft row, else (the draft's first save) the active row its publish would replace, else nothing, which records `[]`, the whole body. A path is the object keys from the body root to the deepest changed key; an array is one leaf, with no index. Each changed path is stamped `{ by: surface ?? 'api', actor, at }`, where `actor` is the value the save's history event carries (or `null`) and `at` is the write's instant as `toISOString()`. + - **Kept until publish or discard.** No two entries share a path: a save replaces every entry at or under each path it changes, so the longest prefix answers for a key. A save that changes no key path leaves the entries as they were. Publish and discard delete the draft row, and the entries with it, so the next draft starts clean. A `migrate-stored` rewrite and an active save record nothing. + - **Served on the strict draft read only.** `getMetaItem({ state: 'draft' })` answering a stored draft row carries `draftChanges` beside `item`. It is absent on the active read, the cached branch, the `?preview=draft` read, and a draft row whose saves recorded none (one saved before this release) — never `[]`. + - **Stored on the row.** `sys_metadata` gains a nullable `draft_changes` column (`@objectstack/metadata-core`'s `SysMetadataObject`), never inside the stored body. Schema sync adds it to an existing table on boot with no manual step (measured on SQLite and the memory driver). + - **Translated labels.** `@objectstack/platform-objects`' translation bundles carry the new column's label and help text in every shipped locale. + - **An unknown `surface` is refused.** In-process, a value outside `copilot | studio | api` is refused `400 INVALID_REQUEST` before anything is written. + +### Patch Changes + +- 4d12b23: Clause-②: no (copy only: no accept set or public surface moves; owes the seat's review of record at `TIER_DEFAULT` before the queue) + + fix(platform-objects): SSO provider, OAuth application and Connect-an-Agent copy says "this system" + + - **What changed.** Inside the running system, user-facing copy names the system the user is in as "this system". The `sys_sso_provider` object description ("External SSO identity providers (OIDC / SAML) this system federates login to"), the `clientId` help text of its Register SSO Provider action ("OAuth client ID issued by the IdP for this system."), and the OAuth applications grid's empty state ("Register an application to let its clients sign users in with this system.") now say so. The `en` copy of the Connect-an-Agent page subtitle follows the page's new text. + - **Translations.** The zh-CN, ja-JP and es-ES values of the same strings are re-translated, and the recorded source hash of the Connect-an-Agent subtitle moves to the new English text in all three, so those locales keep serving their translation rather than falling back to English. + - **Unchanged.** Every object, field, action and page name, and all behaviour. +- ff48407: Clause-②: no + + fix(spec): published copy that names the running system says "this system", or drops the noun, not "this environment" + + - **What changed.** Inside the running system, user-facing copy names the system the reader is in as "this system", or drops the noun. A permission set made here, not shipped by a package, is "authored in this system". + - The permission-set `packageId` refusal on the save, restore and publish doors now reads "a set written into no package is authored in this system, which an absent `packageId` states". + - The permission set's `packageId` help text in Setup ends "Leave empty for a set authored in this system." The English Setup forms bundle of `@objectstack/platform-objects` is regenerated from it. + - The `permission.managedBy` tombstone prescription, and the `permission-set-managed-by-retired` protocol-18 upgrade-guide entry, say "a set authored in this system carries neither". + - The `AudienceConfig.posture` and `AuthConfig.audience` describes say "who may self-register", with no noun. Their TSDoc says "who may become a user of this system's apps", the sentence the Setup Authentication group already reads. + - `AiModelsResponse.models` describes "Models this system offers". The `IMetadataService.listDiagnosed` TSDoc example reads "this system contains N items". + - **Kept "environment", where the word names a deployment or configuration scope.** `SeedLoaderConfig.env` ("Only load datasets matching this environment", the `prod | dev | test` tier), the `package-uninstall-environment-wide` upgrade-guide entry (the ADR-0131 environment-wide scope, as against an organization), and the environment artifact's consent-record TSDoc. + - **Unchanged.** Every error code, status, issue path, accepted value and export. Only the human-readable text moves. +- b7a688e: Clause-②: no + + fix(client,platform-objects): the `ai.models()` TSDoc and the translated permission-set `packageId` help say "this system", as the spec now does + + - **What changed.** Inside the running system, published copy names the system the reader is in as "this system", and a permission set made here, not shipped by a package, is "authored in this system". `@objectstack/spec` already says both (`AiModelsResponse.models`, the permission set's `packageId` help text); this follows it in two more places. + - The TSDoc of `client.ai.models()` now reads "Models this system offers in the chat model picker (cloud ADR-0028)". The citation is qualified as `cloud ADR-0028`: the AI service that serves this list is a cloud package, and this repository's ADR-0028 is about metadata naming. + - The zh-CN, ja-JP and es-ES values of the permission set's `packageId` help text in the Setup forms bundle now say 本系统 / このシステム / este sistema where they said 本环境 / この環境 / este entorno, matching the English text "Leave empty for a set authored in this system." + - **Unchanged.** Every method, route, type, form field, key and behaviour. No translation key is added or removed. +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/metadata-core@18.0.0-next.5 + ## 18.0.0-next.4 ### Minor Changes diff --git a/packages/platform-objects/package.json b/packages/platform-objects/package.json index 0c98e4c7bc5..0a2c83afe1d 100644 --- a/packages/platform-objects/package.json +++ b/packages/platform-objects/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/platform-objects", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Core platform object schemas for ObjectStack — identity, security, audit, tenant, and metadata objects", "main": "dist/index.js", diff --git a/packages/plugins/embedder-openai/CHANGELOG.md b/packages/plugins/embedder-openai/CHANGELOG.md index 0b061fea2b8..ae8016a4106 100644 --- a/packages/plugins/embedder-openai/CHANGELOG.md +++ b/packages/plugins/embedder-openai/CHANGELOG.md @@ -1,5 +1,20 @@ # @objectstack/embedder-openai +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/plugins/embedder-openai/package.json b/packages/plugins/embedder-openai/package.json index 68212e57cea..628f52efd6d 100644 --- a/packages/plugins/embedder-openai/package.json +++ b/packages/plugins/embedder-openai/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/embedder-openai", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "OpenAI-compatible embedder for ObjectStack — works against OpenAI, 阿里通义 DashScope, 智谱 BigModel, 硅基流动 SiliconFlow, 火山引擎 Doubao, MiniMax, Ollama, and any drop-in OpenAI-shape endpoint.", "main": "dist/index.js", diff --git a/packages/plugins/knowledge-memory/CHANGELOG.md b/packages/plugins/knowledge-memory/CHANGELOG.md index e9e9f410821..e8efec65e83 100644 --- a/packages/plugins/knowledge-memory/CHANGELOG.md +++ b/packages/plugins/knowledge-memory/CHANGELOG.md @@ -1,5 +1,22 @@ # @objectstack/knowledge-memory +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/service-knowledge@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/plugins/knowledge-memory/package.json b/packages/plugins/knowledge-memory/package.json index 43173600105..53710f796fe 100644 --- a/packages/plugins/knowledge-memory/package.json +++ b/packages/plugins/knowledge-memory/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/knowledge-memory", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "In-memory knowledge adapter for ObjectStack (dev / test reference implementation).", "main": "dist/index.js", diff --git a/packages/plugins/knowledge-ragflow/CHANGELOG.md b/packages/plugins/knowledge-ragflow/CHANGELOG.md index 801178c905f..d508198d44c 100644 --- a/packages/plugins/knowledge-ragflow/CHANGELOG.md +++ b/packages/plugins/knowledge-ragflow/CHANGELOG.md @@ -1,5 +1,22 @@ # @objectstack/knowledge-ragflow +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/service-knowledge@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/plugins/knowledge-ragflow/package.json b/packages/plugins/knowledge-ragflow/package.json index d2ee7818721..471d9cd5fe5 100644 --- a/packages/plugins/knowledge-ragflow/package.json +++ b/packages/plugins/knowledge-ragflow/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/knowledge-ragflow", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "RAGFlow knowledge adapter for ObjectStack — production-grade RAG via the Apache 2.0 RAGFlow REST API.", "main": "dist/index.js", diff --git a/packages/plugins/organizations/CHANGELOG.md b/packages/plugins/organizations/CHANGELOG.md index 07c073604b1..1a9bc9ef48c 100644 --- a/packages/plugins/organizations/CHANGELOG.md +++ b/packages/plugins/organizations/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/organizations +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [9524666] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/plugin-auth@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/plugins/organizations/package.json b/packages/plugins/organizations/package.json index 9c505243840..07b613587f4 100644 --- a/packages/plugins/organizations/package.json +++ b/packages/plugins/organizations/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/organizations", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Multi-organization runtime for ObjectStack — registers the `org-scoping` service that turns single-database row-level Organization isolation on: `organization_id` auto-stamp on insert, per-org seed replay, default-organization bootstrap, and the walled-posture membership-policy gate.", "main": "dist/index.js", diff --git a/packages/plugins/plugin-approvals/CHANGELOG.md b/packages/plugins/plugin-approvals/CHANGELOG.md index 8eeef8f74fb..e8cb62a5e8a 100644 --- a/packages/plugins/plugin-approvals/CHANGELOG.md +++ b/packages/plugins/plugin-approvals/CHANGELOG.md @@ -1,5 +1,28 @@ # @objectstack/plugin-approvals +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [4d12b23] +- Updated dependencies [ff48407] +- Updated dependencies [b7a688e] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/metadata-core@18.0.0-next.5 + - @objectstack/platform-objects@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/formula@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/plugins/plugin-approvals/package.json b/packages/plugins/plugin-approvals/package.json index 778af5c2c2f..c72e22ba9c0 100644 --- a/packages/plugins/plugin-approvals/package.json +++ b/packages/plugins/plugin-approvals/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-approvals", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Multi-step approval engine for ObjectStack — sys_approval_process + sys_approval_request + sys_approval_action + IApprovalService.", "main": "dist/index.js", diff --git a/packages/plugins/plugin-audit/CHANGELOG.md b/packages/plugins/plugin-audit/CHANGELOG.md index 50faa4c69be..e3465271fc2 100644 --- a/packages/plugins/plugin-audit/CHANGELOG.md +++ b/packages/plugins/plugin-audit/CHANGELOG.md @@ -1,5 +1,30 @@ # @objectstack/plugin-audit +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [9112bcd] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [4d12b23] +- Updated dependencies [ff48407] +- Updated dependencies [45bec43] +- Updated dependencies [b7a688e] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/objectql@18.0.0-next.5 + - @objectstack/metadata-core@18.0.0-next.5 + - @objectstack/platform-objects@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Minor Changes diff --git a/packages/plugins/plugin-audit/package.json b/packages/plugins/plugin-audit/package.json index 64c526aa39e..d5a1208072e 100644 --- a/packages/plugins/plugin-audit/package.json +++ b/packages/plugins/plugin-audit/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-audit", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Audit Plugin for ObjectStack — System audit log object and audit trail", "main": "dist/index.js", diff --git a/packages/plugins/plugin-auth/CHANGELOG.md b/packages/plugins/plugin-auth/CHANGELOG.md index b94aa2850ec..3644579cfbe 100644 --- a/packages/plugins/plugin-auth/CHANGELOG.md +++ b/packages/plugins/plugin-auth/CHANGELOG.md @@ -1,5 +1,40 @@ # Changelog +## 18.0.0-next.5 + +### Patch Changes + +- 9524666: fix(plugin-auth): the self-registration grant settles on the registrant's first membership, owned by that organization (ADR-0131 D3) + + Clause-②: no + + The declared self-registration permission set (`auth.audience.selfRegistrationPermissionSet`) is an assignment, and an assignment is an organization row (ADR-0131 D3). It is now written with the registrant's first membership and owned by that membership's organization, under every posture. It is never written without an organization. + + - **`single`: unchanged.** The membership reconciler binds the Default Organization in the same `user.create.after` hook, so a sign-up still ends with one grant, owned by the Default Organization. + - **A wall (`group`, `isolated`).** A self-registrant belongs to no organization at sign-up, so the sign-up writes no `sys_user_permission_set` row. It used to write one with no organization. The grant is held as a pending claim in `sys_verification`, which is deployment-level and survives a restart. The first `sys_member` row written for the user lands exactly one grant, owned by that organization. That row can come from creating an organization (the creator becomes its owner), accepting an invitation, being added by an administrator, or any other membership writer. A later membership writes no second grant. + - **The claim waits 365 days.** A registrant who first joins an organization after that holds only the deployment's baseline. An engine with no middleware seam cannot settle a claim, so there a registrant with no organization is reported ungranted at `error` at sign-up instead. + - Grants already written without an organization by earlier walled sign-ups are not touched here. +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [4d12b23] +- Updated dependencies [ff48407] +- Updated dependencies [b7a688e] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/rest@18.0.0-next.5 + - @objectstack/platform-objects@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/service-messaging@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Minor Changes diff --git a/packages/plugins/plugin-auth/package.json b/packages/plugins/plugin-auth/package.json index cfa5daacad3..a4ece37658b 100644 --- a/packages/plugins/plugin-auth/package.json +++ b/packages/plugins/plugin-auth/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-auth", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Authentication & Identity Plugin for ObjectStack", "main": "dist/index.js", diff --git a/packages/plugins/plugin-dev/CHANGELOG.md b/packages/plugins/plugin-dev/CHANGELOG.md index 53de75e397d..aecd443303b 100644 --- a/packages/plugins/plugin-dev/CHANGELOG.md +++ b/packages/plugins/plugin-dev/CHANGELOG.md @@ -1,5 +1,42 @@ # @objectstack/plugin-dev +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [8ed3786] +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [9112bcd] +- Updated dependencies [94e60c0] +- Updated dependencies [94e60c0] +- Updated dependencies [9524666] +- Updated dependencies [adb7910] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] +- Updated dependencies [45bec43] +- Updated dependencies [964a237] + - @objectstack/plugin-hono-server@18.0.0-next.5 + - @objectstack/spec@18.0.0-next.5 + - @objectstack/objectql@18.0.0-next.5 + - @objectstack/runtime@18.0.0-next.5 + - @objectstack/plugin-security@18.0.0-next.5 + - @objectstack/plugin-auth@18.0.0-next.5 + - @objectstack/rest@18.0.0-next.5 + - @objectstack/account@18.0.0-next.5 + - @objectstack/setup@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/driver-memory@18.0.0-next.5 + - @objectstack/service-i18n@18.0.0-next.5 + - @objectstack/service-realtime@18.0.0-next.5 + - @objectstack/service-storage@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/plugins/plugin-dev/package.json b/packages/plugins/plugin-dev/package.json index aab28eabe39..b7c124c20ff 100644 --- a/packages/plugins/plugin-dev/package.json +++ b/packages/plugins/plugin-dev/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-dev", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Development Assembly Plugin for ObjectStack — wires the real platform stack for zero-config local development", "main": "dist/index.js", diff --git a/packages/plugins/plugin-email/CHANGELOG.md b/packages/plugins/plugin-email/CHANGELOG.md index d035f1987f3..bef1a718310 100644 --- a/packages/plugins/plugin-email/CHANGELOG.md +++ b/packages/plugins/plugin-email/CHANGELOG.md @@ -1,5 +1,26 @@ # @objectstack/plugin-email +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [4d12b23] +- Updated dependencies [ff48407] +- Updated dependencies [b7a688e] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/platform-objects@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/formula@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/plugins/plugin-email/package.json b/packages/plugins/plugin-email/package.json index 9d516003e66..264633fe350 100644 --- a/packages/plugins/plugin-email/package.json +++ b/packages/plugins/plugin-email/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-email", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Email service plugin for ObjectStack — IEmailService + transport-pluggable outbound delivery with sys_email persistence.", "main": "dist/index.js", diff --git a/packages/plugins/plugin-hono-server/CHANGELOG.md b/packages/plugins/plugin-hono-server/CHANGELOG.md index 33259a1f092..ac437b63b54 100644 --- a/packages/plugins/plugin-hono-server/CHANGELOG.md +++ b/packages/plugins/plugin-hono-server/CHANGELOG.md @@ -1,5 +1,31 @@ # @objectstack/plugin-hono-server +## 18.0.0-next.5 + +### Patch Changes + +- 8ed3786: The `/auth/me` endpoints resolve their caller through `@objectstack/core`'s `resolveRequestExecutionContext`, the one request-to-`ExecutionContext` composition + + Clause-②: no + + - `makeExecutionContextResolver`, which `GET /auth/me/permissions`, `GET /auth/me/localization` and `GET /me/apps` call, resolves the caller by calling `resolveRequestExecutionContext` with this door's differences as named parameters: `anonymous: 'fail-closed'`, `authGate: 'withhold'`, `credentials: 'session-only'`, `sessionApi: 'required'`, `session: 'request'`, no tenancy posture, `localization: 'withhold'`, no request locale, `accessToken: 'withhold'`, and no OAuth provenance or admission channel. The per-request service reads, the environment-kernel resolution and the fail-closed `catch` stay at the door. Every platform door that resolves a request's caller now calls the one composition. + - One answer changes. When the auth service's session read carries `session.userId` but no `user.id` (no user object, a user without an id, or `user.id: null`), these endpoints answered as signed out; they now answer as signed in as that user, which is how the runtime dispatcher, REST, the settings routes and the storage download already read it. No session producer yields that shape: in this repository better-auth's session read returns no session when the session's user is missing and plugin-auth passes its read through, and cloud's control plane uses the same plugin-auth read. + - Every other answer is unchanged: no credential, an unrecognised cookie, a failing session read, an API key alone and a host with no auth service get each route's signed-out body; a session the authentication policy holds is still served on these allow-listed routes, with no `authGate` on its context; an unreadable permission store is still the host's `503 SERVICE_UNAVAILABLE`. + - Nothing to do for a consumer: no export, route, configuration key or response shape changed. +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/observability@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/plugins/plugin-hono-server/package.json b/packages/plugins/plugin-hono-server/package.json index c2670a1647e..0d02ab109c7 100644 --- a/packages/plugins/plugin-hono-server/package.json +++ b/packages/plugins/plugin-hono-server/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-hono-server", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Standard Hono Server Adapter for ObjectStack Runtime", "main": "dist/index.js", diff --git a/packages/plugins/plugin-pinyin-search/CHANGELOG.md b/packages/plugins/plugin-pinyin-search/CHANGELOG.md index 5cbc94a6c91..443831f9e90 100644 --- a/packages/plugins/plugin-pinyin-search/CHANGELOG.md +++ b/packages/plugins/plugin-pinyin-search/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/plugin-pinyin-search +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [9112bcd] +- Updated dependencies [fb0d85b] +- Updated dependencies [45bec43] + - @objectstack/objectql@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/plugins/plugin-pinyin-search/package.json b/packages/plugins/plugin-pinyin-search/package.json index 2a03ffe62e8..f249f3ba7a5 100644 --- a/packages/plugins/plugin-pinyin-search/package.json +++ b/packages/plugins/plugin-pinyin-search/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-pinyin-search", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Pinyin search recall for ObjectStack — populates the hidden `__search` companion column (full pinyin + initials of the display/name field) so `$search` hits CJK names typed as pinyin. Locale-gated via OS_SEARCH_PINYIN_ENABLED (#2486).", "main": "dist/index.js", diff --git a/packages/plugins/plugin-security/CHANGELOG.md b/packages/plugins/plugin-security/CHANGELOG.md index 20d43bec52a..47d8562049e 100644 --- a/packages/plugins/plugin-security/CHANGELOG.md +++ b/packages/plugins/plugin-security/CHANGELOG.md @@ -1,5 +1,47 @@ # @objectstack/plugin-security +## 18.0.0-next.5 + +### Minor Changes + +- 94e60c0: fix(plugin-security)!: the row-policy collection applies an object's declared `defaultRowScope` when no permission set the caller holds carries a row policy for the object + + Clause-②: no (narrowing) — the narrowing is real only for a principal with no platform baseline whose permission sets carry no row policy for an object that declares a default; no object in this release declares one, and no export, option, schema or stored shape moves. + + + + **BREAKING** (an accept-set narrowing), shipped as `minor` under the launch-window convention for breaking changes. + + `ObjectSchema.defaultRowScope` declares an object's default row-level security policy. Until now no server read it. The security plugin's row-policy collection (`collectRLSPolicies`), which every read, write and explain composes from, now applies it: + + - **When it applies.** When the policies the caller's permission sets carry for the object and the operation come out empty, the object's default is collected in their place, for the declaring object. Empty means what the collection already meant by it: a held policy for every object (`'*'`) counts, while a held policy that is switched off, outside the caller's positions, or for another operation does not. + - **How it is judged.** Exactly as a held policy: its `operation`, `positions` and `enabled` decide where it applies, and its `using` and `check` compile through the same compiler. So it scopes reads, the by-id and bulk write filters, and the post-image check, and `checkAuthoredRowWrite` reads it as the declaration it is. A `using` the compiler cannot lower is dropped with the same warning and fails closed to zero rows, as an authored policy's does. + - **Explain** names an applied default as the object's own declaration, with its `name`, `label` and `description`: the row-level layer's `detail` says so, and a record-grained explanation names the rule after the default, reached `via: 'object_default'`. + - **Unchanged:** a policy an authored set carries for the object is used as authored, with the default not added to it; a principal whose superuser bypass skips row policies never reaches the collection; an object that declares no default collects exactly what it collected before. A deployment that composes the platform baseline is unaffected for the identity objects, whose shipped sets carry their own policies. + + What changes for you: nothing until an object declares `defaultRowScope`. Once one does, a principal whose permission sets carry no row policy for it reads only the rows the default admits. To give such a principal a different scope, put a row policy for the object in a permission set it holds; that policy is then used instead of the default. + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [4d12b23] +- Updated dependencies [ff48407] +- Updated dependencies [b7a688e] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/metadata-core@18.0.0-next.5 + - @objectstack/platform-objects@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/formula@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Minor Changes diff --git a/packages/plugins/plugin-security/package.json b/packages/plugins/plugin-security/package.json index 03641e72be3..5026a95585c 100644 --- a/packages/plugins/plugin-security/package.json +++ b/packages/plugins/plugin-security/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-security", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Security Plugin for ObjectStack — RBAC, RLS, and Field-Level Security Runtime", "main": "dist/index.js", diff --git a/packages/plugins/plugin-sharing/CHANGELOG.md b/packages/plugins/plugin-sharing/CHANGELOG.md index 40525e2138e..8350c2fddc9 100644 --- a/packages/plugins/plugin-sharing/CHANGELOG.md +++ b/packages/plugins/plugin-sharing/CHANGELOG.md @@ -1,5 +1,63 @@ # @objectstack/plugin-sharing +## 18.0.0-next.5 + +### Minor Changes + +- 964a237: fix(plugin-sharing,runtime)!: a declared sharing rule is read-only and clonable — no rule, new or renamed, can take its name, and it is switched off through the activation ledger, which revokes its grants at once + + Clause-②: no (narrowing) + + + + **BREAKING** (an accept-set narrowing), shipped as `minor` under the launch-window convention for breaking changes. + + ADR-0131 D6 charts declared sharing rules under regime C: a rule a package declares is read-only, it is customised by a clone under another name, and it is switched off through the deployment-level activation ledger (`sys_metadata_activation`), like flows, actions, positions and permission sets. Same-name shadowing is retired. + + What is refused now: + + - `POST /api/v1/sharing/rules` (and `SharingRuleService.defineRule`) creating a rule under a declared rule's name — FROM `201`, the new row replacing the declared rule in its scope, TO `409 RESOURCE_CONFLICT` naming the declared rule. Fix: create your rule under another name, and switch the declared one off with `POST /api/v1/security/_activation/sharing_rule/` and `{ "enabled": false }`. + - A `/data` insert of a `sys_sharing_rule` row under a declared rule's name, or an update that renames a row onto one — FROM `201` / `200`, TO `409 RESOURCE_CONFLICT`. Fix: the same. + + What is added: + + - **The switch.** `POST /api/v1/security/_activation/sharing_rule/:name` writes the declared rule's activation row, behind the same authority as the other activation doors: `manage_metadata`, and the platform operator under a wall, because the row covers every organization. A declared rule switched off is served nowhere. The write revokes every grant that carries the rule's name in the same request, and switching it back on re-derives them. The name must be a declared rule (`404` otherwise; a rule your organization authored keeps its own `active` field), and with no sharing-rule service bound the door answers `503`. + - **A declaration over a stored row is reported, never made an overlay.** When a package declares a rule whose name a `sys_sharing_rule` row already holds in a scope (a package upgrade, or a copy customised before this release), the row keeps answering as its own rule. The declaration is not served beside it, and that is logged at `error` once per name and scope per process, with the remedy. + + Unchanged: rules whose name no declaration holds are created, renamed and switched as before. A stored row that already holds a declared name stays editable as itself. `DELETE /api/v1/sharing/rules/:idOrName` on a declared rule is still `403 PERMISSION_DENIED`, and is now answered the same way when the rule is switched off. + +### Patch Changes + +- 9847f87: fix(plugin-sharing): a minted share link carries an organization, never a NULL one (ADR-0131 D9) + + Clause-②: no + + - **What changed.** `ShareLinkService.createLink` stamps `sys_share_link.organization_id`. It takes the organization of the linked record, read under the system context. When the record names none, it takes the acting context's organization (`tenantId`). When neither names one, it applies the system-write rule: under `single`, the Default Organization (the only one there is); under a wall (`group` or `isolated`), the mint is refused with `ERR_SYSTEM_WRITE_ORGANIZATION_REQUIRED` (status 500) and no link is written. The same refusal answers a `single` install that holds no organization or several. Before, every link was written with `organization_id` NULL. + - **A link on another organization's record.** Under `group`, a member active in one organization can mint on a visible record of another. The link carries the record's organization, not the session's. + - **What stays the same.** Under `single` nothing a user sees changes. The mint response keeps the `ShareLink` shape and carries no organization field. A composition that registers no `sys_organization` object writes links as before. + - **Who can meet the refusal.** No in-repo caller reaches it. Both share-link routes need a signed-in caller. Under a wall, an organization-less API key is refused at admission, and an organization-less session cannot see a record that has a tenant column, so its mint is refused before the stamp. The refusal is reached by a walled, organization-less caller minting on an object with no tenant column, or by a system caller that threads no `tenantId`. The fix is to pass the organization on the context (`{ isSystem: true, tenantId }`). +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [9112bcd] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [4d12b23] +- Updated dependencies [ff48407] +- Updated dependencies [45bec43] +- Updated dependencies [b7a688e] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/objectql@18.0.0-next.5 + - @objectstack/metadata-core@18.0.0-next.5 + - @objectstack/platform-objects@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/formula@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Minor Changes diff --git a/packages/plugins/plugin-sharing/package.json b/packages/plugins/plugin-sharing/package.json index 6a74d80f531..2b97f28fe9d 100644 --- a/packages/plugins/plugin-sharing/package.json +++ b/packages/plugins/plugin-sharing/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-sharing", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Record-level sharing for ObjectStack — sys_record_share + middleware that enforces sharingModel + ISharingService.", "main": "dist/index.js", diff --git a/packages/plugins/plugin-webhooks/CHANGELOG.md b/packages/plugins/plugin-webhooks/CHANGELOG.md index 8de8beba767..c2eb2e604c0 100644 --- a/packages/plugins/plugin-webhooks/CHANGELOG.md +++ b/packages/plugins/plugin-webhooks/CHANGELOG.md @@ -1,5 +1,27 @@ # @objectstack/plugin-webhooks +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [4d12b23] +- Updated dependencies [ff48407] +- Updated dependencies [b7a688e] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/platform-objects@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/service-messaging@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/plugins/plugin-webhooks/package.json b/packages/plugins/plugin-webhooks/package.json index 770244494fa..3db7510509f 100644 --- a/packages/plugins/plugin-webhooks/package.json +++ b/packages/plugins/plugin-webhooks/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-webhooks", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Persistent, cluster-aware webhook dispatcher. Durable outbox + per-partition cluster.lock for exactly-once-ish delivery across nodes. See content/docs/concepts/webhook-delivery.mdx.", "type": "module", diff --git a/packages/qa/dogfood/CHANGELOG.md b/packages/qa/dogfood/CHANGELOG.md index 6f849c10d31..52452810e3a 100644 --- a/packages/qa/dogfood/CHANGELOG.md +++ b/packages/qa/dogfood/CHANGELOG.md @@ -1,5 +1,60 @@ # @objectstack/dogfood +## 0.0.48-next.5 + +### Patch Changes + +- Updated dependencies [9847f87] +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [9112bcd] +- Updated dependencies [94e60c0] +- Updated dependencies [94e60c0] +- Updated dependencies [9524666] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [4d12b23] +- Updated dependencies [4d12b23] +- Updated dependencies [ff48407] +- Updated dependencies [45bec43] +- Updated dependencies [964a237] +- Updated dependencies [b7a688e] + - @objectstack/plugin-sharing@18.0.0-next.5 + - @objectstack/spec@18.0.0-next.5 + - @objectstack/objectql@18.0.0-next.5 + - @objectstack/runtime@18.0.0-next.5 + - @objectstack/plugin-security@18.0.0-next.5 + - @objectstack/plugin-auth@18.0.0-next.5 + - @objectstack/metadata-core@18.0.0-next.5 + - @objectstack/platform-objects@18.0.0-next.5 + - @objectstack/mcp@18.0.0-next.5 + - @objectstack/example-crm@4.0.100-next.5 + - @objectstack/example-multi-package@0.0.7-next.5 + - @objectstack/example-showcase@0.3.22-next.5 + - @objectstack/verify@18.0.0-next.5 + - @objectstack/service-datasource@18.0.0-next.5 + - @objectstack/plugin-approvals@18.0.0-next.5 + - @objectstack/connector-mcp@18.0.0-next.5 + - @objectstack/connector-openapi@18.0.0-next.5 + - @objectstack/connector-rest@18.0.0-next.5 + - @objectstack/formula@18.0.0-next.5 + - @objectstack/metadata@18.0.0-next.5 + - @objectstack/plugin-audit@18.0.0-next.5 + - @objectstack/plugin-email@18.0.0-next.5 + - @objectstack/plugin-webhooks@18.0.0-next.5 + - @objectstack/service-analytics@18.0.0-next.5 + - @objectstack/service-messaging@18.0.0-next.5 + - @objectstack/service-storage@18.0.0-next.5 + - @objectstack/trigger-record-change@18.0.0-next.5 + - @objectstack/trigger-schedule@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + - @objectstack/plugin-pinyin-search@18.0.0-next.5 + ## 0.0.48-next.4 ### Patch Changes diff --git a/packages/qa/dogfood/package.json b/packages/qa/dogfood/package.json index f2047b5a60f..7685dcba5de 100644 --- a/packages/qa/dogfood/package.json +++ b/packages/qa/dogfood/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/dogfood", - "version": "0.0.48-next.4", + "version": "0.0.48-next.5", "private": true, "license": "Apache-2.0", "description": "Dogfood regression gate — hand-written golden tests that boot real example apps through @objectstack/verify's in-process HTTP stack, pinning historical runtime regressions (#2018 timezone bucketing, #1994 cross-owner RLS, #2004 field fidelity) that static checks miss.", diff --git a/packages/qa/downstream-contract/CHANGELOG.md b/packages/qa/downstream-contract/CHANGELOG.md index 23d5c807364..8882d1f621a 100644 --- a/packages/qa/downstream-contract/CHANGELOG.md +++ b/packages/qa/downstream-contract/CHANGELOG.md @@ -1,5 +1,20 @@ # @objectstack/downstream-contract +## 0.0.46-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + ## 0.0.46-next.4 ### Patch Changes diff --git a/packages/qa/downstream-contract/package.json b/packages/qa/downstream-contract/package.json index 6ae8ecc6643..3f5af324c1d 100644 --- a/packages/qa/downstream-contract/package.json +++ b/packages/qa/downstream-contract/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/downstream-contract", - "version": "0.0.46-next.4", + "version": "0.0.46-next.5", "description": "Frozen third-party consumer fixture — a backward-compatibility gate for @objectstack/spec. Authored the way an external project on a published release authors metadata; if a spec change breaks it, that change is breaking (#2035).", "license": "Apache-2.0", "private": true, diff --git a/packages/qa/http-conformance/CHANGELOG.md b/packages/qa/http-conformance/CHANGELOG.md index 3282dbb8828..ac8400352e5 100644 --- a/packages/qa/http-conformance/CHANGELOG.md +++ b/packages/qa/http-conformance/CHANGELOG.md @@ -1,5 +1,11 @@ # @objectstack/http-conformance +## 0.1.8-next.5 + +### Patch Changes + +- @objectstack/core@18.0.0-next.5 + ## 0.1.8-next.4 ### Patch Changes diff --git a/packages/qa/http-conformance/package.json b/packages/qa/http-conformance/package.json index c01aac35ca6..ed4ab5f254f 100644 --- a/packages/qa/http-conformance/package.json +++ b/packages/qa/http-conformance/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/http-conformance", - "version": "0.1.8-next.4", + "version": "0.1.8-next.5", "private": true, "license": "Apache-2.0", "description": "HTTP transport-port conformance gate (ADR-0076 D11/OQ#10, #2462) — a zero-dependency node:http reference implementation of IHttpServer plus a cross-adapter suite that boots the dispatcher bridge and REST generator on it AND on plugin-hono-server, pinning that the port stays free of framework-isms. Not published; validation instrument, not a product server.", diff --git a/packages/rest/CHANGELOG.md b/packages/rest/CHANGELOG.md index 0a4521ec11a..d0ca834fc84 100644 --- a/packages/rest/CHANGELOG.md +++ b/packages/rest/CHANGELOG.md @@ -1,5 +1,56 @@ # @objectstack/rest +## 18.0.0-next.5 + +### Minor Changes + +- adb7910: fix(rest)!: an import undo runs under the object's hooks, record-change triggers and state machine for every caller but the system principal, and reports each row a control refuses instead of counting it as reverted + + Clause-②: yes (narrowing) + + + + **BREAKING** (the import undo door takes fewer controls off its writes, and claims less: `POST /api/v1/data/import/jobs/:jobId/undo` keeps `skipAutomations` and `skipStateMachine` on its reversal writes for the system principal alone, so every other caller's undo, administrators included, runs under the object's metadata-bound hooks, record-change triggers and `state_machine` rule; and an undo that leaves any row unreverted now answers `success: false` and leaves the job unstamped, where it answered `success: true` and stamped it reverted), shipped as `minor` under the launch-window convention for breaking changes. The cost is named, not hidden: undoing an ordinary import may fire record-change automation again (a notification, an approval re-opening on a restored amount), which is the app's declared behaviour for those writes. If a row now stays unreverted, read its entry in `failures`, resolve what refuses it on the app (complete the approval, reopen the record) and undo the job again, which retries only the rows that remain; a reversal that must skip the controls runs in-process as the system principal. + + The same rule now holds at every import door: only the system principal may take an app's declared controls off a write. The import doors already refused a caller-chosen opt-out from everyone else; the undo door chose its skips itself, for every caller, and no longer does. + + **What changes.** The undo's deletes (of the records the job created) and restores (of the fields it updated) are written as `ExecutionContext.isSystem` decides: the system principal keeps `skipAutomations` and `skipStateMachine`; every other caller writes with neither. A reversal that a hook, the state machine, a record lock or anything else refuses is caught for its row and never swallowed: + + - the answer lists it in a new `failures` array, one `{ id, action, code, error }` per row, where `action` is `delete` or `restore` and `code` / `error` are what the single-record write door answers the same error with (a hook's refusal reads in the hook's own sentence); `failed` is its length and `success` is `false`; + - the job's stored undo log is rewritten to exactly the unreverted rows, each refusal beside them under `failures`, and `reverted_at` is not stamped. The job stays `undoable`, and undoing it again retries only those rows, never one already reverted. `reverted_at` (`revertedAt` on the job's progress and history) now means every row was reverted. + + **What stays as it was.** An undo that no control refuses reverts every row and answers as before, with `failures: []`. A historical job (`treatAsHistorical`) keeps `preserveAudit` on its undo for every caller. The job-row write that records the outcome stays engine-owned (ADR-0103). The 404, 409 `ALREADY_REVERTED` and 422 `NOT_UNDOABLE` answers are unchanged, and the import doors and their opt-out gate are untouched. +- 2ec6827: feat(rest,runtime): `PUT /meta/:type/:name?surface=studio|api` declares the save's authoring surface on both HTTP save doors; `?surface=copilot` is refused + + Clause-②: yes (widening) + + - **The spelling.** `?surface=` joins the save door's closed query set on `RestServer` and on the runtime dispatcher (`META_ITEM_SAVE_PARAMS`), read once through `metaSaveRequestOptions` beside `?mode=`. A draft save stamps it on each key path it changes (`draftChanges[].by` on the strict draft read); without it the save is recorded as `api`. `?surface=studio` is the spelling for a person's save in Studio. + - **The refusals.** `?surface=copilot` is `400 VALIDATION_ERROR`: it marks a write as the AI copilot's, which only an in-process tool calling `saveMetaItem` may state. Any other value, a case variant included, is the same `400`, never read as `api`; a repeated `?surface=` is refused by the arity rule. Each refusal writes nothing. + - **Why a query parameter.** It is what the save is asked to do, as `?mode=` and `?force=` are, beside the HTTP preconditions the headers carry; and it needs no CORS allow-list entry, which a custom request header would. + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [4d12b23] +- Updated dependencies [ff48407] +- Updated dependencies [b7a688e] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/metadata-core@18.0.0-next.5 + - @objectstack/platform-objects@18.0.0-next.5 + - @objectstack/service-package@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/metadata@18.0.0-next.5 + - @objectstack/observability@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Minor Changes diff --git a/packages/rest/package.json b/packages/rest/package.json index 373fac44278..0ab4689adea 100644 --- a/packages/rest/package.json +++ b/packages/rest/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/rest", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "ObjectStack REST API Server - automatic REST endpoint generation from protocol", "type": "module", diff --git a/packages/runtime/CHANGELOG.md b/packages/runtime/CHANGELOG.md index a7b958450f3..4ad7c220499 100644 --- a/packages/runtime/CHANGELOG.md +++ b/packages/runtime/CHANGELOG.md @@ -1,5 +1,85 @@ # @objectstack/runtime +## 18.0.0-next.5 + +### Minor Changes + +- 2ec6827: feat(rest,runtime): `PUT /meta/:type/:name?surface=studio|api` declares the save's authoring surface on both HTTP save doors; `?surface=copilot` is refused + + Clause-②: yes (widening) + + - **The spelling.** `?surface=` joins the save door's closed query set on `RestServer` and on the runtime dispatcher (`META_ITEM_SAVE_PARAMS`), read once through `metaSaveRequestOptions` beside `?mode=`. A draft save stamps it on each key path it changes (`draftChanges[].by` on the strict draft read); without it the save is recorded as `api`. `?surface=studio` is the spelling for a person's save in Studio. + - **The refusals.** `?surface=copilot` is `400 VALIDATION_ERROR`: it marks a write as the AI copilot's, which only an in-process tool calling `saveMetaItem` may state. Any other value, a case variant included, is the same `400`, never read as `api`; a repeated `?surface=` is refused by the arity rule. Each refusal writes nothing. + - **Why a query parameter.** It is what the save is asked to do, as `?mode=` and `?force=` are, beside the HTTP preconditions the headers carry; and it needs no CORS allow-list entry, which a custom request header would. +- 964a237: fix(plugin-sharing,runtime)!: a declared sharing rule is read-only and clonable — no rule, new or renamed, can take its name, and it is switched off through the activation ledger, which revokes its grants at once + + Clause-②: no (narrowing) + + + + **BREAKING** (an accept-set narrowing), shipped as `minor` under the launch-window convention for breaking changes. + + ADR-0131 D6 charts declared sharing rules under regime C: a rule a package declares is read-only, it is customised by a clone under another name, and it is switched off through the deployment-level activation ledger (`sys_metadata_activation`), like flows, actions, positions and permission sets. Same-name shadowing is retired. + + What is refused now: + + - `POST /api/v1/sharing/rules` (and `SharingRuleService.defineRule`) creating a rule under a declared rule's name — FROM `201`, the new row replacing the declared rule in its scope, TO `409 RESOURCE_CONFLICT` naming the declared rule. Fix: create your rule under another name, and switch the declared one off with `POST /api/v1/security/_activation/sharing_rule/` and `{ "enabled": false }`. + - A `/data` insert of a `sys_sharing_rule` row under a declared rule's name, or an update that renames a row onto one — FROM `201` / `200`, TO `409 RESOURCE_CONFLICT`. Fix: the same. + + What is added: + + - **The switch.** `POST /api/v1/security/_activation/sharing_rule/:name` writes the declared rule's activation row, behind the same authority as the other activation doors: `manage_metadata`, and the platform operator under a wall, because the row covers every organization. A declared rule switched off is served nowhere. The write revokes every grant that carries the rule's name in the same request, and switching it back on re-derives them. The name must be a declared rule (`404` otherwise; a rule your organization authored keeps its own `active` field), and with no sharing-rule service bound the door answers `503`. + - **A declaration over a stored row is reported, never made an overlay.** When a package declares a rule whose name a `sys_sharing_rule` row already holds in a scope (a package upgrade, or a copy customised before this release), the row keeps answering as its own rule. The declaration is not served beside it, and that is logged at `error` once per name and scope per process, with the remedy. + + Unchanged: rules whose name no declaration holds are created, renamed and switched as before. A stored row that already holds a declared name stays editable as itself. `DELETE /api/v1/sharing/rules/:idOrName` on a declared rule is still `403 PERMISSION_DENIED`, and is now answered the same way when the rule is switched off. + +### Patch Changes + +- fa26308: fix(objectql,runtime): a hook whose `handler` names a function gets `ctx.title(field?)` in-process, as an inline handler and a `body` do + + Clause-②: yes (widening) + + - **What was wrong.** A hook whose `handler` is a string naming a function ran in-process without `ctx.title`: `defineStack({ functions })` plus a hook naming an entry on a source boot (`@objectstack/verify`'s `bootStack(config)`, `os serve` over a config), and a string `handler` resolved from the artifact's `runtimeModule` (what `objectstack build` ships for a callable it could not lower to a `body`). The engine's binder resolved the name after the runtime had wrapped the inline handlers, so the function was called with the bare engine context and `await ctx.title()` threw `TypeError: ctx.title is not a function`. + - **What changed.** `bindHooksToEngine` (`@objectstack/objectql`) takes a `wrapHandler(handler, hook)` option, applied at bind to every handler a hook runs in-process, after a string `handler` resolves: an inline function, a name from the bind's `functions`, or a name the same package registered on the engine. A `body`'s handler (built by `bodyRunner`) never takes it. `ObjectQL.bindHooks` and the `IObjectQLEngine.bindHooks` contract (`@objectstack/spec`) carry the option. `bindAppArtifactHandlers` (`@objectstack/runtime`) passes the existing `withInProcessHookTitle` through it, in place of wrapping inline handlers before the bind, so the inline and the named handler take one wrap. + - **Unchanged.** A bind that passes no `wrapHandler` binds every handler exactly as resolved, so a host or harness that calls `bindHooks` itself, and a hook registered with `ql.registerHook(...)`, are not handed `ctx.title`. `HookContext` still declares no `title`. +- Updated dependencies [e67ac4b] +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [9112bcd] +- Updated dependencies [94e60c0] +- Updated dependencies [94e60c0] +- Updated dependencies [9524666] +- Updated dependencies [adb7910] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] +- Updated dependencies [45bec43] +- Updated dependencies [33a45cc] + - @objectstack/metadata-protocol@18.0.0-next.5 + - @objectstack/spec@18.0.0-next.5 + - @objectstack/objectql@18.0.0-next.5 + - @objectstack/plugin-security@18.0.0-next.5 + - @objectstack/plugin-auth@18.0.0-next.5 + - @objectstack/rest@18.0.0-next.5 + - @objectstack/metadata-core@18.0.0-next.5 + - @objectstack/service-datasource@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/driver-memory@18.0.0-next.5 + - @objectstack/driver-sql@18.0.0-next.5 + - @objectstack/driver-sqlite-wasm@18.0.0-next.5 + - @objectstack/driver-turso@18.0.0-next.5 + - @objectstack/formula@18.0.0-next.5 + - @objectstack/metadata@18.0.0-next.5 + - @objectstack/observability@18.0.0-next.5 + - @objectstack/service-cluster@18.0.0-next.5 + - @objectstack/service-i18n@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Minor Changes diff --git a/packages/runtime/package.json b/packages/runtime/package.json index 108fa9328b1..d0a6147c567 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/runtime", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "ObjectStack Core Runtime & Query Engine", "type": "module", diff --git a/packages/sdui-parser/CHANGELOG.md b/packages/sdui-parser/CHANGELOG.md index 644f0eeeb86..a56171a9c30 100644 --- a/packages/sdui-parser/CHANGELOG.md +++ b/packages/sdui-parser/CHANGELOG.md @@ -1,5 +1,9 @@ # @objectstack/sdui-parser +## 18.0.0-next.5 + +No changes in this release. + ## 18.0.0-next.4 No changes in this release. diff --git a/packages/sdui-parser/package.json b/packages/sdui-parser/package.json index c984309121c..38884f56bde 100644 --- a/packages/sdui-parser/package.json +++ b/packages/sdui-parser/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/sdui-parser", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "ObjectStack constrained JSX-source → SDUI SchemaNode tree compiler (parse, never execute). Isomorphic, zero React. ADR-0080.", "main": "dist/index.js", diff --git a/packages/services/service-analytics/CHANGELOG.md b/packages/services/service-analytics/CHANGELOG.md index 0bb4d283bd0..a9a8fc29d3a 100644 --- a/packages/services/service-analytics/CHANGELOG.md +++ b/packages/services/service-analytics/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog — @objectstack/service-analytics +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/services/service-analytics/package.json b/packages/services/service-analytics/package.json index db34b3f621a..3b1ff992299 100644 --- a/packages/services/service-analytics/package.json +++ b/packages/services/service-analytics/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-analytics", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Analytics Service for ObjectStack — implements IAnalyticsService with multi-driver strategy pattern (NativeSQL, ObjectQL, InMemory)", "type": "module", diff --git a/packages/services/service-automation/CHANGELOG.md b/packages/services/service-automation/CHANGELOG.md index 406f524d57c..fc0bfaee4b5 100644 --- a/packages/services/service-automation/CHANGELOG.md +++ b/packages/services/service-automation/CHANGELOG.md @@ -1,5 +1,31 @@ # @objectstack/service-automation +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [e67ac4b] +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [4d12b23] +- Updated dependencies [ff48407] +- Updated dependencies [33a45cc] +- Updated dependencies [b7a688e] + - @objectstack/metadata-protocol@18.0.0-next.5 + - @objectstack/spec@18.0.0-next.5 + - @objectstack/metadata-core@18.0.0-next.5 + - @objectstack/platform-objects@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/formula@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/services/service-automation/package.json b/packages/services/service-automation/package.json index 617e50d19e0..a88c39adb3f 100644 --- a/packages/services/service-automation/package.json +++ b/packages/services/service-automation/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-automation", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Automation Service for ObjectStack — implements IAutomationService with plugin-based DAG flow execution engine", "type": "module", diff --git a/packages/services/service-cache/CHANGELOG.md b/packages/services/service-cache/CHANGELOG.md index c934694b9e3..432ebac6a68 100644 --- a/packages/services/service-cache/CHANGELOG.md +++ b/packages/services/service-cache/CHANGELOG.md @@ -1,5 +1,22 @@ # @objectstack/service-cache +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/observability@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/services/service-cache/package.json b/packages/services/service-cache/package.json index 5ddc1bda9f7..89e6f8da112 100644 --- a/packages/services/service-cache/package.json +++ b/packages/services/service-cache/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-cache", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Cache Service for ObjectStack — implements ICacheService with in-memory and Redis adapters", "type": "module", diff --git a/packages/services/service-cluster-redis/CHANGELOG.md b/packages/services/service-cluster-redis/CHANGELOG.md index 701a934d8fc..c44fa9b1430 100644 --- a/packages/services/service-cluster-redis/CHANGELOG.md +++ b/packages/services/service-cluster-redis/CHANGELOG.md @@ -1,5 +1,21 @@ # @objectstack/service-cluster-redis +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/service-cluster@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/services/service-cluster-redis/package.json b/packages/services/service-cluster-redis/package.json index e2ca33e3230..2db0895ba1f 100644 --- a/packages/services/service-cluster-redis/package.json +++ b/packages/services/service-cluster-redis/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-cluster-redis", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Redis cluster driver for ObjectStack — implements IPubSub/ILock/IKV/ICounter against Redis using ioredis.", "type": "module", diff --git a/packages/services/service-cluster/CHANGELOG.md b/packages/services/service-cluster/CHANGELOG.md index 391e1f1716e..91c24af00b5 100644 --- a/packages/services/service-cluster/CHANGELOG.md +++ b/packages/services/service-cluster/CHANGELOG.md @@ -1,5 +1,21 @@ # @objectstack/service-cluster +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/services/service-cluster/package.json b/packages/services/service-cluster/package.json index 6098f2f1c2a..29bdf085cfc 100644 --- a/packages/services/service-cluster/package.json +++ b/packages/services/service-cluster/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-cluster", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Cluster Service for ObjectStack — pluggable PubSub/Lock/KV/Counter primitives. Memory driver included; postgres/redis drivers ship separately.", "type": "module", diff --git a/packages/services/service-datasource/CHANGELOG.md b/packages/services/service-datasource/CHANGELOG.md index b2a589c8ab1..ac9c74acf30 100644 --- a/packages/services/service-datasource/CHANGELOG.md +++ b/packages/services/service-datasource/CHANGELOG.md @@ -1,5 +1,29 @@ # @objectstack/service-external-datasource +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/metadata-core@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/driver-memory@18.0.0-next.5 + - @objectstack/driver-mongodb@18.0.0-next.5 + - @objectstack/driver-sql@18.0.0-next.5 + - @objectstack/driver-sqlite-wasm@18.0.0-next.5 + - @objectstack/driver-turso@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/services/service-datasource/package.json b/packages/services/service-datasource/package.json index cb37565aaa5..bae94f24a07 100644 --- a/packages/services/service-datasource/package.json +++ b/packages/services/service-datasource/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-datasource", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "The datasource service (ADR-0015): external-table federation (introspect/draft/import/validate) + runtime UI datasource lifecycle (list/test/create/update/remove + REST routes). Open-source mechanism; the tier line falls on which ICryptoProvider / driver factory a host injects.", "type": "module", diff --git a/packages/services/service-i18n/CHANGELOG.md b/packages/services/service-i18n/CHANGELOG.md index e7fac7eb119..e5efe4422c6 100644 --- a/packages/services/service-i18n/CHANGELOG.md +++ b/packages/services/service-i18n/CHANGELOG.md @@ -1,5 +1,22 @@ # @objectstack/service-i18n +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/services/service-i18n/package.json b/packages/services/service-i18n/package.json index 4d0dad9fb4a..0127c99f5fc 100644 --- a/packages/services/service-i18n/package.json +++ b/packages/services/service-i18n/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-i18n", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "I18n Service for ObjectStack — implements II18nService with file-based locale loading", "type": "module", diff --git a/packages/services/service-job/CHANGELOG.md b/packages/services/service-job/CHANGELOG.md index 48ffd02772f..8bfe72a8cf2 100644 --- a/packages/services/service-job/CHANGELOG.md +++ b/packages/services/service-job/CHANGELOG.md @@ -1,5 +1,25 @@ # @objectstack/service-job +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [4d12b23] +- Updated dependencies [ff48407] +- Updated dependencies [b7a688e] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/platform-objects@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/services/service-job/package.json b/packages/services/service-job/package.json index febc8740128..22ecdd48948 100644 --- a/packages/services/service-job/package.json +++ b/packages/services/service-job/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-job", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Job Service for ObjectStack — implements IJobService with setInterval and cron scheduling", "type": "module", diff --git a/packages/services/service-knowledge/CHANGELOG.md b/packages/services/service-knowledge/CHANGELOG.md index 5c332943795..ba2e30da0a6 100644 --- a/packages/services/service-knowledge/CHANGELOG.md +++ b/packages/services/service-knowledge/CHANGELOG.md @@ -1,5 +1,21 @@ # @objectstack/service-knowledge +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/services/service-knowledge/package.json b/packages/services/service-knowledge/package.json index f57ac8916bd..54ee21c3359 100644 --- a/packages/services/service-knowledge/package.json +++ b/packages/services/service-knowledge/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-knowledge", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Knowledge Service for ObjectStack — orchestrator implementing IKnowledgeService over pluggable IKnowledgeAdapter backends (RAGFlow, LlamaIndex, Dify, in-memory).", "type": "module", diff --git a/packages/services/service-mailbox/CHANGELOG.md b/packages/services/service-mailbox/CHANGELOG.md index f0ef128b08f..ddeeeb53c96 100644 --- a/packages/services/service-mailbox/CHANGELOG.md +++ b/packages/services/service-mailbox/CHANGELOG.md @@ -1,5 +1,27 @@ # @objectstack/service-mailbox +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [4d12b23] +- Updated dependencies [ff48407] +- Updated dependencies [b7a688e] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/platform-objects@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + - @objectstack/connector-imap@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/services/service-mailbox/package.json b/packages/services/service-mailbox/package.json index 7ab533132b1..a4826aa34c6 100644 --- a/packages/services/service-mailbox/package.json +++ b/packages/services/service-mailbox/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-mailbox", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Mailbox Service for ObjectStack \u2014 inbound mail: the mirrored message (sys_mail_message), its record associations and their read gates.", "type": "module", diff --git a/packages/services/service-messaging/CHANGELOG.md b/packages/services/service-messaging/CHANGELOG.md index f2e025a114c..b44faa4e933 100644 --- a/packages/services/service-messaging/CHANGELOG.md +++ b/packages/services/service-messaging/CHANGELOG.md @@ -1,5 +1,26 @@ # @objectstack/service-messaging +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [4d12b23] +- Updated dependencies [ff48407] +- Updated dependencies [b7a688e] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/platform-objects@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/services/service-messaging/package.json b/packages/services/service-messaging/package.json index 0ec4e5838e4..0f34d067aaf 100644 --- a/packages/services/service-messaging/package.json +++ b/packages/services/service-messaging/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-messaging", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Messaging Service for ObjectStack — outbound notification dispatch (ADR-0012). Ships the MessagingChannel registry, emit() fan-out, and the always-on inbox channel; other channels (email/webhook/push/IM) plug in.", "type": "module", diff --git a/packages/services/service-package/CHANGELOG.md b/packages/services/service-package/CHANGELOG.md index eae2df00071..556ff7ec772 100644 --- a/packages/services/service-package/CHANGELOG.md +++ b/packages/services/service-package/CHANGELOG.md @@ -1,5 +1,23 @@ # @objectstack/service-package +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/metadata-core@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/services/service-package/package.json b/packages/services/service-package/package.json index 2270255b947..0736b54c828 100644 --- a/packages/services/service-package/package.json +++ b/packages/services/service-package/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-package", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Package management service for ObjectStack — publish, install, and manage packages", "type": "module", diff --git a/packages/services/service-print/CHANGELOG.md b/packages/services/service-print/CHANGELOG.md index b37f21f227f..ed1c7ae85a4 100644 --- a/packages/services/service-print/CHANGELOG.md +++ b/packages/services/service-print/CHANGELOG.md @@ -1,5 +1,23 @@ # @objectstack/service-print +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/service-storage@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Minor Changes diff --git a/packages/services/service-print/package.json b/packages/services/service-print/package.json index 89fdfaf2905..9ecd4ee5ba9 100644 --- a/packages/services/service-print/package.json +++ b/packages/services/service-print/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-print", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Print Service for ObjectStack — renders a record's print page in headless Chromium under the requesting user's own principal and archives the PDF as a file attached to the record.", "type": "module", diff --git a/packages/services/service-queue/CHANGELOG.md b/packages/services/service-queue/CHANGELOG.md index b0f927cda0e..87575f15f89 100644 --- a/packages/services/service-queue/CHANGELOG.md +++ b/packages/services/service-queue/CHANGELOG.md @@ -1,5 +1,25 @@ # @objectstack/service-queue +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [4d12b23] +- Updated dependencies [ff48407] +- Updated dependencies [b7a688e] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/platform-objects@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/services/service-queue/package.json b/packages/services/service-queue/package.json index b383760a724..9a08291cb12 100644 --- a/packages/services/service-queue/package.json +++ b/packages/services/service-queue/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-queue", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Queue Service for ObjectStack — implements IQueueService with in-memory and durable DB-backed (sys_job_queue) adapters", "type": "module", diff --git a/packages/services/service-realtime/CHANGELOG.md b/packages/services/service-realtime/CHANGELOG.md index 5a8ea2f5f1a..781b5d6f8fb 100644 --- a/packages/services/service-realtime/CHANGELOG.md +++ b/packages/services/service-realtime/CHANGELOG.md @@ -1,5 +1,25 @@ # @objectstack/service-realtime +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [4d12b23] +- Updated dependencies [ff48407] +- Updated dependencies [b7a688e] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/platform-objects@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/services/service-realtime/package.json b/packages/services/service-realtime/package.json index dd27e8ea742..1069e7447cc 100644 --- a/packages/services/service-realtime/package.json +++ b/packages/services/service-realtime/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-realtime", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Realtime Service for ObjectStack — implements IRealtimeService with WebSocket and in-memory pub/sub", "type": "module", diff --git a/packages/services/service-settings/CHANGELOG.md b/packages/services/service-settings/CHANGELOG.md index f57aed428df..0aef860c113 100644 --- a/packages/services/service-settings/CHANGELOG.md +++ b/packages/services/service-settings/CHANGELOG.md @@ -1,5 +1,26 @@ # @objectstack/service-settings +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [4d12b23] +- Updated dependencies [ff48407] +- Updated dependencies [b7a688e] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/platform-objects@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Minor Changes diff --git a/packages/services/service-settings/package.json b/packages/services/service-settings/package.json index c84135dc994..d7e9688ed04 100644 --- a/packages/services/service-settings/package.json +++ b/packages/services/service-settings/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-settings", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Settings service for ObjectStack — manifest registry + K/V resolver (OS_* env > Tenant > User > Default) + REST routes. See ADR-0007.", "type": "module", diff --git a/packages/services/service-sms/CHANGELOG.md b/packages/services/service-sms/CHANGELOG.md index b382765761a..533a8b21243 100644 --- a/packages/services/service-sms/CHANGELOG.md +++ b/packages/services/service-sms/CHANGELOG.md @@ -1,5 +1,23 @@ # @objectstack/service-sms +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [9524666] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/plugin-auth@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/services/service-sms/package.json b/packages/services/service-sms/package.json index 6717a5553c4..0cbe8d1cdd8 100644 --- a/packages/services/service-sms/package.json +++ b/packages/services/service-sms/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-sms", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "SMS service for ObjectStack — ISmsService + transport-pluggable outbound delivery (Aliyun / Twilio / log).", "main": "dist/index.js", diff --git a/packages/services/service-storage/CHANGELOG.md b/packages/services/service-storage/CHANGELOG.md index 17301b16c14..3d738744c66 100644 --- a/packages/services/service-storage/CHANGELOG.md +++ b/packages/services/service-storage/CHANGELOG.md @@ -1,5 +1,27 @@ # @objectstack/service-storage +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [4d12b23] +- Updated dependencies [ff48407] +- Updated dependencies [b7a688e] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/platform-objects@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/observability@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Minor Changes diff --git a/packages/services/service-storage/package.json b/packages/services/service-storage/package.json index 2d8a3e44ca6..2f839565c62 100644 --- a/packages/services/service-storage/package.json +++ b/packages/services/service-storage/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-storage", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Storage Service for ObjectStack — implements IStorageService with local filesystem and S3 adapter skeleton", "type": "module", diff --git a/packages/skills/CHANGELOG.md b/packages/skills/CHANGELOG.md index f205422b285..19721b09132 100644 --- a/packages/skills/CHANGELOG.md +++ b/packages/skills/CHANGELOG.md @@ -1,5 +1,9 @@ # @objectstack/skills +## 18.0.0-next.5 + +No changes in this release. + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/skills/package.json b/packages/skills/package.json index 2af7d48090c..9f0d1db645d 100644 --- a/packages/skills/package.json +++ b/packages/skills/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/skills", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "description": "The published ObjectStack skills catalog \u2014 the repository's skills/** tree, shipped at the version of the @objectstack/* packages it teaches.", "license": "Apache-2.0", "homepage": "https://github.com/objectstack-ai/objectstack/tree/main/packages/skills", diff --git a/packages/spec/CHANGELOG.md b/packages/spec/CHANGELOG.md index 963813a0871..70c22e16a8c 100644 --- a/packages/spec/CHANGELOG.md +++ b/packages/spec/CHANGELOG.md @@ -1,5 +1,125 @@ # @objectstack/spec +## 18.0.0-next.5 + +### Minor Changes + +- fa26308: fix(objectql,runtime): a hook whose `handler` names a function gets `ctx.title(field?)` in-process, as an inline handler and a `body` do + + Clause-②: yes (widening) + + - **What was wrong.** A hook whose `handler` is a string naming a function ran in-process without `ctx.title`: `defineStack({ functions })` plus a hook naming an entry on a source boot (`@objectstack/verify`'s `bootStack(config)`, `os serve` over a config), and a string `handler` resolved from the artifact's `runtimeModule` (what `objectstack build` ships for a callable it could not lower to a `body`). The engine's binder resolved the name after the runtime had wrapped the inline handlers, so the function was called with the bare engine context and `await ctx.title()` threw `TypeError: ctx.title is not a function`. + - **What changed.** `bindHooksToEngine` (`@objectstack/objectql`) takes a `wrapHandler(handler, hook)` option, applied at bind to every handler a hook runs in-process, after a string `handler` resolves: an inline function, a name from the bind's `functions`, or a name the same package registered on the engine. A `body`'s handler (built by `bodyRunner`) never takes it. `ObjectQL.bindHooks` and the `IObjectQLEngine.bindHooks` contract (`@objectstack/spec`) carry the option. `bindAppArtifactHandlers` (`@objectstack/runtime`) passes the existing `withInProcessHookTitle` through it, in place of wrapping inline handlers before the bind, so the inline and the named handler take one wrap. + - **Unchanged.** A bind that passes no `wrapHandler` binds every handler exactly as resolved, so a host or harness that calls `bindHooks` itself, and a hook registered with `ql.registerHook(...)`, are not handed `ctx.title`. `HookContext` still declares no `title`. +- 26501ae: feat(spec): a navigation entry may declare one API data source, which its `visible` reads as `data` (planned, not yet rendered) + + Clause-②: yes (widening) + + - **What changed.** Every navigation entry that spreads the shared nav base (`object`, `dashboard`, `page`, `url`, `report`, `action`, `component`, `doc`, `group`) accepts an optional `dataSource`. It is the page element's API binding, `ElementApiDataSourceSchema`, by reference: `{ provider: 'api', read: { url, method? }, path? }` reads one same-origin endpoint with the console's signed-in fetch, and the entry's `visible` reads the value `path` selects as `data`, for example `visible: 'data.total == 1'`. + - **The refusals are the binding's own.** A `read.url` that is not a same-origin API path, a `method` other than `GET`, a credential key (`headers`, `token`, …), the object binding `{ object, … }` and an unknown key are all refused at parse, at the entry's `dataSource` path. A `separator` refuses `dataSource` with its own prescription. + - **What does not read it.** Only `visible` reads `data`. `label` and the target keys (`recordId`, `filters`, `params`) take no `data` read, and a group's binding is not published to its `children`: each entry declares its own. + - **Planned, not yet rendered.** No console reads the key yet, so a `visible` that reads `data` has no value to read until the navigation renderer ships. The describe opens with `[PLANNED — not yet rendered]`, and the liveness row `app` → `navigation.dataSource` is `planned` with an author warning (`os lint` / `os validate` report it on a top-level entry). + - **Who notices.** Nobody, by construction: every app that parsed before parses unchanged. Nothing narrows. +- adb7910: fix(spec)!: `UndoImportJobResponseSchema` requires `failures`, one entry per row an import undo did not revert, and the `skipAutomations` describe names no import-undo exception + + Clause-②: yes (narrowing) + + + + **BREAKING** (`UndoImportJobResponseSchema` accepts fewer answers: `failures` is required, so a response parsed with the schema is refused without it, and code that constructs an `UndoImportJobResponse` must set it, `[]` on a full revert; readers of `client.data.undoImportJob` are unchanged and gain the key), shipped as `minor` under the launch-window convention for breaking changes. + + `UndoImportJobResponseSchema` gains a required `failures`: one `{ id, action, code, error }` entry per row an import undo did not revert, `action` being `delete` or `restore`, and an empty array when every row was reverted. It is required rather than optional so a server that does not report its unreverted rows is off-contract instead of silently spec-valid. The `success` describe now says it is `false` when any row is listed there, and `failed` counts those entries. `revertedAt` on `ImportJobProgressSchema` and `ImportJobSummarySchema` now says it is set only once every row of the job is reverted; an undo that left rows unreverted sets nothing, and the job stays undoable for them. + + The `skipAutomations` describe on the hook context's `session` no longer names the import undo as a case that skips an app's controls for any caller. It names the system principal's import and undo, and says the import undo door is not an exception: only the system principal may take an app's declared controls off a write, and any other caller's undo runs under the object's hooks, record-change triggers and state machine. The `ExecutionContext` TSDoc for `skipAutomations` says the import runner sets it from its caller's `runAutomations: false`, which the import doors admit over HTTP from the system principal alone while an in-process caller of the runner passes its own setting, and that the import undo sets it only when the system principal undoes a job; the `skipStateMachine` TSDoc says the same of the undo. +- 69f342b: feat(spec)!: retire a page action row's own `patch` — a row's `operation: 'update'` runs the declared action its `name` names, and the platform action route writes that action's `patch` (#24394) + + **BREAKING** — `patch` on a page action row (`action:button`, `action:icon`, and each `action:group` / `action:menu` member of `properties.actions`) is now refused. A row's `operation: 'update'` posts to the platform action route under the row's `name`. The route resolves that declared action by name and writes the action's own `patch`, merged under the request's params. The row's `patch` was never sent: the reference console read it only for its Undo snapshot. Beside `operation: 'update'` a row now needs a `name`, since without one it has no declared action to run and the console refused it before any request. A row's static `params` are written only where that action declares them, and the route refuses any other with a 400 (ADR-0104 D2). `ActionSchema.patch`, the action's own declaration, is unchanged. + + Clause-②: yes (narrowing) + + Both directions, measured on the built rows. Narrowing: every row `patch` is refused, and a row with `operation: 'update'` and no `name` (an input list or static `params` included) is refused at `name`. Widening: a row with `operation: 'update'` and a `name` but no `patch` and no `params` now parses; before, the rows refused it at `patch` as having nothing to write, though its write is the named action's `patch`. + + Measured before removal, at `71fa166e96`: no producer. No page action row in this repository's examples or apps authors `patch` (or any `operation`), and neither does any objectui page row at the pinned `0707b4ae37` or at objectui `main` `4b7ce47`. + + ## FROM → TO + + | you wrote (17.7 and earlier) | write instead | + | --- | --- | + | `operation: 'update'` with a `patch` on a page action row | the values in the `patch` of the declared action the row's `name` names (`defineAction({ name, operation: 'update', patch })`), the row keeping only `operation: 'update'` and that `name` | + | `patch` on a page action row with no `operation` | nothing — delete the key; it was already refused | + | `operation: 'update'` on a page action row with no `name` | a `name` naming the declared `operation: 'update'` action | + + **The one-line fix:** move each row's `patch` values onto the declared action its `name` names, then delete the row's `patch`. + + **What an author who still writes it sees.** `tsc` fails at a typed authoring site (the rows type the key as retired), and `os validate`, `os build` and `os lint` refuse it as an `error` (`component-props-invalid`) at its own path (`properties.patch`, `properties.actions.N.patch`) with the prescription: + + > An `action:button`'s `patch` was removed in @objectstack/spec 18 (ADR-0110 D2) — a page action row's `operation: 'update'` runs the declared action its `name` names, and the platform action route resolves that action by name and writes ITS `patch`, so the row's own `patch` was never sent and never written. Move the values into the `patch` of the action the row's `name` names, then delete the key. Run `os migrate meta --from 17` to list the mechanical edits for existing sources; `--write` applies the ones it can prove, and you apply the rest by hand. + + A page's own parse keeps its component `properties` as an open bag, so an existing page carrying the key is never refused at load. + + ## The retirement kit + + - **A `retiredKey()` tombstone** at `patch` on `ActionButtonProps`, `ActionIconProps` and the `action:group` / `action:menu` member. `RETIRED_KEYS_BY_MAJOR[18]`: `ui/ActionButtonProps:patch`, `ui/ActionIconProps:patch` (the member's keys have no surface row of their own). The authorable-surface rows read `[RETIRED]`. + - **The rows' half of the declarative-update judge** reads the row's own surface: a row has no "`patch` without `operation`" rule of its own (its tombstone refuses every `patch`), and its "nothing to write" rule asks for the `name`. `ActionSchema`'s half of every rule, and every text it prints, is unchanged. + - **The D2 conversion `page-action-row-patch-removed`** (protocol 18, retired from the load path) deletes the key from every node and member — region-level, nested in a container's `children`, and in a slotted page's named slot — one notice per row. It is scoped by component `type`: the same key name on another component is left alone. + - **The D3 entry `ui-page-action-row-patch-retired`** records the judgement the strip cannot make: when the named action's own `patch` lacks a value the row carried, that value was never written, and adding it to the action changes what the action writes. + - **No deprecation window**, per the project's startup-stage posture. + + **Not part of it:** objectui's renderers still forward the row's `patch`, its runner still reads it for the Undo snapshot, and its component registry still lists a `patch` input on `action:button` / `action:icon` (so the tracked `sdui.manifest.json` advertises it to the html-tier page gate until the pin moves). Those reads leave on the objectui side. + + ⚠️ **The out-of-repo consumer population is NOT MEASURED.** `@objectstack/spec` is published, so this is breaking for consumers no telemetry was consulted for. + + +- 2ec6827: feat(spec): a metadata save declares its authoring surface — `SaveMetaItemRequestSchema.surface`, in one exported closed set shared with `draftChanges[].by` + + Clause-②: yes (widening) + + - **One closed set, one name.** `MetadataAuthoringSurfaceSchema` (`copilot | studio | api`) is exported from `@objectstack/spec/api`, with its type `MetadataAuthoringSurface`. `GetMetaItemResponseSchema.draftChanges[].by` now reads it instead of an inline enum: the accepted values are unchanged. + - **The save states its surface.** `SaveMetaItemRequestSchema` gains an optional `surface` from that set. A draft save stamps it as `by` on each key path it changes; an absent `surface` stamps `api`. On the REST door and the runtime dispatcher it is the `?surface=` query parameter, which takes `studio` or `api` only: `copilot` is stated by an in-process AI tool, never over HTTP. + - **The writer exists.** The `draftChanges` describe no longer says no server writes it: it states the writer's rules (the first draft save is compared with the stored published row, an item with no stored published row is recorded as `[]`, and a `migrate-stored` rewrite records nothing). `18.0.0-next.4`'s note said no server writes `draftChanges` yet; from this release the draft save writes it. +- fb0d85b: feat(spec,objectql)!: a top-level action bound by `objectName` to an object another package owns is listed on that object wherever it is served, and a bound action whose object no loaded package registers fails the boot + + Clause-②: yes (narrowing) + + + + **BREAKING** (one narrowing beside a widening), shipped as `minor` under the launch-window convention for breaking changes. + + - **Widening** (`@objectstack/spec`, `@objectstack/objectql`): an action declared in a stack's top-level `actions` with `objectName` naming an object that another package owns now reaches that object. `defineStack()` accepts the action when the stack extends the object through `objectExtensions`, or when the object is a known platform object (`sys_organization` and the rest of the platform's named list). It keeps the action in the top-level `actions`. The engine's schema registry then attaches it to the object at the one step every object read ends in. That covers `GET /api/v1/meta/object/` (stored-row, MetadataService and registry layers alike), `engine.getSchema()` and the action router's object lookup, in whichever order the two packages register. The attached entry is the action's own declaration, so its `requiredPermissions`, `requiresMembershipReach` and execution identity are unchanged. An action the object already declares under the same name keeps the object's declaration. A disabled package's bound actions are not attached. Before this, such an action was refused by `defineStack()` whenever the stack declared an object of its own. Where it got through (an object-less stack, or `strict: false`), it registered but was listed on no object, so no client rendered it. + - **FROM** (`@objectstack/objectql`): a top-level action bound by `objectName` to an object no loaded package registers was registered and listed nowhere, and the boot succeeded. **TO:** the boot fails at `kernel:ready` with `INVALID_METADATA` (422), naming each such action, its package and the object. An artifact registered through the `manifest` service after the boot is refused before any of it registers. **Fix:** register the object (in the package or in one it depends on), or correct the action's `objectName`. + - **Unchanged:** a name `defineStack()` cannot attribute (an object this stack neither defines nor extends, and not a known platform object) is still refused at build with `STACK_CROSS_REFERENCE_INVALID`. A same-stack bound action is still merged into its object by `defineStack()` and is attached once. + + The `ObjectExtensionSchema` refusal for `actions` now says exactly this: declare a top-level action with `objectName: ''` in the same stack; the schema registry attaches it to the object wherever the object is served; a target no loaded package registers fails the boot. + +### Patch Changes + +- 01fafde: A page element's `api` data source is described as rendered, and `visibleWhen` says where `data` is mounted + + Clause-②: no (describe and TSDoc text only: `ElementApiDataSourceSchema` and `PageComponentSchema` accept exactly what they accepted before, and every refusal keeps its issue `code` and `path`) + + - `ElementApiDataSourceSchema`'s describe dropped its `[PLANNED — not yet rendered]` marker. It now says what the console renders: the console reads the binding on every page element and binds the value `path` selects as `data`, on that element and on every element nested inside it. The element's `visibleWhen` is decided once the read answers. While the read is in flight, or when the binding is refused or the read fails, the element draws a loading or error panel instead. + - `PageComponentSchema.visibleWhen` (its describe and its TSDoc) no longer says that no renderer reads the binding. The renderer mounts no `data` root on an element that no `api` data source binds, where a `data.*` read still faults and the gate never gates. On an element that one binds, `data` is the bound value. + - The `page:tabs` item `visibleWhen` describe's parenthetical now reads that the component-node evaluator mounts no `data` root "save on an element an `api` data source binds", where `data` is that binding's value. That surface's own evaluator still binds `data` to the record row. + - The binding's refusal and unknown-key messages no longer name a page element. For example, "`read.url` of a page element's `api` data source must be …" now reads "`read.url` of an `api` data source must be …", and the unknown-key surface is "this `api` data source". The `object` guidance names the object binding only where the `dataSource` takes one. Each message keeps its issue `code` and `path`. +- 94e60c0: `defaultRowScope`'s describe, TSDoc and liveness row now say what the security plugin's reader does with the key + + Clause-②: no — only describe, TSDoc and liveness-ledger text move; `ObjectSchema` and `DefaultRowScopeSchema` accept and refuse exactly what they did. + + - `ObjectSchema.defaultRowScope`'s describe no longer says the key is not applied. It states what the row-policy collection does: the default applies when no permission set the caller holds carries a row policy for the object and the operation (a `'*'` policy counts; one switched off, outside the caller's positions, or for another operation does not), it is judged like a held policy, a `using` the compiler cannot lower makes the reads it governs return no rows with one server warning, and authoring checks do not judge that predicate. The TSDoc on the key and on `DefaultRowScopeSchema` say the same. + - `liveness/object.json`: the `defaultRowScope` row and its eight members are `live`, citing the security plugin's collection, compiler and explain as their readers. Authoring the key no longer raises the `liveness-planned-property` warning. +- ff48407: Clause-②: no + + fix(spec): published copy that names the running system says "this system", or drops the noun, not "this environment" + + - **What changed.** Inside the running system, user-facing copy names the system the reader is in as "this system", or drops the noun. A permission set made here, not shipped by a package, is "authored in this system". + - The permission-set `packageId` refusal on the save, restore and publish doors now reads "a set written into no package is authored in this system, which an absent `packageId` states". + - The permission set's `packageId` help text in Setup ends "Leave empty for a set authored in this system." The English Setup forms bundle of `@objectstack/platform-objects` is regenerated from it. + - The `permission.managedBy` tombstone prescription, and the `permission-set-managed-by-retired` protocol-18 upgrade-guide entry, say "a set authored in this system carries neither". + - The `AudienceConfig.posture` and `AuthConfig.audience` describes say "who may self-register", with no noun. Their TSDoc says "who may become a user of this system's apps", the sentence the Setup Authentication group already reads. + - `AiModelsResponse.models` describes "Models this system offers". The `IMetadataService.listDiagnosed` TSDoc example reads "this system contains N items". + - **Kept "environment", where the word names a deployment or configuration scope.** `SeedLoaderConfig.env` ("Only load datasets matching this environment", the `prod | dev | test` tier), the `package-uninstall-environment-wide` upgrade-guide entry (the ADR-0131 environment-wide scope, as against an organization), and the environment artifact's consent-record TSDoc. + - **Unchanged.** Every error code, status, issue path, accepted value and export. Only the human-readable text moves. + ## 18.0.0-next.4 ### Minor Changes diff --git a/packages/spec/package.json b/packages/spec/package.json index b0b61c8032c..5494d8e468a 100644 --- a/packages/spec/package.json +++ b/packages/spec/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/spec", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "description": "ObjectStack Protocol & Specification - TypeScript Interfaces, JSON Schemas, and Convention Configurations", "license": "Apache-2.0", "main": "dist/index.js", diff --git a/packages/triggers/trigger-api/CHANGELOG.md b/packages/triggers/trigger-api/CHANGELOG.md index 388d6279a78..1b6933cf216 100644 --- a/packages/triggers/trigger-api/CHANGELOG.md +++ b/packages/triggers/trigger-api/CHANGELOG.md @@ -1,5 +1,21 @@ # @objectstack/trigger-api +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/triggers/trigger-api/package.json b/packages/triggers/trigger-api/package.json index 0a91f12b525..91aa943a0b4 100644 --- a/packages/triggers/trigger-api/package.json +++ b/packages/triggers/trigger-api/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/trigger-api", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Inbound HTTP/webhook flow trigger for ObjectStack — per-flow HMAC-verified endpoints with queue-backed ingestion (ADR-0041)", "main": "dist/index.js", diff --git a/packages/triggers/trigger-record-change/CHANGELOG.md b/packages/triggers/trigger-record-change/CHANGELOG.md index f5be67299d2..eb522feb8b3 100644 --- a/packages/triggers/trigger-record-change/CHANGELOG.md +++ b/packages/triggers/trigger-record-change/CHANGELOG.md @@ -1,5 +1,21 @@ # @objectstack/plugin-trigger-record-change +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/triggers/trigger-record-change/package.json b/packages/triggers/trigger-record-change/package.json index 185f94a0601..dea4981a4d0 100644 --- a/packages/triggers/trigger-record-change/package.json +++ b/packages/triggers/trigger-record-change/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/trigger-record-change", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Record-change flow trigger for ObjectStack — auto-launches flows on object insert/update/delete via ObjectQL lifecycle hooks (ADR-0018)", "main": "dist/index.js", diff --git a/packages/triggers/trigger-schedule/CHANGELOG.md b/packages/triggers/trigger-schedule/CHANGELOG.md index 097f73df831..2a8838c5853 100644 --- a/packages/triggers/trigger-schedule/CHANGELOG.md +++ b/packages/triggers/trigger-schedule/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/plugin-trigger-schedule +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + - @objectstack/metadata-core@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/triggers/trigger-schedule/package.json b/packages/triggers/trigger-schedule/package.json index 624e2e496a0..4dfdcb391b2 100644 --- a/packages/triggers/trigger-schedule/package.json +++ b/packages/triggers/trigger-schedule/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/trigger-schedule", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Schedule flow trigger for ObjectStack \u2014 auto-launches flows on a cron/interval/once schedule via the IJobService (ADR-0018)", "main": "dist/index.js", diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index 9f295854b0e..7ae975d9c82 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -1,5 +1,20 @@ # @objectstack/types +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [94e60c0] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [ff48407] + - @objectstack/spec@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/types/package.json b/packages/types/package.json index fb03860b05f..325e27d8927 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/types", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Shared interfaces describing the ObjectStack Runtime environment", "main": "dist/index.js", diff --git a/packages/verify/CHANGELOG.md b/packages/verify/CHANGELOG.md index 5c459f029af..4ad2aa4e1f5 100644 --- a/packages/verify/CHANGELOG.md +++ b/packages/verify/CHANGELOG.md @@ -1,5 +1,66 @@ # @objectstack/verify +## 18.0.0-next.5 + +### Patch Changes + +- Updated dependencies [9847f87] +- Updated dependencies [8ed3786] +- Updated dependencies [fa26308] +- Updated dependencies [01fafde] +- Updated dependencies [26501ae] +- Updated dependencies [9112bcd] +- Updated dependencies [94e60c0] +- Updated dependencies [94e60c0] +- Updated dependencies [9524666] +- Updated dependencies [adb7910] +- Updated dependencies [adb7910] +- Updated dependencies [69f342b] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [2ec6827] +- Updated dependencies [fb0d85b] +- Updated dependencies [4d12b23] +- Updated dependencies [4d12b23] +- Updated dependencies [ff48407] +- Updated dependencies [45bec43] +- Updated dependencies [964a237] +- Updated dependencies [b7a688e] + - @objectstack/plugin-sharing@18.0.0-next.5 + - @objectstack/plugin-hono-server@18.0.0-next.5 + - @objectstack/spec@18.0.0-next.5 + - @objectstack/objectql@18.0.0-next.5 + - @objectstack/runtime@18.0.0-next.5 + - @objectstack/plugin-security@18.0.0-next.5 + - @objectstack/plugin-auth@18.0.0-next.5 + - @objectstack/rest@18.0.0-next.5 + - @objectstack/platform-objects@18.0.0-next.5 + - @objectstack/mcp@18.0.0-next.5 + - @objectstack/service-datasource@18.0.0-next.5 + - @objectstack/plugin-approvals@18.0.0-next.5 + - @objectstack/service-automation@18.0.0-next.5 + - @objectstack/service-package@18.0.0-next.5 + - @objectstack/service-mailbox@18.0.0-next.5 + - @objectstack/core@18.0.0-next.5 + - @objectstack/metadata@18.0.0-next.5 + - @objectstack/plugin-audit@18.0.0-next.5 + - @objectstack/plugin-email@18.0.0-next.5 + - @objectstack/plugin-webhooks@18.0.0-next.5 + - @objectstack/service-analytics@18.0.0-next.5 + - @objectstack/service-cache@18.0.0-next.5 + - @objectstack/service-job@18.0.0-next.5 + - @objectstack/service-messaging@18.0.0-next.5 + - @objectstack/service-queue@18.0.0-next.5 + - @objectstack/service-realtime@18.0.0-next.5 + - @objectstack/service-settings@18.0.0-next.5 + - @objectstack/service-sms@18.0.0-next.5 + - @objectstack/service-storage@18.0.0-next.5 + - @objectstack/trigger-api@18.0.0-next.5 + - @objectstack/trigger-record-change@18.0.0-next.5 + - @objectstack/trigger-schedule@18.0.0-next.5 + - @objectstack/types@18.0.0-next.5 + - @objectstack/plugin-pinyin-search@18.0.0-next.5 + ## 18.0.0-next.4 ### Patch Changes diff --git a/packages/verify/package.json b/packages/verify/package.json index 41051717dc6..dbff6e99c91 100644 --- a/packages/verify/package.json +++ b/packages/verify/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/verify", - "version": "18.0.0-next.4", + "version": "18.0.0-next.5", "license": "Apache-2.0", "description": "Boot any ObjectStack app in-process and verify it through the real HTTP stack — auto-derived CRUD round-trip fidelity plus the cross-owner RLS invariant. Catches runtime regressions that static checks miss.", "type": "module", diff --git a/skills/objectstack-ai/SKILL.md b/skills/objectstack-ai/SKILL.md index e3a5dc0c535..609e884845e 100644 --- a/skills/objectstack-ai/SKILL.md +++ b/skills/objectstack-ai/SKILL.md @@ -12,7 +12,7 @@ license: Apache-2.0 compatibility: Requires @objectstack/spec 18.x (Zod v4 schemas) metadata: author: objectstack-ai - version: "18.0.0-next.4" + version: "18.0.0-next.5" domain: ai tags: agent, tool, skill, knowledge, llm, embedding, mcp --- diff --git a/skills/objectstack-api/SKILL.md b/skills/objectstack-api/SKILL.md index 98e6bef3c78..d8bf39622a5 100644 --- a/skills/objectstack-api/SKILL.md +++ b/skills/objectstack-api/SKILL.md @@ -14,7 +14,7 @@ license: Apache-2.0 compatibility: Requires @objectstack/spec 18.x (Zod v4 schemas) metadata: author: objectstack-ai - version: "18.0.0-next.4" + version: "18.0.0-next.5" domain: api tags: rest, endpoint, auth, realtime, server --- diff --git a/skills/objectstack-automation/SKILL.md b/skills/objectstack-automation/SKILL.md index 9b2b51fb429..40b61fd95ba 100644 --- a/skills/objectstack-automation/SKILL.md +++ b/skills/objectstack-automation/SKILL.md @@ -13,7 +13,7 @@ license: Apache-2.0 compatibility: Requires @objectstack/spec 18.x (Zod v4 schemas) metadata: author: objectstack-ai - version: "18.0.0-next.4" + version: "18.0.0-next.5" domain: automation tags: flow, workflow, trigger, approval, state-machine, scheduled, webhook --- diff --git a/skills/objectstack-data/SKILL.md b/skills/objectstack-data/SKILL.md index b286418484e..52fdce27c0e 100644 --- a/skills/objectstack-data/SKILL.md +++ b/skills/objectstack-data/SKILL.md @@ -15,7 +15,7 @@ license: Apache-2.0 compatibility: Requires @objectstack/spec 18.x (Zod v4 schemas) metadata: author: objectstack-ai - version: "18.0.0-next.4" + version: "18.0.0-next.5" domain: data tags: object, field, validation, index, relationship, hook, schema, permission, rls, security, seed, fixture --- diff --git a/skills/objectstack-formula/SKILL.md b/skills/objectstack-formula/SKILL.md index 401c1c85876..809d0172a8a 100644 --- a/skills/objectstack-formula/SKILL.md +++ b/skills/objectstack-formula/SKILL.md @@ -13,7 +13,7 @@ license: Apache-2.0 compatibility: Requires @objectstack/spec 18.x and @objectstack/formula 18.x (CEL) metadata: author: objectstack-ai - version: "18.0.0-next.4" + version: "18.0.0-next.5" domain: expression tags: cel, formula, predicate, condition, validation, visibility, seed-dynamic --- diff --git a/skills/objectstack-i18n/SKILL.md b/skills/objectstack-i18n/SKILL.md index 91b2b82b8e9..00659b935b5 100644 --- a/skills/objectstack-i18n/SKILL.md +++ b/skills/objectstack-i18n/SKILL.md @@ -13,7 +13,7 @@ license: Apache-2.0 compatibility: Requires @objectstack/spec 18.x (Zod v4 schemas) metadata: author: objectstack-ai - version: "18.0.0-next.4" + version: "18.0.0-next.5" domain: i18n tags: i18n, translation, locale, l10n, bundle, coverage --- diff --git a/skills/objectstack-platform/SKILL.md b/skills/objectstack-platform/SKILL.md index 328d6b36b23..42b76531958 100644 --- a/skills/objectstack-platform/SKILL.md +++ b/skills/objectstack-platform/SKILL.md @@ -17,7 +17,7 @@ license: Apache-2.0 compatibility: Requires @objectstack/spec 18.x and @objectstack/core 18.x (Zod v4 schemas), Node 22+ metadata: author: objectstack-ai - version: "18.0.0-next.4" + version: "18.0.0-next.5" domain: platform tags: project, defineStack, driver, hono, plugin, kernel, service, requires, capability, DI, lifecycle, cli, deploy, ops --- diff --git a/skills/objectstack-query/SKILL.md b/skills/objectstack-query/SKILL.md index c81c2ee11df..eba997686ea 100644 --- a/skills/objectstack-query/SKILL.md +++ b/skills/objectstack-query/SKILL.md @@ -11,7 +11,7 @@ license: Apache-2.0 compatibility: Requires @objectstack/spec 18.x (Zod v4 schemas) metadata: author: objectstack-ai - version: "18.0.0-next.4" + version: "18.0.0-next.5" domain: query tags: query, filter, sort, paginate, aggregate, ObjectQL, full-text --- diff --git a/skills/objectstack-ui/SKILL.md b/skills/objectstack-ui/SKILL.md index 3451cd5d6bb..f4bebaa6fc3 100644 --- a/skills/objectstack-ui/SKILL.md +++ b/skills/objectstack-ui/SKILL.md @@ -18,7 +18,7 @@ license: Apache-2.0 compatibility: Requires @objectstack/spec 18.x (Zod v4 schemas) metadata: author: objectstack-ai - version: "18.0.0-next.4" + version: "18.0.0-next.5" domain: ui tags: view, app, page, dashboard, report, chart, action, widget, doc --- diff --git a/skills/objectstack-upgrade/SKILL.md b/skills/objectstack-upgrade/SKILL.md index 7a2333322db..991771d4452 100644 --- a/skills/objectstack-upgrade/SKILL.md +++ b/skills/objectstack-upgrade/SKILL.md @@ -16,7 +16,7 @@ license: Apache-2.0 compatibility: Requires `@objectstack/spec` and `@objectstack/cli` at the TARGET major; the chain replays from the spec's `MIGRATION_SUPPORT_FLOOR`. No network access required. metadata: author: objectstack-ai - version: "18.0.0-next.4" + version: "18.0.0-next.5" domain: process tags: upgrade, migration, protocol, major, retired-keys, tombstone, conversions, validate, report ---