Releases: Goldziher/basemind
Releases · Goldziher/basemind
v0.2.2
v0.2.1
Changelog
- 38f340b chore(plugin): strengthen marketplace entry metadata
- 2da0994 chore(release): v0.2.1 — fix Claude slash commands, harden publish
- 60f3508 ci: install protoc in nightly hardening job
- d126597 fix(plugin): place Claude skills/commands at plugin root + add PRIVACY.md
Released by GoReleaser.
v0.2.0
Changelog
- e602dde chore(deps): drop kreuzberg git-pin, swap to crates.io =5.0.0-rc.18
- 529b76f chore(meta): align keywords + description across all surfaces
- b96ac99 chore(release): v0.2.0 — crates.io deps, statusline redesign, README rewrite
- 0576533 docs(readme): full positioning rewrite as AI context layer
- d0ed161 feat(plugin): redesign statusline + bundle agent-facing skills
Released by GoReleaser.
v0.1.1
Changelog
- 1e13b44 chore(release): v0.1.1 — npx routing fix + re-enable homebrew
- c11e6bc ci: trim per-PR matrix to default features + skip homebrew tap
- c888322 fix(npm): ship Node shim so npx routes through wrapper
Released by GoReleaser.
v0.1.0
0.1.0 — 2026-06-15
Initial public release. First minor wipes the schema (RELEASE_MINOR=1)
so any pre-tag .basemind/ cache rebuilds on next scan — intentional.
Feature-complete code-map server with the kreuzberg document tier surface
(reranker, keywords, NER, summarization, language detection, TOON output) and
schema-driven config across TOML / CLI / MCP / env vars, distributed across
all major coding-agent harnesses (Claude Code, Codex, Cursor, Gemini, Factory
Droid, OpenCode, Copilot CLI, and the generic MCP path) plus npm / PyPI /
crates.io.
Added
basemind scan— rayon-parallel scanner that indexes a workspace into
content-addressed msgpack blobs (.basemind/blobs/) plus a Fjall-backed
inverted index (.basemind/views/<view>/index.fjall/). Two extraction tiers
ship: L1 outlines (symbols, signatures, imports, docs) and L2 call sites;
L3 structural hash available for symbol-history diffing.basemind serve— stdio MCP server (rmcp) exposing the full code-map
and git-history tool surface (outline,search_symbols,find_references,
find_callers,list_files,dependents,repo_info,status,
symbol_history,working_tree_status,recent_changes,
commits_touching,find_commits_by_path,diff_file,diff_outline,
hot_files,blame_file,blame_symbol).- Dynamic 300+ language coverage via
tree-sitter-language-pack.
Hand-written.scmoverrides ship for Rust, Python, TypeScript, TSX,
JavaScript, Go. Other languages for which TSLP ships a vendoredtags.scm
(kotlin, csharp, swift, cpp, scala, solidity, lua, …) get best-effort
symbol + call extraction via the fallback adapter that rewrites
GitHub-standard@definition.*/@reference.callcaptures into
basemind's@symbol.*/@call.*shape. - Schema-driven config across TOML / CLI / MCP / env vars. Rust types in
src/config/deriveschemars::JsonSchema; the snapshot at
schema/basemind-config-v1.schema.jsonis regenerated from those types and
asserted bytests/config_schema.rs. Adding a config field lights up all
four surfaces via#[command(flatten)](clap) and#[serde(flatten)](MCP
params). Precedence: MCP > CLI > env > TOML > defaults, with per-field
provenance tracking viasrc/config/source.rs. - Document tier —
search_documentsMCP tool over Lance-backed embedding
index with kreuzberg ingestion. Per-query overrides on everydocuments.*
andllm.*setting, plusentity_categoryandkeywords_contains
post-filters. - TOON wire format for MCP responses via
documents.output.format = "toon"(or--documents-output-format toon).
Round-trip parity with JSON asserted intests/mcp_smoke.rs. - Language-aware ingestion.
documents.language.{auto_detect, min_confidence, detect_multiple}flows into kreuzberg's
LanguageDetectionConfigand the chunking tokenizer. ISO 639-3 codes (e.g.
"fra") surface onFileMapDoc.detected_languages. - Cross-encoder reranker as a post-step on
search_documents. Off by
default;documents.reranker.{enabled,preset,top_k}opts in. Preset is
validated upfront againstkreuzberg::get_reranker_preset; reranked index
is bounds-checked before reorder. - Keyword extraction (YAKE / RAKE) and named entity recognition at
extract time. New tail fields onFileMapDoc(keywords,entities)
with#[serde(default)]— blob-compatible with prior blob shapes
(asserted bytests/schema_bump.rs). - Extractive + abstractive summarization via
documents.summarization.
Abstractive routes through liter-llm with the new top-level[llm]
section (model inprovider/modelform, api_key, base_url, temperature,
timeout, retries, max_tokens). NER backendllmnow wires the resolved
LlmConfig. SecretStringnewtype +ApiKeyenum (Literal | Env | Unset).
Secrets mask to"<redacted>"inDebug/Displayand across
Serialize(including the toml→serde_json validation round-trip).- Real-OSS hardening harness (
tests/harden.rs,./scripts/harden.sh)
— clones 8 upstream repos (ripgrep, tokio, typescript, react, django,
requests, gin, ripgrep-shallow), exercises every MCP tool against each,
and pins canary lower bounds (tokio:find_references("spawn") >= 200,
django:find_references("get") >= 200,
react:search_symbols("useState") >= 20,
ripgrep-shallow truncation surfaces). - Schema sync to release version —
RELEASE_MINORinsrc/version.rs
drives bothINDEX_SCHEMA_VERand the blobSCHEMA_VER. Minor-release
bumps wipe.basemind/on next scan; patch releases stay compatible. - Distribution:
brew install Goldziher/tap/basemind,
npm install -g basemind,pip install basemind,
cargo install basemind --locked. Precompiled binaries on GitHub
Releases for{x86_64,aarch64}-{linux-gnu,apple-darwin}and
x86_64-pc-windows-gnu. - Per-harness install matrix — manifests + skill bundle for every major
coding-agent harness, all bumped in lock-step by
task release:sync-version VERSION=…:- Claude Code —
.claude-plugin/plugin.json+marketplace.json+
statusline.sh(live one-line summary of the indexed map with true-color
brand mark, freshness dot, and call/token-savings telemetry from
.basemind/telemetry.jsonl). Install via
/plugin marketplace add Goldziher/basemindthen
/plugin install basemind@basemind. - Codex CLI / App —
.codex-plugin/plugin.jsonwith fullinterface
block (displayName, categoryDeveloper Tools,capabilities,
defaultPrompt,brandColor).scripts/sync-to-codex-plugin.shmirrors
into a fork of theopenai/pluginsmarketplace. - Gemini CLI — root-level
gemini-extension.jsonwithcontextFileName
andmcpServers. Install via
gemini extensions install https://github.com/Goldziher/basemind. - Cursor —
.cursor-plugin/plugin.json. - OpenCode — published as the
basemind-opencode
npm package. Install via
{ "plugin": ["basemind-opencode@latest"] }inopencode.json. Skills
are bundled into the tarball; the plugin shim does dual-mode resolution
(bundled-path-first, repo-root-fallback) so monorepo dev and npm install
both work without duplication. - Factory Droid / GitHub Copilot CLI — reuse the existing
.claude-plugin/marketplace.jsonper their published patterns. - Every manifest carries the same canonical user-facing description and
crates.io-capped 5-keyword set (mcp,tree-sitter,code-map,
scanner,indexer).
- Claude Code —
- Release pipeline —
.github/workflows/publish.yamlpublishes on
everyv*tag: GitHub release assets (cross-compiled binaries via
goreleaser + zig), crates.io, npm × 2 (basemindbinary wrapper +
basemind-opencodeOpenCode plugin), and PyPI. Per-registry idempotent
via existing-version detection; OIDC-driven trusted publishers on all
four registries.
Changed
tree-sitter-language-pack:=1.9.0-rc.27→=1.9.0-rc.45. Hierarchical
data_extraction+ 17 data formats; rc.40–45 are CI/codegen-only.kreuzbergbumped to the reranker / LLM API surface
(=5.0.0-rc.7baseline → published rc covering reranker + LLM at publish
time).alloc-stdlib = "=0.2.2"pin lifted (no longer binding after lock
re-resolve; singlealloc-no-stdlib 2.0.4in the tree).src/mcp/types.rs+src/mcp/helpers.rssplit into_documents.rs
siblings to stay under the 1000-line cap.
Performance
- Harden 8/8 green across ripgrep / tokio / typescript / react / django /
requests / gin / ripgrep-shallow. All canaries pass. Per-repo scan times
within baseline: typescript 21.7 s (81 324 files), tokio 0.2 s (859
files), django 2.5 s (7 061 files), react 2.2 s, requests 0.7 s, gin
1.0 s, ripgrep 4.0 s, ripgrep-shallow 0.16 s. All 25 MCP tools clean
across all repos. search_documentspost-processing releases the store read-lock before
blob I/O;ahash::AHashMap/AHashSeton the post-filter path.