Skip to content

CodeWeaver 0.1.0

Choose a tag to compare

@github-actions github-actions released this 06 Apr 17:21
· 76 commits to main since this release

What's Changed

[0.1.0] - 2026-04-06

CodeWeaver v0.1.0 — First stable release

Extensible MCP server for semantic code search, graduating from
5 alpha releases and 316 commits of hardening.

Highlights:

  • Single find_code tool interface for intelligent codebase context
  • 20+ embedding providers (Voyage, OpenAI, Cohere, Bedrock, local)
  • Qdrant vector store with in-memory and server modes
  • AST-based semantic chunking for 20+ languages, delimiter
    chunking for 150+
  • Background daemon with file watching for incremental indexing with intelligent backup
  • FastMCP v3 with stdio and HTTP transports
  • Claude Code plugin distribution
  • Guided first-run onboarding
  • full docs site (docs.knitli.com/codeweaver) (coming in next few days)

What changed since the alphas:

  • 29 features, 121 fixes, 19 performance optimizations, 33 test improvements
  • Complete rewrite to type-safe DI-native architecture
  • Complete rewrite of test fixtures to use DI
  • Doubled number of tests
  • Migrated from FastMCP v2 to v3
  • AST-based hashing for semantic file change detection
  • Validated normalization of all semantic nodes across 26 supported languages; 160+ coming soon
  • Custom delimiter loading with override support
  • Security fixes: removed eval() in DI, replaced pickle with JSON cache
  • Comprehensive CI across Python 3.12–3.14
  • 3.13T (free-threaded python) working for most users/environments; file issues if unstable
  • 3.14T not available due to upstream dependencies requiring updates

Pre-1.0: API may still change. Planned for upcoming releases:
context agent orchestration, pydantic-graph pipelines, and
expanded provider ecosystem.

https://pypi.org/project/code-weaver/0.1.0/

Installation

Install from PyPI:

pip install code-weaver

Or download the wheel/source distribution from the assets below.

Verification

All release artifacts are built from source and include:

  • 📦 Wheel distribution (.whl)
  • 📦 Source distribution (.tar.gz)

Full Changelog: v0.1.0-alpha.4...v0.1.0

