Skip to content

chore: version packages#1264

Merged
hotlong merged 1 commit into
mainfrom
changeset-release/main
May 22, 2026
Merged

chore: version packages#1264
hotlong merged 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot commented May 22, 2026

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/client@4.2.0

Minor Changes

  • 2869891: feat: Optimistic Concurrency Control (OCC) via If-Match

    Update and Delete requests now accept an optional version token. When supplied,
    the protocol compares it against the record's current updated_at (or version
    column when available) and rejects with 409 CONCURRENT_UPDATE on mismatch,
    preventing silent overwrites when two clients edit the same record.

    Wire formats (opt-in, all server- and client-backward-compatible):

    • PATCH /data/{object}/{id} — supports If-Match: "<token>" header
      or expectedVersion: "<token>" body field (body wins when both present).

    • DELETE /data/{object}/{id} — supports If-Match header or
      ?expectedVersion=... query param.

    • Conflict response: 409 { error, code: 'CONCURRENT_UPDATE', currentVersion, currentRecord } so the client can offer Reload / Overwrite / Cancel UX.

      Behaviour

    • Missing/empty version → no check (legacy callers unaffected).

    • Record not found during the version probe → no check; the downstream write
      produces a normal 404.

    • Object has no updated_at column → no check (explicit opt-out for objects
      without timestamps).

    • Quoted RFC-7232 tokens ("…") are accepted and unquoted before comparison.

      Client

      client.data.update(resource, id, data, { ifMatch }) and
      client.data.delete(resource, id, { ifMatch }) now forward the token as an
      If-Match header.

      Application-level CAS (findOne + compare in protocol.ts) is used in this slice
      to avoid touching every storage driver. A small TOCTOU window remains; for the
      B2B record-editing latencies this protects against, it is more than sufficient.
      Drivers may later be upgraded to atomic WHERE id=? AND updated_at=? writes
      for true CAS without changing the public API.

      Tests: 7 new cases in protocol-data.test.ts cover opt-in, match, mismatch,
      quote-stripping, no-timestamps, empty-token, and the delete path.

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0

@objectstack/objectql@4.2.0

Minor Changes

  • 2869891: feat: Optimistic Concurrency Control (OCC) via If-Match

    Update and Delete requests now accept an optional version token. When supplied,
    the protocol compares it against the record's current updated_at (or version
    column when available) and rejects with 409 CONCURRENT_UPDATE on mismatch,
    preventing silent overwrites when two clients edit the same record.

    Wire formats (opt-in, all server- and client-backward-compatible):

    • PATCH /data/{object}/{id} — supports If-Match: "<token>" header
      or expectedVersion: "<token>" body field (body wins when both present).

    • DELETE /data/{object}/{id} — supports If-Match header or
      ?expectedVersion=... query param.

    • Conflict response: 409 { error, code: 'CONCURRENT_UPDATE', currentVersion, currentRecord } so the client can offer Reload / Overwrite / Cancel UX.

      Behaviour

    • Missing/empty version → no check (legacy callers unaffected).

    • Record not found during the version probe → no check; the downstream write
      produces a normal 404.

    • Object has no updated_at column → no check (explicit opt-out for objects
      without timestamps).

    • Quoted RFC-7232 tokens ("…") are accepted and unquoted before comparison.

      Client

      client.data.update(resource, id, data, { ifMatch }) and
      client.data.delete(resource, id, { ifMatch }) now forward the token as an
      If-Match header.

      Application-level CAS (findOne + compare in protocol.ts) is used in this slice
      to avoid touching every storage driver. A small TOCTOU window remains; for the
      B2B record-editing latencies this protects against, it is more than sufficient.
      Drivers may later be upgraded to atomic WHERE id=? AND updated_at=? writes
      for true CAS without changing the public API.

      Tests: 7 new cases in protocol-data.test.ts cover opt-in, match, mismatch,
      quote-stripping, no-timestamps, empty-token, and the delete path.

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0
    • @objectstack/formula@4.2.0
    • @objectstack/types@4.2.0

@objectstack/rest@4.2.0

