Skip to content

Releases: isink17/codegraph

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 12 May 16:28

C++ call graph support, DB rebuild, asset filtering, pagination correctness, and version UX improvements.

Added

  • codegraph index . --rebuild — drops the repo database before indexing; implies --force. Use after parser or indexer changes when stale rows must be cleared. Requires exclusive DB access (stop codegraph serve first if locked).
  • codegraph version command and codegraph --version / codegraph -v flags — print installed version without any network calls.
  • C++ call graph: member-pointer (->), member-value (.), static-qualified (::), and direct calls are now extracted as edges with structured evidence, enabling find_callers and find_callees across legacy C++ codebases.
  • Binary/asset deny-list: the indexer now hard-skips files by extension before hashing or parsing. Skipped categories: Windows build artifacts (.exe, .dll, .lib, .pdb, .obj, …), archives (.7z, .zip, .rar), images, fonts, audio, video, game/engine formats (.anm, .dff, .bsp, .dat, .bin, …), and documents (.pdf, .doc, .chm).
  • Per-extension unknown coverage: files landing in the unknown language bucket now accumulate per-extension sub-counts in language_coverage.unknown.extensions.
  • Versioncheck improvements: overridable HTTP client and URL for testability, raised check timeout from 2 s to 5 s, structured latestReleaseResult type, comprehensive test suite.

Changed

  • C++ qualified names now use Container::Name (double-colon) instead of Module.Container.Name (dot). Fixes duplicated container names like ApmMap.ApmMap::LoadWorldMap.
  • find_callers / find_callees pagination overhauled: all candidate IDs are collected (resolved edges + unresolved dst_name fallback), deduplicated, sorted once by qualified_name / start_line / start_col / id, then a single offset + limit slice is returned. Previously each path was paginated independently, producing incorrect or truncated pages when both paths had results.
  • FindCallees fallback lookup is no longer N+1: distinct dst_name values are fetched in one query; symbol resolution is batched across all names rather than calling lookupSymbolIDs once per cursor row.
  • startupVersionCheck is now deferred past the version flag / version command check, so codegraph --version and codegraph version never trigger a network round-trip.
  • clean command description changed from "clean index data" to "database maintenance" to reflect its actual scope (VACUUM, FTS optimize, ANALYZE, WAL checkpoint, incremental vacuum).
  • Language coverage update refactored into updateLanguageCoverage helper; unknown files now report per-extension sub-counts.
  • MCP stdio transport simplified to newline-framed JSON (one JSON object per \n). Previous Content-Length header framing removed.
  • README updated: build-from-source instructions, --rebuild usage, and version command documented. version-check references removed.

Fixed

  • Fixed find_callers returning empty results for valid C++ member-call references (e.g. AgcmMinimap::FpcsApmMap->LoadWorldMapApmMap::LoadWorldMap).
  • Fixed find_callers and find_callees returning wrong or duplicate results across pages when resolved and fallback result sets were independently limited and merged.
  • Fixed splitCallTarget using a manual strings.Cut loop; replaced with strings.LastIndex for correctness on paths with multiple separators.
  • Fixed C++ stable keys and qualified names including redundant container prefixes.

Removed

  • codegraph version-check command removed. Use codegraph --version, codegraph -v, or codegraph version for local version output. The background startup version check still runs automatically on normal commands.

Upgrade Notes

  • --rebuild replaces any manual "delete the DB and re-index" workflow. It is safe to run at any time on a clean working directory.
  • MCP stdio protocol change (newline-framed vs Content-Length) may affect custom MCP client integrations that relied on the old framing.
  • C++ unresolved-member fallback is name-based; results are included only when receiver type cannot be resolved to a symbol ID. This is best-effort for legacy codebases without full type resolution.

v1.1.1

Choose a tag to compare

@github-actions github-actions released this 28 Apr 18:50

Made --repo-root optional across all CLI commands and MCP tools. The server
now auto-detects the repository root so editor configs no longer require
hardcoded paths.

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 27 Apr 17:28
469fed1

A performance, correctness, and operability release focused on faster indexing, schema-backed edge resolution, streaming exports, and tighter DB lifecycle handling.

Highlights

  • Indexing performance: Repo-wide change detection is dramatically lighter — narrower DB projections, the existing-files load now overlaps the filesystem walk, per-row payloads are slimmed, and content-hash reads are deferred to the slow path. No-op repo updates do far less work and allocate substantially less.
  • Edge resolver scaling: Slash-suffix, dot-tail2, and the dominant 2-dot dot-suffix paths are now schema-backed indexed joins instead of repo-wide symbol scans, removing large constant-factor and quadratic costs on bigger graphs (the 2-dot dot-suffix case is roughly three orders of magnitude faster on the large-scale benchmark). A steady-state guard short-circuits resolver work when no unresolved edges remain. Cross-file edge resolution on update runs stays path-scoped instead of going repo-wide.
  • Write-path allocations: Symbol, edge, and batch insert SQL plus IN-placeholder strings are cached; edge source selection uses span/binary-search; residual allocations in the multi-file batch path are trimmed; tokenization allocations are reduced.
  • Streaming exports: JSON and DOT exports stream through paged store calls. Peak memory is now O(page) instead of O(repo) for the unbounded paths, and the bounded-page CLI uses the same primitives.
  • Watch & update correctness: Repo include/exclude is applied consistently; the dirty-file queue is crash-safe via claim/delete; chmod-only and directory-create events are ignored; --jsonl output is stable across index, watch, and doctor.
  • DB lifecycle hardening: Per-version migrations run on a single connection under BEGIN IMMEDIATE; pragmas apply across the pool with a unified driver-aware busy-retry policy; doctor uses the same DSN/pragma path; clean and doctor add ANALYZE, WAL checkpoint, incremental vacuum, and a --deep integrity check.
  • Query correctness fixes: RelatedTests(file) is correctly scoped via target_file_id; symbol lookup is deterministic; deleted-file graph rows are purged and cross-file references nullified, including ghost test_links rows pointing at deleted files; duplicate token-stat counting in batched writes is fixed; FindDeadCode is faster via dedicated indexes.
  • Operability: New index_smoke runner produces compact perf-diff output; repo artifacts default to .codegraph/ with legacy fallback; the CLI gains a command registry, per-command help, and canonical query command names with backward-compatible aliases; benchmarks capture --sqlite-profile and host context for reproducible perf comparisons.

v1.0.9

Choose a tag to compare

@github-actions github-actions released this 16 Apr 06:29
4404e61

Full Changelog: v1.0.8...v1.0.9

Full Changelog: v1.0.8...v1.0.9

Full Changelog: v1.0.8...v1.0.9

Full Changelog: v1.0.8...v1.0.9

Full Changelog: v1.0.8...v1.0.9

What's Changed

  • chore: add release note for cgo build fix by @isink17 in #4
  • fix(build): support CGO_ENABLED=0 cross-compilation with tree-sitter by @isink17 in #5
  • Fix/cgo release build pr by @isink17 in #6
  • Harden indexing for large Node.js repositories by @isink17 in #8

Full Changelog: v1.0.7...v1.0.9

What's Changed

  • chore: add release note for cgo build fix by @isink17 in #4
  • fix(build): support CGO_ENABLED=0 cross-compilation with tree-sitter by @isink17 in #5
  • Fix/cgo release build pr by @isink17 in #6
  • Harden indexing for large Node.js repositories by @isink17 in #8

Full Changelog: v1.0.7...v1.0.9

What's Changed

  • chore: add release note for cgo build fix by @isink17 in #4
  • fix(build): support CGO_ENABLED=0 cross-compilation with tree-sitter by @isink17 in #5
  • Fix/cgo release build pr by @isink17 in #6
  • Harden indexing for large Node.js repositories by @isink17 in #8

Full Changelog: v1.0.7...v1.0.9

v1.0.8

Choose a tag to compare

@github-actions github-actions released this 27 Mar 22:19

Full Changelog: v1.0.7...v1.0.8

Full Changelog: v1.0.7...v1.0.8

Full Changelog: v1.0.7...v1.0.8

Full Changelog: v1.0.7...v1.0.8

Full Changelog: v1.0.7...v1.0.8

v1.0.6

Choose a tag to compare

@github-actions github-actions released this 26 Mar 20:39

Full Changelog: v1.0.5...v1.0.6

Full Changelog: v1.0.5...v1.0.6

Full Changelog: v1.0.5...v1.0.6

Full Changelog: v1.0.5...v1.0.6

Full Changelog: v1.0.5...v1.0.6

Full Changelog: v1.0.5...v1.0.6

v1.0.5

Choose a tag to compare

@github-actions github-actions released this 21 Mar 10:34

Full Changelog: v1.0.4...v1.0.5

Full Changelog: v1.0.4...v1.0.5

Full Changelog: v1.0.4...v1.0.5

Full Changelog: v1.0.4...v1.0.5

v1.0.4

Choose a tag to compare

@github-actions github-actions released this 18 Mar 19:05

Full Changelog: v1.0.3...v1.0.4

Full Changelog: v1.0.3...v1.0.4

Full Changelog: v1.0.3...v1.0.4

Full Changelog: v1.0.3...v1.0.4

Full Changelog: v1.0.3...v1.0.4

v1.0.3

Choose a tag to compare

@github-actions github-actions released this 18 Mar 16:24

Full Changelog: v1.0.2...v1.0.3

Full Changelog: v1.0.2...v1.0.3

Full Changelog: v1.0.2...v1.0.3

Full Changelog: v1.0.2...v1.0.3

Full Changelog: v1.0.2...v1.0.3

Full Changelog: v1.0.2...v1.0.3

v1.0.2

Choose a tag to compare

@github-actions github-actions released this 18 Mar 11:03

Full Changelog: v1.0.0...v1.0.2

Full Changelog: v1.0.0...v1.0.2

Full Changelog: v1.0.0...v1.0.2

Full Changelog: v1.0.0...v1.0.2