@noy-db/hub 0.9.0-pre.2 → 0.10.0-pre.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.
Files changed (2) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,63 @@
1
1
  # Changelog — hub
2
2
 
3
+ ## 0.10.0-pre.0
4
+
5
+ **The first pre-release of the 0.10 line: core gets smaller.** No hub source changed since `0.9.0`;
6
+ this line exists because five packages left core's lockstep line, and a hub minor is how the family
7
+ signals a changed line. Package names are unchanged, so no import changes.
8
+
9
+ - `@noy-db/in-rest`, `@noy-db/in-relay`, `@noy-db/in-devtools`, `@noy-db/in-devtools-tui` now version
10
+ on **`noy-db/in`**'s line, beside the framework bindings.
11
+ - `@noy-db/exclave-plain`, the plaintext capsule, now versions on **`noy-db/capsule`**'s line. Hub's
12
+ `#capsule` import map still names it by npm name, so the `noy-db:exclave-plain` build condition
13
+ works unchanged.
14
+ - ⚠️ **A 0.x caret excludes the next minor.** A satellite whose hub peer reads `^0.9.0` does not
15
+ admit `0.10.0-pre.0`; every satellite is cut at `0.10.0-pre.0` in the same family cut with its
16
+ peer range appended.
17
+ - `create-noy-db` scaffolds the `in-*` at `^0.10.0-pre.0`. Through `0.9.0` it paired hub `0.9.0` with
18
+ `in-*` `0.8.0`, whose hub peer is `^0.8.0`: an install error under npm's strict peers.
19
+
20
+ ## 0.9.0
21
+
22
+ **The stable release of the 0.9 line.** It is `0.9.0-pre.2` promoted unchanged; everything below was
23
+ shipped and exercised across `pre.0`, `pre.1` and `pre.2`, whose sections carry the detail. The theme
24
+ of the line is **replication you can trust with a keyring** — a `sync-peer` target became a full
25
+ replica, and the races that made that unsafe were closed.
26
+
27
+ **What the line delivers.** A `sync-peer` target is now a full replica: the roster travels in both
28
+ directions, `openVault` on an empty local store consults the target before deciding new-vs-existing,
29
+ and `db.realign(vault)` repairs a corrupted local envelope from the target's healthy copy. Every role
30
+ can mint its own cloud-store credentials (`@noy-db/hub/broker`). `_keyring` writes are
31
+ compare-and-swap for both update and **create**, so two concurrent grants of the same new member no
32
+ longer silently discard one. `@noy-db/ports` replaces the six conformance kits with one package and
33
+ one subpath per port. Sync gained `sync:progress`, and three refusals that used to fail silently now
34
+ throw.
35
+
36
+ **⛔ Four things to check before upgrading.** None is a format break — stored data reads unchanged —
37
+ but each is visible to a compiler or to an operator:
38
+
39
+ - **`EnclaveNotSupportedError.group` widened to `CapsuleGroup`**, and `capabilities()` now reports
40
+ **ten** groups rather than nine (`per-record-keys` was implemented and under-reported). An
41
+ exhaustive `switch` on either has more cases.
42
+ - **The six `@noy-db/test-*-conformance` shims are no longer published.** Already-published versions
43
+ stay installable; migrate to the matching `@noy-db/ports` subpath — `/to`, `/as`, `/at`, `/on`,
44
+ `/by`, `/capsule`.
45
+ - **The fourteen `in-*` framework bindings are not on this version line.** They live in `noy-db/in`
46
+ and cut on their own clock; nothing about `@noy-db/hub` changed for them.
47
+ - **Existing members need a re-grant** (or magic-link recovery) to be enrolled for member-scoped
48
+ broker credentials. The admin path is byte-identical and needs nothing.
49
+
50
+ **⚠️ Two guarantees with a stated boundary, because a silent partial guarantee is worse than a named
51
+ one.** The keyring CAS guarantee holds only once **every writer is a new hub** — an older hub writes
52
+ keyrings with no `expectedVersion` and clobbers a new hub's compare-and-swap. And `hasSealedBody`
53
+ tests `_iv`, not `_data`: a sealed body has no `_iv`, which is why the two kinds of `Envelope` body
54
+ are now documented explicitly.
55
+
56
+ **Adapter authors:** the contracted answer for a must-not-exist write is that the **first create
57
+ succeeds**. Do not implement absence by throwing — if your backend's conditional write rejects a
58
+ missing item, OR in an existence check the way `to-aws-dynamo` does. `@noy-db/ports/to` asserts both
59
+ halves, and `noy-db/to` ran it green across 19 adapters before this line changed.
60
+
3
61
  ## 0.9.0-pre.2
4
62
 
5
63
  **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-pre.2",
3
+ "version": "0.10.0-pre.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-pre.2",
280
- "@noy-db/shamir": "0.9.0-pre.2"
279
+ "@noy-db/attestation": "0.10.0-pre.0",
280
+ "@noy-db/shamir": "0.10.0-pre.0"
281
281
  },
282
282
  "peerDependencies": {
283
283
  "zod": "^3.0.0 || ^4.0.0",