Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
e702be0
fix: set up detected tools from one command
cursoragent Oct 29, 2026
d162ddc
feat(embeddings): honor OPENAI_BASE_URL for OpenAI-compatible endpoints
cursoragent Oct 30, 2026
1d76560
test(cli): cover reindex via npm-style bin symlink entrypoint
cursoragent Oct 30, 2026
333f520
feat(embeddings): add native Ollama embedding provider
cursoragent Oct 30, 2026
7b823d2
fix(embeddings): guard against macOS onnxruntime mutex crash
cursoragent Oct 30, 2026
e823cdf
docs: prepare honest 2.3.0 release surfaces
cursoragent Oct 30, 2026
83698db
feat(cli): extend init to six MCP clients with dry-run
cursoragent Oct 30, 2026
0265d4d
fix(cli): detect npm bin symlinks for --version and subcommands
cursoragent Oct 30, 2026
28e71e3
fix: triage quick wins for chunk cap, map, and path search
cursoragent Oct 30, 2026
4f9867d
fix(embeddings): bust provider cache when endpoint or API key changes
cursoragent Oct 30, 2026
cc18718
Merge branch 'master' into cursor/beta-usable-setup-d85c
cursoragent Oct 30, 2026
814dcde
docs: address PR #148 review (indexing copy, changelog, credit)
cursoragent Oct 30, 2026
8fd2c49
fix(frontend): index Vue/Svelte sources and tighten Next route detection
cursoragent Oct 30, 2026
1ba2a56
Add reproducible niche prior-art benchmark harness and results
cursoragent Oct 30, 2026
453d271
Ignore Aider tag cache created by repo-map lane
cursoragent Oct 30, 2026
5442427
Merge PR #145 into integration/relaunch-2.3.0 (Agent: cursor-cloud/cb…
cursoragent Oct 30, 2026
ee45fc0
Merge PR #142 into integration/relaunch-2.3.0 (Agent: cursor-cloud/cb…
cursoragent Oct 30, 2026
3b89d85
Merge PR #146 into integration/relaunch-2.3.0 (Agent: cursor-cloud/cb…
cursoragent Oct 30, 2026
65c9653
Merge PR #147 into integration/relaunch-2.3.0 (Agent: cursor-cloud/cb…
cursoragent Oct 30, 2026
5278728
Merge PR #153 into integration/relaunch-2.3.0 (Agent: cursor-cloud/cb…
cursoragent Oct 30, 2026
34059d9
Merge PR #155 into integration/relaunch-2.3.0 (Agent: cursor-cloud/cb…
cursoragent Oct 30, 2026
f4ab056
Merge PR #156 into integration/relaunch-2.3.0 (Agent: cursor-cloud/cb…
cursoragent Oct 30, 2026
64e4dad
Merge PR #148 into integration/relaunch-2.3.0 (Agent: cursor-cloud/cb…
cursoragent Oct 30, 2026
ee291d9
docs: integration preview log for 2.3.0 relaunch (Agent: cursor-cloud…
cursoragent Oct 30, 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
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ repos/

# Local benchmark/lab outputs
benchmark-runs/
benchmark-repos/
.aider.tags.cache.v4/
/outputs/
/results/*/raw/
/results/*/local/
Expand Down
27 changes: 9 additions & 18 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,15 @@
# Changelog

## Product candidate (not published)

- New projects index and search without embedding or reranker models. Existing index modes are preserved; explicit mode switches rebuild fully. Transformers and LanceDB are optional peers with actionable preflight errors.
- Setup detects supported coding tools and configures the selected tools together. It preserves existing settings, saves version-pinned launches for the selected repository, and leaves indexing to the first search.
- Added `get_code_relationships`: directed import/re-export paths up to three hops, current resolution and source checks, confined endpoints, unresolved/stale diagnostics, and a 4,000-byte response cap. Resolution selects the root's `tsconfig.json` or, when absent, `tsconfig.base.json`, without inheriting an unrelated parent configuration.
- AST chunks preserve contiguous source and static property ownership, including concise descriptor methods, callback bodies and same-line siblings. Generated scope labels remain presentation metadata. Index format 4 rebuilds incompatible indexes even when sources are unchanged, preserves the selected embedding mode, and retains previous artifacts if rebuilding fails.
- Angular TypeScript eligibility uses parsed Angular imports; ordinary `resolve` or `validate` methods, comments, strings and imports from other packages no longer select the Angular analyzer. Other eligible analyzers retain the source and declaration context. The registry order and existing template/style routing are unchanged.
- Compact `signaturePreview` uses a contiguous window of up to three lines around the strongest query-term match in the returned snippet, falling back to its opening lines. Default and explicit exploration searches omit edit preflight while retaining search quality and incomplete-source warnings. Explicit `edit`, `refactor`, and `migrate` intents retain mutation guards.
- Search excludes ordinary stale/unavailable nominees without discarding verified current lower results or triggering an automatic full rebuild. Partial coverage, bounded exhaustion and failed semantic replenishment are explicit; corrupt metadata, build identity, paths and source ranges still fail closed.
- Symbol references scan same-build manifest sources in bounded read batches and skip parsing when a simple ASCII symbol occurs only inside longer identifiers. Unicode or arbitrary query spellings retain raw-text nomination. Coverage keeps raw-text absence separate from parser work and uncertain lexical fallback. Keyword artifact identity uses the shared index validator. Graph traversal verifies edges before consuming output caps, with bounded inspection and honest continuation.
- Watcher shutdown awaits handle closure and cancels pending callbacks. Connected stdio sessions have no default inactivity shutdown; explicit positive idle timeouts remain supported alongside handshake, EOF and parent-death guards.
- Chunk paths are persisted relative to the selected project root, including explicit-root indexing from another working directory. Previously incorrect relative paths can require a full reindex.
- Query advice is limited to grounded returned source, and abstained searches omit global pattern advice. Same-named symbols in different files remain eligible after file-level deduplication; TypeScript type arguments alone no longer select the JSX analyzer.
- The candidate requires Node 22+. CLI dispatch compares canonical entrypoint identity, including npm symlink launchers, while preserving the exported server's initialization on imports.
- Updated the runtime parser and watcher to remove the legacy braces dependency chain. Watcher exclusions use exact directory names; quoted import and export names retain their public symbol names.
- Known limits: model-free conceptual relevance is not guaranteed. Short requests can miss implementations when query words differ from source names; syntactic edges are not runtime calls; workspace/language-specific resolution can remain unresolved. Packed/protocol tests and scoped negative cases do not establish general agent-quality improvement or customer adoption. No npm publication is implied by this entry.

## [2.3.0](https://github.com/PatrickSys/codebase-context/compare/v2.2.0...v2.3.0) (2026-04-30)
## [2.3.0](https://github.com/PatrickSys/codebase-context/compare/v2.2.0...v2.3.0) (unreleased — TBD)

### Release notes

- **CLI:** Fix npm **2.2.0** regression where `npx codebase-context --version`, `status`, and `reindex` could exit with code 0 and no output (direct CLI subcommands lazy-load the MCP runtime; canonical entrypoint detection includes npm symlink launchers). Requires Node 22+.
- **Indexing:** Fresh project folders default to keyword-only indexing without downloading embedding or reranker models; existing index modes are preserved; opt in with `reindex --embeddings` and optional Transformers/LanceDB peers. Explicit mode switches rebuild fully.
- **Setup:** `init` wizard detects Claude Code, Codex, Cursor, VS Code (Copilot), Windsurf, and OpenCode, configures selected tools together, preserves existing settings, and leaves indexing to the first search.
- **Search & index pipeline:** AST-aligned chunks, index format metadata with atomic rebuilds, exploration vs edit/refactor/migrate preflight behavior, bounded symbol references, and source-validation hardening (see Features below).
- **Docs:** Position around local team conventions and edit preflight; cite Aider repo map, Repomix, and jCodeMunch as related tools; report **25.7%** vs **jCodeMunch 27.1%** expected-file recovery and the separate niche prior-art run (**50.0%** top-3 overall, **0/6** team-convention file hits) per [docs/benchmark.md](./docs/benchmark.md) without leadership claims; keep **2.4.0** features out of shipped language until published.
- **Thanks:** Nick Roth ([@rothnic](https://github.com/rothnic)) for the Intel Mac embedding crash analysis ([#68](https://github.com/PatrickSys/codebase-context/issues/68)) and custom OpenAI-compatible endpoint requirements ([#70](https://github.com/PatrickSys/codebase-context/issues/70)) that shaped workaround guidance in this release.

### Features

Expand Down
25 changes: 25 additions & 0 deletions INTEGRATION-PREVIEW.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
Agent: cursor-cloud/cbc-integration

| PR | Merge result | Tests after | Conflicts and fixes |
| --- | --- | --- | --- |
| [#154](https://github.com/PatrickSys/codebase-context/pull/154) | fast-forward | pass (131 files, build, `pnpm pack`) | none |
| [#145](https://github.com/PatrickSys/codebase-context/pull/145) | merged | pass | auto-merge `docs/capabilities.md` only |
| [#142](https://github.com/PatrickSys/codebase-context/pull/142) | merged (PR closed, branch merged) | pass | none |
| [#146](https://github.com/PatrickSys/codebase-context/pull/146) | merged | pass | `capabilities.md` (OpenAI + Ollama bullets); `types.ts` (`resolveDefaultApiEndpoint`, dedupe); embedding env + OpenAI tests |
| [#147](https://github.com/PatrickSys/codebase-context/pull/147) | merged | pass | none |
| [#153](https://github.com/PatrickSys/codebase-context/pull/153) | merged | pass | none |
| [#155](https://github.com/PatrickSys/codebase-context/pull/155) | merged | pass | none |
| [#156](https://github.com/PatrickSys/codebase-context/pull/156) | merged | pass | `docs/benchmark.md`: kept front-end matrix (#155) + niche benchmark (#156) |
| [#148](https://github.com/PatrickSys/codebase-context/pull/148) | merged | pass | README/cli/capabilities release copy; **README/CHANGELOG aligned to `docs/benchmark.md` after #156** (see below) |

**Integration checks (final):** `pnpm test` (1348 passed), `pnpm run build`, `pnpm pack --dry-run`, MCP stdio `search_codebase` on `/tmp/vite-react-smoke` (Vite React template).

**#148 follow-up (not applied on #148 branch):** add to README Evidence / Limits and CHANGELOG 2.3.0 Docs bullet:

- README (after 25.7% retrieval sentence): *The reproducible niche prior-art slice (18 tasks, `npm run benchmark:niche`) scored **50.0%** top-3 file hit rate overall but **0/6** top-3 file hits on team-convention lookup (pattern signals matched; ranked paths did not).*
- CHANGELOG Docs bullet append: *…and the separate niche prior-art run (**50.0%** top-3 overall, **0/6** team-convention file hits) per docs/benchmark.md…*
- README Evidence paragraph: note niche table is a **separate frozen family**, not pooled with 25.7%.

**Recommended merge order to master:** #154 → #145 → #142 → #146 → #147 → #153 → #155 → #156 → #148 (with #148 doc patch above).

**Do not merge this PR.** Integration preview only.
3 changes: 3 additions & 0 deletions MOTIVATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ The root cause isn't the model. It's the context layer. Agents get raw code from
| ---------------------------- | --------------------------------------------------- | ------------------------------------------------------------------------------- |
| `.cursorrules` / `AGENTS.md` | Static rules the agent may or may not always follow | Can't express migration states ("use A for new code, B for old"). Goes stale. |
| Semantic search / RAG | Finds similar code | Blind to quality. Can't tell the best example to follow from hacky workarounds. |
| **Aider repo map** | Compact structural map for the model | No team pattern frequencies, memory, or edit preflight card. |
| **Repomix** | Pack repo (or slices) into a prompt | One-shot context, not live search, conventions, or session memory. |
| **jCodeMunch** | Fast MCP code search | Strong retrieval in our fixed benchmark; less convention/memory/edit gating. |
| Linters / formatters | Enforce static rules after writing | Don't guide before or during generation. Agent still writes wrong code first. |
| Tool-heavy MCPs (50+ tools) | Expose everything | Agents don't know which tool to call. More tools = more confusion. |

Expand Down
Loading
Loading