| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| SHA256SUMS | 2026-05-24 | 560 Bytes | |
| codegraph-win32-x64.zip | 2026-05-24 | 42.5 MB | |
| codegraph-darwin-arm64.tar.gz | 2026-05-24 | 46.6 MB | |
| codegraph-darwin-x64.tar.gz | 2026-05-24 | 47.8 MB | |
| codegraph-linux-arm64.tar.gz | 2026-05-24 | 51.5 MB | |
| codegraph-linux-x64.tar.gz | 2026-05-24 | 51.8 MB | |
| codegraph-win32-arm64.zip | 2026-05-24 | 38.6 MB | |
| README.md | 2026-05-24 | 6.4 kB | |
| v0.9.4 source code.tar.gz | 2026-05-24 | 1.3 MB | |
| v0.9.4 source code.zip | 2026-05-24 | 1.4 MB | |
| Totals: 10 Items | 281.6 MB | 0 | |
[0.9.4] - 2026-05-24
Added
- Framework-aware route resolution —
request → route → handler → serviceflows now resolve end-to-end across the supported stacks. Added or fixed routing for Express (inline arrow handlers → services), Rails, Spring (Java + Kotlin; bare and class-prefixed mappings), Django/DRF (router.register→ ViewSet), Laravel (Controller@method), Flask/FastAPI (decorator stacks, empty-path routers, Flask-RESTfuladd_resource), Gin/chi (group-var routing), ASP.NET (feature-folder + bare attribute routes), Drupal, Rust (Axum chained methods, actix builder API), Vapor (Swift grouped routes), Play (conf/routes), Vue/Nuxt SFC templates, Svelte/SvelteKit, and React Router (<Route>JSX + object data-router). - Dynamic-dispatch flow synthesis —
codegraph_trace,codegraph_callees, andcodegraph_explorenow follow flows that have no static call edge. Bridged channels: callback/observer registration, EventEmitter (on/emit), React re-render (setState→render) and JSX children, FluttersetState→build, C++ virtual overrides, and Java/Kotlin interface → implementation dispatch (e.g. Spring@Autowired svc.list()→ the impl). Each synthesized hop is labeled inline intracewith where it was wired up. CODEGRAPH_MCP_TOOLS— trim the exposed MCP tool surface. Set it to a comma-separated list of tool names (e.g.trace,search,node,context) to expose only those codegraph tools over MCP; unset exposes all of them. Names match on the short form, sotraceandcodegraph_traceare equivalent. Lets you constrain an agent to a minimal surface (or A/B-test tool selection) without editing the client's MCP config. Inert by default.- Release archives now ship with a
SHA256SUMSfile, and the npm launcher verifies the bundle it downloads against it — a mismatch aborts before anything runs. Releases published before this change have no checksum file, so the verification is skipped (not failed) when none is available.
Changed
codegraph_tracenow returns a self-contained flow dossier. Each hop on the path is shown with its full body inline (previously just the call-site line), and the destination's own outgoing calls are appended — so one trace call usually answers a "how does X reach Y" flow question without a follow-upcodegraph_explore/codegraph_node/Read. Measured across real repos: fewer tool calls and lower cost than the prior path-only output, with no wall-clock regression.codegraph_nodeandcodegraph_tracenow emit line-numbered source (cat -nstyle, matchingcodegraph_exploreand Read), so an agent can cite or edit exact lines without re-reading the file just to recover line numbers.codegraph_explorenow leads with the execution flow when its query names the symbols of a flow. Agents callexplorefar more thantrace, passing a bag of symbol names that usually spans the flow they're investigating (PmsProductController getList PmsProductService list PmsProductServiceImpl);explorenow finds the call path among those named symbols — riding synthesized dynamic-dispatch edges (callback / React re-render / JSX child / interface→impl) — and shows it first. So a flow question answered throughexploregets the trace-quality path without the agent having to switch tools. Scoped to the named symbols (no wrong-feature wandering) and bridge-capped (no god-function fan-out); absent when the query is fuzzy or has no connected chain.
Fixed
- Static-extraction & resolution correctness fixes underpinning the framework work above: C++ inheritance (
base_class_clausewas unhandled, so C++extendsedges were missing), Dart method body ranges (methods were extracted signature-only), a Python builtin-name handler guard (handlers namedindex/get/updatewere silently dropped), and an explore output-budget regression that under-returned source on god-file repos. -
Orphaned
codegraph serve --mcpprocesses after a parent SIGKILL. When the MCP host (Claude Code, opencode, …) was force-killed — OOM killer, akill -9, a container teardown — the child kept running indefinitely on Linux, holding inotify watches, file descriptors, and the SQLite WAL. The kernel doesn't propagate parent death to children, and the stdinend/closehandlers we relied on don't always fire. The MCP server now pollsprocess.ppidand shuts down the moment it changes from the value observed at startup; the poll interval isCODEGRAPH_PPID_POLL_MS(default5000,0disables). Resolves #277. -
codegraph: no prebuilt bundle for <platform>after installing through a registry mirror. Installing@colbymchenry/codegraphfrom a registry that hadn't mirrored the matching per-platform package — most often the npmmirror/cnpm mirrors, but any lazily-syncing mirror or corporate proxy can do it — left every command failing withno prebuilt bundle for <platform>. The runtime ships as a per-platformoptionalDependency, and npm treats an optional package it can't fetch as a success and silently skips it, so the bundle simply went missing. The launcher now self-heals: when the platform bundle isn't installed, it downloads the same archive from GitHub Releases (cached under~/.codegraph/bundles/for next time) and runs that — so a global install works even on a mirror that never carried the platform package. SetCODEGRAPH_NO_DOWNLOAD=1to disable the network fallback, orCODEGRAPH_DOWNLOAD_BASE=<url>to point it at your own mirror of the release archives; the standaloneinstall.shremains the no-Node alternative. Resolves #303. install.shfailing with403/ "could not resolve latest version" on shared or cloud hosts. The standalone installer resolved the latest release through the GitHub API, whose unauthenticated limit is 60 requests/hour per IP — routinely exhausted on cloud devboxes and CI where many users share an address, returning403(issue [#325]). It now resolves the version from thereleases/latestweb redirect, which isn't rate-limited (and still falls back to the API).CODEGRAPH_VERSIONalso accepts a bare0.9.4in addition tov0.9.4. Resolves #325.