diff --git a/.changeset/analytics-datetime-epoch-filter.md b/.changeset/analytics-datetime-epoch-filter.md deleted file mode 100644 index 8137a4bca7..0000000000 --- a/.changeset/analytics-datetime-epoch-filter.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@objectstack/service-analytics": patch -"@objectstack/driver-sql": patch -"@objectstack/spec": patch ---- - -Fix dashboard time-series charts / "last N months" KPIs that filter or group by a `Field.datetime` column silently returning "No rows". - -The analytics `NativeSQLStrategy` compiles dashboard relative-date tokens (`{12_months_ago}`, `{today}`, …) to ISO date strings and binds them directly into raw SQL, bypassing the driver's own filter coercion. Under better-sqlite3 a `Field.datetime` column is stored as an INTEGER epoch (ms), so `assessed_at >= '2025-06-18'` became a TEXT-vs-INTEGER affinity compare that is always false — an empty result even though the rows exist. `Field.date` columns store ISO TEXT and were unaffected. - -The strategy now coerces a temporal comparand to the column's on-disk storage form via a new optional `StrategyContext.coerceTemporalFilterValue` hook, wired to the driver's public `SqlDriver.temporalFilterValue` (the single source of truth for the storage convention). Coercion is dialect-correct: SQLite `Field.datetime` → epoch ms; `Field.date` text and native-timestamp dialects (Postgres/MySQL) are left unchanged, so Postgres is never handed an epoch integer. Applied to `gte`/`lte`/`gt`/`lt`/`equals`, `in`/`notIn`, and the `dateRange`/timeDimension `BETWEEN` path. diff --git a/.changeset/example-apps-spec-input-types.md b/.changeset/example-apps-spec-input-types.md deleted file mode 100644 index 6251865776..0000000000 --- a/.changeset/example-apps-spec-input-types.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@objectstack/spec": patch ---- - -Add `*Input` authoring-type aliases (`DatasourceInput`, `ConnectorInput`, `SharingRuleInput`, `JobInput`, `WebhookInput`, `EmailTemplateDefinitionInput`, `RoleInput`, `PermissionSetInput`, `ObjectExtensionInput`) alongside the existing `FieldInput`/`ActionInput`/`ReportInput`/`PortalInput` convention. These are `z.input` aliases so authored literals keep `.default()` fields optional and accept CEL/Expression string shorthands — matching how `defineX()` helpers already accept input. No runtime change. diff --git a/.changeset/field-type-fidelity-legacy.md b/.changeset/field-type-fidelity-legacy.md deleted file mode 100644 index ed194e863e..0000000000 --- a/.changeset/field-type-fidelity-legacy.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@objectstack/driver-sql": patch ---- - -fix(driver-sql): make numeric-scalar type fidelity self-heal on legacy SQLite columns - -The #2025 fix mapped `rating`/`slider`/`progress` to numeric columns, but SQLite never alters a column's type in place and the schema reconciler only adds missing columns — so a column created before that fix keeps its TEXT affinity and would still read back `'4'` instead of `4` forever. - -A read-side numeric coercion (the new `numericFields` registry, single-sourced from `NUMERIC_SCALAR_TYPES`) now coerces numeric-looking stored strings back to numbers on read, mirroring how `dateFields` already repairs legacy timestamp-typed `Field.date` rows. The fidelity no longer depends on column affinity alone; `null` and genuinely non-numeric legacy values are left intact rather than turned into `0`/`NaN`. diff --git a/.changeset/field-type-fidelity.md b/.changeset/field-type-fidelity.md deleted file mode 100644 index 2001258681..0000000000 --- a/.changeset/field-type-fidelity.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@objectstack/driver-sql": patch ---- - -fix(driver-sql): round-trip rating/slider/toggle/progress with type fidelity - -`rating`/`slider`/`toggle`/`progress` had no case in the DDL column-type switch, so they fell to `default → table.string` (TEXT affinity). SQLite then coerced the written value to a string — `rating: 4` read back `'4'`, `toggle: true` read back `'1'` — so the value persisted but the JS type leaked on read. On a low-code platform where field types are author-driven, a field that silently returns the wrong type is a runtime-fidelity trap the static gates and value-loss tests don't catch. - -- `rating`/`slider`/`progress` now map to a REAL (numeric) column. -- `toggle` maps to a boolean column and is registered in the boolean read-coercion path, so stored `1`/`0` come back as real JS booleans. -- The object-valued `record`/`video`/`audio` types are folded into the shared `JSON_COLUMN_TYPES` source, and the DDL `default` case now derives JSON-vs-string from that set, so the column-type switch and `isJsonField` (the read-side deserializer) can no longer drift. diff --git a/.changeset/formula-add-days-months.md b/.changeset/formula-add-days-months.md deleted file mode 100644 index 87733caef9..0000000000 --- a/.changeset/formula-add-days-months.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@objectstack/formula": minor ---- - -Add `addDays(date, n)` and `addMonths(date, n)` to the CEL standard library — shift an arbitrary date by a (possibly negative) number of days or months. Unlike `daysFromNow`, these operate on a *given* date (the "next service date = last service + cycle" shape). `addMonths` clamps to the target month's last day (`addMonths(date('2026-01-31'), 1)` → Feb 28, never overflowing into March). Both coerce their inputs (Date | ISO string | epoch) and type `n` as `dyn` so a record number field arriving as a `double` doesn't fault `no such overload` (#1928). diff --git a/.changeset/gantt-config-extended-fields.md b/.changeset/gantt-config-extended-fields.md deleted file mode 100644 index 2907489c97..0000000000 --- a/.changeset/gantt-config-extended-fields.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -"@objectstack/spec": patch ---- - -fix(spec): declare the extended Gantt config fields the renderer actually reads - -`GanttConfigSchema` only declared the 5 core timeline fields as a plain -`z.object` (no passthrough), so every other field the Gantt renderer consumes — -`parentField`/`typeField` (two-level summary→step hierarchy), `colorField`, -`groupByField`, `tooltipFields`, `baselineStartField`/`baselineEndField`, -`resourceView`/`assigneeField`/`effortField`/`capacity`, `quickFilters`, -`autoZoomToFilter` — was silently stripped by `.parse()` on both the compile-time -protocol check and the runtime `GET /api/v1/meta/view/:object` re-validation. With -the keys gone before render, the Gantt degraded to a flat list (no parent/child -rows, no summary bars, no expand/collapse). These fields are now declared -explicitly (with descriptions), so the renderer contract round-trips through the -spec instead of requiring downstream patches. diff --git a/.changeset/i18n-view-form-end-user-controls.md b/.changeset/i18n-view-form-end-user-controls.md deleted file mode 100644 index d817457485..0000000000 --- a/.changeset/i18n-view-form-end-user-controls.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@objectstack/platform-objects": patch ---- - -fix(i18n): add view form `end_user_controls` translations for en, es-ES, ja-JP and zh-CN metadata-forms bundles. diff --git a/.changeset/multitenant-seed-ownership.md b/.changeset/multitenant-seed-ownership.md deleted file mode 100644 index e1bbde3e19..0000000000 --- a/.changeset/multitenant-seed-ownership.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -"@objectstack/plugin-org-scoping": minor ---- - -feat(org-scoping): hand a default org's seeded records to its admin (multi-tenant ownership handoff) - -The multi-tenant companion to plugin-security's single-tenant `claimSeedOwnership`. -Seeded rows land `owner_id` NULL (the author leaves it unset; `cel`os.user.id`` -resolves to NULL at seed time). In multi-tenant mode `claimOrphanOrgRows` -back-fills their `organization_id`, but `owner_id` stayed NULL — so "My" views, -owner reports and owner notifications were empty for the org's members. - -- New `claimOrgSeedOwnership(ql, organizationId, ownerUserId)` — assigns - `owner_id = ownerUserId` to an org's NULL-owned seed rows. Scoped to a single - org (never touches another tenant), idempotent, skips `managedBy` / `sys_*`, - and requires both `owner_id` and `organization_id` columns. -- `ensureDefaultOrganization` now calls it after binding the platform admin as - the default org's owner, so the default org's demo data is owned by the admin - out of the box — symmetric with the single-tenant first-admin handoff. diff --git a/.changeset/rls-converge-docs-dynamic-membership.md b/.changeset/rls-converge-docs-dynamic-membership.md deleted file mode 100644 index 2d3d52f6f0..0000000000 --- a/.changeset/rls-converge-docs-dynamic-membership.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@objectstack/spec": minor -"@objectstack/plugin-security": minor ---- - -Converge the RLS contract with the reference compiler, and wire §7.3.1 dynamic membership. - -- **spec (docs)**: narrow `rls.zod.ts` to the four expression forms the compiler actually implements — `field = current_user.`, `field = 'literal'`, `field IN (current_user.)`, and `1 = 1`. Removed the over-promised surface (subqueries, `AND`/`OR`/`NOT`, `LIKE`/`ILIKE`, regex, `ANY`/`ALL`, `NOT IN`, `IS NULL`, `NOW()`/`CURRENT_DATE`) from the operator list, context-variable list, and `@example` policies, and documented the fail-closed behaviour explicitly. -- **spec (schema)**: `ExecutionContext` gains `rlsMembership?: Record` — a bag of pre-resolved dynamic-membership id arrays (team members, territory accounts, shared records) that the runtime stages so RLS can scope via `field IN (current_user.)` without subquery support. Generalizes the previously hard-coded `org_user_ids`. -- **plugin-security**: `RLSCompiler.compileFilter` merges `rlsMembership` keys into the user context (arrays only, never clobbering the named `id`/`organization_id`/`roles`/`org_user_ids` fields), so §7.3.1 hierarchy- and sharing-based policies compile. `compileExpression` now recognizes `1 = 1` as always-true (empty filter), making `RLS.allowAllPolicy` grant access instead of silently failing closed. Missing/empty membership sets still fail closed. diff --git a/.changeset/sandbox-ctx-api-transaction.md b/.changeset/sandbox-ctx-api-transaction.md deleted file mode 100644 index 8fb7d26e51..0000000000 --- a/.changeset/sandbox-ctx-api-transaction.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@objectstack/spec": minor -"@objectstack/objectql": minor -"@objectstack/runtime": minor ---- - -Add a transaction boundary to sandboxed hook/action bodies: `ctx.api.transaction(async () => { … })`. Every `ctx.api` read/write inside the callback runs in one driver transaction — committed when the callback returns, rolled back if it throws (or if the body leaves the transaction open at timeout). Guarded by the new `api.transaction` capability. - -- **spec**: new `api.transaction` capability token on `HookBodyCapability`. -- **objectql**: `ScopedContext` gains discrete `beginTransaction()` / `commitTransaction(handle)` / `rollbackTransaction(handle)` primitives. The handle is threaded **explicitly** through a child context (`resolveTx` honors it ahead of the ambient `txStore`), because the sandbox drives the body across many host event-loop turns where AsyncLocalStorage context does not survive. Degrades to non-transactional execution when the driver has no transaction support. -- **runtime**: the QuickJS runner wires `ctx.api.transaction` over three deferred-promise host leaves (begin/commit/rollback), routes in-transaction ops through the tx-scoped context, and rolls back a transaction the body left open before disposing the VM. diff --git a/.changeset/seed-ownership-handoff.md b/.changeset/seed-ownership-handoff.md deleted file mode 100644 index 97ffe09b3a..0000000000 --- a/.changeset/seed-ownership-handoff.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -"@objectstack/objectql": minor -"@objectstack/plugin-security": minor -"@objectstack/runtime": minor ---- - -feat(ownership): auto-provision a canonical `owner_id` and hand seeded records to the first admin - -Ownership is now correct-by-default instead of opt-in — closing the gap where -seeded demo data ended up owned by nobody a human can log in as (so "My" views, -owner reports and owner notifications were empty out of the box) and where -author-written objects silently shipped with no working ownership at all. - -- **`applySystemFields` (objectql)** now auto-injects a canonical, reassignable - `owner_id` lookup (→ `sys_user`) on user-authored business objects, alongside - the existing tenant/audit fields. Unlike the audit `*_by` lookups it is NOT - readonly — ownership transfers. Withheld for `managedBy` / `sys_*` tables and - for objects that opt out via `ownership: 'org' | 'none'` (Dataverse-style). The - safe default direction: forgetting the opt-out leaves a harmless spare column, - whereas the old opt-IN model let authors ship objects with broken ownership. - Once present, the existing machinery engages automatically (insert auto-stamp, - owner-scoped RLS, owner-keyed views/reports). - -- **`claimSeedOwnership` (plugin-security)**, invoked from `bootstrapPlatformAdmin` - right after the first human is promoted to platform admin, transfers ownership - of seeded rows (`owner_id` NULL or `usr_system`) to that admin. The ownership - twin of org-scoping's `claimOrphanOrgRows`. Idempotent; skips `managedBy` / - `sys_*`. Authors write plain seed records (no `owner_id`) and the platform — - not the author — performs the handoff, so there is nothing to remember or - mistype. - -- **`usr_system` is never minted (runtime + objectql).** The seed loader binds - `os.user` to a NULL identity, so `cel`os.user.id`` resolves to NULL at seed - time (the owning admin does not exist yet) and the row seeds NULL-owned — then - the handoff above fills it. The runtime's `ensureSeedIdentity` (the only code - that inserted a `usr_system` row) is removed. `SystemUserId.SYSTEM` survives - only as a reserved id so legacy DBs' exclusion guards / ownership handoff still - recognize a pre-existing row. `os.org` is unaffected (derived from - `organizationId`). - -Also hardens `bootstrapPlatformAdmin` against a latent dts typecheck error -(defensive read of the untyped `description` on seed permission sets). diff --git a/.changeset/tz-analytics-bucketing.md b/.changeset/tz-analytics-bucketing.md deleted file mode 100644 index 61de2ee59a..0000000000 --- a/.changeset/tz-analytics-bucketing.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@objectstack/service-analytics": patch -"@objectstack/objectql": patch -"@objectstack/rest": patch ---- - -fix(analytics): make organization timezone actually drive date-dimension bucketing (ADR-0053 Phase 2, #1982) - -Date-bucketed analytics silently ignored the reference timezone end-to-end. Three independent seams were broken: - -- **service-analytics** — `NativeSQLStrategy` (priority 10) won every cube/dataset query on a SQL driver, but it groups by the raw column (no `date_trunc`) and ignores `timezone`, so a date dimension never bucketed (one row per raw timestamp) and a non-UTC zone was dropped. It now declines queries that carry a `timeDimensions[].granularity`, handing them to `ObjectQLStrategy` → `engine.aggregate` (native bucketing when UTC-safe, uniform in-memory bucketing when non-UTC). -- **objectql** — the in-memory `count` aggregation treated the `*` count-all sentinel (the Cube `count` measure / a fieldless dataset `count`, both compiled to `sql: '*'`) as a column name, counting non-null of a non-existent property → `0` for every bucket. The driver's `COUNT(*)` masked it; the in-memory path (non-UTC date buckets, `driver-rest`/`driver-memory`) returned zeros. `*` is now counted as all rows. -- **rest** — `resolveExecCtx` never resolved the localization timezone/locale, so `/analytics/dataset/query` always ran with `timezone: 'UTC'`. It now resolves them through the `settings` service (honouring the 4-tier cascade incl. the `OS_LOCALIZATION_TIMEZONE` env override), mirroring the dispatcher path. diff --git a/examples/app-crm/CHANGELOG.md b/examples/app-crm/CHANGELOG.md index 619a9f4f13..a8974f7f1a 100644 --- a/examples/app-crm/CHANGELOG.md +++ b/examples/app-crm/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/example-crm +## 4.0.53 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] +- Updated dependencies [e2b5324] + - @objectstack/spec@9.10.0 + - @objectstack/runtime@9.10.0 + ## 4.0.52 ### Patch Changes diff --git a/examples/app-crm/package.json b/examples/app-crm/package.json index bc844fa18c..2d054bdca4 100644 --- a/examples/app-crm/package.json +++ b/examples/app-crm/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/example-crm", - "version": "4.0.52", + "version": "4.0.53", "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 1abeba7ccd..74a4790358 100644 --- a/examples/app-showcase/CHANGELOG.md +++ b/examples/app-showcase/CHANGELOG.md @@ -1,5 +1,21 @@ # @objectstack/example-showcase +## 0.1.23 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] +- Updated dependencies [e2b5324] + - @objectstack/spec@9.10.0 + - @objectstack/runtime@9.10.0 + - @objectstack/cloud-connection@9.10.0 + - @objectstack/connector-rest@9.10.0 + - @objectstack/connector-slack@9.10.0 + ## 0.1.22 ### Patch Changes diff --git a/examples/app-showcase/package.json b/examples/app-showcase/package.json index 43d490b6a2..4019a45b2b 100644 --- a/examples/app-showcase/package.json +++ b/examples/app-showcase/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/example-showcase", - "version": "0.1.22", + "version": "0.1.23", "description": "Kitchen-sink showcase workspace — exercises every metadata type, every view type, every chart type, and the major end-to-end capability chains (security, automation, AI). Built for demonstration, debugging, and coverage-driven verification.", "license": "Apache-2.0", "private": true, diff --git a/examples/app-todo/CHANGELOG.md b/examples/app-todo/CHANGELOG.md index a0e5c08312..2eca258696 100644 --- a/examples/app-todo/CHANGELOG.md +++ b/examples/app-todo/CHANGELOG.md @@ -1,5 +1,26 @@ # @objectstack/example-todo +## 4.0.53 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] +- Updated dependencies [e2b5324] +- Updated dependencies [fd07027] + - @objectstack/spec@9.10.0 + - @objectstack/objectql@9.10.0 + - @objectstack/runtime@9.10.0 + - @objectstack/driver-sqlite-wasm@9.10.0 + - @objectstack/client@9.10.0 + - @objectstack/metadata@9.10.0 + - @objectstack/knowledge-memory@9.10.0 + - @objectstack/service-ai@9.10.0 + - @objectstack/service-knowledge@9.10.0 + ## 4.0.52 ### Patch Changes diff --git a/examples/app-todo/package.json b/examples/app-todo/package.json index 68a54f4aed..e2e394eb16 100644 --- a/examples/app-todo/package.json +++ b/examples/app-todo/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/example-todo", - "version": "4.0.52", + "version": "4.0.53", "description": "Example Todo App using ObjectStack Protocol", "license": "Apache-2.0", "private": true, diff --git a/packages/adapters/express/CHANGELOG.md b/packages/adapters/express/CHANGELOG.md index f56c4e0ddd..566a824166 100644 --- a/packages/adapters/express/CHANGELOG.md +++ b/packages/adapters/express/CHANGELOG.md @@ -1,5 +1,13 @@ # @objectstack/express +## 9.10.0 + +### Patch Changes + +- Updated dependencies [1f88fd9] +- Updated dependencies [e2b5324] + - @objectstack/runtime@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/adapters/express/package.json b/packages/adapters/express/package.json index a539a62951..3717912a9f 100644 --- a/packages/adapters/express/package.json +++ b/packages/adapters/express/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/express", - "version": "9.9.1", + "version": "9.10.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/adapters/fastify/CHANGELOG.md b/packages/adapters/fastify/CHANGELOG.md index 7e33bc6f1c..9c5522fe50 100644 --- a/packages/adapters/fastify/CHANGELOG.md +++ b/packages/adapters/fastify/CHANGELOG.md @@ -1,5 +1,13 @@ # @objectstack/fastify +## 9.10.0 + +### Patch Changes + +- Updated dependencies [1f88fd9] +- Updated dependencies [e2b5324] + - @objectstack/runtime@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/adapters/fastify/package.json b/packages/adapters/fastify/package.json index c404311238..2db4c44459 100644 --- a/packages/adapters/fastify/package.json +++ b/packages/adapters/fastify/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/fastify", - "version": "9.9.1", + "version": "9.10.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/adapters/hono/CHANGELOG.md b/packages/adapters/hono/CHANGELOG.md index d4440b22be..7312252448 100644 --- a/packages/adapters/hono/CHANGELOG.md +++ b/packages/adapters/hono/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/hono +## 9.10.0 + +### Patch Changes + +- Updated dependencies [1f88fd9] +- Updated dependencies [e2b5324] + - @objectstack/runtime@9.10.0 + - @objectstack/plugin-hono-server@9.10.0 + - @objectstack/types@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/adapters/hono/package.json b/packages/adapters/hono/package.json index 793ed99bff..be18ef1702 100644 --- a/packages/adapters/hono/package.json +++ b/packages/adapters/hono/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/hono", - "version": "9.9.1", + "version": "9.10.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/adapters/nestjs/CHANGELOG.md b/packages/adapters/nestjs/CHANGELOG.md index 930ac26423..9a22850196 100644 --- a/packages/adapters/nestjs/CHANGELOG.md +++ b/packages/adapters/nestjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @objectstack/nestjs +## 9.10.0 + +### Patch Changes + +- Updated dependencies [1f88fd9] +- Updated dependencies [e2b5324] + - @objectstack/runtime@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/adapters/nestjs/package.json b/packages/adapters/nestjs/package.json index 1a05dbb0c2..c01c5113d9 100644 --- a/packages/adapters/nestjs/package.json +++ b/packages/adapters/nestjs/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/nestjs", - "version": "9.9.1", + "version": "9.10.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/adapters/nextjs/CHANGELOG.md b/packages/adapters/nextjs/CHANGELOG.md index 7b263500e4..a1e8ca585b 100644 --- a/packages/adapters/nextjs/CHANGELOG.md +++ b/packages/adapters/nextjs/CHANGELOG.md @@ -1,5 +1,13 @@ # @objectstack/nextjs +## 9.10.0 + +### Patch Changes + +- Updated dependencies [1f88fd9] +- Updated dependencies [e2b5324] + - @objectstack/runtime@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/adapters/nextjs/package.json b/packages/adapters/nextjs/package.json index 58a7d4f132..6580838695 100644 --- a/packages/adapters/nextjs/package.json +++ b/packages/adapters/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/nextjs", - "version": "9.9.1", + "version": "9.10.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/adapters/nuxt/CHANGELOG.md b/packages/adapters/nuxt/CHANGELOG.md index 0d5d4eaa52..e0c3d71ab9 100644 --- a/packages/adapters/nuxt/CHANGELOG.md +++ b/packages/adapters/nuxt/CHANGELOG.md @@ -1,5 +1,13 @@ # @objectstack/nuxt +## 9.10.0 + +### Patch Changes + +- Updated dependencies [1f88fd9] +- Updated dependencies [e2b5324] + - @objectstack/runtime@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/adapters/nuxt/package.json b/packages/adapters/nuxt/package.json index db9af0db2a..dd6adeecd8 100644 --- a/packages/adapters/nuxt/package.json +++ b/packages/adapters/nuxt/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/nuxt", - "version": "9.9.1", + "version": "9.10.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/adapters/sveltekit/CHANGELOG.md b/packages/adapters/sveltekit/CHANGELOG.md index e6567a15dc..4cc3b892b9 100644 --- a/packages/adapters/sveltekit/CHANGELOG.md +++ b/packages/adapters/sveltekit/CHANGELOG.md @@ -1,5 +1,13 @@ # @objectstack/sveltekit +## 9.10.0 + +### Patch Changes + +- Updated dependencies [1f88fd9] +- Updated dependencies [e2b5324] + - @objectstack/runtime@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/adapters/sveltekit/package.json b/packages/adapters/sveltekit/package.json index 9dd1e93ba7..94e01a20ce 100644 --- a/packages/adapters/sveltekit/package.json +++ b/packages/adapters/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/sveltekit", - "version": "9.9.1", + "version": "9.10.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 b4571fe981..bad8dc2e15 100644 --- a/packages/apps/account/CHANGELOG.md +++ b/packages/apps/account/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/account +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [4331adb] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/platform-objects@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/apps/account/package.json b/packages/apps/account/package.json index 0848da77e5..997d43971c 100644 --- a/packages/apps/account/package.json +++ b/packages/apps/account/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/account", - "version": "9.9.1", + "version": "9.10.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 2335fa82e2..ca725f53d8 100644 --- a/packages/apps/setup/CHANGELOG.md +++ b/packages/apps/setup/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/setup +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [4331adb] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/platform-objects@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/apps/setup/package.json b/packages/apps/setup/package.json index f60935ac51..eb826951b9 100644 --- a/packages/apps/setup/package.json +++ b/packages/apps/setup/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/setup", - "version": "9.9.1", + "version": "9.10.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 f5e5f62923..0b5338fe7f 100644 --- a/packages/apps/studio/CHANGELOG.md +++ b/packages/apps/studio/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/studio +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [4331adb] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/platform-objects@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/apps/studio/package.json b/packages/apps/studio/package.json index e6b3c94099..49f6edf603 100644 --- a/packages/apps/studio/package.json +++ b/packages/apps/studio/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/studio", - "version": "9.9.1", + "version": "9.10.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 6b118379ff..f3bf8706f7 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,67 @@ # @objectstack/cli +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [d9508d1] +- Updated dependencies [1d352d3] +- Updated dependencies [1f88fd9] +- Updated dependencies [94e9040] +- Updated dependencies [4331adb] +- Updated dependencies [f169558] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] +- Updated dependencies [e2b5324] +- Updated dependencies [fd07027] + - @objectstack/service-analytics@9.10.0 + - @objectstack/driver-sql@9.10.0 + - @objectstack/spec@9.10.0 + - @objectstack/formula@9.10.0 + - @objectstack/platform-objects@9.10.0 + - @objectstack/plugin-org-scoping@9.10.0 + - @objectstack/plugin-security@9.10.0 + - @objectstack/objectql@9.10.0 + - @objectstack/runtime@9.10.0 + - @objectstack/rest@9.10.0 + - @objectstack/driver-sqlite-wasm@9.10.0 + - @objectstack/service-datasource@9.10.0 + - @objectstack/account@9.10.0 + - @objectstack/setup@9.10.0 + - @objectstack/studio@9.10.0 + - @objectstack/client@9.10.0 + - @objectstack/cloud-connection@9.10.0 + - @objectstack/core@9.10.0 + - @objectstack/mcp@9.10.0 + - @objectstack/observability@9.10.0 + - @objectstack/driver-memory@9.10.0 + - @objectstack/driver-mongodb@9.10.0 + - @objectstack/plugin-approvals@9.10.0 + - @objectstack/plugin-audit@9.10.0 + - @objectstack/plugin-auth@9.10.0 + - @objectstack/plugin-email@9.10.0 + - @objectstack/plugin-hono-server@9.10.0 + - @objectstack/plugin-reports@9.10.0 + - @objectstack/plugin-sharing@9.10.0 + - @objectstack/plugin-webhooks@9.10.0 + - @objectstack/service-ai@9.10.0 + - @objectstack/service-automation@9.10.0 + - @objectstack/service-cache@9.10.0 + - @objectstack/service-job@9.10.0 + - @objectstack/service-messaging@9.10.0 + - @objectstack/service-package@9.10.0 + - @objectstack/service-queue@9.10.0 + - @objectstack/service-realtime@9.10.0 + - @objectstack/service-settings@9.10.0 + - @objectstack/service-storage@9.10.0 + - @objectstack/trigger-api@9.10.0 + - @objectstack/trigger-record-change@9.10.0 + - @objectstack/trigger-schedule@9.10.0 + - @objectstack/types@9.10.0 + - @objectstack/console@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 54834a62c7..4c258f5937 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/cli", - "version": "9.9.1", + "version": "9.10.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 4ec8d5e767..ae0b0652d8 100644 --- a/packages/client-react/CHANGELOG.md +++ b/packages/client-react/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/client-react +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/client@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/client-react/package.json b/packages/client-react/package.json index 71f618fee4..9fd5c18552 100644 --- a/packages/client-react/package.json +++ b/packages/client-react/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/client-react", - "version": "9.9.1", + "version": "9.10.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 905bfc1ca8..e56b563674 100644 --- a/packages/client/CHANGELOG.md +++ b/packages/client/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/client +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/client/package.json b/packages/client/package.json index d1062ea2bc..f56d83a118 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/client", - "version": "9.9.1", + "version": "9.10.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 4bc0d61965..20283dc1f1 100644 --- a/packages/cloud-connection/CHANGELOG.md +++ b/packages/cloud-connection/CHANGELOG.md @@ -1,5 +1,20 @@ # @objectstack/cloud-connection +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] +- Updated dependencies [e2b5324] + - @objectstack/spec@9.10.0 + - @objectstack/runtime@9.10.0 + - @objectstack/core@9.10.0 + - @objectstack/types@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/cloud-connection/package.json b/packages/cloud-connection/package.json index ed83b20226..48d6b130f6 100644 --- a/packages/cloud-connection/package.json +++ b/packages/cloud-connection/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/cloud-connection", - "version": "9.9.1", + "version": "9.10.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 416e27e14f..5e0d321164 100644 --- a/packages/connectors/connector-mcp/CHANGELOG.md +++ b/packages/connectors/connector-mcp/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/connector-mcp +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/connectors/connector-mcp/package.json b/packages/connectors/connector-mcp/package.json index 3b3575e712..6980b4a6b3 100644 --- a/packages/connectors/connector-mcp/package.json +++ b/packages/connectors/connector-mcp/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-mcp", - "version": "9.9.1", + "version": "9.10.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 d3eb25e69e..56f5b2ba34 100644 --- a/packages/connectors/connector-openapi/CHANGELOG.md +++ b/packages/connectors/connector-openapi/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/connector-openapi +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/connectors/connector-openapi/package.json b/packages/connectors/connector-openapi/package.json index 46618c10e3..839dd49656 100644 --- a/packages/connectors/connector-openapi/package.json +++ b/packages/connectors/connector-openapi/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-openapi", - "version": "9.9.1", + "version": "9.10.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 bcb4fce6e2..a44b62af2d 100644 --- a/packages/connectors/connector-rest/CHANGELOG.md +++ b/packages/connectors/connector-rest/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/connector-rest +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/connectors/connector-rest/package.json b/packages/connectors/connector-rest/package.json index 295b6fe096..b3f63412c2 100644 --- a/packages/connectors/connector-rest/package.json +++ b/packages/connectors/connector-rest/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-rest", - "version": "9.9.1", + "version": "9.10.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 c2b91978ff..bc7b1b1f36 100644 --- a/packages/connectors/connector-slack/CHANGELOG.md +++ b/packages/connectors/connector-slack/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/connector-slack +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/connectors/connector-slack/package.json b/packages/connectors/connector-slack/package.json index 3537695a2f..0ffad72493 100644 --- a/packages/connectors/connector-slack/package.json +++ b/packages/connectors/connector-slack/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-slack", - "version": "9.9.1", + "version": "9.10.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 ab6691aa72..b94551f315 100644 --- a/packages/console/CHANGELOG.md +++ b/packages/console/CHANGELOG.md @@ -1,5 +1,7 @@ # @objectstack/console +## 9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/console/package.json b/packages/console/package.json index 97f42f1bd0..28885568e8 100644 --- a/packages/console/package.json +++ b/packages/console/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/console", - "version": "9.9.1", + "version": "9.10.0", "description": "Prebuilt Console SPA pinned to this @objectstack/framework release. Source of truth: @object-ui/console (https://github.com/objectstack-ai/objectui).", "license": "Apache-2.0", "homepage": "https://github.com/objectstack-ai/framework/tree/main/packages/console", diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 2db30c1831..e13ae5ab57 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/core +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/core/package.json b/packages/core/package.json index 5fb84f1472..0173055197 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/core", - "version": "9.9.1", + "version": "9.10.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 0b06e4591b..c81c2fa675 100644 --- a/packages/create-objectstack/CHANGELOG.md +++ b/packages/create-objectstack/CHANGELOG.md @@ -1,5 +1,7 @@ # create-objectstack +## 9.10.0 + ## 9.9.1 ## 9.9.0 diff --git a/packages/create-objectstack/package.json b/packages/create-objectstack/package.json index 5841dc9bff..46a089e600 100644 --- a/packages/create-objectstack/package.json +++ b/packages/create-objectstack/package.json @@ -1,6 +1,6 @@ { "name": "create-objectstack", - "version": "9.9.1", + "version": "9.10.0", "description": "Create a new ObjectStack project — npx create-objectstack", "bin": { "create-objectstack": "./bin/create-objectstack.js" diff --git a/packages/dogfood/CHANGELOG.md b/packages/dogfood/CHANGELOG.md new file mode 100644 index 0000000000..2df6c2f360 --- /dev/null +++ b/packages/dogfood/CHANGELOG.md @@ -0,0 +1,29 @@ +# @objectstack/dogfood + +## 0.0.1 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [f169558] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] +- Updated dependencies [e2b5324] +- Updated dependencies [fd07027] + - @objectstack/service-analytics@9.10.0 + - @objectstack/spec@9.10.0 + - @objectstack/plugin-org-scoping@9.10.0 + - @objectstack/plugin-security@9.10.0 + - @objectstack/objectql@9.10.0 + - @objectstack/runtime@9.10.0 + - @objectstack/rest@9.10.0 + - @objectstack/driver-sqlite-wasm@9.10.0 + - @objectstack/example-crm@4.0.53 + - @objectstack/example-showcase@0.1.23 + - @objectstack/core@9.10.0 + - @objectstack/plugin-auth@9.10.0 + - @objectstack/plugin-hono-server@9.10.0 + - @objectstack/plugin-sharing@9.10.0 + - @objectstack/service-settings@9.10.0 diff --git a/packages/dogfood/package.json b/packages/dogfood/package.json index 91144f6480..dc6bbb403f 100644 --- a/packages/dogfood/package.json +++ b/packages/dogfood/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/dogfood", - "version": "0.0.0", + "version": "0.0.1", "private": true, "license": "Apache-2.0", "description": "Dogfood regression gate — boots real example apps in-process and exercises them through the real HTTP/service stack, catching runtime regressions that static checks (build, unit tests, spec liveness) miss.", diff --git a/packages/formula/CHANGELOG.md b/packages/formula/CHANGELOG.md index 4193803225..d509973554 100644 --- a/packages/formula/CHANGELOG.md +++ b/packages/formula/CHANGELOG.md @@ -1,5 +1,20 @@ # @objectstack/formula +## 9.10.0 + +### Minor Changes + +- 1f88fd9: Add `addDays(date, n)` and `addMonths(date, n)` to the CEL standard library — shift an arbitrary date by a (possibly negative) number of days or months. Unlike `daysFromNow`, these operate on a _given_ date (the "next service date = last service + cycle" shape). `addMonths` clamps to the target month's last day (`addMonths(date('2026-01-31'), 1)` → Feb 28, never overflowing into March). Both coerce their inputs (Date | ISO string | epoch) and type `n` as `dyn` so a record number field arriving as a `double` doesn't fault `no such overload` (#1928). + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/formula/package.json b/packages/formula/package.json index cb191b393c..5305539e5d 100644 --- a/packages/formula/package.json +++ b/packages/formula/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/formula", - "version": "9.9.1", + "version": "9.10.0", "license": "Apache-2.0", "description": "ObjectStack canonical expression engine — CEL (cel-js) + ObjectStack stdlib + dialect registry", "main": "dist/index.js", diff --git a/packages/mcp/CHANGELOG.md b/packages/mcp/CHANGELOG.md index fe7e2b7fc9..7082082723 100644 --- a/packages/mcp/CHANGELOG.md +++ b/packages/mcp/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/plugin-mcp-server +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + - @objectstack/types@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 6bc5edb8f9..5ad6a7aa66 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/mcp", - "version": "9.9.1", + "version": "9.10.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 3f47a09d63..46ea0bd3cb 100644 --- a/packages/metadata-core/CHANGELOG.md +++ b/packages/metadata-core/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/metadata-core +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/metadata-core/package.json b/packages/metadata-core/package.json index 8c11557e37..c3192a38e2 100644 --- a/packages/metadata-core/package.json +++ b/packages/metadata-core/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata-core", - "version": "9.9.1", + "version": "9.10.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 e012d52f7b..193bbae621 100644 --- a/packages/metadata-fs/CHANGELOG.md +++ b/packages/metadata-fs/CHANGELOG.md @@ -1,5 +1,11 @@ # @objectstack/metadata-fs +## 9.10.0 + +### Patch Changes + +- @objectstack/metadata-core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/metadata-fs/package.json b/packages/metadata-fs/package.json index 46f2639ba6..88d4c748f1 100644 --- a/packages/metadata-fs/package.json +++ b/packages/metadata-fs/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata-fs", - "version": "9.9.1", + "version": "9.10.0", "license": "Apache-2.0", "description": "FileSystemRepository: Node-only Repository implementation backed by JSON files and a JSONL change log (ADR-0008).", "type": "module", diff --git a/packages/metadata/CHANGELOG.md b/packages/metadata/CHANGELOG.md index 3e1dc9dedb..b3f4c47339 100644 --- a/packages/metadata/CHANGELOG.md +++ b/packages/metadata/CHANGELOG.md @@ -1,5 +1,22 @@ # @objectstack/metadata +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [4331adb] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/platform-objects@9.10.0 + - @objectstack/core@9.10.0 + - @objectstack/metadata-core@9.10.0 + - @objectstack/types@9.10.0 + - @objectstack/metadata-fs@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/metadata/package.json b/packages/metadata/package.json index 9f18010eef..a0c80189ee 100644 --- a/packages/metadata/package.json +++ b/packages/metadata/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata", - "version": "9.9.1", + "version": "9.10.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 e4f402fea3..2fbd244e12 100644 --- a/packages/objectql/CHANGELOG.md +++ b/packages/objectql/CHANGELOG.md @@ -1,5 +1,73 @@ # @objectstack/objectql +## 9.10.0 + +### Minor Changes + +- 1f88fd9: Add a transaction boundary to sandboxed hook/action bodies: `ctx.api.transaction(async () => { … })`. Every `ctx.api` read/write inside the callback runs in one driver transaction — committed when the callback returns, rolled back if it throws (or if the body leaves the transaction open at timeout). Guarded by the new `api.transaction` capability. + + - **spec**: new `api.transaction` capability token on `HookBodyCapability`. + - **objectql**: `ScopedContext` gains discrete `beginTransaction()` / `commitTransaction(handle)` / `rollbackTransaction(handle)` primitives. The handle is threaded **explicitly** through a child context (`resolveTx` honors it ahead of the ambient `txStore`), because the sandbox drives the body across many host event-loop turns where AsyncLocalStorage context does not survive. Degrades to non-transactional execution when the driver has no transaction support. + - **runtime**: the QuickJS runner wires `ctx.api.transaction` over three deferred-promise host leaves (begin/commit/rollback), routes in-transaction ops through the tx-scoped context, and rolls back a transaction the body left open before disposing the VM. + +- e2b5324: feat(ownership): auto-provision a canonical `owner_id` and hand seeded records to the first admin + + Ownership is now correct-by-default instead of opt-in — closing the gap where + seeded demo data ended up owned by nobody a human can log in as (so "My" views, + owner reports and owner notifications were empty out of the box) and where + author-written objects silently shipped with no working ownership at all. + + - **`applySystemFields` (objectql)** now auto-injects a canonical, reassignable + `owner_id` lookup (→ `sys_user`) on user-authored business objects, alongside + the existing tenant/audit fields. Unlike the audit `*_by` lookups it is NOT + readonly — ownership transfers. Withheld for `managedBy` / `sys_*` tables and + for objects that opt out via `ownership: 'org' | 'none'` (Dataverse-style). The + safe default direction: forgetting the opt-out leaves a harmless spare column, + whereas the old opt-IN model let authors ship objects with broken ownership. + Once present, the existing machinery engages automatically (insert auto-stamp, + owner-scoped RLS, owner-keyed views/reports). + + - **`claimSeedOwnership` (plugin-security)**, invoked from `bootstrapPlatformAdmin` + right after the first human is promoted to platform admin, transfers ownership + of seeded rows (`owner_id` NULL or `usr_system`) to that admin. The ownership + twin of org-scoping's `claimOrphanOrgRows`. Idempotent; skips `managedBy` / + `sys_*`. Authors write plain seed records (no `owner_id`) and the platform — + not the author — performs the handoff, so there is nothing to remember or + mistype. + + - **`usr_system` is never minted (runtime + objectql).** The seed loader binds + `os.user` to a NULL identity, so `cel`os.user.id``resolves to NULL at seed +time (the owning admin does not exist yet) and the row seeds NULL-owned — then +the handoff above fills it. The runtime's`ensureSeedIdentity`(the only code +that inserted a`usr_system`row) is removed.`SystemUserId.SYSTEM`survives +only as a reserved id so legacy DBs' exclusion guards / ownership handoff still +recognize a pre-existing row.`os.org`is unaffected (derived from`organizationId`). + + Also hardens `bootstrapPlatformAdmin` against a latent dts typecheck error + (defensive read of the untyped `description` on seed permission sets). + +### Patch Changes + +- fd07027: fix(analytics): make organization timezone actually drive date-dimension bucketing (ADR-0053 Phase 2, #1982) + + Date-bucketed analytics silently ignored the reference timezone end-to-end. Three independent seams were broken: + + - **service-analytics** — `NativeSQLStrategy` (priority 10) won every cube/dataset query on a SQL driver, but it groups by the raw column (no `date_trunc`) and ignores `timezone`, so a date dimension never bucketed (one row per raw timestamp) and a non-UTC zone was dropped. It now declines queries that carry a `timeDimensions[].granularity`, handing them to `ObjectQLStrategy` → `engine.aggregate` (native bucketing when UTC-safe, uniform in-memory bucketing when non-UTC). + - **objectql** — the in-memory `count` aggregation treated the `*` count-all sentinel (the Cube `count` measure / a fieldless dataset `count`, both compiled to `sql: '*'`) as a column name, counting non-null of a non-existent property → `0` for every bucket. The driver's `COUNT(*)` masked it; the in-memory path (non-UTC date buckets, `driver-rest`/`driver-memory`) returned zeros. `*` is now counted as all rows. + - **rest** — `resolveExecCtx` never resolved the localization timezone/locale, so `/analytics/dataset/query` always ran with `timezone: 'UTC'`. It now resolves them through the `settings` service (honouring the 4-tier cascade incl. the `OS_LOCALIZATION_TIMEZONE` env override), mirroring the dispatcher path. + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [1f88fd9] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/formula@9.10.0 + - @objectstack/core@9.10.0 + - @objectstack/metadata-core@9.10.0 + - @objectstack/types@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/objectql/package.json b/packages/objectql/package.json index ea450f49bc..6d0ad5c477 100644 --- a/packages/objectql/package.json +++ b/packages/objectql/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/objectql", - "version": "9.9.1", + "version": "9.10.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 de113d895c..4d9f302b4f 100644 --- a/packages/observability/CHANGELOG.md +++ b/packages/observability/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/observability +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/observability/package.json b/packages/observability/package.json index d2f022f845..5382503535 100644 --- a/packages/observability/package.json +++ b/packages/observability/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/observability", - "version": "9.9.1", + "version": "9.10.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 08979f4c98..d85fbcd93e 100644 --- a/packages/platform-objects/CHANGELOG.md +++ b/packages/platform-objects/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/platform-objects +## 9.10.0 + +### Patch Changes + +- 4331adb: fix(i18n): add view form `end_user_controls` translations for en, es-ES, ja-JP and zh-CN metadata-forms bundles. +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/metadata-core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/platform-objects/package.json b/packages/platform-objects/package.json index 205311dc2d..da0040edb5 100644 --- a/packages/platform-objects/package.json +++ b/packages/platform-objects/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/platform-objects", - "version": "9.9.1", + "version": "9.10.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 61df30659d..a77e18ddfb 100644 --- a/packages/plugins/driver-memory/CHANGELOG.md +++ b/packages/plugins/driver-memory/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/driver-memory +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/plugins/driver-memory/package.json b/packages/plugins/driver-memory/package.json index ab9e82fc98..caeaa14abb 100644 --- a/packages/plugins/driver-memory/package.json +++ b/packages/plugins/driver-memory/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-memory", - "version": "9.9.1", + "version": "9.10.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 d6af1348cb..0e7c784f25 100644 --- a/packages/plugins/driver-mongodb/CHANGELOG.md +++ b/packages/plugins/driver-mongodb/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/driver-mongodb +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/plugins/driver-mongodb/package.json b/packages/plugins/driver-mongodb/package.json index ccc6d2495f..184ed98df3 100644 --- a/packages/plugins/driver-mongodb/package.json +++ b/packages/plugins/driver-mongodb/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-mongodb", - "version": "9.9.1", + "version": "9.10.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 d9b006f216..0499780245 100644 --- a/packages/plugins/driver-sql/CHANGELOG.md +++ b/packages/plugins/driver-sql/CHANGELOG.md @@ -1,5 +1,37 @@ # @objectstack/driver-sql +## 9.10.0 + +### Patch Changes + +- db02bd5: Fix dashboard time-series charts / "last N months" KPIs that filter or group by a `Field.datetime` column silently returning "No rows". + + The analytics `NativeSQLStrategy` compiles dashboard relative-date tokens (`{12_months_ago}`, `{today}`, …) to ISO date strings and binds them directly into raw SQL, bypassing the driver's own filter coercion. Under better-sqlite3 a `Field.datetime` column is stored as an INTEGER epoch (ms), so `assessed_at >= '2025-06-18'` became a TEXT-vs-INTEGER affinity compare that is always false — an empty result even though the rows exist. `Field.date` columns store ISO TEXT and were unaffected. + + The strategy now coerces a temporal comparand to the column's on-disk storage form via a new optional `StrategyContext.coerceTemporalFilterValue` hook, wired to the driver's public `SqlDriver.temporalFilterValue` (the single source of truth for the storage convention). Coercion is dialect-correct: SQLite `Field.datetime` → epoch ms; `Field.date` text and native-timestamp dialects (Postgres/MySQL) are left unchanged, so Postgres is never handed an epoch integer. Applied to `gte`/`lte`/`gt`/`lt`/`equals`, `in`/`notIn`, and the `dateRange`/timeDimension `BETWEEN` path. + +- d9508d1: fix(driver-sql): make numeric-scalar type fidelity self-heal on legacy SQLite columns + + The #2025 fix mapped `rating`/`slider`/`progress` to numeric columns, but SQLite never alters a column's type in place and the schema reconciler only adds missing columns — so a column created before that fix keeps its TEXT affinity and would still read back `'4'` instead of `4` forever. + + A read-side numeric coercion (the new `numericFields` registry, single-sourced from `NUMERIC_SCALAR_TYPES`) now coerces numeric-looking stored strings back to numbers on read, mirroring how `dateFields` already repairs legacy timestamp-typed `Field.date` rows. The fidelity no longer depends on column affinity alone; `null` and genuinely non-numeric legacy values are left intact rather than turned into `0`/`NaN`. + +- 1d352d3: fix(driver-sql): round-trip rating/slider/toggle/progress with type fidelity + + `rating`/`slider`/`toggle`/`progress` had no case in the DDL column-type switch, so they fell to `default → table.string` (TEXT affinity). SQLite then coerced the written value to a string — `rating: 4` read back `'4'`, `toggle: true` read back `'1'` — so the value persisted but the JS type leaked on read. On a low-code platform where field types are author-driven, a field that silently returns the wrong type is a runtime-fidelity trap the static gates and value-loss tests don't catch. + + - `rating`/`slider`/`progress` now map to a REAL (numeric) column. + - `toggle` maps to a boolean column and is registered in the boolean read-coercion path, so stored `1`/`0` come back as real JS booleans. + - The object-valued `record`/`video`/`audio` types are folded into the shared `JSON_COLUMN_TYPES` source, and the DDL `default` case now derives JSON-vs-string from that set, so the column-type switch and `isJsonField` (the read-side deserializer) can no longer drift. + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/plugins/driver-sql/package.json b/packages/plugins/driver-sql/package.json index 5c22ff58a3..bb0387f938 100644 --- a/packages/plugins/driver-sql/package.json +++ b/packages/plugins/driver-sql/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-sql", - "version": "9.9.1", + "version": "9.10.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 05bfec5403..1f0b041255 100644 --- a/packages/plugins/driver-sqlite-wasm/CHANGELOG.md +++ b/packages/plugins/driver-sqlite-wasm/CHANGELOG.md @@ -1,5 +1,20 @@ # @objectstack/driver-sqlite-wasm +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [d9508d1] +- Updated dependencies [1d352d3] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/driver-sql@9.10.0 + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/plugins/driver-sqlite-wasm/package.json b/packages/plugins/driver-sqlite-wasm/package.json index aefcc0898c..373b17bf7d 100644 --- a/packages/plugins/driver-sqlite-wasm/package.json +++ b/packages/plugins/driver-sqlite-wasm/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-sqlite-wasm", - "version": "9.9.1", + "version": "9.10.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 15c86f2817..339d2d8c41 100644 --- a/packages/plugins/embedder-openai/CHANGELOG.md +++ b/packages/plugins/embedder-openai/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/embedder-openai +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/plugins/embedder-openai/package.json b/packages/plugins/embedder-openai/package.json index aa2a1af2e3..c8961cb020 100644 --- a/packages/plugins/embedder-openai/package.json +++ b/packages/plugins/embedder-openai/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/embedder-openai", - "version": "9.9.1", + "version": "9.10.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 c7896367ab..0778281d3d 100644 --- a/packages/plugins/knowledge-memory/CHANGELOG.md +++ b/packages/plugins/knowledge-memory/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/knowledge-memory +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + - @objectstack/service-knowledge@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/plugins/knowledge-memory/package.json b/packages/plugins/knowledge-memory/package.json index b3fd80487c..176be01df8 100644 --- a/packages/plugins/knowledge-memory/package.json +++ b/packages/plugins/knowledge-memory/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/knowledge-memory", - "version": "9.9.1", + "version": "9.10.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 8aa830f73d..1503cd7407 100644 --- a/packages/plugins/knowledge-ragflow/CHANGELOG.md +++ b/packages/plugins/knowledge-ragflow/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/knowledge-ragflow +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + - @objectstack/service-knowledge@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/plugins/knowledge-ragflow/package.json b/packages/plugins/knowledge-ragflow/package.json index ac6eecf516..1653116fb8 100644 --- a/packages/plugins/knowledge-ragflow/package.json +++ b/packages/plugins/knowledge-ragflow/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/knowledge-ragflow", - "version": "9.9.1", + "version": "9.10.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 ad3350c8c5..275b164f3c 100644 --- a/packages/plugins/plugin-approvals/CHANGELOG.md +++ b/packages/plugins/plugin-approvals/CHANGELOG.md @@ -1,5 +1,22 @@ # @objectstack/plugin-approvals +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [1f88fd9] +- Updated dependencies [94e9040] +- Updated dependencies [4331adb] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/formula@9.10.0 + - @objectstack/platform-objects@9.10.0 + - @objectstack/core@9.10.0 + - @objectstack/metadata-core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/plugins/plugin-approvals/package.json b/packages/plugins/plugin-approvals/package.json index fcbed85256..e09022dda6 100644 --- a/packages/plugins/plugin-approvals/package.json +++ b/packages/plugins/plugin-approvals/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-approvals", - "version": "9.9.1", + "version": "9.10.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 af6e5a99fa..830b1644ac 100644 --- a/packages/plugins/plugin-audit/CHANGELOG.md +++ b/packages/plugins/plugin-audit/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/plugin-audit +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [4331adb] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/platform-objects@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/plugins/plugin-audit/package.json b/packages/plugins/plugin-audit/package.json index 22281e0a2a..8e9a71ff29 100644 --- a/packages/plugins/plugin-audit/package.json +++ b/packages/plugins/plugin-audit/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-audit", - "version": "9.9.1", + "version": "9.10.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 85d67e3347..4f94073cd3 100644 --- a/packages/plugins/plugin-auth/CHANGELOG.md +++ b/packages/plugins/plugin-auth/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [4331adb] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/platform-objects@9.10.0 + - @objectstack/core@9.10.0 + - @objectstack/types@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/plugins/plugin-auth/package.json b/packages/plugins/plugin-auth/package.json index 522b5cd4c3..de7a756e55 100644 --- a/packages/plugins/plugin-auth/package.json +++ b/packages/plugins/plugin-auth/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-auth", - "version": "9.9.1", + "version": "9.10.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 39fa517353..d35067bb22 100644 --- a/packages/plugins/plugin-dev/CHANGELOG.md +++ b/packages/plugins/plugin-dev/CHANGELOG.md @@ -1,5 +1,33 @@ # @objectstack/plugin-dev +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [f169558] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] +- Updated dependencies [e2b5324] +- Updated dependencies [fd07027] + - @objectstack/spec@9.10.0 + - @objectstack/plugin-org-scoping@9.10.0 + - @objectstack/plugin-security@9.10.0 + - @objectstack/objectql@9.10.0 + - @objectstack/runtime@9.10.0 + - @objectstack/rest@9.10.0 + - @objectstack/account@9.10.0 + - @objectstack/setup@9.10.0 + - @objectstack/studio@9.10.0 + - @objectstack/core@9.10.0 + - @objectstack/driver-memory@9.10.0 + - @objectstack/plugin-auth@9.10.0 + - @objectstack/plugin-hono-server@9.10.0 + - @objectstack/service-i18n@9.10.0 + - @objectstack/types@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/plugins/plugin-dev/package.json b/packages/plugins/plugin-dev/package.json index 901c68888e..514209785f 100644 --- a/packages/plugins/plugin-dev/package.json +++ b/packages/plugins/plugin-dev/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-dev", - "version": "9.9.1", + "version": "9.10.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 951423def3..7a5c951d62 100644 --- a/packages/plugins/plugin-email/CHANGELOG.md +++ b/packages/plugins/plugin-email/CHANGELOG.md @@ -1,5 +1,21 @@ # @objectstack/plugin-email +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [1f88fd9] +- Updated dependencies [94e9040] +- Updated dependencies [4331adb] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/formula@9.10.0 + - @objectstack/platform-objects@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/plugins/plugin-email/package.json b/packages/plugins/plugin-email/package.json index af6a13ae4b..58a8efc0c7 100644 --- a/packages/plugins/plugin-email/package.json +++ b/packages/plugins/plugin-email/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-email", - "version": "9.9.1", + "version": "9.10.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 6d884864e4..6a3f7f2ddc 100644 --- a/packages/plugins/plugin-hono-server/CHANGELOG.md +++ b/packages/plugins/plugin-hono-server/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/plugin-hono-server +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + - @objectstack/types@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/plugins/plugin-hono-server/package.json b/packages/plugins/plugin-hono-server/package.json index 1cc19c5b67..7b18ac8b36 100644 --- a/packages/plugins/plugin-hono-server/package.json +++ b/packages/plugins/plugin-hono-server/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-hono-server", - "version": "9.9.1", + "version": "9.10.0", "license": "Apache-2.0", "description": "Standard Hono Server Adapter for ObjectStack Runtime", "main": "dist/index.js", diff --git a/packages/plugins/plugin-msw/CHANGELOG.md b/packages/plugins/plugin-msw/CHANGELOG.md index bc3cefb1cc..667ee7459b 100644 --- a/packages/plugins/plugin-msw/CHANGELOG.md +++ b/packages/plugins/plugin-msw/CHANGELOG.md @@ -1,5 +1,22 @@ # @objectstack/plugin-msw +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] +- Updated dependencies [e2b5324] +- Updated dependencies [fd07027] + - @objectstack/spec@9.10.0 + - @objectstack/objectql@9.10.0 + - @objectstack/runtime@9.10.0 + - @objectstack/core@9.10.0 + - @objectstack/types@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/plugins/plugin-msw/package.json b/packages/plugins/plugin-msw/package.json index b87f21b366..71d6964170 100644 --- a/packages/plugins/plugin-msw/package.json +++ b/packages/plugins/plugin-msw/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-msw", - "version": "9.9.1", + "version": "9.10.0", "description": "MSW (Mock Service Worker) Plugin for ObjectStack Runtime", "license": "Apache-2.0", "main": "dist/index.js", diff --git a/packages/plugins/plugin-org-scoping/CHANGELOG.md b/packages/plugins/plugin-org-scoping/CHANGELOG.md index ce0dc6e794..1918a89943 100644 --- a/packages/plugins/plugin-org-scoping/CHANGELOG.md +++ b/packages/plugins/plugin-org-scoping/CHANGELOG.md @@ -1,5 +1,35 @@ # @objectstack/plugin-org-scoping +## 9.10.0 + +### Minor Changes + +- f169558: feat(org-scoping): hand a default org's seeded records to its admin (multi-tenant ownership handoff) + + The multi-tenant companion to plugin-security's single-tenant `claimSeedOwnership`. + Seeded rows land `owner_id` NULL (the author leaves it unset; `cel`os.user.id``resolves to NULL at seed time). In multi-tenant mode`claimOrphanOrgRows`back-fills their`organization_id`, but `owner_id` stayed NULL — so "My" views, + owner reports and owner notifications were empty for the org's members. + + - New `claimOrgSeedOwnership(ql, organizationId, ownerUserId)` — assigns + `owner_id = ownerUserId` to an org's NULL-owned seed rows. Scoped to a single + org (never touches another tenant), idempotent, skips `managedBy` / `sys_*`, + and requires both `owner_id` and `organization_id` columns. + - `ensureDefaultOrganization` now calls it after binding the platform admin as + the default org's owner, so the default org's demo data is owned by the admin + out of the box — symmetric with the single-tenant first-admin handoff. + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [4331adb] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/platform-objects@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/plugins/plugin-org-scoping/package.json b/packages/plugins/plugin-org-scoping/package.json index 5e7b40beb5..e22df14ae2 100644 --- a/packages/plugins/plugin-org-scoping/package.json +++ b/packages/plugins/plugin-org-scoping/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-org-scoping", - "version": "9.9.1", + "version": "9.10.0", "license": "Apache-2.0", "description": "Organization-Scoping Plugin for ObjectStack — row-level Organization isolation, per-org seed replay, default-org bootstrap", "main": "dist/index.js", diff --git a/packages/plugins/plugin-reports/CHANGELOG.md b/packages/plugins/plugin-reports/CHANGELOG.md index 3791790db4..e7ace0ef93 100644 --- a/packages/plugins/plugin-reports/CHANGELOG.md +++ b/packages/plugins/plugin-reports/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/plugin-reports +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [4331adb] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/platform-objects@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/plugins/plugin-reports/package.json b/packages/plugins/plugin-reports/package.json index db3c7fd817..6667b3d45b 100644 --- a/packages/plugins/plugin-reports/package.json +++ b/packages/plugins/plugin-reports/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-reports", - "version": "9.9.1", + "version": "9.10.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 0201ae5099..190968561f 100644 --- a/packages/plugins/plugin-security/CHANGELOG.md +++ b/packages/plugins/plugin-security/CHANGELOG.md @@ -1,5 +1,63 @@ # @objectstack/plugin-security +## 9.10.0 + +### Minor Changes + +- 1f88fd9: Converge the RLS contract with the reference compiler, and wire §7.3.1 dynamic membership. + + - **spec (docs)**: narrow `rls.zod.ts` to the four expression forms the compiler actually implements — `field = current_user.`, `field = 'literal'`, `field IN (current_user.)`, and `1 = 1`. Removed the over-promised surface (subqueries, `AND`/`OR`/`NOT`, `LIKE`/`ILIKE`, regex, `ANY`/`ALL`, `NOT IN`, `IS NULL`, `NOW()`/`CURRENT_DATE`) from the operator list, context-variable list, and `@example` policies, and documented the fail-closed behaviour explicitly. + - **spec (schema)**: `ExecutionContext` gains `rlsMembership?: Record` — a bag of pre-resolved dynamic-membership id arrays (team members, territory accounts, shared records) that the runtime stages so RLS can scope via `field IN (current_user.)` without subquery support. Generalizes the previously hard-coded `org_user_ids`. + - **plugin-security**: `RLSCompiler.compileFilter` merges `rlsMembership` keys into the user context (arrays only, never clobbering the named `id`/`organization_id`/`roles`/`org_user_ids` fields), so §7.3.1 hierarchy- and sharing-based policies compile. `compileExpression` now recognizes `1 = 1` as always-true (empty filter), making `RLS.allowAllPolicy` grant access instead of silently failing closed. Missing/empty membership sets still fail closed. + +- e2b5324: feat(ownership): auto-provision a canonical `owner_id` and hand seeded records to the first admin + + Ownership is now correct-by-default instead of opt-in — closing the gap where + seeded demo data ended up owned by nobody a human can log in as (so "My" views, + owner reports and owner notifications were empty out of the box) and where + author-written objects silently shipped with no working ownership at all. + + - **`applySystemFields` (objectql)** now auto-injects a canonical, reassignable + `owner_id` lookup (→ `sys_user`) on user-authored business objects, alongside + the existing tenant/audit fields. Unlike the audit `*_by` lookups it is NOT + readonly — ownership transfers. Withheld for `managedBy` / `sys_*` tables and + for objects that opt out via `ownership: 'org' | 'none'` (Dataverse-style). The + safe default direction: forgetting the opt-out leaves a harmless spare column, + whereas the old opt-IN model let authors ship objects with broken ownership. + Once present, the existing machinery engages automatically (insert auto-stamp, + owner-scoped RLS, owner-keyed views/reports). + + - **`claimSeedOwnership` (plugin-security)**, invoked from `bootstrapPlatformAdmin` + right after the first human is promoted to platform admin, transfers ownership + of seeded rows (`owner_id` NULL or `usr_system`) to that admin. The ownership + twin of org-scoping's `claimOrphanOrgRows`. Idempotent; skips `managedBy` / + `sys_*`. Authors write plain seed records (no `owner_id`) and the platform — + not the author — performs the handoff, so there is nothing to remember or + mistype. + + - **`usr_system` is never minted (runtime + objectql).** The seed loader binds + `os.user` to a NULL identity, so `cel`os.user.id``resolves to NULL at seed +time (the owning admin does not exist yet) and the row seeds NULL-owned — then +the handoff above fills it. The runtime's`ensureSeedIdentity`(the only code +that inserted a`usr_system`row) is removed.`SystemUserId.SYSTEM`survives +only as a reserved id so legacy DBs' exclusion guards / ownership handoff still +recognize a pre-existing row.`os.org`is unaffected (derived from`organizationId`). + + Also hardens `bootstrapPlatformAdmin` against a latent dts typecheck error + (defensive read of the untyped `description` on seed permission sets). + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [4331adb] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/platform-objects@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/plugins/plugin-security/package.json b/packages/plugins/plugin-security/package.json index 2f037d008b..f931f71802 100644 --- a/packages/plugins/plugin-security/package.json +++ b/packages/plugins/plugin-security/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-security", - "version": "9.9.1", + "version": "9.10.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 1a39471784..0f778f69cc 100644 --- a/packages/plugins/plugin-sharing/CHANGELOG.md +++ b/packages/plugins/plugin-sharing/CHANGELOG.md @@ -1,5 +1,22 @@ # @objectstack/plugin-sharing +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [4331adb] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] +- Updated dependencies [e2b5324] +- Updated dependencies [fd07027] + - @objectstack/spec@9.10.0 + - @objectstack/platform-objects@9.10.0 + - @objectstack/objectql@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/plugins/plugin-sharing/package.json b/packages/plugins/plugin-sharing/package.json index 529405d55f..9095655b3d 100644 --- a/packages/plugins/plugin-sharing/package.json +++ b/packages/plugins/plugin-sharing/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-sharing", - "version": "9.9.1", + "version": "9.10.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 afff307dcb..695751bfe8 100644 --- a/packages/plugins/plugin-webhooks/CHANGELOG.md +++ b/packages/plugins/plugin-webhooks/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/plugin-webhooks +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + - @objectstack/service-messaging@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/plugins/plugin-webhooks/package.json b/packages/plugins/plugin-webhooks/package.json index 8272d59304..12ce10827f 100644 --- a/packages/plugins/plugin-webhooks/package.json +++ b/packages/plugins/plugin-webhooks/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-webhooks", - "version": "9.9.1", + "version": "9.10.0", "license": "Apache-2.0", "description": "Persistent, cluster-aware webhook dispatcher. Durable outbox + per-partition cluster.lock for exactly-once-ish delivery across nodes. See content/docs/concepts/webhook-delivery.mdx.", "type": "module", diff --git a/packages/rest/CHANGELOG.md b/packages/rest/CHANGELOG.md index 3c7000a3af..ae00e2ccef 100644 --- a/packages/rest/CHANGELOG.md +++ b/packages/rest/CHANGELOG.md @@ -1,5 +1,26 @@ # @objectstack/rest +## 9.10.0 + +### Patch Changes + +- fd07027: fix(analytics): make organization timezone actually drive date-dimension bucketing (ADR-0053 Phase 2, #1982) + + Date-bucketed analytics silently ignored the reference timezone end-to-end. Three independent seams were broken: + + - **service-analytics** — `NativeSQLStrategy` (priority 10) won every cube/dataset query on a SQL driver, but it groups by the raw column (no `date_trunc`) and ignores `timezone`, so a date dimension never bucketed (one row per raw timestamp) and a non-UTC zone was dropped. It now declines queries that carry a `timeDimensions[].granularity`, handing them to `ObjectQLStrategy` → `engine.aggregate` (native bucketing when UTC-safe, uniform in-memory bucketing when non-UTC). + - **objectql** — the in-memory `count` aggregation treated the `*` count-all sentinel (the Cube `count` measure / a fieldless dataset `count`, both compiled to `sql: '*'`) as a column name, counting non-null of a non-existent property → `0` for every bucket. The driver's `COUNT(*)` masked it; the in-memory path (non-UTC date buckets, `driver-rest`/`driver-memory`) returned zeros. `*` is now counted as all rows. + - **rest** — `resolveExecCtx` never resolved the localization timezone/locale, so `/analytics/dataset/query` always ran with `timezone: 'UTC'`. It now resolves them through the `settings` service (honouring the 4-tier cascade incl. the `OS_LOCALIZATION_TIMEZONE` env override), mirroring the dispatcher path. + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + - @objectstack/service-package@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/rest/package.json b/packages/rest/package.json index 2ac4c68e36..4548286d51 100644 --- a/packages/rest/package.json +++ b/packages/rest/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/rest", - "version": "9.9.1", + "version": "9.10.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 db714583e6..8987ede436 100644 --- a/packages/runtime/CHANGELOG.md +++ b/packages/runtime/CHANGELOG.md @@ -1,5 +1,81 @@ # @objectstack/runtime +## 9.10.0 + +### Minor Changes + +- 1f88fd9: Add a transaction boundary to sandboxed hook/action bodies: `ctx.api.transaction(async () => { … })`. Every `ctx.api` read/write inside the callback runs in one driver transaction — committed when the callback returns, rolled back if it throws (or if the body leaves the transaction open at timeout). Guarded by the new `api.transaction` capability. + + - **spec**: new `api.transaction` capability token on `HookBodyCapability`. + - **objectql**: `ScopedContext` gains discrete `beginTransaction()` / `commitTransaction(handle)` / `rollbackTransaction(handle)` primitives. The handle is threaded **explicitly** through a child context (`resolveTx` honors it ahead of the ambient `txStore`), because the sandbox drives the body across many host event-loop turns where AsyncLocalStorage context does not survive. Degrades to non-transactional execution when the driver has no transaction support. + - **runtime**: the QuickJS runner wires `ctx.api.transaction` over three deferred-promise host leaves (begin/commit/rollback), routes in-transaction ops through the tx-scoped context, and rolls back a transaction the body left open before disposing the VM. + +- e2b5324: feat(ownership): auto-provision a canonical `owner_id` and hand seeded records to the first admin + + Ownership is now correct-by-default instead of opt-in — closing the gap where + seeded demo data ended up owned by nobody a human can log in as (so "My" views, + owner reports and owner notifications were empty out of the box) and where + author-written objects silently shipped with no working ownership at all. + + - **`applySystemFields` (objectql)** now auto-injects a canonical, reassignable + `owner_id` lookup (→ `sys_user`) on user-authored business objects, alongside + the existing tenant/audit fields. Unlike the audit `*_by` lookups it is NOT + readonly — ownership transfers. Withheld for `managedBy` / `sys_*` tables and + for objects that opt out via `ownership: 'org' | 'none'` (Dataverse-style). The + safe default direction: forgetting the opt-out leaves a harmless spare column, + whereas the old opt-IN model let authors ship objects with broken ownership. + Once present, the existing machinery engages automatically (insert auto-stamp, + owner-scoped RLS, owner-keyed views/reports). + + - **`claimSeedOwnership` (plugin-security)**, invoked from `bootstrapPlatformAdmin` + right after the first human is promoted to platform admin, transfers ownership + of seeded rows (`owner_id` NULL or `usr_system`) to that admin. The ownership + twin of org-scoping's `claimOrphanOrgRows`. Idempotent; skips `managedBy` / + `sys_*`. Authors write plain seed records (no `owner_id`) and the platform — + not the author — performs the handoff, so there is nothing to remember or + mistype. + + - **`usr_system` is never minted (runtime + objectql).** The seed loader binds + `os.user` to a NULL identity, so `cel`os.user.id``resolves to NULL at seed +time (the owning admin does not exist yet) and the row seeds NULL-owned — then +the handoff above fills it. The runtime's`ensureSeedIdentity`(the only code +that inserted a`usr_system`row) is removed.`SystemUserId.SYSTEM`survives +only as a reserved id so legacy DBs' exclusion guards / ownership handoff still +recognize a pre-existing row.`os.org`is unaffected (derived from`organizationId`). + + Also hardens `bootstrapPlatformAdmin` against a latent dts typecheck error + (defensive read of the untyped `description` on seed permission sets). + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [d9508d1] +- Updated dependencies [1d352d3] +- Updated dependencies [1f88fd9] +- Updated dependencies [94e9040] +- Updated dependencies [f169558] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] +- Updated dependencies [e2b5324] +- Updated dependencies [fd07027] + - @objectstack/driver-sql@9.10.0 + - @objectstack/spec@9.10.0 + - @objectstack/formula@9.10.0 + - @objectstack/plugin-org-scoping@9.10.0 + - @objectstack/plugin-security@9.10.0 + - @objectstack/objectql@9.10.0 + - @objectstack/rest@9.10.0 + - @objectstack/driver-sqlite-wasm@9.10.0 + - @objectstack/core@9.10.0 + - @objectstack/metadata@9.10.0 + - @objectstack/observability@9.10.0 + - @objectstack/driver-memory@9.10.0 + - @objectstack/plugin-auth@9.10.0 + - @objectstack/service-cluster@9.10.0 + - @objectstack/service-i18n@9.10.0 + - @objectstack/types@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/runtime/package.json b/packages/runtime/package.json index 671b89a5fc..db03305317 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/runtime", - "version": "9.9.1", + "version": "9.10.0", "license": "Apache-2.0", "description": "ObjectStack Core Runtime & Query Engine", "type": "module", diff --git a/packages/services/service-ai/CHANGELOG.md b/packages/services/service-ai/CHANGELOG.md index a6c028ad04..b6d0ff29fb 100644 --- a/packages/services/service-ai/CHANGELOG.md +++ b/packages/services/service-ai/CHANGELOG.md @@ -1,5 +1,20 @@ # @objectstack/service-ai +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [1f88fd9] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/formula@9.10.0 + - @objectstack/core@9.10.0 + - @objectstack/types@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/services/service-ai/package.json b/packages/services/service-ai/package.json index 2ac260e641..12fe46540e 100644 --- a/packages/services/service-ai/package.json +++ b/packages/services/service-ai/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-ai", - "version": "9.9.1", + "version": "9.10.0", "license": "Apache-2.0", "description": "AI Service for ObjectStack — implements IAIService with LLM adapter layer, conversation management, tool registry, and REST/SSE routes", "type": "module", diff --git a/packages/services/service-analytics/CHANGELOG.md b/packages/services/service-analytics/CHANGELOG.md index 90e43af266..7322b7366b 100644 --- a/packages/services/service-analytics/CHANGELOG.md +++ b/packages/services/service-analytics/CHANGELOG.md @@ -1,5 +1,31 @@ # Changelog — @objectstack/service-analytics +## 9.10.0 + +### Patch Changes + +- db02bd5: Fix dashboard time-series charts / "last N months" KPIs that filter or group by a `Field.datetime` column silently returning "No rows". + + The analytics `NativeSQLStrategy` compiles dashboard relative-date tokens (`{12_months_ago}`, `{today}`, …) to ISO date strings and binds them directly into raw SQL, bypassing the driver's own filter coercion. Under better-sqlite3 a `Field.datetime` column is stored as an INTEGER epoch (ms), so `assessed_at >= '2025-06-18'` became a TEXT-vs-INTEGER affinity compare that is always false — an empty result even though the rows exist. `Field.date` columns store ISO TEXT and were unaffected. + + The strategy now coerces a temporal comparand to the column's on-disk storage form via a new optional `StrategyContext.coerceTemporalFilterValue` hook, wired to the driver's public `SqlDriver.temporalFilterValue` (the single source of truth for the storage convention). Coercion is dialect-correct: SQLite `Field.datetime` → epoch ms; `Field.date` text and native-timestamp dialects (Postgres/MySQL) are left unchanged, so Postgres is never handed an epoch integer. Applied to `gte`/`lte`/`gt`/`lt`/`equals`, `in`/`notIn`, and the `dateRange`/timeDimension `BETWEEN` path. + +- fd07027: fix(analytics): make organization timezone actually drive date-dimension bucketing (ADR-0053 Phase 2, #1982) + + Date-bucketed analytics silently ignored the reference timezone end-to-end. Three independent seams were broken: + + - **service-analytics** — `NativeSQLStrategy` (priority 10) won every cube/dataset query on a SQL driver, but it groups by the raw column (no `date_trunc`) and ignores `timezone`, so a date dimension never bucketed (one row per raw timestamp) and a non-UTC zone was dropped. It now declines queries that carry a `timeDimensions[].granularity`, handing them to `ObjectQLStrategy` → `engine.aggregate` (native bucketing when UTC-safe, uniform in-memory bucketing when non-UTC). + - **objectql** — the in-memory `count` aggregation treated the `*` count-all sentinel (the Cube `count` measure / a fieldless dataset `count`, both compiled to `sql: '*'`) as a column name, counting non-null of a non-existent property → `0` for every bucket. The driver's `COUNT(*)` masked it; the in-memory path (non-UTC date buckets, `driver-rest`/`driver-memory`) returned zeros. `*` is now counted as all rows. + - **rest** — `resolveExecCtx` never resolved the localization timezone/locale, so `/analytics/dataset/query` always ran with `timezone: 'UTC'`. It now resolves them through the `settings` service (honouring the 4-tier cascade incl. the `OS_LOCALIZATION_TIMEZONE` env override), mirroring the dispatcher path. + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/services/service-analytics/package.json b/packages/services/service-analytics/package.json index 0359363cdf..9af4742929 100644 --- a/packages/services/service-analytics/package.json +++ b/packages/services/service-analytics/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-analytics", - "version": "9.9.1", + "version": "9.10.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 1f87756113..491ad3e806 100644 --- a/packages/services/service-automation/CHANGELOG.md +++ b/packages/services/service-automation/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/service-automation +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [1f88fd9] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/formula@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/services/service-automation/package.json b/packages/services/service-automation/package.json index 4c8b7455b8..b87e32bf4d 100644 --- a/packages/services/service-automation/package.json +++ b/packages/services/service-automation/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-automation", - "version": "9.9.1", + "version": "9.10.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 203ed1851c..b6c9faced6 100644 --- a/packages/services/service-cache/CHANGELOG.md +++ b/packages/services/service-cache/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/service-cache +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + - @objectstack/observability@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/services/service-cache/package.json b/packages/services/service-cache/package.json index d0aa501cbf..d6eb9d4db6 100644 --- a/packages/services/service-cache/package.json +++ b/packages/services/service-cache/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-cache", - "version": "9.9.1", + "version": "9.10.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 0574654207..31e48eab79 100644 --- a/packages/services/service-cluster-redis/CHANGELOG.md +++ b/packages/services/service-cluster-redis/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/service-cluster-redis +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/service-cluster@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/services/service-cluster-redis/package.json b/packages/services/service-cluster-redis/package.json index d54d74399b..d4b0ed73ce 100644 --- a/packages/services/service-cluster-redis/package.json +++ b/packages/services/service-cluster-redis/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-cluster-redis", - "version": "9.9.1", + "version": "9.10.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 31dae5135c..137c0620ff 100644 --- a/packages/services/service-cluster/CHANGELOG.md +++ b/packages/services/service-cluster/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/service-cluster +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/services/service-cluster/package.json b/packages/services/service-cluster/package.json index 07906d77c8..6a56dd5b9c 100644 --- a/packages/services/service-cluster/package.json +++ b/packages/services/service-cluster/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-cluster", - "version": "9.9.1", + "version": "9.10.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 426d0cbe49..4a9db49d34 100644 --- a/packages/services/service-datasource/CHANGELOG.md +++ b/packages/services/service-datasource/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/service-external-datasource +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/services/service-datasource/package.json b/packages/services/service-datasource/package.json index 63245b2daa..41e09db39c 100644 --- a/packages/services/service-datasource/package.json +++ b/packages/services/service-datasource/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-datasource", - "version": "9.9.1", + "version": "9.10.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 6e4142a47e..c191e8ffa9 100644 --- a/packages/services/service-i18n/CHANGELOG.md +++ b/packages/services/service-i18n/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/service-i18n +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/services/service-i18n/package.json b/packages/services/service-i18n/package.json index eefdeeb2e5..d1cac6f3ba 100644 --- a/packages/services/service-i18n/package.json +++ b/packages/services/service-i18n/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-i18n", - "version": "9.9.1", + "version": "9.10.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 ab970fdbd2..57fc6441a8 100644 --- a/packages/services/service-job/CHANGELOG.md +++ b/packages/services/service-job/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/service-job +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [4331adb] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/platform-objects@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/services/service-job/package.json b/packages/services/service-job/package.json index 2a1dc230f5..95776a3297 100644 --- a/packages/services/service-job/package.json +++ b/packages/services/service-job/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-job", - "version": "9.9.1", + "version": "9.10.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 c8fefbcc21..1106f5fd7f 100644 --- a/packages/services/service-knowledge/CHANGELOG.md +++ b/packages/services/service-knowledge/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/service-knowledge +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/services/service-knowledge/package.json b/packages/services/service-knowledge/package.json index a52bdb52f5..f52205943a 100644 --- a/packages/services/service-knowledge/package.json +++ b/packages/services/service-knowledge/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-knowledge", - "version": "9.9.1", + "version": "9.10.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 f3ddd67836..5ee9059f46 100644 --- a/packages/services/service-messaging/CHANGELOG.md +++ b/packages/services/service-messaging/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/service-messaging +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/services/service-messaging/package.json b/packages/services/service-messaging/package.json index 36e370b989..6b51fe3f63 100644 --- a/packages/services/service-messaging/package.json +++ b/packages/services/service-messaging/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-messaging", - "version": "9.9.1", + "version": "9.10.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 c68ad04da9..26b86fc110 100644 --- a/packages/services/service-package/CHANGELOG.md +++ b/packages/services/service-package/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/service-package +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/services/service-package/package.json b/packages/services/service-package/package.json index c2cd79b7f7..b492be0e6b 100644 --- a/packages/services/service-package/package.json +++ b/packages/services/service-package/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-package", - "version": "9.9.1", + "version": "9.10.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 bcf132719f..c2b2d96a18 100644 --- a/packages/services/service-queue/CHANGELOG.md +++ b/packages/services/service-queue/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/service-queue +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [4331adb] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/platform-objects@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/services/service-queue/package.json b/packages/services/service-queue/package.json index 548c38fe08..eda5c99d66 100644 --- a/packages/services/service-queue/package.json +++ b/packages/services/service-queue/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-queue", - "version": "9.9.1", + "version": "9.10.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 37d060d147..444efab112 100644 --- a/packages/services/service-realtime/CHANGELOG.md +++ b/packages/services/service-realtime/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/service-realtime +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [4331adb] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/platform-objects@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/services/service-realtime/package.json b/packages/services/service-realtime/package.json index 707b47f394..85160db630 100644 --- a/packages/services/service-realtime/package.json +++ b/packages/services/service-realtime/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-realtime", - "version": "9.9.1", + "version": "9.10.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 b11a70722e..d97f952e54 100644 --- a/packages/services/service-settings/CHANGELOG.md +++ b/packages/services/service-settings/CHANGELOG.md @@ -1,5 +1,20 @@ # @objectstack/service-settings +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [4331adb] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/platform-objects@9.10.0 + - @objectstack/core@9.10.0 + - @objectstack/types@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/services/service-settings/package.json b/packages/services/service-settings/package.json index 10b6ab8e34..463b850ff7 100644 --- a/packages/services/service-settings/package.json +++ b/packages/services/service-settings/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-settings", - "version": "9.9.1", + "version": "9.10.0", "license": "Apache-2.0", "description": "Settings service for ObjectStack — manifest registry + K/V resolver (OS_* env > Tenant > User > Default) + REST routes. See ADR-0007.", "type": "module", diff --git a/packages/services/service-storage/CHANGELOG.md b/packages/services/service-storage/CHANGELOG.md index 17f095ce44..4a19a2249a 100644 --- a/packages/services/service-storage/CHANGELOG.md +++ b/packages/services/service-storage/CHANGELOG.md @@ -1,5 +1,20 @@ # @objectstack/service-storage +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [4331adb] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/platform-objects@9.10.0 + - @objectstack/core@9.10.0 + - @objectstack/observability@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/services/service-storage/package.json b/packages/services/service-storage/package.json index 81f1b48b54..58687626f3 100644 --- a/packages/services/service-storage/package.json +++ b/packages/services/service-storage/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-storage", - "version": "9.9.1", + "version": "9.10.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 e1e74f3806..c66cfc2c50 100644 --- a/packages/spec/CHANGELOG.md +++ b/packages/spec/CHANGELOG.md @@ -1,5 +1,44 @@ # @objectstack/spec +## 9.10.0 + +### Minor Changes + +- 1f88fd9: Converge the RLS contract with the reference compiler, and wire §7.3.1 dynamic membership. + + - **spec (docs)**: narrow `rls.zod.ts` to the four expression forms the compiler actually implements — `field = current_user.`, `field = 'literal'`, `field IN (current_user.)`, and `1 = 1`. Removed the over-promised surface (subqueries, `AND`/`OR`/`NOT`, `LIKE`/`ILIKE`, regex, `ANY`/`ALL`, `NOT IN`, `IS NULL`, `NOW()`/`CURRENT_DATE`) from the operator list, context-variable list, and `@example` policies, and documented the fail-closed behaviour explicitly. + - **spec (schema)**: `ExecutionContext` gains `rlsMembership?: Record` — a bag of pre-resolved dynamic-membership id arrays (team members, territory accounts, shared records) that the runtime stages so RLS can scope via `field IN (current_user.)` without subquery support. Generalizes the previously hard-coded `org_user_ids`. + - **plugin-security**: `RLSCompiler.compileFilter` merges `rlsMembership` keys into the user context (arrays only, never clobbering the named `id`/`organization_id`/`roles`/`org_user_ids` fields), so §7.3.1 hierarchy- and sharing-based policies compile. `compileExpression` now recognizes `1 = 1` as always-true (empty filter), making `RLS.allowAllPolicy` grant access instead of silently failing closed. Missing/empty membership sets still fail closed. + +- 1f88fd9: Add a transaction boundary to sandboxed hook/action bodies: `ctx.api.transaction(async () => { … })`. Every `ctx.api` read/write inside the callback runs in one driver transaction — committed when the callback returns, rolled back if it throws (or if the body leaves the transaction open at timeout). Guarded by the new `api.transaction` capability. + + - **spec**: new `api.transaction` capability token on `HookBodyCapability`. + - **objectql**: `ScopedContext` gains discrete `beginTransaction()` / `commitTransaction(handle)` / `rollbackTransaction(handle)` primitives. The handle is threaded **explicitly** through a child context (`resolveTx` honors it ahead of the ambient `txStore`), because the sandbox drives the body across many host event-loop turns where AsyncLocalStorage context does not survive. Degrades to non-transactional execution when the driver has no transaction support. + - **runtime**: the QuickJS runner wires `ctx.api.transaction` over three deferred-promise host leaves (begin/commit/rollback), routes in-transaction ops through the tx-scoped context, and rolls back a transaction the body left open before disposing the VM. + +### Patch Changes + +- db02bd5: Fix dashboard time-series charts / "last N months" KPIs that filter or group by a `Field.datetime` column silently returning "No rows". + + The analytics `NativeSQLStrategy` compiles dashboard relative-date tokens (`{12_months_ago}`, `{today}`, …) to ISO date strings and binds them directly into raw SQL, bypassing the driver's own filter coercion. Under better-sqlite3 a `Field.datetime` column is stored as an INTEGER epoch (ms), so `assessed_at >= '2025-06-18'` became a TEXT-vs-INTEGER affinity compare that is always false — an empty result even though the rows exist. `Field.date` columns store ISO TEXT and were unaffected. + + The strategy now coerces a temporal comparand to the column's on-disk storage form via a new optional `StrategyContext.coerceTemporalFilterValue` hook, wired to the driver's public `SqlDriver.temporalFilterValue` (the single source of truth for the storage convention). Coercion is dialect-correct: SQLite `Field.datetime` → epoch ms; `Field.date` text and native-timestamp dialects (Postgres/MySQL) are left unchanged, so Postgres is never handed an epoch integer. Applied to `gte`/`lte`/`gt`/`lt`/`equals`, `in`/`notIn`, and the `dateRange`/timeDimension `BETWEEN` path. + +- 641675d: Add `*Input` authoring-type aliases (`DatasourceInput`, `ConnectorInput`, `SharingRuleInput`, `JobInput`, `WebhookInput`, `EmailTemplateDefinitionInput`, `RoleInput`, `PermissionSetInput`, `ObjectExtensionInput`) alongside the existing `FieldInput`/`ActionInput`/`ReportInput`/`PortalInput` convention. These are `z.input` aliases so authored literals keep `.default()` fields optional and accept CEL/Expression string shorthands — matching how `defineX()` helpers already accept input. No runtime change. +- 94e9040: fix(spec): declare the extended Gantt config fields the renderer actually reads + + `GanttConfigSchema` only declared the 5 core timeline fields as a plain + `z.object` (no passthrough), so every other field the Gantt renderer consumes — + `parentField`/`typeField` (two-level summary→step hierarchy), `colorField`, + `groupByField`, `tooltipFields`, `baselineStartField`/`baselineEndField`, + `resourceView`/`assigneeField`/`effortField`/`capacity`, `quickFilters`, + `autoZoomToFilter` — was silently stripped by `.parse()` on both the compile-time + protocol check and the runtime `GET /api/v1/meta/view/:object` re-validation. With + the keys gone before render, the Gantt degraded to a flat list (no parent/child + rows, no summary bars, no expand/collapse). These fields are now declared + explicitly (with descriptions), so the renderer contract round-trips through the + spec instead of requiring downstream patches. + ## 9.9.1 ## 9.9.0 diff --git a/packages/spec/package.json b/packages/spec/package.json index 0e67b90a0e..3669953e1c 100644 --- a/packages/spec/package.json +++ b/packages/spec/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/spec", - "version": "9.9.1", + "version": "9.10.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 986dabe4c2..40814c2458 100644 --- a/packages/triggers/trigger-api/CHANGELOG.md +++ b/packages/triggers/trigger-api/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/trigger-api +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/triggers/trigger-api/package.json b/packages/triggers/trigger-api/package.json index e0a8232902..28c803cb89 100644 --- a/packages/triggers/trigger-api/package.json +++ b/packages/triggers/trigger-api/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/trigger-api", - "version": "9.9.1", + "version": "9.10.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 f75cf909ba..8139d3ebd9 100644 --- a/packages/triggers/trigger-record-change/CHANGELOG.md +++ b/packages/triggers/trigger-record-change/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/plugin-trigger-record-change +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/triggers/trigger-record-change/package.json b/packages/triggers/trigger-record-change/package.json index 9c5cf7cc83..fed560fe38 100644 --- a/packages/triggers/trigger-record-change/package.json +++ b/packages/triggers/trigger-record-change/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/trigger-record-change", - "version": "9.9.1", + "version": "9.10.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 a86df19bcc..aed926eff3 100644 --- a/packages/triggers/trigger-schedule/CHANGELOG.md +++ b/packages/triggers/trigger-schedule/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/plugin-trigger-schedule +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + - @objectstack/core@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/triggers/trigger-schedule/package.json b/packages/triggers/trigger-schedule/package.json index 99b16cb55b..382098de54 100644 --- a/packages/triggers/trigger-schedule/package.json +++ b/packages/triggers/trigger-schedule/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/trigger-schedule", - "version": "9.9.1", + "version": "9.10.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 6e6395ad3c..00958fb18a 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/types +## 9.10.0 + +### Patch Changes + +- Updated dependencies [db02bd5] +- Updated dependencies [641675d] +- Updated dependencies [94e9040] +- Updated dependencies [1f88fd9] +- Updated dependencies [1f88fd9] + - @objectstack/spec@9.10.0 + ## 9.9.1 ### Patch Changes diff --git a/packages/types/package.json b/packages/types/package.json index fa3ee88112..4b97ef4cae 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/types", - "version": "9.9.1", + "version": "9.10.0", "license": "Apache-2.0", "description": "Shared interfaces describing the ObjectStack Runtime environment", "main": "dist/index.js", diff --git a/packages/vscode-objectstack/CHANGELOG.md b/packages/vscode-objectstack/CHANGELOG.md index 060ac75a0d..609887d2f3 100644 --- a/packages/vscode-objectstack/CHANGELOG.md +++ b/packages/vscode-objectstack/CHANGELOG.md @@ -1,5 +1,7 @@ # objectstack-vscode +## 9.10.0 + ## 9.9.1 ## 9.9.0 diff --git a/packages/vscode-objectstack/package.json b/packages/vscode-objectstack/package.json index e42e9e7f1d..20eb99ac1c 100644 --- a/packages/vscode-objectstack/package.json +++ b/packages/vscode-objectstack/package.json @@ -2,7 +2,7 @@ "name": "objectstack-vscode", "displayName": "ObjectStack", "description": "ObjectStack Protocol — Autocomplete, validation, and inline diagnostics for .object.ts, .view.ts, and objectstack.config.ts files", - "version": "9.9.1", + "version": "9.10.0", "publisher": "objectstack", "license": "Apache-2.0", "repository": {