diff --git a/.changeset/pre.json b/.changeset/pre.json index 78a71adc87..a787163dab 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -389,6 +389,7 @@ "cold-boot-flow-bind-read-decorations", "compose-stacks-no-silent-key-loss", "config-resolution-email-example", + "connector-action-declared-effect", "connector-authoring-guide", "connector-degrade-cause", "connector-descriptors-meet-their-contract", @@ -401,6 +402,7 @@ "console-4a4829d0ef39", "console-785b8a5d432c", "console-7d9734d5e321", + "console-7dfbeb704e1e", "console-96ee72e85439", "console-a136322f8723", "console-bebaebd39ace-backfill", @@ -1067,6 +1069,7 @@ "rule-compilability-publish-gate", "rule-id-barrel-export-gap", "run-summary-uncountable-effects", + "runas-system-stamping", "runner-setters-first-wins", "runtime-action-execution-module", "runtime-actions-mcp-extraction", @@ -1185,6 +1188,7 @@ "spec-generated-merge-driver", "spec-offline-surface-anchor", "spec-property-retirement-skill", + "spec-type-alias-parsed-convention", "spec-vitest-testtimeout", "sql-driver-boolean-identity", "sql-driver-dialect-connect-timeout", @@ -1214,14 +1218,17 @@ "strict-automation-control-flow-state-machine", "strict-object-registered-types", "strict-readonly-writes", + "strictness-ledger-covered-verdict", "strictness-ledger-gate", "strictness-ledger-numbers-prose-split", "strictness-ledger-recursive-coverage", "strictness-ledger-remeasure", "strip-read-decorations-on-save", "studio-strict", + "subscribe-metadata-event-subject", "summary-count-zero-on-parent-insert", "summary-index-registry-revision", + "summary-null-backfill-migration", "sweep-close-out", "sys-comment-record-level-authorization", "sys-comment-retire-visibility-reply-count", @@ -1230,6 +1237,7 @@ "sys-migration-ledger-platform-infra", "sys-secret-store-platform-infra", "sys-view-definition-default-open", + "system-data-import-opt-in", "system-field-name-injected-columns", "temporal-conformance-driver-axis", "temporal-conformance-matrix", @@ -1256,7 +1264,9 @@ "tool-inert-keys-removed", "tool-requires-confirmation-not-enforced", "tool-requires-confirmation-removed", + "transaction-contract-require-and-owned", "transaction-degrade-and-cross-datasource-observability", + "transaction-same-origin-audit-carve-out", "translation-groups-strict", "translation-refs-container-default-form-sections", "trigger-registry-connector-cluster-removed", diff --git a/examples/app-crm/CHANGELOG.md b/examples/app-crm/CHANGELOG.md index 828a19bbf4..9f22465496 100644 --- a/examples/app-crm/CHANGELOG.md +++ b/examples/app-crm/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/example-crm +## 4.0.92-rc.4 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/runtime@17.0.0-rc.5 + ## 4.0.92-rc.3 ### Patch Changes diff --git a/examples/app-crm/package.json b/examples/app-crm/package.json index d91d200577..bb3870cd9e 100644 --- a/examples/app-crm/package.json +++ b/examples/app-crm/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/example-crm", - "version": "4.0.92-rc.3", + "version": "4.0.92-rc.4", "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 ec8117da13..b78f01e96c 100644 --- a/examples/app-showcase/CHANGELOG.md +++ b/examples/app-showcase/CHANGELOG.md @@ -1,5 +1,25 @@ # @objectstack/example-showcase +## 0.3.14-rc.4 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/cloud-connection@17.0.0-rc.5 + - @objectstack/connector-mcp@17.0.0-rc.5 + - @objectstack/connector-openapi@17.0.0-rc.5 + - @objectstack/connector-rest@17.0.0-rc.5 + - @objectstack/connector-slack@17.0.0-rc.5 + - @objectstack/driver-sql@17.0.0-rc.5 + - @objectstack/runtime@17.0.0-rc.5 + - @objectstack/service-datasource@17.0.0-rc.5 + ## 0.3.14-rc.3 ### Patch Changes diff --git a/examples/app-showcase/package.json b/examples/app-showcase/package.json index 375e8e7c6d..44b145cfe0 100644 --- a/examples/app-showcase/package.json +++ b/examples/app-showcase/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/example-showcase", - "version": "0.3.14-rc.3", + "version": "0.3.14-rc.4", "description": "Kitchen-sink showcase workspace — exercises every metadata type, every view type, every chart type, and the major end-to-end capability chains (security, automation, analytics). Built for demonstration, debugging, and coverage-driven verification.", "license": "Apache-2.0", "private": true, diff --git a/examples/app-todo/CHANGELOG.md b/examples/app-todo/CHANGELOG.md index 1b10b22cc2..1cef736502 100644 --- a/examples/app-todo/CHANGELOG.md +++ b/examples/app-todo/CHANGELOG.md @@ -1,5 +1,27 @@ # @objectstack/example-todo +## 4.0.92-rc.4 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ee3bde1] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] +- Updated dependencies [148d451] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/client@17.0.0-rc.5 + - @objectstack/objectql@17.0.0-rc.5 + - @objectstack/driver-sqlite-wasm@17.0.0-rc.5 + - @objectstack/mcp@17.0.0-rc.5 + - @objectstack/metadata@17.0.0-rc.5 + - @objectstack/knowledge-memory@17.0.0-rc.5 + - @objectstack/runtime@17.0.0-rc.5 + - @objectstack/service-knowledge@17.0.0-rc.5 + ## 4.0.92-rc.3 ### Patch Changes diff --git a/examples/app-todo/package.json b/examples/app-todo/package.json index 7eff4ded9f..aa24f5cae5 100644 --- a/examples/app-todo/package.json +++ b/examples/app-todo/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/example-todo", - "version": "4.0.92-rc.3", + "version": "4.0.92-rc.4", "description": "Example Todo App using ObjectStack Protocol", "license": "Apache-2.0", "private": true, diff --git a/examples/embed-objectql/CHANGELOG.md b/examples/embed-objectql/CHANGELOG.md index b0e1a9e308..dc1a73e407 100644 --- a/examples/embed-objectql/CHANGELOG.md +++ b/examples/embed-objectql/CHANGELOG.md @@ -1,5 +1,21 @@ # @objectstack/example-embed-objectql +## 0.0.32-rc.4 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ee3bde1] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] +- Updated dependencies [148d451] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/objectql@17.0.0-rc.5 + - @objectstack/driver-memory@17.0.0-rc.5 + ## 0.0.32-rc.3 ### Patch Changes diff --git a/examples/embed-objectql/package.json b/examples/embed-objectql/package.json index a09e0e5f8c..2456c4b0bf 100644 --- a/examples/embed-objectql/package.json +++ b/examples/embed-objectql/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/example-embed-objectql", - "version": "0.0.32-rc.3", + "version": "0.0.32-rc.4", "private": true, "description": "Embed the ObjectQL engine as a plain library via @objectstack/objectql/core — no kernel, no plugins, no metadata protocol (ADR-0076).", "type": "module", diff --git a/packages/adapters/hono/CHANGELOG.md b/packages/adapters/hono/CHANGELOG.md index b6b75ffd9c..61f4fa4af8 100644 --- a/packages/adapters/hono/CHANGELOG.md +++ b/packages/adapters/hono/CHANGELOG.md @@ -1,5 +1,13 @@ # @objectstack/hono +## 17.0.0-rc.5 + +### Patch Changes + +- @objectstack/plugin-hono-server@17.0.0-rc.5 +- @objectstack/runtime@17.0.0-rc.5 +- @objectstack/types@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/adapters/hono/package.json b/packages/adapters/hono/package.json index d6c1cfe9ef..a136753e39 100644 --- a/packages/adapters/hono/package.json +++ b/packages/adapters/hono/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/hono", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/apps/account/CHANGELOG.md b/packages/apps/account/CHANGELOG.md index 471a56e9c3..37f80b891f 100644 --- a/packages/apps/account/CHANGELOG.md +++ b/packages/apps/account/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/account +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/platform-objects@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/apps/account/package.json b/packages/apps/account/package.json index 9051960598..b17b4ee310 100644 --- a/packages/apps/account/package.json +++ b/packages/apps/account/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/account", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "ObjectStack Account — the end-user account/self-service console app, packaged as its own ObjectStack app package (ADR-0048: one app per package).", "main": "dist/index.js", diff --git a/packages/apps/setup/CHANGELOG.md b/packages/apps/setup/CHANGELOG.md index 03fb082f3b..ff5587556c 100644 --- a/packages/apps/setup/CHANGELOG.md +++ b/packages/apps/setup/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/setup +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/platform-objects@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/apps/setup/package.json b/packages/apps/setup/package.json index 4a0ca4aa59..d616507846 100644 --- a/packages/apps/setup/package.json +++ b/packages/apps/setup/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/setup", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "ObjectStack Setup — the platform administration app, packaged as its own ObjectStack app package (ADR-0048: one app per package).", "main": "dist/index.js", diff --git a/packages/apps/studio/CHANGELOG.md b/packages/apps/studio/CHANGELOG.md index 91a889d056..f8c9b0242b 100644 --- a/packages/apps/studio/CHANGELOG.md +++ b/packages/apps/studio/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/studio +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/platform-objects@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/apps/studio/package.json b/packages/apps/studio/package.json index ad0081b01e..888071fdc4 100644 --- a/packages/apps/studio/package.json +++ b/packages/apps/studio/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/studio", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "ObjectStack Studio — the metadata builder app, packaged as its own ObjectStack app package (ADR-0048: one app per package).", "main": "dist/index.js", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 506076a48d..25c94d1bb9 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,115 @@ # @objectstack/cli +## 17.0.0-rc.5 + +### Patch Changes + +- ee3bde1: feat(objectql,cli): `os migrate summary-nulls` backfills roll-up count/sum columns left NULL by pre-seed inserts (#6063) + + #5749 / PR #6013 fixed the **producer**: a parent row created from that release + on has its `count` / `sum` roll-up columns seeded to the empty-set value at + insert, so `filter ["task_count", "=", 0]`, sorting, `GROUP BY` and formulas + over the column stop silently dropping parents that never had a child. + + Being a create-time fix, it reaches **new rows only**. A database upgraded **in + place** still holds parents stored before the upgrade, and the recompute that + would otherwise correct them runs only when one of their **children** is + written — so those rows keep their `NULL` indefinitely and keep disappearing + from the same queries. A freshly seeded deployment is correct; an upgraded one + is not. This release ships the other half: a one-off, explicit data migration. + + ```bash + os migrate summary-nulls # dry run: full report, writes nothing + os migrate summary-nulls --apply # recompute and write (prompts) + os migrate summary-nulls --apply --yes --json # CI / scripts + os migrate summary-nulls --object project # restrict to one object (repeatable) + ``` + + **Every NULL row is recomputed, never blanket-set to 0.** A pre-upgrade parent + that _does_ have children is `NULL` too — nothing ever recomputed it — and its + correct value is the real aggregate. `UPDATE ... SET col = 0 WHERE col IS NULL` + would replace a visibly-missing value with a confidently-wrong one, which the + next child write would then silently change back. The run computes each value + through the same code path the engine's own child-write recompute uses + (`aggregateSummaryValue`), over the descriptors the engine itself maintains, so + a backfilled column and a recomputed one can never mean different things. + + **`min` / `max` / `avg` are never touched.** They are undefined on an empty set + — which is why the insert-time seed leaves them `null` — so a stored `null` + there is the correct reading of "no child rows", not a defect. The report names + them as deliberately skipped rather than omitting them silently. + + Other properties: dry run by default and a dry run writes nothing at all; + idempotent, so re-running is safe and a clean report is the operator's own + verification; driver-agnostic (it reads values and tests them in JS rather than + pushing a null predicate down, since null-predicate compilation is precisely + where drivers diverge); one row's failure is recorded and the run carries on. + It records no deployment flag — unlike its `os migrate` siblings, nothing is + gated on it having run. + + Never running it is safe in the sense that nothing breaks _further_: the + affected rows simply stay missing from `= 0` filters until a child of theirs is + written. + +- Updated dependencies [e8f8f6c] +- Updated dependencies [72b55d3] +- Updated dependencies [bdc8e70] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ee3bde1] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] +- Updated dependencies [148d451] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/service-automation@17.0.0-rc.5 + - @objectstack/console@17.0.0-rc.5 + - @objectstack/client@17.0.0-rc.5 + - @objectstack/objectql@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/account@17.0.0-rc.5 + - @objectstack/setup@17.0.0-rc.5 + - @objectstack/cloud-connection@17.0.0-rc.5 + - @objectstack/driver-memory@17.0.0-rc.5 + - @objectstack/driver-mongodb@17.0.0-rc.5 + - @objectstack/driver-sql@17.0.0-rc.5 + - @objectstack/driver-sqlite-wasm@17.0.0-rc.5 + - @objectstack/formula@17.0.0-rc.5 + - @objectstack/lint@17.0.0-rc.5 + - @objectstack/mcp@17.0.0-rc.5 + - @objectstack/metadata@17.0.0-rc.5 + - @objectstack/metadata-protocol@17.0.0-rc.5 + - @objectstack/observability@17.0.0-rc.5 + - @objectstack/platform-objects@17.0.0-rc.5 + - @objectstack/plugin-approvals@17.0.0-rc.5 + - @objectstack/plugin-audit@17.0.0-rc.5 + - @objectstack/plugin-auth@17.0.0-rc.5 + - @objectstack/plugin-email@17.0.0-rc.5 + - @objectstack/plugin-hono-server@17.0.0-rc.5 + - @objectstack/plugin-reports@17.0.0-rc.5 + - @objectstack/plugin-security@17.0.0-rc.5 + - @objectstack/plugin-sharing@17.0.0-rc.5 + - @objectstack/plugin-webhooks@17.0.0-rc.5 + - @objectstack/rest@17.0.0-rc.5 + - @objectstack/runtime@17.0.0-rc.5 + - @objectstack/service-analytics@17.0.0-rc.5 + - @objectstack/service-cache@17.0.0-rc.5 + - @objectstack/service-datasource@17.0.0-rc.5 + - @objectstack/service-job@17.0.0-rc.5 + - @objectstack/service-messaging@17.0.0-rc.5 + - @objectstack/service-package@17.0.0-rc.5 + - @objectstack/service-queue@17.0.0-rc.5 + - @objectstack/service-realtime@17.0.0-rc.5 + - @objectstack/service-settings@17.0.0-rc.5 + - @objectstack/service-sms@17.0.0-rc.5 + - @objectstack/service-storage@17.0.0-rc.5 + - @objectstack/trigger-api@17.0.0-rc.5 + - @objectstack/trigger-record-change@17.0.0-rc.5 + - @objectstack/trigger-schedule@17.0.0-rc.5 + - @objectstack/types@17.0.0-rc.5 + - @objectstack/verify@17.0.0-rc.5 + - @objectstack/plugin-pinyin-search@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Major Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 4a6de3a445..92fec90797 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/cli", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "description": "Command Line Interface for ObjectStack Protocol", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/client-react/CHANGELOG.md b/packages/client-react/CHANGELOG.md index 7a405e49ef..9d5367d08b 100644 --- a/packages/client-react/CHANGELOG.md +++ b/packages/client-react/CHANGELOG.md @@ -1,5 +1,72 @@ # @objectstack/client-react +## 17.0.0-rc.5 + +### Major Changes + +- def5919: refactor(client)!: `subscribeMetadata` 的 `type` 收窄为 `MetadataEventSubject`,订阅一个合同上永远不会来的事件改为编译报错 (#4627) + + `MetadataEventType` 是一个封闭枚举:13 个 metadata 类型 × 3 个动作。#4602 已经把生产端钉成 declared = enforced —— 枚举外的类型(`translation`、`datasource`、`page`、`hook`、`trigger`、`validation` 等,全都是 `DEFAULT_METADATA_TYPE_REGISTRY` 里可注册的真实类型)**不发布**任何 realtime 事件,因为不存在能合法交付给 `(event: MetadataEvent) => void` 回调的事件形状。 + + 消费端却一直是宽的 `string`。于是 `client.events.subscribeMetadata('translation', cb)` 编译全绿、运行永盲:回调永远不会被调用,而类型系统一个字都没说。这正是 AI 写订阅代码最容易踩的形状 —— 它看起来订阅上了。 + + 本次把消费端也钉上,两端对齐后这种代码写不出来。 + + **新增导出**:`@objectstack/spec/api` 的 `MetadataEventSubject` —— `metadata.{type}.{action}` 的 `{type}` 半边,`'object' | 'field' | 'view' | …`。它是从 `MetadataEventType` **派生**的(模板字面量 + 分发式条件类型),不是在旁边重抄一份,所以两者不可能各说各话:枚举加一个成员,这个联合自动跟着长。`check:api-surface` 记录为 0 breaking / 1 added。 + + **签名收窄**(三处,全部只是把 `string` 换成这个联合): + + - `@objectstack/client` 的 `RealtimeAPI.subscribeMetadata(type, …)` + - `@objectstack/client-react` 的 `useMetadataSubscription(type, …)` + - `@objectstack/client-react` 的 `useMetadataSubscriptionCallback(type, …)` + + **FROM → TO —— 原来传 `string` 的代码怎么改** + + 枚举内的字面量一个字都不用动,本仓 6 处调用点(`'object'`)零迁移: + + ```ts + // 照常编译,没有变化 + client.events.subscribeMetadata("object", onEvent); + useMetadataSubscription("view"); + ``` + + 真正被拒绝的只有两种写法,各有各的一行修复: + + ```ts + // FROM —— 变量声明成了宽的 string + const type: string = route.params.metaType; + client.events.subscribeMetadata(type, onEvent); // TS2345 + + // TO —— 把变量(或 state、或路由参数)的类型改成这个联合 + import type { MetadataEventSubject } from "@objectstack/spec/api"; + const type: MetadataEventSubject = "object"; + client.events.subscribeMetadata(type, onEvent); + ``` + + ```ts + // FROM —— 订阅一个没有 realtime 合同的类型 + client.events.subscribeMetadata("translation", onEvent); // TS2345 + + // TO —— 删掉它。这段代码从 #4602 起就收不到任何事件, + // 编译器现在说的是它一直以来的运行时事实,不是新增的限制。 + ``` + + 编译器会把每一处指出来,错误码都是 **TS2345**(`Argument of type '"translation"' is not assignable to parameter of type 'MetadataEventSubject'`)。**运行时行为零变化** —— 被拒绝的调用本来就收不到事件,标 major 是因为这是源码级破坏性变更(#5181 的同一条先例:源码级破坏、运行时不变,仍走 major)。 + + **本次不做、也不预答的**:哪些可注册类型「应该」有 realtime 事件,是 #4627 的轴 2 —— 一个由真实需求驱动的产品覆盖面问题(例如 #4426 的 flow/workflow i18n 若落地会把 `translation` 推上来)。枚举没有动一个成员。派生关系保证了这件事将来只需要改一处:枚举加三个名字,两端同时跟上。 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/client@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Major Changes diff --git a/packages/client-react/package.json b/packages/client-react/package.json index 46bbbfbe6b..b484b2d31d 100644 --- a/packages/client-react/package.json +++ b/packages/client-react/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/client-react", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "React hooks for ObjectStack Client SDK", "main": "dist/index.js", diff --git a/packages/client/CHANGELOG.md b/packages/client/CHANGELOG.md index f2ef41f7b6..c547a17fe1 100644 --- a/packages/client/CHANGELOG.md +++ b/packages/client/CHANGELOG.md @@ -1,5 +1,71 @@ # @objectstack/client +## 17.0.0-rc.5 + +### Major Changes + +- def5919: refactor(client)!: `subscribeMetadata` 的 `type` 收窄为 `MetadataEventSubject`,订阅一个合同上永远不会来的事件改为编译报错 (#4627) + + `MetadataEventType` 是一个封闭枚举:13 个 metadata 类型 × 3 个动作。#4602 已经把生产端钉成 declared = enforced —— 枚举外的类型(`translation`、`datasource`、`page`、`hook`、`trigger`、`validation` 等,全都是 `DEFAULT_METADATA_TYPE_REGISTRY` 里可注册的真实类型)**不发布**任何 realtime 事件,因为不存在能合法交付给 `(event: MetadataEvent) => void` 回调的事件形状。 + + 消费端却一直是宽的 `string`。于是 `client.events.subscribeMetadata('translation', cb)` 编译全绿、运行永盲:回调永远不会被调用,而类型系统一个字都没说。这正是 AI 写订阅代码最容易踩的形状 —— 它看起来订阅上了。 + + 本次把消费端也钉上,两端对齐后这种代码写不出来。 + + **新增导出**:`@objectstack/spec/api` 的 `MetadataEventSubject` —— `metadata.{type}.{action}` 的 `{type}` 半边,`'object' | 'field' | 'view' | …`。它是从 `MetadataEventType` **派生**的(模板字面量 + 分发式条件类型),不是在旁边重抄一份,所以两者不可能各说各话:枚举加一个成员,这个联合自动跟着长。`check:api-surface` 记录为 0 breaking / 1 added。 + + **签名收窄**(三处,全部只是把 `string` 换成这个联合): + + - `@objectstack/client` 的 `RealtimeAPI.subscribeMetadata(type, …)` + - `@objectstack/client-react` 的 `useMetadataSubscription(type, …)` + - `@objectstack/client-react` 的 `useMetadataSubscriptionCallback(type, …)` + + **FROM → TO —— 原来传 `string` 的代码怎么改** + + 枚举内的字面量一个字都不用动,本仓 6 处调用点(`'object'`)零迁移: + + ```ts + // 照常编译,没有变化 + client.events.subscribeMetadata("object", onEvent); + useMetadataSubscription("view"); + ``` + + 真正被拒绝的只有两种写法,各有各的一行修复: + + ```ts + // FROM —— 变量声明成了宽的 string + const type: string = route.params.metaType; + client.events.subscribeMetadata(type, onEvent); // TS2345 + + // TO —— 把变量(或 state、或路由参数)的类型改成这个联合 + import type { MetadataEventSubject } from "@objectstack/spec/api"; + const type: MetadataEventSubject = "object"; + client.events.subscribeMetadata(type, onEvent); + ``` + + ```ts + // FROM —— 订阅一个没有 realtime 合同的类型 + client.events.subscribeMetadata("translation", onEvent); // TS2345 + + // TO —— 删掉它。这段代码从 #4602 起就收不到任何事件, + // 编译器现在说的是它一直以来的运行时事实,不是新增的限制。 + ``` + + 编译器会把每一处指出来,错误码都是 **TS2345**(`Argument of type '"translation"' is not assignable to parameter of type 'MetadataEventSubject'`)。**运行时行为零变化** —— 被拒绝的调用本来就收不到事件,标 major 是因为这是源码级破坏性变更(#5181 的同一条先例:源码级破坏、运行时不变,仍走 major)。 + + **本次不做、也不预答的**:哪些可注册类型「应该」有 realtime 事件,是 #4627 的轴 2 —— 一个由真实需求驱动的产品覆盖面问题(例如 #4426 的 flow/workflow i18n 若落地会把 `translation` 推上来)。枚举没有动一个成员。派生关系保证了这件事将来只需要改一处:枚举加三个名字,两端同时跟上。 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Major Changes diff --git a/packages/client/package.json b/packages/client/package.json index 137d369f4e..e006d0387e 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/client", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Official Client SDK for ObjectStack Protocol", "main": "dist/index.js", diff --git a/packages/cloud-connection/CHANGELOG.md b/packages/cloud-connection/CHANGELOG.md index 1b7095f1b2..686f66f9a0 100644 --- a/packages/cloud-connection/CHANGELOG.md +++ b/packages/cloud-connection/CHANGELOG.md @@ -1,5 +1,20 @@ # @objectstack/cloud-connection +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/runtime@17.0.0-rc.5 + - @objectstack/types@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Minor Changes diff --git a/packages/cloud-connection/package.json b/packages/cloud-connection/package.json index 56dd71daf8..db1f20c9bf 100644 --- a/packages/cloud-connection/package.json +++ b/packages/cloud-connection/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/cloud-connection", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Runtime-side client for an ObjectStack cloud control plane — marketplace browse proxy, install-local, device-code binding, org catalog and installed views, and the /api/v1/runtime/config discovery endpoint. Open mechanism (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 d81c4843fa..bfbc1c48f2 100644 --- a/packages/connectors/connector-mcp/CHANGELOG.md +++ b/packages/connectors/connector-mcp/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/connector-mcp +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/connectors/connector-mcp/package.json b/packages/connectors/connector-mcp/package.json index 0d64d1ad19..5d799fcace 100644 --- a/packages/connectors/connector-mcp/package.json +++ b/packages/connectors/connector-mcp/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-mcp", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Model Context Protocol (MCP) connector for ObjectStack — a generic adapter that turns any MCP server's tools into a connector's actions on the automation engine's connector registry (ADR-0024).", "main": "dist/index.js", diff --git a/packages/connectors/connector-openapi/CHANGELOG.md b/packages/connectors/connector-openapi/CHANGELOG.md index 3ec8761426..12c7904ac9 100644 --- a/packages/connectors/connector-openapi/CHANGELOG.md +++ b/packages/connectors/connector-openapi/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/connector-openapi +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/connectors/connector-openapi/package.json b/packages/connectors/connector-openapi/package.json index b4b724f2ac..873739022a 100644 --- a/packages/connectors/connector-openapi/package.json +++ b/packages/connectors/connector-openapi/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-openapi", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "OpenAPI 3.x connector generator for ObjectStack — turns a declarative OpenAPI document into connector actions on the automation engine's registry, with a self-contained static-auth HTTP transport (ADR-0023).", "main": "dist/index.js", diff --git a/packages/connectors/connector-rest/CHANGELOG.md b/packages/connectors/connector-rest/CHANGELOG.md index 43e2c04e91..406af2b249 100644 --- a/packages/connectors/connector-rest/CHANGELOG.md +++ b/packages/connectors/connector-rest/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/connector-rest +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/connectors/connector-rest/package.json b/packages/connectors/connector-rest/package.json index c7552f468b..05849e2a8e 100644 --- a/packages/connectors/connector-rest/package.json +++ b/packages/connectors/connector-rest/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-rest", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Generic REST connector for ObjectStack — the reference concrete connector that registers a `request` action on the automation engine's connector registry (ADR-0018 §Addendum).", "main": "dist/index.js", diff --git a/packages/connectors/connector-slack/CHANGELOG.md b/packages/connectors/connector-slack/CHANGELOG.md index 4031ba9bf7..ca53b14b57 100644 --- a/packages/connectors/connector-slack/CHANGELOG.md +++ b/packages/connectors/connector-slack/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/connector-slack +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/connectors/connector-slack/package.json b/packages/connectors/connector-slack/package.json index b50b73c5dc..cb76b9a6ed 100644 --- a/packages/connectors/connector-slack/package.json +++ b/packages/connectors/connector-slack/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-slack", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Slack Web API connector for ObjectStack — registers `chat.postMessage` / `chat.update` / `call` actions on the automation engine's connector registry (ADR-0018 §Addendum, ADR-0022).", "main": "dist/index.js", diff --git a/packages/console/CHANGELOG.md b/packages/console/CHANGELOG.md index 7486026ccf..4c7a06af20 100644 --- a/packages/console/CHANGELOG.md +++ b/packages/console/CHANGELOG.md @@ -1,5 +1,25 @@ # @objectstack/console +## 17.0.0-rc.5 + +### Patch Changes + +- 72b55d3: Console (objectui) refreshed to `7dfbeb704e1e`. Frontend changes in this range: + + Derived from the changesets objectui declared over the range — 9 releasing of 9 changesets added across 28 non-merge commits; omitted: 20 commits carrying no changeset (they ship no package code). + + - **patch** — The bulk selection bar now applies the ADR-0066 D4 `requiredPermissions` capability gate, and short-circuits a boolean `visible` instead of treating it as a broken expression (#34… (objectui `d915c47b3`) + - **patch** — Relation fields (`lookup` / `master_detail` / `user` / `tree`) are now usable in action and conditional-formatting predicates: they bind as the stored foreign key on every surface… (objectui `d915c47b3`) + - **patch** — Conditional-rule predicates that fail to evaluate are no longer silent (objectstack#5149, appeal 2). `evalFieldPredicate` — the canonical funnel for `visibleWhen` / `readonlyWhen`… (objectui `a4cff5bd1`) + - **patch** — `useAppContextSelectors` now derives each context selector's URL scope key from its own `id` instead of hardcoding the literal `package` query key. `App.contextSelectors` is an ar… (objectui `f59406d4e`) + - **patch** — `toPredicateInput` is now re-exported from `@object-ui/core` instead of being reimplemented in `@object-ui/react`. Behaviour is byte-for-byte identical — the renderer-side copy in… (objectui `175bd79d8`) + - **patch** — The group-tenancy write-target badge is now translated in all ten locales (objectui#3517) (objectui `7e2406abf`) + - **patch** — Give `CommentThread`'s `+` reaction picker a real accessible name (objectui#3478) (objectui `d0d71df0e`) + - **patch** — `RecordFormPage` no longer passes an inline `defaultValue` to the seven `t()` lookups whose keys are defined in all ten locale packs (`form.createTitle`, `form.editTitle`, `form.c… (objectui `c0c771c2f`) + - **patch** — `createSafeTranslation`'s no-provider fallback interpolation now replaces **all** occurrences of each placeholder, matching i18next semantics on the provider path. (objectui `a6ec93d24`) + + objectui range: `f995a452d2ca...7dfbeb704e1e` + ## 17.0.0-rc.4 ### Minor Changes diff --git a/packages/console/package.json b/packages/console/package.json index 4da08cae69..1100dfd3cd 100644 --- a/packages/console/package.json +++ b/packages/console/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/console", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "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/objectstack/tree/main/packages/console", diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 0e1071dbcc..811afc209e 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,56 @@ # @objectstack/core +## 17.0.0-rc.5 + +### Minor Changes + +- 1363084: feat(spec,objectql): `engine.transaction` 契约收紧第一批 —— `opts.require` fail-closed 与 `owned` 信号 (#5696) + + `IObjectQLEngine.transaction` 的声明面(`packages/spec/src/contracts/objectql-engine.ts`, + ADR-0119 D1)此前把「默认驱动之外的对象写在事务外」与「驱动没有 `beginTransaction` + 时静默降级」写成**声明语义**的一部分。#4619 把这两条降级变得可观测(PR #5724),本次 + 把其中两条收紧为调用方可选的契约,并同步修订 TSDoc 的事实性偏差。 + + **新增(可选,默认行为完全不变):** + + - `transaction(cb, base, { require: true })` —— 驱动没有 `beginTransaction` 时 + **抛 `TransactionUnsupportedError`(`code: 'ERR_TRANSACTION_UNSUPPORTED'`)**, + 而不是静默降级成「无事务、无回滚」。在回调运行**之前**拒绝,所以调用方收到错误时 + 一行都还没写。这是把 `batchData` 的 atomic 门(ADR-0119 D4)泛化成通用能力: + 只为「开事务的唯一理由就是回滚」的调用方而设,不传 `require` 的行为一字未变 + (仍然降级 + warn-once)。 + - 回调的**第二个参数** `{ owned: boolean }` —— `true` 表示本次调用开启了事务并拥有 + 提交/回滚,`false` 表示它 **join** 了外层已开的 ambient 事务(ADR-0067 D2), + 或者处在降级路径上(那里根本没有事务可拥有)。join 语义本身正确且保留;缺的是 + 调用方**无从分辨**,而「整体一起回滚」这类担保只在 owned 时成立。单参数回调不受影响。 + + 两点在 `ctx.api.transaction`(`ScopedContext.transaction`,沙箱 hook/action 体)上 + 同样生效 —— 同一个原语的第二份实现不该变成第二种方言。 + + **契约文本修订:** transaction 的 TSDoc 原先写「路由到别处的对象在事务**外**写入」, + 实测不符 —— 引擎无条件把 ambient 事务句柄穿给了目标驱动,语句在**错误的连接**上执行 + (#5351 在真 SQL driver 上实测为 `no such table`)。TSDoc 已按实测改写,并声明了随后 + 落地的两条语义:业务写跨驱动**响亮拒绝**、系统账本(`lifecycle.class` 为 + `audit`/`telemetry`/`event`)**移出事务执行**。 + + **类型面:** `@objectstack/core` 的 `EngineWithTransaction` 从「手抄签名」改为 + `transaction: IObjectQLEngine['transaction']`,窄接口可以窄,但不能与真签名漂移。 + 新导出 `EngineTransactionOptions` / `EngineTransactionInfo`(spec `contracts` 命名空间, + 经 `@objectstack/core` 转出)。 + + 升级须知:无破坏性变更。既有调用点全部保持原行为;要 fail-closed 的调用方显式传 + `{ require: true }`。 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Major Changes diff --git a/packages/core/package.json b/packages/core/package.json index 0af348ec0c..aeee6e813c 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/core", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Microkernel Core for ObjectStack", "type": "module", diff --git a/packages/create-objectstack/CHANGELOG.md b/packages/create-objectstack/CHANGELOG.md index 3c2001c7e2..97c93bb0d6 100644 --- a/packages/create-objectstack/CHANGELOG.md +++ b/packages/create-objectstack/CHANGELOG.md @@ -1,5 +1,7 @@ # create-objectstack +## 17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/create-objectstack/package.json b/packages/create-objectstack/package.json index 209b1f1ad8..52576ac130 100644 --- a/packages/create-objectstack/package.json +++ b/packages/create-objectstack/package.json @@ -1,6 +1,6 @@ { "name": "create-objectstack", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "description": "Create a new ObjectStack project — npx create-objectstack", "bin": { "create-objectstack": "./bin/create-objectstack.js" diff --git a/packages/drivers/driver-memory/CHANGELOG.md b/packages/drivers/driver-memory/CHANGELOG.md index 4697d7349e..125bfc5650 100644 --- a/packages/drivers/driver-memory/CHANGELOG.md +++ b/packages/drivers/driver-memory/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/driver-memory +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Minor Changes diff --git a/packages/drivers/driver-memory/package.json b/packages/drivers/driver-memory/package.json index 1b5387aa6f..a2bbd680fe 100644 --- a/packages/drivers/driver-memory/package.json +++ b/packages/drivers/driver-memory/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-memory", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "In-Memory Driver for ObjectStack (Reference Implementation)", "main": "dist/index.js", diff --git a/packages/drivers/driver-mongodb/CHANGELOG.md b/packages/drivers/driver-mongodb/CHANGELOG.md index d8465b97ca..232a600c02 100644 --- a/packages/drivers/driver-mongodb/CHANGELOG.md +++ b/packages/drivers/driver-mongodb/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/driver-mongodb +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/types@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Minor Changes diff --git a/packages/drivers/driver-mongodb/package.json b/packages/drivers/driver-mongodb/package.json index 068c0271e2..a3da81873f 100644 --- a/packages/drivers/driver-mongodb/package.json +++ b/packages/drivers/driver-mongodb/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-mongodb", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "MongoDB Driver for ObjectStack - Native document database driver via official mongodb client", "main": "dist/index.js", diff --git a/packages/drivers/driver-sql/CHANGELOG.md b/packages/drivers/driver-sql/CHANGELOG.md index 9738c51ca4..d894125a48 100644 --- a/packages/drivers/driver-sql/CHANGELOG.md +++ b/packages/drivers/driver-sql/CHANGELOG.md @@ -1,5 +1,20 @@ # @objectstack/driver-sql +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/observability@17.0.0-rc.5 + - @objectstack/types@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Minor Changes diff --git a/packages/drivers/driver-sql/package.json b/packages/drivers/driver-sql/package.json index 6f3e670f67..758508e97d 100644 --- a/packages/drivers/driver-sql/package.json +++ b/packages/drivers/driver-sql/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-sql", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "SQL Driver for ObjectStack - Supports PostgreSQL, MySQL, SQLite via Knex", "main": "dist/index.js", diff --git a/packages/drivers/driver-sqlite-wasm/CHANGELOG.md b/packages/drivers/driver-sqlite-wasm/CHANGELOG.md index b859e3fe88..7284038054 100644 --- a/packages/drivers/driver-sqlite-wasm/CHANGELOG.md +++ b/packages/drivers/driver-sqlite-wasm/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/driver-sqlite-wasm +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/driver-sql@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/drivers/driver-sqlite-wasm/package.json b/packages/drivers/driver-sqlite-wasm/package.json index 181499ed5d..59097b2fd4 100644 --- a/packages/drivers/driver-sqlite-wasm/package.json +++ b/packages/drivers/driver-sqlite-wasm/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-sqlite-wasm", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "WASM SQLite Driver for ObjectStack — runs in browser/WebContainer (StackBlitz) without native bindings", "keywords": [ diff --git a/packages/drivers/driver-turso/CHANGELOG.md b/packages/drivers/driver-turso/CHANGELOG.md index 3bf64a2023..bb8c6de647 100644 --- a/packages/drivers/driver-turso/CHANGELOG.md +++ b/packages/drivers/driver-turso/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/driver-turso +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/driver-sql@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Minor Changes diff --git a/packages/drivers/driver-turso/package.json b/packages/drivers/driver-turso/package.json index 5f285faa8a..5eae07a3d7 100644 --- a/packages/drivers/driver-turso/package.json +++ b/packages/drivers/driver-turso/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-turso", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Turso/libSQL Driver for ObjectStack — Edge-first SQLite with embedded replicas", "keywords": [ diff --git a/packages/formula/CHANGELOG.md b/packages/formula/CHANGELOG.md index a72187e15b..c0ed3aaed1 100644 --- a/packages/formula/CHANGELOG.md +++ b/packages/formula/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/formula +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Minor Changes diff --git a/packages/formula/package.json b/packages/formula/package.json index fafbd408bc..9d57074d58 100644 --- a/packages/formula/package.json +++ b/packages/formula/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/formula", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "ObjectStack canonical expression engine — CEL (cel-js) + ObjectStack stdlib + dialect registry", "main": "dist/index.js", diff --git a/packages/lint/CHANGELOG.md b/packages/lint/CHANGELOG.md index 81cdb8c11d..d457c08783 100644 --- a/packages/lint/CHANGELOG.md +++ b/packages/lint/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/lint +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/formula@17.0.0-rc.5 + - @objectstack/sdui-parser@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Minor Changes diff --git a/packages/lint/package.json b/packages/lint/package.json index d28032e650..108976921b 100644 --- a/packages/lint/package.json +++ b/packages/lint/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/lint", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Static, build-time validation for an ObjectStack metadata graph — dashboard widget bindings, CEL/predicate expressions, and more. Pure (stack) => Issue[] functions shared by the CLI's `os validate` and any other consumer (e.g. AI authoring). Depends on @objectstack/spec; never on a runtime.", "type": "module", diff --git a/packages/mcp/CHANGELOG.md b/packages/mcp/CHANGELOG.md index 709e8ae5f0..8090d9f230 100644 --- a/packages/mcp/CHANGELOG.md +++ b/packages/mcp/CHANGELOG.md @@ -1,5 +1,20 @@ # @objectstack/plugin-mcp-server +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/formula@17.0.0-rc.5 + - @objectstack/types@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Minor Changes diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 48beefd634..049d307129 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/mcp", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "ObjectStack as an MCP server — exposes your app's objects (and AI tools) over the Model Context Protocol (stdio + Streamable HTTP)", "type": "module", diff --git a/packages/metadata-core/CHANGELOG.md b/packages/metadata-core/CHANGELOG.md index 53cdcde7d5..d3f800f993 100644 --- a/packages/metadata-core/CHANGELOG.md +++ b/packages/metadata-core/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/metadata-core +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/metadata-core/package.json b/packages/metadata-core/package.json index f6ee87cd79..3dbcd7f78c 100644 --- a/packages/metadata-core/package.json +++ b/packages/metadata-core/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata-core", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Metadata Repository contracts: types, canonicalization, errors, interface (ADR-0008).", "type": "module", diff --git a/packages/metadata-fs/CHANGELOG.md b/packages/metadata-fs/CHANGELOG.md index afab6c44e5..127b70efcc 100644 --- a/packages/metadata-fs/CHANGELOG.md +++ b/packages/metadata-fs/CHANGELOG.md @@ -1,5 +1,11 @@ # @objectstack/metadata-fs +## 17.0.0-rc.5 + +### Patch Changes + +- @objectstack/metadata-core@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/metadata-fs/package.json b/packages/metadata-fs/package.json index be16df195d..e34bcf0b49 100644 --- a/packages/metadata-fs/package.json +++ b/packages/metadata-fs/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata-fs", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "FileSystemRepository: Node-only Repository implementation backed by JSON files and a JSONL change log (ADR-0008).", "type": "module", diff --git a/packages/metadata-protocol/CHANGELOG.md b/packages/metadata-protocol/CHANGELOG.md index 92b0371d81..e113cf8aa1 100644 --- a/packages/metadata-protocol/CHANGELOG.md +++ b/packages/metadata-protocol/CHANGELOG.md @@ -1,5 +1,23 @@ # @objectstack/metadata-protocol +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/formula@17.0.0-rc.5 + - @objectstack/lint@17.0.0-rc.5 + - @objectstack/metadata@17.0.0-rc.5 + - @objectstack/metadata-core@17.0.0-rc.5 + - @objectstack/types@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Major Changes diff --git a/packages/metadata-protocol/package.json b/packages/metadata-protocol/package.json index 7fc448ee1c..71c4ed2d45 100644 --- a/packages/metadata-protocol/package.json +++ b/packages/metadata-protocol/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata-protocol", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "ObjectStack metadata management protocol: sys_metadata CRUD, draft/publish, locks, package ownership, diagnostics (ADR-0076).", "type": "module", diff --git a/packages/metadata/CHANGELOG.md b/packages/metadata/CHANGELOG.md index b0294eca6a..885b4bf45d 100644 --- a/packages/metadata/CHANGELOG.md +++ b/packages/metadata/CHANGELOG.md @@ -1,5 +1,22 @@ # @objectstack/metadata +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/metadata-core@17.0.0-rc.5 + - @objectstack/platform-objects@17.0.0-rc.5 + - @objectstack/types@17.0.0-rc.5 + - @objectstack/metadata-fs@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Minor Changes diff --git a/packages/metadata/package.json b/packages/metadata/package.json index 2b446c44fb..f2e5f0da6c 100644 --- a/packages/metadata/package.json +++ b/packages/metadata/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Metadata loading, saving, and persistence for ObjectStack", "type": "module", diff --git a/packages/objectql/CHANGELOG.md b/packages/objectql/CHANGELOG.md index 373750367b..f2309a8449 100644 --- a/packages/objectql/CHANGELOG.md +++ b/packages/objectql/CHANGELOG.md @@ -1,5 +1,163 @@ # @objectstack/objectql +## 17.0.0-rc.5 + +### Minor Changes + +- 1363084: feat(spec,objectql): `engine.transaction` 契约收紧第一批 —— `opts.require` fail-closed 与 `owned` 信号 (#5696) + + `IObjectQLEngine.transaction` 的声明面(`packages/spec/src/contracts/objectql-engine.ts`, + ADR-0119 D1)此前把「默认驱动之外的对象写在事务外」与「驱动没有 `beginTransaction` + 时静默降级」写成**声明语义**的一部分。#4619 把这两条降级变得可观测(PR #5724),本次 + 把其中两条收紧为调用方可选的契约,并同步修订 TSDoc 的事实性偏差。 + + **新增(可选,默认行为完全不变):** + + - `transaction(cb, base, { require: true })` —— 驱动没有 `beginTransaction` 时 + **抛 `TransactionUnsupportedError`(`code: 'ERR_TRANSACTION_UNSUPPORTED'`)**, + 而不是静默降级成「无事务、无回滚」。在回调运行**之前**拒绝,所以调用方收到错误时 + 一行都还没写。这是把 `batchData` 的 atomic 门(ADR-0119 D4)泛化成通用能力: + 只为「开事务的唯一理由就是回滚」的调用方而设,不传 `require` 的行为一字未变 + (仍然降级 + warn-once)。 + - 回调的**第二个参数** `{ owned: boolean }` —— `true` 表示本次调用开启了事务并拥有 + 提交/回滚,`false` 表示它 **join** 了外层已开的 ambient 事务(ADR-0067 D2), + 或者处在降级路径上(那里根本没有事务可拥有)。join 语义本身正确且保留;缺的是 + 调用方**无从分辨**,而「整体一起回滚」这类担保只在 owned 时成立。单参数回调不受影响。 + + 两点在 `ctx.api.transaction`(`ScopedContext.transaction`,沙箱 hook/action 体)上 + 同样生效 —— 同一个原语的第二份实现不该变成第二种方言。 + + **契约文本修订:** transaction 的 TSDoc 原先写「路由到别处的对象在事务**外**写入」, + 实测不符 —— 引擎无条件把 ambient 事务句柄穿给了目标驱动,语句在**错误的连接**上执行 + (#5351 在真 SQL driver 上实测为 `no such table`)。TSDoc 已按实测改写,并声明了随后 + 落地的两条语义:业务写跨驱动**响亮拒绝**、系统账本(`lifecycle.class` 为 + `audit`/`telemetry`/`event`)**移出事务执行**。 + + **类型面:** `@objectstack/core` 的 `EngineWithTransaction` 从「手抄签名」改为 + `transaction: IObjectQLEngine['transaction']`,窄接口可以窄,但不能与真签名漂移。 + 新导出 `EngineTransactionOptions` / `EngineTransactionInfo`(spec `contracts` 命名空间, + 经 `@objectstack/core` 转出)。 + + 升级须知:无破坏性变更。既有调用点全部保持原行为;要 fail-closed 的调用方显式传 + `{ require: true }`。 + +- 148d451: fix(objectql)!: 事务句柄不再跨数据源穿透 —— 业务写响亮拒绝、系统账本移出事务落盘 (#5351, #5696) + + **这是行为变化,升级前请读完。** 只影响**注册了第二个数据源**的部署;单数据源部署 + (绝大多数)**行为一字未变**,不拒绝、不 carve-out、不打日志。 + + ## 修的是什么 + + `buildDriverOptions` 此前把 ambient 事务句柄**无条件**塞进每一次 driver 调用,不问 + 即将收到它的是哪个 driver。于是被路由到别处的对象(`setDatasourceMapping`、显式 + `datasource:` 绑定,或 ADR-0057 §3.6 的 lifecycle 分流)拿到的是**默认库那条连接的 + 事务对象**,knex 的 `.transacting(trx)` 把语句发到了错误的库。 + + 实测后果(#5351,一次真实 boot):`sys_audit_log` 被 §3.6 路由到 `telemetry` 数据源, + insert 尝试 52 次、成功 50 次、失败 2 次,失败的两次堆栈**全部**带 knex 的 + `trxClient.query` 帧,报 `no such table: sys_audit_log`。也就是说 —— **凡是在事务中执行 + 的被审计写入,合规审计行全部静默丢失**:业务写成功、接口 200、数据在盘上,只有「谁做的」 + 那一行没了,且无人重试。契约 TSDoc 原先写这类写入「在事务外执行」,比实际情况乐观。 + + ## 三条新行为 + + 1. **句柄不再跨驱动**。事务句柄只交给开启它的那个 driver(按**实例身份**比对)。读操作 + 同样覆盖 —— 它们此前也在错误的连接上跑,而且连诊断都没有。 + 2. **业务写跨驱动 → 拒绝**。抛 `CrossDatasourceTransactionWriteError` + (`code: 'ERR_CROSS_DATASOURCE_TRANSACTION_WRITE'`),在任何 hook / 默认值 / 校验之前, + **一行都没写**。⛔ 这不是跨库原子性:`IDataDriver` 没有两阶段提交,本次刻意不做 + (#4619 原文已排除)。 + **升级须知**:此前这类写入会静默部分提交(而且是在错的连接上)。现在它会失败。两条修法, + 错误消息里都写了 —— 要么让一个 `transaction()` 里写的对象都留在同一个数据源(移动对象, + 或删掉把它路由走的 `datasourceMapping` 规则),要么把工作拆成按数据源的独立单元,由调用方 + 自己对账。 + 3. **系统账本移出事务执行(carve-out)**。`lifecycle.class` 为 `audit` / `telemetry` / + `event` 的只追加账本**不拒绝**,而是在自己的连接上、事务之外执行 —— 所以审计行**真正 + 落盘**,插件作者写普通 `afterInsert` 钩子零负担。 + ⚠️ **孤儿行语义**:这些行会**在业务事务回滚后留下** —— 一条审计行可能描述一次被撤销的 + 写入。这是维护者 2026-08-06 明确接受的代价:对只追加的合规账本,「多记一条可对账的行」 + 优于「已提交的写入却少一行」,而后者正是此前在发的版本。判别式是对象**声明**的 + `lifecycle.class`(不是它被哪种机制路由走的),ADR-0067 / ADR-0119 的 2026-08-06 修订 + 记录了全部理由与边界。 + + ## 同时移除 + + PR #5724 为跨数据源写入加的那条 `error` 级日志随之退休 —— 已经没有「静默穿错连接」可报了。 + carve-out 路径改为 `debug` 级、每事务每数据源一次:它现在是**声明过的正常行为**,在分流部署 + 里每一次被审计的事务写入都会发生,挂在 `error`/`warn` 上只会训练读者跳过真正的持久性告警。 + + ## 已知边界(明确不覆盖,非疏漏) + + 引擎无法归属的事务句柄不参与同源校验:`ScopedContext` 的离散 + `beginTransaction`/`commit`/`rollback` 三件套(跨 `setImmediate` 显式穿句柄,不走 txStore), + 以及外部调用方自带的 `execCtx.transaction`。这类句柄是不透明的 driver 对象,没有回指其属主的 + 引用,猜测(比如假定它属于默认驱动)会在一边误拒合法的单库工作、在另一边误放真正被覆盖的写入。 + 这条路径保持 #5351 之前的行为,已作为决定钉进测试,收口需要 `IDataDriver` 暴露句柄属主 + (另单跟踪)。 + +### Patch Changes + +- ee3bde1: feat(objectql,cli): `os migrate summary-nulls` backfills roll-up count/sum columns left NULL by pre-seed inserts (#6063) + + #5749 / PR #6013 fixed the **producer**: a parent row created from that release + on has its `count` / `sum` roll-up columns seeded to the empty-set value at + insert, so `filter ["task_count", "=", 0]`, sorting, `GROUP BY` and formulas + over the column stop silently dropping parents that never had a child. + + Being a create-time fix, it reaches **new rows only**. A database upgraded **in + place** still holds parents stored before the upgrade, and the recompute that + would otherwise correct them runs only when one of their **children** is + written — so those rows keep their `NULL` indefinitely and keep disappearing + from the same queries. A freshly seeded deployment is correct; an upgraded one + is not. This release ships the other half: a one-off, explicit data migration. + + ```bash + os migrate summary-nulls # dry run: full report, writes nothing + os migrate summary-nulls --apply # recompute and write (prompts) + os migrate summary-nulls --apply --yes --json # CI / scripts + os migrate summary-nulls --object project # restrict to one object (repeatable) + ``` + + **Every NULL row is recomputed, never blanket-set to 0.** A pre-upgrade parent + that _does_ have children is `NULL` too — nothing ever recomputed it — and its + correct value is the real aggregate. `UPDATE ... SET col = 0 WHERE col IS NULL` + would replace a visibly-missing value with a confidently-wrong one, which the + next child write would then silently change back. The run computes each value + through the same code path the engine's own child-write recompute uses + (`aggregateSummaryValue`), over the descriptors the engine itself maintains, so + a backfilled column and a recomputed one can never mean different things. + + **`min` / `max` / `avg` are never touched.** They are undefined on an empty set + — which is why the insert-time seed leaves them `null` — so a stored `null` + there is the correct reading of "no child rows", not a defect. The report names + them as deliberately skipped rather than omitting them silently. + + Other properties: dry run by default and a dry run writes nothing at all; + idempotent, so re-running is safe and a clean report is the operator's own + verification; driver-agnostic (it reads values and tests them in JS rather than + pushing a null predicate down, since null-predicate compilation is precisely + where drivers diverge); one row's failure is recorded and the run carries on. + It records no deployment flag — unlike its `os migrate` siblings, nothing is + gated on it having run. + + Never running it is safe in the sense that nothing breaks _further_: the + affected rows simply stay missing from `= 0` filters until a child of theirs is + written. + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/formula@17.0.0-rc.5 + - @objectstack/metadata@17.0.0-rc.5 + - @objectstack/metadata-core@17.0.0-rc.5 + - @objectstack/metadata-protocol@17.0.0-rc.5 + - @objectstack/types@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Minor Changes diff --git a/packages/objectql/package.json b/packages/objectql/package.json index 73ed79c20d..7a47625ad6 100644 --- a/packages/objectql/package.json +++ b/packages/objectql/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/objectql", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Isomorphic ObjectQL Engine for ObjectStack", "main": "dist/index.js", diff --git a/packages/observability/CHANGELOG.md b/packages/observability/CHANGELOG.md index bc1eecebf4..0c6a35ef6b 100644 --- a/packages/observability/CHANGELOG.md +++ b/packages/observability/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/observability +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/observability/package.json b/packages/observability/package.json index 4aa15efec4..a9c2b551ec 100644 --- a/packages/observability/package.json +++ b/packages/observability/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/observability", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Observability contracts and exporters for ObjectStack — MetricsRegistry, ErrorReporter, Logger plus noop/console/OTLP-HTTP exporters. Deployment-target neutral; runtime and services depend on this so the same instrumentation works on Cloudflare Workers, Node, and self-hosted Kubernetes.", "type": "module", diff --git a/packages/platform-objects/CHANGELOG.md b/packages/platform-objects/CHANGELOG.md index 86cf01be20..dec6aa5f6f 100644 --- a/packages/platform-objects/CHANGELOG.md +++ b/packages/platform-objects/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/platform-objects +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/metadata-core@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Minor Changes diff --git a/packages/platform-objects/package.json b/packages/platform-objects/package.json index b0c0002a1a..615ec372b5 100644 --- a/packages/platform-objects/package.json +++ b/packages/platform-objects/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/platform-objects", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Core platform object schemas for ObjectStack — identity, security, audit, tenant, and metadata objects", "main": "dist/index.js", diff --git a/packages/plugins/embedder-openai/CHANGELOG.md b/packages/plugins/embedder-openai/CHANGELOG.md index 6bd5a48e4c..17f841ce5b 100644 --- a/packages/plugins/embedder-openai/CHANGELOG.md +++ b/packages/plugins/embedder-openai/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/embedder-openai +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/plugins/embedder-openai/package.json b/packages/plugins/embedder-openai/package.json index 3b43c18363..855082e0c3 100644 --- a/packages/plugins/embedder-openai/package.json +++ b/packages/plugins/embedder-openai/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/embedder-openai", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "OpenAI-compatible embedder for ObjectStack — works against OpenAI, 阿里通义 DashScope, 智谱 BigModel, 硅基流动 SiliconFlow, 火山引擎 Doubao, MiniMax, Ollama, and any drop-in OpenAI-shape endpoint.", "main": "dist/index.js", diff --git a/packages/plugins/knowledge-memory/CHANGELOG.md b/packages/plugins/knowledge-memory/CHANGELOG.md index 24585a178e..07c9dd8f76 100644 --- a/packages/plugins/knowledge-memory/CHANGELOG.md +++ b/packages/plugins/knowledge-memory/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/knowledge-memory +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/service-knowledge@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/plugins/knowledge-memory/package.json b/packages/plugins/knowledge-memory/package.json index 4aab115135..2e10958ab8 100644 --- a/packages/plugins/knowledge-memory/package.json +++ b/packages/plugins/knowledge-memory/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/knowledge-memory", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "In-memory knowledge adapter for ObjectStack (dev / test reference implementation).", "main": "dist/index.js", diff --git a/packages/plugins/knowledge-ragflow/CHANGELOG.md b/packages/plugins/knowledge-ragflow/CHANGELOG.md index 3c8f4f0c25..e9ae376ccf 100644 --- a/packages/plugins/knowledge-ragflow/CHANGELOG.md +++ b/packages/plugins/knowledge-ragflow/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/knowledge-ragflow +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/service-knowledge@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/plugins/knowledge-ragflow/package.json b/packages/plugins/knowledge-ragflow/package.json index 0020a592f3..e28e18b1e4 100644 --- a/packages/plugins/knowledge-ragflow/package.json +++ b/packages/plugins/knowledge-ragflow/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/knowledge-ragflow", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "RAGFlow knowledge adapter for ObjectStack — production-grade RAG via the Apache 2.0 RAGFlow REST API.", "main": "dist/index.js", diff --git a/packages/plugins/plugin-approvals/CHANGELOG.md b/packages/plugins/plugin-approvals/CHANGELOG.md index 91fdc6f531..48ac6a591a 100644 --- a/packages/plugins/plugin-approvals/CHANGELOG.md +++ b/packages/plugins/plugin-approvals/CHANGELOG.md @@ -1,5 +1,22 @@ # @objectstack/plugin-approvals +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/formula@17.0.0-rc.5 + - @objectstack/metadata-core@17.0.0-rc.5 + - @objectstack/platform-objects@17.0.0-rc.5 + - @objectstack/types@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Minor Changes diff --git a/packages/plugins/plugin-approvals/package.json b/packages/plugins/plugin-approvals/package.json index dbe132aa22..b45d00bc91 100644 --- a/packages/plugins/plugin-approvals/package.json +++ b/packages/plugins/plugin-approvals/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-approvals", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Multi-step approval engine for ObjectStack — sys_approval_process + sys_approval_request + sys_approval_action + IApprovalService.", "main": "dist/index.js", diff --git a/packages/plugins/plugin-audit/CHANGELOG.md b/packages/plugins/plugin-audit/CHANGELOG.md index 681dc586fb..399e9157b4 100644 --- a/packages/plugins/plugin-audit/CHANGELOG.md +++ b/packages/plugins/plugin-audit/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/plugin-audit +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/platform-objects@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/plugins/plugin-audit/package.json b/packages/plugins/plugin-audit/package.json index e79bc2da8a..c869ee1ddf 100644 --- a/packages/plugins/plugin-audit/package.json +++ b/packages/plugins/plugin-audit/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-audit", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Audit Plugin for ObjectStack — System audit log object and audit trail", "main": "dist/index.js", diff --git a/packages/plugins/plugin-auth/CHANGELOG.md b/packages/plugins/plugin-auth/CHANGELOG.md index e1a7f195ee..33033f9859 100644 --- a/packages/plugins/plugin-auth/CHANGELOG.md +++ b/packages/plugins/plugin-auth/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/platform-objects@17.0.0-rc.5 + - @objectstack/rest@17.0.0-rc.5 + - @objectstack/types@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Major Changes diff --git a/packages/plugins/plugin-auth/package.json b/packages/plugins/plugin-auth/package.json index 5c361ed1d8..28ffb424e5 100644 --- a/packages/plugins/plugin-auth/package.json +++ b/packages/plugins/plugin-auth/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-auth", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Authentication & Identity Plugin for ObjectStack", "main": "dist/index.js", diff --git a/packages/plugins/plugin-dev/CHANGELOG.md b/packages/plugins/plugin-dev/CHANGELOG.md index 7e48310b53..8dd4d4498c 100644 --- a/packages/plugins/plugin-dev/CHANGELOG.md +++ b/packages/plugins/plugin-dev/CHANGELOG.md @@ -1,5 +1,33 @@ # @objectstack/plugin-dev +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ee3bde1] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] +- Updated dependencies [148d451] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/objectql@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/account@17.0.0-rc.5 + - @objectstack/setup@17.0.0-rc.5 + - @objectstack/driver-memory@17.0.0-rc.5 + - @objectstack/plugin-auth@17.0.0-rc.5 + - @objectstack/plugin-hono-server@17.0.0-rc.5 + - @objectstack/plugin-security@17.0.0-rc.5 + - @objectstack/rest@17.0.0-rc.5 + - @objectstack/runtime@17.0.0-rc.5 + - @objectstack/service-i18n@17.0.0-rc.5 + - @objectstack/service-realtime@17.0.0-rc.5 + - @objectstack/service-storage@17.0.0-rc.5 + - @objectstack/types@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/plugins/plugin-dev/package.json b/packages/plugins/plugin-dev/package.json index 68d27387f5..8e9ac57ade 100644 --- a/packages/plugins/plugin-dev/package.json +++ b/packages/plugins/plugin-dev/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-dev", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Development Assembly Plugin for ObjectStack — wires the real platform stack for zero-config local development", "main": "dist/index.js", diff --git a/packages/plugins/plugin-email/CHANGELOG.md b/packages/plugins/plugin-email/CHANGELOG.md index fc4a04742b..bb050f3fb6 100644 --- a/packages/plugins/plugin-email/CHANGELOG.md +++ b/packages/plugins/plugin-email/CHANGELOG.md @@ -1,5 +1,20 @@ # @objectstack/plugin-email +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/formula@17.0.0-rc.5 + - @objectstack/platform-objects@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Minor Changes diff --git a/packages/plugins/plugin-email/package.json b/packages/plugins/plugin-email/package.json index 1ee31c814a..afff5a7e6e 100644 --- a/packages/plugins/plugin-email/package.json +++ b/packages/plugins/plugin-email/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-email", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Email service plugin for ObjectStack — IEmailService + transport-pluggable outbound delivery with sys_email persistence.", "main": "dist/index.js", diff --git a/packages/plugins/plugin-hono-server/CHANGELOG.md b/packages/plugins/plugin-hono-server/CHANGELOG.md index 13477c3dd7..076182fdcd 100644 --- a/packages/plugins/plugin-hono-server/CHANGELOG.md +++ b/packages/plugins/plugin-hono-server/CHANGELOG.md @@ -1,5 +1,20 @@ # @objectstack/plugin-hono-server +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/observability@17.0.0-rc.5 + - @objectstack/types@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Major Changes diff --git a/packages/plugins/plugin-hono-server/package.json b/packages/plugins/plugin-hono-server/package.json index 2c827a1fca..7f364e13ec 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": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Standard Hono Server Adapter for ObjectStack Runtime", "main": "dist/index.js", diff --git a/packages/plugins/plugin-pinyin-search/CHANGELOG.md b/packages/plugins/plugin-pinyin-search/CHANGELOG.md index 6e0a810d4c..fb10a7948d 100644 --- a/packages/plugins/plugin-pinyin-search/CHANGELOG.md +++ b/packages/plugins/plugin-pinyin-search/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/plugin-pinyin-search +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [ee3bde1] +- Updated dependencies [1363084] +- Updated dependencies [148d451] + - @objectstack/objectql@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/types@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/plugins/plugin-pinyin-search/package.json b/packages/plugins/plugin-pinyin-search/package.json index cb24410afb..96503728fd 100644 --- a/packages/plugins/plugin-pinyin-search/package.json +++ b/packages/plugins/plugin-pinyin-search/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-pinyin-search", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Pinyin search recall for ObjectStack — populates the hidden `__search` companion column (full pinyin + initials of the display/name field) so `$search` hits CJK names typed as pinyin. Locale-gated via OS_SEARCH_PINYIN_ENABLED (#2486).", "main": "dist/index.js", diff --git a/packages/plugins/plugin-reports/CHANGELOG.md b/packages/plugins/plugin-reports/CHANGELOG.md index 3950c9f3bb..09201c3ea1 100644 --- a/packages/plugins/plugin-reports/CHANGELOG.md +++ b/packages/plugins/plugin-reports/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/plugin-reports +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/platform-objects@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/plugins/plugin-reports/package.json b/packages/plugins/plugin-reports/package.json index ee8897d1b2..bff958763d 100644 --- a/packages/plugins/plugin-reports/package.json +++ b/packages/plugins/plugin-reports/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-reports", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "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 373f89e413..1f1e63f757 100644 --- a/packages/plugins/plugin-security/CHANGELOG.md +++ b/packages/plugins/plugin-security/CHANGELOG.md @@ -1,5 +1,20 @@ # @objectstack/plugin-security +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/formula@17.0.0-rc.5 + - @objectstack/platform-objects@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/plugins/plugin-security/package.json b/packages/plugins/plugin-security/package.json index 33a0d05bff..0b65390b21 100644 --- a/packages/plugins/plugin-security/package.json +++ b/packages/plugins/plugin-security/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-security", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Security Plugin for ObjectStack — RBAC, RLS, and Field-Level Security Runtime", "main": "dist/index.js", diff --git a/packages/plugins/plugin-sharing/CHANGELOG.md b/packages/plugins/plugin-sharing/CHANGELOG.md index 6bf5cdf163..4ba8f59110 100644 --- a/packages/plugins/plugin-sharing/CHANGELOG.md +++ b/packages/plugins/plugin-sharing/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/plugin-sharing +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ee3bde1] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] +- Updated dependencies [148d451] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/objectql@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/formula@17.0.0-rc.5 + - @objectstack/platform-objects@17.0.0-rc.5 + - @objectstack/types@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/plugins/plugin-sharing/package.json b/packages/plugins/plugin-sharing/package.json index 8c699fca73..366113db2c 100644 --- a/packages/plugins/plugin-sharing/package.json +++ b/packages/plugins/plugin-sharing/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-sharing", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Record-level sharing for ObjectStack — sys_record_share + middleware that enforces sharingModel + ISharingService.", "main": "dist/index.js", diff --git a/packages/plugins/plugin-webhooks/CHANGELOG.md b/packages/plugins/plugin-webhooks/CHANGELOG.md index 87d49ac352..039defc314 100644 --- a/packages/plugins/plugin-webhooks/CHANGELOG.md +++ b/packages/plugins/plugin-webhooks/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/plugin-webhooks +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/service-messaging@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/plugins/plugin-webhooks/package.json b/packages/plugins/plugin-webhooks/package.json index 79519b6c8c..f5e52bb7b6 100644 --- a/packages/plugins/plugin-webhooks/package.json +++ b/packages/plugins/plugin-webhooks/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-webhooks", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Persistent, cluster-aware webhook dispatcher. Durable outbox + per-partition cluster.lock for exactly-once-ish delivery across nodes. See content/docs/concepts/webhook-delivery.mdx.", "type": "module", diff --git a/packages/qa/dogfood/CHANGELOG.md b/packages/qa/dogfood/CHANGELOG.md index 8ce01999d2..d15820e0ef 100644 --- a/packages/qa/dogfood/CHANGELOG.md +++ b/packages/qa/dogfood/CHANGELOG.md @@ -1,5 +1,39 @@ # @objectstack/dogfood +## 0.0.40-rc.4 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ee3bde1] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] +- Updated dependencies [148d451] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/objectql@17.0.0-rc.5 + - @objectstack/example-crm@4.0.92-rc.4 + - @objectstack/example-showcase@0.3.14-rc.4 + - @objectstack/connector-mcp@17.0.0-rc.5 + - @objectstack/connector-openapi@17.0.0-rc.5 + - @objectstack/connector-rest@17.0.0-rc.5 + - @objectstack/mcp@17.0.0-rc.5 + - @objectstack/metadata@17.0.0-rc.5 + - @objectstack/platform-objects@17.0.0-rc.5 + - @objectstack/plugin-audit@17.0.0-rc.5 + - @objectstack/plugin-auth@17.0.0-rc.5 + - @objectstack/plugin-email@17.0.0-rc.5 + - @objectstack/plugin-security@17.0.0-rc.5 + - @objectstack/plugin-sharing@17.0.0-rc.5 + - @objectstack/plugin-webhooks@17.0.0-rc.5 + - @objectstack/service-analytics@17.0.0-rc.5 + - @objectstack/service-messaging@17.0.0-rc.5 + - @objectstack/service-storage@17.0.0-rc.5 + - @objectstack/types@17.0.0-rc.5 + - @objectstack/verify@17.0.0-rc.5 + ## 0.0.40-rc.3 ### Patch Changes diff --git a/packages/qa/dogfood/package.json b/packages/qa/dogfood/package.json index 08284e67c8..c76ce25258 100644 --- a/packages/qa/dogfood/package.json +++ b/packages/qa/dogfood/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/dogfood", - "version": "0.0.40-rc.3", + "version": "0.0.40-rc.4", "private": true, "license": "Apache-2.0", "description": "Dogfood regression gate — hand-written golden tests that boot real example apps through @objectstack/verify's in-process HTTP stack, pinning historical runtime regressions (#2018 timezone bucketing, #1994 cross-owner RLS, #2004 field fidelity) that static checks miss.", diff --git a/packages/qa/downstream-contract/CHANGELOG.md b/packages/qa/downstream-contract/CHANGELOG.md index e642d8083f..41064a1d1b 100644 --- a/packages/qa/downstream-contract/CHANGELOG.md +++ b/packages/qa/downstream-contract/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/downstream-contract +## 0.0.38-rc.4 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + ## 0.0.38-rc.3 ### Patch Changes diff --git a/packages/qa/downstream-contract/package.json b/packages/qa/downstream-contract/package.json index 4f7b3b7450..d1b1ca40df 100644 --- a/packages/qa/downstream-contract/package.json +++ b/packages/qa/downstream-contract/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/downstream-contract", - "version": "0.0.38-rc.3", + "version": "0.0.38-rc.4", "description": "Frozen third-party consumer fixture — a backward-compatibility gate for @objectstack/spec. Authored the way an external project on a published release authors metadata; if a spec change breaks it, that change is breaking (#2035).", "license": "Apache-2.0", "private": true, diff --git a/packages/qa/http-conformance/CHANGELOG.md b/packages/qa/http-conformance/CHANGELOG.md index 5c1e4d6c20..0e1a7985a3 100644 --- a/packages/qa/http-conformance/CHANGELOG.md +++ b/packages/qa/http-conformance/CHANGELOG.md @@ -1,5 +1,12 @@ # @objectstack/http-conformance +## 0.0.6-rc.4 + +### Patch Changes + +- Updated dependencies [1363084] + - @objectstack/core@17.0.0-rc.5 + ## 0.0.6-rc.3 ### Patch Changes diff --git a/packages/qa/http-conformance/package.json b/packages/qa/http-conformance/package.json index a65cd2e2dd..4830df005b 100644 --- a/packages/qa/http-conformance/package.json +++ b/packages/qa/http-conformance/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/http-conformance", - "version": "0.0.6-rc.3", + "version": "0.0.6-rc.4", "private": true, "license": "Apache-2.0", "description": "HTTP transport-port conformance gate (ADR-0076 D11/OQ#10, #2462) — a zero-dependency node:http reference implementation of IHttpServer plus a cross-adapter suite that boots the dispatcher bridge and REST generator on it AND on plugin-hono-server, pinning that the port stays free of framework-isms. Not published; validation instrument, not a product server.", diff --git a/packages/rest/CHANGELOG.md b/packages/rest/CHANGELOG.md index 150e81ce32..fa0bd6b5a8 100644 --- a/packages/rest/CHANGELOG.md +++ b/packages/rest/CHANGELOG.md @@ -1,5 +1,22 @@ # @objectstack/rest +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/observability@17.0.0-rc.5 + - @objectstack/platform-objects@17.0.0-rc.5 + - @objectstack/service-package@17.0.0-rc.5 + - @objectstack/types@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Major Changes diff --git a/packages/rest/package.json b/packages/rest/package.json index f2e37b33d6..2bb0c629cd 100644 --- a/packages/rest/package.json +++ b/packages/rest/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/rest", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "ObjectStack REST API Server - automatic REST endpoint generation from protocol", "type": "module", diff --git a/packages/runtime/CHANGELOG.md b/packages/runtime/CHANGELOG.md index 15ae3311e5..226264da16 100644 --- a/packages/runtime/CHANGELOG.md +++ b/packages/runtime/CHANGELOG.md @@ -1,5 +1,36 @@ # @objectstack/runtime +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ee3bde1] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] +- Updated dependencies [148d451] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/objectql@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/driver-memory@17.0.0-rc.5 + - @objectstack/driver-sql@17.0.0-rc.5 + - @objectstack/driver-sqlite-wasm@17.0.0-rc.5 + - @objectstack/formula@17.0.0-rc.5 + - @objectstack/metadata@17.0.0-rc.5 + - @objectstack/metadata-core@17.0.0-rc.5 + - @objectstack/metadata-protocol@17.0.0-rc.5 + - @objectstack/observability@17.0.0-rc.5 + - @objectstack/plugin-auth@17.0.0-rc.5 + - @objectstack/plugin-security@17.0.0-rc.5 + - @objectstack/rest@17.0.0-rc.5 + - @objectstack/service-cluster@17.0.0-rc.5 + - @objectstack/service-datasource@17.0.0-rc.5 + - @objectstack/service-i18n@17.0.0-rc.5 + - @objectstack/types@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Major Changes diff --git a/packages/runtime/package.json b/packages/runtime/package.json index 6830c9c0fd..13c11c0021 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/runtime", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "ObjectStack Core Runtime & Query Engine", "type": "module", diff --git a/packages/sdui-parser/CHANGELOG.md b/packages/sdui-parser/CHANGELOG.md index a7d498a31f..4f75a8887c 100644 --- a/packages/sdui-parser/CHANGELOG.md +++ b/packages/sdui-parser/CHANGELOG.md @@ -1,5 +1,7 @@ # @objectstack/sdui-parser +## 17.0.0-rc.5 + ## 17.0.0-rc.4 ## 17.0.0-rc.2 diff --git a/packages/sdui-parser/package.json b/packages/sdui-parser/package.json index f54b9354fd..57206bb66c 100644 --- a/packages/sdui-parser/package.json +++ b/packages/sdui-parser/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/sdui-parser", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "ObjectStack constrained JSX-source → SDUI SchemaNode tree compiler (parse, never execute). Isomorphic, zero React. ADR-0080.", "main": "dist/index.js", diff --git a/packages/services/service-analytics/CHANGELOG.md b/packages/services/service-analytics/CHANGELOG.md index 1768d2616f..86b316361e 100644 --- a/packages/services/service-analytics/CHANGELOG.md +++ b/packages/services/service-analytics/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog — @objectstack/service-analytics +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Major Changes diff --git a/packages/services/service-analytics/package.json b/packages/services/service-analytics/package.json index d84361a35c..e34cfbb33d 100644 --- a/packages/services/service-analytics/package.json +++ b/packages/services/service-analytics/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-analytics", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Analytics Service for ObjectStack — implements IAnalyticsService with multi-driver strategy pattern (NativeSQL, ObjectQL, InMemory)", "type": "module", diff --git a/packages/services/service-automation/CHANGELOG.md b/packages/services/service-automation/CHANGELOG.md index 93b4816ec9..52cc8961f0 100644 --- a/packages/services/service-automation/CHANGELOG.md +++ b/packages/services/service-automation/CHANGELOG.md @@ -1,5 +1,97 @@ # @objectstack/service-automation +## 17.0.0-rc.5 + +### Minor Changes + +- e8f8f6c: feat(integration): 连接器动作可以声明它在上游做了什么,`connector_action` 因此能被计数 (#4395) + + #4354 给每次流程运行加上了 `selected` / `acted` 汇总,断扫告警是 + `selected > 0 AND acted = 0 AND unmeasured = 0`。`connector_action` 当时只能给出三个 + 答案里最诚实的那个:`ConnectorActionSchema` 只描述动作的**形状**(`key` / `label` / + `inputSchema` / `outputSchema`),对它究竟读还是写只字未提,所以 `crm.push_opportunity` + 和 `crm.lookup_account` 在运行时完全无法区分。`acted: 0` 会低报一次 Salesforce 创建, + 让每一条健康的连接器扫描都触发告警,操作员很快学会忽略它;`acted: 1` 会高报一次查询, + 让告警永不触发——那正是 #4354 要修的原始 bug 换个楼层重演。于是执行器报 + `metrics: { unmeasuredEffect: true }`,运行汇总记一笔 `unmeasured`。 + + 诚实,但也是盲区:**任何走连接器的自动化流程都贡献不出任何信号**——既无法证明自己 + 干过活,也无法在停止干活时被标记出来。 + + **现在动作可以自己声明。** `ConnectorActionSchema` 新增可选的 `effect`: + + ```ts + actions: [ + { key: "push_opportunity", label: "Push Opportunity", effect: "write" }, + { key: "lookup_account", label: "Lookup Account", effect: "read" }, + { key: "legacy_action", label: "Legacy" }, // 不声明 —— 行为完全不变 + ]; + ``` + + `connector_action` 执行器据此计数:声明 `write` 且派发成功 → `acted: 1`;声明 `read` + → `acted: 0`(这是一个**真实测得的零**,不是耸肩,所以只做查询的流程重新落入断扫告警 + 的射程);不声明 → 维持原样 `unmeasuredEffect`。派发失败时,声明 `write` 的动作回落为 + 不可计数而非零——处理器抛错时上游可能已经写成了,这与 `http` 节点对被拒绝的写请求做的 + 判断一致;声明 `read` 的动作则仍报 `acted: 0`,它无论如何都不可能改动任何东西。 + + 声明是可选的,这是有意为之:**已有的连接器一个字都不用改,报告的内容与之前逐字相同**, + 声明它是纯增益而不是一次迁移。`unmeasuredEffect` 的含义和消费者一个都没变,它现在是 + 兜底而不是唯一答案。 + + 同一个声明也随 `ConnectorActionDescriptor` 一路送到设计器:`GET /api/v1/automation/connectors` + 现在会带上 `effect`,作者在流程设计器里挑动作时,"这个会写" 是关于这次选择的事实。 + + `effect` 落在**可作者化的** `ConnectorActionSchema` 上,而不只是描述符接口上,因为那是 + 唯一可能的产地:`AutomationEngine.registerConnector` 存的是 `ConnectorSchema.parse(def)` + 的结果,描述符是从这份 def 投影出来的。插件注册路径和 ADR-0097 声明式 materialization + 路径都经过这一次 parse,所以两条路都能声明;只加在描述符上则永远无法被任何东西填充 + (`ConnectorSchema` 是非 strict 的 `z.object`,改动前作者写下的 `effect` 会被静默丢弃)。 + + bulk 场景的**计数型**效果(一次动作报告它在上游碰了多少条记录)暂不做,等真实需求。 + 读/写这一刀才是解开告警的那一刀。 + +### Patch Changes + +- bdc8e70: fix(service-automation): runAs:'system' 的 create_record 按 ADR-0118 染全三列——组织、属主、创建者禁 NULL (#5494) + + 修的是缺陷,不是新语义——契约是 ADR-0118(#4608)既有的:显式 `isSystem`、fail-closed、 + 禁 NULL 歧义;`runAs` 声明的是授权姿态而非身份(ADR-0073 D2),提权不等于匿名。 + + 根因:`resolveRunDataContext` 的 system 分支把触发上下文的 `userId` / `tenantId` 整个丢弃, + 而三列的平台盖章恰好全部键在被丢弃的信息上——`created_by` 键在写上下文的 `userId` + (ObjectQL 审计钩子)、`owner_id` 键在安全中间件的 acting user(而整条中间件含盖章步骤在 + `isSystem` 上短路)、`organization_id` 键在上下文 `tenantId`(驱动层租户机制)。于是用户 + 触发的 system 清扫流程建出的每一行三列全 NULL:落在组织分区之外(唯一索引跨 NULL 不生效、 + org 作用域查询看不见),也落在所有 owner/creator 作用域授权之外——issue 里"admin 都 + 403"的由来。 + + 修复(writer 侧,`packages/services/service-automation`): + + - system 分支把触发身份原样带过去(`userId` + `tenantId`),与 action-body 缝的 + `{ ...caller, isSystem: true }` 信封(hotcrm#548 同族修复)同形:`isSystem` 独自决定 + 授权(中间件在读到 `userId` 之前就短路),身份只驱动归因盖章(`created_by`/`updated_by`、 + 审计 actor)、驱动层的 `organization_id` 填充,以及下游 record-change 级联的触发身份; + - `create_record` 对 system 运行补 `owner_id` 填充(fill-only、schema 存在才染):所有权锚 + 的平台盖章在 `isSystem` 上被短路,payload 是唯一通道;染的是 acting user——与同一触发在 + `runAs:'user'` 下会得到的默认一致,不是把系统身份塞进 owner(ADR-0118 D6 / ADR-0073 D3); + - 流程 `fields` 显式给值一律优先;真正无用户的运行(schedule)保持三列不染——没有 acting + user 时按 ADR-0118 D1,哨兵串与伪用户都是被禁的替代品,`svc:flow:*` actor 标签 + + `flowRunId` 继续承担溯源。 + + 行为变化:`runAs:'system'` 且触发上下文带 org 的运行,其数据操作在驱动层按 + `(org = 触发 org OR org IS NULL)` 作用域——与 action-body 缝一致的姿态;schedule 触发的 + 运行不带 org,行为不变。 + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/formula@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Major Changes diff --git a/packages/services/service-automation/package.json b/packages/services/service-automation/package.json index 7b147243e7..483dcd13b2 100644 --- a/packages/services/service-automation/package.json +++ b/packages/services/service-automation/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-automation", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Automation Service for ObjectStack — implements IAutomationService with plugin-based DAG flow execution engine", "type": "module", diff --git a/packages/services/service-cache/CHANGELOG.md b/packages/services/service-cache/CHANGELOG.md index 0b871307d8..3c5f804418 100644 --- a/packages/services/service-cache/CHANGELOG.md +++ b/packages/services/service-cache/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/service-cache +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/observability@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/services/service-cache/package.json b/packages/services/service-cache/package.json index edcb850851..8435eb3c69 100644 --- a/packages/services/service-cache/package.json +++ b/packages/services/service-cache/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-cache", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Cache Service for ObjectStack — implements ICacheService with in-memory and Redis adapters", "type": "module", diff --git a/packages/services/service-cluster-redis/CHANGELOG.md b/packages/services/service-cluster-redis/CHANGELOG.md index d811536fec..3b92c8b116 100644 --- a/packages/services/service-cluster-redis/CHANGELOG.md +++ b/packages/services/service-cluster-redis/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/service-cluster-redis +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/service-cluster@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/services/service-cluster-redis/package.json b/packages/services/service-cluster-redis/package.json index 0ff95b8c24..e8294ea202 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": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Redis cluster driver for ObjectStack — implements IPubSub/ILock/IKV/ICounter against Redis using ioredis.", "type": "module", diff --git a/packages/services/service-cluster/CHANGELOG.md b/packages/services/service-cluster/CHANGELOG.md index bf5e82ff93..62b642cb83 100644 --- a/packages/services/service-cluster/CHANGELOG.md +++ b/packages/services/service-cluster/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/service-cluster +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/services/service-cluster/package.json b/packages/services/service-cluster/package.json index 03f417952d..13627039a2 100644 --- a/packages/services/service-cluster/package.json +++ b/packages/services/service-cluster/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-cluster", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Cluster Service for ObjectStack — pluggable PubSub/Lock/KV/Counter primitives. Memory driver included; postgres/redis drivers ship separately.", "type": "module", diff --git a/packages/services/service-datasource/CHANGELOG.md b/packages/services/service-datasource/CHANGELOG.md index db8301e450..7cd95d8fa4 100644 --- a/packages/services/service-datasource/CHANGELOG.md +++ b/packages/services/service-datasource/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/service-external-datasource +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/types@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Minor Changes diff --git a/packages/services/service-datasource/package.json b/packages/services/service-datasource/package.json index d71dba0cd0..424aa109aa 100644 --- a/packages/services/service-datasource/package.json +++ b/packages/services/service-datasource/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-datasource", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "The datasource service (ADR-0015): external-table federation (introspect/draft/import/validate) + runtime UI datasource lifecycle (list/test/create/update/remove + REST routes). Open-source mechanism; the tier line falls on which ICryptoProvider / driver factory a host injects.", "type": "module", diff --git a/packages/services/service-i18n/CHANGELOG.md b/packages/services/service-i18n/CHANGELOG.md index 4e180194ce..10cbb9442e 100644 --- a/packages/services/service-i18n/CHANGELOG.md +++ b/packages/services/service-i18n/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/service-i18n +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/types@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/services/service-i18n/package.json b/packages/services/service-i18n/package.json index 6d0d8632ab..2b47fc49ec 100644 --- a/packages/services/service-i18n/package.json +++ b/packages/services/service-i18n/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-i18n", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "I18n Service for ObjectStack — implements II18nService with file-based locale loading", "type": "module", diff --git a/packages/services/service-job/CHANGELOG.md b/packages/services/service-job/CHANGELOG.md index 4984397ec8..0bfd463112 100644 --- a/packages/services/service-job/CHANGELOG.md +++ b/packages/services/service-job/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/service-job +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/platform-objects@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/services/service-job/package.json b/packages/services/service-job/package.json index 5a47aab64b..1cdda2a9a3 100644 --- a/packages/services/service-job/package.json +++ b/packages/services/service-job/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-job", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Job Service for ObjectStack — implements IJobService with setInterval and cron scheduling", "type": "module", diff --git a/packages/services/service-knowledge/CHANGELOG.md b/packages/services/service-knowledge/CHANGELOG.md index fd638f1e79..5d95846f7d 100644 --- a/packages/services/service-knowledge/CHANGELOG.md +++ b/packages/services/service-knowledge/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/service-knowledge +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/services/service-knowledge/package.json b/packages/services/service-knowledge/package.json index 1ab70bb9f9..3f59bd935c 100644 --- a/packages/services/service-knowledge/package.json +++ b/packages/services/service-knowledge/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-knowledge", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Knowledge Service for ObjectStack — orchestrator implementing IKnowledgeService over pluggable IKnowledgeAdapter backends (RAGFlow, LlamaIndex, Dify, in-memory).", "type": "module", diff --git a/packages/services/service-messaging/CHANGELOG.md b/packages/services/service-messaging/CHANGELOG.md index 57e52005fd..c060fced44 100644 --- a/packages/services/service-messaging/CHANGELOG.md +++ b/packages/services/service-messaging/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/service-messaging +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/platform-objects@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Minor Changes diff --git a/packages/services/service-messaging/package.json b/packages/services/service-messaging/package.json index 02009ac1f2..b3d677d556 100644 --- a/packages/services/service-messaging/package.json +++ b/packages/services/service-messaging/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-messaging", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Messaging Service for ObjectStack — outbound notification dispatch (ADR-0012). Ships the MessagingChannel registry, emit() fan-out, and the always-on inbox channel; other channels (email/webhook/push/IM) plug in.", "type": "module", diff --git a/packages/services/service-package/CHANGELOG.md b/packages/services/service-package/CHANGELOG.md index 109fab3052..4be31b3d9f 100644 --- a/packages/services/service-package/CHANGELOG.md +++ b/packages/services/service-package/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/service-package +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/metadata-core@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/services/service-package/package.json b/packages/services/service-package/package.json index d5fb0960ff..2daa181d3a 100644 --- a/packages/services/service-package/package.json +++ b/packages/services/service-package/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-package", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "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 04dfb24751..83d3a0a17c 100644 --- a/packages/services/service-queue/CHANGELOG.md +++ b/packages/services/service-queue/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/service-queue +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/platform-objects@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Minor Changes diff --git a/packages/services/service-queue/package.json b/packages/services/service-queue/package.json index c2dbc6c20f..e241aec459 100644 --- a/packages/services/service-queue/package.json +++ b/packages/services/service-queue/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-queue", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Queue Service for ObjectStack — implements IQueueService with in-memory and durable DB-backed (sys_job_queue) adapters", "type": "module", diff --git a/packages/services/service-realtime/CHANGELOG.md b/packages/services/service-realtime/CHANGELOG.md index a013f75752..76ef36e214 100644 --- a/packages/services/service-realtime/CHANGELOG.md +++ b/packages/services/service-realtime/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/service-realtime +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/platform-objects@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/services/service-realtime/package.json b/packages/services/service-realtime/package.json index 13e3237e3b..b0c8e1902c 100644 --- a/packages/services/service-realtime/package.json +++ b/packages/services/service-realtime/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-realtime", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Realtime Service for ObjectStack — implements IRealtimeService with WebSocket and in-memory pub/sub", "type": "module", diff --git a/packages/services/service-settings/CHANGELOG.md b/packages/services/service-settings/CHANGELOG.md index 9892da6c00..96d4096a02 100644 --- a/packages/services/service-settings/CHANGELOG.md +++ b/packages/services/service-settings/CHANGELOG.md @@ -1,5 +1,20 @@ # @objectstack/service-settings +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/platform-objects@17.0.0-rc.5 + - @objectstack/types@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Minor Changes diff --git a/packages/services/service-settings/package.json b/packages/services/service-settings/package.json index e95fbc27cc..dac977e0d2 100644 --- a/packages/services/service-settings/package.json +++ b/packages/services/service-settings/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-settings", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Settings service for ObjectStack — manifest registry + K/V resolver (OS_* env > Tenant > User > Default) + REST routes. See ADR-0007.", "type": "module", diff --git a/packages/services/service-sms/CHANGELOG.md b/packages/services/service-sms/CHANGELOG.md index 1a393d2211..35ba6353e6 100644 --- a/packages/services/service-sms/CHANGELOG.md +++ b/packages/services/service-sms/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/service-sms +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/plugin-auth@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Minor Changes diff --git a/packages/services/service-sms/package.json b/packages/services/service-sms/package.json index d7d5615571..0f8a44f665 100644 --- a/packages/services/service-sms/package.json +++ b/packages/services/service-sms/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-sms", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "SMS service for ObjectStack — ISmsService + transport-pluggable outbound delivery (Aliyun / Twilio / log).", "main": "dist/index.js", diff --git a/packages/services/service-storage/CHANGELOG.md b/packages/services/service-storage/CHANGELOG.md index 814ce05942..4443d00b8f 100644 --- a/packages/services/service-storage/CHANGELOG.md +++ b/packages/services/service-storage/CHANGELOG.md @@ -1,5 +1,21 @@ # @objectstack/service-storage +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/observability@17.0.0-rc.5 + - @objectstack/platform-objects@17.0.0-rc.5 + - @objectstack/types@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Major Changes diff --git a/packages/services/service-storage/package.json b/packages/services/service-storage/package.json index 2d13fd422f..118ca178cc 100644 --- a/packages/services/service-storage/package.json +++ b/packages/services/service-storage/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-storage", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Storage Service for ObjectStack — implements IStorageService with local filesystem and S3 adapter skeleton", "type": "module", diff --git a/packages/spec/CHANGELOG.md b/packages/spec/CHANGELOG.md index b7bb5c7778..87fceb9a39 100644 --- a/packages/spec/CHANGELOG.md +++ b/packages/spec/CHANGELOG.md @@ -1,5 +1,289 @@ # @objectstack/spec +## 17.0.0-rc.5 + +### Major Changes + +- ce0cfe9: feat(spec)!: `system-data` 的桶默认不再包含 CSV `import`,改为按对象显式 opt-in (#4671) + + **FROM → TO:`managedBy: 'system-data'` 的默认 affordance 从 + `create/import/edit/delete/exportCsv: true` 收窄为 + `create/edit/delete/exportCsv: true`,`import: false`。** 需要 CSV 导入向导的对象 + 显式写一行: + + ```ts + export const SysHolidayCalendar = ObjectSchema.create({ + name: "sys_holiday_calendar", + managedBy: "system-data", + userActions: { import: true }, // 明确要这个入口 + }); + ``` + + `platform` 现在是唯一默认授予 `import` 的桶。其余五个桶(`config`、`system-data`、 + `engine-owned`、`append-only`、`better-auth`)一致地把它留给对象自己声明。 + + ## 具体消失的是哪几个 UI 入口 + + 仓内 8 个 `system-data` 对象都不再从桶默认继承导入向导,其中要紧的是三张 RBAC 关联表 —— + 它们是整个权限模型的**授予面**: + + | 对象 | v17-rc.3 之前的管理台入口 | 本次之后 | + | :---------------------------- | :---------------------------- | :---------------------- | + | `sys_user_position` | 「CSV 批量绑定用户 ↔ 岗位」 | 不再出现(需显式 opt-in) | + | `sys_user_permission_set` | 「CSV 批量绑定用户 ↔ 权限集」 | 不再出现(需显式 opt-in) | + | `sys_position_permission_set` | 「CSV 批量绑定岗位 ↔ 权限集」 | 不再出现(需显式 opt-in) | + + 另外 5 个成员(`sys_user_preference`、`sys_approval_delegation`、 + `sys_notification_template`、`sys_notification_subscription`、 + `sys_notification_preference`)同样从「有导入入口」回到「无导入入口」。 + + **要恢复其中任意一个,在该对象上加 `userActions: { import: true }` 即可** —— 只动 + `import` 这一个动词,create/edit/delete/exportCsv 仍走桶默认,不需要像 v16 那样把整块 + `userActions` 抄回来。 + + ## 为什么 + + 授权边界一点没动。`import` 是 **affordance**,只决定 UI 入口是否渲染;CSV 导入写下的每一行 + 仍然逐条经过 `DelegatedAdminGate`、RLS 与权限集裁决 —— 一个无权手工授予某权限集的 admin, + 通过 CSV 同样授不出去(ADR-0103 D5 关于 enforcement 的结论完全不变)。 + + 变的是**杠杆**:逐行点选时一次误操作影响一个人;一份错误 CSV 就是一次批量授权,且没有天然的 + 复核节奏 —— 而这三张表恰好决定「谁能做什么」。所以批量授予入口应当是一次显式声明,而不是 + 「被归进了正确的桶」就自动继承的东西。对成批继承桶默认的 AI 生成对象元数据尤其如此: + 「没想过 import」的默认结果落在安全侧,打开它则是 reviewer 能看见的一行。 + + 原先「默认含 import」出自 #3355 上更早的 agent 会话(评论带 Claude Code 脚注),不是维护者 + 拍板;当时的实现 agent 自己标注了这条 security-adjacent 并指出裁决可能未考虑批量绑定权限集 + 这一具体场景。维护者 2026-08-03 正式裁决收窄,2026-08-06 最终确认。记录见 ADR-0103 的 + #4671 addendum。 + + ## 升级影响 + + **从 v16 升上来的用户:零影响。** v16 的 `managedBy: 'system'` 默认 LOCKED,8 个成员各自用 + `userActions: { create, edit, delete }` 重开写入,没有一个重开 `import` —— 所以 CSV 导入在 + v16 就解析为 `false`,改名后仍是 `false`。#3355 的 4 个包逐对象 before/after 等价 pin 因此 + 从「四动词等价 + 一条 import 差异」变成**五动词全等价**,并新增一条 opt-in 可达性 pin。 + + **已在 v17 rc.1–rc.3 上依赖 `system-data` 默认导入入口的用户:** 加 + `userActions: { import: true }`。 + +### Minor Changes + +- e8f8f6c: feat(integration): 连接器动作可以声明它在上游做了什么,`connector_action` 因此能被计数 (#4395) + + #4354 给每次流程运行加上了 `selected` / `acted` 汇总,断扫告警是 + `selected > 0 AND acted = 0 AND unmeasured = 0`。`connector_action` 当时只能给出三个 + 答案里最诚实的那个:`ConnectorActionSchema` 只描述动作的**形状**(`key` / `label` / + `inputSchema` / `outputSchema`),对它究竟读还是写只字未提,所以 `crm.push_opportunity` + 和 `crm.lookup_account` 在运行时完全无法区分。`acted: 0` 会低报一次 Salesforce 创建, + 让每一条健康的连接器扫描都触发告警,操作员很快学会忽略它;`acted: 1` 会高报一次查询, + 让告警永不触发——那正是 #4354 要修的原始 bug 换个楼层重演。于是执行器报 + `metrics: { unmeasuredEffect: true }`,运行汇总记一笔 `unmeasured`。 + + 诚实,但也是盲区:**任何走连接器的自动化流程都贡献不出任何信号**——既无法证明自己 + 干过活,也无法在停止干活时被标记出来。 + + **现在动作可以自己声明。** `ConnectorActionSchema` 新增可选的 `effect`: + + ```ts + actions: [ + { key: "push_opportunity", label: "Push Opportunity", effect: "write" }, + { key: "lookup_account", label: "Lookup Account", effect: "read" }, + { key: "legacy_action", label: "Legacy" }, // 不声明 —— 行为完全不变 + ]; + ``` + + `connector_action` 执行器据此计数:声明 `write` 且派发成功 → `acted: 1`;声明 `read` + → `acted: 0`(这是一个**真实测得的零**,不是耸肩,所以只做查询的流程重新落入断扫告警 + 的射程);不声明 → 维持原样 `unmeasuredEffect`。派发失败时,声明 `write` 的动作回落为 + 不可计数而非零——处理器抛错时上游可能已经写成了,这与 `http` 节点对被拒绝的写请求做的 + 判断一致;声明 `read` 的动作则仍报 `acted: 0`,它无论如何都不可能改动任何东西。 + + 声明是可选的,这是有意为之:**已有的连接器一个字都不用改,报告的内容与之前逐字相同**, + 声明它是纯增益而不是一次迁移。`unmeasuredEffect` 的含义和消费者一个都没变,它现在是 + 兜底而不是唯一答案。 + + 同一个声明也随 `ConnectorActionDescriptor` 一路送到设计器:`GET /api/v1/automation/connectors` + 现在会带上 `effect`,作者在流程设计器里挑动作时,"这个会写" 是关于这次选择的事实。 + + `effect` 落在**可作者化的** `ConnectorActionSchema` 上,而不只是描述符接口上,因为那是 + 唯一可能的产地:`AutomationEngine.registerConnector` 存的是 `ConnectorSchema.parse(def)` + 的结果,描述符是从这份 def 投影出来的。插件注册路径和 ADR-0097 声明式 materialization + 路径都经过这一次 parse,所以两条路都能声明;只加在描述符上则永远无法被任何东西填充 + (`ConnectorSchema` 是非 strict 的 `z.object`,改动前作者写下的 `effect` 会被静默丢弃)。 + + bulk 场景的**计数型**效果(一次动作报告它在上游碰了多少条记录)暂不做,等真实需求。 + 读/写这一刀才是解开告警的那一刀。 + +- 7f713b6: feat(spec): name the parsed state `XParsed` on every schema that has one (ADR-0122, #5551) + + A Zod schema denotes two types — `z.input` (what an author writes: defaulted keys + optional, pre-transform) and `z.infer` (what `.parse()` returns) — and `packages/spec` + has been naming them two different ways with nothing written down about which is which. + Measurement on `origin/main`: **1384** bare aliases mean the parsed state, **86** mean + the author state, and three separate first-hand sources each described the 8-file + minority as "the house convention". No ADR recorded either spelling. + + **[ADR-0122](https://github.com/objectstack-ai/objectstack/blob/main/docs/adr/0122-schema-type-alias-naming-convention.md) + settles it: the bare name `X` is the AUTHOR state, `XParsed` is the PARSED state.** The + deciding argument is the keystroke every author writes first — `const c: Connector = { … }` + — which should be correct by default in every domain, without knowing which file you are in. + + **This release is phase 1, and it is purely additive. Nothing is renamed or removed; + no existing annotation stops compiling.** It declares `XParsed` for the **657** aliases + whose schema genuinely has two distinct shapes, so that every consumer whose meaning + phase 2 will change already has a name to move to: + + ```ts + // before — one name, meaning the parsed state + export type Connector = z.infer; + export type ConnectorInput = z.input; + + // after — the parsed state also has a name that will keep meaning it + export type Connector = z.infer; + export type ConnectorParsed = z.infer; // new + export type ConnectorInput = z.input; // unchanged + ``` + + Schemas whose `z.input` and `z.infer` are the _same_ type (enums, plain unions, objects + with no defaults or transforms anywhere in their tree) deliberately get **no** `XParsed` + — a permanent synonym is a name you can only pick wrongly. All 718 of them are pinned + with compile-time assertions so the exemption cannot rot silently when one later gains + a `.default()`. + + One name to note if you are upgrading across protocol 17: `FieldMapping` does **not** + gain a `FieldMappingParsed`. #5552 retired `FieldMapping.transform` and the whole + `FieldMappingTransform` union in the same release, and that key was the only reason the + schema had two shapes — so it is now isomorphic, and under this convention it correctly + keeps exactly one name. + + **What to do now (optional, and cheap).** If you hold the result of a `.parse()` — or of + a `defineX()` factory, which returns it — move that annotation to `XParsed`: + + ```ts + -const c: Connector = ConnectorSchema.parse(raw); + +const c: ConnectorParsed = ConnectorSchema.parse(raw); + ``` + + Annotations on values you _write_ need no change now and will be correct after phase 2. + Doing nothing is also fine until then. + + **What comes next.** Phase 2 flips the bare names to `z.input` and ships in a major, with + its own changeset and migration notes. `XInput` aliases are untouched by this release and + their fate is decided then. + +- def5919: refactor(client)!: `subscribeMetadata` 的 `type` 收窄为 `MetadataEventSubject`,订阅一个合同上永远不会来的事件改为编译报错 (#4627) + + `MetadataEventType` 是一个封闭枚举:13 个 metadata 类型 × 3 个动作。#4602 已经把生产端钉成 declared = enforced —— 枚举外的类型(`translation`、`datasource`、`page`、`hook`、`trigger`、`validation` 等,全都是 `DEFAULT_METADATA_TYPE_REGISTRY` 里可注册的真实类型)**不发布**任何 realtime 事件,因为不存在能合法交付给 `(event: MetadataEvent) => void` 回调的事件形状。 + + 消费端却一直是宽的 `string`。于是 `client.events.subscribeMetadata('translation', cb)` 编译全绿、运行永盲:回调永远不会被调用,而类型系统一个字都没说。这正是 AI 写订阅代码最容易踩的形状 —— 它看起来订阅上了。 + + 本次把消费端也钉上,两端对齐后这种代码写不出来。 + + **新增导出**:`@objectstack/spec/api` 的 `MetadataEventSubject` —— `metadata.{type}.{action}` 的 `{type}` 半边,`'object' | 'field' | 'view' | …`。它是从 `MetadataEventType` **派生**的(模板字面量 + 分发式条件类型),不是在旁边重抄一份,所以两者不可能各说各话:枚举加一个成员,这个联合自动跟着长。`check:api-surface` 记录为 0 breaking / 1 added。 + + **签名收窄**(三处,全部只是把 `string` 换成这个联合): + + - `@objectstack/client` 的 `RealtimeAPI.subscribeMetadata(type, …)` + - `@objectstack/client-react` 的 `useMetadataSubscription(type, …)` + - `@objectstack/client-react` 的 `useMetadataSubscriptionCallback(type, …)` + + **FROM → TO —— 原来传 `string` 的代码怎么改** + + 枚举内的字面量一个字都不用动,本仓 6 处调用点(`'object'`)零迁移: + + ```ts + // 照常编译,没有变化 + client.events.subscribeMetadata("object", onEvent); + useMetadataSubscription("view"); + ``` + + 真正被拒绝的只有两种写法,各有各的一行修复: + + ```ts + // FROM —— 变量声明成了宽的 string + const type: string = route.params.metaType; + client.events.subscribeMetadata(type, onEvent); // TS2345 + + // TO —— 把变量(或 state、或路由参数)的类型改成这个联合 + import type { MetadataEventSubject } from "@objectstack/spec/api"; + const type: MetadataEventSubject = "object"; + client.events.subscribeMetadata(type, onEvent); + ``` + + ```ts + // FROM —— 订阅一个没有 realtime 合同的类型 + client.events.subscribeMetadata("translation", onEvent); // TS2345 + + // TO —— 删掉它。这段代码从 #4602 起就收不到任何事件, + // 编译器现在说的是它一直以来的运行时事实,不是新增的限制。 + ``` + + 编译器会把每一处指出来,错误码都是 **TS2345**(`Argument of type '"translation"' is not assignable to parameter of type 'MetadataEventSubject'`)。**运行时行为零变化** —— 被拒绝的调用本来就收不到事件,标 major 是因为这是源码级破坏性变更(#5181 的同一条先例:源码级破坏、运行时不变,仍走 major)。 + + **本次不做、也不预答的**:哪些可注册类型「应该」有 realtime 事件,是 #4627 的轴 2 —— 一个由真实需求驱动的产品覆盖面问题(例如 #4426 的 flow/workflow i18n 若落地会把 `translation` 推上来)。枚举没有动一个成员。派生关系保证了这件事将来只需要改一处:枚举加三个名字,两端同时跟上。 + +- 1363084: feat(spec,objectql): `engine.transaction` 契约收紧第一批 —— `opts.require` fail-closed 与 `owned` 信号 (#5696) + + `IObjectQLEngine.transaction` 的声明面(`packages/spec/src/contracts/objectql-engine.ts`, + ADR-0119 D1)此前把「默认驱动之外的对象写在事务外」与「驱动没有 `beginTransaction` + 时静默降级」写成**声明语义**的一部分。#4619 把这两条降级变得可观测(PR #5724),本次 + 把其中两条收紧为调用方可选的契约,并同步修订 TSDoc 的事实性偏差。 + + **新增(可选,默认行为完全不变):** + + - `transaction(cb, base, { require: true })` —— 驱动没有 `beginTransaction` 时 + **抛 `TransactionUnsupportedError`(`code: 'ERR_TRANSACTION_UNSUPPORTED'`)**, + 而不是静默降级成「无事务、无回滚」。在回调运行**之前**拒绝,所以调用方收到错误时 + 一行都还没写。这是把 `batchData` 的 atomic 门(ADR-0119 D4)泛化成通用能力: + 只为「开事务的唯一理由就是回滚」的调用方而设,不传 `require` 的行为一字未变 + (仍然降级 + warn-once)。 + - 回调的**第二个参数** `{ owned: boolean }` —— `true` 表示本次调用开启了事务并拥有 + 提交/回滚,`false` 表示它 **join** 了外层已开的 ambient 事务(ADR-0067 D2), + 或者处在降级路径上(那里根本没有事务可拥有)。join 语义本身正确且保留;缺的是 + 调用方**无从分辨**,而「整体一起回滚」这类担保只在 owned 时成立。单参数回调不受影响。 + + 两点在 `ctx.api.transaction`(`ScopedContext.transaction`,沙箱 hook/action 体)上 + 同样生效 —— 同一个原语的第二份实现不该变成第二种方言。 + + **契约文本修订:** transaction 的 TSDoc 原先写「路由到别处的对象在事务**外**写入」, + 实测不符 —— 引擎无条件把 ambient 事务句柄穿给了目标驱动,语句在**错误的连接**上执行 + (#5351 在真 SQL driver 上实测为 `no such table`)。TSDoc 已按实测改写,并声明了随后 + 落地的两条语义:业务写跨驱动**响亮拒绝**、系统账本(`lifecycle.class` 为 + `audit`/`telemetry`/`event`)**移出事务执行**。 + + **类型面:** `@objectstack/core` 的 `EngineWithTransaction` 从「手抄签名」改为 + `transaction: IObjectQLEngine['transaction']`,窄接口可以窄,但不能与真签名漂移。 + 新导出 `EngineTransactionOptions` / `EngineTransactionInfo`(spec `contracts` 命名空间, + 经 `@objectstack/core` 转出)。 + + 升级须知:无破坏性变更。既有调用点全部保持原行为;要 fail-closed 的调用方显式传 + `{ require: true }`。 + +### Patch Changes + +- c960170: tooling: strictness 台账新增第九个判定词 `covered` —— 给「无门、无 parse,但每个消费者都已把守」的形状片段一个诚实的格子 (#5249) + + `docs/audits/2026-07-unknown-key-strictness-ledger.md` 的 `Class` 列是**机读**的(按类小计是对它做算术),枚举值此前只有八个。`ui/app.zod.ts` 的 `BaseNavItemSchema` 八个都不合适,而这不是标签精度问题 —— **是词汇表返回了错误的动作**: + + - 两轴表(carrier / parse)把「carrier 缺席 + parse 缺席」解析成 `no door`,其规定的后续动作是 ADR-0049 退役。**在这里是破坏性的**:这个基底的键被九个导航分支共享,九个分支各自 `.strict()` 并带 `navItemUnknownKeyError`,退役等于删掉九个活着的分支的共享键。 + - `no gate` 反向错(门是存在的,就在成员上)。`authorable` 是 `view.zod.ts` 里 `FormFieldBaseSchema` 的先例,但**那个基底真的被 `.extend()`**,姿态会继承,所以它是一扇真门;把这个也记成 `authorable`,等于邀请下一轮 sweep 去「把活干完」—— 收紧一个没有任何 parse 的形状。 + - `verify` 的语义是「待检查」,而检查在批 19 就做完了。 + + 维护者 2026-08-06 裁定取 A:**加词,而不是四舍五入到最近的错误答案** —— 与批 15 加 `no gate` 同一条理由。同一个测量第二次返回相反方向的后续动作,说明缺的是一格判定,不是这个站点特殊。这一格的读者主要是后续 agent,一个指向错误**动作**的分类,会被执行它的人放大,正是「消费者侧宽容」在分类层的镜像。 + + **`covered` 的定义**:carrier 缺席、parse 缺席,但词汇在**每个消费者处都被完整把守**;后续动作是**无**。它拿到自己的桶而不是并入 `no door`:两者测量相同,但小计是一张工作清单,而两行规定的工作相反 —— 合并会把刚刚消除的歧义原样搬到上一层。 + + 改动面: + + - `packages/spec/scripts/lib/strictness-ledger-doc.ts` —— `VERDICTS` / `BUCKETS` / `BUCKET_OF` / `emptyBuckets()` / 渲染标签。`verify` 的**语义与归桶完全不动**(仍计入 authorable),它继续为下一个需要挂起的站点保留。 + - 台账 `ui/app.zod.ts` 行 `verify` → `covered`;头部散文补上词表变更的出处一行(批 13 `no door` / 批 15 `no gate` / #5249 `covered`),分类表与两轴表各补一行。 + - `.counts.md` 走 `gen:strictness-ledger` 整体重算:全局 authorable 43 → 42、新增 `covered` 1;`ui/` authorable 34 → 33、`covered` 1。总数仍是 197,分桶仍恰好划分。 + + **改判范围是测量出来的,不是走过场。** 判据是机械的:`covered` 要求键通过 `...X.shape` **展开**到达消费者 —— 展开把逐键 schema 复制进一个全新的 `z.object`,姿态是新对象自己的,所以基底是惰性的;而 `.extend()` / `.merge()` / `.omit()` **继承**姿态,基底就还是一扇真门。对五个已分诊目录的全部 **197** 个 strip 站点跑了这条判据,**只有一个**站点是展开的,就是本行。另外三个模块私有的 strip 基底各有归宿且**维持原判**:`view.zod.ts` 的 `FormFieldBaseSchema` 在 `:1475` 被 `.extend()`(姿态继承 → 真门 → 仍 `authorable`);`query.zod.ts` 的 `BaseQuerySchema` 在 `:485` 被 `.extend()` 成 `QuerySchema`(同理 → 仍 `open`);`component.zod.ts` 的 `EmptyProps` 作为**值**挂在 `ComponentPropsMap` 的十一个 carrier 键下(carrier 存在 → 根本不满足「carrier 缺席」)。其余约 50 个站点是属性下的内联嵌套字面量,天然自带 carrier,不可能是 `covered`。 + + 不改任何 schema 姿态 —— 批 19 已测定关掉这个基底是保证的 no-op,而 #4583 明确 no-op 收紧并非中性(_"a precisely-validated dead slot is the more convincing lie"_)。 + ## 17.0.0-rc.4 ### Major Changes diff --git a/packages/spec/package.json b/packages/spec/package.json index 5883456e2f..d4bc41a560 100644 --- a/packages/spec/package.json +++ b/packages/spec/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/spec", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "description": "ObjectStack Protocol & Specification - TypeScript Interfaces, JSON Schemas, and Convention Configurations", "license": "Apache-2.0", "main": "dist/index.js", diff --git a/packages/triggers/trigger-api/CHANGELOG.md b/packages/triggers/trigger-api/CHANGELOG.md index 2c6f1ffbbd..6dc1cd871f 100644 --- a/packages/triggers/trigger-api/CHANGELOG.md +++ b/packages/triggers/trigger-api/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/trigger-api +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/triggers/trigger-api/package.json b/packages/triggers/trigger-api/package.json index 1838006d5d..1b31439687 100644 --- a/packages/triggers/trigger-api/package.json +++ b/packages/triggers/trigger-api/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/trigger-api", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Inbound HTTP/webhook flow trigger for ObjectStack — per-flow HMAC-verified endpoints with queue-backed ingestion (ADR-0041)", "main": "dist/index.js", diff --git a/packages/triggers/trigger-record-change/CHANGELOG.md b/packages/triggers/trigger-record-change/CHANGELOG.md index deb8d4b8a2..d07e3c9fb7 100644 --- a/packages/triggers/trigger-record-change/CHANGELOG.md +++ b/packages/triggers/trigger-record-change/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/plugin-trigger-record-change +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/triggers/trigger-record-change/package.json b/packages/triggers/trigger-record-change/package.json index 97d77a05ae..2dfed35dde 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": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Record-change flow trigger for ObjectStack — auto-launches flows on object insert/update/delete via ObjectQL lifecycle hooks (ADR-0018)", "main": "dist/index.js", diff --git a/packages/triggers/trigger-schedule/CHANGELOG.md b/packages/triggers/trigger-schedule/CHANGELOG.md index 074b7c6f4c..45e65acafd 100644 --- a/packages/triggers/trigger-schedule/CHANGELOG.md +++ b/packages/triggers/trigger-schedule/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/plugin-trigger-schedule +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Patch Changes diff --git a/packages/triggers/trigger-schedule/package.json b/packages/triggers/trigger-schedule/package.json index cbc7077a3e..83bc76b7fa 100644 --- a/packages/triggers/trigger-schedule/package.json +++ b/packages/triggers/trigger-schedule/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/trigger-schedule", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "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 2bd3a5ca1b..c18a268420 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/types +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] + - @objectstack/spec@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Minor Changes diff --git a/packages/types/package.json b/packages/types/package.json index 03e695ee6f..e496ca0bef 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/types", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Shared interfaces describing the ObjectStack Runtime environment", "main": "dist/index.js", diff --git a/packages/verify/CHANGELOG.md b/packages/verify/CHANGELOG.md index 1e4942af72..e46ec441e4 100644 --- a/packages/verify/CHANGELOG.md +++ b/packages/verify/CHANGELOG.md @@ -1,5 +1,34 @@ # @objectstack/verify +## 17.0.0-rc.5 + +### Patch Changes + +- Updated dependencies [e8f8f6c] +- Updated dependencies [bdc8e70] +- Updated dependencies [7f713b6] +- Updated dependencies [c960170] +- Updated dependencies [def5919] +- Updated dependencies [ee3bde1] +- Updated dependencies [ce0cfe9] +- Updated dependencies [1363084] +- Updated dependencies [148d451] + - @objectstack/spec@17.0.0-rc.5 + - @objectstack/service-automation@17.0.0-rc.5 + - @objectstack/objectql@17.0.0-rc.5 + - @objectstack/core@17.0.0-rc.5 + - @objectstack/platform-objects@17.0.0-rc.5 + - @objectstack/plugin-auth@17.0.0-rc.5 + - @objectstack/plugin-hono-server@17.0.0-rc.5 + - @objectstack/plugin-security@17.0.0-rc.5 + - @objectstack/plugin-sharing@17.0.0-rc.5 + - @objectstack/rest@17.0.0-rc.5 + - @objectstack/runtime@17.0.0-rc.5 + - @objectstack/service-analytics@17.0.0-rc.5 + - @objectstack/service-datasource@17.0.0-rc.5 + - @objectstack/service-settings@17.0.0-rc.5 + - @objectstack/types@17.0.0-rc.5 + ## 17.0.0-rc.4 ### Minor Changes diff --git a/packages/verify/package.json b/packages/verify/package.json index 0d74ed845e..db91458f16 100644 --- a/packages/verify/package.json +++ b/packages/verify/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/verify", - "version": "17.0.0-rc.4", + "version": "17.0.0-rc.5", "license": "Apache-2.0", "description": "Boot any ObjectStack app in-process and verify it through the real HTTP stack — auto-derived CRUD round-trip fidelity plus the cross-owner RLS invariant. Catches runtime regressions that static checks miss.", "type": "module",