Commit graph

255 commits

Author SHA1 Message Date
b0ea2f3810 chore(release): 7.6.1 2026-01-26 14:22:44 -08:00
2ee6a049a6 chore(release): 7.6.0 2026-01-26 13:16:08 -08:00
f0f7acccc5 chore(release): 7.5.4 2026-01-26 13:08:44 -08:00
7883bb1545 chore(release): 7.5.3 2026-01-26 13:02:15 -08:00
1208c6597e chore(release): 7.5.2 2026-01-26 12:52:33 -08:00
20a3a59def chore(release): 7.5.1 2026-01-26 12:49:11 -08:00
58d85b9c91 chore(release): 7.5.0 2026-01-26 12:16:09 -08:00
478c6e6342 chore(release): 7.4.1 2026-01-20 17:38:29 -08:00
311f165533 chore(release): 7.4.0 2026-01-20 16:22:12 -08:00
24039e8a1a chore(release): 7.3.1 2026-01-16 17:05:10 -08:00
1a813c7b86 chore(release): 7.3.0 2026-01-07 12:52:12 -08:00
19c5e67035 chore(release): 7.2.2 2026-01-07 10:46:59 -08:00
cf06d82520 chore(release): 7.2.1 2026-01-06 18:01:38 -08:00
1a32ed65ab chore(release): 7.2.0 2026-01-06 17:19:58 -08:00
4fc1fb7340 chore(release): 7.1.1 2026-01-06 16:03:55 -08:00
61100bdc9d chore(release): 7.1.0 2026-01-06 14:53:13 -08:00
8e21e71980 chore(release): 7.0.1 2026-01-06 14:10:08 -08:00
ffd18c9598 chore(release): 7.0.0 2026-01-06 12:53:42 -08:00
81cd16e41b chore(release): 6.6.2 2026-01-05 16:57:51 -08:00
7ae520883a chore(release): 6.6.1 2025-12-18 10:31:10 -08:00
746b1b8e24 chore(release): 6.6.0 2025-12-17 17:43:58 -08:00
1f59aa2013 feat: replace transformers.js with direct ONNX WASM for Bun compatibility
- Remove @huggingface/transformers dependency (539MB native binaries)
- Add direct ONNX Runtime Web embedding engine
- Bundle all-MiniLM-L6-v2-q8 model (24MB, no runtime downloads)
- Works with Node.js, Bun, and bun build --compile
- Air-gap compatible: fully self-contained, no internet required

New WASM embedding components:
- WASMEmbeddingEngine: Main integration class
- WordPieceTokenizer: Pure TypeScript tokenizer
- EmbeddingPostProcessor: Mean pooling + L2 normalization
- ONNXInferenceEngine: Direct ONNX Runtime Web wrapper
- AssetLoader: Model file loading

Tests added:
- 11 WASM embedding integration tests
- 8 Bun compatibility tests

New npm scripts:
- test:wasm - Run WASM embedding tests
- test:bun - Run tests with Bun
- test:bun:compile - Build and run compiled binary
2025-12-17 17:42:37 -08:00
c1deb7a623 chore(release): 6.5.0
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 13:27:45 -08:00
ec6fe0c039 chore(release): 6.4.0 2025-12-11 08:41:14 -08:00
f0270cc568 chore(release): 6.3.2 2025-12-09 16:17:45 -08:00
f3765afb9e chore(release): 6.3.1 2025-12-09 09:38:05 -08:00
292be1b9cd chore(release): 6.3.0 - singleton GraphAdjacencyIndex architecture fix
Critical architectural fix for VFS tree corruption bug:
- GraphAdjacencyIndex singleton via storage.getGraphIndex()
- Auto-rebuild verbIdSet when LSM-trees have existing data
- Removed dual-ownership causing verbIdSet out of sync
- PathResolver cache invalidation on checkout/fork

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 12:55:35 -08:00
810b75647c chore(release): 6.2.9 - fix critical VFS bugs (directory corruption)
Bug fixes:
- Fix verbCountsByType optimization skipping Contains relationships
- Fix UnifiedCache not invalidated on path deletion
- Add fast path for sourceId + verbType queries (common VFS pattern)
- Save statistics on first entity of each type

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 11:22:41 -08:00
1da6048245 chore(release): 6.2.8 - deferred HNSW persistence for 30-50× faster cloud adds
Performance fix for GCS/S3/R2/Azure:
- Single add(): 7-11 seconds → 200-400ms
- Zero configuration - automatic for cloud storage
- flush() on close() ensures data durability

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 14:20:12 -08:00
a33b759c40 chore(release): 6.2.7 - simplify cloud storage to always-on write buffering
Performance & Consistency Improvements:
- Always-on write buffering for cloud adapters (GCS, S3, R2, Azure)
- Removes dynamic mode switching complexity (-204 lines)
- Consistent, predictable behavior regardless of load
- Preserves v6.2.6 cache-before-buffer fix