Minor Changes

  • 2869891: feat: Optimistic Concurrency Control (OCC) via If-Match

    Update and Delete requests now accept an optional version token. When supplied,
    the protocol compares it against the record's current updated_at (or version
    column when available) and rejects with 409 CONCURRENT_UPDATE on mismatch,
    preventing silent overwrites when two clients edit the same record.

    Wire formats (opt-in, all server- and client-backward-compatible):

    • PATCH /data/{object}/{id} — supports If-Match: "<token>" header
      or expectedVersion: "<token>" body field (body wins when both present).

    • DELETE /data/{object}/{id} — supports If-Match header or
      ?expectedVersion=... query param.

    • Conflict response: 409 { error, code: 'CONCURRENT_UPDATE', currentVersion, currentRecord } so the client can offer Reload / Overwrite / Cancel UX.

      Behaviour

    • Missing/empty version → no check (legacy callers unaffected).

    • Record not found during the version probe → no check; the downstream write
      produces a normal 404.

    • Object has no updated_at column → no check (explicit opt-out for objects
      without timestamps).

    • Quoted RFC-7232 tokens ("…") are accepted and unquoted before comparison.

      Client

      client.data.update(resource, id, data, { ifMatch }) and
      client.data.delete(resource, id, { ifMatch }) now forward the token as an
      If-Match header.

      Application-level CAS (findOne + compare in protocol.ts) is used in this slice
      to avoid touching every storage driver. A small TOCTOU window remains; for the
      B2B record-editing latencies this protects against, it is more than sufficient.
      Drivers may later be upgraded to atomic WHERE id=? AND updated_at=? writes
      for true CAS without changing the public API.

      Tests: 7 new cases in protocol-data.test.ts cover opt-in, match, mismatch,
      quote-stripping, no-timestamps, empty-token, and the delete path.

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0
    • @objectstack/service-package@4.2.0

@objectstack/spec@4.2.0

Minor Changes

  • 2869891: feat: Optimistic Concurrency Control (OCC) via If-Match

    Update and Delete requests now accept an optional version token. When supplied,
    the protocol compares it against the record's current updated_at (or version
    column when available) and rejects with 409 CONCURRENT_UPDATE on mismatch,
    preventing silent overwrites when two clients edit the same record.

    Wire formats (opt-in, all server- and client-backward-compatible):

    • PATCH /data/{object}/{id} — supports If-Match: "<token>" header
      or expectedVersion: "<token>" body field (body wins when both present).

    • DELETE /data/{object}/{id} — supports If-Match header or
      ?expectedVersion=... query param.

    • Conflict response: 409 { error, code: 'CONCURRENT_UPDATE', currentVersion, currentRecord } so the client can offer Reload / Overwrite / Cancel UX.

      Behaviour

    • Missing/empty version → no check (legacy callers unaffected).

    • Record not found during the version probe → no check; the downstream write
      produces a normal 404.

    • Object has no updated_at column → no check (explicit opt-out for objects
      without timestamps).

    • Quoted RFC-7232 tokens ("…") are accepted and unquoted before comparison.

      Client

      client.data.update(resource, id, data, { ifMatch }) and
      client.data.delete(resource, id, { ifMatch }) now forward the token as an
      If-Match header.

      Application-level CAS (findOne + compare in protocol.ts) is used in this slice
      to avoid touching every storage driver. A small TOCTOU window remains; for the
      B2B record-editing latencies this protects against, it is more than sufficient.
      Drivers may later be upgraded to atomic WHERE id=? AND updated_at=? writes
      for true CAS without changing the public API.

      Tests: 7 new cases in protocol-data.test.ts cover opt-in, match, mismatch,
      quote-stripping, no-timestamps, empty-token, and the delete path.

@objectstack/studio@4.2.0

