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
* chore: release v3.1.1
Bump version to 3.1.1 across package.json, package-lock.json,
Cargo.toml. Add CHANGELOG entry with all commits since v3.1.0.
Update ROADMAP to reflect Phase 3 progress (3.2, 3.3, 3.4 started).
* fix: revert Cargo.toml bump and remove phantom linux-arm64-musl binary
Cargo.toml version is synced by sync-native-versions.js during the
publish workflow — manual bumps create a mismatch with optionalDeps.
Remove @optave/codegraph-linux-arm64-musl from optionalDependencies
since there is no aarch64-unknown-linux-musl target in the CI build
matrix. The package was never published, leaving an incomplete
package-lock entry that confused resolution.
* feat: add /release skill for automated release preparation
Codifies the release process: version bump, CHANGELOG, ROADMAP
updates, lock file verification, branch/PR creation. Documents
that Cargo.toml and optionalDeps are synced by the publish workflow.
* feat: expand /release skill with BACKLOG, README steps and release-note tone
- Add Step 5 (BACKLOG.md) — mark completed items, check Depends on
- Expand Step 6 (README.md) — check commands, MCP tools, features, roadmap
- Rewrite Step 3 (CHANGELOG) — emphasize release-note tone for users
- Renumber steps, update staging list
**One-line summary.** Expanded description of the release highlights — what's new, what's better, what's fixed. This paragraph should tell a user whether they should upgrade and why.
42
+
43
+
### Features
44
+
* **scope:** description ([#PR](url))
45
+
46
+
### Bug Fixes
47
+
* **scope:** description ([#PR](url))
48
+
49
+
### Performance
50
+
* **scope:** description ([#PR](url))
51
+
52
+
### Refactors
53
+
* description ([#PR](url))
54
+
55
+
### Chores
56
+
* **scope:** description ([#PR](url))
57
+
```
58
+
59
+
Rules:
60
+
-**Write for users, not developers.** Describe what changed from the user's perspective, not the implementation details. "MCP server connects reliably on first attempt" beats "defer heavy imports in MCP server"
61
+
- The bold summary paragraph at the top is the most important part — it's the TL;DR that appears in release notifications
62
+
- Categorize every commit since the last tag (skip docs-only and benchmark-only commits unless they're notable)
63
+
- Use the conventional commit scope as the bold prefix
64
+
- Link every PR number
65
+
- Include a Performance section if there are performance improvements
66
+
- Read previous CHANGELOG entries to match the tone and detail level
2.**Phase status table** — if any phase moved from Planned to In Progress (or completed), update the status column
73
+
3.**Task-level progress** — for any roadmap tasks that have been completed or partially completed by commits in this release:
74
+
- Add a progress note with version and PR links
75
+
- Add checklist items: `- ✅` for done, `- 🔲` for remaining
76
+
- Check actual code exists (glob/grep for new files/directories mentioned in PRs) before marking tasks complete
77
+
78
+
## Step 5: Update BACKLOG.md
79
+
80
+
Read `docs/roadmap/BACKLOG.md` and check if any backlog items were completed or partially completed by commits in this release.
81
+
82
+
- Backlog items are organized into tiers (1, 1b–1g, 2, 3) with an ID, title, and description per row
83
+
- Completed items are marked with strikethrough title (`~~Title~~`) and a `**DONE**` suffix with a description of what was shipped and PR links
84
+
- If a feature in this release matches a backlog item:
85
+
- Strike through the title: `~~Title~~`
86
+
- Add `**DONE** — description of what shipped (PR links)` at the end of the row
87
+
- Check the "Depends on" column of other items — if they depended on the newly completed item, note that they are now unblocked
88
+
- Update the `Last updated` date at the top of the file
89
+
90
+
## Step 6: Update README.md
91
+
92
+
Read `README.md` and check if any new user-facing features from this release need to be documented:
93
+
94
+
1.**Commands table** — if a new CLI command was added, add it to the commands section
95
+
2.**MCP tools table** — if new MCP tools were added, add them to the AI integration section
96
+
3.**Feature descriptions** — if a major new capability was added (new analysis type, new output format, etc.), add it to the relevant section
97
+
4.**Roadmap section** — if a phase status changed, update the roadmap summary at the bottom
98
+
5.**Version references** — only update version-specific references (e.g., install commands). Historical milestone markers like "Complete (v3.0.0)" should stay as-is
99
+
6. If nothing user-facing changed (pure refactors, bug fixes, internal improvements), no README update is needed
100
+
101
+
## Step 7: Verify package-lock.json
102
+
103
+
Run `grep` to confirm the new version appears in `package-lock.json` and that all `@optave/codegraph-*` optional dependency entries are complete (have version, resolved, integrity, cpu, os fields). Flag any incomplete entries — they indicate an unpublished platform binary.
2. Stage only the files you changed: `CHANGELOG.md`, `package.json`, `package-lock.json`, `docs/roadmap/ROADMAP.md`, `docs/roadmap/BACKLOG.md` if changed, `README.md` if changed
- Add CHANGELOG entry for all commits since previous release
118
+
- Update ROADMAP progress
119
+
120
+
## Test plan
121
+
- [ ] `npm install` succeeds with updated lock file
122
+
- [ ] CHANGELOG renders correctly on GitHub
123
+
- [ ] ROADMAP checklist items match actual codebase state
124
+
EOF
125
+
)"
126
+
```
127
+
128
+
## Important reminders
129
+
130
+
-**No co-author lines** in commit messages
131
+
-**No Claude Code references** in commit messages or PR descriptions
132
+
- The publish workflow (`publish.yml`) handles: Cargo.toml version sync, optionalDependencies version sync, npm publishing, git tagging, and the post-publish version bump PR
133
+
- If you find issues (incomplete lock entries, phantom packages), fix them in a separate commit with a descriptive message
Copy file name to clipboardExpand all lines: CHANGELOG.md
+26Lines changed: 26 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,32 @@
2
2
3
3
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
**Reliability, architecture, and MCP cold-start fixes.** This patch breaks a circular dependency cycle, fixes MCP server first-connect reliability by deferring heavy imports, corrects flow matching to use core symbol kinds, and refactors all database access to use try/finally for reliable `db.close()`. Internal architecture improves with repository pattern for data access and command/query separation.
8
+
9
+
### Features
10
+
11
+
***hooks:** add pre-commit hooks for cycles, dead exports, signature warnings ([#381](https://github.com/optave/codegraph/pull/381))
12
+
***benchmark:** add 1-file rebuild phase breakdown to build benchmarks ([#370](https://github.com/optave/codegraph/pull/370))
13
+
14
+
### Bug Fixes
15
+
16
+
***cycles:** break circular dependency cycle and remove dead `queryName` export ([#378](https://github.com/optave/codegraph/pull/378))
17
+
***queries:** use `CORE_SYMBOL_KINDS` in flow matching ([#382](https://github.com/optave/codegraph/pull/382))
18
+
***mcp:** defer heavy imports in MCP server for first-connect reliability ([#380](https://github.com/optave/codegraph/pull/380))
19
+
20
+
### Refactors
21
+
22
+
* wrap all db usage in try/finally for reliable `db.close()` ([#384](https://github.com/optave/codegraph/pull/384), [#383](https://github.com/optave/codegraph/pull/383))
23
+
* repository pattern for data access ([#371](https://github.com/optave/codegraph/pull/371))
**Sequence diagrams, native engine performance leap, and unused export detection.** This release adds `codegraph sequence` for Mermaid sequence diagram generation from call graph edges, delivers major native engine build optimizations (deep-clone elimination, batched SQLite inserts, call edge building in Rust, FS caching, rayon-parallel import resolution), introduces `--unused` on the exports command to detect dead exports, and fixes an ~80x native no-op rebuild regression.
Copy file name to clipboardExpand all lines: docs/roadmap/ROADMAP.md
+34-6Lines changed: 34 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Codegraph Roadmap
2
2
3
-
> **Current version:** 3.0.0 | **Status:** Active development | **Updated:** March 2026
3
+
> **Current version:** 3.1.1 | **Status:** Active development | **Updated:** March 2026
4
4
5
5
Codegraph is a strong local-first code graph CLI. This roadmap describes planned improvements across ten phases -- closing gaps with commercial code intelligence platforms while preserving codegraph's core strengths: fully local, open source, zero cloud dependency by default.
6
6
@@ -16,7 +16,7 @@ Codegraph is a strong local-first code graph CLI. This roadmap describes planned
16
16
|[**2**](#phase-2--foundation-hardening)| Foundation Hardening | Parser registry, complete MCP, test coverage, enhanced config, multi-repo MCP |**Complete** (v1.4.0) |
@@ -552,7 +552,9 @@ Plus updated enums on existing tools (edge_kinds, symbol kinds).
552
552
553
553
---
554
554
555
-
## Phase 3 -- Architectural Refactoring
555
+
## Phase 3 -- Architectural Refactoring 🔄
556
+
557
+
> **Status:** In Progress -- started in v3.1.1
556
558
557
559
**Goal:** Restructure the codebase for modularity, testability, and long-term maintainability. These are internal improvements -- no new user-facing features, but they make every subsequent phase easier to build and maintain.
558
560
@@ -591,7 +593,16 @@ A single AST walk with pluggable visitors eliminates 3 redundant tree traversals
591
593
592
594
**Affected files:**`src/complexity.js`, `src/cfg.js`, `src/dataflow.js`, `src/ast.js` -> split into `src/ast-analysis/`
593
595
594
-
### 3.2 -- Command/Query Separation ★ Critical
596
+
### 3.2 -- Command/Query Separation ★ Critical 🔄
597
+
598
+
> **v3.1.1 progress:** CLI display wrappers for all query commands extracted to `queries-cli.js` (866 lines, 15 functions). Shared `result-formatter.js` (`outputResult()` for JSON/NDJSON) and `test-filter.js` created. `queries.js` reduced from 3,395 → 2,490 lines — all `*Data()` functions remain, CLI formatting fully separated ([#373](https://github.com/optave/codegraph/pull/373)).
Eliminate the `*Data()` / `*()` dual-function pattern replicated across 19 modules. Every analysis module (queries, audit, batch, check, cochange, communities, complexity, cfg, dataflow, ast, flow, manifesto, owners, structure, triage, branch-compare, viewer) currently implements both data extraction AND CLI formatting.
597
608
@@ -616,7 +627,17 @@ src/
616
627
617
628
**Affected files:** All 19 modules with dual-function pattern, `src/cli.js`, `src/mcp.js`
618
629
619
-
### 3.3 -- Repository Pattern for Data Access ★ Critical
630
+
### 3.3 -- Repository Pattern for Data Access ★ Critical 🔄
631
+
632
+
> **v3.1.1 progress:**`src/db/` directory created with `repository.js` (134 lines), `query-builder.js` (280 lines), and `migrations.js` (312 lines). All db usage across the codebase wrapped in try/finally for reliable `db.close()` ([#371](https://github.com/optave/codegraph/pull/371), [#384](https://github.com/optave/codegraph/pull/384), [#383](https://github.com/optave/codegraph/pull/383)).
Consolidate all SQL into a single `Repository` class. Currently SQL is scattered across 25+ modules that each independently open the DB and write raw SQL inline across 13 tables.
622
643
@@ -633,7 +654,14 @@ Add a query builder for the common pattern "find nodes WHERE kind IN (...) AND f
633
654
634
655
**Affected files:**`src/db.js` -> split into `src/db/`, SQL extracted from all modules
635
656
636
-
### 3.4 -- Decompose queries.js (3,395 Lines)
657
+
### 3.4 -- Decompose queries.js (3,395 Lines) 🔄
658
+
659
+
> **v3.1.1 progress:**`queries.js` reduced from 3,395 → 2,490 lines by extracting all CLI formatting to `queries-cli.js` (3.2). Symbol kind constants extracted to `kinds.js` (49 lines) ([#378](https://github.com/optave/codegraph/pull/378)).
0 commit comments