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
+38-1Lines changed: 38 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
8
8
## [Unreleased]
9
9
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
-**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
+
10
38
## [0.13.0] - 2026-04-07
11
39
12
40
### Added
@@ -183,7 +211,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
0 commit comments