@noy-db/hub 0.9.0-pre.2 → 0.9.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 +41 -0
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,46 @@
|
|
|
1
1
|
# Changelog — hub
|
|
2
2
|
|
|
3
|
+
## 0.9.0
|
|
4
|
+
|
|
5
|
+
**The stable release of the 0.9 line.** It is `0.9.0-pre.2` promoted unchanged; everything below was
|
|
6
|
+
shipped and exercised across `pre.0`, `pre.1` and `pre.2`, whose sections carry the detail. The theme
|
|
7
|
+
of the line is **replication you can trust with a keyring** — a `sync-peer` target became a full
|
|
8
|
+
replica, and the races that made that unsafe were closed.
|
|
9
|
+
|
|
10
|
+
**What the line delivers.** A `sync-peer` target is now a full replica: the roster travels in both
|
|
11
|
+
directions, `openVault` on an empty local store consults the target before deciding new-vs-existing,
|
|
12
|
+
and `db.realign(vault)` repairs a corrupted local envelope from the target's healthy copy. Every role
|
|
13
|
+
can mint its own cloud-store credentials (`@noy-db/hub/broker`). `_keyring` writes are
|
|
14
|
+
compare-and-swap for both update and **create**, so two concurrent grants of the same new member no
|
|
15
|
+
longer silently discard one. `@noy-db/ports` replaces the six conformance kits with one package and
|
|
16
|
+
one subpath per port. Sync gained `sync:progress`, and three refusals that used to fail silently now
|
|
17
|
+
throw.
|
|
18
|
+
|
|
19
|
+
**⛔ Four things to check before upgrading.** None is a format break — stored data reads unchanged —
|
|
20
|
+
but each is visible to a compiler or to an operator:
|
|
21
|
+
|
|
22
|
+
- **`EnclaveNotSupportedError.group` widened to `CapsuleGroup`**, and `capabilities()` now reports
|
|
23
|
+
**ten** groups rather than nine (`per-record-keys` was implemented and under-reported). An
|
|
24
|
+
exhaustive `switch` on either has more cases.
|
|
25
|
+
- **The six `@noy-db/test-*-conformance` shims are no longer published.** Already-published versions
|
|
26
|
+
stay installable; migrate to the matching `@noy-db/ports` subpath — `/to`, `/as`, `/at`, `/on`,
|
|
27
|
+
`/by`, `/capsule`.
|
|
28
|
+
- **The fourteen `in-*` framework bindings are not on this version line.** They live in `noy-db/in`
|
|
29
|
+
and cut on their own clock; nothing about `@noy-db/hub` changed for them.
|
|
30
|
+
- **Existing members need a re-grant** (or magic-link recovery) to be enrolled for member-scoped
|
|
31
|
+
broker credentials. The admin path is byte-identical and needs nothing.
|
|
32
|
+
|
|
33
|
+
**⚠️ Two guarantees with a stated boundary, because a silent partial guarantee is worse than a named
|
|
34
|
+
one.** The keyring CAS guarantee holds only once **every writer is a new hub** — an older hub writes
|
|
35
|
+
keyrings with no `expectedVersion` and clobbers a new hub's compare-and-swap. And `hasSealedBody`
|
|
36
|
+
tests `_iv`, not `_data`: a sealed body has no `_iv`, which is why the two kinds of `Envelope` body
|
|
37
|
+
are now documented explicitly.
|
|
38
|
+
|
|
39
|
+
**Adapter authors:** the contracted answer for a must-not-exist write is that the **first create
|
|
40
|
+
succeeds**. Do not implement absence by throwing — if your backend's conditional write rejects a
|
|
41
|
+
missing item, OR in an existence check the way `to-aws-dynamo` does. `@noy-db/ports/to` asserts both
|
|
42
|
+
halves, and `noy-db/to` ran it green across 19 adapters before this line changed.
|
|
43
|
+
|
|
3
44
|
## 0.9.0-pre.2
|
|
4
45
|
|
|
5
46
|
**A small, deliberate release: two keyring correctness items and the removal of six shim packages.** No format change, no new surface.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@noy-db/hub",
|
|
3
|
-
"version": "0.9.0
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Zero-knowledge, offline-first, encrypted document store — core library with AES-256-GCM, PBKDF2, multi-user keyring, and sync engine",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "vLannaAi <vicio@lanna.ai>",
|
|
@@ -276,8 +276,8 @@
|
|
|
276
276
|
"happy-dom": "^18.0.0",
|
|
277
277
|
"zod": "^4.0.0",
|
|
278
278
|
"zod-to-json-schema": "^3.25.2",
|
|
279
|
-
"@noy-db/attestation": "0.9.0
|
|
280
|
-
"@noy-db/shamir": "0.9.0
|
|
279
|
+
"@noy-db/attestation": "0.9.0",
|
|
280
|
+
"@noy-db/shamir": "0.9.0"
|
|
281
281
|
},
|
|
282
282
|
"peerDependencies": {
|
|
283
283
|
"zod": "^3.0.0 || ^4.0.0",
|