Skip to content

chore: version packages#2038

Closed
github-actions[bot] wants to merge 1 commit into
mainfrom
changeset-release/main
Closed

chore: version packages#2038
github-actions[bot] wants to merge 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actions github-actions Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@objectstack/objectql@9.10.0

Minor Changes

  • 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 celos.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'sensureSeedIdentity(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, ADR-0053 Phase 2 · Slice 5: timezone-aware analytics date bucketing #1982)

    Date-bucketed analytics silently ignored the reference timezone end-to-end. Three independent seams were broken:

    • service-analyticsNativeSQLStrategy (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 ObjectQLStrategyengine.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.
    • restresolveExecCtx 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]

    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0
    • @objectstack/formula@9.10.0
    • @objectstack/metadata-core@9.10.0
    • @objectstack/types@9.10.0

@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; celos.user.id``resolves to NULL at seed time). In multi-tenant modeclaimOrphanOrgRowsback-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]
    • @objectstack/spec@9.10.0
    • @objectstack/platform-objects@9.10.0
    • @objectstack/core@9.10.0

@objectstack/plugin-security@9.10.0

Minor Changes

  • 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 celos.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'sensureSeedIdentity(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]
    • @objectstack/spec@9.10.0
    • @objectstack/platform-objects@9.10.0
    • @objectstack/core@9.10.0

@objectstack/runtime@9.10.0

Minor Changes

  • 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 celos.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'sensureSeedIdentity(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 [94e9040]
  • Updated dependencies [f169558]
  • Updated dependencies [e2b5324]
  • Updated dependencies [fd07027]
    • @objectstack/driver-sql@9.10.0
    • @objectstack/spec@9.10.0
    • @objectstack/plugin-org-scoping@9.10.0
    • @objectstack/objectql@9.10.0
    • @objectstack/plugin-security@9.10.0
    • @objectstack/rest@9.10.0
    • @objectstack/driver-sqlite-wasm@9.10.0
    • @objectstack/core@9.10.0
    • @objectstack/formula@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

@objectstack/express@9.10.0

Patch Changes

  • Updated dependencies [e2b5324]
    • @objectstack/runtime@9.10.0

@objectstack/fastify@9.10.0

Patch Changes

  • Updated dependencies [e2b5324]
    • @objectstack/runtime@9.10.0

@objectstack/hono@9.10.0

Patch Changes

  • Updated dependencies [e2b5324]
    • @objectstack/runtime@9.10.0
    • @objectstack/plugin-hono-server@9.10.0
    • @objectstack/types@9.10.0

@objectstack/nestjs@9.10.0

Patch Changes

  • Updated dependencies [e2b5324]
    • @objectstack/runtime@9.10.0

@objectstack/nextjs@9.10.0

Patch Changes

  • Updated dependencies [e2b5324]
    • @objectstack/runtime@9.10.0

@objectstack/nuxt@9.10.0

Patch Changes

  • Updated dependencies [e2b5324]
    • @objectstack/runtime@9.10.0

@objectstack/sveltekit@9.10.0

Patch Changes

  • Updated dependencies [e2b5324]
    • @objectstack/runtime@9.10.0

@objectstack/account@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
  • Updated dependencies [4331adb]
    • @objectstack/spec@9.10.0
    • @objectstack/platform-objects@9.10.0

@objectstack/setup@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
  • Updated dependencies [4331adb]
    • @objectstack/spec@9.10.0
    • @objectstack/platform-objects@9.10.0

@objectstack/studio@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
  • Updated dependencies [4331adb]
    • @objectstack/spec@9.10.0
    • @objectstack/platform-objects@9.10.0

@objectstack/cli@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [d9508d1]
  • Updated dependencies [1d352d3]
  • Updated dependencies [94e9040]
  • Updated dependencies [4331adb]
  • Updated dependencies [f169558]
  • Updated dependencies [e2b5324]
  • Updated dependencies [fd07027]
    • @objectstack/service-analytics@9.10.0
    • @objectstack/driver-sql@9.10.0
    • @objectstack/spec@9.10.0
    • @objectstack/platform-objects@9.10.0
    • @objectstack/plugin-org-scoping@9.10.0
    • @objectstack/objectql@9.10.0
    • @objectstack/plugin-security@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/formula@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

@objectstack/client@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0

@objectstack/client-react@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/client@9.10.0
    • @objectstack/core@9.10.0

@objectstack/cloud-connection@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
  • Updated dependencies [e2b5324]
    • @objectstack/spec@9.10.0
    • @objectstack/runtime@9.10.0
    • @objectstack/core@9.10.0
    • @objectstack/types@9.10.0

@objectstack/connector-mcp@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0

@objectstack/connector-openapi@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0

@objectstack/connector-rest@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0

@objectstack/connector-slack@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0

@objectstack/core@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0

@objectstack/formula@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0

@objectstack/mcp@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0
    • @objectstack/types@9.10.0

@objectstack/metadata@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
  • Updated dependencies [4331adb]
    • @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

@objectstack/metadata-core@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0

@objectstack/metadata-fs@9.10.0

Patch Changes

  • @objectstack/metadata-core@9.10.0

@objectstack/observability@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0

@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]
    • @objectstack/spec@9.10.0
    • @objectstack/metadata-core@9.10.0

@objectstack/driver-memory@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0

@objectstack/driver-mongodb@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0

@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 fix(driver-sql): round-trip rating/slider/toggle with type fidelity #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]

    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0

@objectstack/driver-sqlite-wasm@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [d9508d1]
  • Updated dependencies [1d352d3]
  • Updated dependencies [94e9040]
    • @objectstack/driver-sql@9.10.0
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0

@objectstack/embedder-openai@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0

@objectstack/knowledge-memory@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0
    • @objectstack/service-knowledge@9.10.0

