memvid
Forensics & Incident ResponseFeatures
- Single‑file portable AI memory layer with instant retrieval
- Append‑only Smart Frames for versioned, crash‑safe memory timelines
- Model‑agnostic, infrastructure‑free operation across languages
Recent releases
View all 10 releases →- Added `stale_index_skips` counter to `SearchResponse`
- Exposed `stale_index_skips` in Python and Node SDK responses
Full changelog
v2.0.139
Release Date: March 13, 2026
Overview
This release completes the fix for MV005 (Time index track is invalid: frame id out of range) by extending graceful stale frame_id handling to all search paths — find(), ask(), Tantivy, lex fallback, vec search, and temporal metadata lookups.
🐛 Bug Fixes
MV005 crash in find() and ask() search paths — Issue #196 (continued)
- v2.0.138 fixed the
timeline.rspath only; stale frame_ids in Tantivy evaluation, snippet assembly, lex fallback, and temporal metadata lookups still caused hard crashes - All 5 search-path locations now gracefully skip stale frame_ids with
tracing::warn!instead of returningMV005errors - Added
stale_index_skipscounter onSearchResponseso callers can detect index degradation - Exposed
stale_index_skipsin both Python and Node SDK responses (only present when > 0) - CLI search command updated to include the new field
Root cause: Search indexes (Tantivy/lex) can hold frame_ids that no longer exist in toc.frames due to instant_index writing WAL sequence numbers, stale on-disk lex segments, or reopening files where the index loaded from a prior state.
📚 Related Issues
- #196 —
ask()fails with "Time index track is invalid: frame id out of range" - #204 —
commit()raisesAttributeErroron_MemvidCore(tracked, not addressed in this release)
Fixed `lex_enabled`/`vec_enabled` state loss on file reopen and prevented `ask()` crashes from out‑of‑range frame IDs.
Full changelog
v2.0.138
Release Date: March 3, 2026
Overview
This release fixes two SDK issues: lex_enabled/vec_enabled state not persisting after re-opening .mv2 files, and ask() crashing with "frame id out of range" on files with inconsistent time indexes.
🐛 Bug Fixes
lex_enabled/vec_enabled reset to None on re-open — Issue #194
- Added
lex_enabledandvec_enabledfields to the coreStatsstruct so SDKs can read runtime search engine state - Python SDK now auto-detects
vec_availablefrom disk state when opening a file (matches the pattern already used inask()) stats()in both Python and Node SDKs now includeslex_enabledandvec_enabledkeys- Previously,
use()with defaultenable_vec=Falsewould reportvec_available=falseeven when the file contained a vec index, causingfind(mode="semantic")to error immediately
ask() "frame id out of range" on fresh .mv2 files — Issue #196
build_timeline()now gracefully skips time index entries that reference out-of-range frame IDs instead of returning a hard error- Logs a
tracing::warn!for observability when skipping invalid entries - This matches the existing graceful-skip pattern used in
ask.rsfallback timeline responses
📚 Related Issues
- #194 —
lex_enabled/vec_enabledreset toNoneon re-open - #196 —
ask()"frame id out of range" on fresh .mv2 files
- Removed vulnerable SheetJS `[email protected]` dependency from `@memvid/sdk` (CVE-2024-22363, CVE-2023-30533).
- Removed SheetJS `[email protected]` dependency – addresses CVE-2024-22363 and CVE-2023-30533
- CVE-2023-30533
- Structured XLSX extraction pipeline with table detection, OOXML metadata parsing, and semantic chunking.
- New `XlsxReader::extract_structured()` API providing high‑accuracy spreadsheet extraction.
Full changelog
v2.0.157
Release Date: February 15, 2026
Overview
This release adds a structured XLSX extraction pipeline with table detection, OOXML metadata parsing, and semantic chunking. It also removes a vulnerable xlsx (SheetJS) dependency from the Node SDK, fixes the CLI deploy pipeline for proprietary crate handling, and includes clippy/lint fixes and documentation updates.
🚀 New Features
Structured XLSX Extraction Pipeline (memvid-core)
- New
XlsxReader::extract_structured()API for high-accuracy spreadsheet extraction - Automatic table boundary and header detection via heuristics and OOXML table definitions
- Row-aligned semantic chunking that never splits rows across chunk boundaries
- Formats rows as
Header: Value | Header: Valuepairs for optimal search accuracy - OOXML metadata parsing: number formats (dates, currency, percentages), merged cell regions, named table definitions
- Column type inference (text, integer, float, date, currency, percentage, boolean)
- Backward-compatible flat text output alongside structured chunks
- New modules:
xlsx_chunker,xlsx_ooxml,xlsx_table_detect
Remove Vulnerable xlsx Dependency — Issue #198
- Removed SheetJS
[email protected]from@memvid/sdk(CVE-2024-22363, CVE-2023-30533) - Production code already used ExcelJS — only example files were updated
- Downstream users no longer receive Dependabot security alerts from
@memvid/sdk
CLI Deploy Fix: Proprietary Crate Handling
- Made
memvid-ghostpackoptional inmemvid-ask-modeland removed from workspace members - CI builds no longer fail when proprietary crates are absent (
.gitignore'd) - Ghost model kind returns a clean error when the runtime is unavailable
🐛 Bug Fixes
- Fixed clippy pedantic lints (
implicit_clone,cast_possible_truncation) - Fixed
dead_codewarning forpropagate_merged_cells - Resolved VecIndexManifest model field lint
xlsx_structuredtests now gracefully skip on CI when fixture file is absent
📝 Documentation
- Chinese (Simplified) README translation (#193 by @nightire)
- README updates (@mo-omar-0197)
📚 Related Issues & PRs
- #198 — Remove vulnerable xlsx (SheetJS) dependency (@intergrado-cg report, @Olow304 fix)
- #193 — Chinese README translation (@nightire, merged by @sharafdin)
🙏 Contributors
Thank you to all contributors who made this release possible:
- @Olow304 — Structured XLSX pipeline, xlsx vulnerability fix, CLI deploy fix, clippy/lint cleanup
- @nightire — Chinese (Simplified) README translation
- @sharafdin — PR review and merge
- @mo-omar-0197 — README updates
- @intergrado-cg — Reported xlsx security vulnerability (#198)
- Frame-level ACL enforcement across search, ask, and replay paths (opt‑in)
- Strict vector index model consistency to prevent silent mismatches
- OpenAI API added as an embedding provider option
Full changelog
Release Date: February 6, 2026
Overview
This release adds frame-level ACL (Access Control Lists), vector index model consistency enforcement, symspell data corruption fixes, and several CI/build improvements. It also includes README documentation updates and ONNX Runtime noise suppression on macOS.
🚀 New Features
Frame-Level ACL Enforcement
- Added ACL (Access Control List) plumbing across search, ask, and replay paths
- Per-frame access control enables fine-grained permission enforcement on chunks
- Robustness fixes for ACL boundary conditions
- New tests and benchmark/example updates for ACL workflows
Vector Index Model Consistency (PR #188)
- Enforces strict binding between vector index and embedding model
- Prevents silent model mismatch corruption when switching embedding providers
- Ensures vector search results are always consistent with the model used at index time
SymSpell Cleanup Fix & Dictionary Tooling (PR #187)
- Fixed
symspell_cleanupdata corruption bug - Added dictionary download tooling for easier setup
- More reliable spell-correction preprocessing for search queries
OpenAI API Embedding Provider (PR #173)
- Added OpenAI API as an embedding provider option
- Enables using OpenAI embeddings alongside local ONNX models
- Flexible embedding backend selection
🐛 Bug Fixes
ONNX Runtime Stderr Suppression (macOS)
- Suppressed noisy ONNX Runtime warnings on macOS stderr
- Cleaner console output during normal operation
CI Build Fixes
- Added missing
#[cfg(feature = "lex")]guards for tantivy-dependent code - Fixed CI cache key to use
Cargo.tomlhash instead of missingCargo.lock - Committed
Cargo.lockfor reproducible CI builds - Moved target-specific deps section after main dependencies
- Ran
cargo fmtonclip.rsandtext_embed.rs
Lint Fixes
- Resolved redundant closure lints in
tantivy.rsandsearch/mod.rs - General lint formatting cleanup
📝 Documentation
- Added Memvid v1 deprecation warning to README (@sharafdin)
- README updates and improvements (@mo-omar-0197)
📊 Performance & Reliability
- ACL enforcement: Zero-overhead when no ACL policy is set
- Model consistency: Prevents silent search quality degradation from model mismatch
- SymSpell fix: Eliminates data corruption in spell-correction preprocessing
📚 Related Pull Requests
- #188 — feat: enforce vector index model consistency (@0x-pankaj)
- #187 — feat: fix symspell_cleanup data corruption and add dictionary tooling (@0x-pankaj)
- #173 — feat: add OpenAI API embedding provider (@0x-pankaj)
- Direct push — Frame-level ACL enforcement across search/ask/replay (@Olow304)
🎯 Migration Notes
For Users
- No breaking changes — all existing
.mv2files remain compatible - ACL is opt-in; existing memories work without any ACL configuration
- Vector model consistency is enforced automatically on new indexes
For Developers
- New
aclScopefield available on API keys (nullable, no migration needed) - ACL types available in
types/acl.rs - Embedding model is now strictly bound to vector index at creation time
🙏 Contributors
Thank you to all contributors who made this release possible:
- @Olow304 — ACL enforcement, CI fixes, lint cleanup
- @0x-pankaj — Vector model consistency, symspell fix, OpenAI embeddings
- @sharafdin — Documentation (deprecation notice)
- @mo-omar-0197 — README updates
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.