chore: version packages#2664
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
July 6, 2026 23:18
03b58c9 to
9a555bd
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
July 6, 2026 23:27
9a555bd to
56c371a
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
July 7, 2026 00:01
56c371a to
6e73cdf
Compare
os-zhuang
added a commit
that referenced
this pull request
Jul 19, 2026
…etter-sqlite3 (#3277) (#3283) * chore: bump objectui to 2e7d7f0f7ee7 feat(evaluator): route CEL-dialect component/action predicates to the canonical engine (#2664) objectui@2e7d7f0f7ee76b838f580e8a36b74f1309b204fc * fix(driver-sql): drop vestigial sqlite3 peerDependency; SQLite uses better-sqlite3 (#3277) driver-sql declared peerDependencies.sqlite3 ^5.0.0, but nothing loads sqlite3 at runtime — every SQLite path builds a `client: 'better-sqlite3'` Knex driver (resolveSqliteDriver, the datasource driver factory, the whole test suite), and better-sqlite3 is already an optionalDependency (auto-installed, with the #2229 native→wasm→memory fallback covering a failed native build). The README already documents `pnpm add better-sqlite3`. The stale peer only misled: a consumer resolving peer deps could `pnpm add sqlite3` (never used) believing they'd satisfied the SQLite requirement. Removing it aligns the manifest with the code and docs and drops the sqlite3→node-gyp build subtree from the lockfile. The `sqlite3` string alias still maps to better-sqlite3 in the driver factory and dialect detection, so `driver: 'sqlite3'` config keeps working. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
os-zhuang
added a commit
that referenced
this pull request
Jul 19, 2026
… organizationId is blessed (#3280) (#3284) * chore: bump objectui to 2e7d7f0f7ee7 feat(evaluator): route CEL-dialect component/action predicates to the canonical engine (#2664) objectui@2e7d7f0f7ee76b838f580e8a36b74f1309b204fc * feat(spec,objectql): unify developer-facing org identifier in hooks — organizationId is blessed (#3280) The caller's active organization was surfaced to hook authors as `ctx.session.tenantId`, while the column (`organization_id`), RLS (`current_user.organizationId`), and seed rows already said `organization`. A hook author had to internalize `tenantId === organizationId` to move between surfaces. Additive, non-breaking: - `ctx.session.organizationId` added as the blessed name; `session.tenantId` kept as a deprecated alias with the identical value (both from `ExecutionContext.tenantId`, resolved from `session.activeOrganizationId`). - `ctx.user.organizationId` added to the ergonomic user shortcut; the engine now populates `ctx.user` at every hook event that carries a session, and it stays undefined for system/unauthenticated writes. Generic driver-layer tenancy (`ExecutionContext.tenantId`, `DriverOptions.tenantId`, `SqlDriver.applyTenantScope`, `TenancyConfig.tenantField`) is deliberately untouched — that layer's isolation column is configurable and can carry an environment id in database-per-tenant kernels. Docs now teach `organizationId` and distinguish the two isolation axes (org row-scoping vs environment/database-per-tenant). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
os-zhuang
added a commit
that referenced
this pull request
Jul 19, 2026
* chore: bump objectui to 2e7d7f0f7ee7 feat(evaluator): route CEL-dialect component/action predicates to the canonical engine (#2664) objectui@2e7d7f0f7ee76b838f580e8a36b74f1309b204fc * fix(formula): retire the `js` expression dialect (#3278) `js` was declared in `ExpressionDialect` but never shipped — only a registry stub with no engine and no author helper (`cel`/`F`/`P` → CEL, `tmpl` → template, `cron` → cron; nothing ever emitted `js`). Remove it from the enum (now `{cel, cron, template}`) per ADR-0049 (enforce-or-remove), and fix a latent `hasDialect` bug that reported the stub as a real engine (a false-positive `true` — the stub-detection checked for a `stub:` prefix that no registered engine ever carries). Procedural JS is unaffected: it remains the L2 `ScriptBody { language: 'js' }` sandboxed, capability-gated surface — a separate enum, not an expression dialect. - spec: narrow `ExpressionDialect`; regenerate reference docs (js drops from the ~50 Expression-holding declarations — the only generated churn) - formula: drop the stub + dead stub-detection; `hasDialect` now reports only registered real engines; registry test asserts `hasDialect('js') === false` so the gate can actually go red - ADR-0058: addendum + inline amendments recording the retire No runtime behavior changes for any valid persisted artifact — no producer ever emitted `dialect: 'js'` (open-core, cloud: 0). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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/console@12.5.0
Minor Changes
@objectstack/hono@12.5.0
Patch Changes
@objectstack/account@12.5.0
Patch Changes
@objectstack/setup@12.5.0
Patch Changes
@objectstack/studio@12.5.0
Patch Changes
@objectstack/cli@12.5.0
Patch Changes
3b9fd94:
os dev/os start/os serveno longer default-load the@objectstack/studioapp package.The console ships a dedicated Studio surface at
/_console/studio/<package-id>/<pillar>,so Studio no longer needs to exist as a navigable app tile in the home "Your apps" list.
The
@objectstack/studiopackage is unchanged and can still be registered explicitly;Setup and Account remain default-loaded (ADR-0048 one-app-per-package mechanism).
f85635e: Drop the
@objectstack/studiodependency fromcliandplugin-dev. Since Studio is no longer default-loaded byos dev/os start/os serve(the console hosts it at/_console/studio/...), neither package imports it at runtime any more. The only remaining consumer was the ADR-0048 app-split test incli, which now exercises the identical one-app-package code path via Setup + Account. The@objectstack/studiopackage itself is unchanged and still registerable explicitly.Updated dependencies [8b3d363]
Updated dependencies [12e11b6]
@objectstack/client@12.5.0
Patch Changes
@objectstack/client-react@12.5.0
Patch Changes
@objectstack/cloud-connection@12.5.0
Patch Changes
@objectstack/connector-mcp@12.5.0
Patch Changes
@objectstack/connector-openapi@12.5.0
Patch Changes
@objectstack/connector-rest@12.5.0
Patch Changes
@objectstack/connector-slack@12.5.0
Patch Changes
@objectstack/core@12.5.0
Patch Changes
@objectstack/formula@12.5.0
Patch Changes
@objectstack/lint@12.5.0
Patch Changes
@objectstack/mcp@12.5.0
Patch Changes
@objectstack/metadata@12.5.0
Patch Changes
@objectstack/metadata-core@12.5.0
Patch Changes
@objectstack/metadata-fs@12.5.0
Patch Changes
@objectstack/metadata-protocol@12.5.0
Patch Changes
8b3d363: Package metadata seed can no longer wedge the platform via record-change automation.
A seeded record whose lifecycle flow self-triggered (a
record-after-updateflowwriting back to its own trigger record) looped forever when its boolean re-entry
guard never tripped — booleans persist as integer
1on SQLite/libsql and CEL1 != trueistrue. During first-boot seed (which awaits automation) this hungthe whole kernel build.
Three layers:
ExecutionContext.skipTriggers(set by the seed-loader, threaded ontoHookContext.sessionviabuildSession) makes the record-change trigger skipflow dispatch for seed/bulk writes — seed data is end-state reference data, not
user events. Lifecycle hooks still run.
coerceBooleanFields()converts SQLite 0/1 (and'0'/'1'/'true'/'false') toreal booleans on the after-hook view of a record (
hookContext.result/.previous), so flow conditions see JS booleans. The value returned to thecaller is unchanged.
execution is still on the stack (
activeRecordFlows), a backstop for anyself-trigger loop.
Updated dependencies [8b3d363]
@objectstack/objectql@12.5.0
Patch Changes
8b3d363: Package metadata seed can no longer wedge the platform via record-change automation.
A seeded record whose lifecycle flow self-triggered (a
record-after-updateflowwriting back to its own trigger record) looped forever when its boolean re-entry
guard never tripped — booleans persist as integer
1on SQLite/libsql and CEL1 != trueistrue. During first-boot seed (which awaits automation) this hungthe whole kernel build.
Three layers:
ExecutionContext.skipTriggers(set by the seed-loader, threaded ontoHookContext.sessionviabuildSession) makes the record-change trigger skipflow dispatch for seed/bulk writes — seed data is end-state reference data, not
user events. Lifecycle hooks still run.
coerceBooleanFields()converts SQLite 0/1 (and'0'/'1'/'true'/'false') toreal booleans on the after-hook view of a record (
hookContext.result/.previous), so flow conditions see JS booleans. The value returned to thecaller is unchanged.
execution is still on the stack (
activeRecordFlows), a backstop for anyself-trigger loop.
Updated dependencies [8b3d363]
@objectstack/observability@12.5.0
Patch Changes
@objectstack/platform-objects@12.5.0
Patch Changes
@objectstack/driver-memory@12.5.0
Patch Changes
@objectstack/driver-mongodb@12.5.0
Patch Changes
@objectstack/driver-sql@12.5.0
Patch Changes
@objectstack/driver-sqlite-wasm@12.5.0
Patch Changes
@objectstack/embedder-openai@12.5.0
Patch Changes
@objectstack/knowledge-memory@12.5.0
Patch Changes
@objectstack/knowledge-ragflow@12.5.0
Patch Changes
@objectstack/plugin-approvals@12.5.0
Patch Changes
@objectstack/plugin-audit@12.5.0
Patch Changes
@objectstack/plugin-auth@12.5.0
Patch Changes
@objectstack/plugin-dev@12.5.0
Patch Changes
3b9fd94:
os dev/os start/os serveno longer default-load the@objectstack/studioapp package.The console ships a dedicated Studio surface at
/_console/studio/<package-id>/<pillar>,so Studio no longer needs to exist as a navigable app tile in the home "Your apps" list.
The
@objectstack/studiopackage is unchanged and can still be registered explicitly;Setup and Account remain default-loaded (ADR-0048 one-app-per-package mechanism).
f85635e: Drop the
@objectstack/studiodependency fromcliandplugin-dev. Since Studio is no longer default-loaded byos dev/os start/os serve(the console hosts it at/_console/studio/...), neither package imports it at runtime any more. The only remaining consumer was the ADR-0048 app-split test incli, which now exercises the identical one-app-package code path via Setup + Account. The@objectstack/studiopackage itself is unchanged and still registerable explicitly.Updated dependencies [8b3d363]
@objectstack/plugin-email@12.5.0
Patch Changes
@objectstack/plugin-hono-server@12.5.0
Patch Changes
@objectstack/plugin-org-scoping@12.5.0
Patch Changes
@objectstack/plugin-reports@12.5.0
Patch Changes
@objectstack/plugin-security@12.5.0
Patch Changes
@objectstack/plugin-sharing@12.5.0
Patch Changes
@objectstack/plugin-webhooks@12.5.0
Patch Changes
@objectstack/rest@12.5.0
Patch Changes
@objectstack/runtime@12.5.0
Patch Changes
@objectstack/service-analytics@12.5.0
Patch Changes
@objectstack/service-automation@12.5.0
Patch Changes
8b3d363: Package metadata seed can no longer wedge the platform via record-change automation.
A seeded record whose lifecycle flow self-triggered (a
record-after-updateflowwriting back to its own trigger record) looped forever when its boolean re-entry
guard never tripped — booleans persist as integer
1on SQLite/libsql and CEL1 != trueistrue. During first-boot seed (which awaits automation) this hungthe whole kernel build.
Three layers:
ExecutionContext.skipTriggers(set by the seed-loader, threaded ontoHookContext.sessionviabuildSession) makes the record-change trigger skipflow dispatch for seed/bulk writes — seed data is end-state reference data, not
user events. Lifecycle hooks still run.
coerceBooleanFields()converts SQLite 0/1 (and'0'/'1'/'true'/'false') toreal booleans on the after-hook view of a record (
hookContext.result/.previous), so flow conditions see JS booleans. The value returned to thecaller is unchanged.
execution is still on the stack (
activeRecordFlows), a backstop for anyself-trigger loop.
Updated dependencies [8b3d363]
@objectstack/service-cache@12.5.0
Patch Changes
@objectstack/service-cluster@12.5.0
Patch Changes
@objectstack/service-cluster-redis@12.5.0
Patch Changes
@objectstack/service-datasource@12.5.0
Patch Changes
@objectstack/service-i18n@12.5.0
Patch Changes
@objectstack/service-job@12.5.0
Patch Changes
@objectstack/service-knowledge@12.5.0
Patch Changes
@objectstack/service-messaging@12.5.0
Patch Changes
@objectstack/service-package@12.5.0
Patch Changes
@objectstack/service-queue@12.5.0
Patch Changes
@objectstack/service-realtime@12.5.0
Patch Changes
@objectstack/service-settings@12.5.0
Patch Changes
@objectstack/service-storage@12.5.0
Patch Changes
@objectstack/spec@12.5.0
Patch Changes
8b3d363: Package metadata seed can no longer wedge the platform via record-change automation.
A seeded record whose lifecycle flow self-triggered (a
record-after-updateflowwriting back to its own trigger record) looped forever when its boolean re-entry
guard never tripped — booleans persist as integer
1on SQLite/libsql and CEL1 != trueistrue. During first-boot seed (which awaits automation) this hungthe whole kernel build.
Three layers:
ExecutionContext.skipTriggers(set by the seed-loader, threaded ontoHookContext.sessionviabuildSession) makes the record-change trigger skipflow dispatch for seed/bulk writes — seed data is end-state reference data, not
user events. Lifecycle hooks still run.
coerceBooleanFields()converts SQLite 0/1 (and'0'/'1'/'true'/'false') toreal booleans on the after-hook view of a record (
hookContext.result/.previous), so flow conditions see JS booleans. The value returned to thecaller is unchanged.
execution is still on the stack (
activeRecordFlows), a backstop for anyself-trigger loop.
@objectstack/trigger-api@12.5.0
Patch Changes
@objectstack/trigger-record-change@12.5.0
Patch Changes
8b3d363: Package metadata seed can no longer wedge the platform via record-change automation.
A seeded record whose lifecycle flow self-triggered (a
record-after-updateflowwriting back to its own trigger record) looped forever when its boolean re-entry
guard never tripped — booleans persist as integer
1on SQLite/libsql and CEL1 != trueistrue. During first-boot seed (which awaits automation) this hungthe whole kernel build.
Three layers:
ExecutionContext.skipTriggers(set by the seed-loader, threaded ontoHookContext.sessionviabuildSession) makes the record-change trigger skipflow dispatch for seed/bulk writes — seed data is end-state reference data, not
user events. Lifecycle hooks still run.
coerceBooleanFields()converts SQLite 0/1 (and'0'/'1'/'true'/'false') toreal booleans on the after-hook view of a record (
hookContext.result/.previous), so flow conditions see JS booleans. The value returned to thecaller is unchanged.
execution is still on the stack (
activeRecordFlows), a backstop for anyself-trigger loop.
Updated dependencies [8b3d363]
@objectstack/trigger-schedule@12.5.0
Patch Changes
@objectstack/types@12.5.0
Patch Changes
@objectstack/verify@12.5.0
Patch Changes
create-objectstack@12.5.0
@objectstack/sdui-parser@12.5.0
objectstack-vscode@12.5.0
@objectstack/example-crm@4.0.75
Patch Changes
@objectstack/example-showcase@0.2.21
Patch Changes
@objectstack/example-todo@4.0.75
Patch Changes
@objectstack/example-embed-objectql@0.0.15
Patch Changes
@objectstack/dogfood@0.0.23
Patch Changes
@objectstack/downstream-contract@0.0.21
Patch Changes