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
@@ -103,14 +103,50 @@ Hotfix on top of 2.2.3 for two bugs surfaced by a full first-time-user smoke tes
103
103
104
104
### Added
105
105
-**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.
106
-
-**Luau language support** (PR #165, closes #153): Roblox Luau (`.luau`) parsing — functions, classes, local functions, requires, tests.
106
+
-**Luau language support** (PR #165, closes #153): Roblox Luau (`.luau`) parsing -- functions, classes, local functions, requires, tests.
107
107
-**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.
108
108
-**`recurse_submodules` build option** (PR #215): Build/update can now optionally recurse into git submodules.
109
109
-**`.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.
110
110
-**Clearer gitignore docs** (PR #171, closes #157): Documentation now spells out that `code-review-graph` already respects `.gitignore` via `git ls-files`.
111
+
-**Parser refactoring**: Extracted 16 per-language handler modules into `code_review_graph/lang/` package using a strategy pattern, replacing monolithic conditionals in `parser.py`
112
+
-**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)
113
+
-**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
114
+
-**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
123
+
-**Bulk node loading**: `get_all_nodes()` replaces per-file SQL queries for community detection
124
+
-**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)
125
+
-**Phase timing instrumentation**: `time.perf_counter()` timing at INFO level for all build phases
126
+
-**Batch risk_index**: 2 GROUP BY queries replace per-node COUNT loops in risk scoring
127
+
-**Weighted flow risk scoring**: Risk scores weighted by flow criticality instead of flat edge counts
128
+
-**Transitive TESTED_BY lookup**: `tests_for` and risk scoring follow transitive test relationships
129
+
-**DB schema v8**: Composite edge index for upsert performance (v7 reserved by upstream PR #127)
130
+
-**`--quiet` and `--json` CLI flags**: Machine-readable output for `build`, `update`, `status`
131
+
-**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)
132
+
-**14 new test fixtures**: Kotlin, Java, TypeScript, JSX, Python resolution scenarios
111
133
112
134
### Changed
113
-
- Community detection is now bounded — large repos complete in reasonable time instead of hanging indefinitely.
135
+
- Community detection is now bounded -- large repos complete in reasonable time instead of hanging indefinitely.
136
+
- New `[enrichment]` optional dependency group for Jedi-based Python call resolution
137
+
- Leiden community detection scales resolution parameter with graph size
138
+
- Adaptive directory-based fallback for community detection when Leiden produces poor clusters
139
+
- Search query deduplication and test function deprioritization
140
+
141
+
### Fixed
142
+
-**Dead code false positives**: Decorators, CDK construct methods, abstract overrides, and overriding methods with called parents no longer flagged as dead
143
+
-**E2e test exclusion**: Playwright/Cypress e2e test directories excluded from dead code detection
144
+
-**Unique-name plausible caller optimization**: Faster dead code analysis via pre-filtered candidate sets
145
+
-**Store cache liveness check**: Cached SQLite connections verified as alive before reuse
146
+
147
+
### Performance
148
+
-**Community detection**: 48.6s to 2.3s (21x) on Gadgetbridge (41k nodes, 280k edges)
149
+
-**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