Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
0cefff7
merge: main into develop (release v0.4.6 back-merge)
joy-software Jun 6, 2026
c31221b
fix: cgh status display, DuckDB default + empty Endpoints
joy-software Jun 6, 2026
b89dcbc
Merge pull request #60 from altikva/fix/status-display
joy-software Jun 6, 2026
2645d16
feat: resolve the codegraph root from any subdirectory, like git
joy-software Jun 6, 2026
f6658bb
Merge pull request #61 from altikva/fix/walk-up-root
joy-software Jun 6, 2026
e447401
fix(security): close audit findings in the MCP owner and tools
joy-software Jun 7, 2026
36026b1
Merge pull request #62 from altikva/fix/audit-security
joy-software Jun 7, 2026
7b66d1f
fix(indexer): correctness + efficiency fixes from the audit
joy-software Jun 7, 2026
cdb2ad5
refactor: shared federation fan-out, drop _kuzu names, CLI cleanup
joy-software Jun 7, 2026
634911a
Merge pull request #63 from altikva/refactor/federation-cli-cleanup
joy-software Jun 7, 2026
ae2c27b
refactor: decompose cmd_init into phase helpers
joy-software Jun 7, 2026
74c3c16
refactor: extract cmd_status 3-tier fallback + add tests
joy-software Jun 7, 2026
6f1fe7c
Merge pull request #66 from altikva/refactor/decompose-cmd-init-v2
joy-software Jun 7, 2026
1582032
Merge pull request #67 from altikva/refactor/extract-cmd-status-v2
joy-software Jun 7, 2026
2ec8a49
feat(server): add graph-insight MCP tools + role/layer search filters
joy-software Jun 7, 2026
9b4e17e
Merge pull request #68 from altikva/feat/query-tools
joy-software Jun 7, 2026
7eec384
feat(parsers): extend endpoint frameworks, config-as-data, and SQL DDL
joy-software Jun 7, 2026
ace34b9
feat: git-history tools (churn hotspots, ownership, layer diagram)
joy-software Jun 7, 2026
6ba4e16
Merge pull request #69 from altikva/feat/history-tools
joy-software Jun 7, 2026
4d96f44
Merge pull request #70 from altikva/feat/parsers-coverage
joy-software Jun 7, 2026
e95e483
feat: test-to-code mapping tools + cgh impact CI command
joy-software Jun 7, 2026
ba02caf
Merge pull request #71 from altikva/feat/test-mapping-ci
joy-software Jun 7, 2026
8515570
feat(parsers): add optional C# and Ruby tree-sitter parsers
joy-software Jun 7, 2026
d4aa130
Merge pull request #72 from altikva/feat/langs-csharp-ruby
joy-software Jun 7, 2026
d1c60a4
feat: opt-in precise CALLS resolver for Python via jedi
joy-software Jun 7, 2026
82fbaaa
Merge pull request #73 from altikva/feat/precise-calls
joy-software Jun 7, 2026
ee5d51f
docs: update README for the audit features
joy-software Jun 7, 2026
5d1630c
Merge pull request #74 from altikva/docs/readme-audit-features
joy-software Jun 7, 2026
4a59712
docs: show how to combine install extras in one command
joy-software Jun 7, 2026
0ed7533
Merge pull request #75 from altikva/docs/combined-extras
joy-software Jun 7, 2026
af33cdd
docs: add cgh impact and layer-diagram screenshots to README
joy-software Jun 8, 2026
7247255
Merge pull request #76 from altikva/docs/more-screenshots
joy-software Jun 8, 2026
7650b29
docs: remove the Architecture (v0.4) section from README
joy-software Jun 8, 2026
1e0f3d3
Merge pull request #77 from altikva/docs/drop-architecture
joy-software Jun 8, 2026
d47090a
fix(federation): skip federated subrepos on Windows (path normalization)
joy-software Jun 8, 2026
d02829a
Merge pull request #78 from altikva/fix/win-federation-skip
joy-software Jun 8, 2026
33e2070
release: v0.5.0
joy-software Jun 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 82 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,86 @@ The Python import name is `codegraph`; the PyPI package and CLI are `cgh`.

## [Unreleased]

## [0.5.0] - 2026-06-08

A large feature release built on a full code audit (security, correctness,
readability, and roadmap). The MCP server now exposes 47 tools, there is a
new CI-oriented CLI command, broader language and framework coverage, and two
optional extras. Everything is additive and backwards compatible; the new
extras are opt-in and defaults are unchanged.

