Uh oh!
There was an error while loading. Please reload this page.
chore: version packages - #2245
Merged
Merged
Conversation
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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 freeto 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/cli@10.3.0
Minor Changes
2b355d5: feat(cluster): multi-node authorization gate (open mechanism)
@objectstack/service-clusternow exportsregisterMultiNodeGate/checkMultiNodeAllowed: a distribution (e.g. the Enterprise Edition) canregister a gate that authorizes whether the runtime may enable a multi-node
(remote-driver) topology. The open framework ships no gate — multi-node is
always allowed.
os serveconsults the gate before activating a remote cluster driver; ondenial it downgrades to single-node (in-memory) rather than failing —
multi-node is an add-on, never bricks the runtime. The framework holds zero
license logic; this is the open seam an EE license plugs into (cloud ADR-0022).
Patch Changes
f75943a: feat(lint): SDUI styling validator (ADR-0065)
validateResponsiveStyles— a pure(stack) => Finding[]rule wired intoos validateandos compile, so hand-authored and AI-generated pages areheld to the same bar (ADR-0019). Catches the deterministic ways a
responsiveStylesblock silently fails: a styled node with noid(CSS can'tbe scoped → dropped) is an error; warnings cover Tailwind-in-
className(silently dead in metadata), a smaller breakpoint with no
largebase, unknownCSS properties, and unknown/typo'd design tokens. Quality/visual judgement
(is it ugly) is out of scope — that needs render + a VLM gate.
c121d73: fix(cli): let single-node
os startauto-mint a crypto keyos startforcesNODE_ENV=production, which madeLocalCryptoProviderrefuseto boot without
OS_SECRET_KEY— breaking the documented zero-config quickstart(
npm i -g @objectstack/cli && os start) on a clean machine.LocalCryptoProvidernow honours anOS_CRYPTO_AUTOKEYopt-in in production: itmints AND persists a key to
~/.objectstack/dev-crypto-key. The ephemeralfallback stays forbidden, so a non-writable / ephemeral filesystem still fails
loud rather than running under a key that won't survive a restart.
os startsets the flag only for single-node deployments (no
OS_CLUSTER_DRIVER, noOS_SECRET_KEY); multi-node still fails loud untilOS_SECRET_KEYis provided.f2063f3: fix(cli): extend native better-sqlite3 → wasm SQLite auto-fallback to the persistent-file /
--artifactdev path (better-sqlite3 → wasm auto-fallback doesn't cover the persistent-file / --artifact dev path (only the zero-config :memory: branch) #2229)The native-
better-sqlite3→ wasm SQLite → in-memory step-down previously onlyguarded the zero-config
:memory:dev branch ofserve. A normalobjectstack devrun never reaches it —devinjects a persistentfile:DB(so AI-authored data survives restarts) and
--artifactboots resolve sqlitethrough the datasource factory — both of which constructed
better-sqlite3directly with no probe and no fallback. An ABI mismatch (e.g.a cached prebuilt binary built for a different Node version) was therefore not
caught at boot and surfaced later as a runtime
Find operation failedon thefirst query.
The probe-by-connect + step-down is now hoisted into a shared
resolveSqliteDriverhelper (@objectstack/service-datasource) and applied toboth previously-unguarded sqlite construction sites: the explicit
sqlite/file:branch inserve.tsand the sqlite branch of the default datasourcedriver factory. better-sqlite3 loads its native addon lazily (first query), so
the helper forces the load with a
SELECT 1and, in dev only, steps down towasm SQLite (real SQL + on-disk persistence — the same
file:keeps working)then to the in-memory driver as a last resort, emitting the existing
⚠ native better-sqlite3 unavailable …warning. In production the native driveris returned unprobed so a load failure surfaces loudly (fail-closed) rather than
silently degrading to a different engine.
Updated dependencies [f73d40a]
Updated dependencies [5ba52b0]
Updated dependencies [211425e]
Updated dependencies [f75943a]
Updated dependencies [6d3bf54]
Updated dependencies [c121d73]
Updated dependencies [8cf4f7c]
Updated dependencies [f2063f3]
@objectstack/lint@10.3.0
Minor Changes
f75943a: feat(lint): SDUI styling validator (ADR-0065)
validateResponsiveStyles— a pure(stack) => Finding[]rule wired intoos validateandos compile, so hand-authored and AI-generated pages areheld to the same bar (ADR-0019). Catches the deterministic ways a
responsiveStylesblock silently fails: a styled node with noid(CSS can'tbe scoped → dropped) is an error; warnings cover Tailwind-in-
className(silently dead in metadata), a smaller breakpoint with no
largebase, unknownCSS properties, and unknown/typo'd design tokens. Quality/visual judgement
(is it ugly) is out of scope — that needs render + a VLM gate.
Patch Changes
@objectstack/service-cluster@10.3.0
Minor Changes
2b355d5: feat(cluster): multi-node authorization gate (open mechanism)
@objectstack/service-clusternow exportsregisterMultiNodeGate/checkMultiNodeAllowed: a distribution (e.g. the Enterprise Edition) canregister a gate that authorizes whether the runtime may enable a multi-node
(remote-driver) topology. The open framework ships no gate — multi-node is
always allowed.
os serveconsults the gate before activating a remote cluster driver; ondenial it downgrades to single-node (in-memory) rather than failing —
multi-node is an add-on, never bricks the runtime. The framework holds zero
license logic; this is the open seam an EE license plugs into (cloud ADR-0022).
Patch Changes
@objectstack/express@10.3.0
Patch Changes
@objectstack/fastify@10.3.0
Patch Changes
@objectstack/hono@10.3.0
Patch Changes
@objectstack/nestjs@10.3.0
Patch Changes
@objectstack/nextjs@10.3.0
Patch Changes
@objectstack/nuxt@10.3.0
Patch Changes
@objectstack/sveltekit@10.3.0
Patch Changes
@objectstack/account@10.3.0
Patch Changes
@objectstack/setup@10.3.0
Patch Changes
@objectstack/studio@10.3.0
Patch Changes
@objectstack/client@10.3.0
Patch Changes
@objectstack/client-react@10.3.0
Patch Changes
@objectstack/cloud-connection@10.3.0
Patch Changes
@objectstack/connector-mcp@10.3.0
Patch Changes
@objectstack/connector-openapi@10.3.0
Patch Changes
@objectstack/connector-rest@10.3.0
Patch Changes
@objectstack/connector-slack@10.3.0
Patch Changes
@objectstack/core@10.3.0
Patch Changes
@objectstack/formula@10.3.0
Patch Changes
@objectstack/mcp@10.3.0
Patch Changes
@objectstack/metadata@10.3.0
Patch Changes
@objectstack/metadata-core@10.3.0
Patch Changes
@objectstack/metadata-fs@10.3.0
Patch Changes
@objectstack/objectql@10.3.0
Patch Changes
211425e: fix(objectql): return the real
total/hasMorefromfindData(findData 列表分页失效:total 永远等于本页条数、hasMore 恒为 false #2212)ObjectStackProtocolImplementation.findDatapreviously returned placeholderpagination metadata:
totalwas always the page length andhasMorewasalways
false. Front-end tables therefore believed every result set was asingle page and never requested records past the first batch (e.g. row 51+ was
unreachable).
For a normal limited query it now runs
engine.count()over the samewheretoget the true match total and derives
hasMorefromoffset + page length < total.engine.count()only honorswhere, sosearch/distinctqueries skip thecount and fall back to a page-local estimate (a full page implies there may be
more) instead of reporting a wrong total. Unlimited queries return the full set,
whose length already is the total. The aggregate/group branch now reports the
full group count as
totalwithhasMorereflecting whether the client-sideslice dropped any groups.
@objectstack/observability@10.3.0
Patch Changes
@objectstack/platform-objects@10.3.0
Patch Changes
@objectstack/driver-memory@10.3.0
Patch Changes
@objectstack/driver-mongodb@10.3.0
Patch Changes
@objectstack/driver-sql@10.3.0
Patch Changes
5ba52b0: fix(driver-sql): honor
tenancy.enabled:falsein driver org-scopingThe driver auto-detects
organization_idas a tenant-isolation column and, whenthe caller passes
DriverOptions.tenantId, scopes reads/updates/deletes to thattenant (and injects the column on inserts). The implicit column-detection
fallback ignored an explicit
tenancy.enabled === false, so a platform-globalobject that opts out of tenancy but carries an optional
organization_idFK(e.g.
sys_license) was still org-scoped — an authenticated caller's active-orgtenantIdthen hid every NULL-org / cross-org row. The opt-out is now honored ina single shared
computeTenantField()used by bothinitObjectsandregisterExternalObject(which had drifted). CoversTursoDriver(extendsSqlDriver). Genuine org-scoped objects are unaffected.@objectstack/driver-sqlite-wasm@10.3.0
Patch Changes
@objectstack/embedder-openai@10.3.0
Patch Changes
@objectstack/knowledge-memory@10.3.0
Patch Changes
@objectstack/knowledge-ragflow@10.3.0
Patch Changes
@objectstack/plugin-approvals@10.3.0
Patch Changes
@objectstack/plugin-audit@10.3.0
Patch Changes
@objectstack/plugin-auth@10.3.0
Patch Changes
@objectstack/plugin-dev@10.3.0
Patch Changes
@objectstack/plugin-email@10.3.0
Patch Changes
@objectstack/plugin-hono-server@10.3.0
Patch Changes
@objectstack/plugin-msw@10.3.0
Patch Changes
@objectstack/plugin-org-scoping@10.3.0
Patch Changes
@objectstack/plugin-reports@10.3.0
Patch Changes
@objectstack/plugin-security@10.3.0
Patch Changes
@objectstack/plugin-sharing@10.3.0
Patch Changes
@objectstack/plugin-webhooks@10.3.0
Patch Changes
@objectstack/rest@10.3.0
Patch Changes
@objectstack/runtime@10.3.0
Patch Changes
8cf4f7c: fix(runtime): mount
GET /readyso the readiness probe is reachable over HTTPThe dispatcher's
/readybranch (seam ✨ Set up Copilot instructions #2) was only reachable when callingdispatch()directly — noserver.get('${prefix}/ready')registration existed,so a real server returned the Hono not-found 404 before the handler ran (the same
class of bug as
/mcpand/keys)./readyis now mounted alongside/health,returning 200 while the kernel is
runningand 503 while it is booting ordraining — the contract the EE multi-node rolling-restart drain gate polls
(cloud ADR-0018). Adds a registration assertion plus an integration test that
hits the endpoint through a real HTTP server.
f2063f3: fix(cli): extend native better-sqlite3 → wasm SQLite auto-fallback to the persistent-file /
--artifactdev path (better-sqlite3 → wasm auto-fallback doesn't cover the persistent-file / --artifact dev path (only the zero-config :memory: branch) #2229)The native-
better-sqlite3→ wasm SQLite → in-memory step-down previously onlyguarded the zero-config
:memory:dev branch ofserve. A normalobjectstack devrun never reaches it —devinjects a persistentfile:DB(so AI-authored data survives restarts) and
--artifactboots resolve sqlitethrough the datasource factory — both of which constructed
better-sqlite3directly with no probe and no fallback. An ABI mismatch (e.g.a cached prebuilt binary built for a different Node version) was therefore not
caught at boot and surfaced later as a runtime
Find operation failedon thefirst query.
The probe-by-connect + step-down is now hoisted into a shared
resolveSqliteDriverhelper (@objectstack/service-datasource) and applied toboth previously-unguarded sqlite construction sites: the explicit
sqlite/file:branch inserve.tsand the sqlite branch of the default datasourcedriver factory. better-sqlite3 loads its native addon lazily (first query), so
the helper forces the load with a
SELECT 1and, in dev only, steps down towasm SQLite (real SQL + on-disk persistence — the same
file:keeps working)then to the in-memory driver as a last resort, emitting the existing
⚠ native better-sqlite3 unavailable …warning. In production the native driveris returned unprobed so a load failure surfaces loudly (fail-closed) rather than
silently degrading to a different engine.
Updated dependencies [2b355d5]
Updated dependencies [5ba52b0]
Updated dependencies [211425e]
Updated dependencies [f2063f3]
@objectstack/service-ai@10.3.0
Patch Changes
@objectstack/service-analytics@10.3.0
Patch Changes
f73d40a: fix(analytics): log scalar auto-inferred cubes at debug, not warn
Scalar metric queries (measures only, no
dimensions/timeDimensions) over anunregistered cube — the first-class
object-metric"metric over an object" path— auto-infer a trivial count/sum cube by design. That auto-infer now logs at
debuginstead ofwarn, so boot/render no longer spamsNo cube registered for "..."for a non-problem. Grouped queries (explicitdimension / time bucket) over an unregistered cube keep the
warn, where aforgotten cube registration is a real mistake.
@objectstack/service-automation@10.3.0
Patch Changes
@objectstack/service-cache@10.3.0
Patch Changes
@objectstack/service-cluster-redis@10.3.0
Patch Changes
@objectstack/service-datasource@10.3.0
Patch Changes
f2063f3: fix(cli): extend native better-sqlite3 → wasm SQLite auto-fallback to the persistent-file /
--artifactdev path (better-sqlite3 → wasm auto-fallback doesn't cover the persistent-file / --artifact dev path (only the zero-config :memory: branch) #2229)The native-
better-sqlite3→ wasm SQLite → in-memory step-down previously onlyguarded the zero-config
:memory:dev branch ofserve. A normalobjectstack devrun never reaches it —devinjects a persistentfile:DB(so AI-authored data survives restarts) and
--artifactboots resolve sqlitethrough the datasource factory — both of which constructed
better-sqlite3directly with no probe and no fallback. An ABI mismatch (e.g.a cached prebuilt binary built for a different Node version) was therefore not
caught at boot and surfaced later as a runtime
Find operation failedon thefirst query.
The probe-by-connect + step-down is now hoisted into a shared
resolveSqliteDriverhelper (@objectstack/service-datasource) and applied toboth previously-unguarded sqlite construction sites: the explicit
sqlite/file:branch inserve.tsand the sqlite branch of the default datasourcedriver factory. better-sqlite3 loads its native addon lazily (first query), so
the helper forces the load with a
SELECT 1and, in dev only, steps down towasm SQLite (real SQL + on-disk persistence — the same
file:keeps working)then to the in-memory driver as a last resort, emitting the existing
⚠ native better-sqlite3 unavailable …warning. In production the native driveris returned unprobed so a load failure surfaces loudly (fail-closed) rather than
silently degrading to a different engine.
@objectstack/service-i18n@10.3.0
Patch Changes
@objectstack/service-job@10.3.0
Patch Changes
@objectstack/service-knowledge@10.3.0
Patch Changes
@objectstack/service-messaging@10.3.0
Patch Changes
6d3bf54: fix(messaging): store outbox audit timestamps as datetime so Postgres retention works
created_at/updated_atare builtin audit columns that the SQL driver alwaysprovisions as native
TIMESTAMPcolumns, regardless of the declared field type.The notification and HTTP outboxes declared them as
Field.numberand wroteepoch-ms via
Date.now(), so on Postgres both theenqueueinsert and theretention sweep failed with
date/time field value out of range(a bigintcompared to a timestamp column). SQLite's lenient column affinity hid the bug
until the multi-node Postgres E2E.
The outbox objects now declare these as
Field.datetimeand writeDates; theretention sweep uses one ISO-8601 cutoff for every target (dropping the
format: 'epoch'special case);toRecordnormalises read-back to epoch ms sothe record contract is unchanged.
sys_job_runretention was already ISO.@objectstack/service-package@10.3.0
Patch Changes
@objectstack/service-queue@10.3.0
Patch Changes
@objectstack/service-realtime@10.3.0
Patch Changes
@objectstack/service-settings@10.3.0
Patch Changes
c121d73: fix(cli): let single-node
os startauto-mint a crypto keyos startforcesNODE_ENV=production, which madeLocalCryptoProviderrefuseto boot without
OS_SECRET_KEY— breaking the documented zero-config quickstart(
npm i -g @objectstack/cli && os start) on a clean machine.LocalCryptoProvidernow honours anOS_CRYPTO_AUTOKEYopt-in in production: itmints AND persists a key to
~/.objectstack/dev-crypto-key. The ephemeralfallback stays forbidden, so a non-writable / ephemeral filesystem still fails
loud rather than running under a key that won't survive a restart.
os startsets the flag only for single-node deployments (no
OS_CLUSTER_DRIVER, noOS_SECRET_KEY); multi-node still fails loud untilOS_SECRET_KEYis provided.@objectstack/service-storage@10.3.0
Patch Changes
@objectstack/trigger-api@10.3.0
Patch Changes
@objectstack/trigger-record-change@10.3.0
Patch Changes
@objectstack/trigger-schedule@10.3.0
Patch Changes
@objectstack/types@10.3.0
Patch Changes
@objectstack/verify@10.3.0
Patch Changes
@objectstack/console@10.3.0
create-objectstack@10.3.0
@objectstack/spec@10.3.0
objectstack-vscode@10.3.0
@objectstack/example-crm@4.0.58
Patch Changes
@objectstack/example-showcase@0.2.4
Patch Changes
@objectstack/example-todo@4.0.58
Patch Changes
@objectstack/dogfood@0.0.6
Patch Changes
@objectstack/downstream-contract@0.0.4
Patch Changes