From a052d092b08b20aa746987fa2e6a96ba4e5b1cfd Mon Sep 17 00:00:00 2001 From: denfry Date: Sun, 14 Jun 2026 13:14:08 +0300 Subject: [PATCH 1/2] chore(benchmarks): commit public benchmark results + make release-smoke non-interactive Things that don't need maintainer involvement. - tests/benchmark_public_RESULTS.md: a logged run of the public suite (Recall@k / MRR / nDCG / token economy / freshness / graph tasks) with raw JSON and honest scope notes (synthetic fixture; real-repo M12.5 still needs labeled ground truth). - release_smoke.py robustness (release blocker): `init` without --target opens an interactive picker that aborts without a TTY, so the smoke would fail on the CI release runner and the release would never publish. Pass `--target claude` and decode subprocess output as UTF-8 (the CLI emits non-cp1251 chars; text=True crashed on a non-UTF-8 console). Co-Authored-By: Claude Opus 4.8 (1M context) --- scripts/release_smoke.py | 12 +++- tests/benchmark_public_RESULTS.md | 92 +++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 tests/benchmark_public_RESULTS.md diff --git a/scripts/release_smoke.py b/scripts/release_smoke.py index fbaaf05..835d126 100644 --- a/scripts/release_smoke.py +++ b/scripts/release_smoke.py @@ -21,7 +21,13 @@ def run(cmd: list[str], cwd: Path | None = None) -> subprocess.CompletedProcess[str]: print("+", " ".join(cmd)) - return subprocess.run(cmd, cwd=cwd, text=True, capture_output=True, check=True) + # Decode child output as UTF-8 (the CLI emits UTF-8, e.g. «redacted» / em dashes) + # instead of the locale default — on a non-UTF-8 console (e.g. Windows cp1251) + # text=True would raise UnicodeDecodeError on the CLI's output. + return subprocess.run( + cmd, cwd=cwd, capture_output=True, check=True, + encoding="utf-8", errors="replace", + ) def main() -> int: @@ -50,7 +56,9 @@ def main() -> int: ) run(["git", "init"], cwd=proj) - run([str(cbx), "--root", str(proj), "init"]) + # Explicit --target: init's picker is interactive and aborts without a TTY + # (e.g. in CI / captured subprocesses), which would fail the smoke spuriously. + run([str(cbx), "--root", str(proj), "init", "--target", "claude"]) assert (proj / ".claude" / "skills" / "codebase-index" / "SKILL.md").is_file() run([str(cbx), "--root", str(proj), "index"]) diff --git a/tests/benchmark_public_RESULTS.md b/tests/benchmark_public_RESULTS.md new file mode 100644 index 0000000..b2a28b6 --- /dev/null +++ b/tests/benchmark_public_RESULTS.md @@ -0,0 +1,92 @@ +# Public benchmark — results + +Logged run of the reproducible public suite (`tests/benchmark_public.py`). Per +`docs/BENCHMARKS.md`, no headline number is published without a logged run; this +file is that log. + +- **Date:** 2026-06-14 +- **Version:** 1.4.0 line (branch `chore/benchmarks-and-release`) +- **Fixture:** synthetic multi-language repo built by `build_public_fixture` + (8 ground-truth cases across python/typescript/java/go/rust/csharp/php/sql, + plus 24 filler docs). This is a *toy* fixture — it proves the pipeline and + guards regressions; it is **not** evidence of real-repo quality. +- **Embeddings:** disabled (lexical + symbol + graph only). + +Reproduce: + +```bash +python tests/benchmark_public.py --workdir .tmp-public-benchmark +``` + +## Headline metrics + +| Family | Metric | Value | +|---|---|---| +| Retrieval quality | Recall@1 / @3 / @5 | 0.75 / 1.00 / 1.00 | +| | MRR | 0.875 | +| | nDCG@5 | 0.908 | +| Answer correctness | answer_correctness@3 | 1.00 | +| Token economy | index tokens (avg, top-3) | 21.1 | +| | grep-window tokens (avg, top-3) | 72.4 | +| | compression vs grep | 3.43× | +| Freshness | stale detected after edit → fresh after update | yes / yes | +| | incremental update latency | ~48 ms (1 file) | +| Graph tasks | pass rate | 1 / 3 (0.33) | +| Scale | files / symbols / edges indexed | 35 / 18 / 7 | + +## Reading the numbers honestly + +- Retrieval is at ceiling on this fixture (Recall@3 = 1.0), so it confirms + *no regression*, not headroom. The rerank `in_degree` dampening shipped in this + line is flat here by design — the fixture has no "god classes". Its real-repo + effect is tracked under **M12.5** (needs a maintainer-labeled real repo). +- `graph_tasks` pass rate (0.33) reflects the import/call/ref/inheritance graph + only; the framework-aware edges that would lift it are designed in + `docs/superpowers/specs/2026-06-14-typed-framework-edges-design.md` (M13) and + not yet implemented. +- Token economy (~3.4× vs an rg+window baseline) is a synthetic-fixture figure; + the real-repo figure (~13× on a 55k LOC Java repo) lives in + `tests/benchmark_honest_RESULTS.md`. + +## Raw output + +```json +{ + "retrieval_quality": { + "recall_at_1": 0.75, + "recall_at_3": 1.0, + "recall_at_5": 1.0, + "mrr": 0.875, + "ndcg_at_5": 0.9077324383928644 + }, + "answer_correctness": { + "answer_correctness_at_3": 1.0 + }, + "token_economy": { + "index_tokens_avg": 21.125, + "grep_window_tokens_avg": 72.375, + "tokens_saved_avg": 51.25, + "compression_vs_grep": 3.42603550295858 + }, + "language_breakdown": { + "csharp": { "cases": 1.0, "recall_at_3": 1.0, "answer_correctness_at_3": 1.0 }, + "go": { "cases": 1.0, "recall_at_3": 1.0, "answer_correctness_at_3": 1.0 }, + "java": { "cases": 1.0, "recall_at_3": 1.0, "answer_correctness_at_3": 1.0 }, + "php": { "cases": 1.0, "recall_at_3": 1.0, "answer_correctness_at_3": 1.0 }, + "python": { "cases": 1.0, "recall_at_3": 1.0, "answer_correctness_at_3": 1.0 }, + "rust": { "cases": 1.0, "recall_at_3": 1.0, "answer_correctness_at_3": 1.0 }, + "sql": { "cases": 1.0, "recall_at_3": 1.0, "answer_correctness_at_3": 1.0 }, + "typescript": { "cases": 1.0, "recall_at_3": 1.0, "answer_correctness_at_3": 1.0 } + }, + "freshness": { + "was_fresh_before_edit": true, + "stale_after_edit": true, + "files_changed_after_edit": 1.0, + "update_latency_ms": 47.64110000178334, + "files_reindexed": 1.0, + "fresh_after_update": true + }, + "graph_tasks": { "tasks": 3, "passed": 1, "pass_rate": 0.3333333333333333 }, + "scale": { "files_indexed": 35, "symbols_indexed": 18, "edges_indexed": 7, "bytes_indexed": 3632 } +} +``` From 651a10ab83263d9aed65222b95ed51b2f1526b11 Mon Sep 17 00:00:00 2001 From: denfry Date: Sun, 14 Jun 2026 13:14:25 +0300 Subject: [PATCH 2/2] release: v1.4.0 Bump version 1.3.0 -> 1.4.0 (minor: new features, no breaking changes). - src/codebase_index/__init__.py: __version__ = "1.4.0" (canonical source). - Mirrors synced via scripts/sync_skill_copies.py: .claude-plugin/plugin.json, requirements.lock (v1.4.0 tarball pin), and the .skill_version stamps. - CHANGELOG.md: cut [1.4.0] - 2026-06-14 from [Unreleased]; add the benchmark results entry; repair the compare-link section (add the missing [1.3.0] link, point [Unreleased] at v1.4.0). - Docs: bump @v1.3.0 install pins -> @v1.4.0 and "is released" / status prose across README, QUICKSTART, INSTALLATION, FAQ, MCP, SEO, ARCHITECTURE, installer. Release contents (this line): MCP schema_version+tool envelope + golden snapshots + import fix; god-class in_degree rerank dampening; config/IaC labeling; typed-edge design doc; roadmap sync + trust-model callout; public benchmark results. Co-Authored-By: Claude Opus 4.8 (1M context) --- .claude-plugin/plugin.json | 2 +- .claude/skills/codebase-index/.skill_version | 2 +- .codex/skills/codebase-index/.skill_version | 2 +- .../skills/codebase-index/.skill_version | 2 +- CHANGELOG.md | 9 ++++++- README.md | 27 ++++++++++++------- docs/ARCHITECTURE.md | 2 +- docs/FAQ.md | 6 ++--- docs/INSTALLATION.md | 20 +++++++------- docs/MCP.md | 2 +- docs/QUICKSTART.md | 2 +- docs/SEO.md | 4 +-- docs/installer.md | 4 +-- requirements.lock | 2 +- src/codebase_index/__init__.py | 2 +- 15 files changed, 51 insertions(+), 37 deletions(-) diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 1ec7ce5..5d6fee3 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -3,7 +3,7 @@ "name": "codebase-index", "displayName": "Codebase Index", "description": "Local-first hybrid codebase index. Auto-provisions its Python CLI on first session start; the skill searches the index so Claude reads only the most relevant files.", - "version": "1.3.0", + "version": "1.4.0", "author": { "name": "codebase-index contributors" }, diff --git a/.claude/skills/codebase-index/.skill_version b/.claude/skills/codebase-index/.skill_version index f0bb29e..88c5fb8 100644 --- a/.claude/skills/codebase-index/.skill_version +++ b/.claude/skills/codebase-index/.skill_version @@ -1 +1 @@ -1.3.0 +1.4.0 diff --git a/.codex/skills/codebase-index/.skill_version b/.codex/skills/codebase-index/.skill_version index f0bb29e..88c5fb8 100644 --- a/.codex/skills/codebase-index/.skill_version +++ b/.codex/skills/codebase-index/.skill_version @@ -1 +1 @@ -1.3.0 +1.4.0 diff --git a/.opencode/skills/codebase-index/.skill_version b/.opencode/skills/codebase-index/.skill_version index f0bb29e..88c5fb8 100644 --- a/.opencode/skills/codebase-index/.skill_version +++ b/.opencode/skills/codebase-index/.skill_version @@ -1 +1 @@ -1.3.0 +1.4.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index 54c9e6e..1f3aca6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ All notable changes to this project are documented here. The format is based on ## [Unreleased] +## [1.4.0] - 2026-06-14 + ### Added - **`clean` is now implemented** (it was a documented-but-stubbed `_todo` since M0). `codebase-index clean` resets the index database (`index.sqlite` + WAL/SHM @@ -37,6 +39,9 @@ All notable changes to this project are documented here. The format is based on confidence/provenance model, resolver architecture, and a benchmark gate. - **"Trust model in 60 seconds"** callout, identical in `README.md` and `docs/SECURITY.md`. +- **`tests/benchmark_public_RESULTS.md`**: a logged run of the public benchmark + suite (Recall@k / MRR / nDCG / token economy / freshness / graph tasks) with the + raw JSON and honest scope notes, per the `docs/BENCHMARKS.md` no-overclaim rule. ### Changed - **Reranker: dampened the god-class `in_degree` tiebreak** (`retrieval/rerank.py`). @@ -270,7 +275,9 @@ All notable changes to this project are documented here. The format is based on - Hooks example + `watch` mode for keeping the index fresh without blocking the edit loop (M8). - `doctor`, `stats`, `clean` diagnostics/maintenance commands. -[Unreleased]: https://github.com/denfry/codebase-index/compare/v1.2.1...HEAD +[Unreleased]: https://github.com/denfry/codebase-index/compare/v1.4.0...HEAD +[1.4.0]: https://github.com/denfry/codebase-index/compare/v1.3.0...v1.4.0 +[1.3.0]: https://github.com/denfry/codebase-index/compare/v1.2.1...v1.3.0 [1.2.1]: https://github.com/denfry/codebase-index/compare/v1.2.0...v1.2.1 [1.2.0]: https://github.com/denfry/codebase-index/compare/v1.1.0...v1.2.0 [1.1.0]: https://github.com/denfry/codebase-index/compare/v1.0.2...v1.1.0 diff --git a/README.md b/README.md index 3f8a346..363d414 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ If you are opening this repository for the first time, follow this order: If you only need the shortest path, run: ```bash -pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.3.0" +pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.4.0" cd your-project codebase-index init # prompts for Claude Code / Codex CLI / OpenCode codebase-index index @@ -73,13 +73,20 @@ codebase-index search "where is authentication implemented?" ## Project Status -**`1.3.0` is released.** The current release includes repository discovery, +**`1.4.0` is released.** The current release includes repository discovery, SQLite FTS5 storage, Tree-sitter symbols and references, hybrid ranking, graph impact analysis, token-budgeted retrieval packets, optional local embeddings, hooks/watch support, multi-CLI installation, MCP server support, and a tested GitHub-only `pipx` install path. -The `1.3.0` release adds a content-addressed embedding cache (rebuilds reuse +The `1.4.0` release hardens the MCP contract (a `schema_version` + `tool` +envelope on every payload, golden-locked per tool, plus a fix so the server +loads on current `mcp`/`pydantic`), dampens the god-class `in_degree` rerank +tiebreak (logarithmic, validated no-regression on the public benchmark), and +labels config/IaC files (Dockerfile, Terraform, HCL, INI, Makefiles) so infra +surfaces in `stats` and search. + +The earlier `1.3.0` release added a content-addressed embedding cache (rebuilds reuse vectors for unchanged content), a batched graph build (7–28× faster edge resolution plus a new `edges(file_id)` index), a shared CLI/MCP service layer (MCP hybrid search now uses the vector channel; `index_stats` reports the @@ -110,7 +117,7 @@ For most users, install the package from the tagged GitHub release and run `init` inside the repository you want to index: ```bash -pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.3.0" +pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.4.0" cd your-project codebase-index init # choose Claude Code, Codex CLI, OpenCode, or all codebase-index index @@ -148,7 +155,7 @@ fetch the package; later sessions are offline. The skill builds its index on your first codebase question, so there is no manual `index` step. **Distribution note:** the plugin bootstrap installs the pinned requirement from -`requirements.lock`. In `1.3.0`, that lock points at the tagged GitHub release +`requirements.lock`. In `1.4.0`, that lock points at the tagged GitHub release instead of PyPI. You can override it with `CBX_INSTALL_SPEC` when testing a local checkout or a different Git ref. @@ -285,7 +292,7 @@ irm https://raw.githubusercontent.com/denfry/codebase-index/main/install.ps1 | i ```bash cd your-project -pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.3.0" +pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.4.0" codebase-index init codebase-index index ``` @@ -305,13 +312,13 @@ the `pipx` environment was likely created with an older Python version. Reinstal ```powershell pipx uninstall codebase-index py -0p -pipx install --python "\python.exe" "git+https://github.com/denfry/codebase-index.git@v1.3.0" +pipx install --python "\python.exe" "git+https://github.com/denfry/codebase-index.git@v1.4.0" ``` For example: ```powershell -pipx install --python "C:\Users\you\AppData\Local\Programs\Python\Python312\python.exe" "git+https://github.com/denfry/codebase-index.git@v1.3.0" +pipx install --python "C:\Users\you\AppData\Local\Programs\Python\Python312\python.exe" "git+https://github.com/denfry/codebase-index.git@v1.4.0" ``` Then run initialization again: @@ -325,7 +332,7 @@ codebase-index index ### Option 2: Install with pipx from GitHub ```bash -pipx install "git+https://github.com/denfry/codebase-index.git@v1.3.0" +pipx install "git+https://github.com/denfry/codebase-index.git@v1.4.0" cd your-project codebase-index init --target auto codebase-index index @@ -343,7 +350,7 @@ pip install -e ".[dev]" PyPI, `uvx`, Homebrew, signed release checksums, and SBOMs are important for a tool that reads entire repositories, but they are not all verified as shipped in -`1.3.0`. Target install story: +`1.4.0`. Target install story: ```bash uvx codebase-index init diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 28d098a..b25c297 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -2,7 +2,7 @@ ## 1. Overview -`codebase-index` is a **local-first** code intelligence layer for AI coding agents. In `1.3.0` +`codebase-index` is a **local-first** code intelligence layer for AI coding agents. In `1.4.0` it has two shipped faces: 1. **A Claude Code Skill** (`.claude/skills/codebase-index/SKILL.md`) that Claude auto-invokes for diff --git a/docs/FAQ.md b/docs/FAQ.md index 0541db2..ab2be78 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -10,7 +10,7 @@ This page answers the most common questions about installing, running, and trust with `pipx` (isolated) or `pip`, pinned to a release tag for reproducibility: ```bash -pipx install "git+https://github.com/denfry/codebase-index.git@v1.3.0" +pipx install "git+https://github.com/denfry/codebase-index.git@v1.4.0" ``` Then run `codebase-index init` inside your project and `codebase-index index` to build @@ -158,8 +158,8 @@ Yes. Use any of these methods: ## Is it production-ready? -Yes — `codebase-index` is released as **v1.3.0**. The core indexing and search -functionality is implemented and tested. The current `1.3.0` package includes: +Yes — `codebase-index` is released as **v1.4.0**. The core indexing and search +functionality is implemented and tested. The current `1.4.0` package includes: - Hybrid FTS/path/symbol/vector retrieval - Import/call/reference graph expansion and `impact` diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md index 5509a73..95e1862 100644 --- a/docs/INSTALLATION.md +++ b/docs/INSTALLATION.md @@ -3,7 +3,7 @@ This page explains how to install `codebase-index` and make it available in Claude Code, Codex CLI, or OpenCode. > **Distribution:** `codebase-index` is **not on PyPI**. It is installed directly -> from GitHub via `git+https://...@`. Pin to a release tag (e.g. `@v1.3.0`) +> from GitHub via `git+https://...@`. Pin to a release tag (e.g. `@v1.4.0`) > for reproducible installs; use `@main` to track the latest. ## Choose Your Path @@ -28,7 +28,7 @@ Install the tagged GitHub release and scaffold the skill into your project: ```bash cd your-project -pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.3.0" +pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.4.0" codebase-index init codebase-index index ``` @@ -62,13 +62,13 @@ ln -s ~/codebase-index/skill ~/.claude/skills/codebase-index ```bash # Using pip from the tagged GitHub release -pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.3.0" +pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.4.0" # Using pipx from GitHub (isolated environment) -pipx install "git+https://github.com/denfry/codebase-index.git@v1.3.0" +pipx install "git+https://github.com/denfry/codebase-index.git@v1.4.0" # Using uv from GitHub -uv tool install "git+https://github.com/denfry/codebase-index.git@v1.3.0" +uv tool install "git+https://github.com/denfry/codebase-index.git@v1.4.0" # From source (editable mode) git clone https://github.com/denfry/codebase-index.git @@ -91,7 +91,7 @@ pip install -e ".[embeddings-local,watch,dev]" ### PyPI / uvx / Homebrew status -As of `1.3.0`, this documentation treats GitHub tag installs as the verified +As of `1.4.0`, this documentation treats GitHub tag installs as the verified path. PyPI, `uvx codebase-index init`, Homebrew tap installation, signed checksums, and SBOMs are distribution targets for a more complete release story. @@ -108,7 +108,7 @@ brew install denfry/tap/codebase-index On a machine with only Python + pipx: ```bash -pipx install "git+https://github.com/denfry/codebase-index.git@v1.3.0" +pipx install "git+https://github.com/denfry/codebase-index.git@v1.4.0" cd /path/to/your/repo codebase-index init # writes .claude/skills/codebase-index/ + .gitignore rules codebase-index index # builds .claude/cache/codebase-index/index.sqlite @@ -131,7 +131,7 @@ Expected output: === codebase-index Doctor === [OK] Python 3.12 (requires 3.11+) -[OK] codebase-index package installed (v1.3.0) +[OK] codebase-index package installed (v1.4.0) [OK] tree-sitter is available [INFO] Cache directory not yet created: ... [INFO] Skill not installed in .claude/skills/ @@ -188,7 +188,7 @@ Use `codebase-index doctor` to verify which hooks are enabled. For heavy editing For heavy editing sessions, `watch` mode keeps the index fresh via a debounced filesystem observer. Requires the `[watch]` extra: ```bash -pip install "codebase-index[watch] @ git+https://github.com/denfry/codebase-index.git@v1.3.0" +pip install "codebase-index[watch] @ git+https://github.com/denfry/codebase-index.git@v1.4.0" codebase-index watch --debounce 500 ``` @@ -278,7 +278,7 @@ Set `allow_external` to `false` to disable external API calls. ## Recommended Flow for First-Time Users ```bash -pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.3.0" +pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.4.0" cd your-project codebase-index init codebase-index index diff --git a/docs/MCP.md b/docs/MCP.md index cf708e7..d56c675 100644 --- a/docs/MCP.md +++ b/docs/MCP.md @@ -3,7 +3,7 @@ `codebase-index` ships a stdio MCP server powered by the optional `mcp` extra: ```bash -pip install "codebase-index[mcp] @ git+https://github.com/denfry/codebase-index.git@v1.3.0" +pip install "codebase-index[mcp] @ git+https://github.com/denfry/codebase-index.git@v1.4.0" codebase-index mcp --root /path/to/repo ``` diff --git a/docs/QUICKSTART.md b/docs/QUICKSTART.md index 76eade6..372de88 100644 --- a/docs/QUICKSTART.md +++ b/docs/QUICKSTART.md @@ -11,7 +11,7 @@ Use this guide if you are new to `codebase-index` and want the fastest path to y ## Step 1: Install ```bash -pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.3.0" +pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.4.0" ``` Or from source: diff --git a/docs/SEO.md b/docs/SEO.md index 03ed308..fdb9365 100644 --- a/docs/SEO.md +++ b/docs/SEO.md @@ -177,7 +177,7 @@ Features: - Secret redaction - Respects .gitignore -Install: pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.3.0" +Install: pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.4.0" GitHub: https://github.com/denfry/codebase-index ``` @@ -192,5 +192,5 @@ codebase-index builds a local hybrid index so Claude finds the right files witho - No network by default - Token-efficient output -pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.3.0" +pip install "codebase-index @ git+https://github.com/denfry/codebase-index.git@v1.4.0" ``` diff --git a/docs/installer.md b/docs/installer.md index db77dc3..580dc1e 100644 --- a/docs/installer.md +++ b/docs/installer.md @@ -108,7 +108,7 @@ pwsh ./install.ps1 -Target claude -InstallDir "D:\skills\codebase-index" **Pinning по ветке/тегу** (воспроизводимость и безопасность): ```sh -sh install.sh --branch v1.3.0 +sh install.sh --branch v1.4.0 ``` --- @@ -151,7 +151,7 @@ sh install.sh --branch v1.3.0 ```json { "skill_name": "codebase-index", - "version": "1.3.0", + "version": "1.4.0", "installed_at": "2026-05-29T12:00:00Z", "target": "claude", "os": "linux", diff --git a/requirements.lock b/requirements.lock index 4c95b71..3bd1654 100644 --- a/requirements.lock +++ b/requirements.lock @@ -1,3 +1,3 @@ -codebase-index @ https://github.com/denfry/codebase-index/archive/refs/tags/v1.3.0.tar.gz +codebase-index @ https://github.com/denfry/codebase-index/archive/refs/tags/v1.4.0.tar.gz tree-sitter==0.25.2 tree-sitter-language-pack==1.8.1 diff --git a/src/codebase_index/__init__.py b/src/codebase_index/__init__.py index b61488b..f9384e9 100644 --- a/src/codebase_index/__init__.py +++ b/src/codebase_index/__init__.py @@ -4,4 +4,4 @@ See docs/ARCHITECTURE.md for the module map. """ -__version__ = "1.3.0" +__version__ = "1.4.0"