Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"name": "codebase-index",
"description": "Semantic code search and codebase graph tools for Claude Code",
"source": "./",
"version": "0.32.2"
"version": "0.33.0"
}
]
}
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "codebase-index",
"version": "0.32.2",
"version": "0.33.0",
"description": "Semantic code search and codebase graph tools for Claude Code",
"displayName": "Codebase Index",
"author": {
Expand Down
2 changes: 1 addition & 1 deletion .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "codebase-index",
"version": "0.32.2",
"version": "0.33.0",
"description": "Semantic code search and codebase graph tools for Codex",
"author": {
"name": "Kenneth",
Expand Down
6 changes: 4 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.33.0] - 2026-09-29

### Added

- **Selective ignored-path indexing**: Added `indexing.includeIgnored` to opt specific `.gitignore`-ignored project source paths into initial indexing and file watching while retaining normal include rules, explicit excludes, and built-in hidden, build, dependency, output, and restricted-path safety filters.

## [0.32.2] - 2026-09-28

### Fixed

- **Dependency security**: Updated transitive `fast-uri` to 3.1.7 and `ip-address` to 10.5.1 to resolve four GitHub Dependabot advisories affecting the runtime dependency tree.

- **Conceptual evidence locations**: Render complete repository-relative source paths for configured project and knowledge-base hits, including knowledge bases configured through symlinks, instead of machine-specific absolute paths clipped to 120 characters. Keep origin labels for multi-repository results, escape control characters in evidence paths and labels without altering normal bracketed paths, and preserve exact-symbol ordering.

- **OpenCode answer-guidance lifetime**: Retain source-verification guidance for the current turn after a discovery tool consumes the one-shot routing hint. A new user message clears or replaces it. Small exploratory studies found better supporting citations but did not establish improved factual accuracy.
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "opencode-codebase-index",
"version": "0.32.2",
"version": "0.33.0",
"description": "Host-neutral semantic codebase search with embeddings, symbol discovery, and call-graph tooling",
"type": "module",
"main": "dist/index.js",
Expand Down
6 changes: 5 additions & 1 deletion tests/multiprocess-indexing.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1791,11 +1791,14 @@ describe("multiprocess indexing", () => {
const owner = JSON.parse(fs.readFileSync(path.join(leasePath, "owner.json"), "utf-8")) as { pid: number };
const follower = first.transport.pid === owner.pid ? second : first;

embeddingServer.block();
fs.writeFileSync(sourcePath, "export function alpha() { return 'follower-refresh'; }\nexport function gamma() { return alpha(); }\n");
const search = await follower.client.callTool({
const pendingSearch = follower.client.callTool({
name: "codebase_search",
arguments: { query: "beta" },
});
await embeddingServer.waitForRequestCount(1, 12_000);
const search = await pendingSearch;
const searchText = (search.content as Array<{ text?: string }>).map(({ text }) => text ?? "").join("\n");
expect(search.isError).toBe(true);
expect(searchText).toContain("INDEX_UNAVAILABLE");
Expand All @@ -1807,6 +1810,7 @@ describe("multiprocess indexing", () => {
},
});
expect(searchText).not.toContain("INDEX_BUSY");
embeddingServer.release();
await waitForCondition(
() => embeddingServer.inputs.some((input) => input.includes("follower-refresh")),
"leader refresh requested by follower",
Expand Down
Loading