Highlights
Minor-version release with 9 features and 1 bug fix. All additive on top of v2.2.4. Upgrade with:
uvx --reinstall code-review-graph
# or
pip install -U code-review-graphNew language + platform support
- Elixir (#112) —
.ex/.exsfiles parse modules,def/defp/defmacro/defmacrop,alias/import/require/use, and internal call resolution. Close theMathHelpers.double→Calculator.computeloop. - Objective-C (#88) —
.mfiles parse@interface/@implementation, instance + class methods,[receiver message:args]calls (including multi-part selectors), C-stylemain(), and#import/#include. - Bash / Shell (#197) —
.sh/.bash/.zshfiles parse functions, everycommandas aCALLSedge, andsource path/. pathasIMPORTS_FROMwith filesystem path resolution. - Qwen Code (#83) — new MCP install target:
code-review-graph install --platform qwenmerges into~/.qwen/settings.jsonwithout clobbering existing entries.
MCP tool improvements
apply_refactor_tool(dry_run=True)(#176) — preview the exact unified diff before committing the rename to disk. Therefactor_idstays valid after the dry-run so you can review and then call again withdry_run=Falseto actually write the changes.install --no-instructions+-y/--yes(#173) — new flags oncode-review-graph install:--no-instructionsskips theCLAUDE.md/AGENTS.md/.cursorrules/.windsurfrulesinjection entirely.-y/--yesauto-confirms the instruction injection without the interactive TTY prompt.- Even without
--dry-run,installnow prints the target list before writing.
- Cloud embeddings stderr warning (#174) —
get_provider()now writes a one-time warning tostderrbefore returning a Google Gemini or MiniMax provider, making it explicit that source code will be sent to an external API. SetCRG_ACCEPT_CLOUD_EMBEDDINGS=1to suppress the warning in scripted workflows. The warning isstderr-only — it never touches stdout or stdin so the MCP stdio transport remains uncorrupted.
Graph storage
CRG_DATA_DIR(#155) — when set, replaces the default<repo>/.code-review-graphdirectory verbatim. Useful for ephemeral workspaces, Docker volumes, shared CI caches, or multi-repo orchestrators that want graphs outside the working tree.CRG_REPO_ROOT(#155) —find_project_root()checks this env var before the usual git-root walk. Lets you script the CLI from any cwd.- Both variables honor
~expansion and fall through cleanly if the path doesn't exist.
Fixed
- Multi-edit refactor correctness —
apply_refactor()could silently stomp earlier changes when a single refactor touched the same file with multiple edits. The plan-computation step now groups edits by file and applies them sequentially against updated content, in both real-write and dry-run modes.
Docs
docs/TROUBLESHOOTING.md— new top section covers the 4 most common support questions:Hooks use a matcher + hooks arrayerror → upgrade to v2.2.4+ and re-runinstallcommand not foundafterpip install→ usepipx/uvx/python -m code_review_graph- "Is this project-scoped or user-scoped?" — the 4-piece scope table (package / graph.db / .mcp.json / registry)
- "Built the graph but Claude Code doesn't see it" — 4-item debug checklist (restart, cwd, install step, MCP logs)
Closes
#83, #88, #112, #155, #173, #174, #176, #197, #211 (closed separately as already-implemented)
Superseded contributor PRs (closed with credit)
- PR #204 by @lngyeen (install preview) — reimplemented cleanly in #228 with
isatty()-guarded confirmation - PR #207 by @yashmewada9618 (
CRG_DATA_DIR) — reimplemented cleanly in #228 withoutinput()-on-stdio - PR #179 by @Bakul2006 (cloud embeddings warning) — reimplemented cleanly in #228 with stderr-only messaging
Thank you to all three contributors — your original designs pushed these forward.
Still pending for a future release
- #199 Terraform/Helm — HCL's resource graph needs a design call (dependency-DAG model doesn't fit the call-graph shape); Helm chart template + values cross-referencing is a separate analyzer
- #210 TOON serialization — previously declined; keeping the issue open for long-term tracking
- #143 / #144 fastmcp CVE PRs — already closed as superseded by v2.2.4's fastmcp bump
- VS Code extension v0.2.2 — repackage + republish manually (the PyPI
publish.ymldoesn't cover it)