Skip to content

Releases: Goldziher/basemind

v0.2.2

17 Jun 19:27
v0.2.2
2ca87aa

Choose a tag to compare

Changelog

  • 2ca87aa chore(release): v0.2.2 — self-installing plugin + /bm-statusline
  • 7664d28 ci(goreleaser): keep-existing release mode + refresh brew formula desc
  • 2372fa3 docs(readme): update statusline example to the redesigned format

Released by GoReleaser.

v0.2.1

17 Jun 16:58
v0.2.1
2da0994

Choose a tag to compare

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

17 Jun 16:23
v0.2.0
b96ac99

Choose a tag to compare

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

15 Jun 18:07
v0.1.1
1e13b44

Choose a tag to compare

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

15 Jun 13:21
v0.1.0
3a4e7ca

Choose a tag to compare

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 .scm overrides ship for Rust, Python, TypeScript, TSX,
    JavaScript, Go. Other languages for which TSLP ships a vendored tags.scm
    (kotlin, csharp, swift, cpp, scala, solidity, lua, …) get best-effort
    symbol + call extraction via the fallback adapter that rewrites
    GitHub-standard @definition.* / @reference.call captures into
    basemind's @symbol.* / @call.* shape.
  • Schema-driven config across TOML / CLI / MCP / env vars. Rust types in
    src/config/ derive schemars::JsonSchema; the snapshot at
    schema/basemind-config-v1.schema.json is regenerated from those types and
    asserted by tests/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 via src/config/source.rs.
  • Document tiersearch_documents MCP tool over Lance-backed embedding
    index with kreuzberg ingestion. Per-query overrides on every documents.*
    and llm.* setting, plus entity_category and keywords_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 in tests/mcp_smoke.rs.
  • Language-aware ingestion. documents.language.{auto_detect, min_confidence, detect_multiple} flows into kreuzberg's
    LanguageDetectionConfig and the chunking tokenizer. ISO 639-3 codes (e.g.
    "fra") surface on FileMapDoc.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 against kreuzberg::get_reranker_preset; reranked index
    is bounds-checked before reorder.
  • Keyword extraction (YAKE / RAKE) and named entity recognition at
    extract time. New tail fields on FileMapDoc (keywords, entities)
    with #[serde(default)] — blob-compatible with prior blob shapes
    (asserted by tests/schema_bump.rs).
  • Extractive + abstractive summarization via documents.summarization.
    Abstractive routes through liter-llm with the new top-level [llm]
    section (model in provider/model form, api_key, base_url, temperature,
    timeout, retries, max_tokens). NER backend llm now wires the resolved
    LlmConfig.
  • SecretString newtype + ApiKey enum (Literal | Env | Unset).
    Secrets mask to "<redacted>" in Debug / Display and 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 versionRELEASE_MINOR in src/version.rs
    drives both INDEX_SCHEMA_VER and the blob SCHEMA_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/basemind then
      /plugin install basemind@basemind.
    • Codex CLI / App.codex-plugin/plugin.json with full interface
      block (displayName, category Developer Tools, capabilities,
      defaultPrompt, brandColor). scripts/sync-to-codex-plugin.sh mirrors
      into a fork of the openai/plugins marketplace.
    • Gemini CLI — root-level gemini-extension.json with contextFileName
      and mcpServers. 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"] } in opencode.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.json per 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).
  • Release pipeline.github/workflows/publish.yaml publishes on
    every v* tag: GitHub release assets (cross-compiled binaries via
    goreleaser + zig), crates.io, npm × 2 (basemind binary wrapper +
    basemind-opencode OpenCode 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.
  • kreuzberg bumped to the reranker / LLM API surface
    (=5.0.0-rc.7 baseline → published rc covering reranker + LLM at publish
    time).
  • alloc-stdlib = "=0.2.2" pin lifted (no longer binding after lock
    re-resolve; single alloc-no-stdlib 2.0.4 in the tree).
  • src/mcp/types.rs + src/mcp/helpers.rs split 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_documents post-processing releases the store read-lock before
    blob I/O; ahash::AHashMap / AHashSet on the post-filter path.

v0.0.1

16 Jul 19:52
b4ba71b

Choose a tag to compare

v0.0.1 Pre-release
Pre-release
  • initial