chore: version packages#2042
Closed
github-actions[bot] wants to merge 1 commit into
Closed
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
June 19, 2026 09:13
abf2ffe to
d1f7e4f
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
June 19, 2026 10:17
d1f7e4f to
c7bd0e8
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
June 19, 2026 11:03
c7bd0e8 to
66950b6
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
June 19, 2026 11:11
66950b6 to
c8a6107
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
June 19, 2026 13:44
c8a6107 to
5496aad
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
June 19, 2026 14:15
5496aad to
9a158a2
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
June 19, 2026 15:07
9a158a2 to
f9da556
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
June 19, 2026 16:09
f9da556 to
91d164d
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
June 20, 2026 01:22
91d164d to
28c1d4f
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
June 20, 2026 04:20
28c1d4f to
3ddf6e9
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
June 20, 2026 04:47
3ddf6e9 to
ba64838
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
June 20, 2026 05:05
ba64838 to
e4a1f2e
Compare
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/cli@9.11.0
Minor Changes
c651f38: feat(cli): warn on unrecognized autonumber format tokens
objectstack compilenow flagsautonumberformats whose{...}token is not acounter (
{0000}), date ({YYYY}/{MM}/…) or{field}token — an unrecognizedgroup (wrong case, spaces, punctuation, or a second sequence slot) renders
LITERALLY into the record number, which is a silent footgun for AI-authored
templates. Emitted as an advisory warning (
autonumber-unrecognized-token),alongside the existing
{field}-reference checks. Theobjectstack-dataskill'sfield-typesrules were also expanded to document the date/{field}/per-scopetokens and the authoring rules (required interpolated fields, delimited adjacent
tokens, pad width is a minimum, date tokens are exact).
36138c7: feat(autonumber): date, {field} and per-scope counter reset for autonumber formats
autonumberFormatpreviously only understood a single{0000}sequence slot —everything else was a fixed literal prefix on one global counter. Real MES/eHR
record numbers need three more token classes, so the format is now tokenized by a
shared pure renderer in
@objectstack/spec(parseAutonumberFormat/renderAutonumber) that the engine fallback and the SQL driver both call, so theyemit byte-identical numbers (DB-native autonumber sequence (multi-instance correctness) #1603 parity):
{YYYY}{YY}{MM}{DD}{YYYYMMDD}resolve the calendarday in the request's business timezone (
ExecutionContext.timezone, ADR-0053;UTC fallback), threaded through the new
DriverOptions.timezone.{field}interpolation —{section}{island_zone}{000}substitutes recordfield values into the prefix.
the sequence slot, so
AD{YYYYMMDD}{0000}resets daily,{section}{island_zone}{000}numbers per group, and
{plan_no}{000}numbers per parent — all from onemechanism, no separate reset config.
Fixed-prefix formats like
CASE-{0000}render an empty scope and keep their singleglobal counter, so existing sequences are unchanged. The persistent
_objectstack_sequencestable is keyed by akey_hash(SHA-256 ofobject, tenant_id, field, scope) — a single 64-char primary key that keys everydialect uniformly, stays within MySQL's utf8mb4 index-length limit (four raw
columns would not), and lets
scopebe a generous non-indexed column. Deploymentswith an older table (3-column, or an interim
scopecolumn) are migrated in placeon first use, carrying existing counters to
scope=''.Guardrails:
{field}token whose value is missing at create time would render to an emptyprefix and collapse the record into the wrong counter scope. Both the SQL driver
and the engine fallback now refuse to generate and throw a clear error naming the
empty field (shared
missingFieldValueshelper).@objectstack/cli compile).autonumberformats arechecked against the object's fields: a
{field}token naming a non-existentfield (or the autonumber field itself) fails the build; a token naming an
optional field emits an advisory warning to mark it
required: true.key_hashshape, fixed-prefix sequences keep working via the legacy key and a per-scope
write raises an actionable error instead of corrupting counters.
{field}scopes are supported (e.g. a long{plan_no}): the non-indexedscopecolumn and hashed key remove the old varchar/PK length ceiling.Notes on inherent semantics (documented, not bugs):
same prefix string (e.g.
{a}{b}for('AB','C')and('A','BC')) they alsorender the same visible number, so they share one counter to stay unique — the
remedy for genuinely-distinct groups is an unambiguous format (a delimiter
literal between variable tokens).
{000}→1000), it never wraps — matching mainstream autonumber semantics.fd2e1a2: Add
@objectstack/verify— boot any ObjectStack app in-process and verify it through the real HTTP stack: auto-derived CRUD round-trip fidelity (runCrudVerification) plus the cross-owner RLS invariant (runRlsProofs, "you can't write what you can't read"). Also adds anobjectstack verifyCLI command that runs these proofs against an app config and exits non-zero on real failures.Extracted from the internal dogfood regression gate so third-party and template authors can run the same runtime proofs against their own apps. The private
@objectstack/dogfoodpackage now consumes this library for its golden regression tests.Patch Changes
@objectstack/objectql@9.11.0
Minor Changes
36138c7: feat(autonumber): date, {field} and per-scope counter reset for autonumber formats
autonumberFormatpreviously only understood a single{0000}sequence slot —everything else was a fixed literal prefix on one global counter. Real MES/eHR
record numbers need three more token classes, so the format is now tokenized by a
shared pure renderer in
@objectstack/spec(parseAutonumberFormat/renderAutonumber) that the engine fallback and the SQL driver both call, so theyemit byte-identical numbers (DB-native autonumber sequence (multi-instance correctness) #1603 parity):
{YYYY}{YY}{MM}{DD}{YYYYMMDD}resolve the calendarday in the request's business timezone (
ExecutionContext.timezone, ADR-0053;UTC fallback), threaded through the new
DriverOptions.timezone.{field}interpolation —{section}{island_zone}{000}substitutes recordfield values into the prefix.
the sequence slot, so
AD{YYYYMMDD}{0000}resets daily,{section}{island_zone}{000}numbers per group, and
{plan_no}{000}numbers per parent — all from onemechanism, no separate reset config.
Fixed-prefix formats like
CASE-{0000}render an empty scope and keep their singleglobal counter, so existing sequences are unchanged. The persistent
_objectstack_sequencestable is keyed by akey_hash(SHA-256 ofobject, tenant_id, field, scope) — a single 64-char primary key that keys everydialect uniformly, stays within MySQL's utf8mb4 index-length limit (four raw
columns would not), and lets
scopebe a generous non-indexed column. Deploymentswith an older table (3-column, or an interim
scopecolumn) are migrated in placeon first use, carrying existing counters to
scope=''.Guardrails:
{field}token whose value is missing at create time would render to an emptyprefix and collapse the record into the wrong counter scope. Both the SQL driver
and the engine fallback now refuse to generate and throw a clear error naming the
empty field (shared
missingFieldValueshelper).@objectstack/cli compile).autonumberformats arechecked against the object's fields: a
{field}token naming a non-existentfield (or the autonumber field itself) fails the build; a token naming an
optional field emits an advisory warning to mark it
required: true.key_hashshape, fixed-prefix sequences keep working via the legacy key and a per-scope
write raises an actionable error instead of corrupting counters.
{field}scopes are supported (e.g. a long{plan_no}): the non-indexedscopecolumn and hashed key remove the old varchar/PK length ceiling.Notes on inherent semantics (documented, not bugs):
same prefix string (e.g.
{a}{b}for('AB','C')and('A','BC')) they alsorender the same visible number, so they share one counter to stay unique — the
remedy for genuinely-distinct groups is an unambiguous format (a delimiter
literal between variable tokens).
{000}→1000), it never wraps — matching mainstream autonumber semantics.Patch Changes
@objectstack/driver-sql@9.11.0
Minor Changes
36138c7: feat(autonumber): date, {field} and per-scope counter reset for autonumber formats
autonumberFormatpreviously only understood a single{0000}sequence slot —everything else was a fixed literal prefix on one global counter. Real MES/eHR
record numbers need three more token classes, so the format is now tokenized by a
shared pure renderer in
@objectstack/spec(parseAutonumberFormat/renderAutonumber) that the engine fallback and the SQL driver both call, so theyemit byte-identical numbers (DB-native autonumber sequence (multi-instance correctness) #1603 parity):
{YYYY}{YY}{MM}{DD}{YYYYMMDD}resolve the calendarday in the request's business timezone (
ExecutionContext.timezone, ADR-0053;UTC fallback), threaded through the new
DriverOptions.timezone.{field}interpolation —{section}{island_zone}{000}substitutes recordfield values into the prefix.
the sequence slot, so
AD{YYYYMMDD}{0000}resets daily,{section}{island_zone}{000}numbers per group, and
{plan_no}{000}numbers per parent — all from onemechanism, no separate reset config.
Fixed-prefix formats like
CASE-{0000}render an empty scope and keep their singleglobal counter, so existing sequences are unchanged. The persistent
_objectstack_sequencestable is keyed by akey_hash(SHA-256 ofobject, tenant_id, field, scope) — a single 64-char primary key that keys everydialect uniformly, stays within MySQL's utf8mb4 index-length limit (four raw
columns would not), and lets
scopebe a generous non-indexed column. Deploymentswith an older table (3-column, or an interim
scopecolumn) are migrated in placeon first use, carrying existing counters to
scope=''.Guardrails:
{field}token whose value is missing at create time would render to an emptyprefix and collapse the record into the wrong counter scope. Both the SQL driver
and the engine fallback now refuse to generate and throw a clear error naming the
empty field (shared
missingFieldValueshelper).@objectstack/cli compile).autonumberformats arechecked against the object's fields: a
{field}token naming a non-existentfield (or the autonumber field itself) fails the build; a token naming an
optional field emits an advisory warning to mark it
required: true.key_hashshape, fixed-prefix sequences keep working via the legacy key and a per-scope
write raises an actionable error instead of corrupting counters.
{field}scopes are supported (e.g. a long{plan_no}): the non-indexedscopecolumn and hashed key remove the old varchar/PK length ceiling.Notes on inherent semantics (documented, not bugs):
same prefix string (e.g.
{a}{b}for('AB','C')and('A','BC')) they alsorender the same visible number, so they share one counter to stay unique — the
remedy for genuinely-distinct groups is an unambiguous format (a delimiter
literal between variable tokens).
{000}→1000), it never wraps — matching mainstream autonumber semantics.Patch Changes
@objectstack/plugin-security@9.11.0
Minor Changes
4c213c2: Master-detail "controlled by parent" permissions (ADR-0055).
A detail object can now declare
sharingModel: 'controlled_by_parent': its read/write access is derived from its master record, with no authored RLS.@objectstack/spec:controlled_by_parentadded to the authorableobject.sharingModelenum.@objectstack/plugin-security: reads injectmasterFK IN (accessible master ids)(resolved from the master's own RLS, reusing the existing filter machinery — zero RLS-compiler changes); by-id writes (insert/update/delete) to a detail now require edit access to its master, closing the fix(security)[P0]: enforce RLS on by-id writes — close member-edits-others'-records hole (#1985) #1994-class by-id hole for derived access.@objectstack/verify: related-record topological synthesis —deriveCrudCasesno longer skips objects with required relations; it builds the object dependency graph, orders it topologically, and threads real target ids, so relationship-dense objects (and the master-detail RLS proof) are verifiable. Honestblockedverdicts remain for required-reference cycles and external/missing targets.v1 limits (per ADR-0055): the accessible-master id set is unbounded (large-tenant scale is a documented future limit), and master-detail chains are single-level (not transitively traversed).
Patch Changes
@objectstack/spec@9.11.0
Minor Changes
36138c7: feat(autonumber): date, {field} and per-scope counter reset for autonumber formats
autonumberFormatpreviously only understood a single{0000}sequence slot —everything else was a fixed literal prefix on one global counter. Real MES/eHR
record numbers need three more token classes, so the format is now tokenized by a
shared pure renderer in
@objectstack/spec(parseAutonumberFormat/renderAutonumber) that the engine fallback and the SQL driver both call, so theyemit byte-identical numbers (DB-native autonumber sequence (multi-instance correctness) #1603 parity):
{YYYY}{YY}{MM}{DD}{YYYYMMDD}resolve the calendarday in the request's business timezone (
ExecutionContext.timezone, ADR-0053;UTC fallback), threaded through the new
DriverOptions.timezone.{field}interpolation —{section}{island_zone}{000}substitutes recordfield values into the prefix.
the sequence slot, so
AD{YYYYMMDD}{0000}resets daily,{section}{island_zone}{000}numbers per group, and
{plan_no}{000}numbers per parent — all from onemechanism, no separate reset config.
Fixed-prefix formats like
CASE-{0000}render an empty scope and keep their singleglobal counter, so existing sequences are unchanged. The persistent
_objectstack_sequencestable is keyed by akey_hash(SHA-256 ofobject, tenant_id, field, scope) — a single 64-char primary key that keys everydialect uniformly, stays within MySQL's utf8mb4 index-length limit (four raw
columns would not), and lets
scopebe a generous non-indexed column. Deploymentswith an older table (3-column, or an interim
scopecolumn) are migrated in placeon first use, carrying existing counters to
scope=''.Guardrails:
{field}token whose value is missing at create time would render to an emptyprefix and collapse the record into the wrong counter scope. Both the SQL driver
and the engine fallback now refuse to generate and throw a clear error naming the
empty field (shared
missingFieldValueshelper).@objectstack/cli compile).autonumberformats arechecked against the object's fields: a
{field}token naming a non-existentfield (or the autonumber field itself) fails the build; a token naming an
optional field emits an advisory warning to mark it
required: true.key_hashshape, fixed-prefix sequences keep working via the legacy key and a per-scope
write raises an actionable error instead of corrupting counters.
{field}scopes are supported (e.g. a long{plan_no}): the non-indexedscopecolumn and hashed key remove the old varchar/PK length ceiling.Notes on inherent semantics (documented, not bugs):
same prefix string (e.g.
{a}{b}for('AB','C')and('A','BC')) they alsorender the same visible number, so they share one counter to stay unique — the
remedy for genuinely-distinct groups is an unambiguous format (a delimiter
literal between variable tokens).
{000}→1000), it never wraps — matching mainstream autonumber semantics.4c213c2: Master-detail "controlled by parent" permissions (ADR-0055).
A detail object can now declare
sharingModel: 'controlled_by_parent': its read/write access is derived from its master record, with no authored RLS.@objectstack/spec:controlled_by_parentadded to the authorableobject.sharingModelenum.@objectstack/plugin-security: reads injectmasterFK IN (accessible master ids)(resolved from the master's own RLS, reusing the existing filter machinery — zero RLS-compiler changes); by-id writes (insert/update/delete) to a detail now require edit access to its master, closing the fix(security)[P0]: enforce RLS on by-id writes — close member-edits-others'-records hole (#1985) #1994-class by-id hole for derived access.@objectstack/verify: related-record topological synthesis —deriveCrudCasesno longer skips objects with required relations; it builds the object dependency graph, orders it topologically, and threads real target ids, so relationship-dense objects (and the master-detail RLS proof) are verifiable. Honestblockedverdicts remain for required-reference cycles and external/missing targets.v1 limits (per ADR-0055): the accessible-master id set is unbounded (large-tenant scale is a documented future limit), and master-detail chains are single-level (not transitively traversed).
Patch Changes
liveledger entry may now carry aproof— a reference (<file>#<proof-id>) to a dogfood test that asserts the property's runtime behavior. A bound high-riskliveproperty must carry a valid proof, validated statically by the liveness gate (the file exists and declares the matching@proof:tag). Four high-risk classes are bound this phase: field types (field.type), RLS (permission.rowLevelSecurity.using), flow nodes (flow.nodes.type), and analytics (dataset.dimensions.dateGranularity). Thedatasetmetadata type is now governed (newliveness/dataset.json). The authoritative high-risk-class list lives inscripts/liveness/proof-registry.mts; seeliveness/README.md.@objectstack/verify@9.11.0
Minor Changes
4c213c2: Master-detail "controlled by parent" permissions (ADR-0055).
A detail object can now declare
sharingModel: 'controlled_by_parent': its read/write access is derived from its master record, with no authored RLS.@objectstack/spec:controlled_by_parentadded to the authorableobject.sharingModelenum.@objectstack/plugin-security: reads injectmasterFK IN (accessible master ids)(resolved from the master's own RLS, reusing the existing filter machinery — zero RLS-compiler changes); by-id writes (insert/update/delete) to a detail now require edit access to its master, closing the fix(security)[P0]: enforce RLS on by-id writes — close member-edits-others'-records hole (#1985) #1994-class by-id hole for derived access.@objectstack/verify: related-record topological synthesis —deriveCrudCasesno longer skips objects with required relations; it builds the object dependency graph, orders it topologically, and threads real target ids, so relationship-dense objects (and the master-detail RLS proof) are verifiable. Honestblockedverdicts remain for required-reference cycles and external/missing targets.v1 limits (per ADR-0055): the accessible-master id set is unbounded (large-tenant scale is a documented future limit), and master-detail chains are single-level (not transitively traversed).
a8e4f3b:
bootStackgains an opt-inautomationboot option. When set, it registers@objectstack/service-automationso the app's authored flows are pulled from the registry andPOST /api/v1/automation/:name/triggeractually executes their nodes against the real in-process stack. This makes flow-node execution + variable wiring verifiable end-to-end (ADR-0054 Phase 2), mirroring the existingmultiTenantopt-in. Default isfalse, so the standard boot stays lean for apps that don't exercise flows.fd2e1a2: Add
@objectstack/verify— boot any ObjectStack app in-process and verify it through the real HTTP stack: auto-derived CRUD round-trip fidelity (runCrudVerification) plus the cross-owner RLS invariant (runRlsProofs, "you can't write what you can't read"). Also adds anobjectstack verifyCLI command that runs these proofs against an app config and exits non-zero on real failures.Extracted from the internal dogfood regression gate so third-party and template authors can run the same runtime proofs against their own apps. The private
@objectstack/dogfoodpackage now consumes this library for its golden regression tests.Patch Changes
@objectstack/express@9.11.0
Patch Changes
@objectstack/fastify@9.11.0
Patch Changes
@objectstack/hono@9.11.0
Patch Changes
@objectstack/nestjs@9.11.0
Patch Changes
@objectstack/nextjs@9.11.0
Patch Changes
@objectstack/nuxt@9.11.0
Patch Changes
@objectstack/sveltekit@9.11.0
Patch Changes
@objectstack/account@9.11.0
Patch Changes
@objectstack/setup@9.11.0
Patch Changes
@objectstack/studio@9.11.0
Patch Changes
@objectstack/client@9.11.0
Patch Changes
@objectstack/client-react@9.11.0
Patch Changes
@objectstack/cloud-connection@9.11.0
Patch Changes
@objectstack/connector-mcp@9.11.0
Patch Changes
@objectstack/connector-openapi@9.11.0
Patch Changes
@objectstack/connector-rest@9.11.0
Patch Changes
@objectstack/connector-slack@9.11.0
Patch Changes
@objectstack/core@9.11.0
Patch Changes
@objectstack/formula@9.11.0
Patch Changes
@objectstack/mcp@9.11.0
Patch Changes
@objectstack/metadata@9.11.0
Patch Changes
@objectstack/metadata-core@9.11.0
Patch Changes
@objectstack/metadata-fs@9.11.0
Patch Changes
@objectstack/observability@9.11.0
Patch Changes
@objectstack/platform-objects@9.11.0
Patch Changes
@objectstack/driver-memory@9.11.0
Patch Changes
@objectstack/driver-mongodb@9.11.0
Patch Changes
@objectstack/driver-sqlite-wasm@9.11.0
Patch Changes
@objectstack/embedder-openai@9.11.0
Patch Changes
@objectstack/knowledge-memory@9.11.0
Patch Changes
@objectstack/knowledge-ragflow@9.11.0
Patch Changes
@objectstack/plugin-approvals@9.11.0
Patch Changes
@objectstack/plugin-audit@9.11.0
Patch Changes
@objectstack/plugin-auth@9.11.0
Patch Changes
@objectstack/plugin-dev@9.11.0
Patch Changes
@objectstack/plugin-email@9.11.0
Patch Changes
@objectstack/plugin-hono-server@9.11.0
Patch Changes
@objectstack/plugin-msw@9.11.0
Patch Changes
@objectstack/plugin-org-scoping@9.11.0
Patch Changes
@objectstack/plugin-reports@9.11.0
Patch Changes
@objectstack/plugin-sharing@9.11.0
Patch Changes
@objectstack/plugin-webhooks@9.11.0
Patch Changes
@objectstack/rest@9.11.0
Patch Changes
@objectstack/runtime@9.11.0
Patch Changes
@objectstack/service-ai@9.11.0
Patch Changes
@objectstack/service-analytics@9.11.0
Patch Changes
@objectstack/service-automation@9.11.0
Patch Changes
@objectstack/service-cache@9.11.0
Patch Changes
@objectstack/service-cluster@9.11.0
Patch Changes
@objectstack/service-cluster-redis@9.11.0
Patch Changes
@objectstack/service-datasource@9.11.0
Patch Changes
@objectstack/service-i18n@9.11.0
Patch Changes
@objectstack/service-job@9.11.0
Patch Changes
@objectstack/service-knowledge@9.11.0
Patch Changes
@objectstack/service-messaging@9.11.0
Patch Changes
@objectstack/service-package@9.11.0
Patch Changes
@objectstack/service-queue@9.11.0
Patch Changes
@objectstack/service-realtime@9.11.0
Patch Changes
@objectstack/service-settings@9.11.0
Patch Changes
@objectstack/service-storage@9.11.0
Patch Changes
@objectstack/trigger-api@9.11.0
Patch Changes
@objectstack/trigger-record-change@9.11.0
Patch Changes
@objectstack/trigger-schedule@9.11.0
Patch Changes
@objectstack/types@9.11.0
Patch Changes
@objectstack/console@9.11.0
create-objectstack@9.11.0
objectstack-vscode@9.11.0
@objectstack/example-crm@4.0.54
Patch Changes
@objectstack/example-showcase@0.1.24
Patch Changes
@objectstack/example-todo@4.0.54
Patch Changes
@objectstack/dogfood@0.0.2
Patch Changes