sealkeep 0.5.2 → 0.6.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/ARCHITECTURE.md CHANGED
@@ -94,7 +94,7 @@ Full specification, test vectors, and tamper coverage: `packages/vaultline-crypt
94
94
 
95
95
  ## 4. Control-plane API v1
96
96
 
97
- Authentication is on by default. `VAULTLINE_CONTROL_PLANE_DEV=1` disables device signatures
97
+ Authentication is on by default. `SEALKEEP_CONTROL_PLANE_DEV=1` disables device signatures
98
98
  and keeps state in memory for local interface work; `/health` reports
99
99
  `mode: development-interface` so a misconfigured deployment is visible in one request.
100
100
 
@@ -198,4 +198,4 @@ Four gates remain open, none closable by writing more code in this repository:
198
198
  3. **OS code-signing certificates.** Releases carry npm provenance and an Ed25519-signed manifest only.
199
199
  4. **Browser and accessibility QA** of the dashboard.
200
200
 
201
- Uploads remain off unless `VAULTLINE_ENABLE_SIGNER=1` is set explicitly.
201
+ Uploads remain off unless `SEALKEEP_ENABLE_SIGNER=1` is set explicitly.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,36 @@
3
3
  Notable changes, by published version. Sealkeep is pre-1.0: minor versions
4
4
  may change behavior, and say so here when they do.
5
5
 
6
+ ## 0.6.0 — 2026-08-19
7
+
8
+ **A second machine no longer wipes your search index.** The content index is
9
+ shared by every machine of a vault, but each machine pruned it from its own
10
+ records: a laptop that had never sealed anything concluded every entry was
11
+ dead, deleted them, and pushed the emptied index back — after which the machine
12
+ that built it could not search its own history either. A machine now forgets
13
+ only what it itself indexed. If this bit you, `sealkeep index build` on the
14
+ machine holding the archives restores the phonebook for the whole vault.
15
+
16
+ - Cross-machine search now finds ordinary uploaded archives, not just streamed
17
+ ones: a hit with no local record is rebuilt from the archive's own frame.
18
+ - Environment variables are `SEALKEEP_*`. The Vaultline-era names still work,
19
+ so nothing on an existing machine breaks; the new name wins when both are set.
20
+ - The CLI honours `SEALKEEP_DATA_DIR` — the variable `mcp install` already
21
+ writes into agent configs — so the agent and the CLI cannot silently work on
22
+ different vaults.
23
+ - New: `npm run acceptance` drives 22 end-to-end scenarios through the shipped
24
+ CLI (see `docs/acceptance-matrix.md`).
25
+
26
+ ## 0.5.3 — 2026-08-19
27
+
28
+ The account now knows what every destination holds. Machines stamp
29
+ per-target usage (Drive, your bucket, cloud) into the routing rules they
30
+ already sync, so the panel's new headline reads like the truth:
31
+ "3.7 GB in Sealkeep cloud · 56 MB in Google Drive". The panel also got
32
+ its polish pass: status headline first, routing rules as three short
33
+ bullets, per-row "holds X", compact editors, your current package leads
34
+ with the tiers as chips, and Drive shows as "folder <name>".
35
+
6
36
  ## 0.5.2 — 2026-08-19
7
37
 
8
38
  - "Manage in cloud" now opens sealkeep.spala.ai — the panel URL was still
package/CONTROL_PLANE.md CHANGED
@@ -6,7 +6,7 @@ The control plane stores device identities, encrypted manifests, and provider co
6
6
 
7
7
  ```sh
8
8
  npm run control-plane # authenticated, durable
9
- VAULTLINE_CONTROL_PLANE_DEV=1 npm run control-plane # unauthenticated, in memory
9
+ SEALKEEP_CONTROL_PLANE_DEV=1 npm run control-plane # unauthenticated, in memory
10
10
  docker build -t vaultline-control-plane . && docker run -p 8787:8787 -v vaultline-data:/data vaultline-control-plane
