Skip to content

0.1.6

Choose a tag to compare

@kevinkaupert kevinkaupert released this 26 Sep 06:03
· 127 commits to main since this release
eb469aa

MemVector 0.1.6 represents an important architectural milestone. This release sharpens the core MemVector philosophy: prioritizing high-dimensional semantic vector embeddings and intentional, typed domain relationships over raw, untyped Obsidian link structures. It also introduces per-hop GraphRAG context quotas, a live scrollable context preview, independent synthesis hop controls, and a toggle to declutter the 2D canvas from intermediate relation notes.


Highlights

1. Strengthening the Pure MemVector Paradigm: Opt-In WikiLinks (#100)

  • Focused Knowledge Graph: Standard Obsidian [[WikiLinks]] are no longer automatically converted into untyped LINKS_TO graph relations by default (includeWikiLinksAsRelations: false).
  • Semantic Integrity: The SQLite graph store, GraphRAG multi-hop traversal, and 2D force simulation topology are now strictly reserved for semantic embeddings and explicit, typed relationships (wiki/relations/* created via the Relation Builder).
  • Opt-In Compatibility: Users who wish to continue tracking raw wiki links in the graph store can re-enable the toggle under Settings → Knowledge Domain & Embedding Provider. Documented in ADR-0001.

2. GraphRAG Per-Hop Quotas & Live Context Preview (#89, #103)

  • Independent Synthesis Hop Depth (#89): Decoupled GraphRAG synthesis traversal depth (1–3 hops) from visual canvas edge hops.
  • Balanced Per-Hop Quotas (#103): Replaced flat neighbor cuts with a per-hop level quota (hopLevelNeighborLimit, default: 2) and round-robin assembly across hops, ensuring hop-1 notes no longer crowd out deeper conceptual connections.
  • Configurable Context Budgets: Moved hardcoded context caps into plugin settings (vectorNeighborLimit, totalContextLimit, agentsGuidelinesCharCap, contentCapChars).
  • Vector Similarity Gate: Added minVectorSimilarity (default: 0.75) with an interactive live slider in the toolbar Synthesis section.
  • Live Scrollable Context Preview: The Synthesis section now displays an interactive preview of all candidate context notes live on selection change, annotated with channel badges ([v], [g], [v+g]), hop distance, and similarity scores.

3. 2D Scatter Plot Relation Note Toggle (#59)

  • Clean Concept Views: Added a toggle in the scatter plot toolbar under View (lblShowRelationNotes) to hide intermediate relation notes (wiki/relations/* / type: relation).
  • Zero Layout Shift: Toggling relation visibility filters rendering, hit-testing, auto-fit, and lasso selection instantly without recalculating or resetting node coordinates. Direct edges between regular concept notes remain intact.

4. Resilient SQLite Storage Path Resolution (PR #97)

  • Manifest-Relative Paths: Resolved SQLite database and WASM file paths using this.manifest.dir instead of this.manifest.id, ensuring reliable database access when plugins are cloned or installed into custom folder names.
  • Automated Directory Creation: Ensures the plugin directory exists via app.vault.adapter.mkdir before writing memvector-local.sqlite and WASM binaries, preventing ENOENT errors.

5. Codebase Hardening & Architecture Cleanups (#72, #78, #79, #81, #83, #90)

  • Canonical Identity at Store Boundary (#81): Unified pathToId across storage boundaries, resolving SQLite vector dual-identity and path encoding edge cases.
  • Position Provider Contract (#78): Replaced runtime duck-typing with a type-safe NodePositionProvider interface, and extracted shared vaultFilter.ts.
  • Deduplication (#79): Consolidated duplicate implementations of string hashing, node map indexing, coordinate projections, and frontmatter parsing.
  • Ghost Backend Cleanup (#72): Aligned storeFactory and documentation to eliminate unbacked claims.
  • Model Tiers & Cleanup (#83): Added deepseek-reasoner to the frontier tier, eliminated caller array mutation in RelationBuilderModal, and ensured canvas interaction cleanup on teardown.

6. Full Localization & Expanded Test Suite (307 Passing Tests)

  • Complete DE/EN UI Parity (#69, PR #106): Fully localized ribbon icons, commands, notices, indexing progress, synthesis modals, and canvas controls without mixed language fragments.
  • 60 New Automated Tests: Expanded test suite from 247 to 307 automated unit and adversarial tests across 39 test files, with zero errors on ESLint.

Changelog

Added

  • Opt-in setting includeWikiLinksAsRelations (default: false) to restrict graph extraction and topology forces to explicit typed relations (#100, PR #101).
  • Quick toggle in 2D scatter plot toolbar under View to show or hide relation notes without layout reset (#59, PR #99).
  • Per-hop GraphRAG context quotas (hopLevelNeighborLimit) and round-robin assembly across hop levels (#103, PR #105).
  • Live scrollable context preview with compact badges (v, g, v+g, score, hops) and real-time similarity slider in the toolbar Synthesis section (#103, PR #105).
  • Independent GraphRAG hop depth control (1–3 hops) in the toolbar Synthesis section (#89, PR #98).
  • Settings-based context limits for vector neighbors, total context, and guideline caps (#103, PR #105).
  • ADR-0001: Architectural decision record on opt-in WikiLink relation extraction.

Changed

  • GraphRAG neighbor assembly now respects per-hop quotas rather than cutting off deeper hops prematurely (#103).
  • SQLite storage path now resolves from this.manifest.dir with automated directory creation before write (PR #97).
  • Canvas node position provider formalized as NodePositionProvider interface (#78, PR #94).
  • Model tier routing now includes deepseek-reasoner and OpenRouter frontier endpoints (#83, PR #96).

Fixed

  • Fixed SQLite database and WASM initialization failing with ENOENT when plugin folder name diverges from manifest ID (PR #97).
  • Fixed dual-identity discrepancy for vector IDs across store boundaries (#81, PR #92).
  • Fixed caller array mutation in RelationBuilderModal (#83, PR #96).
  • Fixed canvas listener leaks by registering clean interaction teardown on view close (#83, PR #96).
  • Fixed hardcoded UI strings, error notices, and toolbar labels across the plugin by routing them through the i18n layer (#69, PR #93, PR #106).
  • Fixed lost relation edits and added validation for default types and duplicate filenames (#90).

Documentation

  • Documented ADR-0001 for opt-in WikiLink relation extraction in docs/adr/0001-wikilinks-opt-in-graph-relations.md.
  • Updated README.md, CHANGELOG.md, docs/ARCHITECTURE.md, docs/CONFIGURATION.md, and docs/GRAPHRAG.md.

Installation & Upgrade

Community Plugins (Automatic)

Search for MemVector Knowledge Engine in Obsidian Community Plugins and click Update (or Install).

Manual Installation

  1. Download main.js, manifest.json, and styles.css from the release assets on GitHub.
  2. Copy all three files into your vault's plugin directory:
    <vault>/.obsidian/plugins/obsidian-memvector-knowledge-engine/
  3. Reload Obsidian or toggle the plugin off and on under Settings → Community Plugins.