From f3ce1f26648dc39b27b0543fc4d627efc420ed38 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 22 Jul 2026 00:27:45 +0000 Subject: [PATCH] chore: version packages --- .changeset/business-unit-import-export.md | 17 ---- .../business-unit-member-import-export.md | 32 ------- .../capability-provider-preflight-3366.md | 28 ------ .changeset/console-cf2d56e32a11.md | 13 --- .../dashboard-filter-field-validation.md | 23 ----- .changeset/docs-homepage-16k-hero.md | 4 - .changeset/flag-dead-dashboard-action-refs.md | 11 --- .../notifications-hono-e2e-regression-test.md | 4 - .changeset/readme-hero-16k-ontology.md | 4 - .../readme-objectos-split-positioning.md | 4 - .../rename-framework-objectstack-refs.md | 4 - .../rename-framework-objectstack-tier2.md | 4 - .changeset/route-parity-gate.md | 4 - .../runas-user-grant-resolution-3356.md | 49 ---------- .changeset/server-timing-admin-gated-hono.md | 30 ------ examples/app-crm/CHANGELOG.md | 9 ++ examples/app-crm/package.json | 2 +- examples/app-showcase/CHANGELOG.md | 16 ++++ examples/app-showcase/package.json | 2 +- examples/app-todo/CHANGELOG.md | 16 ++++ examples/app-todo/package.json | 2 +- examples/embed-objectql/CHANGELOG.md | 9 ++ examples/embed-objectql/package.json | 2 +- packages/adapters/hono/CHANGELOG.md | 9 ++ packages/adapters/hono/package.json | 2 +- packages/apps/account/CHANGELOG.md | 10 ++ packages/apps/account/package.json | 2 +- packages/apps/setup/CHANGELOG.md | 10 ++ packages/apps/setup/package.json | 2 +- packages/apps/studio/CHANGELOG.md | 10 ++ packages/apps/studio/package.json | 2 +- packages/cli/CHANGELOG.md | 93 +++++++++++++++++++ packages/cli/package.json | 2 +- packages/client-react/CHANGELOG.md | 10 ++ packages/client-react/package.json | 2 +- packages/client/CHANGELOG.md | 9 ++ packages/client/package.json | 2 +- packages/cloud-connection/CHANGELOG.md | 12 +++ packages/cloud-connection/package.json | 2 +- .../connectors/connector-mcp/CHANGELOG.md | 9 ++ .../connectors/connector-mcp/package.json | 2 +- .../connectors/connector-openapi/CHANGELOG.md | 9 ++ .../connectors/connector-openapi/package.json | 2 +- .../connectors/connector-rest/CHANGELOG.md | 9 ++ .../connectors/connector-rest/package.json | 2 +- .../connectors/connector-slack/CHANGELOG.md | 9 ++ .../connectors/connector-slack/package.json | 2 +- packages/console/CHANGELOG.md | 14 +++ packages/console/package.json | 2 +- packages/core/CHANGELOG.md | 53 +++++++++++ packages/core/package.json | 2 +- packages/create-objectstack/CHANGELOG.md | 2 + packages/create-objectstack/package.json | 2 +- packages/formula/CHANGELOG.md | 7 ++ packages/formula/package.json | 2 +- packages/lint/CHANGELOG.md | 39 ++++++++ packages/lint/package.json | 2 +- packages/mcp/CHANGELOG.md | 11 +++ packages/mcp/package.json | 2 +- packages/metadata-core/CHANGELOG.md | 7 ++ packages/metadata-core/package.json | 2 +- packages/metadata-fs/CHANGELOG.md | 6 ++ packages/metadata-fs/package.json | 2 +- packages/metadata-protocol/CHANGELOG.md | 12 +++ packages/metadata-protocol/package.json | 2 +- packages/metadata/CHANGELOG.md | 15 +++ packages/metadata/package.json | 2 +- packages/objectql/CHANGELOG.md | 13 +++ packages/objectql/package.json | 2 +- packages/observability/CHANGELOG.md | 31 +++++++ packages/observability/package.json | 2 +- packages/platform-objects/CHANGELOG.md | 51 ++++++++++ packages/platform-objects/package.json | 2 +- packages/plugins/driver-memory/CHANGELOG.md | 9 ++ packages/plugins/driver-memory/package.json | 2 +- packages/plugins/driver-mongodb/CHANGELOG.md | 9 ++ packages/plugins/driver-mongodb/package.json | 2 +- packages/plugins/driver-sql/CHANGELOG.md | 12 +++ packages/plugins/driver-sql/package.json | 2 +- .../plugins/driver-sqlite-wasm/CHANGELOG.md | 10 ++ .../plugins/driver-sqlite-wasm/package.json | 2 +- packages/plugins/embedder-openai/CHANGELOG.md | 7 ++ packages/plugins/embedder-openai/package.json | 2 +- .../plugins/knowledge-memory/CHANGELOG.md | 10 ++ .../plugins/knowledge-memory/package.json | 2 +- .../plugins/knowledge-ragflow/CHANGELOG.md | 10 ++ .../plugins/knowledge-ragflow/package.json | 2 +- .../plugins/plugin-approvals/CHANGELOG.md | 14 +++ .../plugins/plugin-approvals/package.json | 2 +- packages/plugins/plugin-audit/CHANGELOG.md | 12 +++ packages/plugins/plugin-audit/package.json | 2 +- packages/plugins/plugin-auth/CHANGELOG.md | 15 +++ packages/plugins/plugin-auth/package.json | 2 +- packages/plugins/plugin-dev/CHANGELOG.md | 21 +++++ packages/plugins/plugin-dev/package.json | 2 +- packages/plugins/plugin-email/CHANGELOG.md | 13 +++ packages/plugins/plugin-email/package.json | 2 +- .../plugins/plugin-hono-server/CHANGELOG.md | 36 +++++++ .../plugins/plugin-hono-server/package.json | 2 +- .../plugins/plugin-pinyin-search/CHANGELOG.md | 9 ++ .../plugins/plugin-pinyin-search/package.json | 2 +- packages/plugins/plugin-reports/CHANGELOG.md | 12 +++ packages/plugins/plugin-reports/package.json | 2 +- packages/plugins/plugin-security/CHANGELOG.md | 13 +++ packages/plugins/plugin-security/package.json | 2 +- packages/plugins/plugin-sharing/CHANGELOG.md | 14 +++ packages/plugins/plugin-sharing/package.json | 2 +- packages/plugins/plugin-webhooks/CHANGELOG.md | 10 ++ packages/plugins/plugin-webhooks/package.json | 2 +- packages/qa/dogfood/CHANGELOG.md | 19 ++++ packages/qa/dogfood/package.json | 2 +- packages/qa/downstream-contract/CHANGELOG.md | 7 ++ packages/qa/downstream-contract/package.json | 2 +- packages/qa/http-conformance/CHANGELOG.md | 7 ++ packages/qa/http-conformance/package.json | 2 +- packages/rest/CHANGELOG.md | 40 ++++++++ packages/rest/package.json | 2 +- packages/runtime/CHANGELOG.md | 49 ++++++++++ packages/runtime/package.json | 2 +- packages/sdui-parser/CHANGELOG.md | 2 + packages/sdui-parser/package.json | 2 +- .../services/service-analytics/CHANGELOG.md | 9 ++ .../services/service-analytics/package.json | 2 +- .../services/service-automation/CHANGELOG.md | 56 +++++++++++ .../services/service-automation/package.json | 2 +- packages/services/service-cache/CHANGELOG.md | 11 +++ packages/services/service-cache/package.json | 2 +- .../service-cluster-redis/CHANGELOG.md | 8 ++ .../service-cluster-redis/package.json | 2 +- .../services/service-cluster/CHANGELOG.md | 9 ++ .../services/service-cluster/package.json | 2 +- .../services/service-datasource/CHANGELOG.md | 9 ++ .../services/service-datasource/package.json | 2 +- packages/services/service-i18n/CHANGELOG.md | 9 ++ packages/services/service-i18n/package.json | 2 +- packages/services/service-job/CHANGELOG.md | 12 +++ packages/services/service-job/package.json | 2 +- .../services/service-knowledge/CHANGELOG.md | 9 ++ .../services/service-knowledge/package.json | 2 +- .../services/service-messaging/CHANGELOG.md | 9 ++ .../services/service-messaging/package.json | 2 +- .../services/service-package/CHANGELOG.md | 10 ++ .../services/service-package/package.json | 2 +- packages/services/service-queue/CHANGELOG.md | 12 +++ packages/services/service-queue/package.json | 2 +- .../services/service-realtime/CHANGELOG.md | 12 +++ .../services/service-realtime/package.json | 2 +- .../services/service-settings/CHANGELOG.md | 13 +++ .../services/service-settings/package.json | 2 +- packages/services/service-sms/CHANGELOG.md | 9 ++ packages/services/service-sms/package.json | 2 +- .../services/service-storage/CHANGELOG.md | 14 +++ .../services/service-storage/package.json | 2 +- packages/spec/CHANGELOG.md | 28 ++++++ packages/spec/package.json | 2 +- packages/triggers/trigger-api/CHANGELOG.md | 9 ++ packages/triggers/trigger-api/package.json | 2 +- .../trigger-record-change/CHANGELOG.md | 53 +++++++++++ .../trigger-record-change/package.json | 2 +- .../triggers/trigger-schedule/CHANGELOG.md | 9 ++ .../triggers/trigger-schedule/package.json | 2 +- packages/types/CHANGELOG.md | 7 ++ packages/types/package.json | 2 +- packages/verify/CHANGELOG.md | 22 +++++ packages/verify/package.json | 2 +- packages/vscode-objectstack/CHANGELOG.md | 2 + packages/vscode-objectstack/package.json | 2 +- 167 files changed, 1287 insertions(+), 307 deletions(-) delete mode 100644 .changeset/business-unit-import-export.md delete mode 100644 .changeset/business-unit-member-import-export.md delete mode 100644 .changeset/capability-provider-preflight-3366.md delete mode 100644 .changeset/console-cf2d56e32a11.md delete mode 100644 .changeset/dashboard-filter-field-validation.md delete mode 100644 .changeset/docs-homepage-16k-hero.md delete mode 100644 .changeset/flag-dead-dashboard-action-refs.md delete mode 100644 .changeset/notifications-hono-e2e-regression-test.md delete mode 100644 .changeset/readme-hero-16k-ontology.md delete mode 100644 .changeset/readme-objectos-split-positioning.md delete mode 100644 .changeset/rename-framework-objectstack-refs.md delete mode 100644 .changeset/rename-framework-objectstack-tier2.md delete mode 100644 .changeset/route-parity-gate.md delete mode 100644 .changeset/runas-user-grant-resolution-3356.md delete mode 100644 .changeset/server-timing-admin-gated-hono.md diff --git a/.changeset/business-unit-import-export.md b/.changeset/business-unit-import-export.md deleted file mode 100644 index 7e0e0bbd66..0000000000 --- a/.changeset/business-unit-import-export.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -"@objectstack/platform-objects": patch ---- - -fix(platform-objects): allow import/export on sys_business_unit (#3025) - -The Business Units list (Setup → Business Units) surfaces Import/Export buttons, -but `sys_business_unit` declared a restrictive `enable.apiMethods` whitelist of -only the five CRUD verbs. The REST data plane gates import/export on that -whitelist (ADR-0049), so both buttons returned `405 OBJECT_API_METHOD_NOT_ALLOWED`. - -This was an unintentional gap, not a deliberate restriction: the object's fields -(`external_ref`, `effective_from/to`) are designed for HRIS batch sync, and the -org tree is expected to support bulk import. Added `'import'` and `'export'` to -the whitelist. Import reuses the `create`/`update` affordances the object already -grants, and the managed-object reconciliation backstop leaves import/export -untouched (it only strips write verbs). Regression test added. diff --git a/.changeset/business-unit-member-import-export.md b/.changeset/business-unit-member-import-export.md deleted file mode 100644 index 38b70f30c8..0000000000 --- a/.changeset/business-unit-member-import-export.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -"@objectstack/platform-objects": patch ---- - -fix(platform-objects): allow import/export on sys_business_unit_member (#3025 / #3391 P0) - -Completes the #3025 point-fix. #3392 unblocked `sys_business_unit`'s Import/Export -buttons (405 `OBJECT_API_METHOD_NOT_ALLOWED`) by adding `'import'`/`'export'` to its -`enable.apiMethods` whitelist, but the HRIS org-tree sync scenario imports **two -tables together** — the units *and* their memberships — and the sibling -`sys_business_unit_member` was left on the CRUD-only whitelist, so the membership -Import/Export path still 405'd. #3391's P0 checklist pairs both tables; this is the -half #3392 missed. - -- `packages/platform-objects/src/identity/sys-business-unit-member.object.ts`: - `apiMethods` gains `'import'`, `'export'`. Import reuses the object's - already-granted create/update affordances; export is a bulk read. -- Reconcile-safe: the object is `managedBy:'platform'`, but - `reconcileManagedApiMethods` only strips generic write verbs - (`create/update/upsert/delete/purge` — `MANAGED_WRITE_VERB_AFFORDANCE`). It never - touches `import`/`export`, so the declared whitelist reaches the REST gate intact - (no false-green: the static whitelist the regression test asserts IS what - `apiAccessDenialFromEnable` enforces at runtime). -- Regression test (`platform-objects.test.ts`) locks `import`/`export` presence and - CRUD retention. Proven red-before-green: reverting the object edit fails with - `expected [...] to include 'import'`. - -Transitional: #3391 P2 replaces per-object `import`/`export` declarations with a -single derived mapping (import ⊆ create/update, export ⊆ list) and reclaims the -explicit entries on both business-unit objects together. - -Refs #3025, #3391. diff --git a/.changeset/capability-provider-preflight-3366.md b/.changeset/capability-provider-preflight-3366.md deleted file mode 100644 index fa876e1db9..0000000000 --- a/.changeset/capability-provider-preflight-3366.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -"@objectstack/spec": minor -"@objectstack/cli": minor ---- - -feat(cli): preflight that every `requires` capability has an installable provider -in the current edition (#3366) - -A capability listed in `requires: [...]` was only checked at `serve`/`start` time, -and a missing provider produced a generic "not installed — add it to your -dependencies" error even when the provider has **no installable version in the -current edition**. `os validate` (token-vocabulary only) and `os build` (never -resolved providers) both passed, so a `validate && build && test` CI script never -caught it — it surfaced only as an opaque boot crash. Seen upgrading an -open-edition app from `14.7` to `16` after `@objectstack/service-ai` went -cloud-only (ADR-0025). - -- `@objectstack/spec/kernel` now exports `PLATFORM_CAPABILITY_PROVIDERS` - (token → provider package + edition) and a pure `classifyRequiredCapability()` — - one machine-readable source of truth for the provider/edition knowledge the - serve resolver previously encoded informally. -- `os build` and `os validate` gained a provider preflight. A `requires` entry - whose provider has **no installable version in the active edition** (e.g. `ai` → - `@objectstack/service-ai`, cloud-only) now fails fast with an edition-aware - message; an absent-but-installable provider is an advisory `pnpm add` hint, not - a hard error; a satisfied `requires` list passes unchanged. -- The `os serve` boot error now renders the same classification, so preflight and - boot read identically. diff --git a/.changeset/console-cf2d56e32a11.md b/.changeset/console-cf2d56e32a11.md deleted file mode 100644 index b16d89add5..0000000000 --- a/.changeset/console-cf2d56e32a11.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@objectstack/console": minor ---- - -Console (objectui) refreshed to `cf2d56e32a11`. Frontend changes in this range: - -- fix(list): keep injected owner_id out of auto-generated list columns (#2777) (#2779) -- feat(search): surface record hits on the full search page + i18n group labels (#2776) -- fix(i18n): apply globalActions label overlays on record-detail action bars (#2770) -- fix(command-palette): surface record search hits from /api/v1/search (#3371) (#2772) -- fix(SchemaForm): render sort repeater rows for union schemas (objectstack#3379) (#2771) - -objectui range: `9a5f016f7d5c...cf2d56e32a11` diff --git a/.changeset/dashboard-filter-field-validation.md b/.changeset/dashboard-filter-field-validation.md deleted file mode 100644 index 1867620c98..0000000000 --- a/.changeset/dashboard-filter-field-validation.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -"@objectstack/lint": minor ---- - -Validate dashboard filter field-existence at build time (extend ADR-0021, #3365). - -`validateWidgetBindings` now checks that every dashboard-level filter (`dateRange` -+ each `globalFilters[]`) resolves to a real field on each bound widget's dataset -object. Since #2501 wired these filters into every widget's analytics query, a -filter field absent on a widget's object — e.g. a `dateRange` bound to -`close_date` inherited by an account/contact widget over a different object — -emitted invalid SQL (`no such column: close_date`) and crashed the widget at -render time. That build-decidable invariant previously escaped `os validate` / -`os build` and failed only when a user opened the dashboard. - -It now fails the build (new rule `dashboard-filter-field-unknown`) with a message -naming the dashboard, widget, filter, field, and object, unless the widget opts -out via `filterBindings: { : false }` or re-targets to an existing field — -mirroring the field-existence invariant ADR-0032 enforces for CEL references. -Effective-field resolution matches the runtime (`filterBindings` re-target / -opt-out, legacy `targetWidgets` allow-list, filter default). Registry-injected -system fields (e.g. `created_at`, the `dateRange` default) and objects outside -the validated stack never false-positive. diff --git a/.changeset/docs-homepage-16k-hero.md b/.changeset/docs-homepage-16k-hero.md deleted file mode 100644 index 4f602a1f33..0000000000 --- a/.changeset/docs-homepage-16k-hero.md +++ /dev/null @@ -1,4 +0,0 @@ ---- ---- - -Docs-site homepage refresh: hero, page metadata, and closing CTA updated to the new positioning ("A complete business system in 16k tokens.", business-ontology framing, build & ask with Claude Code vs online via ObjectOS). Site copy only, so this releases nothing. diff --git a/.changeset/flag-dead-dashboard-action-refs.md b/.changeset/flag-dead-dashboard-action-refs.md deleted file mode 100644 index ed9502c53d..0000000000 --- a/.changeset/flag-dead-dashboard-action-refs.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@objectstack/lint": minor -"@objectstack/cli": minor ---- - -Flag dead action/route references in dashboard header & widget actions (ADR-0049 for references, #3367). - -`os validate` / `os build` now run a new `validateDashboardActionRefs` gate over every dashboard `header.actions[]` and widget `actionUrl`: - -- `actionType: 'script' | 'modal'` — **error** unless `actionUrl` resolves to a defined action (`stack.actions` or an object's `actions`). `modal` also resolves via the runtime `_` convention (`create_/new_/add_/edit_/update_` + a real object) and bare object names. A dangling target ships a button that renders and silently does nothing on click — a false affordance, exactly the "declared ≠ enforced" gap ADR-0049 closes, applied to references. -- `actionType: 'url'` — **warning** when a relative in-app path names a `objects/reports/dashboards/pages/views` route whose target does not exist in the stack. External URLs, interpolated (`${…}`) targets, and opaque routes are skipped to keep false positives near zero. diff --git a/.changeset/notifications-hono-e2e-regression-test.md b/.changeset/notifications-hono-e2e-regression-test.md deleted file mode 100644 index 853a2a73c4..0000000000 --- a/.changeset/notifications-hono-e2e-regression-test.md +++ /dev/null @@ -1,4 +0,0 @@ ---- ---- - -Add an end-to-end regression test that boots a real hono server (ObjectQL + messaging + dispatcher) and drives the in-app notifications mark-read flow over HTTP, asserting `sys_notification_receipt` rows flip to `read` and the unread count drops (#3362). Test-only (plus a test-scoped devDependency); no runtime code changes, so this releases nothing. diff --git a/.changeset/readme-hero-16k-ontology.md b/.changeset/readme-hero-16k-ontology.md deleted file mode 100644 index 8a0f21ff8c..0000000000 --- a/.changeset/readme-hero-16k-ontology.md +++ /dev/null @@ -1,4 +0,0 @@ ---- ---- - -README-only rewrite of the hero tagline ("A complete business system in 16k tokens.") weaving in the business-ontology narrative. Docs only, so this releases nothing. diff --git a/.changeset/readme-objectos-split-positioning.md b/.changeset/readme-objectos-split-positioning.md deleted file mode 100644 index 6e8f476cdb..0000000000 --- a/.changeset/readme-objectos-split-positioning.md +++ /dev/null @@ -1,4 +0,0 @@ ---- ---- - -README-only update after the objectos / objectstack repository split: state the "this repo = open-source framework, ObjectOS = commercial runtime environment" positioning on the first screen and cross-link the objectos repo. Docs only, so this releases nothing. diff --git a/.changeset/rename-framework-objectstack-refs.md b/.changeset/rename-framework-objectstack-refs.md deleted file mode 100644 index 48455115b8..0000000000 --- a/.changeset/rename-framework-objectstack-refs.md +++ /dev/null @@ -1,4 +0,0 @@ ---- ---- - -Repository-reference update for the GitHub rename `objectstack-ai/framework` -> `objectstack-ai/objectstack` (package.json repository/bugs URLs, doc links, CHANGELOG, skills-install commands, workspace file). Metadata and docs only, with no package code changes, so this releases nothing. diff --git a/.changeset/rename-framework-objectstack-tier2.md b/.changeset/rename-framework-objectstack-tier2.md deleted file mode 100644 index aed8964250..0000000000 --- a/.changeset/rename-framework-objectstack-tier2.md +++ /dev/null @@ -1,4 +0,0 @@ ---- ---- - -Tier-2 of the framework -> objectstack rename: retarget the core symlink and update residual local checkout-dir / pin-file references (.objectstack-sha mentions, personal paths, a skills-path comment). Symlink + docs/comments only, no package code changes, so this releases nothing. diff --git a/.changeset/route-parity-gate.md b/.changeset/route-parity-gate.md deleted file mode 100644 index e0f881aa6b..0000000000 --- a/.changeset/route-parity-gate.md +++ /dev/null @@ -1,4 +0,0 @@ ---- ---- - -Add a route-parity e2e gate (`declared === enforced` for HTTP routes, #3369). It boots the real hono app the way `os serve` mounts it (hono server + dispatcher plugin, services provisioned), reads `/api/v1/discovery`, and asserts every advertised / dispatcher-registered route is reachable — never 404/405/501 — for an anonymous AND an admin principal, and that discovery is service-aware in both directions (no dead advertisement). Also documents (comment-only) why the dispatcher advertises `routes.mcp` on the `isMcpServerEnabled()` flag rather than gating on service presence (the #2698 auto-load lockstep). Test + comment only; no runtime code changes, so this releases nothing. diff --git a/.changeset/runas-user-grant-resolution-3356.md b/.changeset/runas-user-grant-resolution-3356.md deleted file mode 100644 index 4f5be47aad..0000000000 --- a/.changeset/runas-user-grant-resolution-3356.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -"@objectstack/core": minor -"@objectstack/service-automation": minor -"@objectstack/trigger-record-change": patch ---- - -fix(service-automation): `runAs:'user'` runs data ops with the triggering user's -real permission sets + positions, not a bare member fallback (#3356, follow-up to -#1888) - -Since #1888 the automation engine honours `flow.runAs` (`system` elevates), but -the `runAs:'user'` credential propagation was hollow. A record-change-triggered -`runAs:'user'` flow ran its data nodes (`update_record`, …) with a **zero-grant** -principal — only the `member`/`everyone` baseline — even when the triggering user -was fully authorized. Two faces by object config: a `private` object 403'd the -in-flow write (`not permitted for positions [org_member, everyone]` — the user's -permission sets were invisible); a `public_read_write` object let the write -through but **silently stripped** readonly/FLS-gated fields. The root cause: the -ObjectQL record-change hook session carries only a `userId` — never the writer's -positions/permission sets — and nothing in between resolved them, so the comment -promising "enforces RLS exactly as the user who made the change" never held. - -The fix resolves the triggering user's **actual** authorization at run setup, from -the same tables a direct REST request resolves through: - -- **`@objectstack/core`** factors the userId-driven core of `resolveAuthzContext` - into a new exported `resolveUserAuthzGrants(ql, userId, opts)` — the single place - that reads `sys_member` / `sys_user_position` / `sys_*_permission_set` and - derives positions, permission-set names, `platform_admin`, and posture. The - HTTP resolver now delegates to it (behaviour byte-identical; the full contract - suite still passes), so a non-HTTP surface that already knows the user id builds - the SAME envelope instead of re-implementing the reads. -- **`@objectstack/service-automation`** gains `AutomationEngine.setUserGrantsResolver`, - wired by the plugin to `resolveUserAuthzGrants` over the objectql/data engine. - For a `runAs:'user'` run whose trigger left the authz envelope unresolved (no - `permissions`), the engine now resolves the user's positions + permission sets - once at run setup and threads them into every data node's ObjectQL context — - so the run enforces RLS/FLS exactly as that user. Contexts that already carry - `permissions` are left untouched (a REST trigger, and notably an ADR-0090 agent - ceiling acting on-behalf-of a user — always non-empty — so a deliberately - narrowed identity is never re-broadened). `runAs:'system'` is unchanged, and a - resolver error fails safe (warns, keeps the bare user — never elevates). -- **`@objectstack/trigger-record-change`** stops forwarding the misleading - half-populated `positions` (empty in practice, and never `permissions`) from the - hook session; it forwards `userId` + tenant only and lets the engine resolve the - full grants authoritatively. - -When no ObjectQL engine is present (bare engine / tests) the resolver is unwired -and run identity is unchanged from before. diff --git a/.changeset/server-timing-admin-gated-hono.md b/.changeset/server-timing-admin-gated-hono.md deleted file mode 100644 index 602c0e5e63..0000000000 --- a/.changeset/server-timing-admin-gated-hono.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -"@objectstack/observability": patch -"@objectstack/rest": patch -"@objectstack/plugin-hono-server": patch -"@objectstack/runtime": patch ---- - -fix(server-timing): emit the per-request, admin-gated `Server-Timing` header on the standard server (`os serve`/`dev`) (#3361) - -The per-request `Server-Timing` path (#2408) — where an admin sends -`X-OS-Debug-Timing: 1` (or `json`) and gets phase timings while an ordinary user -gets nothing — never emitted on the shipped Hono server. The disclosure gate the -Hono middleware opens is only ever flipped by the runtime dispatcher's -`timedResolveExecutionContext`, but the data (`/api/v1/data/*`) and metadata -(`/api/v1/meta/*`) routes on `os serve`/`dev` are served by `@objectstack/rest`'s -`RestServer` (which shadows the Hono plugin's own CRUD), and its identity -resolver never opened the gate. Only global mode (`OS_SERVER_TIMING=true`) — which -discloses to *every* caller, not just admins — worked. - -- **observability**: the disclosure predicate `isPerfDisclosurePrincipal(ec)` now - lives here (the home of the gate), the single definition of "who may pull - per-request timings" shared by every HTTP entry point. `@objectstack/runtime` - re-exports it for back-compat. -- **rest**: `RestServer.resolveExecCtx` opens the gate for an admin/service - principal (via the carried `posture` rung), the REST-server analog of the - dispatcher — this is the fix that makes `os serve`/`dev` emit. -- **plugin-hono-server**: the standalone CRUD surface's self-contained - `resolveCtx` opens the gate too (deriving the rung for the gate decision only, - never writing it onto the enforcement context). Adds an e2e test that boots the - Hono app and asserts an admin gets `Server-Timing` while a member/anon does not. diff --git a/examples/app-crm/CHANGELOG.md b/examples/app-crm/CHANGELOG.md index 44fd80fc59..7457e58abb 100644 --- a/examples/app-crm/CHANGELOG.md +++ b/examples/app-crm/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/example-crm +## 4.0.91 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [818e6a3] + - @objectstack/spec@16.1.0 + - @objectstack/runtime@16.1.0 + ## 4.0.90 ### Patch Changes diff --git a/examples/app-crm/package.json b/examples/app-crm/package.json index 131609c9ef..0b85ea68ea 100644 --- a/examples/app-crm/package.json +++ b/examples/app-crm/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/example-crm", - "version": "4.0.90", + "version": "4.0.91", "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 146f8e69c0..feea567b4d 100644 --- a/examples/app-showcase/CHANGELOG.md +++ b/examples/app-showcase/CHANGELOG.md @@ -1,5 +1,21 @@ # @objectstack/example-showcase +## 0.3.13 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [818e6a3] + - @objectstack/spec@16.1.0 + - @objectstack/runtime@16.1.0 + - @objectstack/cloud-connection@16.1.0 + - @objectstack/connector-mcp@16.1.0 + - @objectstack/connector-openapi@16.1.0 + - @objectstack/connector-rest@16.1.0 + - @objectstack/connector-slack@16.1.0 + - @objectstack/driver-sql@16.1.0 + - @objectstack/service-datasource@16.1.0 + ## 0.3.12 ### Patch Changes diff --git a/examples/app-showcase/package.json b/examples/app-showcase/package.json index 4a99be56e2..87815da0fc 100644 --- a/examples/app-showcase/package.json +++ b/examples/app-showcase/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/example-showcase", - "version": "0.3.12", + "version": "0.3.13", "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 822636e391..727245607b 100644 --- a/examples/app-todo/CHANGELOG.md +++ b/examples/app-todo/CHANGELOG.md @@ -1,5 +1,21 @@ # @objectstack/example-todo +## 4.0.91 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [818e6a3] + - @objectstack/spec@16.1.0 + - @objectstack/runtime@16.1.0 + - @objectstack/metadata@16.1.0 + - @objectstack/client@16.1.0 + - @objectstack/mcp@16.1.0 + - @objectstack/objectql@16.1.0 + - @objectstack/driver-sqlite-wasm@16.1.0 + - @objectstack/knowledge-memory@16.1.0 + - @objectstack/service-knowledge@16.1.0 + ## 4.0.90 ### Patch Changes diff --git a/examples/app-todo/package.json b/examples/app-todo/package.json index d72e6b9881..5b93fa3a8c 100644 --- a/examples/app-todo/package.json +++ b/examples/app-todo/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/example-todo", - "version": "4.0.90", + "version": "4.0.91", "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 6e60071872..faaa209fb8 100644 --- a/examples/embed-objectql/CHANGELOG.md +++ b/examples/embed-objectql/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/example-embed-objectql +## 0.0.31 + +### Patch Changes + +- Updated dependencies [9e45b63] + - @objectstack/spec@16.1.0 + - @objectstack/objectql@16.1.0 + - @objectstack/driver-memory@16.1.0 + ## 0.0.30 ### Patch Changes diff --git a/examples/embed-objectql/package.json b/examples/embed-objectql/package.json index c5bb388467..1879006109 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.30", + "version": "0.0.31", "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 7c3e08ebbc..92ceec2fb3 100644 --- a/packages/adapters/hono/CHANGELOG.md +++ b/packages/adapters/hono/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/hono +## 16.1.0 + +### Patch Changes + +- Updated dependencies [818e6a3] + - @objectstack/plugin-hono-server@16.1.0 + - @objectstack/runtime@16.1.0 + - @objectstack/types@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/adapters/hono/package.json b/packages/adapters/hono/package.json index 06b0a7c0ac..102097f7fd 100644 --- a/packages/adapters/hono/package.json +++ b/packages/adapters/hono/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/hono", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/apps/account/CHANGELOG.md b/packages/apps/account/CHANGELOG.md index 84029ed647..6fbeb49534 100644 --- a/packages/apps/account/CHANGELOG.md +++ b/packages/apps/account/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/account +## 16.1.0 + +### Patch Changes + +- Updated dependencies [212b66a] +- Updated dependencies [d10c4dc] +- Updated dependencies [9e45b63] + - @objectstack/platform-objects@16.1.0 + - @objectstack/spec@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/apps/account/package.json b/packages/apps/account/package.json index 61d485c742..a77dc47acc 100644 --- a/packages/apps/account/package.json +++ b/packages/apps/account/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/account", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "ObjectStack Account — the end-user account/self-service console app, packaged as its own ObjectStack app package (ADR-0048: one app per package).", "main": "dist/index.js", diff --git a/packages/apps/setup/CHANGELOG.md b/packages/apps/setup/CHANGELOG.md index aea2f8f01c..f3ee6708f6 100644 --- a/packages/apps/setup/CHANGELOG.md +++ b/packages/apps/setup/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/setup +## 16.1.0 + +### Patch Changes + +- Updated dependencies [212b66a] +- Updated dependencies [d10c4dc] +- Updated dependencies [9e45b63] + - @objectstack/platform-objects@16.1.0 + - @objectstack/spec@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/apps/setup/package.json b/packages/apps/setup/package.json index 3f7921cba7..f8cae83eb1 100644 --- a/packages/apps/setup/package.json +++ b/packages/apps/setup/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/setup", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "ObjectStack Setup — the platform administration app, packaged as its own ObjectStack app package (ADR-0048: one app per package).", "main": "dist/index.js", diff --git a/packages/apps/studio/CHANGELOG.md b/packages/apps/studio/CHANGELOG.md index 0062a78111..9852354dc4 100644 --- a/packages/apps/studio/CHANGELOG.md +++ b/packages/apps/studio/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/studio +## 16.1.0 + +### Patch Changes + +- Updated dependencies [212b66a] +- Updated dependencies [d10c4dc] +- Updated dependencies [9e45b63] + - @objectstack/platform-objects@16.1.0 + - @objectstack/spec@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/apps/studio/package.json b/packages/apps/studio/package.json index 376293ae03..516004f58f 100644 --- a/packages/apps/studio/package.json +++ b/packages/apps/studio/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/studio", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "ObjectStack Studio — the metadata builder app, packaged as its own ObjectStack app package (ADR-0048: one app per package).", "main": "dist/index.js", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 4c4b0c2142..6176b1ad13 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,98 @@ # @objectstack/cli +## 16.1.0 + +### Minor Changes + +- 9e45b63: feat(cli): preflight that every `requires` capability has an installable provider + in the current edition (#3366) + + A capability listed in `requires: [...]` was only checked at `serve`/`start` time, + and a missing provider produced a generic "not installed — add it to your + dependencies" error even when the provider has **no installable version in the + current edition**. `os validate` (token-vocabulary only) and `os build` (never + resolved providers) both passed, so a `validate && build && test` CI script never + caught it — it surfaced only as an opaque boot crash. Seen upgrading an + open-edition app from `14.7` to `16` after `@objectstack/service-ai` went + cloud-only (ADR-0025). + + - `@objectstack/spec/kernel` now exports `PLATFORM_CAPABILITY_PROVIDERS` + (token → provider package + edition) and a pure `classifyRequiredCapability()` — + one machine-readable source of truth for the provider/edition knowledge the + serve resolver previously encoded informally. + - `os build` and `os validate` gained a provider preflight. A `requires` entry + whose provider has **no installable version in the active edition** (e.g. `ai` → + `@objectstack/service-ai`, cloud-only) now fails fast with an edition-aware + message; an absent-but-installable provider is an advisory `pnpm add` hint, not + a hard error; a satisfied `requires` list passes unchanged. + - The `os serve` boot error now renders the same classification, so preflight and + boot read identically. + +- db160dd: Flag dead action/route references in dashboard header & widget actions (ADR-0049 for references, #3367). + + `os validate` / `os build` now run a new `validateDashboardActionRefs` gate over every dashboard `header.actions[]` and widget `actionUrl`: + + - `actionType: 'script' | 'modal'` — **error** unless `actionUrl` resolves to a defined action (`stack.actions` or an object's `actions`). `modal` also resolves via the runtime `_` convention (`create_/new_/add_/edit_/update_` + a real object) and bare object names. A dangling target ships a button that renders and silently does nothing on click — a false affordance, exactly the "declared ≠ enforced" gap ADR-0049 closes, applied to references. + - `actionType: 'url'` — **warning** when a relative in-app path names a `objects/reports/dashboards/pages/views` route whose target does not exist in the stack. External URLs, interpolated (`${…}`) targets, and opaque routes are skipped to keep false positives near zero. + +### Patch Changes + +- Updated dependencies [212b66a] +- Updated dependencies [d10c4dc] +- Updated dependencies [9e45b63] +- Updated dependencies [7b07417] +- Updated dependencies [fa006fb] +- Updated dependencies [db160dd] +- Updated dependencies [b20201f] +- Updated dependencies [818e6a3] + - @objectstack/platform-objects@16.1.0 + - @objectstack/spec@16.1.0 + - @objectstack/console@16.1.0 + - @objectstack/lint@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/service-automation@16.1.0 + - @objectstack/trigger-record-change@16.1.0 + - @objectstack/observability@16.1.0 + - @objectstack/rest@16.1.0 + - @objectstack/plugin-hono-server@16.1.0 + - @objectstack/runtime@16.1.0 + - @objectstack/account@16.1.0 + - @objectstack/setup@16.1.0 + - @objectstack/metadata@16.1.0 + - @objectstack/plugin-approvals@16.1.0 + - @objectstack/plugin-audit@16.1.0 + - @objectstack/plugin-auth@16.1.0 + - @objectstack/plugin-email@16.1.0 + - @objectstack/plugin-reports@16.1.0 + - @objectstack/plugin-security@16.1.0 + - @objectstack/plugin-sharing@16.1.0 + - @objectstack/service-job@16.1.0 + - @objectstack/service-queue@16.1.0 + - @objectstack/service-realtime@16.1.0 + - @objectstack/service-settings@16.1.0 + - @objectstack/service-storage@16.1.0 + - @objectstack/client@16.1.0 + - @objectstack/cloud-connection@16.1.0 + - @objectstack/formula@16.1.0 + - @objectstack/mcp@16.1.0 + - @objectstack/objectql@16.1.0 + - @objectstack/driver-memory@16.1.0 + - @objectstack/driver-mongodb@16.1.0 + - @objectstack/driver-sql@16.1.0 + - @objectstack/driver-sqlite-wasm@16.1.0 + - @objectstack/plugin-webhooks@16.1.0 + - @objectstack/service-analytics@16.1.0 + - @objectstack/service-cache@16.1.0 + - @objectstack/service-datasource@16.1.0 + - @objectstack/service-messaging@16.1.0 + - @objectstack/service-package@16.1.0 + - @objectstack/service-sms@16.1.0 + - @objectstack/trigger-api@16.1.0 + - @objectstack/trigger-schedule@16.1.0 + - @objectstack/types@16.1.0 + - @objectstack/verify@16.1.0 + - @objectstack/plugin-pinyin-search@16.1.0 + ## 16.0.0 ### Minor Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 5841a4b86f..4d17ea0040 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/cli", - "version": "16.0.0", + "version": "16.1.0", "description": "Command Line Interface for ObjectStack Protocol", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/client-react/CHANGELOG.md b/packages/client-react/CHANGELOG.md index b34cef723d..c386400f45 100644 --- a/packages/client-react/CHANGELOG.md +++ b/packages/client-react/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/client-react +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/client@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/client-react/package.json b/packages/client-react/package.json index eeb8e751d1..3c8f99dbb5 100644 --- a/packages/client-react/package.json +++ b/packages/client-react/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/client-react", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "React hooks for ObjectStack Client SDK", "main": "dist/index.js", diff --git a/packages/client/CHANGELOG.md b/packages/client/CHANGELOG.md index 97a2679177..a718b96a65 100644 --- a/packages/client/CHANGELOG.md +++ b/packages/client/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/client +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + ## 16.0.0 ### Minor Changes diff --git a/packages/client/package.json b/packages/client/package.json index 90f867a2bd..ada8ed42e2 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/client", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Official Client SDK for ObjectStack Protocol", "main": "dist/index.js", diff --git a/packages/cloud-connection/CHANGELOG.md b/packages/cloud-connection/CHANGELOG.md index 90c61a5935..1bd6a57c68 100644 --- a/packages/cloud-connection/CHANGELOG.md +++ b/packages/cloud-connection/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/cloud-connection +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] +- Updated dependencies [818e6a3] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/runtime@16.1.0 + - @objectstack/types@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/cloud-connection/package.json b/packages/cloud-connection/package.json index 08e3c7035f..0ddf650c51 100644 --- a/packages/cloud-connection/package.json +++ b/packages/cloud-connection/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/cloud-connection", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Runtime-side client for an ObjectStack cloud control plane — marketplace browse proxy, install-local, device-code binding, org catalog and installed views, and the /api/v1/runtime/config discovery endpoint. Open mechanism (ADR-0008): the hub service, plan policy, and entitlements stay server-side.", "type": "module", diff --git a/packages/connectors/connector-mcp/CHANGELOG.md b/packages/connectors/connector-mcp/CHANGELOG.md index 4953d5949e..eb093e1cfe 100644 --- a/packages/connectors/connector-mcp/CHANGELOG.md +++ b/packages/connectors/connector-mcp/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/connector-mcp +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/connectors/connector-mcp/package.json b/packages/connectors/connector-mcp/package.json index 6cbe161e0b..45edcf4f1f 100644 --- a/packages/connectors/connector-mcp/package.json +++ b/packages/connectors/connector-mcp/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-mcp", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Model Context Protocol (MCP) connector for ObjectStack — a generic adapter that turns any MCP server's tools into a connector's actions on the automation engine's connector registry (ADR-0024).", "main": "dist/index.js", diff --git a/packages/connectors/connector-openapi/CHANGELOG.md b/packages/connectors/connector-openapi/CHANGELOG.md index 003d4efcc1..167dcc00f2 100644 --- a/packages/connectors/connector-openapi/CHANGELOG.md +++ b/packages/connectors/connector-openapi/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/connector-openapi +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + ## 16.0.0 ### Minor Changes diff --git a/packages/connectors/connector-openapi/package.json b/packages/connectors/connector-openapi/package.json index 554622921f..3b2166e832 100644 --- a/packages/connectors/connector-openapi/package.json +++ b/packages/connectors/connector-openapi/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-openapi", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "OpenAPI 3.x connector generator for ObjectStack — turns a declarative OpenAPI document into connector actions on the automation engine's registry, with a self-contained static-auth HTTP transport (ADR-0023).", "main": "dist/index.js", diff --git a/packages/connectors/connector-rest/CHANGELOG.md b/packages/connectors/connector-rest/CHANGELOG.md index b6d3e281d2..f42fc67541 100644 --- a/packages/connectors/connector-rest/CHANGELOG.md +++ b/packages/connectors/connector-rest/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/connector-rest +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/connectors/connector-rest/package.json b/packages/connectors/connector-rest/package.json index 9ed398d0be..b00d850642 100644 --- a/packages/connectors/connector-rest/package.json +++ b/packages/connectors/connector-rest/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-rest", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Generic REST connector for ObjectStack — the reference concrete connector that registers a `request` action on the automation engine's connector registry (ADR-0018 §Addendum).", "main": "dist/index.js", diff --git a/packages/connectors/connector-slack/CHANGELOG.md b/packages/connectors/connector-slack/CHANGELOG.md index dc9abb429c..4688105eeb 100644 --- a/packages/connectors/connector-slack/CHANGELOG.md +++ b/packages/connectors/connector-slack/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/connector-slack +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/connectors/connector-slack/package.json b/packages/connectors/connector-slack/package.json index 2f80062b48..6df727924f 100644 --- a/packages/connectors/connector-slack/package.json +++ b/packages/connectors/connector-slack/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-slack", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Slack Web API connector for ObjectStack — registers `chat.postMessage` / `chat.update` / `call` actions on the automation engine's connector registry (ADR-0018 §Addendum, ADR-0022).", "main": "dist/index.js", diff --git a/packages/console/CHANGELOG.md b/packages/console/CHANGELOG.md index b1238be106..6bc0632d79 100644 --- a/packages/console/CHANGELOG.md +++ b/packages/console/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/console +## 16.1.0 + +### Minor Changes + +- 7b07417: Console (objectui) refreshed to `cf2d56e32a11`. Frontend changes in this range: + + - fix(list): keep injected owner_id out of auto-generated list columns (#2777) (#2779) + - feat(search): surface record hits on the full search page + i18n group labels (#2776) + - fix(i18n): apply globalActions label overlays on record-detail action bars (#2770) + - fix(command-palette): surface record search hits from /api/v1/search (#3371) (#2772) + - fix(SchemaForm): render sort repeater rows for union schemas (objectstack#3379) (#2771) + + objectui range: `9a5f016f7d5c...cf2d56e32a11` + ## 16.0.0 ### Minor Changes diff --git a/packages/console/package.json b/packages/console/package.json index 2c7da68070..38f91978e0 100644 --- a/packages/console/package.json +++ b/packages/console/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/console", - "version": "16.0.0", + "version": "16.1.0", "description": "Prebuilt Console SPA pinned to this @objectstack/framework release. Source of truth: @object-ui/console (https://github.com/objectstack-ai/objectui).", "license": "Apache-2.0", "homepage": "https://github.com/objectstack-ai/objectstack/tree/main/packages/console", diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index b887ace4df..abf6957e91 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,58 @@ # @objectstack/core +## 16.1.0 + +### Minor Changes + +- b20201f: fix(service-automation): `runAs:'user'` runs data ops with the triggering user's + real permission sets + positions, not a bare member fallback (#3356, follow-up to + #1888) + + Since #1888 the automation engine honours `flow.runAs` (`system` elevates), but + the `runAs:'user'` credential propagation was hollow. A record-change-triggered + `runAs:'user'` flow ran its data nodes (`update_record`, …) with a **zero-grant** + principal — only the `member`/`everyone` baseline — even when the triggering user + was fully authorized. Two faces by object config: a `private` object 403'd the + in-flow write (`not permitted for positions [org_member, everyone]` — the user's + permission sets were invisible); a `public_read_write` object let the write + through but **silently stripped** readonly/FLS-gated fields. The root cause: the + ObjectQL record-change hook session carries only a `userId` — never the writer's + positions/permission sets — and nothing in between resolved them, so the comment + promising "enforces RLS exactly as the user who made the change" never held. + + The fix resolves the triggering user's **actual** authorization at run setup, from + the same tables a direct REST request resolves through: + + - **`@objectstack/core`** factors the userId-driven core of `resolveAuthzContext` + into a new exported `resolveUserAuthzGrants(ql, userId, opts)` — the single place + that reads `sys_member` / `sys_user_position` / `sys_*_permission_set` and + derives positions, permission-set names, `platform_admin`, and posture. The + HTTP resolver now delegates to it (behaviour byte-identical; the full contract + suite still passes), so a non-HTTP surface that already knows the user id builds + the SAME envelope instead of re-implementing the reads. + - **`@objectstack/service-automation`** gains `AutomationEngine.setUserGrantsResolver`, + wired by the plugin to `resolveUserAuthzGrants` over the objectql/data engine. + For a `runAs:'user'` run whose trigger left the authz envelope unresolved (no + `permissions`), the engine now resolves the user's positions + permission sets + once at run setup and threads them into every data node's ObjectQL context — + so the run enforces RLS/FLS exactly as that user. Contexts that already carry + `permissions` are left untouched (a REST trigger, and notably an ADR-0090 agent + ceiling acting on-behalf-of a user — always non-empty — so a deliberately + narrowed identity is never re-broadened). `runAs:'system'` is unchanged, and a + resolver error fails safe (warns, keeps the bare user — never elevates). + - **`@objectstack/trigger-record-change`** stops forwarding the misleading + half-populated `positions` (empty in practice, and never `permissions`) from the + hook session; it forwards `userId` + tenant only and lets the engine resolve the + full grants authoritatively. + + When no ObjectQL engine is present (bare engine / tests) the resolver is unwired + and run identity is unchanged from before. + +### Patch Changes + +- Updated dependencies [9e45b63] + - @objectstack/spec@16.1.0 + ## 16.0.0 ### Minor Changes diff --git a/packages/core/package.json b/packages/core/package.json index e349cab984..1415c8261a 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/core", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Microkernel Core for ObjectStack", "type": "module", diff --git a/packages/create-objectstack/CHANGELOG.md b/packages/create-objectstack/CHANGELOG.md index 566242e168..5ba4d492aa 100644 --- a/packages/create-objectstack/CHANGELOG.md +++ b/packages/create-objectstack/CHANGELOG.md @@ -1,5 +1,7 @@ # create-objectstack +## 16.1.0 + ## 16.0.0 ### Minor Changes diff --git a/packages/create-objectstack/package.json b/packages/create-objectstack/package.json index 06bd12c9f8..00ec7569a3 100644 --- a/packages/create-objectstack/package.json +++ b/packages/create-objectstack/package.json @@ -1,6 +1,6 @@ { "name": "create-objectstack", - "version": "16.0.0", + "version": "16.1.0", "description": "Create a new ObjectStack project — npx create-objectstack", "bin": { "create-objectstack": "./bin/create-objectstack.js" diff --git a/packages/formula/CHANGELOG.md b/packages/formula/CHANGELOG.md index b3209133aa..cc52d44e70 100644 --- a/packages/formula/CHANGELOG.md +++ b/packages/formula/CHANGELOG.md @@ -1,5 +1,12 @@ # @objectstack/formula +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] + - @objectstack/spec@16.1.0 + ## 16.0.0 ### Minor Changes diff --git a/packages/formula/package.json b/packages/formula/package.json index 3da12c4d55..7227c1fa3c 100644 --- a/packages/formula/package.json +++ b/packages/formula/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/formula", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "ObjectStack canonical expression engine — CEL (cel-js) + ObjectStack stdlib + dialect registry", "main": "dist/index.js", diff --git a/packages/lint/CHANGELOG.md b/packages/lint/CHANGELOG.md index 860a945036..a1f6e9b4d7 100644 --- a/packages/lint/CHANGELOG.md +++ b/packages/lint/CHANGELOG.md @@ -1,5 +1,44 @@ # @objectstack/lint +## 16.1.0 + +### Minor Changes + +- fa006fb: Validate dashboard filter field-existence at build time (extend ADR-0021, #3365). + + `validateWidgetBindings` now checks that every dashboard-level filter (`dateRange` + + - each `globalFilters[]`) resolves to a real field on each bound widget's dataset + object. Since #2501 wired these filters into every widget's analytics query, a + filter field absent on a widget's object — e.g. a `dateRange` bound to + `close_date` inherited by an account/contact widget over a different object — + emitted invalid SQL (`no such column: close_date`) and crashed the widget at + render time. That build-decidable invariant previously escaped `os validate` / + `os build` and failed only when a user opened the dashboard. + + It now fails the build (new rule `dashboard-filter-field-unknown`) with a message + naming the dashboard, widget, filter, field, and object, unless the widget opts + out via `filterBindings: { : false }` or re-targets to an existing field — + mirroring the field-existence invariant ADR-0032 enforces for CEL references. + Effective-field resolution matches the runtime (`filterBindings` re-target / + opt-out, legacy `targetWidgets` allow-list, filter default). Registry-injected + system fields (e.g. `created_at`, the `dateRange` default) and objects outside + the validated stack never false-positive. + +- db160dd: Flag dead action/route references in dashboard header & widget actions (ADR-0049 for references, #3367). + + `os validate` / `os build` now run a new `validateDashboardActionRefs` gate over every dashboard `header.actions[]` and widget `actionUrl`: + + - `actionType: 'script' | 'modal'` — **error** unless `actionUrl` resolves to a defined action (`stack.actions` or an object's `actions`). `modal` also resolves via the runtime `_` convention (`create_/new_/add_/edit_/update_` + a real object) and bare object names. A dangling target ships a button that renders and silently does nothing on click — a false affordance, exactly the "declared ≠ enforced" gap ADR-0049 closes, applied to references. + - `actionType: 'url'` — **warning** when a relative in-app path names a `objects/reports/dashboards/pages/views` route whose target does not exist in the stack. External URLs, interpolated (`${…}`) targets, and opaque routes are skipped to keep false positives near zero. + +### Patch Changes + +- Updated dependencies [9e45b63] + - @objectstack/spec@16.1.0 + - @objectstack/formula@16.1.0 + - @objectstack/sdui-parser@16.1.0 + ## 16.0.0 ### Minor Changes diff --git a/packages/lint/package.json b/packages/lint/package.json index 7dafc74ad9..fb6f5fbc00 100644 --- a/packages/lint/package.json +++ b/packages/lint/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/lint", - "version": "16.0.0", + "version": "16.1.0", "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 ab6456535c..3da529abe0 100644 --- a/packages/mcp/CHANGELOG.md +++ b/packages/mcp/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/plugin-mcp-server +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/formula@16.1.0 + - @objectstack/types@16.1.0 + ## 16.0.0 ### Minor Changes diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 73400373ea..53e012ce14 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/mcp", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "ObjectStack as an MCP server — exposes your app's objects (and AI tools) over the Model Context Protocol (stdio + Streamable HTTP)", "type": "module", diff --git a/packages/metadata-core/CHANGELOG.md b/packages/metadata-core/CHANGELOG.md index 59c466d5ad..8113f1aae2 100644 --- a/packages/metadata-core/CHANGELOG.md +++ b/packages/metadata-core/CHANGELOG.md @@ -1,5 +1,12 @@ # @objectstack/metadata-core +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] + - @objectstack/spec@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/metadata-core/package.json b/packages/metadata-core/package.json index 60f40282c0..d22ebea1ae 100644 --- a/packages/metadata-core/package.json +++ b/packages/metadata-core/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata-core", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Metadata Repository contracts: types, canonicalization, errors, interface (ADR-0008).", "type": "module", diff --git a/packages/metadata-fs/CHANGELOG.md b/packages/metadata-fs/CHANGELOG.md index 43d05a3a0b..1dcfa12b9f 100644 --- a/packages/metadata-fs/CHANGELOG.md +++ b/packages/metadata-fs/CHANGELOG.md @@ -1,5 +1,11 @@ # @objectstack/metadata-fs +## 16.1.0 + +### Patch Changes + +- @objectstack/metadata-core@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/metadata-fs/package.json b/packages/metadata-fs/package.json index d729a099e5..f533bf07b2 100644 --- a/packages/metadata-fs/package.json +++ b/packages/metadata-fs/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata-fs", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "FileSystemRepository: Node-only Repository implementation backed by JSON files and a JSONL change log (ADR-0008).", "type": "module", diff --git a/packages/metadata-protocol/CHANGELOG.md b/packages/metadata-protocol/CHANGELOG.md index 637f8be570..489dd6124c 100644 --- a/packages/metadata-protocol/CHANGELOG.md +++ b/packages/metadata-protocol/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/metadata-protocol +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/formula@16.1.0 + - @objectstack/metadata-core@16.1.0 + - @objectstack/types@16.1.0 + ## 16.0.0 ### Minor Changes diff --git a/packages/metadata-protocol/package.json b/packages/metadata-protocol/package.json index ab7acd1903..9ccaad222f 100644 --- a/packages/metadata-protocol/package.json +++ b/packages/metadata-protocol/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata-protocol", - "version": "16.0.0", + "version": "16.1.0", "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 c05ba9d4c7..d511cdf5f3 100644 --- a/packages/metadata/CHANGELOG.md +++ b/packages/metadata/CHANGELOG.md @@ -1,5 +1,20 @@ # @objectstack/metadata +## 16.1.0 + +### Patch Changes + +- Updated dependencies [212b66a] +- Updated dependencies [d10c4dc] +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/platform-objects@16.1.0 + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/metadata-core@16.1.0 + - @objectstack/types@16.1.0 + - @objectstack/metadata-fs@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/metadata/package.json b/packages/metadata/package.json index f090b40ef2..ea79429025 100644 --- a/packages/metadata/package.json +++ b/packages/metadata/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Metadata loading, saving, and persistence for ObjectStack", "type": "module", diff --git a/packages/objectql/CHANGELOG.md b/packages/objectql/CHANGELOG.md index 6ba97fc3b6..ea02856f10 100644 --- a/packages/objectql/CHANGELOG.md +++ b/packages/objectql/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/objectql +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/formula@16.1.0 + - @objectstack/metadata-core@16.1.0 + - @objectstack/metadata-protocol@16.1.0 + - @objectstack/types@16.1.0 + ## 16.0.0 ### Major Changes diff --git a/packages/objectql/package.json b/packages/objectql/package.json index 69c9b98579..412741fa04 100644 --- a/packages/objectql/package.json +++ b/packages/objectql/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/objectql", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Isomorphic ObjectQL Engine for ObjectStack", "main": "dist/index.js", diff --git a/packages/observability/CHANGELOG.md b/packages/observability/CHANGELOG.md index 5c48251f1f..d9ef79cf5e 100644 --- a/packages/observability/CHANGELOG.md +++ b/packages/observability/CHANGELOG.md @@ -1,5 +1,36 @@ # @objectstack/observability +## 16.1.0 + +### Patch Changes + +- 818e6a3: fix(server-timing): emit the per-request, admin-gated `Server-Timing` header on the standard server (`os serve`/`dev`) (#3361) + + The per-request `Server-Timing` path (#2408) — where an admin sends + `X-OS-Debug-Timing: 1` (or `json`) and gets phase timings while an ordinary user + gets nothing — never emitted on the shipped Hono server. The disclosure gate the + Hono middleware opens is only ever flipped by the runtime dispatcher's + `timedResolveExecutionContext`, but the data (`/api/v1/data/*`) and metadata + (`/api/v1/meta/*`) routes on `os serve`/`dev` are served by `@objectstack/rest`'s + `RestServer` (which shadows the Hono plugin's own CRUD), and its identity + resolver never opened the gate. Only global mode (`OS_SERVER_TIMING=true`) — which + discloses to _every_ caller, not just admins — worked. + + - **observability**: the disclosure predicate `isPerfDisclosurePrincipal(ec)` now + lives here (the home of the gate), the single definition of "who may pull + per-request timings" shared by every HTTP entry point. `@objectstack/runtime` + re-exports it for back-compat. + - **rest**: `RestServer.resolveExecCtx` opens the gate for an admin/service + principal (via the carried `posture` rung), the REST-server analog of the + dispatcher — this is the fix that makes `os serve`/`dev` emit. + - **plugin-hono-server**: the standalone CRUD surface's self-contained + `resolveCtx` opens the gate too (deriving the rung for the gate decision only, + never writing it onto the enforcement context). Adds an e2e test that boots the + Hono app and asserts an admin gets `Server-Timing` while a member/anon does not. + +- Updated dependencies [9e45b63] + - @objectstack/spec@16.1.0 + ## 16.0.0 ### Minor Changes diff --git a/packages/observability/package.json b/packages/observability/package.json index 03b111c762..5d6c8e1a7f 100644 --- a/packages/observability/package.json +++ b/packages/observability/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/observability", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Observability contracts and exporters for ObjectStack — MetricsRegistry, ErrorReporter, Logger plus noop/console/OTLP-HTTP exporters. Deployment-target neutral; runtime and services depend on this so the same instrumentation works on Cloudflare Workers, Node, and self-hosted Kubernetes.", "type": "module", diff --git a/packages/platform-objects/CHANGELOG.md b/packages/platform-objects/CHANGELOG.md index e25a7d7ee2..b4ef07c41e 100644 --- a/packages/platform-objects/CHANGELOG.md +++ b/packages/platform-objects/CHANGELOG.md @@ -1,5 +1,56 @@ # @objectstack/platform-objects +## 16.1.0 + +### Patch Changes + +- 212b66a: fix(platform-objects): allow import/export on sys_business_unit (#3025) + + The Business Units list (Setup → Business Units) surfaces Import/Export buttons, + but `sys_business_unit` declared a restrictive `enable.apiMethods` whitelist of + only the five CRUD verbs. The REST data plane gates import/export on that + whitelist (ADR-0049), so both buttons returned `405 OBJECT_API_METHOD_NOT_ALLOWED`. + + This was an unintentional gap, not a deliberate restriction: the object's fields + (`external_ref`, `effective_from/to`) are designed for HRIS batch sync, and the + org tree is expected to support bulk import. Added `'import'` and `'export'` to + the whitelist. Import reuses the `create`/`update` affordances the object already + grants, and the managed-object reconciliation backstop leaves import/export + untouched (it only strips write verbs). Regression test added. + +- d10c4dc: fix(platform-objects): allow import/export on sys_business_unit_member (#3025 / #3391 P0) + + Completes the #3025 point-fix. #3392 unblocked `sys_business_unit`'s Import/Export + buttons (405 `OBJECT_API_METHOD_NOT_ALLOWED`) by adding `'import'`/`'export'` to its + `enable.apiMethods` whitelist, but the HRIS org-tree sync scenario imports **two + tables together** — the units _and_ their memberships — and the sibling + `sys_business_unit_member` was left on the CRUD-only whitelist, so the membership + Import/Export path still 405'd. #3391's P0 checklist pairs both tables; this is the + half #3392 missed. + + - `packages/platform-objects/src/identity/sys-business-unit-member.object.ts`: + `apiMethods` gains `'import'`, `'export'`. Import reuses the object's + already-granted create/update affordances; export is a bulk read. + - Reconcile-safe: the object is `managedBy:'platform'`, but + `reconcileManagedApiMethods` only strips generic write verbs + (`create/update/upsert/delete/purge` — `MANAGED_WRITE_VERB_AFFORDANCE`). It never + touches `import`/`export`, so the declared whitelist reaches the REST gate intact + (no false-green: the static whitelist the regression test asserts IS what + `apiAccessDenialFromEnable` enforces at runtime). + - Regression test (`platform-objects.test.ts`) locks `import`/`export` presence and + CRUD retention. Proven red-before-green: reverting the object edit fails with + `expected [...] to include 'import'`. + + Transitional: #3391 P2 replaces per-object `import`/`export` declarations with a + single derived mapping (import ⊆ create/update, export ⊆ list) and reclaims the + explicit entries on both business-unit objects together. + + Refs #3025, #3391. + +- Updated dependencies [9e45b63] + - @objectstack/spec@16.1.0 + - @objectstack/metadata-core@16.1.0 + ## 16.0.0 ### Minor Changes diff --git a/packages/platform-objects/package.json b/packages/platform-objects/package.json index 6330ce7f04..7502b10758 100644 --- a/packages/platform-objects/package.json +++ b/packages/platform-objects/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/platform-objects", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Core platform object schemas for ObjectStack — identity, security, audit, tenant, and metadata objects", "main": "dist/index.js", diff --git a/packages/plugins/driver-memory/CHANGELOG.md b/packages/plugins/driver-memory/CHANGELOG.md index f3b3dab296..7f220fc31f 100644 --- a/packages/plugins/driver-memory/CHANGELOG.md +++ b/packages/plugins/driver-memory/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/driver-memory +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/plugins/driver-memory/package.json b/packages/plugins/driver-memory/package.json index 0d3272e362..24696a313d 100644 --- a/packages/plugins/driver-memory/package.json +++ b/packages/plugins/driver-memory/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-memory", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "In-Memory Driver for ObjectStack (Reference Implementation)", "main": "dist/index.js", diff --git a/packages/plugins/driver-mongodb/CHANGELOG.md b/packages/plugins/driver-mongodb/CHANGELOG.md index 24a4105f60..f54b574833 100644 --- a/packages/plugins/driver-mongodb/CHANGELOG.md +++ b/packages/plugins/driver-mongodb/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/driver-mongodb +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/plugins/driver-mongodb/package.json b/packages/plugins/driver-mongodb/package.json index da432d2973..4a8ea50799 100644 --- a/packages/plugins/driver-mongodb/package.json +++ b/packages/plugins/driver-mongodb/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-mongodb", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "MongoDB Driver for ObjectStack - Native document database driver via official mongodb client", "main": "dist/index.js", diff --git a/packages/plugins/driver-sql/CHANGELOG.md b/packages/plugins/driver-sql/CHANGELOG.md index b558c70a76..2c28d87cbf 100644 --- a/packages/plugins/driver-sql/CHANGELOG.md +++ b/packages/plugins/driver-sql/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/driver-sql +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] +- Updated dependencies [818e6a3] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/observability@16.1.0 + - @objectstack/types@16.1.0 + ## 16.0.0 ### Minor Changes diff --git a/packages/plugins/driver-sql/package.json b/packages/plugins/driver-sql/package.json index 68c1f15a57..63534e7fa8 100644 --- a/packages/plugins/driver-sql/package.json +++ b/packages/plugins/driver-sql/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-sql", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "SQL Driver for ObjectStack - Supports PostgreSQL, MySQL, SQLite via Knex", "main": "dist/index.js", diff --git a/packages/plugins/driver-sqlite-wasm/CHANGELOG.md b/packages/plugins/driver-sqlite-wasm/CHANGELOG.md index ea89111fce..baa6c0bd83 100644 --- a/packages/plugins/driver-sqlite-wasm/CHANGELOG.md +++ b/packages/plugins/driver-sqlite-wasm/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/driver-sqlite-wasm +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/driver-sql@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/plugins/driver-sqlite-wasm/package.json b/packages/plugins/driver-sqlite-wasm/package.json index 68582e6190..0d408cfca2 100644 --- a/packages/plugins/driver-sqlite-wasm/package.json +++ b/packages/plugins/driver-sqlite-wasm/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-sqlite-wasm", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "WASM SQLite Driver for ObjectStack — runs in browser/WebContainer (StackBlitz) without native bindings", "keywords": [ diff --git a/packages/plugins/embedder-openai/CHANGELOG.md b/packages/plugins/embedder-openai/CHANGELOG.md index 511117e484..6960724e75 100644 --- a/packages/plugins/embedder-openai/CHANGELOG.md +++ b/packages/plugins/embedder-openai/CHANGELOG.md @@ -1,5 +1,12 @@ # @objectstack/embedder-openai +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] + - @objectstack/spec@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/plugins/embedder-openai/package.json b/packages/plugins/embedder-openai/package.json index afd514c81c..64a62c331a 100644 --- a/packages/plugins/embedder-openai/package.json +++ b/packages/plugins/embedder-openai/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/embedder-openai", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "OpenAI-compatible embedder for ObjectStack — works against OpenAI, 阿里通义 DashScope, 智谱 BigModel, 硅基流动 SiliconFlow, 火山引擎 Doubao, MiniMax, Ollama, and any drop-in OpenAI-shape endpoint.", "main": "dist/index.js", diff --git a/packages/plugins/knowledge-memory/CHANGELOG.md b/packages/plugins/knowledge-memory/CHANGELOG.md index a4c5da6a0c..d4851f2447 100644 --- a/packages/plugins/knowledge-memory/CHANGELOG.md +++ b/packages/plugins/knowledge-memory/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/knowledge-memory +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/service-knowledge@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/plugins/knowledge-memory/package.json b/packages/plugins/knowledge-memory/package.json index a8d85c8c10..9c00525188 100644 --- a/packages/plugins/knowledge-memory/package.json +++ b/packages/plugins/knowledge-memory/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/knowledge-memory", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "In-memory knowledge adapter for ObjectStack (dev / test reference implementation).", "main": "dist/index.js", diff --git a/packages/plugins/knowledge-ragflow/CHANGELOG.md b/packages/plugins/knowledge-ragflow/CHANGELOG.md index b737739c9e..f949c0e54e 100644 --- a/packages/plugins/knowledge-ragflow/CHANGELOG.md +++ b/packages/plugins/knowledge-ragflow/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/knowledge-ragflow +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/service-knowledge@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/plugins/knowledge-ragflow/package.json b/packages/plugins/knowledge-ragflow/package.json index 61d33f772f..6310c68158 100644 --- a/packages/plugins/knowledge-ragflow/package.json +++ b/packages/plugins/knowledge-ragflow/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/knowledge-ragflow", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "RAGFlow knowledge adapter for ObjectStack — production-grade RAG via the Apache 2.0 RAGFlow REST API.", "main": "dist/index.js", diff --git a/packages/plugins/plugin-approvals/CHANGELOG.md b/packages/plugins/plugin-approvals/CHANGELOG.md index d202cb270b..3036ec0c88 100644 --- a/packages/plugins/plugin-approvals/CHANGELOG.md +++ b/packages/plugins/plugin-approvals/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/plugin-approvals +## 16.1.0 + +### Patch Changes + +- Updated dependencies [212b66a] +- Updated dependencies [d10c4dc] +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/platform-objects@16.1.0 + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/formula@16.1.0 + - @objectstack/metadata-core@16.1.0 + ## 16.0.0 ### Minor Changes diff --git a/packages/plugins/plugin-approvals/package.json b/packages/plugins/plugin-approvals/package.json index b68cf5a819..a76223902f 100644 --- a/packages/plugins/plugin-approvals/package.json +++ b/packages/plugins/plugin-approvals/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-approvals", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Multi-step approval engine for ObjectStack — sys_approval_process + sys_approval_request + sys_approval_action + IApprovalService.", "main": "dist/index.js", diff --git a/packages/plugins/plugin-audit/CHANGELOG.md b/packages/plugins/plugin-audit/CHANGELOG.md index 5361a833a8..9e1474446a 100644 --- a/packages/plugins/plugin-audit/CHANGELOG.md +++ b/packages/plugins/plugin-audit/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/plugin-audit +## 16.1.0 + +### Patch Changes + +- Updated dependencies [212b66a] +- Updated dependencies [d10c4dc] +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/platform-objects@16.1.0 + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/plugins/plugin-audit/package.json b/packages/plugins/plugin-audit/package.json index c3d80e1f49..b8433c287e 100644 --- a/packages/plugins/plugin-audit/package.json +++ b/packages/plugins/plugin-audit/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-audit", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Audit Plugin for ObjectStack — System audit log object and audit trail", "main": "dist/index.js", diff --git a/packages/plugins/plugin-auth/CHANGELOG.md b/packages/plugins/plugin-auth/CHANGELOG.md index a1fa0a014c..70a09bd814 100644 --- a/packages/plugins/plugin-auth/CHANGELOG.md +++ b/packages/plugins/plugin-auth/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## 16.1.0 + +### Patch Changes + +- Updated dependencies [212b66a] +- Updated dependencies [d10c4dc] +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] +- Updated dependencies [818e6a3] + - @objectstack/platform-objects@16.1.0 + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/rest@16.1.0 + - @objectstack/types@16.1.0 + ## 16.0.0 ### Minor Changes diff --git a/packages/plugins/plugin-auth/package.json b/packages/plugins/plugin-auth/package.json index c626002482..77dea82602 100644 --- a/packages/plugins/plugin-auth/package.json +++ b/packages/plugins/plugin-auth/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-auth", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Authentication & Identity Plugin for ObjectStack", "main": "dist/index.js", diff --git a/packages/plugins/plugin-dev/CHANGELOG.md b/packages/plugins/plugin-dev/CHANGELOG.md index bd30e13889..5e50fa6aaf 100644 --- a/packages/plugins/plugin-dev/CHANGELOG.md +++ b/packages/plugins/plugin-dev/CHANGELOG.md @@ -1,5 +1,26 @@ # @objectstack/plugin-dev +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] +- Updated dependencies [818e6a3] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/rest@16.1.0 + - @objectstack/plugin-hono-server@16.1.0 + - @objectstack/runtime@16.1.0 + - @objectstack/account@16.1.0 + - @objectstack/setup@16.1.0 + - @objectstack/plugin-auth@16.1.0 + - @objectstack/plugin-security@16.1.0 + - @objectstack/objectql@16.1.0 + - @objectstack/driver-memory@16.1.0 + - @objectstack/service-i18n@16.1.0 + - @objectstack/types@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/plugins/plugin-dev/package.json b/packages/plugins/plugin-dev/package.json index 9cf832c814..74f91bf246 100644 --- a/packages/plugins/plugin-dev/package.json +++ b/packages/plugins/plugin-dev/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-dev", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Development Mode Plugin for ObjectStack — auto-enables all services with in-memory implementations", "main": "dist/index.js", diff --git a/packages/plugins/plugin-email/CHANGELOG.md b/packages/plugins/plugin-email/CHANGELOG.md index 99b8560c18..fa5e08093c 100644 --- a/packages/plugins/plugin-email/CHANGELOG.md +++ b/packages/plugins/plugin-email/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/plugin-email +## 16.1.0 + +### Patch Changes + +- Updated dependencies [212b66a] +- Updated dependencies [d10c4dc] +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/platform-objects@16.1.0 + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/formula@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/plugins/plugin-email/package.json b/packages/plugins/plugin-email/package.json index a589219120..9b4cd60297 100644 --- a/packages/plugins/plugin-email/package.json +++ b/packages/plugins/plugin-email/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-email", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Email service plugin for ObjectStack — IEmailService + transport-pluggable outbound delivery with sys_email persistence.", "main": "dist/index.js", diff --git a/packages/plugins/plugin-hono-server/CHANGELOG.md b/packages/plugins/plugin-hono-server/CHANGELOG.md index 9548ad5211..895999be7e 100644 --- a/packages/plugins/plugin-hono-server/CHANGELOG.md +++ b/packages/plugins/plugin-hono-server/CHANGELOG.md @@ -1,5 +1,41 @@ # @objectstack/plugin-hono-server +## 16.1.0 + +### Patch Changes + +- 818e6a3: fix(server-timing): emit the per-request, admin-gated `Server-Timing` header on the standard server (`os serve`/`dev`) (#3361) + + The per-request `Server-Timing` path (#2408) — where an admin sends + `X-OS-Debug-Timing: 1` (or `json`) and gets phase timings while an ordinary user + gets nothing — never emitted on the shipped Hono server. The disclosure gate the + Hono middleware opens is only ever flipped by the runtime dispatcher's + `timedResolveExecutionContext`, but the data (`/api/v1/data/*`) and metadata + (`/api/v1/meta/*`) routes on `os serve`/`dev` are served by `@objectstack/rest`'s + `RestServer` (which shadows the Hono plugin's own CRUD), and its identity + resolver never opened the gate. Only global mode (`OS_SERVER_TIMING=true`) — which + discloses to _every_ caller, not just admins — worked. + + - **observability**: the disclosure predicate `isPerfDisclosurePrincipal(ec)` now + lives here (the home of the gate), the single definition of "who may pull + per-request timings" shared by every HTTP entry point. `@objectstack/runtime` + re-exports it for back-compat. + - **rest**: `RestServer.resolveExecCtx` opens the gate for an admin/service + principal (via the carried `posture` rung), the REST-server analog of the + dispatcher — this is the fix that makes `os serve`/`dev` emit. + - **plugin-hono-server**: the standalone CRUD surface's self-contained + `resolveCtx` opens the gate too (deriving the rung for the gate decision only, + never writing it onto the enforcement context). Adds an e2e test that boots the + Hono app and asserts an admin gets `Server-Timing` while a member/anon does not. + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] +- Updated dependencies [818e6a3] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/observability@16.1.0 + - @objectstack/types@16.1.0 + ## 16.0.0 ### Minor Changes diff --git a/packages/plugins/plugin-hono-server/package.json b/packages/plugins/plugin-hono-server/package.json index e15c5d513b..6bc38b06ac 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": "16.0.0", + "version": "16.1.0", "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 9f56076291..4b09367e12 100644 --- a/packages/plugins/plugin-pinyin-search/CHANGELOG.md +++ b/packages/plugins/plugin-pinyin-search/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/plugin-pinyin-search +## 16.1.0 + +### Patch Changes + +- Updated dependencies [b20201f] + - @objectstack/core@16.1.0 + - @objectstack/objectql@16.1.0 + - @objectstack/types@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/plugins/plugin-pinyin-search/package.json b/packages/plugins/plugin-pinyin-search/package.json index 8f02d5f5cb..683f3349ac 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": "16.0.0", + "version": "16.1.0", "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 9ecc9f4976..0bb7f85ad6 100644 --- a/packages/plugins/plugin-reports/CHANGELOG.md +++ b/packages/plugins/plugin-reports/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/plugin-reports +## 16.1.0 + +### Patch Changes + +- Updated dependencies [212b66a] +- Updated dependencies [d10c4dc] +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/platform-objects@16.1.0 + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/plugins/plugin-reports/package.json b/packages/plugins/plugin-reports/package.json index 20c36c50e2..0fe029548c 100644 --- a/packages/plugins/plugin-reports/package.json +++ b/packages/plugins/plugin-reports/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-reports", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Saved reports + scheduled email digests for ObjectStack — sys_saved_report + sys_report_schedule + IReportService.", "main": "dist/index.js", diff --git a/packages/plugins/plugin-security/CHANGELOG.md b/packages/plugins/plugin-security/CHANGELOG.md index cdd0290841..fe69fc785d 100644 --- a/packages/plugins/plugin-security/CHANGELOG.md +++ b/packages/plugins/plugin-security/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/plugin-security +## 16.1.0 + +### Patch Changes + +- Updated dependencies [212b66a] +- Updated dependencies [d10c4dc] +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/platform-objects@16.1.0 + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/formula@16.1.0 + ## 16.0.0 ### Minor Changes diff --git a/packages/plugins/plugin-security/package.json b/packages/plugins/plugin-security/package.json index e765ba5638..7b8522d0dc 100644 --- a/packages/plugins/plugin-security/package.json +++ b/packages/plugins/plugin-security/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-security", - "version": "16.0.0", + "version": "16.1.0", "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 f5ef85df16..a314cc7021 100644 --- a/packages/plugins/plugin-sharing/CHANGELOG.md +++ b/packages/plugins/plugin-sharing/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/plugin-sharing +## 16.1.0 + +### Patch Changes + +- Updated dependencies [212b66a] +- Updated dependencies [d10c4dc] +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/platform-objects@16.1.0 + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/formula@16.1.0 + - @objectstack/objectql@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/plugins/plugin-sharing/package.json b/packages/plugins/plugin-sharing/package.json index 69d6509764..73f8ba1ee8 100644 --- a/packages/plugins/plugin-sharing/package.json +++ b/packages/plugins/plugin-sharing/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-sharing", - "version": "16.0.0", + "version": "16.1.0", "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 ca19a3fe5f..4678ff33ab 100644 --- a/packages/plugins/plugin-webhooks/CHANGELOG.md +++ b/packages/plugins/plugin-webhooks/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/plugin-webhooks +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/service-messaging@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/plugins/plugin-webhooks/package.json b/packages/plugins/plugin-webhooks/package.json index 6cbdf77fb6..419650f6c5 100644 --- a/packages/plugins/plugin-webhooks/package.json +++ b/packages/plugins/plugin-webhooks/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-webhooks", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Persistent, cluster-aware webhook dispatcher. Durable outbox + per-partition cluster.lock for exactly-once-ish delivery across nodes. See content/docs/concepts/webhook-delivery.mdx.", "type": "module", diff --git a/packages/qa/dogfood/CHANGELOG.md b/packages/qa/dogfood/CHANGELOG.md index 1656cbe3f5..26ff455a4d 100644 --- a/packages/qa/dogfood/CHANGELOG.md +++ b/packages/qa/dogfood/CHANGELOG.md @@ -1,5 +1,24 @@ # @objectstack/dogfood +## 0.0.39 + +### Patch Changes + +- Updated dependencies [9e45b63] + - @objectstack/spec@16.1.0 + - @objectstack/plugin-audit@16.1.0 + - @objectstack/plugin-auth@16.1.0 + - @objectstack/plugin-security@16.1.0 + - @objectstack/service-storage@16.1.0 + - @objectstack/example-crm@4.0.91 + - @objectstack/example-showcase@0.3.13 + - @objectstack/connector-mcp@16.1.0 + - @objectstack/connector-openapi@16.1.0 + - @objectstack/connector-rest@16.1.0 + - @objectstack/mcp@16.1.0 + - @objectstack/objectql@16.1.0 + - @objectstack/verify@16.1.0 + ## 0.0.38 ### Patch Changes diff --git a/packages/qa/dogfood/package.json b/packages/qa/dogfood/package.json index 42a94ba858..f261be8aad 100644 --- a/packages/qa/dogfood/package.json +++ b/packages/qa/dogfood/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/dogfood", - "version": "0.0.38", + "version": "0.0.39", "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 e5cf7e4ee2..e58748b158 100644 --- a/packages/qa/downstream-contract/CHANGELOG.md +++ b/packages/qa/downstream-contract/CHANGELOG.md @@ -1,5 +1,12 @@ # @objectstack/downstream-contract +## 0.0.37 + +### Patch Changes + +- Updated dependencies [9e45b63] + - @objectstack/spec@16.1.0 + ## 0.0.36 ### Patch Changes diff --git a/packages/qa/downstream-contract/package.json b/packages/qa/downstream-contract/package.json index 5ec4d14048..d72325fd5e 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.36", + "version": "0.0.37", "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 d9eef0bf64..0fc0c0710b 100644 --- a/packages/qa/http-conformance/CHANGELOG.md +++ b/packages/qa/http-conformance/CHANGELOG.md @@ -1,5 +1,12 @@ # @objectstack/http-conformance +## 0.0.5 + +### Patch Changes + +- Updated dependencies [b20201f] + - @objectstack/core@16.1.0 + ## 0.0.4 ### Patch Changes diff --git a/packages/qa/http-conformance/package.json b/packages/qa/http-conformance/package.json index b2d0583380..8fe60e50cf 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.4", + "version": "0.0.5", "private": true, "license": "Apache-2.0", "description": "HTTP transport-port conformance gate (ADR-0076 D11/OQ#10, #2462) — a zero-dependency node:http reference implementation of IHttpServer plus a cross-adapter suite that boots the dispatcher bridge and REST generator on it AND on plugin-hono-server, pinning that the port stays free of framework-isms. Not published; validation instrument, not a product server.", diff --git a/packages/rest/CHANGELOG.md b/packages/rest/CHANGELOG.md index f25416e989..ee8daf5ba4 100644 --- a/packages/rest/CHANGELOG.md +++ b/packages/rest/CHANGELOG.md @@ -1,5 +1,45 @@ # @objectstack/rest +## 16.1.0 + +### Patch Changes + +- 818e6a3: fix(server-timing): emit the per-request, admin-gated `Server-Timing` header on the standard server (`os serve`/`dev`) (#3361) + + The per-request `Server-Timing` path (#2408) — where an admin sends + `X-OS-Debug-Timing: 1` (or `json`) and gets phase timings while an ordinary user + gets nothing — never emitted on the shipped Hono server. The disclosure gate the + Hono middleware opens is only ever flipped by the runtime dispatcher's + `timedResolveExecutionContext`, but the data (`/api/v1/data/*`) and metadata + (`/api/v1/meta/*`) routes on `os serve`/`dev` are served by `@objectstack/rest`'s + `RestServer` (which shadows the Hono plugin's own CRUD), and its identity + resolver never opened the gate. Only global mode (`OS_SERVER_TIMING=true`) — which + discloses to _every_ caller, not just admins — worked. + + - **observability**: the disclosure predicate `isPerfDisclosurePrincipal(ec)` now + lives here (the home of the gate), the single definition of "who may pull + per-request timings" shared by every HTTP entry point. `@objectstack/runtime` + re-exports it for back-compat. + - **rest**: `RestServer.resolveExecCtx` opens the gate for an admin/service + principal (via the carried `posture` rung), the REST-server analog of the + dispatcher — this is the fix that makes `os serve`/`dev` emit. + - **plugin-hono-server**: the standalone CRUD surface's self-contained + `resolveCtx` opens the gate too (deriving the rung for the gate decision only, + never writing it onto the enforcement context). Adds an e2e test that boots the + Hono app and asserts an admin gets `Server-Timing` while a member/anon does not. + +- Updated dependencies [212b66a] +- Updated dependencies [d10c4dc] +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] +- Updated dependencies [818e6a3] + - @objectstack/platform-objects@16.1.0 + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/observability@16.1.0 + - @objectstack/service-package@16.1.0 + - @objectstack/types@16.1.0 + ## 16.0.0 ### Minor Changes diff --git a/packages/rest/package.json b/packages/rest/package.json index 44f7c2cb40..5e15315640 100644 --- a/packages/rest/package.json +++ b/packages/rest/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/rest", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "ObjectStack REST API Server - automatic REST endpoint generation from protocol", "type": "module", diff --git a/packages/runtime/CHANGELOG.md b/packages/runtime/CHANGELOG.md index 966464cd12..3f351169df 100644 --- a/packages/runtime/CHANGELOG.md +++ b/packages/runtime/CHANGELOG.md @@ -1,5 +1,54 @@ # @objectstack/runtime +## 16.1.0 + +### Patch Changes + +- 818e6a3: fix(server-timing): emit the per-request, admin-gated `Server-Timing` header on the standard server (`os serve`/`dev`) (#3361) + + The per-request `Server-Timing` path (#2408) — where an admin sends + `X-OS-Debug-Timing: 1` (or `json`) and gets phase timings while an ordinary user + gets nothing — never emitted on the shipped Hono server. The disclosure gate the + Hono middleware opens is only ever flipped by the runtime dispatcher's + `timedResolveExecutionContext`, but the data (`/api/v1/data/*`) and metadata + (`/api/v1/meta/*`) routes on `os serve`/`dev` are served by `@objectstack/rest`'s + `RestServer` (which shadows the Hono plugin's own CRUD), and its identity + resolver never opened the gate. Only global mode (`OS_SERVER_TIMING=true`) — which + discloses to _every_ caller, not just admins — worked. + + - **observability**: the disclosure predicate `isPerfDisclosurePrincipal(ec)` now + lives here (the home of the gate), the single definition of "who may pull + per-request timings" shared by every HTTP entry point. `@objectstack/runtime` + re-exports it for back-compat. + - **rest**: `RestServer.resolveExecCtx` opens the gate for an admin/service + principal (via the carried `posture` rung), the REST-server analog of the + dispatcher — this is the fix that makes `os serve`/`dev` emit. + - **plugin-hono-server**: the standalone CRUD surface's self-contained + `resolveCtx` opens the gate too (deriving the rung for the gate decision only, + never writing it onto the enforcement context). Adds an e2e test that boots the + Hono app and asserts an admin gets `Server-Timing` while a member/anon does not. + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] +- Updated dependencies [818e6a3] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/observability@16.1.0 + - @objectstack/rest@16.1.0 + - @objectstack/metadata@16.1.0 + - @objectstack/plugin-auth@16.1.0 + - @objectstack/plugin-security@16.1.0 + - @objectstack/formula@16.1.0 + - @objectstack/metadata-core@16.1.0 + - @objectstack/objectql@16.1.0 + - @objectstack/driver-memory@16.1.0 + - @objectstack/driver-sql@16.1.0 + - @objectstack/driver-sqlite-wasm@16.1.0 + - @objectstack/service-cluster@16.1.0 + - @objectstack/service-datasource@16.1.0 + - @objectstack/service-i18n@16.1.0 + - @objectstack/types@16.1.0 + ## 16.0.0 ### Major Changes diff --git a/packages/runtime/package.json b/packages/runtime/package.json index a2afe31d35..033effb240 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/runtime", - "version": "16.0.0", + "version": "16.1.0", "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 8053d267c8..8ba5341b1b 100644 --- a/packages/sdui-parser/CHANGELOG.md +++ b/packages/sdui-parser/CHANGELOG.md @@ -1,5 +1,7 @@ # @objectstack/sdui-parser +## 16.1.0 + ## 16.0.0 ## 16.0.0-rc.1 diff --git a/packages/sdui-parser/package.json b/packages/sdui-parser/package.json index 91650ef25b..4c09de1c65 100644 --- a/packages/sdui-parser/package.json +++ b/packages/sdui-parser/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/sdui-parser", - "version": "16.0.0", + "version": "16.1.0", "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 a666eef3c0..0b641c7d70 100644 --- a/packages/services/service-analytics/CHANGELOG.md +++ b/packages/services/service-analytics/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog — @objectstack/service-analytics +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + ## 16.0.0 ### Minor Changes diff --git a/packages/services/service-analytics/package.json b/packages/services/service-analytics/package.json index 47de361877..d309746333 100644 --- a/packages/services/service-analytics/package.json +++ b/packages/services/service-analytics/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-analytics", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Analytics Service for ObjectStack — implements IAnalyticsService with multi-driver strategy pattern (NativeSQL, ObjectQL, InMemory)", "type": "module", diff --git a/packages/services/service-automation/CHANGELOG.md b/packages/services/service-automation/CHANGELOG.md index ca7b708473..0a48b05b3e 100644 --- a/packages/services/service-automation/CHANGELOG.md +++ b/packages/services/service-automation/CHANGELOG.md @@ -1,5 +1,61 @@ # @objectstack/service-automation +## 16.1.0 + +### Minor Changes + +- b20201f: fix(service-automation): `runAs:'user'` runs data ops with the triggering user's + real permission sets + positions, not a bare member fallback (#3356, follow-up to + #1888) + + Since #1888 the automation engine honours `flow.runAs` (`system` elevates), but + the `runAs:'user'` credential propagation was hollow. A record-change-triggered + `runAs:'user'` flow ran its data nodes (`update_record`, …) with a **zero-grant** + principal — only the `member`/`everyone` baseline — even when the triggering user + was fully authorized. Two faces by object config: a `private` object 403'd the + in-flow write (`not permitted for positions [org_member, everyone]` — the user's + permission sets were invisible); a `public_read_write` object let the write + through but **silently stripped** readonly/FLS-gated fields. The root cause: the + ObjectQL record-change hook session carries only a `userId` — never the writer's + positions/permission sets — and nothing in between resolved them, so the comment + promising "enforces RLS exactly as the user who made the change" never held. + + The fix resolves the triggering user's **actual** authorization at run setup, from + the same tables a direct REST request resolves through: + + - **`@objectstack/core`** factors the userId-driven core of `resolveAuthzContext` + into a new exported `resolveUserAuthzGrants(ql, userId, opts)` — the single place + that reads `sys_member` / `sys_user_position` / `sys_*_permission_set` and + derives positions, permission-set names, `platform_admin`, and posture. The + HTTP resolver now delegates to it (behaviour byte-identical; the full contract + suite still passes), so a non-HTTP surface that already knows the user id builds + the SAME envelope instead of re-implementing the reads. + - **`@objectstack/service-automation`** gains `AutomationEngine.setUserGrantsResolver`, + wired by the plugin to `resolveUserAuthzGrants` over the objectql/data engine. + For a `runAs:'user'` run whose trigger left the authz envelope unresolved (no + `permissions`), the engine now resolves the user's positions + permission sets + once at run setup and threads them into every data node's ObjectQL context — + so the run enforces RLS/FLS exactly as that user. Contexts that already carry + `permissions` are left untouched (a REST trigger, and notably an ADR-0090 agent + ceiling acting on-behalf-of a user — always non-empty — so a deliberately + narrowed identity is never re-broadened). `runAs:'system'` is unchanged, and a + resolver error fails safe (warns, keeps the bare user — never elevates). + - **`@objectstack/trigger-record-change`** stops forwarding the misleading + half-populated `positions` (empty in practice, and never `permissions`) from the + hook session; it forwards `userId` + tenant only and lets the engine resolve the + full grants authoritatively. + + When no ObjectQL engine is present (bare engine / tests) the resolver is unwired + and run identity is unchanged from before. + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/formula@16.1.0 + ## 16.0.0 ### Minor Changes diff --git a/packages/services/service-automation/package.json b/packages/services/service-automation/package.json index a694118680..4c8360399e 100644 --- a/packages/services/service-automation/package.json +++ b/packages/services/service-automation/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-automation", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Automation Service for ObjectStack — implements IAutomationService with plugin-based DAG flow execution engine", "type": "module", diff --git a/packages/services/service-cache/CHANGELOG.md b/packages/services/service-cache/CHANGELOG.md index 3c089a2876..e47021c9de 100644 --- a/packages/services/service-cache/CHANGELOG.md +++ b/packages/services/service-cache/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/service-cache +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] +- Updated dependencies [818e6a3] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/observability@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/services/service-cache/package.json b/packages/services/service-cache/package.json index 92df320fde..df78436465 100644 --- a/packages/services/service-cache/package.json +++ b/packages/services/service-cache/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-cache", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Cache Service for ObjectStack — implements ICacheService with in-memory and Redis adapters", "type": "module", diff --git a/packages/services/service-cluster-redis/CHANGELOG.md b/packages/services/service-cluster-redis/CHANGELOG.md index 6329fa019f..e347846f9f 100644 --- a/packages/services/service-cluster-redis/CHANGELOG.md +++ b/packages/services/service-cluster-redis/CHANGELOG.md @@ -1,5 +1,13 @@ # @objectstack/service-cluster-redis +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] + - @objectstack/spec@16.1.0 + - @objectstack/service-cluster@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/services/service-cluster-redis/package.json b/packages/services/service-cluster-redis/package.json index 2ac2aa1e79..962b91d21a 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": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Redis cluster driver for ObjectStack — implements IPubSub/ILock/IKV/ICounter against Redis using ioredis.", "type": "module", diff --git a/packages/services/service-cluster/CHANGELOG.md b/packages/services/service-cluster/CHANGELOG.md index d12e4e1cbe..d5ce2fb44f 100644 --- a/packages/services/service-cluster/CHANGELOG.md +++ b/packages/services/service-cluster/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/service-cluster +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/services/service-cluster/package.json b/packages/services/service-cluster/package.json index d20286c12e..fae0e0b0d0 100644 --- a/packages/services/service-cluster/package.json +++ b/packages/services/service-cluster/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-cluster", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Cluster Service for ObjectStack — pluggable PubSub/Lock/KV/Counter primitives. Memory driver included; postgres/redis drivers ship separately.", "type": "module", diff --git a/packages/services/service-datasource/CHANGELOG.md b/packages/services/service-datasource/CHANGELOG.md index 364dc2ac2d..930ea76d7b 100644 --- a/packages/services/service-datasource/CHANGELOG.md +++ b/packages/services/service-datasource/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/service-external-datasource +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/services/service-datasource/package.json b/packages/services/service-datasource/package.json index 7aeb21ad69..6b5e2e2492 100644 --- a/packages/services/service-datasource/package.json +++ b/packages/services/service-datasource/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-datasource", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "The datasource service (ADR-0015): external-table federation (introspect/draft/import/validate) + runtime UI datasource lifecycle (list/test/create/update/remove + REST routes). Open-source mechanism; the tier line falls on which ICryptoProvider / driver factory a host injects.", "type": "module", diff --git a/packages/services/service-i18n/CHANGELOG.md b/packages/services/service-i18n/CHANGELOG.md index c0176d5584..cf8873c3ab 100644 --- a/packages/services/service-i18n/CHANGELOG.md +++ b/packages/services/service-i18n/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/service-i18n +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/services/service-i18n/package.json b/packages/services/service-i18n/package.json index 388f8ec923..c875ee0c80 100644 --- a/packages/services/service-i18n/package.json +++ b/packages/services/service-i18n/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-i18n", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "I18n Service for ObjectStack — implements II18nService with file-based locale loading", "type": "module", diff --git a/packages/services/service-job/CHANGELOG.md b/packages/services/service-job/CHANGELOG.md index 5c43240f4a..75df24ca68 100644 --- a/packages/services/service-job/CHANGELOG.md +++ b/packages/services/service-job/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/service-job +## 16.1.0 + +### Patch Changes + +- Updated dependencies [212b66a] +- Updated dependencies [d10c4dc] +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/platform-objects@16.1.0 + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/services/service-job/package.json b/packages/services/service-job/package.json index 2e38eef154..1db773e0dc 100644 --- a/packages/services/service-job/package.json +++ b/packages/services/service-job/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-job", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Job Service for ObjectStack — implements IJobService with setInterval and cron scheduling", "type": "module", diff --git a/packages/services/service-knowledge/CHANGELOG.md b/packages/services/service-knowledge/CHANGELOG.md index 78e86ed013..bfe3557cf4 100644 --- a/packages/services/service-knowledge/CHANGELOG.md +++ b/packages/services/service-knowledge/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/service-knowledge +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/services/service-knowledge/package.json b/packages/services/service-knowledge/package.json index f16511a090..bc69828290 100644 --- a/packages/services/service-knowledge/package.json +++ b/packages/services/service-knowledge/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-knowledge", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Knowledge Service for ObjectStack — orchestrator implementing IKnowledgeService over pluggable IKnowledgeAdapter backends (RAGFlow, LlamaIndex, Dify, in-memory).", "type": "module", diff --git a/packages/services/service-messaging/CHANGELOG.md b/packages/services/service-messaging/CHANGELOG.md index 9b479542a5..428b03e69f 100644 --- a/packages/services/service-messaging/CHANGELOG.md +++ b/packages/services/service-messaging/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/service-messaging +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/services/service-messaging/package.json b/packages/services/service-messaging/package.json index 3012aabbcc..e273c33d80 100644 --- a/packages/services/service-messaging/package.json +++ b/packages/services/service-messaging/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-messaging", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Messaging Service for ObjectStack — outbound notification dispatch (ADR-0012). Ships the MessagingChannel registry, emit() fan-out, and the always-on inbox channel; other channels (email/webhook/push/IM) plug in.", "type": "module", diff --git a/packages/services/service-package/CHANGELOG.md b/packages/services/service-package/CHANGELOG.md index 3e92970f1d..010634da38 100644 --- a/packages/services/service-package/CHANGELOG.md +++ b/packages/services/service-package/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/service-package +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/metadata-core@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/services/service-package/package.json b/packages/services/service-package/package.json index 0cea24c93c..3522d1e649 100644 --- a/packages/services/service-package/package.json +++ b/packages/services/service-package/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-package", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Package management service for ObjectStack — publish, install, and manage packages", "type": "module", diff --git a/packages/services/service-queue/CHANGELOG.md b/packages/services/service-queue/CHANGELOG.md index 374213b3e5..c81ca56d65 100644 --- a/packages/services/service-queue/CHANGELOG.md +++ b/packages/services/service-queue/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/service-queue +## 16.1.0 + +### Patch Changes + +- Updated dependencies [212b66a] +- Updated dependencies [d10c4dc] +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/platform-objects@16.1.0 + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/services/service-queue/package.json b/packages/services/service-queue/package.json index ded2b7935a..53b5b28809 100644 --- a/packages/services/service-queue/package.json +++ b/packages/services/service-queue/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-queue", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Queue Service for ObjectStack — implements IQueueService with in-memory and durable DB-backed (sys_job_queue) adapters", "type": "module", diff --git a/packages/services/service-realtime/CHANGELOG.md b/packages/services/service-realtime/CHANGELOG.md index c49190d0ab..861a395c04 100644 --- a/packages/services/service-realtime/CHANGELOG.md +++ b/packages/services/service-realtime/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/service-realtime +## 16.1.0 + +### Patch Changes + +- Updated dependencies [212b66a] +- Updated dependencies [d10c4dc] +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/platform-objects@16.1.0 + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/services/service-realtime/package.json b/packages/services/service-realtime/package.json index e23722f3a3..f9f6cee0c1 100644 --- a/packages/services/service-realtime/package.json +++ b/packages/services/service-realtime/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-realtime", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Realtime Service for ObjectStack — implements IRealtimeService with WebSocket and in-memory pub/sub", "type": "module", diff --git a/packages/services/service-settings/CHANGELOG.md b/packages/services/service-settings/CHANGELOG.md index 1078f566b4..c591f3eca0 100644 --- a/packages/services/service-settings/CHANGELOG.md +++ b/packages/services/service-settings/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/service-settings +## 16.1.0 + +### Patch Changes + +- Updated dependencies [212b66a] +- Updated dependencies [d10c4dc] +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/platform-objects@16.1.0 + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/types@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/services/service-settings/package.json b/packages/services/service-settings/package.json index 0a79af0383..2f1a6369b3 100644 --- a/packages/services/service-settings/package.json +++ b/packages/services/service-settings/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-settings", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Settings service for ObjectStack — manifest registry + K/V resolver (OS_* env > Tenant > User > Default) + REST routes. See ADR-0007.", "type": "module", diff --git a/packages/services/service-sms/CHANGELOG.md b/packages/services/service-sms/CHANGELOG.md index b9ddc12eec..ed1e2b3cf6 100644 --- a/packages/services/service-sms/CHANGELOG.md +++ b/packages/services/service-sms/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/service-sms +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/services/service-sms/package.json b/packages/services/service-sms/package.json index 5a42f2e6b3..1a36658f53 100644 --- a/packages/services/service-sms/package.json +++ b/packages/services/service-sms/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-sms", - "version": "16.0.0", + "version": "16.1.0", "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 f4f1b3129b..ac182f1b13 100644 --- a/packages/services/service-storage/CHANGELOG.md +++ b/packages/services/service-storage/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/service-storage +## 16.1.0 + +### Patch Changes + +- Updated dependencies [212b66a] +- Updated dependencies [d10c4dc] +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] +- Updated dependencies [818e6a3] + - @objectstack/platform-objects@16.1.0 + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/observability@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/services/service-storage/package.json b/packages/services/service-storage/package.json index ce98cb467a..c11de60036 100644 --- a/packages/services/service-storage/package.json +++ b/packages/services/service-storage/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-storage", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Storage Service for ObjectStack — implements IStorageService with local filesystem and S3 adapter skeleton", "type": "module", diff --git a/packages/spec/CHANGELOG.md b/packages/spec/CHANGELOG.md index 8e8347a61d..3a4cc45298 100644 --- a/packages/spec/CHANGELOG.md +++ b/packages/spec/CHANGELOG.md @@ -1,5 +1,33 @@ # @objectstack/spec +## 16.1.0 + +### Minor Changes + +- 9e45b63: feat(cli): preflight that every `requires` capability has an installable provider + in the current edition (#3366) + + A capability listed in `requires: [...]` was only checked at `serve`/`start` time, + and a missing provider produced a generic "not installed — add it to your + dependencies" error even when the provider has **no installable version in the + current edition**. `os validate` (token-vocabulary only) and `os build` (never + resolved providers) both passed, so a `validate && build && test` CI script never + caught it — it surfaced only as an opaque boot crash. Seen upgrading an + open-edition app from `14.7` to `16` after `@objectstack/service-ai` went + cloud-only (ADR-0025). + + - `@objectstack/spec/kernel` now exports `PLATFORM_CAPABILITY_PROVIDERS` + (token → provider package + edition) and a pure `classifyRequiredCapability()` — + one machine-readable source of truth for the provider/edition knowledge the + serve resolver previously encoded informally. + - `os build` and `os validate` gained a provider preflight. A `requires` entry + whose provider has **no installable version in the active edition** (e.g. `ai` → + `@objectstack/service-ai`, cloud-only) now fails fast with an edition-aware + message; an absent-but-installable provider is an advisory `pnpm add` hint, not + a hard error; a satisfied `requires` list passes unchanged. + - The `os serve` boot error now renders the same classification, so preflight and + boot read identically. + ## 16.0.0 ### Major Changes diff --git a/packages/spec/package.json b/packages/spec/package.json index 34bdeecd29..28191c8e2e 100644 --- a/packages/spec/package.json +++ b/packages/spec/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/spec", - "version": "16.0.0", + "version": "16.1.0", "description": "ObjectStack Protocol & Specification - TypeScript Interfaces, JSON Schemas, and Convention Configurations", "license": "Apache-2.0", "main": "dist/index.js", diff --git a/packages/triggers/trigger-api/CHANGELOG.md b/packages/triggers/trigger-api/CHANGELOG.md index d983fe5169..43dde3534b 100644 --- a/packages/triggers/trigger-api/CHANGELOG.md +++ b/packages/triggers/trigger-api/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/trigger-api +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/triggers/trigger-api/package.json b/packages/triggers/trigger-api/package.json index ed9ea9fc7b..1492f1d30a 100644 --- a/packages/triggers/trigger-api/package.json +++ b/packages/triggers/trigger-api/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/trigger-api", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Inbound HTTP/webhook flow trigger for ObjectStack — per-flow HMAC-verified endpoints with queue-backed ingestion (ADR-0041)", "main": "dist/index.js", diff --git a/packages/triggers/trigger-record-change/CHANGELOG.md b/packages/triggers/trigger-record-change/CHANGELOG.md index d969a95125..86b564cf60 100644 --- a/packages/triggers/trigger-record-change/CHANGELOG.md +++ b/packages/triggers/trigger-record-change/CHANGELOG.md @@ -1,5 +1,58 @@ # @objectstack/plugin-trigger-record-change +## 16.1.0 + +### Patch Changes + +- b20201f: fix(service-automation): `runAs:'user'` runs data ops with the triggering user's + real permission sets + positions, not a bare member fallback (#3356, follow-up to + #1888) + + Since #1888 the automation engine honours `flow.runAs` (`system` elevates), but + the `runAs:'user'` credential propagation was hollow. A record-change-triggered + `runAs:'user'` flow ran its data nodes (`update_record`, …) with a **zero-grant** + principal — only the `member`/`everyone` baseline — even when the triggering user + was fully authorized. Two faces by object config: a `private` object 403'd the + in-flow write (`not permitted for positions [org_member, everyone]` — the user's + permission sets were invisible); a `public_read_write` object let the write + through but **silently stripped** readonly/FLS-gated fields. The root cause: the + ObjectQL record-change hook session carries only a `userId` — never the writer's + positions/permission sets — and nothing in between resolved them, so the comment + promising "enforces RLS exactly as the user who made the change" never held. + + The fix resolves the triggering user's **actual** authorization at run setup, from + the same tables a direct REST request resolves through: + + - **`@objectstack/core`** factors the userId-driven core of `resolveAuthzContext` + into a new exported `resolveUserAuthzGrants(ql, userId, opts)` — the single place + that reads `sys_member` / `sys_user_position` / `sys_*_permission_set` and + derives positions, permission-set names, `platform_admin`, and posture. The + HTTP resolver now delegates to it (behaviour byte-identical; the full contract + suite still passes), so a non-HTTP surface that already knows the user id builds + the SAME envelope instead of re-implementing the reads. + - **`@objectstack/service-automation`** gains `AutomationEngine.setUserGrantsResolver`, + wired by the plugin to `resolveUserAuthzGrants` over the objectql/data engine. + For a `runAs:'user'` run whose trigger left the authz envelope unresolved (no + `permissions`), the engine now resolves the user's positions + permission sets + once at run setup and threads them into every data node's ObjectQL context — + so the run enforces RLS/FLS exactly as that user. Contexts that already carry + `permissions` are left untouched (a REST trigger, and notably an ADR-0090 agent + ceiling acting on-behalf-of a user — always non-empty — so a deliberately + narrowed identity is never re-broadened). `runAs:'system'` is unchanged, and a + resolver error fails safe (warns, keeps the bare user — never elevates). + - **`@objectstack/trigger-record-change`** stops forwarding the misleading + half-populated `positions` (empty in practice, and never `permissions`) from the + hook session; it forwards `userId` + tenant only and lets the engine resolve the + full grants authoritatively. + + When no ObjectQL engine is present (bare engine / tests) the resolver is unwired + and run identity is unchanged from before. + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + ## 16.0.0 ### Minor Changes diff --git a/packages/triggers/trigger-record-change/package.json b/packages/triggers/trigger-record-change/package.json index fc74568b3a..bfc7cf5e55 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": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Record-change flow trigger for ObjectStack — auto-launches flows on object insert/update/delete via ObjectQL lifecycle hooks (ADR-0018)", "main": "dist/index.js", diff --git a/packages/triggers/trigger-schedule/CHANGELOG.md b/packages/triggers/trigger-schedule/CHANGELOG.md index 28d6a8d802..8017411e4d 100644 --- a/packages/triggers/trigger-schedule/CHANGELOG.md +++ b/packages/triggers/trigger-schedule/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/plugin-trigger-schedule +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + ## 16.0.0 ### Minor Changes diff --git a/packages/triggers/trigger-schedule/package.json b/packages/triggers/trigger-schedule/package.json index 49b009f1bc..ae7fbfe05e 100644 --- a/packages/triggers/trigger-schedule/package.json +++ b/packages/triggers/trigger-schedule/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/trigger-schedule", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Schedule flow trigger for ObjectStack — auto-launches flows on a cron/interval/once schedule via the IJobService (ADR-0018)", "main": "dist/index.js", diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index 1867f0f4d3..e0da4b5816 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -1,5 +1,12 @@ # @objectstack/types +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] + - @objectstack/spec@16.1.0 + ## 16.0.0 ### Minor Changes diff --git a/packages/types/package.json b/packages/types/package.json index 0ab4ba5b87..47e2d59871 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/types", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Shared interfaces describing the ObjectStack Runtime environment", "main": "dist/index.js", diff --git a/packages/verify/CHANGELOG.md b/packages/verify/CHANGELOG.md index be90a15000..46121f01df 100644 --- a/packages/verify/CHANGELOG.md +++ b/packages/verify/CHANGELOG.md @@ -1,5 +1,27 @@ # @objectstack/verify +## 16.1.0 + +### Patch Changes + +- Updated dependencies [9e45b63] +- Updated dependencies [b20201f] +- Updated dependencies [818e6a3] + - @objectstack/spec@16.1.0 + - @objectstack/core@16.1.0 + - @objectstack/service-automation@16.1.0 + - @objectstack/rest@16.1.0 + - @objectstack/plugin-hono-server@16.1.0 + - @objectstack/runtime@16.1.0 + - @objectstack/plugin-auth@16.1.0 + - @objectstack/plugin-security@16.1.0 + - @objectstack/plugin-sharing@16.1.0 + - @objectstack/service-settings@16.1.0 + - @objectstack/objectql@16.1.0 + - @objectstack/driver-sqlite-wasm@16.1.0 + - @objectstack/service-analytics@16.1.0 + - @objectstack/service-datasource@16.1.0 + ## 16.0.0 ### Patch Changes diff --git a/packages/verify/package.json b/packages/verify/package.json index abc5198c2c..43f034d172 100644 --- a/packages/verify/package.json +++ b/packages/verify/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/verify", - "version": "16.0.0", + "version": "16.1.0", "license": "Apache-2.0", "description": "Boot any ObjectStack app in-process and verify it through the real HTTP stack — auto-derived CRUD round-trip fidelity plus the cross-owner RLS invariant. Catches runtime regressions that static checks miss.", "type": "module", diff --git a/packages/vscode-objectstack/CHANGELOG.md b/packages/vscode-objectstack/CHANGELOG.md index 407a59fc0b..8c7c079ee5 100644 --- a/packages/vscode-objectstack/CHANGELOG.md +++ b/packages/vscode-objectstack/CHANGELOG.md @@ -1,5 +1,7 @@ # objectstack-vscode +## 16.1.0 + ## 16.0.0 ## 16.0.0-rc.1 diff --git a/packages/vscode-objectstack/package.json b/packages/vscode-objectstack/package.json index fa58b7f84c..50c147208d 100644 --- a/packages/vscode-objectstack/package.json +++ b/packages/vscode-objectstack/package.json @@ -2,7 +2,7 @@ "name": "objectstack-vscode", "displayName": "ObjectStack", "description": "ObjectStack Protocol — Autocomplete, validation, and inline diagnostics for .object.ts, .view.ts, and objectstack.config.ts files", - "version": "16.0.0", + "version": "16.1.0", "publisher": "objectstack", "license": "Apache-2.0", "repository": {