Skip to content

Commit 93428af

Browse files
docs(vault): add v0.14.0 changelog entry, fix comparison links
Complete v0.14.0 changelog covering: tenant lock enforcement, query timeouts, response caching, atomic quotas, security hardening (9 items), bug fixes (sync Vault, mypy, abstraction leak), and polish. Fix all version comparison links (were only covering v0.1-v0.5).
1 parent 6f6448b commit 93428af

File tree

1 file changed

+38
-1
lines changed

1 file changed

+38
-1
lines changed

CHANGELOG.md

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

88
## [Unreleased]
99

10+
## [0.14.0] - 2026-04-06
11+
12+
### Added
13+
- **Tenant lock enforcement**: `Vault(path, tenant_id="x")` now actively rejects operations with mismatched `tenant_id` and auto-injects the locked tenant when none is provided
14+
- **Query timeouts**: `_with_timeout()` wraps storage search with `asyncio.wait_for` and proper task cancellation on timeout. PostgreSQL pool gets `command_timeout` parameter
15+
- **Health/status response caching**: TTL-based cache (default 30s via `health_cache_ttl_seconds`) avoids full vault scans on repeated calls; cache invalidated on add/update/delete
16+
- **Atomic tenant quotas**: `count_resources()` Protocol method replaces the previous list+offset approach, eliminating TOCTOU race condition
17+
18+
### Security
19+
- **Plugin manifest required**: `manifest.json` is now mandatory when `verify_hashes=True` (default). Files not listed in manifest are rejected. Entire directory skipped if manifest missing
20+
- **FastAPI validation**: `limit` (1-1000), `offset` (0-1M), `content` max_length (500MB) validated at API boundary
21+
- **Path traversal protection**: `add()` resolves paths and rejects those containing `..`
22+
- **ReDoS protection**: Membrane innate scan truncates content to 500KB before regex matching
23+
- **CLI error sanitization**: `_safe_error_message()` returns structured error codes, never raw exception details
24+
- **Unicode normalization**: `_sanitize_name()` applies NFC normalization to prevent homograph collisions
25+
- **Timeout cancellation**: Timed-out tasks are cancelled (not left running in background)
26+
27+
### Fixed
28+
- **Sync Vault missing tenant_id/role**: `Vault.__init__` now accepts and passes `tenant_id` and `role` to `AsyncVault` (was silently ignoring both)
29+
- **mypy strict compliance**: 0 errors across 54 source files without disabling checks
30+
- **Abstraction leak**: `create_collection()` and `list_collections()` now use Protocol methods instead of directly accessing `_get_conn()`
31+
- **None-safety**: Added null checks before `.value` access in resource_manager and search_engine
32+
33+
### Changed
34+
- All magic numbers extracted to named constants
35+
- All 16 StorageBackend Protocol methods have docstrings
36+
- Error message punctuation normalized
37+
1038
## [0.13.0] - 2026-04-07
1139

1240
### Added
@@ -183,7 +211,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
183211
- Max file size enforcement (configurable)
184212
- Content null byte stripping on ingest
185213

186-
[unreleased]: https://github.com/quantumpipes/vault/compare/v0.5.0...HEAD
214+
[unreleased]: https://github.com/quantumpipes/vault/compare/v0.14.0...HEAD
215+
[0.14.0]: https://github.com/quantumpipes/vault/compare/v0.13.0...v0.14.0
216+
[0.13.0]: https://github.com/quantumpipes/vault/compare/v0.12.0...v0.13.0
217+
[0.12.0]: https://github.com/quantumpipes/vault/compare/v0.11.0...v0.12.0
218+
[0.11.0]: https://github.com/quantumpipes/vault/compare/v0.10.0...v0.11.0
219+
[0.10.0]: https://github.com/quantumpipes/vault/compare/v0.9.0...v0.10.0
220+
[0.9.0]: https://github.com/quantumpipes/vault/compare/v0.8.0...v0.9.0
221+
[0.8.0]: https://github.com/quantumpipes/vault/compare/v0.7.0...v0.8.0
222+
[0.7.0]: https://github.com/quantumpipes/vault/compare/v0.6.0...v0.7.0
223+
[0.6.0]: https://github.com/quantumpipes/vault/compare/v0.5.0...v0.6.0
187224
[0.5.0]: https://github.com/quantumpipes/vault/compare/v0.4.0...v0.5.0
188225
[0.4.0]: https://github.com/quantumpipes/vault/compare/v0.3.0...v0.4.0
189226
[0.3.0]: https://github.com/quantumpipes/vault/compare/v0.2.0...v0.3.0

0 commit comments

Comments
 (0)