Patch Changes

  • 3a99239: Metadata HMR via SSE — close the agent-edits → preview-refresh loop.

    • @objectstack/metadata: register /api/v1/dev/metadata-events SSE endpoint unconditionally;
      add POST trigger that reloads the artifact and broadcasts a reload event to all listeners.
    • @objectstack/cli (os dev): chokidar-based watch on objectstack.config.ts and src/;
      debounced recompile + POST to the HMR endpoint so the server reloads without restart.
    • @objectstack/studio: useMetadataHmr provider opens an EventSource, exposes a version
      counter; previews include it in their query deps, and a top-bar badge surfaces connection
      state and event counts for diagnostics.
  • bab9bb8: fix

  • 14f5cde: Studio: wire form previews to the real running backend instead of the
    hand-rolled disabled-input mockup.

    • New LiveFormPreview component renders <ObjectForm> from @object-ui/plugin-form
      against the live DataSource, with a Create / Edit / Read-only mode toggle and a
      record picker (top 10 most-recent records via dataSource.find) for Edit mode.
    • New LivePreviewStatusBar footer surfaces a pulsing LIVE indicator with
      the backend base URL and bound object so it is obvious previews are real, not
      mocked.
    • Playground "Form preview" tab now uses LiveFormPreview and correctly unwraps
      the { type, items } envelope returned by client.meta.getItems('view')
      (previously the .map call silently threw, leaving the tab showing
      "No forms yet" even when ten forms existed).
    • MetadataPreview routes both single-spec form views and multi-view docs
      through LiveFormPreview; non-form previews now show the LIVE status bar.
    • Object detail page Forms/Views tabs now also detect multi-view documents
      (where object is nested under list.data.object / form.data.object).
    • Removed legacy mock FormPreview component.
  • f289927: Studio: fix Object Hub Views / Forms / Hooks tabs all showing (0).

    The $package.objects.$name route was passing the URL slug (e.g. crm)
    as packageId to client.meta.getItems('view', { packageId }), but the
    metadata server filter requires the full package id (e.g.
    com.example.crm). The server-side filter never matched, so the tabs
    silently fell back to empty arrays.

    Aligned the route with $package.metadata.$type.$name: resolve the slug via
    usePackages(packageId) and pass selectedPackage.manifest.id to the API
    (falling back to the raw slug until the package list loads).

  • cefcf64: Live preview for view/page/dashboard/report metadata.

    Adds a built-in objectstack.view-preview plugin that registers a
    Live Preview viewer (priority 50, beating the default JSON inspector)
    for view, page, report, and dashboard types. Opening any of
    these from the Views & Apps list now renders a real @object-ui
    preview (grid / kanban / calendar / form / detail) instead of a JSON
    tree. HMR is wired — source edits re-fetch the spec and remount the
    preview without a full page reload.

  • Updated dependencies [3a99239]

  • Updated dependencies [2869891]

    • @objectstack/metadata@4.2.0
    • @objectstack/spec@4.2.0
    • @objectstack/objectql@4.2.0
    • @objectstack/client@4.2.0
    • @objectstack/runtime@4.2.0
    • @objectstack/client-react@4.2.0
    • @objectstack/platform-objects@4.2.0
    • @objectstack/driver-memory@4.2.0
    • @objectstack/plugin-msw@4.2.0
    • @objectstack/service-ai@4.2.0
    • @objectstack/service-analytics@4.2.0
    • @objectstack/service-automation@4.2.0
    • @objectstack/service-feed@4.2.0

@objectstack/hono@4.2.0

Patch Changes

  • @objectstack/plugin-hono-server@4.2.0

@objectstack/cli@4.2.0

Patch Changes

  • 3a99239: Metadata HMR via SSE — close the agent-edits → preview-refresh loop.

    • @objectstack/metadata: register /api/v1/dev/metadata-events SSE endpoint unconditionally;
      add POST trigger that reloads the artifact and broadcasts a reload event to all listeners.
    • @objectstack/cli (os dev): chokidar-based watch on objectstack.config.ts and src/;
      debounced recompile + POST to the HMR endpoint so the server reloads without restart.
    • @objectstack/studio: useMetadataHmr provider opens an EventSource, exposes a version
      counter; previews include it in their query deps, and a top-bar badge surfaces connection
      state and event counts for diagnostics.
  • Updated dependencies [2869891]

    • @objectstack/spec@4.2.0
    • @objectstack/objectql@4.2.0
    • @objectstack/rest@4.2.0
    • @objectstack/client@4.2.0
    • @objectstack/runtime@4.2.0
    • @objectstack/core@4.2.0
    • @objectstack/driver-memory@4.2.0
    • @objectstack/driver-mongodb@4.2.0
    • @objectstack/driver-sql@4.2.0
    • @objectstack/driver-turso@4.2.0
    • @objectstack/plugin-approvals@4.2.0
    • @objectstack/plugin-audit@4.2.0
    • @objectstack/plugin-auth@4.2.0
    • @objectstack/plugin-email@4.2.0
    • @objectstack/plugin-hono-server@4.2.0
    • @objectstack/plugin-mcp-server@4.2.0
    • @objectstack/plugin-reports@4.2.0
    • @objectstack/plugin-security@4.2.0
    • @objectstack/plugin-sharing@4.2.0
    • @objectstack/service-ai@4.2.0
    • @objectstack/service-analytics@4.2.0
    • @objectstack/service-automation@4.2.0
    • @objectstack/service-cache@4.2.0
    • @objectstack/service-feed@4.2.0
    • @objectstack/service-job@4.2.0
    • @objectstack/service-package@4.2.0
    • @objectstack/service-queue@4.2.0
    • @objectstack/service-realtime@4.2.0
    • @objectstack/service-settings@4.2.0
    • @objectstack/service-storage@4.2.0

@objectstack/client-react@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/client@4.2.0
    • @objectstack/core@4.2.0

@objectstack/core@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0

@objectstack/formula@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0

@objectstack/metadata@4.2.0

