Releases: objectstack-ai/framework
@objectstack/core@4.1.1
Patch Changes
- @objectstack/spec@4.1.1
@objectstack/console@5.1.0
@objectstack/console@5.1.0
@objectstack/console@5.0.0
Major Changes
-
bb32755: Publish
@objectstack/accountand@objectstack/consoleto npm (major release).Previously both apps were marked
private: true, which preventedchangeset publish
from releasing them. The CLI (@objectstack/cli) resolves these packages from
node_modules/@objectstack/{account,console,studio}to serve their builtdist
assets, so third-party projects could not consume them viapnpm add.- Removed
private: truefromapps/accountandapps/console. - Added
publishConfig.access: publictoaccount,console, andstudiofor
scoped-package publish safety.
- Removed
@objectstack/client@5.1.0
@objectstack/client@5.0.0
Patch Changes
- Updated dependencies [2f9073a]
- @objectstack/spec@5.0.0
- @objectstack/core@5.0.0
@objectstack/client@4.2.0
Minor Changes
-
2869891: feat: Optimistic Concurrency Control (OCC) via
If-MatchUpdate and Delete requests now accept an optional version token. When supplied,
the protocol compares it against the record's currentupdated_at(orversion
column when available) and rejects with409 CONCURRENT_UPDATEon 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}— supportsIf-Match: "<token>"header
orexpectedVersion: "<token>"body field (body wins when both present). -
DELETE /data/{object}/{id}— supportsIf-Matchheader 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 normal404. -
Object has no
updated_atcolumn → 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-Matchheader.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 atomicWHERE id=? AND updated_at=?writes
for true CAS without changing the public API.Tests: 7 new cases in
protocol-data.test.tscover 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
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|pnavigation,[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
StudioShellwrapper;TopBargains arightSlotprop for Inspector / Help buttons.
@objectstack/client: surface plain-stringerrorbodies (e.g.RECORD_LOCKED: …) in fetch error messages instead of swallowing them asBad Request.- @objectstack/spec@4.1.1
- @objectstack/core@4.1.1
- Inspector drawer (right Sheet, toggle via header button or
@objectstack/client-react@5.1.0
@objectstack/client-react@5.0.0
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
Patch Changes
- Updated dependencies [2869891]
- @objectstack/spec@4.2.0
- @objectstack/client@4.2.0
- @objectstack/core@4.2.0