@objectstack/knowledge-ragflow@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0
    • @objectstack/service-knowledge@9.10.0

@objectstack/plugin-approvals@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
  • Updated dependencies [4331adb]
    • @objectstack/spec@9.10.0
    • @objectstack/platform-objects@9.10.0
    • @objectstack/core@9.10.0
    • @objectstack/formula@9.10.0
    • @objectstack/metadata-core@9.10.0

@objectstack/plugin-audit@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
  • Updated dependencies [4331adb]
    • @objectstack/spec@9.10.0
    • @objectstack/platform-objects@9.10.0
    • @objectstack/core@9.10.0

@objectstack/plugin-auth@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
  • Updated dependencies [4331adb]
    • @objectstack/spec@9.10.0
    • @objectstack/platform-objects@9.10.0
    • @objectstack/core@9.10.0
    • @objectstack/types@9.10.0

@objectstack/plugin-dev@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
  • Updated dependencies [f169558]
  • Updated dependencies [e2b5324]
  • Updated dependencies [fd07027]
    • @objectstack/spec@9.10.0
    • @objectstack/plugin-org-scoping@9.10.0
    • @objectstack/objectql@9.10.0
    • @objectstack/plugin-security@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

@objectstack/plugin-email@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
  • Updated dependencies [4331adb]
    • @objectstack/spec@9.10.0
    • @objectstack/platform-objects@9.10.0
    • @objectstack/core@9.10.0
    • @objectstack/formula@9.10.0

@objectstack/plugin-hono-server@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0
    • @objectstack/types@9.10.0

@objectstack/plugin-msw@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
  • 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

@objectstack/plugin-reports@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
  • Updated dependencies [4331adb]
    • @objectstack/spec@9.10.0
    • @objectstack/platform-objects@9.10.0
    • @objectstack/core@9.10.0

@objectstack/plugin-sharing@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
  • Updated dependencies [4331adb]
  • 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

@objectstack/plugin-webhooks@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0
    • @objectstack/service-messaging@9.10.0

@objectstack/rest@9.10.0

Patch Changes

  • fd07027: fix(analytics): make organization timezone actually drive date-dimension bucketing (ADR-0053 Phase 2, ADR-0053 Phase 2 · Slice 5: timezone-aware analytics date bucketing #1982)

    Date-bucketed analytics silently ignored the reference timezone end-to-end. Three independent seams were broken:

    • service-analyticsNativeSQLStrategy (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 ObjectQLStrategyengine.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.
    • restresolveExecCtx 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]

    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0
    • @objectstack/service-package@9.10.0

@objectstack/service-ai@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0
    • @objectstack/formula@9.10.0
    • @objectstack/types@9.10.0

@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, ADR-0053 Phase 2 · Slice 5: timezone-aware analytics date bucketing #1982)

    Date-bucketed analytics silently ignored the reference timezone end-to-end. Three independent seams were broken:

    • service-analyticsNativeSQLStrategy (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 ObjectQLStrategyengine.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.
    • restresolveExecCtx 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]

    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0

@objectstack/service-automation@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0
    • @objectstack/formula@9.10.0

@objectstack/service-cache@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0
    • @objectstack/observability@9.10.0

@objectstack/service-cluster@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0

@objectstack/service-cluster-redis@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/service-cluster@9.10.0

@objectstack/service-datasource@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0

@objectstack/service-i18n@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0

@objectstack/service-job@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
  • Updated dependencies [4331adb]
    • @objectstack/spec@9.10.0
    • @objectstack/platform-objects@9.10.0
    • @objectstack/core@9.10.0

@objectstack/service-knowledge@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0

@objectstack/service-messaging@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0

@objectstack/service-package@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0

@objectstack/service-queue@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
  • Updated dependencies [4331adb]
    • @objectstack/spec@9.10.0
    • @objectstack/platform-objects@9.10.0
    • @objectstack/core@9.10.0

@objectstack/service-realtime@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
  • Updated dependencies [4331adb]
    • @objectstack/spec@9.10.0
    • @objectstack/platform-objects@9.10.0
    • @objectstack/core@9.10.0

@objectstack/service-settings@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
  • Updated dependencies [4331adb]
    • @objectstack/spec@9.10.0
    • @objectstack/platform-objects@9.10.0
    • @objectstack/core@9.10.0
    • @objectstack/types@9.10.0

@objectstack/service-storage@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
  • Updated dependencies [4331adb]
    • @objectstack/spec@9.10.0
    • @objectstack/platform-objects@9.10.0
    • @objectstack/core@9.10.0
    • @objectstack/observability@9.10.0

@objectstack/spec@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.

  • 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<typeof XSchema> 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.

@objectstack/trigger-api@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0

@objectstack/trigger-record-change@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0

@objectstack/trigger-schedule@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0
    • @objectstack/core@9.10.0

@objectstack/types@9.10.0

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
    • @objectstack/spec@9.10.0

@objectstack/console@9.10.0

create-objectstack@9.10.0

objectstack-vscode@9.10.0

@objectstack/example-crm@4.0.53

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
  • Updated dependencies [e2b5324]
    • @objectstack/spec@9.10.0
    • @objectstack/runtime@9.10.0

@objectstack/example-showcase@0.1.23

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
  • 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

@objectstack/example-todo@4.0.53

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
  • 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

@objectstack/dogfood@0.0.1

Patch Changes

  • Updated dependencies [db02bd5]
  • Updated dependencies [641675d]
  • Updated dependencies [94e9040]
  • Updated dependencies [f169558]
  • 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/objectql@9.10.0
    • @objectstack/plugin-security@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

@vercel

vercel Bot commented Jun 18, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
spec Ready Ready Preview, Comment Jun 18, 2026 1:34pm

Request Review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant