Releases: isink17/codegraph
Release list
v1.2.0
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 (stopcodegraph servefirst if locked).codegraph versioncommand andcodegraph --version/codegraph -vflags — 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, enablingfind_callersandfind_calleesacross 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
unknownlanguage bucket now accumulate per-extension sub-counts inlanguage_coverage.unknown.extensions. - Versioncheck improvements: overridable HTTP client and URL for testability, raised check timeout from 2 s to 5 s, structured
latestReleaseResulttype, comprehensive test suite.
Changed
- C++ qualified names now use
Container::Name(double-colon) instead ofModule.Container.Name(dot). Fixes duplicated container names likeApmMap.ApmMap::LoadWorldMap. find_callers/find_calleespagination overhauled: all candidate IDs are collected (resolved edges + unresolveddst_namefallback), deduplicated, sorted once byqualified_name / start_line / start_col / id, then a singleoffset + limitslice is returned. Previously each path was paginated independently, producing incorrect or truncated pages when both paths had results.FindCalleesfallback lookup is no longer N+1: distinctdst_namevalues are fetched in one query; symbol resolution is batched across all names rather than callinglookupSymbolIDsonce per cursor row.startupVersionCheckis now deferred past the version flag /versioncommand check, socodegraph --versionandcodegraph versionnever trigger a network round-trip.cleancommand 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
updateLanguageCoveragehelper; 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,
--rebuildusage, andversioncommand documented.version-checkreferences removed.
Fixed
- Fixed
find_callersreturning empty results for valid C++ member-call references (e.g.AgcmMinimap::F→pcsApmMap->LoadWorldMap→ApmMap::LoadWorldMap). - Fixed
find_callersandfind_calleesreturning wrong or duplicate results across pages when resolved and fallback result sets were independently limited and merged. - Fixed
splitCallTargetusing a manualstrings.Cutloop; replaced withstrings.LastIndexfor correctness on paths with multiple separators. - Fixed C++ stable keys and qualified names including redundant container prefixes.
Removed
codegraph version-checkcommand removed. Usecodegraph --version,codegraph -v, orcodegraph versionfor local version output. The background startup version check still runs automatically on normal commands.
Upgrade Notes
--rebuildreplaces 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
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
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;
--jsonloutput is stable acrossindex,watch, anddoctor. - 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;doctoruses the same DSN/pragma path;cleananddoctoradd ANALYZE, WAL checkpoint, incremental vacuum, and a--deepintegrity check. - Query correctness fixes:
RelatedTests(file)is correctly scoped viatarget_file_id; symbol lookup is deterministic; deleted-file graph rows are purged and cross-file references nullified, including ghosttest_linksrows pointing at deleted files; duplicate token-stat counting in batched writes is fixed;FindDeadCodeis faster via dedicated indexes. - Operability: New
index_smokerunner 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-profileand host context for reproducible perf comparisons.
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
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
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
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
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
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
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
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