### Added
- **Code-intelligence MCP tools**: `file_summary` (one-shot file orientation),
`impact_of` (reverse blast radius), `path_between` (shortest call/import
path), `import_cycles` (SCC cycle detection), `tests_for` / `untested`
(test-to-code mapping inferred from imports/calls + roles), `hotspots`
(git churn x import centrality), and `who_knows` (file ownership from git).
- **`role` / `layer` filters** on `search_symbols` and `symbol_lookup`.
- **`cgh impact --since <ref>`**: a non-MCP CLI command for CI and PR bots that
reports changed symbols, blast radius grouped by role/layer, endpoints
touched, and tests to run, as a markdown summary or JSON. Reads the graph
read-only, so no server needs to be running.
- **`cgh graph layers`**: a layer-to-layer dependency diagram (Mermaid/Graphviz).
- **Config-as-data parsers** for JSON / JSONC, YAML, and TOML (top-level keys
become navigable sections: CI jobs, k8s kinds, compose services,
package.json scripts, pyproject tables), and a **SQL DDL parser** that turns
`CREATE TABLE` / `ALTER TABLE` into table sections with columns.
- **More endpoint frameworks**: Django urls, NestJS, Spring, and Gin/Echo, on
top of the existing FastAPI / Flask / Nuxt / Express.
- **Optional `langs` extra** (`pip install "cgh[langs]"`): C# and Ruby
tree-sitter parsers, kept optional so the core install stays lean and
Python-3.14-safe.
- **Optional `lsp` extra** (`pip install "cgh[lsp]"`): opt-in precise
cross-file CALLS resolution for Python via jedi, behind a `precise_calls`
config flag (or `CGH_PRECISE_CALLS`).
- **Walk-up root discovery**: `cgh` now resolves the nearest ancestor
`.codegraph/` from any subdirectory, the way git finds its repo root, so the
commands work from anywhere inside an initialized project.

### Fixed
- **DuckDB / Kuzu parity**: `purge_file_data` now also removes the inbound side
of self-referential edges (CALLS, INHERITS) on DuckDB, so `find_callers` no
longer returns ghost callers after a symbol changes.
- **CALLS resolution** prefers a same-file definition before falling back to
repo-wide name matching, cutting spurious cross-file edges, and memoizes
lookups per file.
- The indexer now **honors `max_file_size_kb` and `ignore_patterns`** (they
were defined and documented but never enforced).
- **Federated subrepos are skipped on Windows.** `is_under_any` left an
absolute candidate path unresolved and compared case-sensitively, so on the
case-insensitive Windows filesystem every federated subrepo missed the skip
list and the parent scanned the whole tree. Paths are now resolved and
case-normalized on both sides.
- Module-level FTS and `.cghignore` caches are keyed by repo root, so a
multi-repo process no longer crosses streams.
- `cgh status` shows `would create graph.duckdb` (not the Kuzu file) and
`Endpoints: unknown` instead of a bare comma when the graph is unreadable.
- Markdown links resolve relative to the file that contains them.
- Barrel re-exports cap their per-import symbol edges; the git-diff discovery
timeout matches `git ls-files`; `find` prunes ignore dirs at the walk level;
and several silently-swallowed failures (connection close, query iteration,
scan deletions) are now surfaced.

### Changed
- The parent + children federation fan-out is now a single shared helper
(`federate_scoped` / `federate_flat`); the server modules use the canonical
`_graphdb` names instead of the deprecated `_kuzu` aliases.
- `cmd_init` and `cmd_status` were decomposed into named phase helpers, the
repeated `--root` argparse boilerplate was factored out, and CLI handlers
are typed; `cmd_status`'s owner/RO/FTS fallback ladder gained tests.

### Security
- The owner's bearer-token check is now constant-time (`hmac.compare_digest`).
- Removed the dead `.mcp.json` auth env-injection path: the `0600`
`.codegraph/auth.key` file is the shared secret, and `.codegraph/` is created
`0700`. Corrected the auth documentation to match.
- `index_changed_files` rejects a `since` ref beginning with `-`, and
`pattern_search` passes the user pattern after `--` (ripgrep) / via `-e`
(git-grep), closing argument-injection vectors that could reach ripgrep's
preprocessor.
- `force_index` refuses absolute paths that resolve outside the repo.
- The generated HTML diagram pins the Mermaid CDN script with an SRI hash.

## [0.4.6] - 2026-06-06

A cross-platform audit pass. Five parallel reviews of signals, paths, file
Expand Down Expand Up @@ -194,7 +274,8 @@ Highlights from this line:

First tagged release on PyPI.

[Unreleased]: https://github.com/altikva/cgh/compare/v0.4.6...HEAD
[Unreleased]: https://github.com/altikva/cgh/compare/v0.5.0...HEAD
[0.5.0]: https://github.com/altikva/cgh/compare/v0.4.6...v0.5.0
[0.4.6]: https://github.com/altikva/cgh/compare/v0.4.5...v0.4.6
[0.4.5]: https://github.com/altikva/cgh/compare/v0.4.4...v0.4.5
[0.4.4]: https://github.com/altikva/cgh/compare/v0.4.3...v0.4.4
Expand Down
Loading
Loading