Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: graph-memory/graphmemory
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: graph-memory/graphmemory
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: dev
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 9 commits
  • 53 files changed
  • 1 contributor

Commits on Mar 31, 2026

  1. feat: add isolated store interface types for SQLite migration

    Self-contained type definitions for the new storage layer replacing
    Graphology + JSON. Covers all 6 graphs, cross-graph links, tags,
    attachments, projects, team, and workspace metadata.
    
    Key design decisions:
    - All entity IDs numeric (autoincrement), slugs for external use
    - Store is fully synchronous (better-sqlite3), embeddings passed from outside
    - SearchQuery supports text (FTS5), embedding (sqlite-vec), or both
    - Cross-graph links via junction table, no proxy nodes
    - Tags and attachments as shared stores across all graphs
    - ProjectScopedStore for multi-project workspaces
    - TeamStore at workspace level with numeric member IDs
    - MetaMixin on all stores for arbitrary key-value metadata
    - Detail types (NoteDetail, TaskDetail, etc.) include relations + crossLinks
    prih committed Mar 31, 2026
    Configuration menu
    Copy the full SHA
    ba47643 View commit details
    Browse the repository at this point in the history
  2. feat: sqlite-vec PoC — verified better-sqlite3 + FTS5 + vec0

    Comprehensive proof-of-concept validating SQLite stack for store:
    - sqlite-vec v0.1.9 loads with better-sqlite3
    - WAL mode, foreign keys, CASCADE deletes
    - FTS5 keyword search with sync triggers
    - Vector KNN search (384d + 1024d)
    - Hybrid RRF fusion (FTS5 + vector)
    - JSON arrays via json_each()
    - Nested transactions (savepoints) + rollback
    - PRAGMA user_version migration pattern
    - File persistence (close/reopen)
    
    Benchmarks (384d/100k): insert 28µs/row, vec 36ms/search, FTS5 0.5ms/search
    Benchmarks (1024d/100k): insert 47µs/row, vec 99ms/search, FTS5 0.6ms/search
    
    Key findings:
    - sqlite-vec requires BigInt for rowid (db.defaultSafeIntegers(true))
    - vec0 not cleaned by CASCADE — store must DELETE manually
    - 384d recommended over 1024d for large datasets (3.6x faster search)
    prih committed Mar 31, 2026
    Configuration menu
    Copy the full SHA
    e29823a View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    e4cfbe3 View commit details
    Browse the repository at this point in the history

Commits on Apr 1, 2026

  1. feat(store): unified edges, single-table indexed stores, graph-prefix…

    …ed schema
    
    Major refactoring of store types and schema:
    - Unified Edge type replaces Relation + CrossLink (one edges table)
    - Code, Docs, Files: single table per graph with kind field (no separate file/symbol tables)
    - Graph-prefixed table names: knowledge, tasks, epics, skills, code, docs, files
    - Hierarchy via edges (file→symbol, file→chunk, dir→file) instead of FK parent refs
    - Detail types simplified: edges: Edge[] instead of separate relation arrays
    - SearchResult.id changed to number (numeric IDs throughout)
    - All 22 tests passing
    prih committed Apr 1, 2026
    Configuration menu
    Copy the full SHA
    5a4110c View commit details
    Browse the repository at this point in the history
  2. feat(store): unified edges, single-table indexed stores, graph-prefix…

    …ed schema
    
    - Unified Edge type replaces Relation + CrossLink (one edges table)
    - Code, Docs, Files: single table per graph with kind field
    - Cleanup triggers on all entity tables (edges + attachments + vec0)
    - Tags as entities with edges (kind='tagged'), inline in records
    - Attachments: metadata only (url optional, no BLOB)
    - CASCADE on all project_id FKs
    - Search tests: keyword, vector, hybrid, project isolation
    - All imports use @/ alias
    - 31 tests passing
    prih committed Apr 1, 2026
    Configuration menu
    Copy the full SHA
    d2c4475 View commit details
    Browse the repository at this point in the history
  3. feat(store): Phase 3 — Team, Projects, Attachments stores + cascade t…

    …ests
    
    - SqliteTeamStore: CRUD, slug uniqueness, getBySlug, list, MetaMixin
    - SqliteProjectsStore: CRUD, cascade delete via FK + triggers
    - SqliteAttachmentsStore: metadata registry (add/remove/list), optional url
    - Wired team + projects in SqliteStore
    - Fixed cleanup triggers: code/docs/files now also clean attachments
    - Cascade delete tests: edges, attachments, vec0, tags all verified
    - 70 tests passing (31 sqlite-specific + 39 contract)
    prih committed Apr 1, 2026
    Configuration menu
    Copy the full SHA
    a00cd32 View commit details
    Browse the repository at this point in the history
  4. feat(store): Phase 4 — Knowledge, Tasks, Skills stores + EntityHelpers

    Knowledge, Tasks (with Epics), Skills stores with UUID slugs, version
    conflicts, hybrid search, tags via edges, batch fetching, and cleanup
    triggers. EntityHelpers extracts shared tag/attachment/edge logic.
    prih committed Apr 1, 2026
    Configuration menu
    Copy the full SHA
    8f9aa61 View commit details
    Browse the repository at this point in the history
  5. feat(store): Phase 5 — Code, Docs, Files indexed stores

    Indexer-driven stores with updateFile/removeFile pattern, cleanup via
    triggers, hybrid search (FTS5+vec0 for code/docs, LIKE+vec0 for files),
    cross-file edge resolution, directory auto-management, and json_each
    symbol lookup for docs.
    prih committed Apr 1, 2026
    Configuration menu
    Copy the full SHA
    7a47193 View commit details
    Browse the repository at this point in the history
  6. feat(store): Phase 6 — ProjectScopedStore, edges, integration + audit…

    … fixes
    
    ProjectScopedStore wraps all sub-stores with fixed projectId, cached
    via store.project(id). Full edge CRUD at both scoped and workspace
    levels. GraphName extended with epics/tags.
    
    Audit fixes: recursive ensureDirectory chain, minScore in all
    FilesStore search modes, orphaned tags cleanup in setTags, removed
    template literal SQL interpolation, simplified isExported check.
    prih committed Apr 1, 2026
    Configuration menu
    Copy the full SHA
    8bf4629 View commit details
    Browse the repository at this point in the history
Loading