@squirreljetpack/im-dynamic 0.2.11 → 0.3.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 +46 -0
- package/npm-shrinkwrap.json +2 -2
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,49 @@
|
|
|
1
|
+
## [0.3.0] - 2026-11-03
|
|
2
|
+
|
|
3
|
+
### 🚀 Features
|
|
4
|
+
|
|
5
|
+
- Sync creates are driven by `sync_schema.json`: a push that creates an
|
|
6
|
+
entity carries every field of its kind, so no peer ever builds a
|
|
7
|
+
half-filled row.
|
|
8
|
+
- The outbox coalesces per cell (`UNIQUE(entity_id, field)`): repeated
|
|
9
|
+
offline edits to the same field update the queued row in place instead
|
|
10
|
+
of queueing a chain of writes.
|
|
11
|
+
- The server pre-validates each create (existence cell, required fields
|
|
12
|
+
and links, timestamp) and reports the failures as per-event verdicts
|
|
13
|
+
with a typed reason. `target_deleted` is new; a reason this build does
|
|
14
|
+
not know deserializes as `unknown` instead of failing the response.
|
|
15
|
+
- Deleting a mood keeps the tracker entries logged against it: their
|
|
16
|
+
`mood` link is cleared and the rows stay, matching the sync cascade.
|
|
17
|
+
Deleting a task still deletes its completions.
|
|
18
|
+
- `im :sync` offers to re-create content another device deleted from a
|
|
19
|
+
snapshot taken before the row was removed, and asks once per entity
|
|
20
|
+
after every push of the run.
|
|
21
|
+
|
|
22
|
+
### 🐛 Bug Fixes
|
|
23
|
+
|
|
24
|
+
- `sync_once` lands the outbox, the domain rows, the cursor and the
|
|
25
|
+
verdict reconciliation in one transaction, so an interrupted push
|
|
26
|
+
cannot leave a half-applied batch.
|
|
27
|
+
- The existence cell folds monotonically: a stale create can no longer
|
|
28
|
+
resurrect an entity another device deleted, and a create the server
|
|
29
|
+
rejected leaves no cells behind in the log.
|
|
30
|
+
- `clock_ahead` restamps the device forward against the server clock and
|
|
31
|
+
resets its last emitted stamp, so later edits from that device keep
|
|
32
|
+
winning last-writer-wins.
|
|
33
|
+
- Editing a mood's body or a tracker's mood link queues only the cells
|
|
34
|
+
that changed.
|
|
35
|
+
- Pull is bounded and reports `has_more`, so a long log pages instead of
|
|
36
|
+
arriving in one response.
|
|
37
|
+
|
|
38
|
+
### 💥 Breaking changes
|
|
39
|
+
|
|
40
|
+
- `tracker.time` is required: a create without it is rejected as
|
|
41
|
+
`shape`.
|
|
42
|
+
- `_sync_events` carries its coalescing uniqueness in the table
|
|
43
|
+
definition and no longer stores `image`. Databases from earlier builds
|
|
44
|
+
are not migrated: delete the database file and sign in to rebuild from
|
|
45
|
+
the log.
|
|
46
|
+
|
|
1
47
|
## [0.2.11] - 2026-11-02
|
|
2
48
|
|
|
3
49
|
### 🚀 Features
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
},
|
|
19
19
|
"hasInstallScript": true,
|
|
20
20
|
"name": "@squirreljetpack/im-dynamic",
|
|
21
|
-
"version": "0.
|
|
21
|
+
"version": "0.3.0"
|
|
22
22
|
},
|
|
23
23
|
"node_modules/detect-libc": {
|
|
24
24
|
"engines": {
|
|
@@ -47,5 +47,5 @@
|
|
|
47
47
|
}
|
|
48
48
|
},
|
|
49
49
|
"requires": true,
|
|
50
|
-
"version": "0.
|
|
50
|
+
"version": "0.3.0"
|
|
51
51
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"artifactDownloadUrls": [
|
|
3
|
-
"https://github.com/Squirreljetpack/im/releases/download/v0.
|
|
3
|
+
"https://github.com/Squirreljetpack/im/releases/download/v0.3.0"
|
|
4
4
|
],
|
|
5
5
|
"bin": {
|
|
6
6
|
"im-dynamic": "run-im-dynamic.js"
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"zipExt": ".tar.xz"
|
|
88
88
|
}
|
|
89
89
|
},
|
|
90
|
-
"version": "0.
|
|
90
|
+
"version": "0.3.0",
|
|
91
91
|
"volta": {
|
|
92
92
|
"node": "18.14.1",
|
|
93
93
|
"npm": "9.5.0"
|