Cloud storage always benefits from batching - no reason for dynamic switching.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 13:43:11 -08:00
6449bb1afe chore(release): 6.2.6 - fix cloud storage read-after-write consistency
Fix add() → relate() race condition in cloud storage (GCS, S3, R2, Azure)

Problem:
- In high-volume mode, writes go to buffer instead of direct storage
- Cache was NOT populated when buffering
- add() returns but relate() fails with "Source entity not found"

Solution:
- Populate cache BEFORE adding to write buffer
- Ensures immediate read-after-write consistency
- Buffer still flushes asynchronously for performance

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 13:23:25 -08:00
e4bbd7fb0e chore(release): 6.2.5 - fix counts.byType() accumulation bug 2025-12-02 11:45:22 -08:00
ea53c11fea chore(release): 6.2.4 - fix asOf() COW property name mismatch 2025-12-02 11:22:17 -08:00
0ba6da405e chore(release): 6.2.3 - fix counts.byType({ excludeVFS: true }) returning empty
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 12:08:04 -08:00
e4ca3839e0 chore(release): 6.2.2 2025-11-25 15:41:12 -08:00
0c90eaa8cf chore(release): 6.2.1 - excludeVFS consistency + VFS statistics API 2025-11-25 12:37:44 -08:00
c0d3968ccf chore(release): 6.2.0 2025-11-20 15:24:59 -08:00
b7c2c6fc99 feat: VFS path resolution now uses MetadataIndexManager for 75x faster reads
Add 3-tier caching architecture to PathResolver for optimal performance
across all storage adapters (FileSystem, GCS, S3, Azure, R2, OPFS):

- L1: UnifiedCache (global LRU, <1ms)
- L2: PathResolver cache (local warm cache, <1ms)
- L3: MetadataIndexManager (roaring bitmap query, 5-20ms on GCS)
- Fallback: Graph traversal (graceful degradation)

Performance improvements:
- Cold reads: GCS/S3/Azure 1,500ms → 20ms (75x faster)
- Warm reads: All adapters <1ms (1,500x faster)

Works for all storage adapters with zero config. Automatically uses
MetadataIndexManager if available, falls back to graph traversal.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-20 10:30:58 -08:00
43300531a6 chore(release): 6.0.2 2025-11-20 09:55:31 -08:00
f5f998619a chore(release): 6.0.1 2025-11-20 08:42:35 -08:00
9730ca41e5 chore(release): 5.12.0 2025-11-19 09:00:49 -08:00
d624f39fce chore(release): 5.11.1 2025-11-18 16:30:36 -08:00
b27dda8251 chore(release): 5.11.0 2025-11-18 13:48:27 -08:00
28160a3052 chore(release): 5.10.4 2025-11-17 10:45:57 -08:00
53420f6c9a chore(release): 5.10.3 2025-11-14 16:23:05 -08:00
73557a53c6 chore(release): 5.10.2 2025-11-14 16:12:46 -08:00
9a8b7a6cd4 fix: critical blob integrity regression with defense-in-depth architecture (v5.10.1)
CRITICAL BUG FIX: v5.10.0 regressed the v5.7.2 blob integrity bug, causing
100% VFS file read failure. This fix restores functionality with production-grade
defense-in-depth architecture and comprehensive testing.

