Skip to content

Releases: objectstack-ai/framework

@objectstack/core@4.1.1

22 May 06:29
c3b6713

Choose a tag to compare

Patch Changes

  • @objectstack/spec@4.1.1

@objectstack/console@5.1.0

22 May 16:01
3ec28b4

Choose a tag to compare

@objectstack/console@5.1.0

@objectstack/console@5.0.0

22 May 15:29
378e5ef

Choose a tag to compare

Major Changes

  • bb32755: Publish @objectstack/account and @objectstack/console to npm (major release).

    Previously both apps were marked private: true, which prevented changeset publish
    from releasing them. The CLI (@objectstack/cli) resolves these packages from
    node_modules/@objectstack/{account,console,studio} to serve their built dist
    assets, so third-party projects could not consume them via pnpm add.

    • Removed private: true from apps/account and apps/console.
    • Added publishConfig.access: public to account, console, and studio for
      scoped-package publish safety.

@objectstack/client@5.1.0

22 May 16:02
3ec28b4

Choose a tag to compare

Patch Changes

  • Updated dependencies [75f4ee6]
  • Updated dependencies [823d559]
    • @objectstack/spec@5.1.0
    • @objectstack/core@5.1.0

@objectstack/client@5.0.0

22 May 15:30
378e5ef

Choose a tag to compare

Patch Changes

  • Updated dependencies [2f9073a]
    • @objectstack/spec@5.0.0
    • @objectstack/core@5.0.0

@objectstack/client@4.2.0

22 May 08:48
bcdae40

Choose a tag to compare

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

22 May 06:29
c3b6713

Choose a tag to compare

Patch Changes

  • 5326c6b: Studio developer UX overhaul.

    • Inspector drawer (right Sheet, toggle via header button or ]) with API / Source / Refs tabs that auto-populate from the current resource detail page.
    • Problems panel (status bar pill + [) that subscribes to object/view/flow/hook changes and surfaces unknown object refs, missing field refs, and broken triggers with deep-links back to source.
    • Keyboard shortcuts: g o|f|v|a|s|p navigation, [ problems, ] inspector, ? help dialog.
    • Resource actions menu ( on detail page header): Copy as curl / fetch() / defineX() TypeScript / Metadata JSON; Open in VS Code; Open API endpoint.
    • Welcome onboarding empty-state in the developer overview when a package has no metadata.
    • New StudioShell wrapper; TopBar gains a rightSlot prop for Inspector / Help buttons.

    @objectstack/client: surface plain-string error bodies (e.g. RECORD_LOCKED: …) in fetch error messages instead of swallowing them as Bad Request.

    • @objectstack/spec@4.1.1
    • @objectstack/core@4.1.1

@objectstack/client-react@5.1.0

22 May 16:03
3ec28b4

Choose a tag to compare

Patch Changes

  • Updated dependencies [75f4ee6]
  • Updated dependencies [823d559]
    • @objectstack/spec@5.1.0
    • @objectstack/client@5.1.0
    • @objectstack/core@5.1.0

@objectstack/client-react@5.0.0

22 May 15:30
378e5ef

Choose a tag to compare

Patch Changes

  • Updated dependencies [2f9073a]
    • @objectstack/spec@5.0.0
    • @objectstack/client@5.0.0
    • @objectstack/core@5.0.0

@objectstack/client-react@4.2.0

22 May 08:47
bcdae40

Choose a tag to compare

Patch Changes

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