11
11
  ```
12
12
 
@@ -35,7 +35,7 @@ presented in `x-vaultline-device`, `x-vaultline-timestamp`, `x-vaultline-nonce`,
35
35
  refused, and a nonce cache rejects verbatim replays. Binding method, path, and body hash
36
36
  into the signature means a captured signature cannot be redirected to another endpoint.
37
37
 
38
- `VAULTLINE_CONTROL_PLANE_DEV=1` disables this and keeps state in memory. It exists for
38
+ `SEALKEEP_CONTROL_PLANE_DEV=1` disables this and keeps state in memory. It exists for
39
39
  local interface development. If `/health` reports `development-interface` on anything you
40
40
  deployed, stop it.
41
41
 
@@ -61,7 +61,7 @@ Input is ciphertext-only metadata: archive ID, encrypted byte length, SHA-256 of
61
61
 
62
62
  Every lease carries `status` and `uploadable`. In this build they are always `pending-signer` and `false`. `assertLeaseUsable` is the single gate an upload path must pass: it checks expiry first, so a replayed lease is refused as `lease_expired` rather than as an unsigned one, and it then refuses anything that is not an `active` uploadable lease with `signer_not_configured`.
63
63
 
64
- `VAULTLINE_ENABLE_SIGNER=1` permits registering a `ProviderUploadClient`, but no implementation ships. With the flag off, registration and lookup both fail; turning it off again immediately withdraws every registered client.
64
+ `SEALKEEP_ENABLE_SIGNER=1` permits registering a `ProviderUploadClient`, but no implementation ships. With the flag off, registration and lookup both fail; turning it off again immediately withdraws every registered client.
65
65
 
66
66
  For S3/R2 the response contains `createMultipart`, per-part presigned PUT URLs, and a completion endpoint. For GCS it contains a signed initiation URL plus the resumable session URI returned to the local agent. The client validates the remote checksum and then calls `POST /v1/archives/complete`.
67
67
 
package/README.md CHANGED
@@ -30,7 +30,7 @@ heartbeat every cycle, so `status`, the dashboard, and the local API all answer
30
30
  "is it running, when did it last check, and what has it sealed" from the same fact.
31
31
  It also raises a native notification when disk is reclaimed or something needs a
32
32
  decision — never for routine sealing, which would just train you to ignore it.
33
- Silence it entirely with `VAULTLINE_NOTIFICATIONS=off`.
33
+ Silence it entirely with `SEALKEEP_NOTIFICATIONS=off`.
34
34
 
35
35
  Prefer to drive it yourself? `sealkeep quickstart` does the same setup without installing
36
36
  a service, and you run `sealkeep queue run` when you feel like it.
@@ -70,7 +70,7 @@ Autopilot runs all four on a loop. To unlock the vault without a human present,
70
70
  your phrase in the OS keystore — macOS Keychain, Freedesktop Secret Service, or Windows
71
71
  DPAPI. That is a real trade-off, stated plainly: anything running as you can read it once
72
72
  you are logged in. Opt out with `--no-remember` and supply
73
- `VAULTLINE_RECOVERY_PHRASE` to the service yourself. Either way, the phrase you wrote down
73
+ `SEALKEEP_RECOVERY_PHRASE` to the service yourself. Either way, the phrase you wrote down
74
74
  stays your disaster-recovery path.
75
75
 
76
76
  ## Your recovery phrase is 24 words
@@ -191,7 +191,7 @@ and phrase still never leave your machine.
191
191
  ```sh
192
192
  sealkeep storage configure --provider r2 --bucket encrypted-sessions --prefix accounts/me
193
193
  echo '{"accessKeyId":"…","secretAccessKey":"…"}' | sealkeep storage credentials set
194
- VAULTLINE_ENABLE_SIGNER=1 sealkeep upload --all
194
+ SEALKEEP_ENABLE_SIGNER=1 sealkeep upload --all
195
195
  ```
196
196
 
197
197
  Or skip storage entirely and keep everything local. Sealkeep still seals every archive; it