Skip to content

Commit 4da828d

Browse files
committed
docs: update CHANGELOG for v2.0.0 release
1 parent 4a0d290 commit 4da828d

1 file changed

Lines changed: 13 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10-
## [2.0.0] — M7 Horizon (2026-02-07)
10+
## [2.0.0] — M7 Horizon (2026-02-08)
1111

1212
### Added
1313
- **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.
1414
- **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()`.
1515
- **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.
1616
- 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.
1819
- Updated API reference (`docs/API.md`), guide (`GUIDE.md`), and README with v2.0.0 feature documentation.
1920

2021
### Changed
2122
- **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).
2324
- `ContentAddressableStore` constructor now accepts and forwards `merkleThreshold` to `CasService`.
2425
- `store()` and `storeFile()` accept `passphrase`, `kdfOptions`, and `compression` options.
2526
- `restore()` accepts `passphrase` option.
27+
- Static imports for `createGzip` and `Readable` in `CasService` (previously dynamic imports on every call).
2628

2729
### Fixed
30+
- **Sub-manifest blobs are now included as tree entries** (`sub-manifest-N.json`), preventing them from being garbage-collected by `git gc`.
2831
- `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`).
33+
- `store()` rejects unsupported compression algorithms (`INVALID_OPTIONS`).
34+
- `restore()` throws a descriptive error when passphrase is provided but manifest lacks KDF metadata.
35+
- Decompression errors are now wrapped as `CasError` with code `INTEGRITY_ERROR` (previously raw zlib errors).
2936
- `NodeCryptoAdapter.deriveKey()` uses `Buffer.from(salt)` for base64 encoding, preventing corrupt output when salt is a `Uint8Array`.
3037
- `WebCryptoAdapter.deriveKey()` now validates KDF algorithm and throws for unsupported values instead of silently falling through to scrypt.
3138
- `WebCryptoAdapter` scrypt derivation now throws a descriptive error when `node:crypto` is unavailable (e.g. in browsers).
39+
- Orphaned JSDoc blocks for `restore()`, `verifyIntegrity()`, and `store()` reattached to their correct methods.
40+
- Stale cross-reference in GUIDE.md ("Section 10" → "Section 13").
41+
- API.md method signatures updated to include all v2 parameters.
3242

3343
## [1.6.2] — OIDC publishing + JSR docs coverage (2026-02-07)
3444

0 commit comments

Comments
 (0)