release: v0.4.0 (retry)#16
Merged
Merged
Conversation
…ackages
codegraph/ used to have 28 top-level .py files. They're now grouped
into 9 subpackages so the top level is just __init__.py, __main__.py,
and indexer.py.
New layout:
codegraph/
__init__.py, __main__.py, indexer.py (3 top-level files)
core/ db, schema, utils + config + fts
parsers/ (existing)
cli/ (existing)
server/ (existing)
integrations/ (existing) + skill_installer + post_commit
skills/ (existing)
state/ auth, activity, call_log, scan_meta, watcher, ipc, pidfile
imports/ resolver (was import_resolver), tsconfig, workspaces
analysis/ context_builder, dead_code, federation, endpoints,
module_doc, roles, pattern
claude_state/ memory (was memory_index), plans (was plan_index)
Used git mv so file history follows. Two backward-compat shims
(codegraph/db.py, codegraph/schema.py) were already redirects into
core/ — deleted.
~183 imports across the repo updated by a one-shot rewriter. Four
relative imports inside moved files needed manual cleanup (the
rewriter only handled paths it knew about, not relative paths to
non-renamed sibling packages).
Verified:
- uvx ruff check . clean
- 235 / 235 tests pass
- cgh init + cgh stats end-to-end works on a scratch repo
- _hook_precheck_grep still works from the installed binary
chore(structure): collapse top-level to 3 files, group rest into subpackages
Three doc updates from the post-restructure / new-features audit: README.md - "Architecture (v0.3)" diagram replaced with the v0.4 layout: the 3 top-level files plus all 9 subpackages (core, parsers, imports, state, analysis, claude_state, server, cli, integrations, viz, skills). Each entry annotated with what's inside. - "codegraph exposes 23 tools" -> 39 tools (the actual @mcp.tool count across server/tools_*.py). docs/PARSERS.md - Existing Parsers table now lists Go (golang.py), Rust (rust.py), Java (java.py), and plaintext.py. - Optional Dependencies section rewritten as "Dependencies" — every supported tree-sitter grammar is now a core dep in pyproject.toml (was the case before this audit, just hadn't been documented). Not touched - CLAUDE.md was edited locally for the same shape but it's in .git/info/exclude on this checkout, so it stays out of the PR. - docs/CLI_REFERENCE.md and docs/CONFIGURATION.md — audit found them generic enough to survive the restructure unchanged.
docs: refresh README architecture + PARSERS table after v0.4 changes
Adds a Version row at the top of the cgh status table and a top-level version field in the --json payload. Useful for sanity- checking that the cgh binary on a teammate's machine matches what we expect, and to support "is the installed cgh in sync with develop" debugging without a second --version call.
feat(status): show cgh version in cgh status
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Retry of the 0.4.0 release
Previous v0.4.0 was deleted from PyPI. Per PyPI rules, re-uploading the same version normally fails — but per the user's instruction, we're retrying anyway. If the publish step rejects with `400 File already exists`, we'll bump to 0.4.1.
Content vs the deleted 0.4.0
Develop is 4 PRs ahead of the original 0.4.0:
This is a stronger 0.4.0 than the deleted one, so even if PyPI accepts it, the content shipped will be the develop tip.
Post-merge
```bash
git checkout main && git pull
git tag v0.4.0 && git push --tags
release.yml runs; either publishes or rejects
git checkout develop && git merge --no-ff main && git push
```