You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+13-3Lines changed: 13 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,28 +7,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
8
8
## [Unreleased]
9
9
10
-
## [2.0.0] — M7 Horizon (2026-02-07)
10
+
## [2.0.0] — M7 Horizon (2026-02-08)
11
11
12
12
### Added
13
13
-**Compression support** (Task 7.1): Optional gzip compression pipeline via `compression: { algorithm: 'gzip' }` option on `store()`. Compression is applied before encryption when both are enabled. Manifests include a new optional `compression` field. Decompression on `restore()` is automatic.
14
14
-**KDF support** (Task 7.2): Passphrase-based encryption using PBKDF2 or scrypt via `deriveKey()` method and `passphrase` option on `store()`/`restore()`. KDF parameters are stored in `manifest.encryption.kdf` for deterministic re-derivation. All three crypto adapters (Node, Bun, Web) implement `deriveKey()`.
15
15
-**Merkle tree manifests** (Task 7.3): Large manifests (chunk count exceeding `merkleThreshold`, default 1000) are automatically split into sub-manifests stored as separate blobs. Root manifest uses `version: 2` with `subManifests` references. `readManifest()` transparently reconstitutes v2 manifests into flat chunk lists. Full backward compatibility with v1 manifests.
16
16
- New schema fields: `version`, `compression`, `subManifests` on `ManifestSchema`; `kdf` on `EncryptionSchema`.
17
-
- 52 new unit tests across three new test suites (compression, KDF, Merkle).
17
+
- New error code: `INVALID_OPTIONS` for mutually exclusive options or unsupported option values.
18
+
- 62 new unit tests across three new test suites (compression, KDF, Merkle) plus expanded error tests.
18
19
- Updated API reference (`docs/API.md`), guide (`GUIDE.md`), and README with v2.0.0 feature documentation.
19
20
20
21
### Changed
21
22
-**BREAKING**: Manifest schema now includes `version` field (defaults to 1). Existing v1 manifests are fully backward-compatible.
22
-
-`CasService` constructor accepts new `merkleThreshold` option.
23
+
-`CasService` constructor accepts new `merkleThreshold` option (must be a positive integer).
23
24
-`ContentAddressableStore` constructor now accepts and forwards `merkleThreshold` to `CasService`.
24
25
-`store()` and `storeFile()` accept `passphrase`, `kdfOptions`, and `compression` options.
25
26
-`restore()` accepts `passphrase` option.
27
+
- Static imports for `createGzip` and `Readable` in `CasService` (previously dynamic imports on every call).
26
28
27
29
### Fixed
30
+
-**Sub-manifest blobs are now included as tree entries** (`sub-manifest-N.json`), preventing them from being garbage-collected by `git gc`.
28
31
-`storeFile()` now forwards `passphrase`, `kdfOptions`, and `compression` options to `store()` (previously silently dropped).
32
+
-`store()` and `restore()` reject when both `passphrase` and `encryptionKey` are provided (`INVALID_OPTIONS`).
0 commit comments