@abloatai/ablo 0.38.0 → 0.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -0
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,47 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.39.0
|
|
4
|
+
|
|
5
|
+
### Schema-relative session grants
|
|
6
|
+
|
|
7
|
+
`mintUserSessionKey` accepts `activeSchemaOperations` in place of `operations`.
|
|
8
|
+
Send the verbs a session needs, such as `['read', 'create', 'update',
|
|
9
|
+
'delete']`, and the server resolves them against the models in that session's
|
|
10
|
+
active schema. A backend that mints sessions for organizations whose schemas it
|
|
11
|
+
does not own no longer has to enumerate models it has no way to know.
|
|
12
|
+
|
|
13
|
+
Calls that pass `operations` are unchanged. A request carries one form or the
|
|
14
|
+
other, and the SDK rejects a call carrying both or neither before the round
|
|
15
|
+
trip. What the session ends up holding is the same concrete `model.verb`
|
|
16
|
+
allowlist either way, so nothing about enforcement changes. A verb is granted
|
|
17
|
+
only where the model accepts it, which leaves an immutable model with reads
|
|
18
|
+
alone. An organization that has not pushed a schema yet is told to push one
|
|
19
|
+
rather than issued a key, since a grant that resolves to nothing would widen
|
|
20
|
+
rather than narrow what the session can reach.
|
|
21
|
+
|
|
22
|
+
### A named error for models outside your schema
|
|
23
|
+
|
|
24
|
+
Reaching for a model that your schema projection leaves out now fails with a
|
|
25
|
+
named `model_not_in_schema` error at the point of access, rather than
|
|
26
|
+
surfacing later as a property that happens to be undefined.
|
|
27
|
+
|
|
28
|
+
### Declared premises serialize against concurrent writers
|
|
29
|
+
|
|
30
|
+
A commit that declares row premises now serializes those rows against
|
|
31
|
+
concurrent commits, not only the rows it writes. Two commits that read the
|
|
32
|
+
same rows and wrote different ones could previously both pass validation in a
|
|
33
|
+
narrow window. The later commit now observes the earlier one and is rejected
|
|
34
|
+
as stale, so a functional update re-reads and re-runs instead of committing on
|
|
35
|
+
outdated reads.
|
|
36
|
+
|
|
37
|
+
### Faster, atomic live updates
|
|
38
|
+
|
|
39
|
+
The client applies an incoming batch of changes as one action, so reactive
|
|
40
|
+
observers see the whole batch or none of it, never a half-applied batch. The
|
|
41
|
+
apply path does substantially less work per change, the final partial batch of
|
|
42
|
+
a burst materializes after 10 ms rather than 100 ms, and the client no longer
|
|
43
|
+
assembles debug payloads it discards.
|
|
44
|
+
|
|
3
45
|
## 0.38.0
|
|
4
46
|
|
|
5
47
|
### Branch-isolated development
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abloatai/ablo",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.39.0",
|
|
4
4
|
"description": "The public Ablo SDK for coordinated reads, commits, claims, observation, and reactive applications.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -122,8 +122,8 @@
|
|
|
122
122
|
"directory": "packages/ablo"
|
|
123
123
|
},
|
|
124
124
|
"dependencies": {
|
|
125
|
-
"@abloatai/humans": "^0.
|
|
126
|
-
"@abloatai/transaction": "^0.
|
|
125
|
+
"@abloatai/humans": "^0.39.0",
|
|
126
|
+
"@abloatai/transaction": "^0.39.0"
|
|
127
127
|
},
|
|
128
128
|
"peerDependencies": {
|
|
129
129
|
"ai": "^6.0.0 || ^7.0.0",
|