You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+38-2Lines changed: 38 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -55,14 +55,50 @@ Hotfix on top of 2.2.3 for two bugs surfaced by a full first-time-user smoke tes
55
55
56
56
### Added
57
57
-**Codex platform install support** (PR #177): `code-review-graph install --platform codex` appends a `mcp_servers.code-review-graph` section to `~/.codex/config.toml` without overwriting existing Codex settings.
58
-
-**Luau language support** (PR #165, closes #153): Roblox Luau (`.luau`) parsing — functions, classes, local functions, requires, tests.
58
+
-**Luau language support** (PR #165, closes #153): Roblox Luau (`.luau`) parsing -- functions, classes, local functions, requires, tests.
59
59
-**REFERENCES edge type** (PR #217): New edge kind for symbol references that aren't direct calls (map/dispatch lookups, string-keyed handlers), including Python and TypeScript patterns.
60
60
-**`recurse_submodules` build option** (PR #215): Build/update can now optionally recurse into git submodules.
61
61
-**`.gitignore` default for `.code-review-graph/`** (PR #185): Fresh installs automatically add the SQLite DB directory to `.gitignore` so the database isn't accidentally committed.
62
62
-**Clearer gitignore docs** (PR #171, closes #157): Documentation now spells out that `code-review-graph` already respects `.gitignore` via `git ls-files`.
63
+
-**Parser refactoring**: Extracted 16 per-language handler modules into `code_review_graph/lang/` package using a strategy pattern, replacing monolithic conditionals in `parser.py`
64
+
-**Jedi-based call resolution**: New `jedi_resolver.py` module resolves Python method calls at build time via Jedi static analysis, with pre-scan filtering by project function names (36s to 3s on large repos)
65
+
-**PreToolUse search enrichment**: New `enrich.py` module and `code-review-graph enrich` CLI command inject graph context (callers, callees, flows, community, tests) into agent search results passively
66
+
-**Typed variable call enrichment**: Track constructor-based type inference and instance method calls for Python, JS/TS, and Kotlin/Java
-**Batch file storage**: `store_file_batch()` groups file insertions into 50-file transactions for faster builds
75
+
-**Bulk node loading**: `get_all_nodes()` replaces per-file SQL queries for community detection
76
+
-**Adjacency-indexed cohesion**: Community cohesion computed in O(community-edges) instead of O(all-edges), yielding 21x speedup (48.6s to 2.3s on 41k-node repos)
77
+
-**Phase timing instrumentation**: `time.perf_counter()` timing at INFO level for all build phases
78
+
-**Batch risk_index**: 2 GROUP BY queries replace per-node COUNT loops in risk scoring
79
+
-**Weighted flow risk scoring**: Risk scores weighted by flow criticality instead of flat edge counts
80
+
-**Transitive TESTED_BY lookup**: `tests_for` and risk scoring follow transitive test relationships
81
+
-**DB schema v8**: Composite edge index for upsert performance (v7 reserved by upstream PR #127)
82
+
-**`--quiet` and `--json` CLI flags**: Machine-readable output for `build`, `update`, `status`
83
+
-**829+ tests** across 26 test files (up from 615), including `test_pain_points.py` (1,587 lines TDD suite), `test_hardened.py` (467 lines), `test_enrich.py` (237 lines)
84
+
-**14 new test fixtures**: Kotlin, Java, TypeScript, JSX, Python resolution scenarios
63
85
64
86
### Changed
65
-
- Community detection is now bounded — large repos complete in reasonable time instead of hanging indefinitely.
87
+
- Community detection is now bounded -- large repos complete in reasonable time instead of hanging indefinitely.
88
+
- New `[enrichment]` optional dependency group for Jedi-based Python call resolution
89
+
- Leiden community detection scales resolution parameter with graph size
90
+
- Adaptive directory-based fallback for community detection when Leiden produces poor clusters
91
+
- Search query deduplication and test function deprioritization
92
+
93
+
### Fixed
94
+
-**Dead code false positives**: Decorators, CDK construct methods, abstract overrides, and overriding methods with called parents no longer flagged as dead
95
+
-**E2e test exclusion**: Playwright/Cypress e2e test directories excluded from dead code detection
96
+
-**Unique-name plausible caller optimization**: Faster dead code analysis via pre-filtered candidate sets
97
+
-**Store cache liveness check**: Cached SQLite connections verified as alive before reuse
98
+
99
+
### Performance
100
+
-**Community detection**: 48.6s to 2.3s (21x) on Gadgetbridge (41k nodes, 280k edges)
101
+
-**Jedi enrichment**: 36s to 3s (12x) via pre-scan filtering by project function names
pip install code-review-graph[wiki] # Wiki generation with LLM summaries (ollama)
301
303
pip install code-review-graph[all] # All optional dependencies
@@ -319,7 +321,7 @@ pytest
319
321
<summary><strong>Adding a new language</strong></summary>
320
322
<br>
321
323
322
-
Edit `code_review_graph/parser.py` and add your extension to `EXTENSION_TO_LANGUAGE` along with node type mappings in `_CLASS_TYPES`, `_FUNCTION_TYPES`, `_IMPORT_TYPES`, and `_CALL_TYPES`. Include a test fixture and open a PR.
324
+
Edit the appropriate language handler in `code_review_graph/lang/` (e.g., `_python.py`, `_kotlin.py`) or create a new one following `_base.py`. Add your extension to `EXTENSION_TO_LANGUAGE` in `parser.py`, include a test fixture, and open a PR.
0 commit comments