Skip to content

Releases: jafreck/Lore

v0.4.0

30 Mar 05:04
534562e

Choose a tag to compare

Lore v0.4.0

Full migration to SCIP-first indexing architecture. Tree-sitter is completely removed.

Highlights

  • SCIP+LSP architecture — Single-pass SCIP indexing for 23 languages, LSP enrichment overlay
  • C symbol directionality fix — Header forward declarations correctly resolve to implementations
  • Macro name extraction — Preprocessor macros indexed with real #define names via SCIP occurrence ranges
  • Test coverage at 92% — 1,664 tests, suite rewritten from scratch

Breaking Changes

  • Tree-sitter dependencies removed — no native grammar builds required
  • Minimum Node.js 22 (unchanged)

Features

  • SCIP+LSP architecture replaces tree-sitter extraction (#458)
  • Parent symbol tracking from SCIP descriptor chains (#249)
  • Virtual dispatch edge materialization (#221)

Fixes

  • Forward declaration → definition directionality for C headers (#460)
  • Preprocessor macro name recovery from SCIP ranges (#460)
  • SCIP backtick-quoted identifiers handled as atomic names (#460)
  • Call-graph resolution scoped by layer (#397)
  • TOML array parsing handles quoted commas (#446)
  • 20+ additional bug fixes

Refactoring

  • CLI, DB, schema, indexer, and enrichment modules split into focused units (#438#444)

Full Changelog

v0.3.9...v0.4.0

v0.3.9

21 Mar 17:53
e981c73

Choose a tag to compare

v0.3.9

Features

  • Virtual dispatch materializationlore_graph now materializes virtual dispatch edges, enabling polymorphic call resolution through the call graph (#221)
  • Automatic transitive traversallore_graph and lore_dependents now automatically follow edges up to 5 hops; user-facing depth and limit parameters removed in favor of sensible internal defaults (#221)
  • Truncation flaglore_graph and lore_dependents results include a truncated field when results hit the internal limit

Fixes

  • Virtual dispatch follow-up — corrected edge cases in SCIP virtual dispatch resolution (#222)
  • Tree-sitter end_line — fixed end-line calculation in tree-sitter source indexing (#219)

Benchmarks & Tests

  • Expanded Postgres benchmark question set with corrected expected answers (#217, #218)
  • Call-graph focused benchmark suite (#219)
  • Structured benchmark report output (#223)

Docs

  • Updated lore_graph and lore_dependents tool descriptions in README and architecture docs to reflect automatic transitive traversal and virtual dispatch materialization

Full changelog: v0.3.8...v0.3.9

v0.3.8

16 Mar 00:02
a564531

Choose a tag to compare

v0.3.8

Features

  • Incremental indexing — baseline + overlay architecture for fast file-level re-indexing without full rebuilds (#213)
  • SCIP auto-install — auto-install SCIP indexers and generate compile_commands.json for C/C++ (#211)
  • Auto-generate tsconfig — broad tsconfig generation for TypeScript SCIP indexing (#205)
  • New MCP toolslore_trace (execution path tracing), lore_diff (API surface diffing), lore_cohesion (module cohesion metrics), lore_dependents (unified reverse-dependency queries) (#198, #201, #202, #204)
  • Auto-index on MCP startmcp --root now indexes automatically (#182)
  • Benchmark overhaul — Gson + Postgres repos, per-test coverage infra, ground truth updates (#206)

Refactors

  • Pre-release consolidation — removed ~850 lines of dead code, backward-compat shims, and code duplication (#215):
    • createLoreMcpServer() - createLoreMcpServer() - createLoreMcpServer() - createLoreMcpServer() - createLoreMcpServer() - cray - creat(DDL - createLoreMcpServer() - createLoreMcpServer() - createLoreMcpServer() - createLoreMcpServer() - createLoreMcpng - createLoreMcpServer() - createLoreMcpServer() - createLoreMcpServer() - createLoreMcpServer() ark - createLoreMcpServer() - createLoreMcpServer() - createLoreMcpServer() - createLoreth - createLoreMcpServer() - createLoreMcpServer() - createLoreMcpServer() - createLoreMcpServer() - createLoreMcpServer() - cray - creat(DDL - createLoreMcpServer() - createLoreMcpServer() - createLoacO - createLoreMcpServer() - createLoreMcpServer() - `createLoreMcpServer)
                    • -path storage (#20- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -path storage eferences; added new tools to tool table and mermaid diagram
  • Added CLAUDE.md project instructions (#214)
  • Added docs/incremental-index-design.md and docs/complex-codebase-questions.md
  • README refresh with current tools and architecture (#207)

Full changelog: v0.3.7...v0.3.8

v0.3.7

12 Mar 06:41
5835552

Choose a tag to compare

v0.3.7

Features

  • Benchmark suite overhaul — overhauled copilot benchmark suite with indexing performance improvements, full prompts in results, and improved scorer arrow-line matching (#181, #183)

Refactors

  • Removed low-value MCP tools — removed lore_annotations, lore_coverage, lore_writeback, lore_analyze, lore_architecture, and module edge kind from lore_graph, reducing tool surface for cleaner agent workflows (#186)

Fixes

  • Improved benchmark scorer arrow-line matching and resolved dynamic import handling (#183)

Docs

  • Updated README benchmark numbers (8.8× faster, 97% fewer tokens, +33pp correctness)
  • Improved README mermaid diagram layout and fixed benchmark-results formatting (#185)
  • Removed stale tool references from README.md and docs/architecture.md tool tables and mermaid diagrams

Full changelog: v0.3.6...v0.3.7

v0.3.6

11 Mar 09:05
c2e330a

Choose a tag to compare

v0.3.6

Features

  • SCIP-primary architecture — SCIP indexers are now the default source stage for all languages that have one; tree-sitter is the fallback. New src/scip/ module directory with config, enrichment coordinator, index reader, registry, and protobuf definitions. New ScipEnrichmentStage pipeline stage writes definition locations and type metadata from SCIP data before LSP enrichment. (#163)
  • Benchmark library — new benchmark test suite for evaluating Lore agent performance against ground-truth answers (#176)

Fixes

  • symbol_relationships.line is now nullable for missing definition locations (#177)

Refactors

  • Domain directory restructuresrc/ reorganized from flat indexer/ into domain directories: parsing/, discovery/, git/, lsp/, db/, docs/, embeddings/, resolution/, server/, testing/, scip/ (#175)
  • Extractor condi- Extractor condi- Extractor condi- Extractor condi- ExtractorCo- Extractor cond, SCIP default testing,- Extractor condi-

#####ocs

  • Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Upd- Updgelog:** v0.3.5...v0.3.6

v0.3.5

10 Mar 16:59
85dbfcc

Choose a tag to compare

v0.3.1 — Correctness fixes

Bug fixes (6)

Critical

  • cli.ts: Fix wrong table names in MCP startup stats (call_graphsymbol_refs, documentationdocs) — totalEdges and totalDocs previously always reported 0

High

  • source-index.ts: NULL out cross-file symbol_refs.callee_id, type_refs.type_id, and symbol_relationships.target_symbol_id before deleting a file in update mode — prevents FK constraint violation that aborted the entire update transaction

Medium

  • source-index.ts: Replace single wrapping transaction with batched transactions (200 files/batch) for crash-resilient checkpointing

Low

  • import-resolution.ts, lsp-enrichment.ts, dependency-api.ts: Wrap bulk writes in transactions (~100x faster for large codebases)
  • embedding.ts: Chunk symbol embedding deletes into batches of 900 to stay within SQLite SQLITE_MAX_VARIABLE_NUMBER limit

Tests

  • 4 new regression tests covering all fixes (1,157 total tests pass)

v0.3.4

10 Mar 03:32
d0f3997

Choose a tag to compare

v0.3.4

Features

  • Native Node.js embeddings (#158) — Replaced the Python subprocess embedding system (SentenceTransformersProvider + torch + sentence-transformers) with TransformersJsProvider using @huggingface/transformers. Embedding models now run natively in Node.js via ONNX Runtime — no Python, pip, or torch required. Lore is now fully self-contained on Node >= 22.

  • New default embedding model — Changed from Qwen/Qwen3-Embedding-4B (4B params, GPU + Python required) to nomic-ai/nomic-embed-text-v1.5 (0.1B params, 768-dim, CPU-friendly, ONNX-ready, Matryoshka dimension support).

Breaking Changes

  • SentenceTransformersProvider removed from public API → use TransformersJsProvider
  • Qwen3EmbeddingProvider factory removed
  • ensurePythonDeps removed (no longer needed)
  • Default embedding model changed to nomic-ai/nomic-embed-text-v1.5

Docs

  • Updated README.md embeddings section (Python → Transformers.js)
  • Updated docs/architecture.md embedder module description and pipeline diagram

Internal

  • Removed src/indexer/ensure-python-deps.ts and its tests
  • Added @huggingface/transformers@^3.8.1 dependency

Full Changelog: v0.3.3...v0.3.4

v0.3.3

10 Mar 02:47
792f316

Choose a tag to compare

v0.3.3

Features

  • Reverse/inbound graph queries (#151) — lore_graph now accepts target_id for inbound edge queries across all five graph kinds (call, import, module, inheritance, type_dependency). Enables "who calls X?" and "what depends on X?" questions that were previously impossible without dumping all edges.

Fixes

  • 18 extractor bug fixes + grammar hardening (#148) — Comprehensive parsing audit across all extractors: fixed SYMBOL_NODE_TYPES completeness in 12 extractors, added missing C++ extraction patterns (enums, typedefs, forward declarations), eliminated empty-name symbol leaks in 6 extractors, added pipeline-level empty-name guard. Swapped incompatible grammars for Lua, Zig, and Elm. Added ESM-only grammar fallback and Zig dual-grammar support.
  • Child process cleanup on SIGINT/SIGTERM (#156) — New process-tracker module ensures Python embedding s- Child process cleanup on SIGINT/SIGTERM (#156) — New is- **Child procesha- **Child process cyn- **Child process ore - **Child psec- **Child process cleanup on SIGINT/SIGTERM** (#156) — New process-trackermodule ensures Python embedding s- **Child process cleanup on SIGINT/SIGTERM** (#156) — Newis- **Child procesha- **Child process cyn- **Child process ore - **Child psec- Child process cleanup on SIGINT/SIGTERM (#156) �dcod- **Chilon references).

Internal

  • Dart support removed (#148, #150) — No compatible tree-sitter grammar exists; language count 24 → 23.
  • LSP smoke test coverage (#150) — Real-server smoke tests for TypeScript and Pyright LSPs.
  • Test hardening (#148) — Removed all test.skipIf(!result) patterns; all 1,385 tests pass with 0 skipped.

Full Changelog: v0.3.2...v0.3.3

v0.3.2

09 Mar 22:01
21030f4

Choose a tag to compare

What's Changed

  • fix(indexer): restore full C symbol extraction — 5 bug fixes by @jafreck in #146
  • chore: bump version to 0.3.2 by @jafreck in #147

Full Changelog: v0.3.1...v0.3.2

v0.3.1

09 Mar 20:48
7e4e1c3

Choose a tag to compare

v0.3.1 — Correctness fixes

Bug fixes (6)

Critical

  • cli.ts: Fix wrong table names in MCP startup stats (call_graphsymbol_refs, documentationdocs) — totalEdges and totalDocs previously always reported 0

High

  • source-index.ts: NULL out cross-file symbol_refs.callee_id, type_refs.type_id, and symbol_relationships.target_symbol_id before deleting a file in update mode — prevents FK constraint violation that aborted the entire update transaction

Medium

  • source-index.ts: Replace single wrapping transaction with batched transactions (200 files/batch) for crash-resilient checkpointing

Low

  • import-resolution.ts, lsp-enrichment.ts, dependency-api.ts: Wrap bulk writes in transactions (~100x faster for large codebases)
  • embedding.ts: Chunk symbol embedding deletes into batches of 900 to stay within SQLite SQLITE_MAX_VARIABLE_NUMBER limit

Tests

  • 4 new regression tests covering all fixes (1,157 total tests pass)