Problem:
- v5.10.0 reintroduced bug where BlobStorage.read() hashed wrapped data
- Symptom: "Blob integrity check failed" on every VFS file read
- Impact: 100% failure rate in Workshop application
- Root Cause: Missing defense-in-depth unwrap verification

The Fix:
1. Defense-in-Depth Unwrapping
   - Added unwrap verification in BlobStorage.read() before hash check (line 342)
   - Added unwrap for metadata parsing (line 314)
   - Ensures data is always unwrapped regardless of adapter behavior

2. DRY Architecture
   - Created binaryDataCodec.ts as single source of truth
   - Refactored baseStorage to use shared utilities
   - All 8 storage adapters now use same implementation

3. Comprehensive Testing
   - Added TestWrappingAdapter that actually wraps like production
   - 3 new regression tests validate the fix
   - Tests exercise real wrapping scenario that caused the bug

Architecture Improvements:
-  Defense-in-Depth: Unwrap at BOTH adapter and blob layers
-  DRY Principle: Single source of truth in binaryDataCodec.ts
-  Works Across ALL Storage Adapters (8 total)
-  Prevents Future Regressions: Real wrapping tests

Files Changed:
- NEW: src/storage/cow/binaryDataCodec.ts (single source of truth)
- FIXED: src/storage/cow/BlobStorage.ts (defense-in-depth unwrap)
- REFACTORED: src/storage/baseStorage.ts (uses shared codec)
- NEW: tests/helpers/TestWrappingAdapter.ts (real wrapping adapter)
- ADDED: 3 regression tests in tests/unit/storage/cow/BlobStorage.test.ts
- UPDATED: CHANGELOG.md, package.json (v5.10.1)

Related Issues:
- v5.7.2: Original bug - hashed wrapper instead of content
- v5.7.5: First fix - added unwrap to adapter (necessary but insufficient)
- v5.10.0: Regression - missing defense-in-depth in BlobStorage
- v5.10.1: Complete fix - defense-in-depth + DRY + tests

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-14 15:31:06 -08:00
50ece5e179 chore(release): 5.10.0 2025-11-14 12:57:01 -08:00
c4acc83a58 chore(release): 5.9.0 2025-11-14 11:46:44 -08:00
93d2d70a44 fix: resolve VFS tree corruption from blob errors (v5.8.0)
CRITICAL FIX: Single blob read error no longer corrupts entire VFS tree

Root Causes Fixed:
1. Uncaught blob errors in readFile() triggered VFS re-initialization
2. Race conditions in initializeRoot() created duplicate roots
3. Wrong root selection algorithm (oldest vs most children)

Architectural Solution:
- **Error Isolation**: Blob errors caught and re-thrown as VFSError
  VFS tree structure completely isolated from file content errors
  (src/vfs/VirtualFileSystem.ts:288-321)

- **Singleton Promise Pattern**: Prevents duplicate root creation
  Concurrent init() calls wait for same initialization promise
  Acts as automatic mutex without custom lock class
  (src/vfs/VirtualFileSystem.ts:180-199)

- **Smart Root Selection**: Selects root with MOST children (not oldest)
  Auto-heals existing duplicates on init()
  Logs cleanup suggestions for empty roots
  (src/vfs/VirtualFileSystem.ts:283-334)

Production Impact:
- Workshop production: 5 duplicate roots, 1,836 files orphaned
- After fix: Zero duplicate roots possible, auto-healing
- All 100 VFS tests pass 

Additional Fix: Remove Sharp native dependency (v5.8.0)

ImageHandler rewritten using pure JavaScript:
- exifr (already installed) for EXIF extraction
- probe-image-size for image dimensions/format
- Zero native dependencies (removed 10MB of native binaries)
- All 25 image handler tests pass 
- No more test crashes from Sharp/libvips worker thread issues

Test Results:
- VFS tests: 100/100 pass 
- Image handler tests: 25/25 pass 
- Overall: 1157/1200 tests pass (18 pre-existing timeout issues)
- Build: Successful, zero TypeScript errors 

Features Complete (TIER 1 - v5.8.0):
- Transaction system (36 unit + 35 integration tests)
- Duplicate check optimization (O(n) → O(log n))
- GraphIndex pagination
- Comprehensive filter documentation
2025-11-14 11:27:35 -08:00