Releases
This page summarizes ContextWeaver changelogs from the v1.0.0 baseline onward. v1.0.0 maps to commit da79f2931157aa06b08aab99aaa4d43bcfa43f66; no matching Git tag or GitHub Release was found in the repository. v1.4.0 has a Git tag, but no GitHub Release was found. Prerelease versions create GitHub pre-releases and local testing tarballs only; they are not published to npm.
Version index
| Version | Type | Published | Link | Changes |
|---|---|---|---|---|
v1.6.0-alpha.1 | Alpha prerelease | 2026-06-09 | GitHub Release | v1.6.0-alpha.0...v1.6.0-alpha.1 |
v1.6.0-alpha.0 | Alpha prerelease | 2026-06-09 | GitHub Release | v1.5.3...v1.6.0-alpha.0 |
v1.5.4 | Stable | 2026-06-13 | GitHub Release | v1.5.3...v1.5.4 |
v1.5.3 | Stable | 2026-06-06 | GitHub Release | v1.5.2...v1.5.3 |
v1.5.3-beta.1 | Beta prerelease | 2026-06-06 | GitHub Release | v1.5.3-beta.0...v1.5.3-beta.1 |
v1.5.3-beta.0 | Beta prerelease | 2026-06-05 | GitHub Release | v1.5.3-alpha.0...v1.5.3-beta.0 |
v1.5.3-alpha.0 | Alpha prerelease | 2026-06-05 | GitHub Release | v1.5.2...v1.5.3-alpha.0 |
v1.5.2 | Stable | 2026-06-03 | GitHub Release | v1.5.1...v1.5.2 |
v1.5.1 | Stable | 2026-06-03 | GitHub Release | v1.5.0...v1.5.1 |
v1.5.0 | Stable | 2026-06-02 | GitHub Release | v1.4.0...v1.5.0 |
v1.4.0 | Stable tag | 2026-05-19 | Git tag | v1.0.0 commit...v1.4.0 |
v1.0.0 | Baseline commit | 2026-03-13 | Commit | v0.0.7...v1.0.0 commit |
Unreleased
No pending changes.
v1.5.4
Adds the
contextweaver configcommand for managing environment variables through the CLI, eliminating the need to manually edit.envfiles. Supports listing, setting, validating, and interactive wizard-based configuration.
New Features
Config Command
config list: View current configuration with automatic masking of sensitive information (API keys)config set <key> <value>: Set individual environment variables with validationconfig validate: Verify that all required configuration is validconfig wizard: Interactive setup wizard for guided configuration
Supported configuration keys:
- Embedding settings:
EMBEDDINGS_API_KEY,EMBEDDINGS_BASE_URL,EMBEDDINGS_MODEL,EMBEDDINGS_MAX_CONCURRENCY,EMBEDDINGS_DIMENSIONS - Reranker settings:
RERANK_API_KEY,RERANK_BASE_URL,RERANK_MODEL,RERANK_TOP_N - Search parameters:
CW_SEARCH_WVEC,CW_SEARCH_WLEX,CW_SEARCH_RERANK_TOP_N,CW_SEARCH_MAX_TOTAL_CHARS,CW_SEARCH_VECTOR_TOP_K,CW_SEARCH_SMART_MAX_K,CW_SEARCH_IMPORT_FILES_PER_SEED - Other:
IGNORE_PATTERNS
Usage examples:
# View current configuration
contextweaver config list
# Set a configuration value
contextweaver config set EMBEDDINGS_MAX_CONCURRENCY 20
# Validate configuration
contextweaver config validate
# Interactive configuration wizard
contextweaver config wizardDocumentation
- Added comprehensive config command documentation (
docs/config-command.md) with usage guides, best practices, and troubleshooting
v1.6.0-alpha.1
Continues the native migration roadmap with P1 (import resolver
extract()) and P2 (encoding detect/decode) ported to Rust. Both are pure speedups with clean TypeScript fallbacks. With these, all CPU-bound hotspots (chunking/AST, import extraction, encoding decode) now run natively; the remaining scannerhash/filtermodules were evaluated and intentionally kept in TypeScript.
Highlights
Native import extraction (Rust regex port) — P1
- Ported the 7 import resolvers'
extract()regex to thecrates/chunkernative module viaextractImports(kind, content)(kinds:jsts/python/go/java/rust/cpp/csharp). - Output is byte-for-byte identical to the TypeScript regex, so the TypeScript-side
resolve()keeps working unchanged. GraphExpander's E3 import expansion — called on every search for each seed file — now runs through the native path when available. - Handled JS/Rust regex divergence: ASCII
\wsemantics, and the C#(?!static)(?!global)negative lookahead (unsupported by Rustregex) emulated in code. - When the native module is unavailable, each resolver transparently falls back to its original TypeScript regex (
extractTs).
Native encoding detect/decode (Rust) — P2
- Ported the detect+decode step of
readFileWithEncodingto thecrates/chunkernative module viadecodeBytes(buffer), backed bychardetng(Firefox's encoding detector) +encoding_rs(Gecko engine), replacing the JSchardet+iconv-lite. - BOM sniffing mirrors the TypeScript logic; UTF-32 (LE/BE) is decoded manually since
encoding_rsdoes not support it. Output is always UTF-8. readFileWithEncodingreads bytes in Node (fs.readFilestays in TypeScript), then prefersdecodeBytes; on missing native binary or error it falls back to the originalchardet/iconv-litepath (decodeBytesTs).
Migration scope concluded
- Evaluated the deferred scanner modules and decided not to migrate them:
hash.ts(sha256) already runs on Node's OpenSSL-backedcrypto, so a Rust port would only add a string copy across the NAPI boundary;filter.tsis I/O-bound and built on the mature npmignorelibrary, where a Rust rewrite risks byte-level gitignore divergence for no bottleneck gain.
Quality and verification
tests/search/ImportExtract.diff.test.ts: asserts native and TypeScript import output match byte-for-byte across all 7 kinds, edge cases (in-string / comment imports, C# static/global exclusion, Rustpub mod, Go block imports), and a sample of real repository source files.tests/utils/Encoding.diff.test.ts: asserts nativedecodeBytescontent matches thechardet/iconv-litepath on BOM and long CJK (GB18030 / Big5 / Shift_JIS) samples where detection converges; short ambiguous single-byte cases (where detector divergence is acceptable per design) are excluded.- Full suite green (701 tests) with the native module built.
Installation
Prerelease versions are not published to npm; download the platform tarball from the GitHub Release for local testing only.
v1.6.0-alpha.0
First prerelease shipping the Rust napi-rs native chunker. It creates a GitHub pre-release and all-platform testing tarballs only; it is not published to npm. Used to validate the cross-platform optionalDependencies install chain and native / TS fallback behavior.
Highlights
Native Rust chunker (napi-rs)
- Migrated the CPU-intensive chunking layer (Tree-sitter parsing + AST traversal + windowing + symbol/call-site extraction) to the
crates/chunkernative module. processor.tsnow prefers the Rust single-parse path (process_file), reusing one syntax tree to produce chunks, symbols, and call sites in a single pass.- When the napi module fails to load (no prebuilt binary on uncommon platforms, or an unbuilt dev environment), it transparently falls back to the existing TypeScript chunker, keeping the package usable everywhere.
- All LanceDB offset fields are normalized to the UTF-16 character domain on the Rust side, kept byte-for-byte consistent with the TS
SourceAdapter.
Cross-platform build and release
release.ymlbecomes three-staged:build(5-platform napi matrix: linux-x64-gnu / linux-arm64-gnu / darwin-x64 / darwin-arm64 / win32-x64-msvc, with--use-napi-crossfor arm64-linux) →publish-chunker(platform subpackages → chunker main package) →publish-main(main app package → GitHub Release → MCP Registry), withneedsenforcing publish ordering.- Distribution uses two layers of optionalDependencies: main app package →
@chiway/contextweaver-chunker(napi loader main package) → 5 platform subpackages; falls back to TS when a package is missing. prerelease.ymlmirrors the build matrix and packages all-platform tarballs as GitHub Prerelease assets without publishing to npm.- Cross-compile darwin-x64 on an arm64 macOS runner, and use
--no-frozen-lockfilein build/publish jobs.
Quality and verification
- Added differential tests pinning UTF-16 offset-domain consistency:
SourceAdapter,SemanticSplitter,Symbols, andCallSitesRust output compared field-by-field against TS output. - Added a
processorend-to-end integration test asserting that the built environment actually takes the native path.
Installation
Prereleases are not published to npm. Download the matching platform tarball from the GitHub Release for local testing.
v1.5.3
Highlights
Semantic graph and symbol indexing
- Added Tree-sitter tags based symbol extraction for indexed source files, stored in the new
semantic_symbolstable. - Added semantic call edge extraction for TypeScript, JavaScript, Python, Go, Rust, Java, C, C++, C#, Ruby, and PHP.
- Added the
list-symbolsMCP tool for browsing symbols by path, kind, language, and source. - Improved
get-symbol-definitionby preferring indexedsemantic_symbolsdefinitions before falling back to lexical matches. - Added incremental cleanup for
semantic_edges, so changed files remove stale call edges even when the new version has no call sites or no matched local symbols.
Vector index readiness and recovery
- Added the
contextweaver updatecommand for package update checks and guided upgrades. - Added the
vector_manifestreadiness table, making SQLite the authoritative source of vector index state while LanceDB remains the derived materialization layer. - Search and graph expansion now trust only files whose vector readiness is hash-matched, reducing stale or partially written vector recall.
- Added recovery paths for pending vector marks and no-chunk files so repeated scans converge instead of retrying indefinitely.
Release and registry readiness
- Added MCP Registry metadata via
server.jsonandpackage.json#mcpName. - Added stable and prerelease GitHub Actions publishing paths with npm trusted publishing and MCP Registry OIDC authentication.
- Fixed prerelease workflow OIDC permissions and removed an invalid dangling
fileskey. - Fixed release-blocking typecheck, lint, formatting, and whitespace issues found during the
1.5.3-rc.0review.
Schema updates
- Database schema version advances to
5. - New tables:
vector_manifest,semantic_symbols, andsemantic_edges. semantic_symbolsstores extracted definitions by file hash and symbol metadata.semantic_edgesstores semantic relationships, including local Tree-sitter call edges.
Quality and verification
- Restored and expanded
getSymbolDefinitiontests. - Added regression coverage for
semantic_symbolsprimary-key behavior. - Added regression coverage for stale
semantic_edgescleanup when files lose call sites or no longer match local symbols. - Final release validation passed:
pnpm typecheckpnpm run lintpnpm test— 124 test files / 603 tests passedpnpm build
Installation
npm install -g @chiway/contextweaver@1.5.3
# or
pnpm add -g @chiway/contextweaver@1.5.3v1.5.3-beta.1
Highlights
Call Graph Export (Semantic Edges)
- Tree-sitter call extractor: Extracts function call nodes from AST without external dependencies
- Local call graph builder: Resolves function calls within the same file and populates the
semantic_edgestable withkind='call' - Multi-language support: TypeScript, JavaScript, Python, Go, Rust, Java, C, C++, C#, Ruby, PHP (11 languages)
- Bidirectional queries: Find callers and callees using indexed queries on
semantic_edges
Verification (ContextWeaver project):
- 385 call edges covering 96 files
- Provider:
tree-sitter(lightweight implementation) - Local call coverage: ~60-70% (as expected for same-file resolution)
list-symbols MCP Tool
- New MCP tool for querying symbol outlines across the codebase
- Multi-dimensional filtering:
- Path filter (prefix or glob pattern, e.g.,
src/**/*.ts) - Symbol kind filter (
function,class,interface) - Language filter (
typescript,python,go) - Source filter (
tree-sitter/ctags)
- Path filter (prefix or glob pattern, e.g.,
- Markdown output: Grouped by file with line ranges and container information
- Efficient SQL queries: Path filtering handled at SQL layer (LIKE queries) to avoid post-filter LIMIT traps
Tree-sitter Tags Symbol Extraction
- Uses grammar-native
tags.scmquery files to extract symbols from AST - Adds patches for TypeScript/JavaScript (class/function/enum definitions)
- Optimizes
get-symbol-definitiontool: prioritizessemantic_symbolstable lookup with directory-aware ranking
Schema Updates
- Extended
SemanticEdge.providertype:'lsp' | 'tree-sitter' - Updated database CHECK constraint to allow
tree-sitteras a provider
Performance
- Zero new dependencies: Fully reuses existing tree-sitter and ParserPool infrastructure
- Indexing impact: < 5% increase (call graph building has negligible overhead)
- Query performance: Dual-index support for bidirectional call graph traversal
Implementation Details
New files:
src/semantic/treeSitterCalls.ts(184 lines) — Call site extractorsrc/semantic/callGraphBuilder.ts(183 lines) — Call graph builder with local resolutionsrc/mcp/tools/listSymbols.ts(149 lines) — Symbol listing MCP tool
Modified files:
src/semantic/types.ts— ExtendedSemanticEdge.providersrc/db/index.ts— Updated CHECK constraintsrc/scanner/processor.ts— AddedcallSitesfield and integrated call extractionsrc/scanner/index.ts— InvokesbuildAndStoreCallGraphsrc/mcp/server.ts— Registeredlist-symbolstool
Future Enhancements (Not Implemented)
- Cross-file call resolution (Phase 2): Use resolver + symbol disambiguation for inter-file calls
- Call graph query MCP tools: Direct call relationship queries (e.g.,
find-callers,find-callees) - QueryPlanner integration: Recognize symbol query intent and route to symbol table for exact matches
- Incremental symbol indexing: Hook into watcher for file-change-triggered updates
Testing and installation
This version is not published to npm. Download the .tgz asset from the Release page and install it locally:
npm install -g ./chiway-contextweaver-1.5.3-beta.1.tgzv1.5.3-beta.0
Highlights
- Added parser enrichment layers: Tree-sitter remains the primary parser, with optional
ctagsfallback symbol extraction and a disabled-by-default LSP enrichment framework. - Added SQLite
semantic_symbolsandsemantic_edgesmetadata tables for fallback symbols and future LSP semantic edges. - Added DeepSeek-powered English changelog generation to the stable release workflow, with raw commit fallback when unavailable.
- Updated the prerelease workflow to build a local npm tarball and attach it to the GitHub pre-release.
Testing and installation
This version is not published to npm. Download the .tgz asset from the Release page and install it locally:
npm install -g ./chiway-contextweaver-1.5.3-beta.0.tgzv1.5.3-alpha.0
Highlights
- Added the
contextweaver updatecommand. - Added a vector manifest consistency guard: SQLite becomes the authoritative readiness state and LanceDB is treated as the derived vector materialization layer.
- Search and graph expansion now trust only files that are
readyand hash-matched in SQLite, reducing SQLite/LanceDB dual-write inconsistency risk.
Testing and installation
This version is not published to npm. Download the .tgz asset from the Release page and install it locally:
npm install -g ./chiway-contextweaver-1.5.3-alpha.0.tgzv1.5.2
Highlights
- Added retrieval controls to the codebase retrieval MCP tool.
- Separated semantic and lexical retrieval queries.
- Added structured codebase retrieval output.
- Added deterministic deep query decomposition.
- Extended graph expansion with reverse imports and call-sites.
- Exposed low-confidence retrieval handling.
- Preserved retrieval provenance in context segments.
- Reused search services across MCP calls to reduce repeated initialization overhead.
Installation
npm install -g @chiway/contextweaver@1.5.2
# or
pnpm add -g @chiway/contextweaver@1.5.2v1.5.1
Highlights
- Updated README with v1.4.0 data architecture and migration details.
- Corrected package and repository metadata to
@chiway/contextweaverandwchiway/contextweaver-mcp. - Added CI gates for lint, typecheck, test, and build.
- Fixed a stale MCP build entry reference.
- Made the MCP server version read dynamically from
package.json. - Removed unused fields and promoted lint to a hard gate.
- Fixed old package names in the release workflow that affected duplicate-publish protection and installation instructions.
Installation
npm install -g @chiway/contextweaver@1.5.1
# or
pnpm add -g @chiway/contextweaver@1.5.1v1.5.0
Highlights
- Added watch mode and configurable search caching.
- Added stats for indexing, search, and health metrics.
- Added four granular MCP tools and matching CLI mirrors.
- Added AST semantic chunking support for Ruby, PHP, Kotlin, Swift, Lua, and Shell.
- Documented
CW_SEARCH_*environment variable configuration. - Fixed typecheck, lint, and CI issues discovered by the new gates.
- Rewrote README for v1.5.0 features and split English/Chinese documentation.
Installation
npm install -g @chiway/contextweaver@1.5.0
# or
pnpm add -g @chiway/contextweaver@1.5.0v1.4.0
Highlights
- Major data architecture and cross-store consistency fixes.
- Removed
display_code/vector_textfrom the LanceDBchunkstable; source text is looked up fromfiles.contentinstead. - Normalized
SemanticSplittermetadata offsets to the UTF-16 character domain before writes, fixing UTF-8 byte offset drift. - Schema version
2 → 3: added thepending_marksoutbox table for replaying vector index marks after mark-stage failures. - Added a
pending/done/abortedLanceDB migration state machine and a cross-process advisory lock. - Added
contextweaver migrateandcontextweaver migrate --reset. - Added
src/db/bootstrap.tsto decouple VectorStore and SQLite initialization coordination. - Fixed
ChunkContentLoaderslicing basis, crash-safe LanceDB migration, aborted-state write blocking, duplicatechunk_idhandling, migration locks, and import target loader reuse. - Expanded tests from 38 to 109 and added real LanceDB end-to-end migration tests.
Installation
npm install -g @chiway/contextweaver@1.4.0
# or
pnpm add -g @chiway/contextweaver@1.4.0v1.0.0
Baseline commit · Full changes
Highlights
- Bumped the project to
1.0.0, establishing the baseline for subsequentv1.xchangelogs. - Hardened rerank handling by tolerating empty or non-JSON responses.
- Falls back to unreranked candidates when rerank is misconfigured or unavailable, preventing search crashes.
- Removed the Zen Config abstraction before
1.0.0and merged defaults into the global configuration. - Hardened the lock mechanism and prevented an infinite healing loop.
Link note
No matching v1.0.0 Git tag or GitHub Release was found in the repository; this entry uses commit da79f2931157aa06b08aab99aaa4d43bcfa43f66 as the v1.0.0 baseline.