diff --git a/.changeset/metadata-hmr.md b/.changeset/metadata-hmr.md deleted file mode 100644 index 53a00d310..000000000 --- a/.changeset/metadata-hmr.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -"@objectstack/metadata": patch -"@objectstack/studio": patch -"@objectstack/cli": patch ---- - -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. diff --git a/.changeset/occ-if-match.md b/.changeset/occ-if-match.md deleted file mode 100644 index 6878c747b..000000000 --- a/.changeset/occ-if-match.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -'@objectstack/spec': minor -'@objectstack/objectql': minor -'@objectstack/rest': minor -'@objectstack/client': minor ---- - -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: ""` header - *or* `expectedVersion: ""` 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. diff --git a/.changeset/slimy-corners-yell.md b/.changeset/slimy-corners-yell.md deleted file mode 100644 index ed676730d..000000000 --- a/.changeset/slimy-corners-yell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@objectstack/console": minor ---- - -upgrade objectui diff --git a/.changeset/solid-rabbits-matter.md b/.changeset/solid-rabbits-matter.md deleted file mode 100644 index a93a2f8ca..000000000 --- a/.changeset/solid-rabbits-matter.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@objectstack/studio": patch ---- - -fix diff --git a/.changeset/studio-live-form-preview.md b/.changeset/studio-live-form-preview.md deleted file mode 100644 index 9171b0ac5..000000000 --- a/.changeset/studio-live-form-preview.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -'@objectstack/studio': patch ---- - -Studio: wire form previews to the **real running backend** instead of the -hand-rolled disabled-input mockup. - -- New `LiveFormPreview` component renders `` 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. diff --git a/.changeset/studio-object-hub-package-id.md b/.changeset/studio-object-hub-package-id.md deleted file mode 100644 index 066cf4ba0..000000000 --- a/.changeset/studio-object-hub-package-id.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -'@objectstack/studio': patch ---- - -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). diff --git a/.changeset/view-live-preview.md b/.changeset/view-live-preview.md deleted file mode 100644 index 9e951cef4..000000000 --- a/.changeset/view-live-preview.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@objectstack/studio": patch ---- - -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. diff --git a/apps/account/CHANGELOG.md b/apps/account/CHANGELOG.md index d81c860a7..cf610c64f 100644 --- a/apps/account/CHANGELOG.md +++ b/apps/account/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 + ## 4.1.1 ### Patch Changes diff --git a/apps/account/package.json b/apps/account/package.json index 8bafdd72f..64b3e743c 100644 --- a/apps/account/package.json +++ b/apps/account/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/account", - "version": "4.1.1", + "version": "4.2.0", "description": "ObjectStack Account - End-user account & organization self-service portal", "license": "Apache-2.0", "private": true, diff --git a/apps/console/CHANGELOG.md b/apps/console/CHANGELOG.md index 42b61f0d9..c2afd1b2d 100644 --- a/apps/console/CHANGELOG.md +++ b/apps/console/CHANGELOG.md @@ -1,3 +1,9 @@ # @objectstack/console +## 4.2.0 + +### Minor Changes + +- f197c7e: upgrade objectui + ## 4.1.1 diff --git a/apps/console/package.json b/apps/console/package.json index 04d70b358..fd43b1d95 100644 --- a/apps/console/package.json +++ b/apps/console/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/console", - "version": "4.1.1", + "version": "4.2.0", "private": true, "type": "module", "description": "ObjectStack Console - opinionated, fork-ready runtime console built on @object-ui/app-shell with the full plugin set wired up.", diff --git a/apps/docs/CHANGELOG.md b/apps/docs/CHANGELOG.md index 9d60f4f4d..b3f0c6229 100644 --- a/apps/docs/CHANGELOG.md +++ b/apps/docs/CHANGELOG.md @@ -1,5 +1,7 @@ # @objectstack/docs +## 4.2.0 + ## 4.1.1 ## 4.1.0 diff --git a/apps/docs/package.json b/apps/docs/package.json index 6a8acd847..3f98a6670 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/docs", - "version": "4.1.1", + "version": "4.2.0", "private": true, "description": "ObjectStack Protocol Documentation Site", "license": "Apache-2.0", diff --git a/apps/studio/CHANGELOG.md b/apps/studio/CHANGELOG.md index cc77e0e3c..72104a33a 100644 --- a/apps/studio/CHANGELOG.md +++ b/apps/studio/CHANGELOG.md @@ -1,5 +1,77 @@ # @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 `` 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 + ## 4.1.1 ### Patch Changes diff --git a/apps/studio/package.json b/apps/studio/package.json index e51093977..b8f972263 100644 --- a/apps/studio/package.json +++ b/apps/studio/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/studio", - "version": "4.1.1", + "version": "4.2.0", "description": "ObjectStack Studio - A metadata-driven admin interface for managing data and configuration", "license": "Apache-2.0", "type": "module", diff --git a/examples/app-crm/CHANGELOG.md b/examples/app-crm/CHANGELOG.md index 2e5fb1c2b..2f208d967 100644 --- a/examples/app-crm/CHANGELOG.md +++ b/examples/app-crm/CHANGELOG.md @@ -1,5 +1,16 @@ # @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 + ## 4.0.7 ### Patch Changes diff --git a/examples/app-crm/package.json b/examples/app-crm/package.json index e978eeab2..8b176aab0 100644 --- a/examples/app-crm/package.json +++ b/examples/app-crm/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/example-crm", - "version": "4.0.7", + "version": "4.0.8", "description": "Example CRM implementation using ObjectStack Protocol", "license": "Apache-2.0", "private": true, diff --git a/examples/app-todo/CHANGELOG.md b/examples/app-todo/CHANGELOG.md index 3e9e6ad7b..7f014ad92 100644 --- a/examples/app-todo/CHANGELOG.md +++ b/examples/app-todo/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/example-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 + ## 4.0.7 ### Patch Changes diff --git a/examples/app-todo/package.json b/examples/app-todo/package.json index a24e2ea38..a795d7b56 100644 --- a/examples/app-todo/package.json +++ b/examples/app-todo/package.json @@ -1,6 +1,6 @@ { "name": "@example/app-todo", - "version": "4.0.7", + "version": "4.0.8", "description": "Example Todo App using ObjectStack Protocol", "license": "Apache-2.0", "private": true, diff --git a/packages/adapters/express/CHANGELOG.md b/packages/adapters/express/CHANGELOG.md index 85c308eb8..dff46eb38 100644 --- a/packages/adapters/express/CHANGELOG.md +++ b/packages/adapters/express/CHANGELOG.md @@ -1,5 +1,7 @@ # @objectstack/express +## 4.2.0 + ## 4.1.1 ## 4.1.0 diff --git a/packages/adapters/express/package.json b/packages/adapters/express/package.json index 96f2f1b66..94c7a684f 100644 --- a/packages/adapters/express/package.json +++ b/packages/adapters/express/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/express", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/adapters/fastify/CHANGELOG.md b/packages/adapters/fastify/CHANGELOG.md index 0c022231c..1d45ddb22 100644 --- a/packages/adapters/fastify/CHANGELOG.md +++ b/packages/adapters/fastify/CHANGELOG.md @@ -1,5 +1,7 @@ # @objectstack/fastify +## 4.2.0 + ## 4.1.1 ## 4.1.0 diff --git a/packages/adapters/fastify/package.json b/packages/adapters/fastify/package.json index e96f01d44..908b4f6ac 100644 --- a/packages/adapters/fastify/package.json +++ b/packages/adapters/fastify/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/fastify", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/adapters/hono/CHANGELOG.md b/packages/adapters/hono/CHANGELOG.md index 200f1d271..bf4c40e6d 100644 --- a/packages/adapters/hono/CHANGELOG.md +++ b/packages/adapters/hono/CHANGELOG.md @@ -1,5 +1,11 @@ # @objectstack/hono +## 4.2.0 + +### Patch Changes + +- @objectstack/plugin-hono-server@4.2.0 + ## 4.1.1 ### Patch Changes diff --git a/packages/adapters/hono/package.json b/packages/adapters/hono/package.json index cb9479de8..1b26defd3 100644 --- a/packages/adapters/hono/package.json +++ b/packages/adapters/hono/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/hono", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/adapters/nestjs/CHANGELOG.md b/packages/adapters/nestjs/CHANGELOG.md index e816632cf..0789364a2 100644 --- a/packages/adapters/nestjs/CHANGELOG.md +++ b/packages/adapters/nestjs/CHANGELOG.md @@ -1,5 +1,7 @@ # @objectstack/nestjs +## 4.2.0 + ## 4.1.1 ## 4.1.0 diff --git a/packages/adapters/nestjs/package.json b/packages/adapters/nestjs/package.json index 03d5c377a..5d30bafb5 100644 --- a/packages/adapters/nestjs/package.json +++ b/packages/adapters/nestjs/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/nestjs", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/adapters/nextjs/CHANGELOG.md b/packages/adapters/nextjs/CHANGELOG.md index 4a3c0a1a2..57584fd4c 100644 --- a/packages/adapters/nextjs/CHANGELOG.md +++ b/packages/adapters/nextjs/CHANGELOG.md @@ -1,5 +1,7 @@ # @objectstack/nextjs +## 4.2.0 + ## 4.1.1 ## 4.1.0 diff --git a/packages/adapters/nextjs/package.json b/packages/adapters/nextjs/package.json index 49ab026cb..967c62b21 100644 --- a/packages/adapters/nextjs/package.json +++ b/packages/adapters/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/nextjs", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/adapters/nuxt/CHANGELOG.md b/packages/adapters/nuxt/CHANGELOG.md index c27ce0132..4ae3f9ef3 100644 --- a/packages/adapters/nuxt/CHANGELOG.md +++ b/packages/adapters/nuxt/CHANGELOG.md @@ -1,5 +1,7 @@ # @objectstack/nuxt +## 4.2.0 + ## 4.1.1 ## 4.1.0 diff --git a/packages/adapters/nuxt/package.json b/packages/adapters/nuxt/package.json index 4d86c3bf3..d41510060 100644 --- a/packages/adapters/nuxt/package.json +++ b/packages/adapters/nuxt/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/nuxt", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/adapters/sveltekit/CHANGELOG.md b/packages/adapters/sveltekit/CHANGELOG.md index 8cfedafaa..2b21c88d3 100644 --- a/packages/adapters/sveltekit/CHANGELOG.md +++ b/packages/adapters/sveltekit/CHANGELOG.md @@ -1,5 +1,7 @@ # @objectstack/sveltekit +## 4.2.0 + ## 4.1.1 ## 4.1.0 diff --git a/packages/adapters/sveltekit/package.json b/packages/adapters/sveltekit/package.json index 69168d11e..f165f91b8 100644 --- a/packages/adapters/sveltekit/package.json +++ b/packages/adapters/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/sveltekit", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 00b9eecfc..30ea5298d 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,51 @@ # @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 + ## 4.1.1 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 1778aa0d2..b961f6109 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/cli", - "version": "4.1.1", + "version": "4.2.0", "description": "Command Line Interface for ObjectStack Protocol", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/client-react/CHANGELOG.md b/packages/client-react/CHANGELOG.md index 485e6b954..8488e191e 100644 --- a/packages/client-react/CHANGELOG.md +++ b/packages/client-react/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 + ## 4.1.1 ### Patch Changes diff --git a/packages/client-react/package.json b/packages/client-react/package.json index b310ff496..c6f472dc6 100644 --- a/packages/client-react/package.json +++ b/packages/client-react/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/client-react", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "React hooks for ObjectStack Client SDK", "main": "dist/index.js", diff --git a/packages/client/CHANGELOG.md b/packages/client/CHANGELOG.md index 11a22fd77..5b35c5ced 100644 --- a/packages/client/CHANGELOG.md +++ b/packages/client/CHANGELOG.md @@ -1,5 +1,55 @@ # @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: ""` header + _or_ `expectedVersion: ""` 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 + ## 4.1.1 ### Patch Changes diff --git a/packages/client/package.json b/packages/client/package.json index a9cc91096..0fdadaf4f 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/client", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Official Client SDK for ObjectStack Protocol", "main": "dist/index.js", diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 54c67a26a..63d6d0894 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,12 @@ # @objectstack/core +## 4.2.0 + +### Patch Changes + +- Updated dependencies [2869891] + - @objectstack/spec@4.2.0 + ## 4.1.1 ### Patch Changes diff --git a/packages/core/package.json b/packages/core/package.json index 8bca576ce..97d463675 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/core", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Microkernel Core for ObjectStack", "type": "module", diff --git a/packages/create-objectstack/CHANGELOG.md b/packages/create-objectstack/CHANGELOG.md index a406f8a99..ee9eda892 100644 --- a/packages/create-objectstack/CHANGELOG.md +++ b/packages/create-objectstack/CHANGELOG.md @@ -1,5 +1,7 @@ # create-objectstack +## 4.2.0 + ## 4.1.1 ## 4.1.0 diff --git a/packages/create-objectstack/package.json b/packages/create-objectstack/package.json index 6041d0401..10d6c30f1 100644 --- a/packages/create-objectstack/package.json +++ b/packages/create-objectstack/package.json @@ -1,6 +1,6 @@ { "name": "create-objectstack", - "version": "4.1.1", + "version": "4.2.0", "description": "Create a new ObjectStack project — npx create-objectstack", "bin": { "create-objectstack": "./bin/create-objectstack.js" diff --git a/packages/formula/CHANGELOG.md b/packages/formula/CHANGELOG.md index ebee20cba..24fe3b36b 100644 --- a/packages/formula/CHANGELOG.md +++ b/packages/formula/CHANGELOG.md @@ -1,5 +1,12 @@ # @objectstack/formula +## 4.2.0 + +### Patch Changes + +- Updated dependencies [2869891] + - @objectstack/spec@4.2.0 + ## 4.1.1 ### Patch Changes diff --git a/packages/formula/package.json b/packages/formula/package.json index e3808f376..5ca14ed97 100644 --- a/packages/formula/package.json +++ b/packages/formula/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/formula", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "ObjectStack canonical expression engine — CEL (cel-js) + ObjectStack stdlib + dialect registry", "main": "dist/index.js", diff --git a/packages/metadata/CHANGELOG.md b/packages/metadata/CHANGELOG.md index 01f7d20b3..9e5ab4f23 100644 --- a/packages/metadata/CHANGELOG.md +++ b/packages/metadata/CHANGELOG.md @@ -1,5 +1,25 @@ # @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 + ## 4.1.1 ### Patch Changes diff --git a/packages/metadata/package.json b/packages/metadata/package.json index b96ced76a..0f79fd56a 100644 --- a/packages/metadata/package.json +++ b/packages/metadata/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Metadata loading, saving, and persistence for ObjectStack", "type": "module", diff --git a/packages/objectql/CHANGELOG.md b/packages/objectql/CHANGELOG.md index a45ca6b7e..81ec86d9f 100644 --- a/packages/objectql/CHANGELOG.md +++ b/packages/objectql/CHANGELOG.md @@ -1,5 +1,57 @@ # @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: ""` header + _or_ `expectedVersion: ""` 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 + ## 4.1.1 ### Patch Changes diff --git a/packages/objectql/package.json b/packages/objectql/package.json index 7db340fa1..f7a472b8b 100644 --- a/packages/objectql/package.json +++ b/packages/objectql/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/objectql", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Isomorphic ObjectQL Engine for ObjectStack", "main": "dist/index.js", diff --git a/packages/platform-objects/CHANGELOG.md b/packages/platform-objects/CHANGELOG.md index caea0e0bb..39db9339d 100644 --- a/packages/platform-objects/CHANGELOG.md +++ b/packages/platform-objects/CHANGELOG.md @@ -1,5 +1,12 @@ # @objectstack/platform-objects +## 4.2.0 + +### Patch Changes + +- Updated dependencies [2869891] + - @objectstack/spec@4.2.0 + ## 4.1.1 ### Patch Changes diff --git a/packages/platform-objects/package.json b/packages/platform-objects/package.json index fbadd45bb..81235c853 100644 --- a/packages/platform-objects/package.json +++ b/packages/platform-objects/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/platform-objects", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Core platform object schemas for ObjectStack — identity, security, audit, tenant, and metadata objects", "main": "dist/index.js", diff --git a/packages/plugins/driver-memory/CHANGELOG.md b/packages/plugins/driver-memory/CHANGELOG.md index 05b6fac64..2eb7ae4dd 100644 --- a/packages/plugins/driver-memory/CHANGELOG.md +++ b/packages/plugins/driver-memory/CHANGELOG.md @@ -1,5 +1,13 @@ # @objectstack/driver-memory +## 4.2.0 + +### Patch Changes + +- Updated dependencies [2869891] + - @objectstack/spec@4.2.0 + - @objectstack/core@4.2.0 + ## 4.1.1 ### Patch Changes diff --git a/packages/plugins/driver-memory/package.json b/packages/plugins/driver-memory/package.json index bb6f9197b..a5466cb26 100644 --- a/packages/plugins/driver-memory/package.json +++ b/packages/plugins/driver-memory/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-memory", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "In-Memory Driver for ObjectStack (Reference Implementation)", "main": "dist/index.js", diff --git a/packages/plugins/driver-mongodb/CHANGELOG.md b/packages/plugins/driver-mongodb/CHANGELOG.md index d0ffb4e51..dadcfff4b 100644 --- a/packages/plugins/driver-mongodb/CHANGELOG.md +++ b/packages/plugins/driver-mongodb/CHANGELOG.md @@ -1,5 +1,13 @@ # @objectstack/driver-mongodb +## 4.2.0 + +### Patch Changes + +- Updated dependencies [2869891] + - @objectstack/spec@4.2.0 + - @objectstack/core@4.2.0 + ## 4.1.1 ### Patch Changes diff --git a/packages/plugins/driver-mongodb/package.json b/packages/plugins/driver-mongodb/package.json index 81bfb46aa..f916ff59a 100644 --- a/packages/plugins/driver-mongodb/package.json +++ b/packages/plugins/driver-mongodb/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-mongodb", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "MongoDB Driver for ObjectStack - Native document database driver via official mongodb client", "main": "dist/index.js", diff --git a/packages/plugins/driver-sql/CHANGELOG.md b/packages/plugins/driver-sql/CHANGELOG.md index d5bf795cc..4da6554e9 100644 --- a/packages/plugins/driver-sql/CHANGELOG.md +++ b/packages/plugins/driver-sql/CHANGELOG.md @@ -1,5 +1,13 @@ # @objectstack/driver-sql +## 4.2.0 + +### Patch Changes + +- Updated dependencies [2869891] + - @objectstack/spec@4.2.0 + - @objectstack/core@4.2.0 + ## 4.1.1 ### Patch Changes diff --git a/packages/plugins/driver-sql/package.json b/packages/plugins/driver-sql/package.json index 7e52fa75e..94dce8870 100644 --- a/packages/plugins/driver-sql/package.json +++ b/packages/plugins/driver-sql/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-sql", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "SQL Driver for ObjectStack - Supports PostgreSQL, MySQL, SQLite via Knex", "main": "dist/index.js", diff --git a/packages/plugins/driver-turso/CHANGELOG.md b/packages/plugins/driver-turso/CHANGELOG.md index a189437c6..923ea1372 100644 --- a/packages/plugins/driver-turso/CHANGELOG.md +++ b/packages/plugins/driver-turso/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 + ## 4.1.1 ### Patch Changes diff --git a/packages/plugins/driver-turso/package.json b/packages/plugins/driver-turso/package.json index 1ac447f52..8aaf23f22 100644 --- a/packages/plugins/driver-turso/package.json +++ b/packages/plugins/driver-turso/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-turso", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Turso/libSQL Driver for ObjectStack — Edge-first SQLite with embedded replicas and multi-tenancy", "keywords": [ diff --git a/packages/plugins/plugin-approvals/CHANGELOG.md b/packages/plugins/plugin-approvals/CHANGELOG.md index ce9fbe05d..b38b3af0c 100644 --- a/packages/plugins/plugin-approvals/CHANGELOG.md +++ b/packages/plugins/plugin-approvals/CHANGELOG.md @@ -1,5 +1,15 @@ # @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 + ## 4.1.1 ### Patch Changes diff --git a/packages/plugins/plugin-approvals/package.json b/packages/plugins/plugin-approvals/package.json index e191940ba..0ea3469b5 100644 --- a/packages/plugins/plugin-approvals/package.json +++ b/packages/plugins/plugin-approvals/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-approvals", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Multi-step approval engine for ObjectStack — sys_approval_process + sys_approval_request + sys_approval_action + IApprovalService.", "main": "dist/index.js", diff --git a/packages/plugins/plugin-audit/CHANGELOG.md b/packages/plugins/plugin-audit/CHANGELOG.md index c83536941..93a039f59 100644 --- a/packages/plugins/plugin-audit/CHANGELOG.md +++ b/packages/plugins/plugin-audit/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 + ## 4.1.1 ### Patch Changes diff --git a/packages/plugins/plugin-audit/package.json b/packages/plugins/plugin-audit/package.json index 8153328d3..e7f530654 100644 --- a/packages/plugins/plugin-audit/package.json +++ b/packages/plugins/plugin-audit/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-audit", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Audit Plugin for ObjectStack — System audit log object and audit trail", "main": "dist/index.js", diff --git a/packages/plugins/plugin-auth/CHANGELOG.md b/packages/plugins/plugin-auth/CHANGELOG.md index b87b06e45..861ec90d1 100644 --- a/packages/plugins/plugin-auth/CHANGELOG.md +++ b/packages/plugins/plugin-auth/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## 4.2.0 + +### Patch Changes + +- Updated dependencies [2869891] + - @objectstack/spec@4.2.0 + - @objectstack/core@4.2.0 + - @objectstack/platform-objects@4.2.0 + ## 4.1.1 ### Patch Changes diff --git a/packages/plugins/plugin-auth/package.json b/packages/plugins/plugin-auth/package.json index 081dde5fa..1f8c49c92 100644 --- a/packages/plugins/plugin-auth/package.json +++ b/packages/plugins/plugin-auth/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-auth", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Authentication & Identity Plugin for ObjectStack", "main": "dist/index.js", diff --git a/packages/plugins/plugin-dev/CHANGELOG.md b/packages/plugins/plugin-dev/CHANGELOG.md index 385431434..23eb1fc74 100644 --- a/packages/plugins/plugin-dev/CHANGELOG.md +++ b/packages/plugins/plugin-dev/CHANGELOG.md @@ -1,5 +1,13 @@ # @objectstack/plugin-dev +## 4.2.0 + +### Patch Changes + +- Updated dependencies [2869891] + - @objectstack/spec@4.2.0 + - @objectstack/core@4.2.0 + ## 4.1.1 ### Patch Changes diff --git a/packages/plugins/plugin-dev/package.json b/packages/plugins/plugin-dev/package.json index dfd073fd7..0ae409865 100644 --- a/packages/plugins/plugin-dev/package.json +++ b/packages/plugins/plugin-dev/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-dev", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Development Mode Plugin for ObjectStack — auto-enables all services with in-memory implementations", "main": "dist/index.js", diff --git a/packages/plugins/plugin-email/CHANGELOG.md b/packages/plugins/plugin-email/CHANGELOG.md index b845f341d..9ef2f18b3 100644 --- a/packages/plugins/plugin-email/CHANGELOG.md +++ b/packages/plugins/plugin-email/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 + ## 4.1.1 ### Patch Changes diff --git a/packages/plugins/plugin-email/package.json b/packages/plugins/plugin-email/package.json index f69684635..3433a2d41 100644 --- a/packages/plugins/plugin-email/package.json +++ b/packages/plugins/plugin-email/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-email", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Email service plugin for ObjectStack — IEmailService + transport-pluggable outbound delivery with sys_email persistence.", "main": "dist/index.js", diff --git a/packages/plugins/plugin-hono-server/CHANGELOG.md b/packages/plugins/plugin-hono-server/CHANGELOG.md index 4b392fd7a..da7988e72 100644 --- a/packages/plugins/plugin-hono-server/CHANGELOG.md +++ b/packages/plugins/plugin-hono-server/CHANGELOG.md @@ -1,5 +1,13 @@ # @objectstack/plugin-hono-server +## 4.2.0 + +### Patch Changes + +- Updated dependencies [2869891] + - @objectstack/spec@4.2.0 + - @objectstack/core@4.2.0 + ## 4.1.1 ### Patch Changes diff --git a/packages/plugins/plugin-hono-server/package.json b/packages/plugins/plugin-hono-server/package.json index ea6c22ce7..de93ee2f3 100644 --- a/packages/plugins/plugin-hono-server/package.json +++ b/packages/plugins/plugin-hono-server/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-hono-server", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Standard Hono Server Adapter for ObjectStack Runtime", "main": "dist/index.js", diff --git a/packages/plugins/plugin-mcp-server/CHANGELOG.md b/packages/plugins/plugin-mcp-server/CHANGELOG.md index 11d09d671..a84c3c780 100644 --- a/packages/plugins/plugin-mcp-server/CHANGELOG.md +++ b/packages/plugins/plugin-mcp-server/CHANGELOG.md @@ -1,5 +1,13 @@ # @objectstack/plugin-mcp-server +## 4.2.0 + +### Patch Changes + +- Updated dependencies [2869891] + - @objectstack/spec@4.2.0 + - @objectstack/core@4.2.0 + ## 4.1.1 ### Patch Changes diff --git a/packages/plugins/plugin-mcp-server/package.json b/packages/plugins/plugin-mcp-server/package.json index ece60a258..abc7906de 100644 --- a/packages/plugins/plugin-mcp-server/package.json +++ b/packages/plugins/plugin-mcp-server/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-mcp-server", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "MCP Runtime Server Plugin for ObjectStack — exposes AI tools, data resources, and agent prompts via the Model Context Protocol", "type": "module", diff --git a/packages/plugins/plugin-msw/CHANGELOG.md b/packages/plugins/plugin-msw/CHANGELOG.md index a5c50ea0f..315210f6d 100644 --- a/packages/plugins/plugin-msw/CHANGELOG.md +++ b/packages/plugins/plugin-msw/CHANGELOG.md @@ -1,5 +1,15 @@ # @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 + ## 4.1.1 ### Patch Changes diff --git a/packages/plugins/plugin-msw/package.json b/packages/plugins/plugin-msw/package.json index eef072300..c4718284d 100644 --- a/packages/plugins/plugin-msw/package.json +++ b/packages/plugins/plugin-msw/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-msw", - "version": "4.1.1", + "version": "4.2.0", "description": "MSW (Mock Service Worker) Plugin for ObjectStack Runtime", "license": "Apache-2.0", "main": "dist/index.js", diff --git a/packages/plugins/plugin-reports/CHANGELOG.md b/packages/plugins/plugin-reports/CHANGELOG.md index a9321360b..bbbb46544 100644 --- a/packages/plugins/plugin-reports/CHANGELOG.md +++ b/packages/plugins/plugin-reports/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 + ## 4.1.1 ### Patch Changes diff --git a/packages/plugins/plugin-reports/package.json b/packages/plugins/plugin-reports/package.json index 011e030ce..4183c8f6f 100644 --- a/packages/plugins/plugin-reports/package.json +++ b/packages/plugins/plugin-reports/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-reports", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Saved reports + scheduled email digests for ObjectStack — sys_saved_report + sys_report_schedule + IReportService.", "main": "dist/index.js", diff --git a/packages/plugins/plugin-security/CHANGELOG.md b/packages/plugins/plugin-security/CHANGELOG.md index b07f577c6..79bea3634 100644 --- a/packages/plugins/plugin-security/CHANGELOG.md +++ b/packages/plugins/plugin-security/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 + ## 4.1.1 ### Patch Changes diff --git a/packages/plugins/plugin-security/package.json b/packages/plugins/plugin-security/package.json index 6804ffca5..c7c742219 100644 --- a/packages/plugins/plugin-security/package.json +++ b/packages/plugins/plugin-security/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-security", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Security Plugin for ObjectStack — RBAC, RLS, and Field-Level Security Runtime", "main": "dist/index.js", diff --git a/packages/plugins/plugin-sharing/CHANGELOG.md b/packages/plugins/plugin-sharing/CHANGELOG.md index e505e319b..0e1199e86 100644 --- a/packages/plugins/plugin-sharing/CHANGELOG.md +++ b/packages/plugins/plugin-sharing/CHANGELOG.md @@ -1,5 +1,15 @@ # @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 + ## 4.1.1 ### Patch Changes diff --git a/packages/plugins/plugin-sharing/package.json b/packages/plugins/plugin-sharing/package.json index 6b326982c..44c50b499 100644 --- a/packages/plugins/plugin-sharing/package.json +++ b/packages/plugins/plugin-sharing/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-sharing", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Record-level sharing for ObjectStack — sys_record_share + middleware that enforces sharingModel + ISharingService.", "main": "dist/index.js", diff --git a/packages/plugins/plugin-webhooks/CHANGELOG.md b/packages/plugins/plugin-webhooks/CHANGELOG.md index eed8d6ce1..09d4b6491 100644 --- a/packages/plugins/plugin-webhooks/CHANGELOG.md +++ b/packages/plugins/plugin-webhooks/CHANGELOG.md @@ -1,5 +1,13 @@ # @objectstack/plugin-webhooks +## 4.2.0 + +### Patch Changes + +- Updated dependencies [2869891] + - @objectstack/spec@4.2.0 + - @objectstack/core@4.2.0 + ## 4.1.1 ### Patch Changes diff --git a/packages/plugins/plugin-webhooks/package.json b/packages/plugins/plugin-webhooks/package.json index 0409ae111..0daecd6ea 100644 --- a/packages/plugins/plugin-webhooks/package.json +++ b/packages/plugins/plugin-webhooks/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-webhooks", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Outbound webhook delivery plugin for ObjectStack — fan-out data.record.* events to external HTTP(S) sinks with HMAC signing and retry.", "main": "dist/index.js", diff --git a/packages/rest/CHANGELOG.md b/packages/rest/CHANGELOG.md index 6dea938c0..242018705 100644 --- a/packages/rest/CHANGELOG.md +++ b/packages/rest/CHANGELOG.md @@ -1,5 +1,56 @@ # @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: ""` header + _or_ `expectedVersion: ""` 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 + ## 4.1.1 ### Patch Changes diff --git a/packages/rest/package.json b/packages/rest/package.json index 520dbb191..6732023c3 100644 --- a/packages/rest/package.json +++ b/packages/rest/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/rest", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "ObjectStack REST API Server - automatic REST endpoint generation from protocol", "type": "module", diff --git a/packages/runtime/CHANGELOG.md b/packages/runtime/CHANGELOG.md index 84cc3de96..58dc02c2f 100644 --- a/packages/runtime/CHANGELOG.md +++ b/packages/runtime/CHANGELOG.md @@ -1,5 +1,19 @@ # @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 + ## 4.1.1 ### Patch Changes diff --git a/packages/runtime/package.json b/packages/runtime/package.json index 07811ab4c..012ec261a 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/runtime", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "ObjectStack Core Runtime & Query Engine", "type": "module", diff --git a/packages/services/service-ai/CHANGELOG.md b/packages/services/service-ai/CHANGELOG.md index 4a0f58e60..5ae39e06c 100644 --- a/packages/services/service-ai/CHANGELOG.md +++ b/packages/services/service-ai/CHANGELOG.md @@ -1,5 +1,13 @@ # @objectstack/service-ai +## 4.2.0 + +### Patch Changes + +- Updated dependencies [2869891] + - @objectstack/spec@4.2.0 + - @objectstack/core@4.2.0 + ## 4.1.1 ### Patch Changes diff --git a/packages/services/service-ai/package.json b/packages/services/service-ai/package.json index 8932890d3..25affe37c 100644 --- a/packages/services/service-ai/package.json +++ b/packages/services/service-ai/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-ai", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "AI Service for ObjectStack — implements IAIService with LLM adapter layer, conversation management, tool registry, and REST/SSE routes", "type": "module", diff --git a/packages/services/service-analytics/CHANGELOG.md b/packages/services/service-analytics/CHANGELOG.md index 4aa1527a9..80cfdf87f 100644 --- a/packages/services/service-analytics/CHANGELOG.md +++ b/packages/services/service-analytics/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog — @objectstack/service-analytics +## 4.2.0 + +### Patch Changes + +- Updated dependencies [2869891] + - @objectstack/spec@4.2.0 + - @objectstack/core@4.2.0 + ## 4.1.1 ### Patch Changes diff --git a/packages/services/service-analytics/package.json b/packages/services/service-analytics/package.json index faeb2972d..44463c65c 100644 --- a/packages/services/service-analytics/package.json +++ b/packages/services/service-analytics/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-analytics", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Analytics Service for ObjectStack — implements IAnalyticsService with multi-driver strategy pattern (NativeSQL, ObjectQL, InMemory)", "type": "module", diff --git a/packages/services/service-automation/CHANGELOG.md b/packages/services/service-automation/CHANGELOG.md index 23cc4d246..ccf680787 100644 --- a/packages/services/service-automation/CHANGELOG.md +++ b/packages/services/service-automation/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 + ## 4.1.1 ### Patch Changes diff --git a/packages/services/service-automation/package.json b/packages/services/service-automation/package.json index f47838038..1b33d6090 100644 --- a/packages/services/service-automation/package.json +++ b/packages/services/service-automation/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-automation", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Automation Service for ObjectStack — implements IAutomationService with plugin-based DAG flow execution engine", "type": "module", diff --git a/packages/services/service-cache/CHANGELOG.md b/packages/services/service-cache/CHANGELOG.md index f68680fdb..2d1014836 100644 --- a/packages/services/service-cache/CHANGELOG.md +++ b/packages/services/service-cache/CHANGELOG.md @@ -1,5 +1,13 @@ # @objectstack/service-cache +## 4.2.0 + +### Patch Changes + +- Updated dependencies [2869891] + - @objectstack/spec@4.2.0 + - @objectstack/core@4.2.0 + ## 4.1.1 ### Patch Changes diff --git a/packages/services/service-cache/package.json b/packages/services/service-cache/package.json index db8c6ecef..0f03182bf 100644 --- a/packages/services/service-cache/package.json +++ b/packages/services/service-cache/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-cache", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Cache Service for ObjectStack — implements ICacheService with in-memory and Redis adapters", "type": "module", diff --git a/packages/services/service-feed/CHANGELOG.md b/packages/services/service-feed/CHANGELOG.md index e6089fa88..cd6bfa14a 100644 --- a/packages/services/service-feed/CHANGELOG.md +++ b/packages/services/service-feed/CHANGELOG.md @@ -1,5 +1,13 @@ # @objectstack/service-feed +## 4.2.0 + +### Patch Changes + +- Updated dependencies [2869891] + - @objectstack/spec@4.2.0 + - @objectstack/core@4.2.0 + ## 4.1.1 ### Patch Changes diff --git a/packages/services/service-feed/package.json b/packages/services/service-feed/package.json index 906b6aae1..ffbaf0304 100644 --- a/packages/services/service-feed/package.json +++ b/packages/services/service-feed/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-feed", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Feed/Chatter Service for ObjectStack — implements IFeedService with in-memory adapter for comments, reactions, field changes, and record subscriptions", "type": "module", diff --git a/packages/services/service-i18n/CHANGELOG.md b/packages/services/service-i18n/CHANGELOG.md index 3633f5274..531a86abb 100644 --- a/packages/services/service-i18n/CHANGELOG.md +++ b/packages/services/service-i18n/CHANGELOG.md @@ -1,5 +1,13 @@ # @objectstack/service-i18n +## 4.2.0 + +### Patch Changes + +- Updated dependencies [2869891] + - @objectstack/spec@4.2.0 + - @objectstack/core@4.2.0 + ## 4.1.1 ### Patch Changes diff --git a/packages/services/service-i18n/package.json b/packages/services/service-i18n/package.json index dc085e30a..95271938b 100644 --- a/packages/services/service-i18n/package.json +++ b/packages/services/service-i18n/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-i18n", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "I18n Service for ObjectStack — implements II18nService with file-based locale loading", "type": "module", diff --git a/packages/services/service-job/CHANGELOG.md b/packages/services/service-job/CHANGELOG.md index 0936f330b..dc84acaca 100644 --- a/packages/services/service-job/CHANGELOG.md +++ b/packages/services/service-job/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 + ## 4.1.1 ### Patch Changes diff --git a/packages/services/service-job/package.json b/packages/services/service-job/package.json index 3da401910..5fc4968d3 100644 --- a/packages/services/service-job/package.json +++ b/packages/services/service-job/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-job", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Job Service for ObjectStack — implements IJobService with setInterval and cron scheduling", "type": "module", diff --git a/packages/services/service-package/CHANGELOG.md b/packages/services/service-package/CHANGELOG.md index ea7b97303..a60735893 100644 --- a/packages/services/service-package/CHANGELOG.md +++ b/packages/services/service-package/CHANGELOG.md @@ -1,5 +1,13 @@ # @objectstack/service-package +## 4.2.0 + +### Patch Changes + +- Updated dependencies [2869891] + - @objectstack/spec@4.2.0 + - @objectstack/core@4.2.0 + ## 4.1.1 ### Patch Changes diff --git a/packages/services/service-package/package.json b/packages/services/service-package/package.json index cdf30271f..96542bef9 100644 --- a/packages/services/service-package/package.json +++ b/packages/services/service-package/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-package", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Package management service for ObjectStack — publish, install, and manage packages", "type": "module", diff --git a/packages/services/service-queue/CHANGELOG.md b/packages/services/service-queue/CHANGELOG.md index 7a6c73fc3..e3306ee3d 100644 --- a/packages/services/service-queue/CHANGELOG.md +++ b/packages/services/service-queue/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 + ## 4.1.1 ### Patch Changes diff --git a/packages/services/service-queue/package.json b/packages/services/service-queue/package.json index 99bd52183..027714c70 100644 --- a/packages/services/service-queue/package.json +++ b/packages/services/service-queue/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-queue", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Queue Service for ObjectStack — implements IQueueService with in-memory and BullMQ adapters", "type": "module", diff --git a/packages/services/service-realtime/CHANGELOG.md b/packages/services/service-realtime/CHANGELOG.md index 91ec29ef3..c2dd7c989 100644 --- a/packages/services/service-realtime/CHANGELOG.md +++ b/packages/services/service-realtime/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 + ## 4.1.1 ### Patch Changes diff --git a/packages/services/service-realtime/package.json b/packages/services/service-realtime/package.json index a82204a34..ad6e03033 100644 --- a/packages/services/service-realtime/package.json +++ b/packages/services/service-realtime/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-realtime", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Realtime Service for ObjectStack — implements IRealtimeService with WebSocket and in-memory pub/sub", "type": "module", diff --git a/packages/services/service-settings/CHANGELOG.md b/packages/services/service-settings/CHANGELOG.md index 1e0f68fee..2e9b47388 100644 --- a/packages/services/service-settings/CHANGELOG.md +++ b/packages/services/service-settings/CHANGELOG.md @@ -1,5 +1,14 @@ # @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 + ## 4.1.1 ### Patch Changes diff --git a/packages/services/service-settings/package.json b/packages/services/service-settings/package.json index 7e1d441ff..14c7cbe45 100644 --- a/packages/services/service-settings/package.json +++ b/packages/services/service-settings/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-settings", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Settings service for ObjectStack — manifest registry + K/V resolver (Env > Tenant > User > Default) + REST routes. See ADR-0007.", "type": "module", diff --git a/packages/services/service-storage/CHANGELOG.md b/packages/services/service-storage/CHANGELOG.md index 7c96441fb..3d0dd5a8c 100644 --- a/packages/services/service-storage/CHANGELOG.md +++ b/packages/services/service-storage/CHANGELOG.md @@ -1,5 +1,13 @@ # @objectstack/service-storage +## 4.2.0 + +### Patch Changes + +- Updated dependencies [2869891] + - @objectstack/spec@4.2.0 + - @objectstack/core@4.2.0 + ## 4.1.1 ### Patch Changes diff --git a/packages/services/service-storage/package.json b/packages/services/service-storage/package.json index 1babd75d2..b6f433f28 100644 --- a/packages/services/service-storage/package.json +++ b/packages/services/service-storage/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-storage", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Storage Service for ObjectStack — implements IStorageService with local filesystem and S3 adapter skeleton", "type": "module", diff --git a/packages/spec/CHANGELOG.md b/packages/spec/CHANGELOG.md index 0e831b2ed..ff02e2841 100644 --- a/packages/spec/CHANGELOG.md +++ b/packages/spec/CHANGELOG.md @@ -1,5 +1,49 @@ # @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: ""` header + _or_ `expectedVersion: ""` 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. + ## 4.1.1 ## 4.1.0 diff --git a/packages/spec/package.json b/packages/spec/package.json index 812a61fb6..31a32fe93 100644 --- a/packages/spec/package.json +++ b/packages/spec/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/spec", - "version": "4.1.1", + "version": "4.2.0", "description": "ObjectStack Protocol & Specification - TypeScript Interfaces, JSON Schemas, and Convention Configurations", "license": "Apache-2.0", "main": "dist/index.js", diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index 057db1a1c..5a50f7af9 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -1,5 +1,12 @@ # @objectstack/types +## 4.2.0 + +### Patch Changes + +- Updated dependencies [2869891] + - @objectstack/spec@4.2.0 + ## 4.1.1 ### Patch Changes diff --git a/packages/types/package.json b/packages/types/package.json index e027dc0e1..fb9594a8d 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/types", - "version": "4.1.1", + "version": "4.2.0", "license": "Apache-2.0", "description": "Shared interfaces describing the ObjectStack Runtime environment", "main": "dist/index.js", diff --git a/packages/vscode-objectstack/CHANGELOG.md b/packages/vscode-objectstack/CHANGELOG.md index bde68f661..94cb99da0 100644 --- a/packages/vscode-objectstack/CHANGELOG.md +++ b/packages/vscode-objectstack/CHANGELOG.md @@ -1,5 +1,7 @@ # objectstack-vscode +## 4.2.0 + ## 4.1.1 ## 4.1.0 diff --git a/packages/vscode-objectstack/package.json b/packages/vscode-objectstack/package.json index 9f3122adb..638d54101 100644 --- a/packages/vscode-objectstack/package.json +++ b/packages/vscode-objectstack/package.json @@ -2,7 +2,7 @@ "name": "objectstack-vscode", "displayName": "ObjectStack", "description": "ObjectStack Protocol — Autocomplete, validation, and inline diagnostics for .object.ts, .view.ts, and objectstack.config.ts files", - "version": "4.1.1", + "version": "4.2.0", "publisher": "objectstack", "license": "Apache-2.0", "repository": {