You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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@11.9.0
Minor Changes
1a29234: chore(console): refresh vendored @object-ui/console SPA to objectui@9aec6817
Bumps the pinned .objectui-sha from 144ab55b to 9aec6817 (13 commits) and rebuilds the prebuilt Console SPA shipped in @objectstack/console.
Notable upstream changes pulled in:
feat(studio): Data pillar Validations + Settings views (builder-ui Phase B)
feat(studio): package switcher + inline new-writable-package in the top bar
feat(home,studio): builder cover on Home + builder→app bridge; builder landing joins the login journey
fix(app-shell): stop double-toasting failed script/modal action errors; don't show recovery-password reminder on SSO-enforced envs or first landing
fix(plugin-grid): keep row selection in sync when bulk-action dialog closes; i18n the bulk-action dialog; readable import preview
fix(form): de-emphasize field labels so fieldGroups hierarchy reads
8d87930: Fix a connection-pool deadlock when the first auto_number write after process
start goes through a transaction (e.g. POST /api/v1/batch, which wraps every
operation in one ql.transaction(...)).
The sequence-counter table (_objectstack_sequences) was created lazily on the
first autonumber INSERT via a bare this.knex.schema.* call that asks the pool
for a second connection. On SQLite (better-sqlite3, pool max=1) the open batch
transaction already holds the only connection, so the acquire blocked until Knex: Timeout acquiring a connection. Postgres/MySQL are exposed to the same
pool-exhaustion deadlock under concurrent cold first-writes.
Fixes:
initObjects now pre-creates the counter table up front, outside any data
transaction, so the first write never runs DDL (primary fix).
The lazy fallback (ensureSequencesTable) now runs its DDL on the caller's own
transaction on SQLite instead of grabbing a second connection. It deliberately
does not route DDL through the caller's transaction on MySQL, where DDL would
implicitly commit the caller's in-flight transaction.
Added a dev/test guard (assertBareKnexSafe): on SQLite, issuing a bare this.knex query while a transaction holds the single pooled connection now
fails fast with an actionable error instead of hanging until the opaque Knex: Timeout acquiring a connection. No-op in production and on non-SQLite
dialects, so it adds no runtime cost on the hot path — it just turns this whole
class of "forgot to thread the transaction through" bug into an immediate,
self-explaining failure at the call site.
852bc8e: fix(runtime): surface the clean business message from a failed action, not the sandbox debug wrapper
A user throw inside a script/action body is wrapped by the sandbox as <kind> '<name>' threw: <msg> for server logs, but the action HTTP endpoint
returned that whole wrapper as the client-facing error — so an action's error
toast leaked the debug prefix to end users (e.g. action 'lead_apply_convert' threw: Error: 线索信息不完整… instead of just 线索信息不完整…).
SandboxError now also carries innerMessage: the plain business message with
no <kind> '<name>' threw: wrapper and no default Error: name prefix. The
action route surfaces innerMessage to the client and keeps the full wrapper in
the server log.
RecordDetailsProps (ui/component.zod.ts) layout/fields descriptions taught the
deprecated compactLayout name — now teach the ADR-0085 canonical highlightFields
(compactLayout remains a supported alias). Regenerated skills/objectstack-ui/{contracts/react-blocks.contract.json,references/react-blocks.md}.
Advisory only. To re-verify, run the docs-accuracy-audit workflow scoped to these files: node scripts/docs-audit/affected-docs.mjs origin/main → pass the list as args.docs.
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
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@11.9.0
Minor Changes
1a29234: chore(console): refresh vendored
@object-ui/consoleSPA to objectui@9aec6817Bumps the pinned
.objectui-shafrom144ab55bto9aec6817(13 commits) and rebuilds the prebuilt Console SPA shipped in@objectstack/console.Notable upstream changes pulled in:
@objectstack/hono@11.9.0
Patch Changes
@objectstack/account@11.9.0
Patch Changes
@objectstack/setup@11.9.0
Patch Changes
@objectstack/studio@11.9.0
Patch Changes
@objectstack/cli@11.9.0
Patch Changes
@objectstack/client@11.9.0
Patch Changes
@objectstack/client-react@11.9.0
Patch Changes
@objectstack/cloud-connection@11.9.0
Patch Changes
@objectstack/connector-mcp@11.9.0
Patch Changes
@objectstack/connector-openapi@11.9.0
Patch Changes
@objectstack/connector-rest@11.9.0
Patch Changes
@objectstack/connector-slack@11.9.0
Patch Changes
@objectstack/core@11.9.0
Patch Changes
@objectstack/formula@11.9.0
Patch Changes
@objectstack/lint@11.9.0
Patch Changes
@objectstack/mcp@11.9.0
Patch Changes
@objectstack/metadata@11.9.0
Patch Changes
@objectstack/metadata-core@11.9.0
Patch Changes
@objectstack/metadata-fs@11.9.0
Patch Changes
@objectstack/metadata-protocol@11.9.0
Patch Changes
@objectstack/objectql@11.9.0
Patch Changes
@objectstack/observability@11.9.0
Patch Changes
@objectstack/platform-objects@11.9.0
Patch Changes
@objectstack/driver-memory@11.9.0
Patch Changes
@objectstack/driver-mongodb@11.9.0
Patch Changes
@objectstack/driver-sql@11.9.0
Patch Changes
8d87930: Fix a connection-pool deadlock when the first
auto_numberwrite after processstart goes through a transaction (e.g.
POST /api/v1/batch, which wraps everyoperation in one
ql.transaction(...)).The sequence-counter table (
_objectstack_sequences) was created lazily on thefirst autonumber INSERT via a bare
this.knex.schema.*call that asks the poolfor a second connection. On SQLite (better-sqlite3, pool max=1) the open batch
transaction already holds the only connection, so the acquire blocked until
Knex: Timeout acquiring a connection. Postgres/MySQL are exposed to the samepool-exhaustion deadlock under concurrent cold first-writes.
Fixes:
initObjectsnow pre-creates the counter table up front, outside any datatransaction, so the first write never runs DDL (primary fix).
ensureSequencesTable) now runs its DDL on the caller's owntransaction on SQLite instead of grabbing a second connection. It deliberately
does not route DDL through the caller's transaction on MySQL, where DDL would
implicitly commit the caller's in-flight transaction.
assertBareKnexSafe): on SQLite, issuing a barethis.knexquery while a transaction holds the single pooled connection nowfails fast with an actionable error instead of hanging until the opaque
Knex: Timeout acquiring a connection. No-op in production and on non-SQLitedialects, so it adds no runtime cost on the hot path — it just turns this whole
class of "forgot to thread the transaction through" bug into an immediate,
self-explaining failure at the call site.
Updated dependencies [d3595d9]
@objectstack/driver-sqlite-wasm@11.9.0
Patch Changes
@objectstack/embedder-openai@11.9.0
Patch Changes
@objectstack/knowledge-memory@11.9.0
Patch Changes
@objectstack/knowledge-ragflow@11.9.0
Patch Changes
@objectstack/plugin-approvals@11.9.0
Patch Changes
@objectstack/plugin-audit@11.9.0
Patch Changes
@objectstack/plugin-auth@11.9.0
Patch Changes
@objectstack/plugin-dev@11.9.0
Patch Changes
@objectstack/plugin-email@11.9.0
Patch Changes
@objectstack/plugin-hono-server@11.9.0
Patch Changes
@objectstack/plugin-org-scoping@11.9.0
Patch Changes
@objectstack/plugin-reports@11.9.0
Patch Changes
@objectstack/plugin-security@11.9.0
Patch Changes
@objectstack/plugin-sharing@11.9.0
Patch Changes
@objectstack/plugin-webhooks@11.9.0
Patch Changes
@objectstack/rest@11.9.0
Patch Changes
@objectstack/runtime@11.9.0
Patch Changes
852bc8e: fix(runtime): surface the clean business message from a failed action, not the sandbox debug wrapper
A user throw inside a script/action body is wrapped by the sandbox as
<kind> '<name>' threw: <msg>for server logs, but the action HTTP endpointreturned that whole wrapper as the client-facing
error— so an action's errortoast leaked the debug prefix to end users (e.g.
action 'lead_apply_convert' threw: Error: 线索信息不完整…instead of just线索信息不完整…).SandboxErrornow also carriesinnerMessage: the plain business message withno
<kind> '<name>' threw:wrapper and no defaultError:name prefix. Theaction route surfaces
innerMessageto the client and keeps the full wrapper inthe server log.
Updated dependencies [d3595d9]
Updated dependencies [8d87930]
@objectstack/service-analytics@11.9.0
Patch Changes
@objectstack/service-automation@11.9.0
Patch Changes
@objectstack/service-cache@11.9.0
Patch Changes
@objectstack/service-cluster@11.9.0
Patch Changes
@objectstack/service-cluster-redis@11.9.0
Patch Changes
@objectstack/service-datasource@11.9.0
Patch Changes
@objectstack/service-i18n@11.9.0
Patch Changes
@objectstack/service-job@11.9.0
Patch Changes
@objectstack/service-knowledge@11.9.0
Patch Changes
@objectstack/service-messaging@11.9.0
Patch Changes
@objectstack/service-package@11.9.0
Patch Changes
@objectstack/service-queue@11.9.0
Patch Changes
@objectstack/service-realtime@11.9.0
Patch Changes
@objectstack/service-settings@11.9.0
Patch Changes
@objectstack/service-storage@11.9.0
Patch Changes
@objectstack/spec@11.9.0
Patch Changes
d3595d9: Clean up two stale code-side doc remnants found during the ADR-0085 docs sweep (docs: retire legacy UI-hint keys (ADR-0085 semantic roles) #2529):
RecordDetailsProps(ui/component.zod.ts)layout/fieldsdescriptions taught thedeprecated
compactLayoutname — now teach the ADR-0085 canonicalhighlightFields(
compactLayoutremains a supported alias). Regeneratedskills/objectstack-ui/{contracts/react-blocks.contract.json,references/react-blocks.md}.defaultDetailForm,a prop that was never implemented and was removed from the spec in feat(spec): remove first batch of dead metadata props (#2377, A2) #2402.
Doc-text only; no schema shape or behavior change.
@objectstack/trigger-api@11.9.0
Patch Changes
@objectstack/trigger-record-change@11.9.0
Patch Changes
@objectstack/trigger-schedule@11.9.0
Patch Changes
@objectstack/types@11.9.0
Patch Changes
@objectstack/verify@11.9.0
Patch Changes
create-objectstack@11.9.0
@objectstack/sdui-parser@11.9.0
objectstack-vscode@11.9.0
@objectstack/example-crm@4.0.68
Patch Changes
@objectstack/example-showcase@0.2.14
Patch Changes
@objectstack/example-todo@4.0.68
Patch Changes
@objectstack/example-embed-objectql@0.0.8
Patch Changes
@objectstack/dogfood@0.0.16
Patch Changes
@objectstack/downstream-contract@0.0.14
Patch Changes