[0.9.6] - 2026-05-27
New Features
- Enterprise Spring and MyBatis flows now trace end-to-end: MyBatis XML mappers are indexed and linked to their Java mapper interfaces, Spring
@Valueand@ConfigurationPropertiesreferences resolve to the matching keys in yourapplication.yml/.propertiesconfig (including relaxed kebab/camel/snake binding), and field-injected concrete beans likethis.field.method()resolve through to their implementation (#389). - Gemini CLI (and the rebranded Antigravity CLI) plus the Antigravity IDE are now supported by
codegraph install, detected and configured out of the box with sibling settings and MCP servers preserved across re-installs (#399). - Kiro (CLI and IDE) is now supported by
codegraph installon macOS, Linux, and Windows, with its own steering file so it loads CodeGraph guidance naturally (#385).
Fixes
- C/C++: bare
#include "header.h"directives now connect to the real header file instead of a phantom import, so includes show up as true file-to-file edges; system and stdlib headers are filtered out so they don't false-resolve (#453). - Java/Kotlin: imports now disambiguate same-name classes across modules using the fully-qualified import path, so callers, callees, and trace land on the right class in multi-module projects instead of guessing by file proximity (#314).
- TypeScript:
typealiases with object shapes (including function-typed members and intersection types) now surface their members in the graph, so a call likehandle.stop()resolves to the alias member instead of an unrelated look-alike class in a sibling directory (#359). - C#: parameter, return, property, and field types now produce reference edges, so callers and callees on a DTO or service type return real results instead of nothing (#381).
- Go: cross-package qualified calls like
pkg.Func()now resolve to the right package by reading yourgo.mod, so callers, callees, impact, and trace return complete results on Go monorepos instead of almost nothing (#388). codegraph_filesnow returns the whole project when an agent passes a root-ish path like/,.,./,"", or a Windows-style\, and subdirectory filters like/src,./src, andsrc\componentsall resolve correctly instead of returning "No files found" (#426).- The file watcher no longer marks edited files as fresh when another process holds the index lock, so the per-file staleness signal stays accurate until the edit is actually indexed (#449).
- TypeScript/JavaScript: calls inside top-level variable initializers (
const token = getToken()) and inside inline object-literal methods are no longer dropped, so they show up in callers as expected, including in Vue single-file components (#425). - Watch sync no longer aborts with a
FOREIGN KEY constraint failederror in a long-running daemon; a stale lookup now drops a single edge instead of failing the whole sync (#455). - Hermes:
codegraph install --target hermesno longer corrupts~/.hermes/config.yaml, correctly handling PyYAML's block-style lists and re-installing cleanly even on an already-corrupted file (#456). - NestJS: route prefixes from
RouterModule.register([...])(including nestedchildren) now propagate to controller routes, so a route shows up at its full path likeGET /admin/usersinstead ofGET /(#459). - C++: callers now resolve through typed member pointers such as
m_alg->Processing(), including out-of-line method definitions and the common case of two classes sharing a method name (#445, #454).