Patch Changes

  • 3a99239: Metadata HMR via SSE — close the agent-edits → preview-refresh loop.

    • @objectstack/metadata: register /api/v1/dev/metadata-events SSE endpoint unconditionally;
      add POST trigger that reloads the artifact and broadcasts a reload event to all listeners.
    • @objectstack/cli (os dev): chokidar-based watch on objectstack.config.ts and src/;
      debounced recompile + POST to the HMR endpoint so the server reloads without restart.
    • @objectstack/studio: useMetadataHmr provider opens an EventSource, exposes a version
      counter; previews include it in their query deps, and a top-bar badge surfaces connection
      state and event counts for diagnostics.
  • Updated dependencies [2869891]

    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0
    • @objectstack/platform-objects@4.2.0
    • @objectstack/types@4.2.0

@objectstack/platform-objects@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0

@objectstack/driver-memory@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0

@objectstack/driver-mongodb@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0

@objectstack/driver-sql@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0

@objectstack/driver-turso@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0
    • @objectstack/driver-sql@4.2.0

@objectstack/plugin-approvals@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0
    • @objectstack/formula@4.2.0
    • @objectstack/platform-objects@4.2.0

@objectstack/plugin-audit@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0
    • @objectstack/platform-objects@4.2.0

@objectstack/plugin-auth@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0
    • @objectstack/platform-objects@4.2.0

@objectstack/plugin-dev@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0

@objectstack/plugin-email@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0
    • @objectstack/platform-objects@4.2.0

@objectstack/plugin-hono-server@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0

@objectstack/plugin-mcp-server@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0

@objectstack/plugin-msw@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/objectql@4.2.0
    • @objectstack/core@4.2.0
    • @objectstack/types@4.2.0

@objectstack/plugin-reports@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0
    • @objectstack/platform-objects@4.2.0

@objectstack/plugin-security@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0
    • @objectstack/platform-objects@4.2.0

@objectstack/plugin-sharing@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/objectql@4.2.0
    • @objectstack/core@4.2.0
    • @objectstack/platform-objects@4.2.0

@objectstack/plugin-webhooks@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0

@objectstack/runtime@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/rest@4.2.0
    • @objectstack/core@4.2.0
    • @objectstack/formula@4.2.0
    • @objectstack/plugin-auth@4.2.0
    • @objectstack/plugin-security@4.2.0
    • @objectstack/service-i18n@4.2.0
    • @objectstack/types@4.2.0

@objectstack/service-ai@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0

@objectstack/service-analytics@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0

@objectstack/service-automation@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0
    • @objectstack/formula@4.2.0

@objectstack/service-cache@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0

@objectstack/service-feed@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0

@objectstack/service-i18n@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0

@objectstack/service-job@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0
    • @objectstack/platform-objects@4.2.0

@objectstack/service-package@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0

@objectstack/service-queue@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0
    • @objectstack/platform-objects@4.2.0

@objectstack/service-realtime@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0
    • @objectstack/platform-objects@4.2.0

@objectstack/service-settings@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0
    • @objectstack/platform-objects@4.2.0

@objectstack/service-storage@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/core@4.2.0

@objectstack/types@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0

@objectstack/express@4.2.0

@objectstack/fastify@4.2.0

@objectstack/nestjs@4.2.0

@objectstack/nextjs@4.2.0

@objectstack/nuxt@4.2.0

@objectstack/sveltekit@4.2.0

create-objectstack@4.2.0

objectstack-vscode@4.2.0

@objectstack/console@4.2.0

Minor Changes

@objectstack/account@4.2.0

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/client@4.2.0
    • @objectstack/client-react@4.2.0

@objectstack/example-crm@4.0.8

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/runtime@4.2.0
    • @objectstack/driver-mongodb@4.2.0
    • @objectstack/service-analytics@4.2.0
    • @objectstack/service-automation@4.2.0

@example/app-todo@4.0.8

Patch Changes

  • Updated dependencies [2869891]
    • @objectstack/spec@4.2.0
    • @objectstack/objectql@4.2.0
    • @objectstack/client@4.2.0
    • @objectstack/runtime@4.2.0
    • @objectstack/driver-memory@4.2.0

@objectstack/docs@4.2.0

@vercel
Copy link
Copy Markdown

vercel Bot commented May 22, 2026

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

Project Deployment Actions Updated (UTC)
spec Ready Ready Preview, Comment May 22, 2026 8:36am

Request Review

@github-actions github-actions Bot force-pushed the changeset-release/main branch from bef2042 to 8186ca1 Compare May 22, 2026 08:29
@hotlong hotlong merged commit bcdae40 into main May 22, 2026
2 checks passed
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