From 5ad08958ddabb9fe434c54c67b4961d13f0948e2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 09:23:34 +0000 Subject: [PATCH] chore: version packages --- .changeset/action-script-executable-guard.md | 19 --- .changeset/adr-0015-external-columnmap.md | 12 -- .changeset/adr-0015-federation-read-path.md | 16 -- .../adr-0057-d10-nav-capability-gate.md | 14 -- .changeset/adr-0057-d11-drop-bu-kind-team.md | 13 -- .../adr-0057-d12-primary-business-unit.md | 19 --- .changeset/adr-0057-erp-authz.md | 28 ---- .changeset/adr-0058-expression-compiler.md | 16 -- .changeset/adr-0063-0064-ask-build-surface.md | 21 --- .../analytics-measure-currency-chain.md | 11 -- .changeset/bu-org-chart-tree-view.md | 13 -- .changeset/bu-rename-guard-test.md | 4 - .changeset/bu-rename-i18n.md | 11 -- .changeset/conformance-ledger-helper.md | 10 -- .changeset/dashboard-report-drill.md | 5 - .changeset/dataset-measure-currency.md | 12 -- .changeset/dev-app-default-profile.md | 21 --- .changeset/dev-datasource-visibility.md | 9 -- .changeset/execution-context-currency.md | 16 -- .changeset/expand-where-propagation.md | 10 -- .changeset/fix-d10-envelope-unwrap.md | 13 -- .../fix-org-id-optional-single-tenant.md | 13 -- .changeset/fix-single-tenant-followup.md | 16 -- .changeset/gantt-config-passthrough.md | 15 -- .changeset/me-localization-endpoint.md | 12 -- .changeset/rename-data-chat-to-ask.md | 5 - .changeset/rls-using-to-cel.md | 14 -- .changeset/spec-define-x-factories.md | 22 --- .changeset/spec-tree-view-type.md | 11 -- .changeset/sys-user-manager-hierarchy.md | 7 - .changeset/validate-action-predicates.md | 22 --- .../validate-record-scoped-predicates.md | 32 ---- .changeset/verify-skip-external-readonly.md | 13 -- examples/app-crm/CHANGELOG.md | 19 +++ examples/app-crm/package.json | 2 +- examples/app-showcase/CHANGELOG.md | 24 +++ examples/app-showcase/package.json | 4 +- examples/app-todo/CHANGELOG.md | 27 ++++ examples/app-todo/package.json | 2 +- packages/adapters/express/CHANGELOG.md | 9 ++ packages/adapters/express/package.json | 2 +- packages/adapters/fastify/CHANGELOG.md | 9 ++ packages/adapters/fastify/package.json | 2 +- packages/adapters/hono/CHANGELOG.md | 12 ++ packages/adapters/hono/package.json | 2 +- packages/adapters/nestjs/CHANGELOG.md | 9 ++ packages/adapters/nestjs/package.json | 2 +- packages/adapters/nextjs/CHANGELOG.md | 9 ++ packages/adapters/nextjs/package.json | 2 +- packages/adapters/nuxt/CHANGELOG.md | 9 ++ packages/adapters/nuxt/package.json | 2 +- packages/adapters/sveltekit/CHANGELOG.md | 9 ++ packages/adapters/sveltekit/package.json | 2 +- packages/apps/account/CHANGELOG.md | 26 ++++ packages/apps/account/package.json | 2 +- packages/apps/setup/CHANGELOG.md | 26 ++++ packages/apps/setup/package.json | 2 +- packages/apps/studio/CHANGELOG.md | 26 ++++ packages/apps/studio/package.json | 2 +- packages/cli/CHANGELOG.md | 131 ++++++++++++++++ packages/cli/package.json | 2 +- packages/client-react/CHANGELOG.md | 20 +++ packages/client-react/package.json | 2 +- packages/client/CHANGELOG.md | 19 +++ packages/client/package.json | 2 +- packages/cloud-connection/CHANGELOG.md | 22 +++ packages/cloud-connection/package.json | 2 +- .../connectors/connector-mcp/CHANGELOG.md | 19 +++ .../connectors/connector-mcp/package.json | 2 +- .../connectors/connector-openapi/CHANGELOG.md | 19 +++ .../connectors/connector-openapi/package.json | 2 +- .../connectors/connector-rest/CHANGELOG.md | 19 +++ .../connectors/connector-rest/package.json | 2 +- .../connectors/connector-slack/CHANGELOG.md | 19 +++ .../connectors/connector-slack/package.json | 2 +- packages/console/CHANGELOG.md | 2 + packages/console/package.json | 2 +- packages/core/CHANGELOG.md | 23 +++ packages/core/package.json | 2 +- packages/create-objectstack/CHANGELOG.md | 2 + packages/create-objectstack/package.json | 2 +- packages/dogfood/CHANGELOG.md | 25 +++ packages/dogfood/package.json | 2 +- packages/downstream-contract/CHANGELOG.md | 18 +++ packages/downstream-contract/package.json | 2 +- packages/formula/CHANGELOG.md | 76 ++++++++++ packages/formula/package.json | 2 +- packages/mcp/CHANGELOG.md | 20 +++ packages/mcp/package.json | 2 +- packages/metadata-core/CHANGELOG.md | 17 +++ packages/metadata-core/package.json | 2 +- packages/metadata-fs/CHANGELOG.md | 6 + packages/metadata-fs/package.json | 2 +- packages/metadata/CHANGELOG.md | 31 ++++ packages/metadata/package.json | 2 +- packages/objectql/CHANGELOG.md | 63 ++++++++ packages/objectql/package.json | 2 +- packages/observability/CHANGELOG.md | 17 +++ packages/observability/package.json | 2 +- packages/platform-objects/CHANGELOG.md | 120 +++++++++++++++ packages/platform-objects/package.json | 2 +- packages/plugins/driver-memory/CHANGELOG.md | 19 +++ packages/plugins/driver-memory/package.json | 2 +- packages/plugins/driver-mongodb/CHANGELOG.md | 19 +++ packages/plugins/driver-mongodb/package.json | 2 +- packages/plugins/driver-sql/CHANGELOG.md | 39 +++++ packages/plugins/driver-sql/package.json | 2 +- .../plugins/driver-sqlite-wasm/CHANGELOG.md | 21 +++ .../plugins/driver-sqlite-wasm/package.json | 2 +- packages/plugins/embedder-openai/CHANGELOG.md | 17 +++ packages/plugins/embedder-openai/package.json | 2 +- .../plugins/knowledge-memory/CHANGELOG.md | 20 +++ .../plugins/knowledge-memory/package.json | 2 +- .../plugins/knowledge-ragflow/CHANGELOG.md | 20 +++ .../plugins/knowledge-ragflow/package.json | 2 +- .../plugins/plugin-approvals/CHANGELOG.md | 52 +++++++ .../plugins/plugin-approvals/package.json | 2 +- packages/plugins/plugin-audit/CHANGELOG.md | 28 ++++ packages/plugins/plugin-audit/package.json | 2 +- packages/plugins/plugin-auth/CHANGELOG.md | 29 ++++ packages/plugins/plugin-auth/package.json | 2 +- packages/plugins/plugin-dev/CHANGELOG.md | 37 +++++ packages/plugins/plugin-dev/package.json | 2 +- packages/plugins/plugin-email/CHANGELOG.md | 32 ++++ packages/plugins/plugin-email/package.json | 2 +- .../plugins/plugin-hono-server/CHANGELOG.md | 31 ++++ .../plugins/plugin-hono-server/package.json | 2 +- packages/plugins/plugin-msw/CHANGELOG.md | 23 +++ packages/plugins/plugin-msw/package.json | 2 +- .../plugins/plugin-org-scoping/CHANGELOG.md | 28 ++++ .../plugins/plugin-org-scoping/package.json | 2 +- packages/plugins/plugin-reports/CHANGELOG.md | 28 ++++ packages/plugins/plugin-reports/package.json | 2 +- packages/plugins/plugin-security/CHANGELOG.md | 73 +++++++++ packages/plugins/plugin-security/package.json | 4 +- packages/plugins/plugin-sharing/CHANGELOG.md | 94 ++++++++++++ packages/plugins/plugin-sharing/package.json | 4 +- packages/plugins/plugin-webhooks/CHANGELOG.md | 20 +++ packages/plugins/plugin-webhooks/package.json | 2 +- packages/rest/CHANGELOG.md | 53 +++++++ packages/rest/package.json | 2 +- packages/runtime/CHANGELOG.md | 89 +++++++++++ packages/runtime/package.json | 2 +- packages/services/service-ai/CHANGELOG.md | 45 ++++++ packages/services/service-ai/package.json | 2 +- .../services/service-analytics/CHANGELOG.md | 38 +++++ .../services/service-analytics/package.json | 2 +- .../services/service-automation/CHANGELOG.md | 23 +++ .../services/service-automation/package.json | 2 +- packages/services/service-cache/CHANGELOG.md | 20 +++ packages/services/service-cache/package.json | 2 +- .../service-cluster-redis/CHANGELOG.md | 18 +++ .../service-cluster-redis/package.json | 2 +- .../services/service-cluster/CHANGELOG.md | 19 +++ .../services/service-cluster/package.json | 2 +- .../services/service-datasource/CHANGELOG.md | 19 +++ .../services/service-datasource/package.json | 2 +- packages/services/service-i18n/CHANGELOG.md | 19 +++ packages/services/service-i18n/package.json | 2 +- packages/services/service-job/CHANGELOG.md | 28 ++++ packages/services/service-job/package.json | 2 +- .../services/service-knowledge/CHANGELOG.md | 19 +++ .../services/service-knowledge/package.json | 2 +- .../services/service-messaging/CHANGELOG.md | 19 +++ .../services/service-messaging/package.json | 2 +- .../services/service-package/CHANGELOG.md | 19 +++ .../services/service-package/package.json | 2 +- packages/services/service-queue/CHANGELOG.md | 28 ++++ packages/services/service-queue/package.json | 2 +- .../services/service-realtime/CHANGELOG.md | 28 ++++ .../services/service-realtime/package.json | 2 +- .../services/service-settings/CHANGELOG.md | 29 ++++ .../services/service-settings/package.json | 2 +- .../services/service-storage/CHANGELOG.md | 29 ++++ .../services/service-storage/package.json | 2 +- packages/spec/CHANGELOG.md | 142 ++++++++++++++++++ packages/spec/package.json | 2 +- packages/triggers/trigger-api/CHANGELOG.md | 19 +++ packages/triggers/trigger-api/package.json | 2 +- .../trigger-record-change/CHANGELOG.md | 19 +++ .../trigger-record-change/package.json | 2 +- .../triggers/trigger-schedule/CHANGELOG.md | 19 +++ .../triggers/trigger-schedule/package.json | 2 +- packages/types/CHANGELOG.md | 17 +++ packages/types/package.json | 2 +- packages/verify/CHANGELOG.md | 59 ++++++++ packages/verify/package.json | 2 +- packages/vscode-objectstack/CHANGELOG.md | 2 + packages/vscode-objectstack/package.json | 2 +- 189 files changed, 2432 insertions(+), 556 deletions(-) delete mode 100644 .changeset/action-script-executable-guard.md delete mode 100644 .changeset/adr-0015-external-columnmap.md delete mode 100644 .changeset/adr-0015-federation-read-path.md delete mode 100644 .changeset/adr-0057-d10-nav-capability-gate.md delete mode 100644 .changeset/adr-0057-d11-drop-bu-kind-team.md delete mode 100644 .changeset/adr-0057-d12-primary-business-unit.md delete mode 100644 .changeset/adr-0057-erp-authz.md delete mode 100644 .changeset/adr-0058-expression-compiler.md delete mode 100644 .changeset/adr-0063-0064-ask-build-surface.md delete mode 100644 .changeset/analytics-measure-currency-chain.md delete mode 100644 .changeset/bu-org-chart-tree-view.md delete mode 100644 .changeset/bu-rename-guard-test.md delete mode 100644 .changeset/bu-rename-i18n.md delete mode 100644 .changeset/conformance-ledger-helper.md delete mode 100644 .changeset/dashboard-report-drill.md delete mode 100644 .changeset/dataset-measure-currency.md delete mode 100644 .changeset/dev-app-default-profile.md delete mode 100644 .changeset/dev-datasource-visibility.md delete mode 100644 .changeset/execution-context-currency.md delete mode 100644 .changeset/expand-where-propagation.md delete mode 100644 .changeset/fix-d10-envelope-unwrap.md delete mode 100644 .changeset/fix-org-id-optional-single-tenant.md delete mode 100644 .changeset/fix-single-tenant-followup.md delete mode 100644 .changeset/gantt-config-passthrough.md delete mode 100644 .changeset/me-localization-endpoint.md delete mode 100644 .changeset/rename-data-chat-to-ask.md delete mode 100644 .changeset/rls-using-to-cel.md delete mode 100644 .changeset/spec-define-x-factories.md delete mode 100644 .changeset/spec-tree-view-type.md delete mode 100644 .changeset/sys-user-manager-hierarchy.md delete mode 100644 .changeset/validate-action-predicates.md delete mode 100644 .changeset/validate-record-scoped-predicates.md delete mode 100644 .changeset/verify-skip-external-readonly.md create mode 100644 packages/downstream-contract/CHANGELOG.md diff --git a/.changeset/action-script-executable-guard.md b/.changeset/action-script-executable-guard.md deleted file mode 100644 index e61f538109..0000000000 --- a/.changeset/action-script-executable-guard.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -"@objectstack/spec": minor ---- - -spec(action): a `script` action must declare an executable binding — reject at -author/compile time when it has neither an inline `body` nor a `target`. - -A `type: 'script'` action with no `body` and no `target` registers no runtime -handler: `AppPlugin` skips it, and invoking it falls through to the wildcard -lookup and fails with `Action '' on object '*' not found` (the #2169 -"Mark Done" bug). The shape was schema-valid and passed coverage tests, so the -break only surfaced when a user clicked the button. - -`ActionSchema` now enforces the invariant via `superRefine`: `script` requires -`body || target` (mirroring the existing "non-script types require `target`" -rule). `body`-bound actions are auto-registered by the runtime; `target`-bound -actions name a function wired imperatively (e.g. via `onEnable`). This only -rejects configurations that were already non-functional at runtime — verified -against the full monorepo build (every shipped bundle still compiles). diff --git a/.changeset/adr-0015-external-columnmap.md b/.changeset/adr-0015-external-columnmap.md deleted file mode 100644 index 68258ef45c..0000000000 --- a/.changeset/adr-0015-external-columnmap.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@objectstack/driver-sql": patch ---- - -feat(driver-sql): honor `external.columnMap` on federated (external) objects (ADR-0015). - -When a federated object declares `external.columnMap` ({ remoteColumn -> localField }), -the SQL driver now translates queries to the physical remote columns: WHERE and -ORDER BY map local fields to remote columns (value coercion stays keyed by the local -field), `formatOutput` renames remote-column keys back to local field names on read, -and write payloads are key-remapped. Managed objects and external objects without a -columnMap are unchanged (the resolver falls back to the existing per-site behavior). diff --git a/.changeset/adr-0015-federation-read-path.md b/.changeset/adr-0015-federation-read-path.md deleted file mode 100644 index bfd02e6e43..0000000000 --- a/.changeset/adr-0015-federation-read-path.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -"@objectstack/driver-sql": patch -"@objectstack/objectql": patch -"@objectstack/spec": patch ---- - -fix(ADR-0015): honor `external.remoteName` / `external.remoteSchema` on the federation read path. - -The query path previously resolved an external object's physical table from the -object name, ignoring its `external` binding — so a federated object bound to a -differently-named remote table failed with `no such table`, and ADR-0015's own -`wh_order` → `mart.fact_orders` example was unqueryable. The SQL driver now -resolves the remote table (`remoteName`, plus `remoteSchema` via `.withSchema()` -on pg/mysql) and registers external objects' read-coercion metadata without DDL -(`SqlDriver.registerExternalObject`, routed from the engine/plugin schema-sync). -The managed path is unchanged. See ADR-0015 §18. diff --git a/.changeset/adr-0057-d10-nav-capability-gate.md b/.changeset/adr-0057-d10-nav-capability-gate.md deleted file mode 100644 index 2141f2c145..0000000000 --- a/.changeset/adr-0057-d10-nav-capability-gate.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -"@objectstack/rest": minor -"@objectstack/platform-objects": minor ---- - -Setup nav: gate Organizations/Invitations on multi-org; enforce `requiresService` server-side (ADR-0057 addendum D10). - -`rest-server`'s `filterAppForUser` now honours `NavigationItem.requiresService` — entries -whose named kernel service isn't registered are dropped from the served app metadata -(fail-open when the kernel can't be probed; previously the field was a frontend-only hint). -Applies `requiresService: 'org-scoping'` to the Setup app's Organizations and Invitations -entries, so they surface only in multi-org (multi-tenant) deployments and disappear in -single-tenant. Business Units is intentionally left ungated — it is open per the open/paid -seam + D12 ("pick people by BU"); only the hierarchy rollup capability is enterprise. diff --git a/.changeset/adr-0057-d11-drop-bu-kind-team.md b/.changeset/adr-0057-d11-drop-bu-kind-team.md deleted file mode 100644 index 34638d04e0..0000000000 --- a/.changeset/adr-0057-d11-drop-bu-kind-team.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@objectstack/platform-objects": minor ---- - -Drop the unused `team` value from `sys_business_unit.kind` (ADR-0057 addendum D11). - -The `team` kind collided head-on with the first-class `sys_team` object: a -`kind='team'` business unit walks the hierarchical `BusinessUnitGraphService`, -while `sys_team` is the flat better-auth collaboration grouping served by -`TeamGraphService`. `kind` is a display-only categorisation hint (it does not -change graph semantics) and had **zero** usages anywhere in the repo, so this is a -safe narrowing with no data migration. New enum: -`company | division | department | office | cost_center`. diff --git a/.changeset/adr-0057-d12-primary-business-unit.md b/.changeset/adr-0057-d12-primary-business-unit.md deleted file mode 100644 index 904164df44..0000000000 --- a/.changeset/adr-0057-d12-primary-business-unit.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -"@objectstack/platform-objects": minor -"@objectstack/plugin-sharing": minor ---- - -Add `sys_user.primary_business_unit_id` projection (ADR-0057 addendum D12). - -Adds a denormalised `primary_business_unit_id` lookup to `sys_user`, maintained -by plugin-sharing as a projection of `sys_business_unit_member.is_primary` -(insert/update/delete hooks + a boot-time backfill). This makes "pick people by -business unit" — the Dataverse *filtered lookup* / ServiceNow *reference -qualifier* interaction — expressible as a plain `where: { primary_business_unit_id: X }` -(and thus as a `lookupFilters` picker filter) with **zero** query-engine change, -without traversing the membership junction. `sys_business_unit_member` remains -the effective-dated, matrix-friendly source of truth; the new column is a -maintained projection, not a second source. Home is plugin-sharing (always -loaded, owns the BU graph) rather than plugin-org-scoping, so the projection -works in single-tenant deployments too. Picker filtering by BU is therefore an -**open** (non-enterprise) capability — only hierarchy *rollup* stays paid. diff --git a/.changeset/adr-0057-erp-authz.md b/.changeset/adr-0057-erp-authz.md deleted file mode 100644 index c060e297f3..0000000000 --- a/.changeset/adr-0057-erp-authz.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -"@objectstack/platform-objects": major -"@objectstack/plugin-sharing": major -"@objectstack/spec": minor -"@objectstack/plugin-security": minor -"@objectstack/runtime": minor -"@objectstack/objectql": minor -"@objectstack/plugin-approvals": patch ---- - -**BREAKING:** the system object `sys_department` is renamed to `sys_business_unit` -— object + member table (`sys_department_member` → `sys_business_unit_member`), -fields, and i18n — with **no compatibility alias**. Any deployment holding -`sys_department` rows, or metadata that references the object by name (lookups, -list views, queries, sharing/approval scopes), must migrate to `sys_business_unit`. -A renamed shipped system object is a breaking change to the platform's public -data surface, so this lands as a **major**. Verified per ADR-0059's pre-publish -hotcrm gate: no published downstream consumer references the old name. - -ADR-0057 — ERP authorization core. Adds permission-grant access DEPTH -(`own`/`own_and_reports`/`unit`/`unit_and_below`/`org`), renames `sys_department` -→ `sys_business_unit` (no aliases — see BREAKING above), introduces the platform-owned -`sys_user_role` assignment, and seeds stack-declared `roles`/`sharingRules` into -`sys_role`/`sys_sharing_rule` at boot (closes #2077). Hierarchy-relative scopes are -delegated to a pluggable `IHierarchyScopeResolver` (open edition fails closed to -owner-only; `defineStack` errors without `requires: ['hierarchy-security']`). Also -fixes a latent over-grant where `engine.find({ filter })` was ignored (driver reads -`where`) — normalized `filter`→`where` in the engine. diff --git a/.changeset/adr-0058-expression-compiler.md b/.changeset/adr-0058-expression-compiler.md deleted file mode 100644 index ec7aaff812..0000000000 --- a/.changeset/adr-0058-expression-compiler.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -"@objectstack/formula": minor -"@objectstack/plugin-security": minor -"@objectstack/plugin-sharing": minor ---- - -ADR-0058 — expression & predicate surface unification. Adds the canonical -CEL→FilterCondition pushdown compiler in `@objectstack/formula` -(`compileCelToFilter`, `isPushdownableCel`, `lowerCelAst`) plus an in-memory -`matchesFilterCondition` backend (one AST, three backends). `plugin-security` -(RLS `using`, via a SQL bridge) and `plugin-sharing` (`celToFilter`) cut over to -it, retiring the bespoke regex/field-equality front-ends. Compound sharing -conditions now compile and enforce end-to-end (closes #1887). The RLS `check` -clause is now enforced on the write post-image (insert/by-id update), fail-closed. -Non-pushdownable predicates (arithmetic, functions, subqueries, cross-object) are -an authoring compile error, never silently dropped (ADR-0049/0055). diff --git a/.changeset/adr-0063-0064-ask-build-surface.md b/.changeset/adr-0063-0064-ask-build-surface.md deleted file mode 100644 index 8bbe268683..0000000000 --- a/.changeset/adr-0063-0064-ask-build-surface.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -"@objectstack/spec": minor -"@objectstack/service-ai": minor ---- - -feat(ai): split `ask`/`build` agents by surface + tool scoping (ADR-0063/0064). - -Two kernel agents bound by surface, not a per-turn classifier. `SkillSchema` -gains `surface: 'ask'|'build'|'both'` and `AgentSchema` gains `surface: -'ask'|'build'` (ADR-0063 §3); an agent's tools are exactly the union of its -surface-compatible skills' tools — incompatible binding is a load error in -`resolveActiveSkills` (ADR-0064 §3). The `ask` agent is now data-only (the -ADR-0040 unified "INTENT FIRST" classifier and the `buildRegisterActive` -degradation shim are removed); a new `schema_reader` (`surface:'both'`) owns -the shared reads `describe_object`/`list_objects`/`query_data` so the build -agent reuses them without dual-listing. `*.agent.ts` is closed to third -parties: the `agent` metadata-type is `allowRuntimeCreate:false, -allowOrgOverride:false` and the runtime catalog lists only platform agents -(ADR-0063 §2). Renames `data-chat-agent.ts`→`ask-agent.ts`, -`DEFAULT_DATA_AGENT_NAME`→`ASK_AGENT_NAME` (the `data_chat`/`metadata_assistant` -aliases stay resolvable). diff --git a/.changeset/analytics-measure-currency-chain.md b/.changeset/analytics-measure-currency-chain.md deleted file mode 100644 index e4078ff125..0000000000 --- a/.changeset/analytics-measure-currency-chain.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@objectstack/service-analytics": minor ---- - -Resolve a monetary measure's display currency via the field→tenant chain. - -A dataset measure-currency now resolves through: explicit measure `currency` → -source-field `currencyConfig.defaultCurrency` → tenant default (`ctx.currency`). -A measure is monetary iff it declares a currency or aggregates a `currency`-type -field, so count/avg-of-number measures never receive a code. Wires a -`measureCurrency` field-metadata resolver from the data engine's object schema. diff --git a/.changeset/bu-org-chart-tree-view.md b/.changeset/bu-org-chart-tree-view.md deleted file mode 100644 index 1725604362..0000000000 --- a/.changeset/bu-org-chart-tree-view.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@objectstack/platform-objects": minor ---- - -feat(identity): add an Org Chart tree view to `sys_business_unit` - -`sys_business_unit` is already a self-referencing hierarchy -(`parent_business_unit_id`, ADR-0057 D2) but Setup only exposed flat grids. Adds -an `org_chart` list view (`type: 'tree'`) that renders the hierarchy as an -indented, expand/collapse tree-grid, listed first so it's the default tab. No -schema change — the parent pointer and graph traversal already existed; this only -surfaces them. The `active` / `inactive` / `by_kind` / `all` grids stay for -search, filter, and bulk edit. diff --git a/.changeset/bu-rename-guard-test.md b/.changeset/bu-rename-guard-test.md deleted file mode 100644 index d84e25eaa4..0000000000 --- a/.changeset/bu-rename-guard-test.md +++ /dev/null @@ -1,4 +0,0 @@ ---- ---- - -test-only: regression guard asserting the ADR-0057 BU rename did not half-land — `sys_business_unit` / `sys_business_unit_member` object + field labels carry no stale "department" term across en/zh/ja/es. No runtime change. diff --git a/.changeset/bu-rename-i18n.md b/.changeset/bu-rename-i18n.md deleted file mode 100644 index 5078e83619..0000000000 --- a/.changeset/bu-rename-i18n.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@objectstack/platform-objects": patch ---- - -Complete the ADR-0057 `sys_department` → `sys_business_unit` rename in the Setup app and across the object's i18n (en / zh / ja / es). - -- Setup nav entry "Departments" → "Business Units" (`nav_departments` → `nav_business_units`). -- `sys_business_unit` / `sys_business_unit_member` field **labels and descriptions** in the object definitions now read "business unit" instead of "department" (the generated `en` labels had been hand-updated ahead of the def; the def was the stale source). -- All four locales' generated object translations aligned to 业务单元 / ビジネスユニット / Unidad de negocio. - -Intentionally preserved: the `kind` enum value `department` (a business unit can be *of kind* department) and the multi-concept node descriptions that list kinds. diff --git a/.changeset/conformance-ledger-helper.md b/.changeset/conformance-ledger-helper.md deleted file mode 100644 index 34fd836afb..0000000000 --- a/.changeset/conformance-ledger-helper.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@objectstack/verify": minor ---- - -ADR-0060 P1 — add the reusable conformance-ledger helper. `@objectstack/verify` -now exports `checkLedger(rows, opts)` + `ConformanceRow`: the static complement to -its runtime harness, encoding the shared invariants the platform had hand-written -twice (unique ids / valid state / enforced-has-site / experimental·removed-has-note -/ proof-file-exists / high-risk-has-proof / exactly-one-cover / discover ratchet). -The ADR-0056 authz and ADR-0058 expression ledgers are refactored onto it. diff --git a/.changeset/dashboard-report-drill.md b/.changeset/dashboard-report-drill.md deleted file mode 100644 index dd04a2faad..0000000000 --- a/.changeset/dashboard-report-drill.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@objectstack/service-analytics": minor ---- - -Dataset analytics enrich **dimension** result fields with their display label (so report/dashboard table headers read "Status" instead of the raw field name) and expose drill-through metadata on the dataset query result: the base `object`, a drillable dimension→field map, and a parallel `drillRawRows` array of each row's raw grouped values (captured before label resolution). This lets a host drill a grouped bucket back to its underlying records with an exact-match filter built from the stored value, not the display label. Date dimensions are excluded (a humanized bucket can't be exact-matched). diff --git a/.changeset/dataset-measure-currency.md b/.changeset/dataset-measure-currency.md deleted file mode 100644 index 06d9d7516d..0000000000 --- a/.changeset/dataset-measure-currency.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@objectstack/spec": minor -"@objectstack/service-analytics": minor ---- - -Propagate a dataset measure's declared currency to the analytics result field. - -Adds an optional `DatasetMeasure.currency` (ISO 4217) on the semantic layer and -carries it onto each measure result field alongside `label`/`format`, so a -currency-aware client (Intl symbol) can render `¥1,234` / `$616,000` from a real -currency code instead of a plain number or a `$` baked into `format`. Additive -and optional — existing datasets are unaffected. diff --git a/.changeset/dev-app-default-profile.md b/.changeset/dev-app-default-profile.md deleted file mode 100644 index e21f8f9691..0000000000 --- a/.changeset/dev-app-default-profile.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -"@objectstack/runtime": patch ---- - -Fix: the artifact-serve path now honors an app-declared default permission-set -profile (`isProfile: true, isDefault: true`) under `objectstack dev`/`serve`/`start`. - -`createStandaloneStack` (the boot path used when serving a compiled -`dist/objectstack.json` with no host `objectstack.config.ts`) surfaced -`objects`/`requires`/`manifest` from the artifact bundle but dropped -`permissions[]` and `roles[]`. As a result the CLI's -`appDefaultProfileName(config.permissions)` saw `undefined` and the SecurityPlugin -fell back to the built-in owner-only `member_default` — so an app whose default -profile carries e.g. `readScope: 'unit_and_below'` (ADR-0056 D7 / ADR-0057 D1) -was silently ignored. The config-load path was unaffected because the app's -`permissions` survived via the original stack object. - -`createStandaloneStack` now surfaces `permissions[]` and `roles[]` from the -artifact bundle, mirroring the existing `objects`/`requires`/`manifest` handling, -so the artifact-serve path applies the app default profile exactly like the -config-load path. diff --git a/.changeset/dev-datasource-visibility.md b/.changeset/dev-datasource-visibility.md deleted file mode 100644 index ebb5f30ec6..0000000000 --- a/.changeset/dev-datasource-visibility.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@objectstack/core": patch ---- - -fix(runtime): surface code-defined datasources at `GET /api/v1/datasources` and `GET /api/v1/meta/datasource` on the standalone / host-config boot path (ADR-0015 §18, follow-up to #2111). - -A datasource declared in `defineStack({ datasources: [...] })` (e.g. the showcase's `showcase_external`) is stamped `origin: 'code'` and registered by `AppPlugin` via `metadata.registerInMemory('datasource', …)` — gated on `typeof metadata.registerInMemory === 'function'`. On the standalone / host-config path (`os dev`/`serve` for a config whose `plugins` are already instantiated — `isHostConfig` true — so no `MetadataPlugin` loads) the `metadata` service is an in-memory fallback that implemented `register`/`list`/`get` but **not** `registerInMemory`. The guard was therefore false, AppPlugin silently skipped the registration, and the datasource was absent from both REST surfaces (and Setup → Integrations → Datasources) even though the boot banner counted it and its federated objects were queryable. - -Both in-memory `metadata` fallbacks (`@objectstack/core`'s `createMemoryMetadata` and `@objectstack/plugin-dev`'s dev stub) now implement `registerInMemory` (synchronous, no persistence — identical to `register` for these in-memory stores, matching `MetadataManager`'s signature). The read paths (`metadata.list`, datasource-admin `listDatasources`, and `protocol.getMetaItems` which merges `metadata.list`) were already correct; this restores the write-side registration they depend on. It also makes stack-declared security metadata (`roles`/`permissions`/`sharingRules`/`policies`, registered through the same guard) listable on this path. diff --git a/.changeset/execution-context-currency.md b/.changeset/execution-context-currency.md deleted file mode 100644 index 55c815b719..0000000000 --- a/.changeset/execution-context-currency.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -"@objectstack/spec": minor -"@objectstack/runtime": minor -"@objectstack/rest": minor ---- - -Resolve the tenant default currency onto ExecutionContext. - -Adds `ExecutionContext.currency` (ISO 4217) and resolves it from the -`localization.currency` setting alongside `timezone`/`locale` — in both the -runtime `resolveExecutionContext` and the REST mirror. This is the foundation -for the documented "applied when a currency field omits its own" fallback: the -tenant default is now carried on every request context, so analytics enrichment, -formatters, and renderers can resolve a measure/field currency down to the org -default instead of hard-coding it. Undefined when no tenant default is -configured (consumers then render a plain number). diff --git a/.changeset/expand-where-propagation.md b/.changeset/expand-where-propagation.md deleted file mode 100644 index 4ae588af27..0000000000 --- a/.changeset/expand-where-propagation.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@objectstack/objectql": patch -"@objectstack/spec": patch ---- - -Honor a nested `where` filter inside `expand` on lookup/master_detail expansion. - -The expand post-processor batch-loads related records with an `id $in [...]` query but never merged the nested QueryAST `where`, so a documented `expand: { rel: { where: {...} } }` filter was silently ignored and every related record came back. The nested filter is now AND-merged into the batch query via an explicit `$and` group (`{ $and: [{ id: { $in } }, nestedAST.where] }`) — robust against a nested filter that itself keys `id` or uses a top-level `$or`/`$and`, where a shallow spread would clobber or reorder the constraint. - -`limit`/`offset`/`orderBy` remain intentionally not honored on the expand path: it batch-loads every parent's related records in one `$in` query and re-keys them per parent by foreign key, so a per-parent page size or ordering can't be expressed there. Docs and the schema `describe()` are updated to match, with a guard test asserting `limit`/`offset` are not pushed into the expand query. diff --git a/.changeset/fix-d10-envelope-unwrap.md b/.changeset/fix-d10-envelope-unwrap.md deleted file mode 100644 index df2fa8d1da..0000000000 --- a/.changeset/fix-d10-envelope-unwrap.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@objectstack/rest": patch ---- - -Fix: the Setup-nav capability gate (`requiresService`, ADR-0057 D10) was a no-op on the single-item app-meta path. - -`GET /meta/app/:name` returns a metadata envelope `{ type, name, item: , ... }`, but -`filterAppForUser` was applied to the envelope — whose `.navigation` is undefined — so it -returned it untouched, silently bypassing BOTH the `requiredPermissions` gate and the D10 -`requiresService` gate. Organizations/Invitations therefore still appeared in the Setup app -even in single-tenant deployments. `filterAppForUser` and `resolveRegisteredServices` now -unwrap the envelope (the list path already passed the raw app). Verified against a live -`os dev`: single-tenant hides Organizations/Invitations; multi-tenant shows them. diff --git a/.changeset/fix-org-id-optional-single-tenant.md b/.changeset/fix-org-id-optional-single-tenant.md deleted file mode 100644 index 661e172565..0000000000 --- a/.changeset/fix-org-id-optional-single-tenant.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@objectstack/platform-objects": patch ---- - -Fix: `sys_business_unit` / `sys_team` could not be created in single-tenant deployments. - -`organization_id` was `required`, but single-tenant has no `sys_organization` row and -nothing auto-stamps one (OrgScopingPlugin is multi-tenant-only), so every create failed -with `VALIDATION_FAILED: organization_id (required)`. Make `organization_id` optional on -both objects: single-tenant leaves it null; multi-tenant still auto-stamps it via -OrgScopingPlugin and tenant-isolation RLS hides any null-org row (fail-closed), so there is -no cross-tenant exposure. (sys_member / sys_invitation carry the same `required` flag but are -created only through better-auth org flows, which always supply an org — left unchanged.) diff --git a/.changeset/fix-single-tenant-followup.md b/.changeset/fix-single-tenant-followup.md deleted file mode 100644 index 9ffff2d7eb..0000000000 --- a/.changeset/fix-single-tenant-followup.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -"@objectstack/platform-objects": patch -"@objectstack/plugin-sharing": patch ---- - -Single-tenant audit follow-ups (ADR-0057): - -- **`sys_member` / `sys_invitation`**: make `organization_id` optional (same class as the - sys_business_unit/sys_team fix #2178). Single-tenant has no org row and no auto-stamp; - multi-tenant still auto-stamps via OrgScopingPlugin with null-org rows hidden by - tenant-isolation RLS (fail-closed). Completes the org-scoped identity graph's - single-tenant consistency. -- **`BusinessUnitGraphService.headOf()`**: add the missing `orgScope()` org filter (it - queries under SYSTEM_CTX, bypassing RLS, so the scope is the only isolation). Previously - `headOf(buId)` read a business unit's `manager_user_id` by id alone — a cross-organization - leak in multi-tenant. Now consistent with `descendants()`. +regression test. diff --git a/.changeset/gantt-config-passthrough.md b/.changeset/gantt-config-passthrough.md deleted file mode 100644 index 3959f029a6..0000000000 --- a/.changeset/gantt-config-passthrough.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -"@objectstack/spec": patch ---- - -fix(spec): make `GanttConfigSchema` forward-compatible via `.passthrough()`. - -The gantt renderer (objectui plugin-gantt) keeps adding view-config knobs -(e.g. `lockField`, `defaultCollapsedDepth`) ahead of this schema. Without -passthrough, the console — which validates the view config against a bundled -copy of this schema before handing it to the renderer — strips any field not -declared here, so every new renderer knob needs a spec release + console -rebuild before it can take effect. Adding `.passthrough()` lets unknown fields -flow through to the renderer, decoupling renderer releases from spec releases. -Known fields keep their validation; the renderer still only reads what it -understands. diff --git a/.changeset/me-localization-endpoint.md b/.changeset/me-localization-endpoint.md deleted file mode 100644 index 2a4784f36c..0000000000 --- a/.changeset/me-localization-endpoint.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@objectstack/plugin-hono-server": minor ---- - -Expose resolved regional defaults to every authenticated user. - -Adds `GET /api/v1/auth/me/localization` returning the request tenant's resolved -`{ currency, locale, timezone }` from the ExecutionContext (ADR-0053). The -`localization` SETTINGS are gated to `setup.access`, but the resolved defaults -are needed by every renderer to format currency/dates/numbers — so they are -surfaced here without that gate. Enables a client to format a currency field -in the tenant's default currency when the field omits its own. diff --git a/.changeset/rename-data-chat-to-ask.md b/.changeset/rename-data-chat-to-ask.md deleted file mode 100644 index a20a05c1bd..0000000000 --- a/.changeset/rename-data-chat-to-ask.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@objectstack/service-ai": minor ---- - -Rename the built-in data agent `data_chat` → `ask` (Path A: friendly console URL == real id). Back-compat preserved via a new process-wide alias registry: `AgentRuntime.loadAgent` normalizes legacy names, so `/agents/data_chat/chat` and persisted `agent_id='data_chat'` keep resolving. `registerAgentAlias()` is exported so other packages register their own renames (cloud AI Studio: `metadata_assistant`→`build`). The plugin prunes the stale legacy agent record on upgrade so the catalog isn't doubled. diff --git a/.changeset/rls-using-to-cel.md b/.changeset/rls-using-to-cel.md deleted file mode 100644 index a6e3890632..0000000000 --- a/.changeset/rls-using-to-cel.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -"@objectstack/spec": minor -"@objectstack/plugin-security": minor ---- - -ADR-0058 D1 follow-through — RLS predicates are now canonical CEL. Migrated every -seeded RLS `using`/`check` (default permission sets, showcase, and the -`RLS.ownerPolicy`/`tenantPolicy`/`allowAllPolicy` helper factories) from the -legacy SQL-ish form (`=`, `IN (...)`) to pure CEL (`==`, `in`), so authors and AI -learn ONE expression language. The `sqlPredicateToCel` bridge is retained as a -DEPRECATED transitional shim: a stored SQL-style predicate still compiles (no -silent deny on legacy data) but emits a deprecation warn; canonical CEL passes -through as a no-op. No runtime behavior change — CEL and the old SQL form compile -to the identical FilterCondition. diff --git a/.changeset/spec-define-x-factories.md b/.changeset/spec-define-x-factories.md deleted file mode 100644 index febe9cab57..0000000000 --- a/.changeset/spec-define-x-factories.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -"@objectstack/spec": minor ---- - -spec: add `defineX` factories for the remaining 16 writable domains and the 6 -missing `XInput` aliases — one consistent, type-safe authoring entry per domain -(#2035). - -New factories: `defineDatasource`, `defineConnector`, `definePolicy`, -`defineSharingRule`, `defineRole`, `definePermissionSet`, -`defineEmailTemplateDefinition`, `defineReport`, `defineWebhook`, -`defineObjectExtension`, `defineCube`, `defineMapping`, `defineTheme`, -`defineTranslationBundle`, `definePage`, `defineAction`. Each mirrors the 19 -existing factories (`XSchema.parse(z.input<…>)`): input-shape ergonomics + -authoring-time validation. Because a factory is a *value* import, a broken -import hard-errors instead of silently degrading to `any` (the #2023 failure -mode), and errors surface at `.parse()` time with field-level messages. - -Also adds the previously-missing input aliases `PolicyInput`, `CubeInput`, -`MappingInput`, `ThemeInput`, `TranslationBundleInput`, `PageInput`. - -Purely additive: no existing exports change. diff --git a/.changeset/spec-tree-view-type.md b/.changeset/spec-tree-view-type.md deleted file mode 100644 index e5fe5fe3db..0000000000 --- a/.changeset/spec-tree-view-type.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@objectstack/spec": minor ---- - -feat(spec): add a `tree` view type to the ListView schema - -`'tree'` is now a valid `ListView.type` (and `VisualizationType`), backed by a -new `TreeConfigSchema` (`parentField` / `labelField` / `fields` / -`defaultExpandedDepth`, passthrough). This lets a self-referencing object be -served as a tree-grid; without it the runtime Zod-validates view metadata and -silently drops `type:'tree'`. Renderer ships in objectui `@object-ui/plugin-tree`. diff --git a/.changeset/sys-user-manager-hierarchy.md b/.changeset/sys-user-manager-hierarchy.md deleted file mode 100644 index 1178263faa..0000000000 --- a/.changeset/sys-user-manager-hierarchy.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@objectstack/platform-objects": minor ---- - -Add `manager_id` (self-lookup) to `sys_user` — the reporting chain that the ADR-0057 `own_and_reports` hierarchy scope walks. - -The `own_and_reports` scope was implemented in the resolver but **unbacked**: nothing on `sys_user` modelled a manager, so it always degraded to owner-only. This adds the field (+ en/zh/ja/es labels) and extends the scope-depth dogfood to prove the scope end-to-end — a user now sees their own records plus everyone down their `manager_id` chain. diff --git a/.changeset/validate-action-predicates.md b/.changeset/validate-action-predicates.md deleted file mode 100644 index cb12e5f6be..0000000000 --- a/.changeset/validate-action-predicates.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -"@objectstack/cli": minor -"@objectstack/formula": patch ---- - -build: validate UI action `visible` / `disabled` predicates at compile time - -Extends the ADR-0032 build-time expression check to cover action `visible` and -`disabled` predicates (stack-level and object-attached), evaluated record-scoped -like validation rules. A record-header / row action's `visible` is evaluated by -`ActionEngine` against `{ record, recordId, objectName, user, … }` with -fail-closed semantics, so a **bare** field reference (`!done` instead of -`!record.done`) throws at runtime and the action is **silently hidden on every -record** — the trap behind the #2183 "Mark Done never hides" debugging hunt. -`os build` now reports it as an error with the corrective `record.` -message instead of letting it ship. - -`@objectstack/formula`: `ctx` and `features` are added to the record-scope -namespace roots (alongside the existing `user`, `data`, `context`, …) so the -ambient globals real action predicates use (`record.id == ctx.user.id`, -`features.multiOrgEnabled`) are not false-positives. Verified against the full -monorepo build (every example + platform bundle still compiles clean). diff --git a/.changeset/validate-record-scoped-predicates.md b/.changeset/validate-record-scoped-predicates.md deleted file mode 100644 index 14dd1e5b7e..0000000000 --- a/.changeset/validate-record-scoped-predicates.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -"@objectstack/cli": minor -"@objectstack/formula": patch ---- - -build: extend ADR-0032 predicate validation to all flat record-scoped sites - -Builds on the action-predicate guard. `os build` now also validates these -record-scoped predicates for bare field references (`status` instead of -`record.status`), which otherwise evaluate to nothing at runtime and silently -mis-behave: - -- **field conditional rules** — `requiredWhen`, `readonlyWhen`, - `conditionalRequired`, `visibleWhen` (server-enforced; a broken one is - fail-open — the required/readonly rule just never fires); -- **sharing-rule `condition`** (security-critical — decides which rows a - principal sees); -- **lifecycle hook `condition`** (skips the handler when false); -- **nested `when`** on `conditional` validation rules (previously only the - top-level rule predicate was checked). - -`@objectstack/formula`: adds `parent` to the record-scope namespace roots — -master-detail inline grids inject the header record as `parent` for a child -field's `readonlyWhen`/`requiredWhen` (ADR-0036, #1581), so `parent.status` is -legitimate, not a bare ref. Verified against the full monorepo build (76 tasks -clean). - -Not yet covered (separate follow-up — needs a recursive view/page tree walker -and per-node scope classification): deeply-nested UI visibility predicates -(`view` element/section `visibleOn`/`condition`, `page` component `visibility`), -object field-group `visibleOn`, and app-nav `visible` (user/feature-scoped, not -record-scoped). diff --git a/.changeset/verify-skip-external-readonly.md b/.changeset/verify-skip-external-readonly.md deleted file mode 100644 index 8206c9da60..0000000000 --- a/.changeset/verify-skip-external-readonly.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@objectstack/verify": patch ---- - -fix(verify): skip read-only federated (external) objects in CRUD verification. - -`objectstack verify` probe-inserts a record into every object. A federated object -on an external datasource is read-only unless BOTH the datasource and the object -opt into writes (ADR-0015 write gate), so that insert is correctly rejected — -which `verify` was reporting as a `create-failed` runtime failure. `deriveCrudCases` -now marks such objects `blocked` (skipped), matching the write gate's double -opt-in rule, so the dogfood gate stays honest while supporting external datasource -example apps. diff --git a/examples/app-crm/CHANGELOG.md b/examples/app-crm/CHANGELOG.md index c81fcd3565..f9eddaaf84 100644 --- a/examples/app-crm/CHANGELOG.md +++ b/examples/app-crm/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/example-crm +## 4.0.55 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [47d978a] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/runtime@10.0.0 + ## 4.0.54 ### Patch Changes diff --git a/examples/app-crm/package.json b/examples/app-crm/package.json index 8c69539c15..eeeb79505d 100644 --- a/examples/app-crm/package.json +++ b/examples/app-crm/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/example-crm", - "version": "4.0.54", + "version": "4.0.55", "description": "Minimal CRM example — a smoke-test workspace that exercises the metadata loading pipeline (objects → views → app → dashboard → hook → flow → 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-showcase/CHANGELOG.md b/examples/app-showcase/CHANGELOG.md index 7b4164d2ec..d0c28135bb 100644 --- a/examples/app-showcase/CHANGELOG.md +++ b/examples/app-showcase/CHANGELOG.md @@ -1,5 +1,29 @@ # @objectstack/example-showcase +## 0.2.1 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [92db3e5] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [47d978a] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/driver-sql@10.0.0 + - @objectstack/runtime@10.0.0 + - @objectstack/cloud-connection@10.0.0 + - @objectstack/connector-rest@10.0.0 + - @objectstack/connector-slack@10.0.0 + ## 0.2.0 ### Minor Changes diff --git a/examples/app-showcase/package.json b/examples/app-showcase/package.json index 0d96c70c4b..380caf9f84 100644 --- a/examples/app-showcase/package.json +++ b/examples/app-showcase/package.json @@ -1,7 +1,7 @@ { "name": "@objectstack/example-showcase", - "version": "0.2.0", - "description": "Kitchen-sink showcase workspace \u2014 exercises every metadata type, every view type, every chart type, and the major end-to-end capability chains (security, automation, AI). Built for demonstration, debugging, and coverage-driven verification.", + "version": "0.2.1", + "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, AI). Built for demonstration, debugging, and coverage-driven verification.", "license": "Apache-2.0", "private": true, "main": "./objectstack.config.ts", diff --git a/examples/app-todo/CHANGELOG.md b/examples/app-todo/CHANGELOG.md index 73aa8afb03..99158858d2 100644 --- a/examples/app-todo/CHANGELOG.md +++ b/examples/app-todo/CHANGELOG.md @@ -1,5 +1,32 @@ # @objectstack/example-todo +## 4.0.55 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [47d978a] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [be07ce7] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/objectql@10.0.0 + - @objectstack/runtime@10.0.0 + - @objectstack/service-ai@10.0.0 + - @objectstack/client@10.0.0 + - @objectstack/metadata@10.0.0 + - @objectstack/driver-sqlite-wasm@10.0.0 + - @objectstack/knowledge-memory@10.0.0 + - @objectstack/service-knowledge@10.0.0 + ## 4.0.54 ### Patch Changes diff --git a/examples/app-todo/package.json b/examples/app-todo/package.json index 77af964c55..931c645672 100644 --- a/examples/app-todo/package.json +++ b/examples/app-todo/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/example-todo", - "version": "4.0.54", + "version": "4.0.55", "description": "Example Todo App using ObjectStack Protocol", "license": "Apache-2.0", "private": true, diff --git a/packages/adapters/express/CHANGELOG.md b/packages/adapters/express/CHANGELOG.md index 9839ba4119..c82fa95e1d 100644 --- a/packages/adapters/express/CHANGELOG.md +++ b/packages/adapters/express/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/express +## 10.0.0 + +### Patch Changes + +- Updated dependencies [e16f2a8] +- Updated dependencies [47d978a] +- Updated dependencies [220ce5b] + - @objectstack/runtime@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/adapters/express/package.json b/packages/adapters/express/package.json index e529f0aa7c..b303d137fb 100644 --- a/packages/adapters/express/package.json +++ b/packages/adapters/express/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/express", - "version": "9.11.0", + "version": "10.0.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/adapters/fastify/CHANGELOG.md b/packages/adapters/fastify/CHANGELOG.md index 78c6fb3f10..caf340d918 100644 --- a/packages/adapters/fastify/CHANGELOG.md +++ b/packages/adapters/fastify/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/fastify +## 10.0.0 + +### Patch Changes + +- Updated dependencies [e16f2a8] +- Updated dependencies [47d978a] +- Updated dependencies [220ce5b] + - @objectstack/runtime@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/adapters/fastify/package.json b/packages/adapters/fastify/package.json index e6ee7be009..e0b55775d8 100644 --- a/packages/adapters/fastify/package.json +++ b/packages/adapters/fastify/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/fastify", - "version": "9.11.0", + "version": "10.0.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/adapters/hono/CHANGELOG.md b/packages/adapters/hono/CHANGELOG.md index b643888b03..d070a10ded 100644 --- a/packages/adapters/hono/CHANGELOG.md +++ b/packages/adapters/hono/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/hono +## 10.0.0 + +### Patch Changes + +- Updated dependencies [e16f2a8] +- Updated dependencies [47d978a] +- Updated dependencies [220ce5b] +- Updated dependencies [00c32f2] + - @objectstack/runtime@10.0.0 + - @objectstack/plugin-hono-server@10.0.0 + - @objectstack/types@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/adapters/hono/package.json b/packages/adapters/hono/package.json index 390405d500..856919c9df 100644 --- a/packages/adapters/hono/package.json +++ b/packages/adapters/hono/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/hono", - "version": "9.11.0", + "version": "10.0.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/adapters/nestjs/CHANGELOG.md b/packages/adapters/nestjs/CHANGELOG.md index d6a368ad2d..1984e199cf 100644 --- a/packages/adapters/nestjs/CHANGELOG.md +++ b/packages/adapters/nestjs/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/nestjs +## 10.0.0 + +### Patch Changes + +- Updated dependencies [e16f2a8] +- Updated dependencies [47d978a] +- Updated dependencies [220ce5b] + - @objectstack/runtime@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/adapters/nestjs/package.json b/packages/adapters/nestjs/package.json index e9e1ea25d4..1c42fa6847 100644 --- a/packages/adapters/nestjs/package.json +++ b/packages/adapters/nestjs/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/nestjs", - "version": "9.11.0", + "version": "10.0.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/adapters/nextjs/CHANGELOG.md b/packages/adapters/nextjs/CHANGELOG.md index 64af6fd945..68b291bb7e 100644 --- a/packages/adapters/nextjs/CHANGELOG.md +++ b/packages/adapters/nextjs/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/nextjs +## 10.0.0 + +### Patch Changes + +- Updated dependencies [e16f2a8] +- Updated dependencies [47d978a] +- Updated dependencies [220ce5b] + - @objectstack/runtime@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/adapters/nextjs/package.json b/packages/adapters/nextjs/package.json index 08047006a0..b451d16a49 100644 --- a/packages/adapters/nextjs/package.json +++ b/packages/adapters/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/nextjs", - "version": "9.11.0", + "version": "10.0.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/adapters/nuxt/CHANGELOG.md b/packages/adapters/nuxt/CHANGELOG.md index 6534c99f0e..9af96e05cb 100644 --- a/packages/adapters/nuxt/CHANGELOG.md +++ b/packages/adapters/nuxt/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/nuxt +## 10.0.0 + +### Patch Changes + +- Updated dependencies [e16f2a8] +- Updated dependencies [47d978a] +- Updated dependencies [220ce5b] + - @objectstack/runtime@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/adapters/nuxt/package.json b/packages/adapters/nuxt/package.json index b61dc2c44b..ea3b7e6a6c 100644 --- a/packages/adapters/nuxt/package.json +++ b/packages/adapters/nuxt/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/nuxt", - "version": "9.11.0", + "version": "10.0.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/adapters/sveltekit/CHANGELOG.md b/packages/adapters/sveltekit/CHANGELOG.md index 6d8abd7cf5..24219291fb 100644 --- a/packages/adapters/sveltekit/CHANGELOG.md +++ b/packages/adapters/sveltekit/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/sveltekit +## 10.0.0 + +### Patch Changes + +- Updated dependencies [e16f2a8] +- Updated dependencies [47d978a] +- Updated dependencies [220ce5b] + - @objectstack/runtime@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/adapters/sveltekit/package.json b/packages/adapters/sveltekit/package.json index 014d555a0d..fd5267a921 100644 --- a/packages/adapters/sveltekit/package.json +++ b/packages/adapters/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/sveltekit", - "version": "9.11.0", + "version": "10.0.0", "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 04a56aebec..f62c9e305f 100644 --- a/packages/apps/account/CHANGELOG.md +++ b/packages/apps/account/CHANGELOG.md @@ -1,5 +1,31 @@ # @objectstack/account +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [2256e93] +- Updated dependencies [7108ff3] +- Updated dependencies [30c0313] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [ae271d0] +- Updated dependencies [61ed5c7] +- Updated dependencies [a581385] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [0df063e] +- Updated dependencies [ce13bb8] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] +- Updated dependencies [47d978a] + - @objectstack/spec@10.0.0 + - @objectstack/platform-objects@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/apps/account/package.json b/packages/apps/account/package.json index 739344205b..7567ce9013 100644 --- a/packages/apps/account/package.json +++ b/packages/apps/account/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/account", - "version": "9.11.0", + "version": "10.0.0", "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 dc3342aea6..732e04460f 100644 --- a/packages/apps/setup/CHANGELOG.md +++ b/packages/apps/setup/CHANGELOG.md @@ -1,5 +1,31 @@ # @objectstack/setup +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [2256e93] +- Updated dependencies [7108ff3] +- Updated dependencies [30c0313] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [ae271d0] +- Updated dependencies [61ed5c7] +- Updated dependencies [a581385] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [0df063e] +- Updated dependencies [ce13bb8] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] +- Updated dependencies [47d978a] + - @objectstack/spec@10.0.0 + - @objectstack/platform-objects@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/apps/setup/package.json b/packages/apps/setup/package.json index a2a4611eda..82d6d43f54 100644 --- a/packages/apps/setup/package.json +++ b/packages/apps/setup/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/setup", - "version": "9.11.0", + "version": "10.0.0", "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 3b0d39ab0b..d63b0f2e53 100644 --- a/packages/apps/studio/CHANGELOG.md +++ b/packages/apps/studio/CHANGELOG.md @@ -1,5 +1,31 @@ # @objectstack/studio +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [2256e93] +- Updated dependencies [7108ff3] +- Updated dependencies [30c0313] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [ae271d0] +- Updated dependencies [61ed5c7] +- Updated dependencies [a581385] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [0df063e] +- Updated dependencies [ce13bb8] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] +- Updated dependencies [47d978a] + - @objectstack/spec@10.0.0 + - @objectstack/platform-objects@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/apps/studio/package.json b/packages/apps/studio/package.json index a74cd76dd3..6cd0b670cf 100644 --- a/packages/apps/studio/package.json +++ b/packages/apps/studio/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/studio", - "version": "9.11.0", + "version": "10.0.0", "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 ae7574d775..6c716a57a7 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,136 @@ # @objectstack/cli +## 10.0.0 + +### Minor Changes + +- 48a307a: build: validate UI action `visible` / `disabled` predicates at compile time + + Extends the ADR-0032 build-time expression check to cover action `visible` and + `disabled` predicates (stack-level and object-attached), evaluated record-scoped + like validation rules. A record-header / row action's `visible` is evaluated by + `ActionEngine` against `{ record, recordId, objectName, user, … }` with + fail-closed semantics, so a **bare** field reference (`!done` instead of + `!record.done`) throws at runtime and the action is **silently hidden on every + record** — the trap behind the #2183 "Mark Done never hides" debugging hunt. + `os build` now reports it as an error with the corrective `record.` + message instead of letting it ship. + + `@objectstack/formula`: `ctx` and `features` are added to the record-scope + namespace roots (alongside the existing `user`, `data`, `context`, …) so the + ambient globals real action predicates use (`record.id == ctx.user.id`, + `features.multiOrgEnabled`) are not false-positives. Verified against the full + monorepo build (every example + platform bundle still compiles clean). + +- 25fc0e4: build: extend ADR-0032 predicate validation to all flat record-scoped sites + + Builds on the action-predicate guard. `os build` now also validates these + record-scoped predicates for bare field references (`status` instead of + `record.status`), which otherwise evaluate to nothing at runtime and silently + mis-behave: + + - **field conditional rules** — `requiredWhen`, `readonlyWhen`, + `conditionalRequired`, `visibleWhen` (server-enforced; a broken one is + fail-open — the required/readonly rule just never fires); + - **sharing-rule `condition`** (security-critical — decides which rows a + principal sees); + - **lifecycle hook `condition`** (skips the handler when false); + - **nested `when`** on `conditional` validation rules (previously only the + top-level rule predicate was checked). + + `@objectstack/formula`: adds `parent` to the record-scope namespace roots — + master-detail inline grids inject the header record as `parent` for a child + field's `readonlyWhen`/`requiredWhen` (ADR-0036, #1581), so `parent.status` is + legitimate, not a bare ref. Verified against the full monorepo build (76 tasks + clean). + + Not yet covered (separate follow-up — needs a recursive view/page tree walker + and per-node scope classification): deeply-nested UI visibility predicates + (`view` element/section `visibleOn`/`condition`, `page` component `visibility`), + object field-group `visibleOn`, and app-nav `visible` (user/feature-scoped, not + record-scoped). + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [92db3e5] +- Updated dependencies [2a1b16b] +- Updated dependencies [2256e93] +- Updated dependencies [7108ff3] +- Updated dependencies [30c0313] +- Updated dependencies [e16f2a8] +- Updated dependencies [cfd86ce] +- Updated dependencies [e411a82] +- Updated dependencies [70609af] +- Updated dependencies [ae271d0] +- Updated dependencies [61ed5c7] +- Updated dependencies [ee86099] +- Updated dependencies [3187952] +- Updated dependencies [a581385] +- Updated dependencies [47d978a] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [3754f80] +- Updated dependencies [0df063e] +- Updated dependencies [ce13bb8] +- Updated dependencies [feead7e] +- Updated dependencies [00c32f2] +- Updated dependencies [be07ce7] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] +- Updated dependencies [47d978a] +- Updated dependencies [48a307a] +- Updated dependencies [25fc0e4] +- Updated dependencies [0feea92] + - @objectstack/spec@10.0.0 + - @objectstack/driver-sql@10.0.0 + - @objectstack/objectql@10.0.0 + - @objectstack/rest@10.0.0 + - @objectstack/platform-objects@10.0.0 + - @objectstack/plugin-sharing@10.0.0 + - @objectstack/plugin-security@10.0.0 + - @objectstack/runtime@10.0.0 + - @objectstack/plugin-approvals@10.0.0 + - @objectstack/formula@10.0.0 + - @objectstack/service-ai@10.0.0 + - @objectstack/service-analytics@10.0.0 + - @objectstack/verify@10.0.0 + - @objectstack/core@10.0.0 + - @objectstack/plugin-hono-server@10.0.0 + - @objectstack/account@10.0.0 + - @objectstack/setup@10.0.0 + - @objectstack/studio@10.0.0 + - @objectstack/client@10.0.0 + - @objectstack/cloud-connection@10.0.0 + - @objectstack/mcp@10.0.0 + - @objectstack/observability@10.0.0 + - @objectstack/driver-memory@10.0.0 + - @objectstack/driver-mongodb@10.0.0 + - @objectstack/driver-sqlite-wasm@10.0.0 + - @objectstack/plugin-audit@10.0.0 + - @objectstack/plugin-auth@10.0.0 + - @objectstack/plugin-email@10.0.0 + - @objectstack/plugin-org-scoping@10.0.0 + - @objectstack/plugin-reports@10.0.0 + - @objectstack/plugin-webhooks@10.0.0 + - @objectstack/service-automation@10.0.0 + - @objectstack/service-cache@10.0.0 + - @objectstack/service-datasource@10.0.0 + - @objectstack/service-job@10.0.0 + - @objectstack/service-messaging@10.0.0 + - @objectstack/service-package@10.0.0 + - @objectstack/service-queue@10.0.0 + - @objectstack/service-realtime@10.0.0 + - @objectstack/service-settings@10.0.0 + - @objectstack/service-storage@10.0.0 + - @objectstack/trigger-api@10.0.0 + - @objectstack/trigger-record-change@10.0.0 + - @objectstack/trigger-schedule@10.0.0 + - @objectstack/types@10.0.0 + - @objectstack/console@10.0.0 + ## 9.11.0 ### Minor Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index f6039b260b..44963e1459 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/cli", - "version": "9.11.0", + "version": "10.0.0", "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 9fcfd308a3..f1bba93c2c 100644 --- a/packages/client-react/CHANGELOG.md +++ b/packages/client-react/CHANGELOG.md @@ -1,5 +1,25 @@ # @objectstack/client-react +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + - @objectstack/client@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/client-react/package.json b/packages/client-react/package.json index 1fefbaa107..e11895e082 100644 --- a/packages/client-react/package.json +++ b/packages/client-react/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/client-react", - "version": "9.11.0", + "version": "10.0.0", "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 fca8771262..9d2faecd33 100644 --- a/packages/client/CHANGELOG.md +++ b/packages/client/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/client +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/client/package.json b/packages/client/package.json index b3f459fc05..f75bf96d57 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/client", - "version": "9.11.0", + "version": "10.0.0", "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 ab052474c6..e6e05b083f 100644 --- a/packages/cloud-connection/CHANGELOG.md +++ b/packages/cloud-connection/CHANGELOG.md @@ -1,5 +1,27 @@ # @objectstack/cloud-connection +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [47d978a] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/runtime@10.0.0 + - @objectstack/core@10.0.0 + - @objectstack/types@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/cloud-connection/package.json b/packages/cloud-connection/package.json index fdd649f23b..480a34bdf6 100644 --- a/packages/cloud-connection/package.json +++ b/packages/cloud-connection/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/cloud-connection", - "version": "9.11.0", + "version": "10.0.0", "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 (ADR-0008): the hub service, plan policy, and entitlements stay server-side.", "type": "module", diff --git a/packages/connectors/connector-mcp/CHANGELOG.md b/packages/connectors/connector-mcp/CHANGELOG.md index 6ed8963aff..48f4b87d7f 100644 --- a/packages/connectors/connector-mcp/CHANGELOG.md +++ b/packages/connectors/connector-mcp/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/connector-mcp +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/connectors/connector-mcp/package.json b/packages/connectors/connector-mcp/package.json index dcef1b8ee8..12ae2fe098 100644 --- a/packages/connectors/connector-mcp/package.json +++ b/packages/connectors/connector-mcp/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-mcp", - "version": "9.11.0", + "version": "10.0.0", "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 96412a5ee9..438338d5be 100644 --- a/packages/connectors/connector-openapi/CHANGELOG.md +++ b/packages/connectors/connector-openapi/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/connector-openapi +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/connectors/connector-openapi/package.json b/packages/connectors/connector-openapi/package.json index 1a5a624f76..07c8714823 100644 --- a/packages/connectors/connector-openapi/package.json +++ b/packages/connectors/connector-openapi/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-openapi", - "version": "9.11.0", + "version": "10.0.0", "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 ea3d9688b2..8485ef5796 100644 --- a/packages/connectors/connector-rest/CHANGELOG.md +++ b/packages/connectors/connector-rest/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/connector-rest +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/connectors/connector-rest/package.json b/packages/connectors/connector-rest/package.json index d2ba4222c5..670e08dda9 100644 --- a/packages/connectors/connector-rest/package.json +++ b/packages/connectors/connector-rest/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-rest", - "version": "9.11.0", + "version": "10.0.0", "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 a8f9d4ae4c..d99b4ebed8 100644 --- a/packages/connectors/connector-slack/CHANGELOG.md +++ b/packages/connectors/connector-slack/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/connector-slack +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/connectors/connector-slack/package.json b/packages/connectors/connector-slack/package.json index 26c628b7f9..c229aefafa 100644 --- a/packages/connectors/connector-slack/package.json +++ b/packages/connectors/connector-slack/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-slack", - "version": "9.11.0", + "version": "10.0.0", "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 f4cacd76df..b1e9c52898 100644 --- a/packages/console/CHANGELOG.md +++ b/packages/console/CHANGELOG.md @@ -1,5 +1,7 @@ # @objectstack/console +## 10.0.0 + ## 9.11.0 ## 9.10.0 diff --git a/packages/console/package.json b/packages/console/package.json index ad199b17d1..71f489c021 100644 --- a/packages/console/package.json +++ b/packages/console/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/console", - "version": "9.11.0", + "version": "10.0.0", "description": "Prebuilt Console SPA pinned to this @objectstack/framework release. Source of truth: @object-ui/console (https://github.com/objectstack-ai/objectui).", "license": "Apache-2.0", "homepage": "https://github.com/objectstack-ai/framework/tree/main/packages/console", diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 377d7ec405..e2d4d4d963 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,28 @@ # @objectstack/core +## 10.0.0 + +### Patch Changes + +- d5f6d29: fix(runtime): surface code-defined datasources at `GET /api/v1/datasources` and `GET /api/v1/meta/datasource` on the standalone / host-config boot path (ADR-0015 §18, follow-up to #2111). + + A datasource declared in `defineStack({ datasources: [...] })` (e.g. the showcase's `showcase_external`) is stamped `origin: 'code'` and registered by `AppPlugin` via `metadata.registerInMemory('datasource', …)` — gated on `typeof metadata.registerInMemory === 'function'`. On the standalone / host-config path (`os dev`/`serve` for a config whose `plugins` are already instantiated — `isHostConfig` true — so no `MetadataPlugin` loads) the `metadata` service is an in-memory fallback that implemented `register`/`list`/`get` but **not** `registerInMemory`. The guard was therefore false, AppPlugin silently skipped the registration, and the datasource was absent from both REST surfaces (and Setup → Integrations → Datasources) even though the boot banner counted it and its federated objects were queryable. + + Both in-memory `metadata` fallbacks (`@objectstack/core`'s `createMemoryMetadata` and `@objectstack/plugin-dev`'s dev stub) now implement `registerInMemory` (synchronous, no persistence — identical to `register` for these in-memory stores, matching `MetadataManager`'s signature). The read paths (`metadata.list`, datasource-admin `listDatasources`, and `protocol.getMetaItems` which merges `metadata.list`) were already correct; this restores the write-side registration they depend on. It also makes stack-declared security metadata (`roles`/`permissions`/`sharingRules`/`policies`, registered through the same guard) listable on this path. + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/core/package.json b/packages/core/package.json index 4c9ce69f15..1327ab0374 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/core", - "version": "9.11.0", + "version": "10.0.0", "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 7d706f5dfb..275c87acd6 100644 --- a/packages/create-objectstack/CHANGELOG.md +++ b/packages/create-objectstack/CHANGELOG.md @@ -1,5 +1,7 @@ # create-objectstack +## 10.0.0 + ## 9.11.0 ## 9.10.0 diff --git a/packages/create-objectstack/package.json b/packages/create-objectstack/package.json index 0a212708a8..74b36e2283 100644 --- a/packages/create-objectstack/package.json +++ b/packages/create-objectstack/package.json @@ -1,6 +1,6 @@ { "name": "create-objectstack", - "version": "9.11.0", + "version": "10.0.0", "description": "Create a new ObjectStack project — npx create-objectstack", "bin": { "create-objectstack": "./bin/create-objectstack.js" diff --git a/packages/dogfood/CHANGELOG.md b/packages/dogfood/CHANGELOG.md index 0b7551d1f7..f83de2cb1d 100644 --- a/packages/dogfood/CHANGELOG.md +++ b/packages/dogfood/CHANGELOG.md @@ -1,5 +1,30 @@ # @objectstack/dogfood +## 0.0.3 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [cfd86ce] +- Updated dependencies [e411a82] +- Updated dependencies [ee86099] +- Updated dependencies [a581385] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] +- Updated dependencies [0feea92] + - @objectstack/spec@10.0.0 + - @objectstack/objectql@10.0.0 + - @objectstack/plugin-security@10.0.0 + - @objectstack/verify@10.0.0 + - @objectstack/example-crm@4.0.55 + - @objectstack/example-showcase@0.2.1 + ## 0.0.2 ### Patch Changes diff --git a/packages/dogfood/package.json b/packages/dogfood/package.json index 6729bf8975..54478d7ba3 100644 --- a/packages/dogfood/package.json +++ b/packages/dogfood/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/dogfood", - "version": "0.0.2", + "version": "0.0.3", "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/downstream-contract/CHANGELOG.md b/packages/downstream-contract/CHANGELOG.md new file mode 100644 index 0000000000..e0eef73ce4 --- /dev/null +++ b/packages/downstream-contract/CHANGELOG.md @@ -0,0 +1,18 @@ +# @objectstack/downstream-contract + +## 0.0.1 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 diff --git a/packages/downstream-contract/package.json b/packages/downstream-contract/package.json index eeefcaa674..3d0111f766 100644 --- a/packages/downstream-contract/package.json +++ b/packages/downstream-contract/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/downstream-contract", - "version": "0.0.0", + "version": "0.0.1", "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/formula/CHANGELOG.md b/packages/formula/CHANGELOG.md index d1afcb87d6..99fd835508 100644 --- a/packages/formula/CHANGELOG.md +++ b/packages/formula/CHANGELOG.md @@ -1,5 +1,81 @@ # @objectstack/formula +## 10.0.0 + +### Minor Changes + +- cfd86ce: ADR-0058 — expression & predicate surface unification. Adds the canonical + CEL→FilterCondition pushdown compiler in `@objectstack/formula` + (`compileCelToFilter`, `isPushdownableCel`, `lowerCelAst`) plus an in-memory + `matchesFilterCondition` backend (one AST, three backends). `plugin-security` + (RLS `using`, via a SQL bridge) and `plugin-sharing` (`celToFilter`) cut over to + it, retiring the bespoke regex/field-equality front-ends. Compound sharing + conditions now compile and enforce end-to-end (closes #1887). The RLS `check` + clause is now enforced on the write post-image (insert/by-id update), fail-closed. + Non-pushdownable predicates (arithmetic, functions, subqueries, cross-object) are + an authoring compile error, never silently dropped (ADR-0049/0055). + +### Patch Changes + +- 48a307a: build: validate UI action `visible` / `disabled` predicates at compile time + + Extends the ADR-0032 build-time expression check to cover action `visible` and + `disabled` predicates (stack-level and object-attached), evaluated record-scoped + like validation rules. A record-header / row action's `visible` is evaluated by + `ActionEngine` against `{ record, recordId, objectName, user, … }` with + fail-closed semantics, so a **bare** field reference (`!done` instead of + `!record.done`) throws at runtime and the action is **silently hidden on every + record** — the trap behind the #2183 "Mark Done never hides" debugging hunt. + `os build` now reports it as an error with the corrective `record.` + message instead of letting it ship. + + `@objectstack/formula`: `ctx` and `features` are added to the record-scope + namespace roots (alongside the existing `user`, `data`, `context`, …) so the + ambient globals real action predicates use (`record.id == ctx.user.id`, + `features.multiOrgEnabled`) are not false-positives. Verified against the full + monorepo build (every example + platform bundle still compiles clean). + +- 25fc0e4: build: extend ADR-0032 predicate validation to all flat record-scoped sites + + Builds on the action-predicate guard. `os build` now also validates these + record-scoped predicates for bare field references (`status` instead of + `record.status`), which otherwise evaluate to nothing at runtime and silently + mis-behave: + + - **field conditional rules** — `requiredWhen`, `readonlyWhen`, + `conditionalRequired`, `visibleWhen` (server-enforced; a broken one is + fail-open — the required/readonly rule just never fires); + - **sharing-rule `condition`** (security-critical — decides which rows a + principal sees); + - **lifecycle hook `condition`** (skips the handler when false); + - **nested `when`** on `conditional` validation rules (previously only the + top-level rule predicate was checked). + + `@objectstack/formula`: adds `parent` to the record-scope namespace roots — + master-detail inline grids inject the header record as `parent` for a child + field's `readonlyWhen`/`requiredWhen` (ADR-0036, #1581), so `parent.status` is + legitimate, not a bare ref. Verified against the full monorepo build (76 tasks + clean). + + Not yet covered (separate follow-up — needs a recursive view/page tree walker + and per-node scope classification): deeply-nested UI visibility predicates + (`view` element/section `visibleOn`/`condition`, `page` component `visibility`), + object field-group `visibleOn`, and app-nav `visible` (user/feature-scoped, not + record-scoped). + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/formula/package.json b/packages/formula/package.json index eed28407af..44346285ec 100644 --- a/packages/formula/package.json +++ b/packages/formula/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/formula", - "version": "9.11.0", + "version": "10.0.0", "license": "Apache-2.0", "description": "ObjectStack canonical expression engine — CEL (cel-js) + ObjectStack stdlib + dialect registry", "main": "dist/index.js", diff --git a/packages/mcp/CHANGELOG.md b/packages/mcp/CHANGELOG.md index 80c4d1d954..b603c1638f 100644 --- a/packages/mcp/CHANGELOG.md +++ b/packages/mcp/CHANGELOG.md @@ -1,5 +1,25 @@ # @objectstack/plugin-mcp-server +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + - @objectstack/types@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/mcp/package.json b/packages/mcp/package.json index ad1eb09d21..c4b0a23a5c 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/mcp", - "version": "9.11.0", + "version": "10.0.0", "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 3e1a9f8323..8ae2ee0411 100644 --- a/packages/metadata-core/CHANGELOG.md +++ b/packages/metadata-core/CHANGELOG.md @@ -1,5 +1,22 @@ # @objectstack/metadata-core +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/metadata-core/package.json b/packages/metadata-core/package.json index e20cac8773..eb612972cc 100644 --- a/packages/metadata-core/package.json +++ b/packages/metadata-core/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata-core", - "version": "9.11.0", + "version": "10.0.0", "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 e8fd51cbbd..d9d6c58e94 100644 --- a/packages/metadata-fs/CHANGELOG.md +++ b/packages/metadata-fs/CHANGELOG.md @@ -1,5 +1,11 @@ # @objectstack/metadata-fs +## 10.0.0 + +### Patch Changes + +- @objectstack/metadata-core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/metadata-fs/package.json b/packages/metadata-fs/package.json index 8f5bcf95e8..410bb4caec 100644 --- a/packages/metadata-fs/package.json +++ b/packages/metadata-fs/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata-fs", - "version": "9.11.0", + "version": "10.0.0", "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/CHANGELOG.md b/packages/metadata/CHANGELOG.md index b8f406cdd6..8f91f07844 100644 --- a/packages/metadata/CHANGELOG.md +++ b/packages/metadata/CHANGELOG.md @@ -1,5 +1,36 @@ # @objectstack/metadata +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [2256e93] +- Updated dependencies [7108ff3] +- Updated dependencies [30c0313] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [ae271d0] +- Updated dependencies [61ed5c7] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [0df063e] +- Updated dependencies [ce13bb8] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] +- Updated dependencies [47d978a] + - @objectstack/spec@10.0.0 + - @objectstack/platform-objects@10.0.0 + - @objectstack/core@10.0.0 + - @objectstack/metadata-core@10.0.0 + - @objectstack/types@10.0.0 + - @objectstack/metadata-fs@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/metadata/package.json b/packages/metadata/package.json index 1a33f9226b..cb237e817e 100644 --- a/packages/metadata/package.json +++ b/packages/metadata/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata", - "version": "9.11.0", + "version": "10.0.0", "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 7fa0428541..6cd8b79887 100644 --- a/packages/objectql/CHANGELOG.md +++ b/packages/objectql/CHANGELOG.md @@ -1,5 +1,68 @@ # @objectstack/objectql +## 10.0.0 + +### Minor Changes + +- e16f2a8: **BREAKING:** the system object `sys_department` is renamed to `sys_business_unit` + — object + member table (`sys_department_member` → `sys_business_unit_member`), + fields, and i18n — with **no compatibility alias**. Any deployment holding + `sys_department` rows, or metadata that references the object by name (lookups, + list views, queries, sharing/approval scopes), must migrate to `sys_business_unit`. + A renamed shipped system object is a breaking change to the platform's public + data surface, so this lands as a **major**. Verified per ADR-0059's pre-publish + hotcrm gate: no published downstream consumer references the old name. + + ADR-0057 — ERP authorization core. Adds permission-grant access DEPTH + (`own`/`own_and_reports`/`unit`/`unit_and_below`/`org`), renames `sys_department` + → `sys_business_unit` (no aliases — see BREAKING above), introduces the platform-owned + `sys_user_role` assignment, and seeds stack-declared `roles`/`sharingRules` into + `sys_role`/`sys_sharing_rule` at boot (closes #2077). Hierarchy-relative scopes are + delegated to a pluggable `IHierarchyScopeResolver` (open edition fails closed to + owner-only; `defineStack` errors without `requires: ['hierarchy-security']`). Also + fixes a latent over-grant where `engine.find({ filter })` was ignored (driver reads + `where`) — normalized `filter`→`where` in the engine. + +### Patch Changes + +- 2a1b16b: fix(ADR-0015): honor `external.remoteName` / `external.remoteSchema` on the federation read path. + + The query path previously resolved an external object's physical table from the + object name, ignoring its `external` binding — so a federated object bound to a + differently-named remote table failed with `no such table`, and ADR-0015's own + `wh_order` → `mart.fact_orders` example was unqueryable. The SQL driver now + resolves the remote table (`remoteName`, plus `remoteSchema` via `.withSchema()` + on pg/mysql) and registers external objects' read-coercion metadata without DDL + (`SqlDriver.registerExternalObject`, routed from the engine/plugin schema-sync). + The managed path is unchanged. See ADR-0015 §18. + +- 3efe334: Honor a nested `where` filter inside `expand` on lookup/master_detail expansion. + + The expand post-processor batch-loads related records with an `id $in [...]` query but never merged the nested QueryAST `where`, so a documented `expand: { rel: { where: {...} } }` filter was silently ignored and every related record came back. The nested filter is now AND-merged into the batch query via an explicit `$and` group (`{ $and: [{ id: { $in } }, nestedAST.where] }`) — robust against a nested filter that itself keys `id` or uses a top-level `$or`/`$and`, where a shallow spread would clobber or reorder the constraint. + + `limit`/`offset`/`orderBy` remain intentionally not honored on the expand path: it batch-loads every parent's related records in one `$in` query and re-keys them per parent by foreign key, so a per-parent page size or ordering can't be expressed there. Docs and the schema `describe()` are updated to match, with a guard test asserting `limit`/`offset` are not pushed into the expand query. + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [cfd86ce] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] +- Updated dependencies [48a307a] +- Updated dependencies [25fc0e4] + - @objectstack/spec@10.0.0 + - @objectstack/formula@10.0.0 + - @objectstack/core@10.0.0 + - @objectstack/metadata-core@10.0.0 + - @objectstack/types@10.0.0 + ## 9.11.0 ### Minor Changes diff --git a/packages/objectql/package.json b/packages/objectql/package.json index 27ca8438b2..7f6fef4b2a 100644 --- a/packages/objectql/package.json +++ b/packages/objectql/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/objectql", - "version": "9.11.0", + "version": "10.0.0", "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 11c3a22f4a..56335d402a 100644 --- a/packages/observability/CHANGELOG.md +++ b/packages/observability/CHANGELOG.md @@ -1,5 +1,22 @@ # @objectstack/observability +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/observability/package.json b/packages/observability/package.json index c2e84071f6..f010a0dc7d 100644 --- a/packages/observability/package.json +++ b/packages/observability/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/observability", - "version": "9.11.0", + "version": "10.0.0", "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 2709eb1ac8..48f2db6b72 100644 --- a/packages/platform-objects/CHANGELOG.md +++ b/packages/platform-objects/CHANGELOG.md @@ -1,5 +1,125 @@ # @objectstack/platform-objects +## 10.0.0 + +### Major Changes + +- e16f2a8: **BREAKING:** the system object `sys_department` is renamed to `sys_business_unit` + — object + member table (`sys_department_member` → `sys_business_unit_member`), + fields, and i18n — with **no compatibility alias**. Any deployment holding + `sys_department` rows, or metadata that references the object by name (lookups, + list views, queries, sharing/approval scopes), must migrate to `sys_business_unit`. + A renamed shipped system object is a breaking change to the platform's public + data surface, so this lands as a **major**. Verified per ADR-0059's pre-publish + hotcrm gate: no published downstream consumer references the old name. + + ADR-0057 — ERP authorization core. Adds permission-grant access DEPTH + (`own`/`own_and_reports`/`unit`/`unit_and_below`/`org`), renames `sys_department` + → `sys_business_unit` (no aliases — see BREAKING above), introduces the platform-owned + `sys_user_role` assignment, and seeds stack-declared `roles`/`sharingRules` into + `sys_role`/`sys_sharing_rule` at boot (closes #2077). Hierarchy-relative scopes are + delegated to a pluggable `IHierarchyScopeResolver` (open edition fails closed to + owner-only; `defineStack` errors without `requires: ['hierarchy-security']`). Also + fixes a latent over-grant where `engine.find({ filter })` was ignored (driver reads + `where`) — normalized `filter`→`where` in the engine. + +### Minor Changes + +- 2256e93: Setup nav: gate Organizations/Invitations on multi-org; enforce `requiresService` server-side (ADR-0057 addendum D10). + + `rest-server`'s `filterAppForUser` now honours `NavigationItem.requiresService` — entries + whose named kernel service isn't registered are dropped from the served app metadata + (fail-open when the kernel can't be probed; previously the field was a frontend-only hint). + Applies `requiresService: 'org-scoping'` to the Setup app's Organizations and Invitations + entries, so they surface only in multi-org (multi-tenant) deployments and disappear in + single-tenant. Business Units is intentionally left ungated — it is open per the open/paid + seam + D12 ("pick people by BU"); only the hierarchy rollup capability is enterprise. + +- 7108ff3: Drop the unused `team` value from `sys_business_unit.kind` (ADR-0057 addendum D11). + + The `team` kind collided head-on with the first-class `sys_team` object: a + `kind='team'` business unit walks the hierarchical `BusinessUnitGraphService`, + while `sys_team` is the flat better-auth collaboration grouping served by + `TeamGraphService`. `kind` is a display-only categorisation hint (it does not + change graph semantics) and had **zero** usages anywhere in the repo, so this is a + safe narrowing with no data migration. New enum: + `company | division | department | office | cost_center`. + +- 30c0313: Add `sys_user.primary_business_unit_id` projection (ADR-0057 addendum D12). + + Adds a denormalised `primary_business_unit_id` lookup to `sys_user`, maintained + by plugin-sharing as a projection of `sys_business_unit_member.is_primary` + (insert/update/delete hooks + a boot-time backfill). This makes "pick people by + business unit" — the Dataverse _filtered lookup_ / ServiceNow _reference + qualifier_ interaction — expressible as a plain `where: { primary_business_unit_id: X }` + (and thus as a `lookupFilters` picker filter) with **zero** query-engine change, + without traversing the membership junction. `sys_business_unit_member` remains + the effective-dated, matrix-friendly source of truth; the new column is a + maintained projection, not a second source. Home is plugin-sharing (always + loaded, owns the BU graph) rather than plugin-org-scoping, so the projection + works in single-tenant deployments too. Picker filtering by BU is therefore an + **open** (non-enterprise) capability — only hierarchy _rollup_ stays paid. + +- ae271d0: feat(identity): add an Org Chart tree view to `sys_business_unit` + + `sys_business_unit` is already a self-referencing hierarchy + (`parent_business_unit_id`, ADR-0057 D2) but Setup only exposed flat grids. Adds + an `org_chart` list view (`type: 'tree'`) that renders the hierarchy as an + indented, expand/collapse tree-grid, listed first so it's the default tab. No + schema change — the parent pointer and graph traversal already existed; this only + surfaces them. The `active` / `inactive` / `by_kind` / `all` grids stay for + search, filter, and bulk edit. + +- 47d978a: Add `manager_id` (self-lookup) to `sys_user` — the reporting chain that the ADR-0057 `own_and_reports` hierarchy scope walks. + + The `own_and_reports` scope was implemented in the resolver but **unbacked**: nothing on `sys_user` modelled a manager, so it always degraded to owner-only. This adds the field (+ en/zh/ja/es labels) and extends the scope-depth dogfood to prove the scope end-to-end — a user now sees their own records plus everyone down their `manager_id` chain. + +### Patch Changes + +- 61ed5c7: Complete the ADR-0057 `sys_department` → `sys_business_unit` rename in the Setup app and across the object's i18n (en / zh / ja / es). + + - Setup nav entry "Departments" → "Business Units" (`nav_departments` → `nav_business_units`). + - `sys_business_unit` / `sys_business_unit_member` field **labels and descriptions** in the object definitions now read "business unit" instead of "department" (the generated `en` labels had been hand-updated ahead of the def; the def was the stale source). + - All four locales' generated object translations aligned to 业务单元 / ビジネスユニット / Unidad de negocio. + + Intentionally preserved: the `kind` enum value `department` (a business unit can be _of kind_ department) and the multi-concept node descriptions that list kinds. + +- 0df063e: Fix: `sys_business_unit` / `sys_team` could not be created in single-tenant deployments. + + `organization_id` was `required`, but single-tenant has no `sys_organization` row and + nothing auto-stamps one (OrgScopingPlugin is multi-tenant-only), so every create failed + with `VALIDATION_FAILED: organization_id (required)`. Make `organization_id` optional on + both objects: single-tenant leaves it null; multi-tenant still auto-stamps it via + OrgScopingPlugin and tenant-isolation RLS hides any null-org row (fail-closed), so there is + no cross-tenant exposure. (sys_member / sys_invitation carry the same `required` flag but are + created only through better-auth org flows, which always supply an org — left unchanged.) + +- ce13bb8: Single-tenant audit follow-ups (ADR-0057): + + - **`sys_member` / `sys_invitation`**: make `organization_id` optional (same class as the + sys_business_unit/sys_team fix #2178). Single-tenant has no org row and no auto-stamp; + multi-tenant still auto-stamps via OrgScopingPlugin with null-org rows hidden by + tenant-isolation RLS (fail-closed). Completes the org-scoped identity graph's + single-tenant consistency. + - **`BusinessUnitGraphService.headOf()`**: add the missing `orgScope()` org filter (it + queries under SYSTEM_CTX, bypassing RLS, so the scope is the only isolation). Previously + `headOf(buId)` read a business unit's `manager_user_id` by id alone — a cross-organization + leak in multi-tenant. Now consistent with `descendants()`. +regression test. + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/metadata-core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/platform-objects/package.json b/packages/platform-objects/package.json index dfc7aab8ee..38eb5cc6d9 100644 --- a/packages/platform-objects/package.json +++ b/packages/platform-objects/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/platform-objects", - "version": "9.11.0", + "version": "10.0.0", "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/driver-memory/CHANGELOG.md b/packages/plugins/driver-memory/CHANGELOG.md index 683d9be7bc..f4e1de60d5 100644 --- a/packages/plugins/driver-memory/CHANGELOG.md +++ b/packages/plugins/driver-memory/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/driver-memory +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/plugins/driver-memory/package.json b/packages/plugins/driver-memory/package.json index 0c0fd8636f..5ce68fc505 100644 --- a/packages/plugins/driver-memory/package.json +++ b/packages/plugins/driver-memory/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-memory", - "version": "9.11.0", + "version": "10.0.0", "license": "Apache-2.0", "description": "In-Memory Driver for ObjectStack (Reference Implementation)", "main": "dist/index.js", diff --git a/packages/plugins/driver-mongodb/CHANGELOG.md b/packages/plugins/driver-mongodb/CHANGELOG.md index c7927a4e34..915bb7bc12 100644 --- a/packages/plugins/driver-mongodb/CHANGELOG.md +++ b/packages/plugins/driver-mongodb/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/driver-mongodb +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/plugins/driver-mongodb/package.json b/packages/plugins/driver-mongodb/package.json index a936ada618..a22c0a8d0a 100644 --- a/packages/plugins/driver-mongodb/package.json +++ b/packages/plugins/driver-mongodb/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-mongodb", - "version": "9.11.0", + "version": "10.0.0", "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/plugins/driver-sql/CHANGELOG.md b/packages/plugins/driver-sql/CHANGELOG.md index 3b8b986a96..a6f8376e9e 100644 --- a/packages/plugins/driver-sql/CHANGELOG.md +++ b/packages/plugins/driver-sql/CHANGELOG.md @@ -1,5 +1,44 @@ # @objectstack/driver-sql +## 10.0.0 + +### Patch Changes + +- 92db3e5: feat(driver-sql): honor `external.columnMap` on federated (external) objects (ADR-0015). + + When a federated object declares `external.columnMap` ({ remoteColumn -> localField }), + the SQL driver now translates queries to the physical remote columns: WHERE and + ORDER BY map local fields to remote columns (value coercion stays keyed by the local + field), `formatOutput` renames remote-column keys back to local field names on read, + and write payloads are key-remapped. Managed objects and external objects without a + columnMap are unchanged (the resolver falls back to the existing per-site behavior). + +- 2a1b16b: fix(ADR-0015): honor `external.remoteName` / `external.remoteSchema` on the federation read path. + + The query path previously resolved an external object's physical table from the + object name, ignoring its `external` binding — so a federated object bound to a + differently-named remote table failed with `no such table`, and ADR-0015's own + `wh_order` → `mart.fact_orders` example was unqueryable. The SQL driver now + resolves the remote table (`remoteName`, plus `remoteSchema` via `.withSchema()` + on pg/mysql) and registers external objects' read-coercion metadata without DDL + (`SqlDriver.registerExternalObject`, routed from the engine/plugin schema-sync). + The managed path is unchanged. See ADR-0015 §18. + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Minor Changes diff --git a/packages/plugins/driver-sql/package.json b/packages/plugins/driver-sql/package.json index b0c3a0f052..7366a66f5a 100644 --- a/packages/plugins/driver-sql/package.json +++ b/packages/plugins/driver-sql/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-sql", - "version": "9.11.0", + "version": "10.0.0", "license": "Apache-2.0", "description": "SQL Driver for ObjectStack - Supports PostgreSQL, MySQL, SQLite via Knex", "main": "dist/index.js", diff --git a/packages/plugins/driver-sqlite-wasm/CHANGELOG.md b/packages/plugins/driver-sqlite-wasm/CHANGELOG.md index c0da7a2b26..9ec1bd30c8 100644 --- a/packages/plugins/driver-sqlite-wasm/CHANGELOG.md +++ b/packages/plugins/driver-sqlite-wasm/CHANGELOG.md @@ -1,5 +1,26 @@ # @objectstack/driver-sqlite-wasm +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [92db3e5] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/driver-sql@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/plugins/driver-sqlite-wasm/package.json b/packages/plugins/driver-sqlite-wasm/package.json index 267416df6d..37a643c649 100644 --- a/packages/plugins/driver-sqlite-wasm/package.json +++ b/packages/plugins/driver-sqlite-wasm/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-sqlite-wasm", - "version": "9.11.0", + "version": "10.0.0", "license": "Apache-2.0", "description": "WASM SQLite Driver for ObjectStack — runs in browser/WebContainer (StackBlitz) without native bindings", "keywords": [ diff --git a/packages/plugins/embedder-openai/CHANGELOG.md b/packages/plugins/embedder-openai/CHANGELOG.md index 4f1dc10fb6..06fd5eaca0 100644 --- a/packages/plugins/embedder-openai/CHANGELOG.md +++ b/packages/plugins/embedder-openai/CHANGELOG.md @@ -1,5 +1,22 @@ # @objectstack/embedder-openai +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/plugins/embedder-openai/package.json b/packages/plugins/embedder-openai/package.json index acd2ca17d4..81e80ad20e 100644 --- a/packages/plugins/embedder-openai/package.json +++ b/packages/plugins/embedder-openai/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/embedder-openai", - "version": "9.11.0", + "version": "10.0.0", "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 f2831907db..911a6926e5 100644 --- a/packages/plugins/knowledge-memory/CHANGELOG.md +++ b/packages/plugins/knowledge-memory/CHANGELOG.md @@ -1,5 +1,25 @@ # @objectstack/knowledge-memory +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + - @objectstack/service-knowledge@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/plugins/knowledge-memory/package.json b/packages/plugins/knowledge-memory/package.json index 27f6639aeb..417740b483 100644 --- a/packages/plugins/knowledge-memory/package.json +++ b/packages/plugins/knowledge-memory/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/knowledge-memory", - "version": "9.11.0", + "version": "10.0.0", "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 abeef91414..0b113953a4 100644 --- a/packages/plugins/knowledge-ragflow/CHANGELOG.md +++ b/packages/plugins/knowledge-ragflow/CHANGELOG.md @@ -1,5 +1,25 @@ # @objectstack/knowledge-ragflow +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + - @objectstack/service-knowledge@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/plugins/knowledge-ragflow/package.json b/packages/plugins/knowledge-ragflow/package.json index 69b0853a79..44d44e5c13 100644 --- a/packages/plugins/knowledge-ragflow/package.json +++ b/packages/plugins/knowledge-ragflow/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/knowledge-ragflow", - "version": "9.11.0", + "version": "10.0.0", "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/plugin-approvals/CHANGELOG.md b/packages/plugins/plugin-approvals/CHANGELOG.md index 71068a9a16..709d2a3a2b 100644 --- a/packages/plugins/plugin-approvals/CHANGELOG.md +++ b/packages/plugins/plugin-approvals/CHANGELOG.md @@ -1,5 +1,57 @@ # @objectstack/plugin-approvals +## 10.0.0 + +### Patch Changes + +- e16f2a8: **BREAKING:** the system object `sys_department` is renamed to `sys_business_unit` + — object + member table (`sys_department_member` → `sys_business_unit_member`), + fields, and i18n — with **no compatibility alias**. Any deployment holding + `sys_department` rows, or metadata that references the object by name (lookups, + list views, queries, sharing/approval scopes), must migrate to `sys_business_unit`. + A renamed shipped system object is a breaking change to the platform's public + data surface, so this lands as a **major**. Verified per ADR-0059's pre-publish + hotcrm gate: no published downstream consumer references the old name. + + ADR-0057 — ERP authorization core. Adds permission-grant access DEPTH + (`own`/`own_and_reports`/`unit`/`unit_and_below`/`org`), renames `sys_department` + → `sys_business_unit` (no aliases — see BREAKING above), introduces the platform-owned + `sys_user_role` assignment, and seeds stack-declared `roles`/`sharingRules` into + `sys_role`/`sys_sharing_rule` at boot (closes #2077). Hierarchy-relative scopes are + delegated to a pluggable `IHierarchyScopeResolver` (open edition fails closed to + owner-only; `defineStack` errors without `requires: ['hierarchy-security']`). Also + fixes a latent over-grant where `engine.find({ filter })` was ignored (driver reads + `where`) — normalized `filter`→`where` in the engine. + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [2256e93] +- Updated dependencies [7108ff3] +- Updated dependencies [30c0313] +- Updated dependencies [e16f2a8] +- Updated dependencies [cfd86ce] +- Updated dependencies [e411a82] +- Updated dependencies [ae271d0] +- Updated dependencies [61ed5c7] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [0df063e] +- Updated dependencies [ce13bb8] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] +- Updated dependencies [47d978a] +- Updated dependencies [48a307a] +- Updated dependencies [25fc0e4] + - @objectstack/spec@10.0.0 + - @objectstack/platform-objects@10.0.0 + - @objectstack/formula@10.0.0 + - @objectstack/core@10.0.0 + - @objectstack/metadata-core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/plugins/plugin-approvals/package.json b/packages/plugins/plugin-approvals/package.json index 759dd85a33..33c0fbeb5c 100644 --- a/packages/plugins/plugin-approvals/package.json +++ b/packages/plugins/plugin-approvals/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-approvals", - "version": "9.11.0", + "version": "10.0.0", "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 161ceaed0f..0e3d60394f 100644 --- a/packages/plugins/plugin-audit/CHANGELOG.md +++ b/packages/plugins/plugin-audit/CHANGELOG.md @@ -1,5 +1,33 @@ # @objectstack/plugin-audit +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [2256e93] +- Updated dependencies [7108ff3] +- Updated dependencies [30c0313] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [ae271d0] +- Updated dependencies [61ed5c7] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [0df063e] +- Updated dependencies [ce13bb8] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] +- Updated dependencies [47d978a] + - @objectstack/spec@10.0.0 + - @objectstack/platform-objects@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/plugins/plugin-audit/package.json b/packages/plugins/plugin-audit/package.json index 032d942372..de9693f2ae 100644 --- a/packages/plugins/plugin-audit/package.json +++ b/packages/plugins/plugin-audit/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-audit", - "version": "9.11.0", + "version": "10.0.0", "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 a8a90abf44..8c2ddc40e4 100644 --- a/packages/plugins/plugin-auth/CHANGELOG.md +++ b/packages/plugins/plugin-auth/CHANGELOG.md @@ -1,5 +1,34 @@ # Changelog +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [2256e93] +- Updated dependencies [7108ff3] +- Updated dependencies [30c0313] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [ae271d0] +- Updated dependencies [61ed5c7] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [0df063e] +- Updated dependencies [ce13bb8] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] +- Updated dependencies [47d978a] + - @objectstack/spec@10.0.0 + - @objectstack/platform-objects@10.0.0 + - @objectstack/core@10.0.0 + - @objectstack/types@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/plugins/plugin-auth/package.json b/packages/plugins/plugin-auth/package.json index d238cfeab3..f0ed3de3da 100644 --- a/packages/plugins/plugin-auth/package.json +++ b/packages/plugins/plugin-auth/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-auth", - "version": "9.11.0", + "version": "10.0.0", "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 3756de1715..eafd51ccbc 100644 --- a/packages/plugins/plugin-dev/CHANGELOG.md +++ b/packages/plugins/plugin-dev/CHANGELOG.md @@ -1,5 +1,42 @@ # @objectstack/plugin-dev +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [2256e93] +- Updated dependencies [e16f2a8] +- Updated dependencies [cfd86ce] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [47d978a] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [3754f80] +- Updated dependencies [feead7e] +- Updated dependencies [00c32f2] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/objectql@10.0.0 + - @objectstack/rest@10.0.0 + - @objectstack/plugin-security@10.0.0 + - @objectstack/runtime@10.0.0 + - @objectstack/core@10.0.0 + - @objectstack/plugin-hono-server@10.0.0 + - @objectstack/account@10.0.0 + - @objectstack/setup@10.0.0 + - @objectstack/studio@10.0.0 + - @objectstack/driver-memory@10.0.0 + - @objectstack/plugin-auth@10.0.0 + - @objectstack/plugin-org-scoping@10.0.0 + - @objectstack/service-i18n@10.0.0 + - @objectstack/types@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/plugins/plugin-dev/package.json b/packages/plugins/plugin-dev/package.json index 1681b7f932..150d9bf8df 100644 --- a/packages/plugins/plugin-dev/package.json +++ b/packages/plugins/plugin-dev/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-dev", - "version": "9.11.0", + "version": "10.0.0", "license": "Apache-2.0", "description": "Development Mode Plugin for ObjectStack — auto-enables all services with in-memory implementations", "main": "dist/index.js", diff --git a/packages/plugins/plugin-email/CHANGELOG.md b/packages/plugins/plugin-email/CHANGELOG.md index df4cae2870..9414330108 100644 --- a/packages/plugins/plugin-email/CHANGELOG.md +++ b/packages/plugins/plugin-email/CHANGELOG.md @@ -1,5 +1,37 @@ # @objectstack/plugin-email +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [2256e93] +- Updated dependencies [7108ff3] +- Updated dependencies [30c0313] +- Updated dependencies [e16f2a8] +- Updated dependencies [cfd86ce] +- Updated dependencies [e411a82] +- Updated dependencies [ae271d0] +- Updated dependencies [61ed5c7] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [0df063e] +- Updated dependencies [ce13bb8] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] +- Updated dependencies [47d978a] +- Updated dependencies [48a307a] +- Updated dependencies [25fc0e4] + - @objectstack/spec@10.0.0 + - @objectstack/platform-objects@10.0.0 + - @objectstack/formula@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/plugins/plugin-email/package.json b/packages/plugins/plugin-email/package.json index 3ebc038b7a..18bf5e27a9 100644 --- a/packages/plugins/plugin-email/package.json +++ b/packages/plugins/plugin-email/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-email", - "version": "9.11.0", + "version": "10.0.0", "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 332b549e07..3c020907e4 100644 --- a/packages/plugins/plugin-hono-server/CHANGELOG.md +++ b/packages/plugins/plugin-hono-server/CHANGELOG.md @@ -1,5 +1,36 @@ # @objectstack/plugin-hono-server +## 10.0.0 + +### Minor Changes + +- 00c32f2: Expose resolved regional defaults to every authenticated user. + + Adds `GET /api/v1/auth/me/localization` returning the request tenant's resolved + `{ currency, locale, timezone }` from the ExecutionContext (ADR-0053). The + `localization` SETTINGS are gated to `setup.access`, but the resolved defaults + are needed by every renderer to format currency/dates/numbers — so they are + surfaced here without that gate. Enables a client to format a currency field + in the tenant's default currency when the field omits its own. + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + - @objectstack/types@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/plugins/plugin-hono-server/package.json b/packages/plugins/plugin-hono-server/package.json index 702bd6b36e..e5d0b598cc 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": "9.11.0", + "version": "10.0.0", "license": "Apache-2.0", "description": "Standard Hono Server Adapter for ObjectStack Runtime", "main": "dist/index.js", diff --git a/packages/plugins/plugin-msw/CHANGELOG.md b/packages/plugins/plugin-msw/CHANGELOG.md index a47de04505..2390380c59 100644 --- a/packages/plugins/plugin-msw/CHANGELOG.md +++ b/packages/plugins/plugin-msw/CHANGELOG.md @@ -1,5 +1,28 @@ # @objectstack/plugin-msw +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [47d978a] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/objectql@10.0.0 + - @objectstack/runtime@10.0.0 + - @objectstack/core@10.0.0 + - @objectstack/types@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/plugins/plugin-msw/package.json b/packages/plugins/plugin-msw/package.json index 46953032e1..076fd3a4ab 100644 --- a/packages/plugins/plugin-msw/package.json +++ b/packages/plugins/plugin-msw/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-msw", - "version": "9.11.0", + "version": "10.0.0", "description": "MSW (Mock Service Worker) Plugin for ObjectStack Runtime", "license": "Apache-2.0", "main": "dist/index.js", diff --git a/packages/plugins/plugin-org-scoping/CHANGELOG.md b/packages/plugins/plugin-org-scoping/CHANGELOG.md index acfc6229c8..fc2d24c29f 100644 --- a/packages/plugins/plugin-org-scoping/CHANGELOG.md +++ b/packages/plugins/plugin-org-scoping/CHANGELOG.md @@ -1,5 +1,33 @@ # @objectstack/plugin-org-scoping +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [2256e93] +- Updated dependencies [7108ff3] +- Updated dependencies [30c0313] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [ae271d0] +- Updated dependencies [61ed5c7] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [0df063e] +- Updated dependencies [ce13bb8] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] +- Updated dependencies [47d978a] + - @objectstack/spec@10.0.0 + - @objectstack/platform-objects@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/plugins/plugin-org-scoping/package.json b/packages/plugins/plugin-org-scoping/package.json index a5c3c751f8..2e1943e5a2 100644 --- a/packages/plugins/plugin-org-scoping/package.json +++ b/packages/plugins/plugin-org-scoping/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-org-scoping", - "version": "9.11.0", + "version": "10.0.0", "license": "Apache-2.0", "description": "Organization-Scoping Plugin for ObjectStack — row-level Organization isolation, per-org seed replay, default-org bootstrap", "main": "dist/index.js", diff --git a/packages/plugins/plugin-reports/CHANGELOG.md b/packages/plugins/plugin-reports/CHANGELOG.md index 612f7627c9..b340504d93 100644 --- a/packages/plugins/plugin-reports/CHANGELOG.md +++ b/packages/plugins/plugin-reports/CHANGELOG.md @@ -1,5 +1,33 @@ # @objectstack/plugin-reports +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [2256e93] +- Updated dependencies [7108ff3] +- Updated dependencies [30c0313] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [ae271d0] +- Updated dependencies [61ed5c7] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [0df063e] +- Updated dependencies [ce13bb8] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] +- Updated dependencies [47d978a] + - @objectstack/spec@10.0.0 + - @objectstack/platform-objects@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/plugins/plugin-reports/package.json b/packages/plugins/plugin-reports/package.json index b6a7420062..6dea53904a 100644 --- a/packages/plugins/plugin-reports/package.json +++ b/packages/plugins/plugin-reports/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-reports", - "version": "9.11.0", + "version": "10.0.0", "license": "Apache-2.0", "description": "Saved reports + scheduled email digests for ObjectStack — sys_saved_report + sys_report_schedule + IReportService.", "main": "dist/index.js", diff --git a/packages/plugins/plugin-security/CHANGELOG.md b/packages/plugins/plugin-security/CHANGELOG.md index 04013b01ca..ad5c7a165b 100644 --- a/packages/plugins/plugin-security/CHANGELOG.md +++ b/packages/plugins/plugin-security/CHANGELOG.md @@ -1,5 +1,78 @@ # @objectstack/plugin-security +## 10.0.0 + +### Minor Changes + +- e16f2a8: **BREAKING:** the system object `sys_department` is renamed to `sys_business_unit` + — object + member table (`sys_department_member` → `sys_business_unit_member`), + fields, and i18n — with **no compatibility alias**. Any deployment holding + `sys_department` rows, or metadata that references the object by name (lookups, + list views, queries, sharing/approval scopes), must migrate to `sys_business_unit`. + A renamed shipped system object is a breaking change to the platform's public + data surface, so this lands as a **major**. Verified per ADR-0059's pre-publish + hotcrm gate: no published downstream consumer references the old name. + + ADR-0057 — ERP authorization core. Adds permission-grant access DEPTH + (`own`/`own_and_reports`/`unit`/`unit_and_below`/`org`), renames `sys_department` + → `sys_business_unit` (no aliases — see BREAKING above), introduces the platform-owned + `sys_user_role` assignment, and seeds stack-declared `roles`/`sharingRules` into + `sys_role`/`sys_sharing_rule` at boot (closes #2077). Hierarchy-relative scopes are + delegated to a pluggable `IHierarchyScopeResolver` (open edition fails closed to + owner-only; `defineStack` errors without `requires: ['hierarchy-security']`). Also + fixes a latent over-grant where `engine.find({ filter })` was ignored (driver reads + `where`) — normalized `filter`→`where` in the engine. + +- cfd86ce: ADR-0058 — expression & predicate surface unification. Adds the canonical + CEL→FilterCondition pushdown compiler in `@objectstack/formula` + (`compileCelToFilter`, `isPushdownableCel`, `lowerCelAst`) plus an in-memory + `matchesFilterCondition` backend (one AST, three backends). `plugin-security` + (RLS `using`, via a SQL bridge) and `plugin-sharing` (`celToFilter`) cut over to + it, retiring the bespoke regex/field-equality front-ends. Compound sharing + conditions now compile and enforce end-to-end (closes #1887). The RLS `check` + clause is now enforced on the write post-image (insert/by-id update), fail-closed. + Non-pushdownable predicates (arithmetic, functions, subqueries, cross-object) are + an authoring compile error, never silently dropped (ADR-0049/0055). +- 6ca20b3: ADR-0058 D1 follow-through — RLS predicates are now canonical CEL. Migrated every + seeded RLS `using`/`check` (default permission sets, showcase, and the + `RLS.ownerPolicy`/`tenantPolicy`/`allowAllPolicy` helper factories) from the + legacy SQL-ish form (`=`, `IN (...)`) to pure CEL (`==`, `in`), so authors and AI + learn ONE expression language. The `sqlPredicateToCel` bridge is retained as a + DEPRECATED transitional shim: a stored SQL-style predicate still compiles (no + silent deny on legacy data) but emits a deprecation warn; canonical CEL passes + through as a no-op. No runtime behavior change — CEL and the old SQL form compile + to the identical FilterCondition. + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [2256e93] +- Updated dependencies [7108ff3] +- Updated dependencies [30c0313] +- Updated dependencies [e16f2a8] +- Updated dependencies [cfd86ce] +- Updated dependencies [e411a82] +- Updated dependencies [ae271d0] +- Updated dependencies [61ed5c7] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [0df063e] +- Updated dependencies [ce13bb8] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] +- Updated dependencies [47d978a] +- Updated dependencies [48a307a] +- Updated dependencies [25fc0e4] + - @objectstack/spec@10.0.0 + - @objectstack/platform-objects@10.0.0 + - @objectstack/formula@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Minor Changes diff --git a/packages/plugins/plugin-security/package.json b/packages/plugins/plugin-security/package.json index fc03822ce5..356f450006 100644 --- a/packages/plugins/plugin-security/package.json +++ b/packages/plugins/plugin-security/package.json @@ -1,8 +1,8 @@ { "name": "@objectstack/plugin-security", - "version": "9.11.0", + "version": "10.0.0", "license": "Apache-2.0", - "description": "Security Plugin for ObjectStack \u2014 RBAC, RLS, and Field-Level Security Runtime", + "description": "Security Plugin for ObjectStack — RBAC, RLS, and Field-Level Security Runtime", "main": "dist/index.js", "types": "dist/index.d.ts", "exports": { diff --git a/packages/plugins/plugin-sharing/CHANGELOG.md b/packages/plugins/plugin-sharing/CHANGELOG.md index 696c4889ce..134ad41dff 100644 --- a/packages/plugins/plugin-sharing/CHANGELOG.md +++ b/packages/plugins/plugin-sharing/CHANGELOG.md @@ -1,5 +1,99 @@ # @objectstack/plugin-sharing +## 10.0.0 + +### Major Changes + +- e16f2a8: **BREAKING:** the system object `sys_department` is renamed to `sys_business_unit` + — object + member table (`sys_department_member` → `sys_business_unit_member`), + fields, and i18n — with **no compatibility alias**. Any deployment holding + `sys_department` rows, or metadata that references the object by name (lookups, + list views, queries, sharing/approval scopes), must migrate to `sys_business_unit`. + A renamed shipped system object is a breaking change to the platform's public + data surface, so this lands as a **major**. Verified per ADR-0059's pre-publish + hotcrm gate: no published downstream consumer references the old name. + + ADR-0057 — ERP authorization core. Adds permission-grant access DEPTH + (`own`/`own_and_reports`/`unit`/`unit_and_below`/`org`), renames `sys_department` + → `sys_business_unit` (no aliases — see BREAKING above), introduces the platform-owned + `sys_user_role` assignment, and seeds stack-declared `roles`/`sharingRules` into + `sys_role`/`sys_sharing_rule` at boot (closes #2077). Hierarchy-relative scopes are + delegated to a pluggable `IHierarchyScopeResolver` (open edition fails closed to + owner-only; `defineStack` errors without `requires: ['hierarchy-security']`). Also + fixes a latent over-grant where `engine.find({ filter })` was ignored (driver reads + `where`) — normalized `filter`→`where` in the engine. + +### Minor Changes + +- 30c0313: Add `sys_user.primary_business_unit_id` projection (ADR-0057 addendum D12). + + Adds a denormalised `primary_business_unit_id` lookup to `sys_user`, maintained + by plugin-sharing as a projection of `sys_business_unit_member.is_primary` + (insert/update/delete hooks + a boot-time backfill). This makes "pick people by + business unit" — the Dataverse _filtered lookup_ / ServiceNow _reference + qualifier_ interaction — expressible as a plain `where: { primary_business_unit_id: X }` + (and thus as a `lookupFilters` picker filter) with **zero** query-engine change, + without traversing the membership junction. `sys_business_unit_member` remains + the effective-dated, matrix-friendly source of truth; the new column is a + maintained projection, not a second source. Home is plugin-sharing (always + loaded, owns the BU graph) rather than plugin-org-scoping, so the projection + works in single-tenant deployments too. Picker filtering by BU is therefore an + **open** (non-enterprise) capability — only hierarchy _rollup_ stays paid. + +- cfd86ce: ADR-0058 — expression & predicate surface unification. Adds the canonical + CEL→FilterCondition pushdown compiler in `@objectstack/formula` + (`compileCelToFilter`, `isPushdownableCel`, `lowerCelAst`) plus an in-memory + `matchesFilterCondition` backend (one AST, three backends). `plugin-security` + (RLS `using`, via a SQL bridge) and `plugin-sharing` (`celToFilter`) cut over to + it, retiring the bespoke regex/field-equality front-ends. Compound sharing + conditions now compile and enforce end-to-end (closes #1887). The RLS `check` + clause is now enforced on the write post-image (insert/by-id update), fail-closed. + Non-pushdownable predicates (arithmetic, functions, subqueries, cross-object) are + an authoring compile error, never silently dropped (ADR-0049/0055). + +### Patch Changes + +- ce13bb8: Single-tenant audit follow-ups (ADR-0057): + + - **`sys_member` / `sys_invitation`**: make `organization_id` optional (same class as the + sys_business_unit/sys_team fix #2178). Single-tenant has no org row and no auto-stamp; + multi-tenant still auto-stamps via OrgScopingPlugin with null-org rows hidden by + tenant-isolation RLS (fail-closed). Completes the org-scoped identity graph's + single-tenant consistency. + - **`BusinessUnitGraphService.headOf()`**: add the missing `orgScope()` org filter (it + queries under SYSTEM_CTX, bypassing RLS, so the scope is the only isolation). Previously + `headOf(buId)` read a business unit's `manager_user_id` by id alone — a cross-organization + leak in multi-tenant. Now consistent with `descendants()`. +regression test. + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [2256e93] +- Updated dependencies [7108ff3] +- Updated dependencies [30c0313] +- Updated dependencies [e16f2a8] +- Updated dependencies [cfd86ce] +- Updated dependencies [e411a82] +- Updated dependencies [ae271d0] +- Updated dependencies [61ed5c7] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [0df063e] +- Updated dependencies [ce13bb8] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] +- Updated dependencies [47d978a] +- Updated dependencies [48a307a] +- Updated dependencies [25fc0e4] + - @objectstack/spec@10.0.0 + - @objectstack/objectql@10.0.0 + - @objectstack/platform-objects@10.0.0 + - @objectstack/formula@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Minor Changes diff --git a/packages/plugins/plugin-sharing/package.json b/packages/plugins/plugin-sharing/package.json index 8143b00d6f..b767ce1b2a 100644 --- a/packages/plugins/plugin-sharing/package.json +++ b/packages/plugins/plugin-sharing/package.json @@ -1,8 +1,8 @@ { "name": "@objectstack/plugin-sharing", - "version": "9.11.0", + "version": "10.0.0", "license": "Apache-2.0", - "description": "Record-level sharing for ObjectStack \u2014 sys_record_share + middleware that enforces sharingModel + ISharingService.", + "description": "Record-level sharing for ObjectStack — sys_record_share + middleware that enforces sharingModel + ISharingService.", "main": "dist/index.js", "types": "dist/index.d.ts", "exports": { diff --git a/packages/plugins/plugin-webhooks/CHANGELOG.md b/packages/plugins/plugin-webhooks/CHANGELOG.md index f9d0f9c31b..8bf4ac8cb9 100644 --- a/packages/plugins/plugin-webhooks/CHANGELOG.md +++ b/packages/plugins/plugin-webhooks/CHANGELOG.md @@ -1,5 +1,25 @@ # @objectstack/plugin-webhooks +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + - @objectstack/service-messaging@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/plugins/plugin-webhooks/package.json b/packages/plugins/plugin-webhooks/package.json index 71ab37d555..e72bf79db0 100644 --- a/packages/plugins/plugin-webhooks/package.json +++ b/packages/plugins/plugin-webhooks/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-webhooks", - "version": "9.11.0", + "version": "10.0.0", "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/rest/CHANGELOG.md b/packages/rest/CHANGELOG.md index 08977b9477..69008ef009 100644 --- a/packages/rest/CHANGELOG.md +++ b/packages/rest/CHANGELOG.md @@ -1,5 +1,58 @@ # @objectstack/rest +## 10.0.0 + +### Minor Changes + +- 2256e93: Setup nav: gate Organizations/Invitations on multi-org; enforce `requiresService` server-side (ADR-0057 addendum D10). + + `rest-server`'s `filterAppForUser` now honours `NavigationItem.requiresService` — entries + whose named kernel service isn't registered are dropped from the served app metadata + (fail-open when the kernel can't be probed; previously the field was a frontend-only hint). + Applies `requiresService: 'org-scoping'` to the Setup app's Organizations and Invitations + entries, so they surface only in multi-org (multi-tenant) deployments and disappear in + single-tenant. Business Units is intentionally left ungated — it is open per the open/paid + seam + D12 ("pick people by BU"); only the hierarchy rollup capability is enterprise. + +- 220ce5b: Resolve the tenant default currency onto ExecutionContext. + + Adds `ExecutionContext.currency` (ISO 4217) and resolves it from the + `localization.currency` setting alongside `timezone`/`locale` — in both the + runtime `resolveExecutionContext` and the REST mirror. This is the foundation + for the documented "applied when a currency field omits its own" fallback: the + tenant default is now carried on every request context, so analytics enrichment, + formatters, and renderers can resolve a measure/field currency down to the org + default instead of hard-coding it. Undefined when no tenant default is + configured (consumers then render a plain number). + +### Patch Changes + +- 3754f80: Fix: the Setup-nav capability gate (`requiresService`, ADR-0057 D10) was a no-op on the single-item app-meta path. + + `GET /meta/app/:name` returns a metadata envelope `{ type, name, item: , ... }`, but + `filterAppForUser` was applied to the envelope — whose `.navigation` is undefined — so it + returned it untouched, silently bypassing BOTH the `requiredPermissions` gate and the D10 + `requiresService` gate. Organizations/Invitations therefore still appeared in the Setup app + even in single-tenant deployments. `filterAppForUser` and `resolveRegisteredServices` now + unwrap the envelope (the list path already passed the raw app). Verified against a live + `os dev`: single-tenant hides Organizations/Invitations; multi-tenant shows them. + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + - @objectstack/service-package@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/rest/package.json b/packages/rest/package.json index 80ddca526c..4f94a006a2 100644 --- a/packages/rest/package.json +++ b/packages/rest/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/rest", - "version": "9.11.0", + "version": "10.0.0", "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 322dfc26f5..3c641a7061 100644 --- a/packages/runtime/CHANGELOG.md +++ b/packages/runtime/CHANGELOG.md @@ -1,5 +1,94 @@ # @objectstack/runtime +## 10.0.0 + +### Minor Changes + +- e16f2a8: **BREAKING:** the system object `sys_department` is renamed to `sys_business_unit` + — object + member table (`sys_department_member` → `sys_business_unit_member`), + fields, and i18n — with **no compatibility alias**. Any deployment holding + `sys_department` rows, or metadata that references the object by name (lookups, + list views, queries, sharing/approval scopes), must migrate to `sys_business_unit`. + A renamed shipped system object is a breaking change to the platform's public + data surface, so this lands as a **major**. Verified per ADR-0059's pre-publish + hotcrm gate: no published downstream consumer references the old name. + + ADR-0057 — ERP authorization core. Adds permission-grant access DEPTH + (`own`/`own_and_reports`/`unit`/`unit_and_below`/`org`), renames `sys_department` + → `sys_business_unit` (no aliases — see BREAKING above), introduces the platform-owned + `sys_user_role` assignment, and seeds stack-declared `roles`/`sharingRules` into + `sys_role`/`sys_sharing_rule` at boot (closes #2077). Hierarchy-relative scopes are + delegated to a pluggable `IHierarchyScopeResolver` (open edition fails closed to + owner-only; `defineStack` errors without `requires: ['hierarchy-security']`). Also + fixes a latent over-grant where `engine.find({ filter })` was ignored (driver reads + `where`) — normalized `filter`→`where` in the engine. + +- 220ce5b: Resolve the tenant default currency onto ExecutionContext. + + Adds `ExecutionContext.currency` (ISO 4217) and resolves it from the + `localization.currency` setting alongside `timezone`/`locale` — in both the + runtime `resolveExecutionContext` and the REST mirror. This is the foundation + for the documented "applied when a currency field omits its own" fallback: the + tenant default is now carried on every request context, so analytics enrichment, + formatters, and renderers can resolve a measure/field currency down to the org + default instead of hard-coding it. Undefined when no tenant default is + configured (consumers then render a plain number). + +### Patch Changes + +- 47d978a: Fix: the artifact-serve path now honors an app-declared default permission-set + profile (`isProfile: true, isDefault: true`) under `objectstack dev`/`serve`/`start`. + + `createStandaloneStack` (the boot path used when serving a compiled + `dist/objectstack.json` with no host `objectstack.config.ts`) surfaced + `objects`/`requires`/`manifest` from the artifact bundle but dropped + `permissions[]` and `roles[]`. As a result the CLI's + `appDefaultProfileName(config.permissions)` saw `undefined` and the SecurityPlugin + fell back to the built-in owner-only `member_default` — so an app whose default + profile carries e.g. `readScope: 'unit_and_below'` (ADR-0056 D7 / ADR-0057 D1) + was silently ignored. The config-load path was unaffected because the app's + `permissions` survived via the original stack object. + + `createStandaloneStack` now surfaces `permissions[]` and `roles[]` from the + artifact bundle, mirroring the existing `objects`/`requires`/`manifest` handling, + so the artifact-serve path applies the app default profile exactly like the + config-load path. + +- Updated dependencies [d7ff626] +- Updated dependencies [92db3e5] +- Updated dependencies [2a1b16b] +- Updated dependencies [2256e93] +- Updated dependencies [e16f2a8] +- Updated dependencies [cfd86ce] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [3754f80] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] +- Updated dependencies [48a307a] +- Updated dependencies [25fc0e4] + - @objectstack/spec@10.0.0 + - @objectstack/driver-sql@10.0.0 + - @objectstack/objectql@10.0.0 + - @objectstack/rest@10.0.0 + - @objectstack/plugin-security@10.0.0 + - @objectstack/formula@10.0.0 + - @objectstack/core@10.0.0 + - @objectstack/metadata@10.0.0 + - @objectstack/observability@10.0.0 + - @objectstack/driver-memory@10.0.0 + - @objectstack/driver-sqlite-wasm@10.0.0 + - @objectstack/plugin-auth@10.0.0 + - @objectstack/plugin-org-scoping@10.0.0 + - @objectstack/service-cluster@10.0.0 + - @objectstack/service-i18n@10.0.0 + - @objectstack/types@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/runtime/package.json b/packages/runtime/package.json index c84c991b51..956ffa975f 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/runtime", - "version": "9.11.0", + "version": "10.0.0", "license": "Apache-2.0", "description": "ObjectStack Core Runtime & Query Engine", "type": "module", diff --git a/packages/services/service-ai/CHANGELOG.md b/packages/services/service-ai/CHANGELOG.md index b4ed7a074b..94ca7c0644 100644 --- a/packages/services/service-ai/CHANGELOG.md +++ b/packages/services/service-ai/CHANGELOG.md @@ -1,5 +1,50 @@ # @objectstack/service-ai +## 10.0.0 + +### Minor Changes + +- e411a82: feat(ai): split `ask`/`build` agents by surface + tool scoping (ADR-0063/0064). + + Two kernel agents bound by surface, not a per-turn classifier. `SkillSchema` + gains `surface: 'ask'|'build'|'both'` and `AgentSchema` gains `surface: +'ask'|'build'` (ADR-0063 §3); an agent's tools are exactly the union of its + surface-compatible skills' tools — incompatible binding is a load error in + `resolveActiveSkills` (ADR-0064 §3). The `ask` agent is now data-only (the + ADR-0040 unified "INTENT FIRST" classifier and the `buildRegisterActive` + degradation shim are removed); a new `schema_reader` (`surface:'both'`) owns + the shared reads `describe_object`/`list_objects`/`query_data` so the build + agent reuses them without dual-listing. `*.agent.ts` is closed to third + parties: the `agent` metadata-type is `allowRuntimeCreate:false, +allowOrgOverride:false` and the runtime catalog lists only platform agents + (ADR-0063 §2). Renames `data-chat-agent.ts`→`ask-agent.ts`, + `DEFAULT_DATA_AGENT_NAME`→`ASK_AGENT_NAME` (the `data_chat`/`metadata_assistant` + aliases stay resolvable). + +- be07ce7: Rename the built-in data agent `data_chat` → `ask` (Path A: friendly console URL == real id). Back-compat preserved via a new process-wide alias registry: `AgentRuntime.loadAgent` normalizes legacy names, so `/agents/data_chat/chat` and persisted `agent_id='data_chat'` keep resolving. `registerAgentAlias()` is exported so other packages register their own renames (cloud AI Studio: `metadata_assistant`→`build`). The plugin prunes the stale legacy agent record on upgrade so the catalog isn't doubled. + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [cfd86ce] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] +- Updated dependencies [48a307a] +- Updated dependencies [25fc0e4] + - @objectstack/spec@10.0.0 + - @objectstack/formula@10.0.0 + - @objectstack/core@10.0.0 + - @objectstack/types@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/services/service-ai/package.json b/packages/services/service-ai/package.json index 14072c59ec..03b8d83d4b 100644 --- a/packages/services/service-ai/package.json +++ b/packages/services/service-ai/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-ai", - "version": "9.11.0", + "version": "10.0.0", "license": "Apache-2.0", "description": "AI Service for ObjectStack — implements IAIService with LLM adapter layer, conversation management, tool registry, and REST/SSE routes", "type": "module", diff --git a/packages/services/service-analytics/CHANGELOG.md b/packages/services/service-analytics/CHANGELOG.md index 32b1171136..a29d4c7d84 100644 --- a/packages/services/service-analytics/CHANGELOG.md +++ b/packages/services/service-analytics/CHANGELOG.md @@ -1,5 +1,43 @@ # Changelog — @objectstack/service-analytics +## 10.0.0 + +### Minor Changes + +- 70609af: Resolve a monetary measure's display currency via the field→tenant chain. + + A dataset measure-currency now resolves through: explicit measure `currency` → + source-field `currencyConfig.defaultCurrency` → tenant default (`ctx.currency`). + A measure is monetary iff it declares a currency or aggregates a `currency`-type + field, so count/avg-of-number measures never receive a code. Wires a + `measureCurrency` field-metadata resolver from the data engine's object schema. + +- 3187952: Dataset analytics enrich **dimension** result fields with their display label (so report/dashboard table headers read "Status" instead of the raw field name) and expose drill-through metadata on the dataset query result: the base `object`, a drillable dimension→field map, and a parallel `drillRawRows` array of each row's raw grouped values (captured before label resolution). This lets a host drill a grouped bucket back to its underlying records with an exact-match filter built from the stored value, not the display label. Date dimensions are excluded (a humanized bucket can't be exact-matched). +- a581385: Propagate a dataset measure's declared currency to the analytics result field. + + Adds an optional `DatasetMeasure.currency` (ISO 4217) on the semantic layer and + carries it onto each measure result field alongside `label`/`format`, so a + currency-aware client (Intl symbol) can render `¥1,234` / `$616,000` from a real + currency code instead of a plain number or a `$` baked into `format`. Additive + and optional — existing datasets are unaffected. + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/services/service-analytics/package.json b/packages/services/service-analytics/package.json index 5f7367f27e..3ce22bf061 100644 --- a/packages/services/service-analytics/package.json +++ b/packages/services/service-analytics/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-analytics", - "version": "9.11.0", + "version": "10.0.0", "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 ab53043a6f..50e3067521 100644 --- a/packages/services/service-automation/CHANGELOG.md +++ b/packages/services/service-automation/CHANGELOG.md @@ -1,5 +1,28 @@ # @objectstack/service-automation +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [cfd86ce] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] +- Updated dependencies [48a307a] +- Updated dependencies [25fc0e4] + - @objectstack/spec@10.0.0 + - @objectstack/formula@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/services/service-automation/package.json b/packages/services/service-automation/package.json index 8c027177f6..b3a665d54f 100644 --- a/packages/services/service-automation/package.json +++ b/packages/services/service-automation/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-automation", - "version": "9.11.0", + "version": "10.0.0", "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 3b30e52b81..9ebd5220c6 100644 --- a/packages/services/service-cache/CHANGELOG.md +++ b/packages/services/service-cache/CHANGELOG.md @@ -1,5 +1,25 @@ # @objectstack/service-cache +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + - @objectstack/observability@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/services/service-cache/package.json b/packages/services/service-cache/package.json index 7e515ede25..af4ccb1abe 100644 --- a/packages/services/service-cache/package.json +++ b/packages/services/service-cache/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-cache", - "version": "9.11.0", + "version": "10.0.0", "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 9c77a8cd5c..fa4903cf3a 100644 --- a/packages/services/service-cluster-redis/CHANGELOG.md +++ b/packages/services/service-cluster-redis/CHANGELOG.md @@ -1,5 +1,23 @@ # @objectstack/service-cluster-redis +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/service-cluster@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/services/service-cluster-redis/package.json b/packages/services/service-cluster-redis/package.json index 517bdb1a79..caa16ac0cb 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": "9.11.0", + "version": "10.0.0", "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 85f5e1f9f2..bd34da2b73 100644 --- a/packages/services/service-cluster/CHANGELOG.md +++ b/packages/services/service-cluster/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/service-cluster +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/services/service-cluster/package.json b/packages/services/service-cluster/package.json index 86dc8bacf5..c3d52bb87d 100644 --- a/packages/services/service-cluster/package.json +++ b/packages/services/service-cluster/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-cluster", - "version": "9.11.0", + "version": "10.0.0", "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 4f68d28f35..52c3514212 100644 --- a/packages/services/service-datasource/CHANGELOG.md +++ b/packages/services/service-datasource/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/service-external-datasource +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/services/service-datasource/package.json b/packages/services/service-datasource/package.json index 3fd7ffb5a6..8c64d2bc00 100644 --- a/packages/services/service-datasource/package.json +++ b/packages/services/service-datasource/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-datasource", - "version": "9.11.0", + "version": "10.0.0", "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 991be25951..1aa2eb99ab 100644 --- a/packages/services/service-i18n/CHANGELOG.md +++ b/packages/services/service-i18n/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/service-i18n +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/services/service-i18n/package.json b/packages/services/service-i18n/package.json index f6ee44fd0e..3deed5024d 100644 --- a/packages/services/service-i18n/package.json +++ b/packages/services/service-i18n/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-i18n", - "version": "9.11.0", + "version": "10.0.0", "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 40eb02aa3d..206ca8c94a 100644 --- a/packages/services/service-job/CHANGELOG.md +++ b/packages/services/service-job/CHANGELOG.md @@ -1,5 +1,33 @@ # @objectstack/service-job +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [2256e93] +- Updated dependencies [7108ff3] +- Updated dependencies [30c0313] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [ae271d0] +- Updated dependencies [61ed5c7] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [0df063e] +- Updated dependencies [ce13bb8] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] +- Updated dependencies [47d978a] + - @objectstack/spec@10.0.0 + - @objectstack/platform-objects@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/services/service-job/package.json b/packages/services/service-job/package.json index 8973f755fe..44d9cfd02b 100644 --- a/packages/services/service-job/package.json +++ b/packages/services/service-job/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-job", - "version": "9.11.0", + "version": "10.0.0", "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 5b34f4531c..577ad1ba59 100644 --- a/packages/services/service-knowledge/CHANGELOG.md +++ b/packages/services/service-knowledge/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/service-knowledge +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/services/service-knowledge/package.json b/packages/services/service-knowledge/package.json index cc945b98f8..5bc03c2732 100644 --- a/packages/services/service-knowledge/package.json +++ b/packages/services/service-knowledge/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-knowledge", - "version": "9.11.0", + "version": "10.0.0", "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-messaging/CHANGELOG.md b/packages/services/service-messaging/CHANGELOG.md index 3cdae0571f..69c43ffc34 100644 --- a/packages/services/service-messaging/CHANGELOG.md +++ b/packages/services/service-messaging/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/service-messaging +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/services/service-messaging/package.json b/packages/services/service-messaging/package.json index d1b38f929e..6815f1e177 100644 --- a/packages/services/service-messaging/package.json +++ b/packages/services/service-messaging/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-messaging", - "version": "9.11.0", + "version": "10.0.0", "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 90b8525fde..e2f6c2ae5c 100644 --- a/packages/services/service-package/CHANGELOG.md +++ b/packages/services/service-package/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/service-package +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/services/service-package/package.json b/packages/services/service-package/package.json index 937d59a9fd..1e602f5ba9 100644 --- a/packages/services/service-package/package.json +++ b/packages/services/service-package/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-package", - "version": "9.11.0", + "version": "10.0.0", "license": "Apache-2.0", "description": "Package management service for ObjectStack — publish, install, and manage packages", "type": "module", diff --git a/packages/services/service-queue/CHANGELOG.md b/packages/services/service-queue/CHANGELOG.md index 46bb87100c..6fe3ba3ff2 100644 --- a/packages/services/service-queue/CHANGELOG.md +++ b/packages/services/service-queue/CHANGELOG.md @@ -1,5 +1,33 @@ # @objectstack/service-queue +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [2256e93] +- Updated dependencies [7108ff3] +- Updated dependencies [30c0313] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [ae271d0] +- Updated dependencies [61ed5c7] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [0df063e] +- Updated dependencies [ce13bb8] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] +- Updated dependencies [47d978a] + - @objectstack/spec@10.0.0 + - @objectstack/platform-objects@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/services/service-queue/package.json b/packages/services/service-queue/package.json index 768e297235..5b4f142643 100644 --- a/packages/services/service-queue/package.json +++ b/packages/services/service-queue/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-queue", - "version": "9.11.0", + "version": "10.0.0", "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 3d4852ca3d..2a41e530e6 100644 --- a/packages/services/service-realtime/CHANGELOG.md +++ b/packages/services/service-realtime/CHANGELOG.md @@ -1,5 +1,33 @@ # @objectstack/service-realtime +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [2256e93] +- Updated dependencies [7108ff3] +- Updated dependencies [30c0313] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [ae271d0] +- Updated dependencies [61ed5c7] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [0df063e] +- Updated dependencies [ce13bb8] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] +- Updated dependencies [47d978a] + - @objectstack/spec@10.0.0 + - @objectstack/platform-objects@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/services/service-realtime/package.json b/packages/services/service-realtime/package.json index 7ef6991dab..2ebe5931b4 100644 --- a/packages/services/service-realtime/package.json +++ b/packages/services/service-realtime/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-realtime", - "version": "9.11.0", + "version": "10.0.0", "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 df01364275..1db9e9933b 100644 --- a/packages/services/service-settings/CHANGELOG.md +++ b/packages/services/service-settings/CHANGELOG.md @@ -1,5 +1,34 @@ # @objectstack/service-settings +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [2256e93] +- Updated dependencies [7108ff3] +- Updated dependencies [30c0313] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [ae271d0] +- Updated dependencies [61ed5c7] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [0df063e] +- Updated dependencies [ce13bb8] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] +- Updated dependencies [47d978a] + - @objectstack/spec@10.0.0 + - @objectstack/platform-objects@10.0.0 + - @objectstack/core@10.0.0 + - @objectstack/types@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/services/service-settings/package.json b/packages/services/service-settings/package.json index cc444c09ea..7e37feadcf 100644 --- a/packages/services/service-settings/package.json +++ b/packages/services/service-settings/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-settings", - "version": "9.11.0", + "version": "10.0.0", "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-storage/CHANGELOG.md b/packages/services/service-storage/CHANGELOG.md index cf6cf80e76..a82ebbeaa3 100644 --- a/packages/services/service-storage/CHANGELOG.md +++ b/packages/services/service-storage/CHANGELOG.md @@ -1,5 +1,34 @@ # @objectstack/service-storage +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [2256e93] +- Updated dependencies [7108ff3] +- Updated dependencies [30c0313] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [ae271d0] +- Updated dependencies [61ed5c7] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [0df063e] +- Updated dependencies [ce13bb8] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] +- Updated dependencies [47d978a] + - @objectstack/spec@10.0.0 + - @objectstack/platform-objects@10.0.0 + - @objectstack/core@10.0.0 + - @objectstack/observability@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/services/service-storage/package.json b/packages/services/service-storage/package.json index 46f88fbf13..ab950405cf 100644 --- a/packages/services/service-storage/package.json +++ b/packages/services/service-storage/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-storage", - "version": "9.11.0", + "version": "10.0.0", "license": "Apache-2.0", "description": "Storage Service for ObjectStack — implements IStorageService with local filesystem and S3 adapter skeleton", "type": "module", diff --git a/packages/spec/CHANGELOG.md b/packages/spec/CHANGELOG.md index cc63659a50..f6dea12647 100644 --- a/packages/spec/CHANGELOG.md +++ b/packages/spec/CHANGELOG.md @@ -1,5 +1,147 @@ # @objectstack/spec +## 10.0.0 + +### Minor Changes + +- d7ff626: spec(action): a `script` action must declare an executable binding — reject at + author/compile time when it has neither an inline `body` nor a `target`. + + A `type: 'script'` action with no `body` and no `target` registers no runtime + handler: `AppPlugin` skips it, and invoking it falls through to the wildcard + lookup and fails with `Action '' on object '*' not found` (the #2169 + "Mark Done" bug). The shape was schema-valid and passed coverage tests, so the + break only surfaced when a user clicked the button. + + `ActionSchema` now enforces the invariant via `superRefine`: `script` requires + `body || target` (mirroring the existing "non-script types require `target`" + rule). `body`-bound actions are auto-registered by the runtime; `target`-bound + actions name a function wired imperatively (e.g. via `onEnable`). This only + rejects configurations that were already non-functional at runtime — verified + against the full monorepo build (every shipped bundle still compiles). + +- e16f2a8: **BREAKING:** the system object `sys_department` is renamed to `sys_business_unit` + — object + member table (`sys_department_member` → `sys_business_unit_member`), + fields, and i18n — with **no compatibility alias**. Any deployment holding + `sys_department` rows, or metadata that references the object by name (lookups, + list views, queries, sharing/approval scopes), must migrate to `sys_business_unit`. + A renamed shipped system object is a breaking change to the platform's public + data surface, so this lands as a **major**. Verified per ADR-0059's pre-publish + hotcrm gate: no published downstream consumer references the old name. + + ADR-0057 — ERP authorization core. Adds permission-grant access DEPTH + (`own`/`own_and_reports`/`unit`/`unit_and_below`/`org`), renames `sys_department` + → `sys_business_unit` (no aliases — see BREAKING above), introduces the platform-owned + `sys_user_role` assignment, and seeds stack-declared `roles`/`sharingRules` into + `sys_role`/`sys_sharing_rule` at boot (closes #2077). Hierarchy-relative scopes are + delegated to a pluggable `IHierarchyScopeResolver` (open edition fails closed to + owner-only; `defineStack` errors without `requires: ['hierarchy-security']`). Also + fixes a latent over-grant where `engine.find({ filter })` was ignored (driver reads + `where`) — normalized `filter`→`where` in the engine. + +- e411a82: feat(ai): split `ask`/`build` agents by surface + tool scoping (ADR-0063/0064). + + Two kernel agents bound by surface, not a per-turn classifier. `SkillSchema` + gains `surface: 'ask'|'build'|'both'` and `AgentSchema` gains `surface: +'ask'|'build'` (ADR-0063 §3); an agent's tools are exactly the union of its + surface-compatible skills' tools — incompatible binding is a load error in + `resolveActiveSkills` (ADR-0064 §3). The `ask` agent is now data-only (the + ADR-0040 unified "INTENT FIRST" classifier and the `buildRegisterActive` + degradation shim are removed); a new `schema_reader` (`surface:'both'`) owns + the shared reads `describe_object`/`list_objects`/`query_data` so the build + agent reuses them without dual-listing. `*.agent.ts` is closed to third + parties: the `agent` metadata-type is `allowRuntimeCreate:false, +allowOrgOverride:false` and the runtime catalog lists only platform agents + (ADR-0063 §2). Renames `data-chat-agent.ts`→`ask-agent.ts`, + `DEFAULT_DATA_AGENT_NAME`→`ASK_AGENT_NAME` (the `data_chat`/`metadata_assistant` + aliases stay resolvable). + +- a581385: Propagate a dataset measure's declared currency to the analytics result field. + + Adds an optional `DatasetMeasure.currency` (ISO 4217) on the semantic layer and + carries it onto each measure result field alongside `label`/`format`, so a + currency-aware client (Intl symbol) can render `¥1,234` / `$616,000` from a real + currency code instead of a plain number or a `$` baked into `format`. Additive + and optional — existing datasets are unaffected. + +- 220ce5b: Resolve the tenant default currency onto ExecutionContext. + + Adds `ExecutionContext.currency` (ISO 4217) and resolves it from the + `localization.currency` setting alongside `timezone`/`locale` — in both the + runtime `resolveExecutionContext` and the REST mirror. This is the foundation + for the documented "applied when a currency field omits its own" fallback: the + tenant default is now carried on every request context, so analytics enrichment, + formatters, and renderers can resolve a measure/field currency down to the org + default instead of hard-coding it. Undefined when no tenant default is + configured (consumers then render a plain number). + +- 6ca20b3: ADR-0058 D1 follow-through — RLS predicates are now canonical CEL. Migrated every + seeded RLS `using`/`check` (default permission sets, showcase, and the + `RLS.ownerPolicy`/`tenantPolicy`/`allowAllPolicy` helper factories) from the + legacy SQL-ish form (`=`, `IN (...)`) to pure CEL (`==`, `in`), so authors and AI + learn ONE expression language. The `sqlPredicateToCel` bridge is retained as a + DEPRECATED transitional shim: a stored SQL-style predicate still compiles (no + silent deny on legacy data) but emits a deprecation warn; canonical CEL passes + through as a no-op. No runtime behavior change — CEL and the old SQL form compile + to the identical FilterCondition. +- 5f875fe: spec: add `defineX` factories for the remaining 16 writable domains and the 6 + missing `XInput` aliases — one consistent, type-safe authoring entry per domain + (#2035). + + New factories: `defineDatasource`, `defineConnector`, `definePolicy`, + `defineSharingRule`, `defineRole`, `definePermissionSet`, + `defineEmailTemplateDefinition`, `defineReport`, `defineWebhook`, + `defineObjectExtension`, `defineCube`, `defineMapping`, `defineTheme`, + `defineTranslationBundle`, `definePage`, `defineAction`. Each mirrors the 19 + existing factories (`XSchema.parse(z.input<…>)`): input-shape ergonomics + + authoring-time validation. Because a factory is a _value_ import, a broken + import hard-errors instead of silently degrading to `any` (the #2023 failure + mode), and errors surface at `.parse()` time with field-level messages. + + Also adds the previously-missing input aliases `PolicyInput`, `CubeInput`, + `MappingInput`, `ThemeInput`, `TranslationBundleInput`, `PageInput`. + + Purely additive: no existing exports change. + +- b469950: feat(spec): add a `tree` view type to the ListView schema + + `'tree'` is now a valid `ListView.type` (and `VisualizationType`), backed by a + new `TreeConfigSchema` (`parentField` / `labelField` / `fields` / + `defaultExpandedDepth`, passthrough). This lets a self-referencing object be + served as a tree-grid; without it the runtime Zod-validates view metadata and + silently drops `type:'tree'`. Renderer ships in objectui `@object-ui/plugin-tree`. + +### Patch Changes + +- 2a1b16b: fix(ADR-0015): honor `external.remoteName` / `external.remoteSchema` on the federation read path. + + The query path previously resolved an external object's physical table from the + object name, ignoring its `external` binding — so a federated object bound to a + differently-named remote table failed with `no such table`, and ADR-0015's own + `wh_order` → `mart.fact_orders` example was unqueryable. The SQL driver now + resolves the remote table (`remoteName`, plus `remoteSchema` via `.withSchema()` + on pg/mysql) and registers external objects' read-coercion metadata without DDL + (`SqlDriver.registerExternalObject`, routed from the engine/plugin schema-sync). + The managed path is unchanged. See ADR-0015 §18. + +- 3efe334: Honor a nested `where` filter inside `expand` on lookup/master_detail expansion. + + The expand post-processor batch-loads related records with an `id $in [...]` query but never merged the nested QueryAST `where`, so a documented `expand: { rel: { where: {...} } }` filter was silently ignored and every related record came back. The nested filter is now AND-merged into the batch query via an explicit `$and` group (`{ $and: [{ id: { $in } }, nestedAST.where] }`) — robust against a nested filter that itself keys `id` or uses a top-level `$or`/`$and`, where a shallow spread would clobber or reorder the constraint. + + `limit`/`offset`/`orderBy` remain intentionally not honored on the expand path: it batch-loads every parent's related records in one `$in` query and re-keys them per parent by foreign key, so a per-parent page size or ordering can't be expressed there. Docs and the schema `describe()` are updated to match, with a guard test asserting `limit`/`offset` are not pushed into the expand query. + +- feead7e: fix(spec): make `GanttConfigSchema` forward-compatible via `.passthrough()`. + + The gantt renderer (objectui plugin-gantt) keeps adding view-config knobs + (e.g. `lockField`, `defaultCollapsedDepth`) ahead of this schema. Without + passthrough, the console — which validates the view config against a bundled + copy of this schema before handing it to the renderer — strips any field not + declared here, so every new renderer knob needs a spec release + console + rebuild before it can take effect. Adding `.passthrough()` lets unknown fields + flow through to the renderer, decoupling renderer releases from spec releases. + Known fields keep their validation; the renderer still only reads what it + understands. + ## 9.11.0 ### Minor Changes diff --git a/packages/spec/package.json b/packages/spec/package.json index 37b836e024..80031bd2e4 100644 --- a/packages/spec/package.json +++ b/packages/spec/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/spec", - "version": "9.11.0", + "version": "10.0.0", "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 dd444390d7..0b75a96593 100644 --- a/packages/triggers/trigger-api/CHANGELOG.md +++ b/packages/triggers/trigger-api/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/trigger-api +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/triggers/trigger-api/package.json b/packages/triggers/trigger-api/package.json index f139db668a..dda00ba211 100644 --- a/packages/triggers/trigger-api/package.json +++ b/packages/triggers/trigger-api/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/trigger-api", - "version": "9.11.0", + "version": "10.0.0", "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 3594dd1eed..d2e357fcca 100644 --- a/packages/triggers/trigger-record-change/CHANGELOG.md +++ b/packages/triggers/trigger-record-change/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/plugin-trigger-record-change +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/triggers/trigger-record-change/package.json b/packages/triggers/trigger-record-change/package.json index 6c3d0edd84..d6ba102051 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": "9.11.0", + "version": "10.0.0", "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 801974b3b3..08cb65e602 100644 --- a/packages/triggers/trigger-schedule/CHANGELOG.md +++ b/packages/triggers/trigger-schedule/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/plugin-trigger-schedule +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/core@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/triggers/trigger-schedule/package.json b/packages/triggers/trigger-schedule/package.json index 494eca1bd6..4b232fc3b3 100644 --- a/packages/triggers/trigger-schedule/package.json +++ b/packages/triggers/trigger-schedule/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/trigger-schedule", - "version": "9.11.0", + "version": "10.0.0", "license": "Apache-2.0", "description": "Schedule flow trigger for ObjectStack — 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 f28bf481e6..93a039bf18 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -1,5 +1,22 @@ # @objectstack/types +## 10.0.0 + +### Patch Changes + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [e16f2a8] +- Updated dependencies [e411a82] +- Updated dependencies [a581385] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [feead7e] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + ## 9.11.0 ### Patch Changes diff --git a/packages/types/package.json b/packages/types/package.json index 92ec854657..ebd5323362 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/types", - "version": "9.11.0", + "version": "10.0.0", "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 e05bbdad4d..8cc638a977 100644 --- a/packages/verify/CHANGELOG.md +++ b/packages/verify/CHANGELOG.md @@ -1,5 +1,64 @@ # @objectstack/verify +## 10.0.0 + +### Minor Changes + +- ee86099: ADR-0060 P1 — add the reusable conformance-ledger helper. `@objectstack/verify` + now exports `checkLedger(rows, opts)` + `ConformanceRow`: the static complement to + its runtime harness, encoding the shared invariants the platform had hand-written + twice (unique ids / valid state / enforced-has-site / experimental·removed-has-note + / proof-file-exists / high-risk-has-proof / exactly-one-cover / discover ratchet). + The ADR-0056 authz and ADR-0058 expression ledgers are refactored onto it. + +### Patch Changes + +- 0feea92: fix(verify): skip read-only federated (external) objects in CRUD verification. + + `objectstack verify` probe-inserts a record into every object. A federated object + on an external datasource is read-only unless BOTH the datasource and the object + opt into writes (ADR-0015 write gate), so that insert is correctly rejected — + which `verify` was reporting as a `create-failed` runtime failure. `deriveCrudCases` + now marks such objects `blocked` (skipped), matching the write gate's double + opt-in rule, so the dogfood gate stays honest while supporting external datasource + example apps. + +- Updated dependencies [d7ff626] +- Updated dependencies [2a1b16b] +- Updated dependencies [2256e93] +- Updated dependencies [30c0313] +- Updated dependencies [e16f2a8] +- Updated dependencies [cfd86ce] +- Updated dependencies [e411a82] +- Updated dependencies [70609af] +- Updated dependencies [3187952] +- Updated dependencies [a581385] +- Updated dependencies [47d978a] +- Updated dependencies [d5f6d29] +- Updated dependencies [220ce5b] +- Updated dependencies [3efe334] +- Updated dependencies [3754f80] +- Updated dependencies [ce13bb8] +- Updated dependencies [feead7e] +- Updated dependencies [00c32f2] +- Updated dependencies [6ca20b3] +- Updated dependencies [5f875fe] +- Updated dependencies [b469950] + - @objectstack/spec@10.0.0 + - @objectstack/objectql@10.0.0 + - @objectstack/rest@10.0.0 + - @objectstack/plugin-sharing@10.0.0 + - @objectstack/plugin-security@10.0.0 + - @objectstack/runtime@10.0.0 + - @objectstack/service-analytics@10.0.0 + - @objectstack/core@10.0.0 + - @objectstack/plugin-hono-server@10.0.0 + - @objectstack/driver-sqlite-wasm@10.0.0 + - @objectstack/plugin-auth@10.0.0 + - @objectstack/plugin-org-scoping@10.0.0 + - @objectstack/service-automation@10.0.0 + - @objectstack/service-settings@10.0.0 + ## 9.11.0 ### Minor Changes diff --git a/packages/verify/package.json b/packages/verify/package.json index 14fde0d6d3..30ddda8f09 100644 --- a/packages/verify/package.json +++ b/packages/verify/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/verify", - "version": "9.11.0", + "version": "10.0.0", "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/packages/vscode-objectstack/CHANGELOG.md b/packages/vscode-objectstack/CHANGELOG.md index ead6c5446d..820445a151 100644 --- a/packages/vscode-objectstack/CHANGELOG.md +++ b/packages/vscode-objectstack/CHANGELOG.md @@ -1,5 +1,7 @@ # objectstack-vscode +## 10.0.0 + ## 9.11.0 ## 9.10.0 diff --git a/packages/vscode-objectstack/package.json b/packages/vscode-objectstack/package.json index 5de337f435..e2329f0275 100644 --- a/packages/vscode-objectstack/package.json +++ b/packages/vscode-objectstack/package.json @@ -2,7 +2,7 @@ "name": "objectstack-vscode", "displayName": "ObjectStack", "description": "ObjectStack Protocol — Autocomplete, validation, and inline diagnostics for .object.ts, .view.ts, and objectstack.config.ts files", - "version": "9.11.0", + "version": "10.0.0", "publisher": "objectstack", "license": "Apache-2.0", "repository": {