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
+42Lines changed: 42 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,47 @@
1
1
# Changelog
2
2
3
+
## [Unreleased]
4
+
5
+
### Added
6
+
-**Parser refactoring**: Extracted 16 per-language handler modules into `code_review_graph/lang/` package using a strategy pattern, replacing monolithic conditionals in `parser.py`
7
+
-**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)
8
+
-**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
9
+
-**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
18
+
-**Bulk node loading**: `get_all_nodes()` replaces per-file SQL queries for community detection
19
+
-**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)
20
+
-**Phase timing instrumentation**: `time.perf_counter()` timing at INFO level for all build phases
21
+
-**Batch risk_index**: 2 GROUP BY queries replace per-node COUNT loops in risk scoring
22
+
-**Weighted flow risk scoring**: Risk scores weighted by flow criticality instead of flat edge counts
23
+
-**Transitive TESTED_BY lookup**: `tests_for` and risk scoring follow transitive test relationships
24
+
-**DB schema v8**: Composite edge index for upsert performance (v7 reserved by upstream PR #127)
25
+
-**`--quiet` and `--json` CLI flags**: Machine-readable output for `build`, `update`, `status`
26
+
-**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)
27
+
-**14 new test fixtures**: Kotlin, Java, TypeScript, JSX, Python resolution scenarios
28
+
29
+
### Changed
30
+
- New `[enrichment]` optional dependency group for Jedi-based Python call resolution
31
+
- Leiden community detection scales resolution parameter with graph size
32
+
- Adaptive directory-based fallback for community detection when Leiden produces poor clusters
33
+
- Search query deduplication and test function deprioritization
34
+
35
+
### Fixed
36
+
-**Dead code false positives**: Decorators, CDK construct methods, abstract overrides, and overriding methods with called parents no longer flagged as dead
37
+
-**E2e test exclusion**: Playwright/Cypress e2e test directories excluded from dead code detection
38
+
-**Unique-name plausible caller optimization**: Faster dead code analysis via pre-filtered candidate sets
39
+
-**Store cache liveness check**: Cached SQLite connections verified as alive before reuse
40
+
41
+
### Performance
42
+
-**Community detection**: 48.6s to 2.3s (21x) on Gadgetbridge (41k nodes, 280k edges)
43
+
-**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)
298
300
pip install code-review-graph[all] # All optional dependencies
@@ -316,7 +318,7 @@ pytest
316
318
<summary><strong>Adding a new language</strong></summary>
317
319
<br>
318
320
319
-
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.
321
+
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