What's Changed

  • Fix: Mise configuration changes causing blocking CI failures by @bashandbone in #196
  • feat: implement connection pooling for supported providers by @bashandbone in #194
  • Fix: Incorrect property access causing indexing failures by @bashandbone in #200
  • feat: update README and feature comparison chart for clarity and accuracry by @bashandbone in #201
  • Feat/improve docs clarity features by @bashandbone in #202
  • ⚡ Optimize in-memory vector store persistence I/O by @bashandbone in #206
  • Alpha 6 — "Pull the Band-Aid" by @bashandbone in #213
  • 🧹 Refactor: Remove bare except Exception: suppressing errors silently by @bashandbone in #227
  • 🧹 Remove deprecated and unused combined_lifespan alias by @bashandbone in #226
  • Fix mteb_to_codeweaver.py: undefined names, broken init block, wrong imports and sys.path by @Copilot in #214
  • test: update CircuitBreakerState to use .variable by @bashandbone in #228
  • ⚡ perf: Optimize Provider membership check using tuple by @bashandbone in #218
  • ⚡ perf: optimize membership check in _check_profile using set by @bashandbone in #220
  • 🧪 Add unit tests for DiscoveredFile absolute_path property by @bashandbone in #215
  • ⚡ Optimize list membership check to set for HTML tags by @bashandbone in #216
  • Fix mock_provider_lazy configuration in integration tests by @bashandbone in #232
  • ⚡ Optimize list membership check in index command by @bashandbone in #234
  • 🧪 test: add coverage for force shutdown handler by @bashandbone in #217
  • 🧪 test: Add unit tests for get_version fallback mechanisms by @bashandbone in #219
  • 🔒 Replace insecure pickle with JSON for node types cache by @bashandbone in #233
  • ⚡ perf: Optimize Qdrant point deletion by removing batching by @bashandbone in #247
  • ⚡ Optimize sequential Exa tool registration to use asyncio.gather by @bashandbone in #246
  • 🧪 test(core): cover conditional branches in DiscoveredFile from_path by @bashandbone in #245
  • 🧪 Add tests for transport conditional branches in main.py by @bashandbone in #242
  • 🔒 Fix dangerous eval() in DI container resolution by @bashandbone in #229
  • ⚡ Optimize HttpClientPool.close_all with concurrent execution by @bashandbone in #244
  • ⚡ perf: optimize _cleanup_deleted_files to use batched deletion by @bashandbone in #241
  • 🧪 Test conditional branches in from_chunk by @bashandbone in #243
  • ⚡ [Performance] Batch backup vector updates during reconciliation by @bashandbone in #248
  • ⚡ Bolt: Use logical operators instead of any([...]) for lazy evaluation by @bashandbone in #253
  • ⚡ Bolt: Optimize chunker line length calculation by @bashandbone in #256
  • fix: Add automatic test skipping for Python 3.14+ and missing dependencies by @bashandbone in #251
  • Use AST-based hashing for semantic file change detection by @Copilot in #259
  • feat: migrate from FastMCP v2 to v3 by @bashandbone in #239
  • ⚡ Bolt: optimize language family detection pattern caching by @bashandbone in #263
  • ⚡ Bolt: Optimize constant literal from list to tuple in logger loop by @bashandbone in #271
  • 🧪 Add tests for build_success_response by @bashandbone in #273
  • 🧪 test(search): add missing unit tests for detect_intent by @bashandbone in #272
  • test: add name to lazy mock to mimic a class by @bashandbone in #267
  • 🧹 [Code Health] Rename _check_family_dimension_validation and its arguments by @bashandbone in #266
  • ⚡ Bolt: [performance improvement] Optimize Bedrock requests list appending by @bashandbone in #264
  • test: fix make_lazy_provider_mock return value configuration by @bashandbone in #269
  • 🧹 Refactor Unnecessary Try/Except blocks with Pass in Vector Stores by @bashandbone in #268
  • 🧹 Remove Empty Exceptions in Start Command by @bashandbone in #265
  • 🧪 Testing improvement for generate_summary by @bashandbone in #270
  • ⚡ Bolt: [performance improvement] Avoid single-item list allocations in spans by @bashandbone in #274
  • feat: smarter exception messaging — deduplicated chains, format_for_display, log_record by @Copilot in #278
  • fix: CI green — all Python versions (3.12 – 3.14t): pytest, persistence, cffi, voyageai by @Copilot in #276
  • fix: defer fastembed import errors to use time instead of import time by @aiedwardyi in #280
  • feat: Implement custom delimiter loading with override, type safety, and new-language detection by @bashandbone in #275
  • fix: preserve duplicate keyword delimiter matches by @aiedwardyi in #282
  • ⚡ Bolt: [performance improvement] optimize string length summation in config types by @bashandbone in #284
  • fix: handle oversized chunks in reranking capabilities by @bashandbone in #285
  • feat(chunker): add FileTooLargeError for oversized files by @bashandbone in #289
  • feat: distribute CodeWeaver as a Claude Code plugin by @bashandbone in #290
  • ⚡ Bolt: [performance improvement] fast generation of line pos lengths in Chunker with itertools by @bashandbone in #293
  • feat: guided first-run onboarding via SessionStart hook + onboarding agent by @bashandbone in #291
  • fix: disable free-threaded Python (3.13t/3.14t) CI matrix to stop noisy issue creation by @Copilot in #294
  • ⚡ Bolt: [performance improvement] Optimize extend() list allocations by @bashandbone in #295
  • Prepare for v0.1.0 release with versioning updates by @bashandbone in #296
  • fix: move secrets from workflow-level env to job-level env in _reusable-test.yml by @Copilot in #297
  • fix: remove null include key causing _reusable-test.yml to fail by @Copilot in #298

New Contributors

Full Changelog: v0.1.0-alpha.5...v0.1.0