Changelog

All notable changes to vibe-hnindex. Stay up to date with the latest features and fixes.

Latest
0.10.0

v0.10.0 β€” 🧠 Smart Context

  • πŸ“„ Smart Context nΓ’ng cαΊ₯p

    Tool `smart_context` now supports 3 new modes:

  • **Task mode**: `task="add rate limiting"` β†’ auto-analyzes impact, finds test files, detects similar code patterns
  • **Question mode**: `question="how does auth flow work?"` β†’ auto-searches relevant code, gathers full context (imports, dependents, symbols)
  • **Refactor mode**: `task="refactor"` β†’ full impact analysis (depth 3) + all affected files + test files + similar patterns
  • **Auto-detect**: server infers task type (explain/refactor/debug/add-feature) from task description to provide optimal context
  • πŸ”§ CLI Init upgrade

    `hnindex init --mcp` now generates all 16 env vars by default (INDEX_WORKERS, SEARCH_STREAM_ENABLED, SEARCH_FUZZY_ENABLED, SEARCH_CACHE_SIZE, and more)

  • πŸ“¦ Versions

    `vibe-hnindex` v0.10.0, `hnindex-cli` v0.10.0.

0.9.8

v0.9.8

  • πŸ”§ Fix

    `hnindex init-skill` no longer reads SKILL.md from disk. Content is inlined to avoid ENOENT errors when installed via npm.

  • πŸ“¦ Versions

    `vibe-hnindex` v0.9.8, `hnindex-cli` v0.9.8.

0.9.5

v0.9.5

  • πŸ“„ Agent Skill

    New `use-vibe-hnindex` skill for AI agents (Claude, Antigravity, Cursor, Codex). Auto-loaded to understand all 20 tools, search modes, streaming, fuzzy matching, and best practices.

  • πŸ”§ CLI `init-skill`

    New `hnindex init-skill --target <editor>` command creates the skill file in the correct directory for your editor.

  • πŸ”¬ Benchmark Tool

    New `benchmark_search` tool runs a suite of test queries with and without streaming, reports avg/min/max timing and speedup ratios.

  • πŸ“¦ Versions

    `vibe-hnindex` v0.9.5, `hnindex-cli` v0.9.5.

0.9.4

v0.9.4

  • πŸ”¬ Benchmark Tool

    New `benchmark_search` tool runs a suite of test queries (keyword, hybrid, regex, fuzzy) with and without streaming.

  • Reports timing (avg/min/max), result counts, and speedup ratios in a comparison table. One command = full performance report.
  • No more prompting AI to benchmark β€” just call `benchmark_search(project_name, runs=2)`.
  • πŸ“¦ Versions

    `vibe-hnindex` v0.9.4, `hnindex-cli` v0.9.4.

0.9.1

v0.9.1

  • ⚑ Single-Pass Indexing

    Dependency, export, and symbol parsing is now done during the initial file scan, eliminating the second full directory scan entirely.

  • Before: `index_codebase` scanned all files twice β€” once for chunking/embedding, then again for parsing imports/exports/symbols. Now: one pass does everything.
  • Speed improvement: ~30–40% faster indexing on large codebases, especially noticeable on incremental re-indexes.
  • πŸ”¬ Fast Hash

    File change detection now uses SHA-1 instead of SHA-256 (~2Γ— faster, still reliable for code deduplication).

  • πŸ“¦ Versions

    `vibe-hnindex` v0.9.1, `hnindex-cli` v0.9.1.

0.9.0

v0.9.0

  • ⚑ Streaming Search

    New `stream: true` flag (or env `SEARCH_STREAM_ENABLED=true`) enables parallel search execution: keyword FTS5 + semantic Qdrant run simultaneously instead of sequentially.

  • Progress notifications: 4-phase updates (Parallel Search β†’ RRF Fusion β†’ Post-processing β†’ Results) keep you informed of search progress in real-time.
  • Early result preview: top 5 results streamed via MCP logging messages before the search completes, so you can start reviewing immediately.
  • Speed improvement: ~1.5–2Γ— faster for hybrid search on multi-core machines. Keyword-only and semantic-only modes also benefit from parallel health checks.
  • ENV: `SEARCH_STREAM_ENABLED` (default false) β€” enable streaming by default for all non-regex, non-symbol searches.
  • Refactor

    Extracted `parallelSearch()` orchestrator, `sendProgress()` notifications, `sendSearchPreview()`, and `applyFuzzyBoost()` into `services/streaming-search.ts` for cleaner architecture.

  • πŸ“¦ Versions

    `vibe-hnindex` v0.9.0, `hnindex-cli` v0.9.0.

0.8.1

v0.8.1

  • πŸ”€ Fuzzy Search

    New `fuzzy: true` flag uses Levenshtein distance to detect typos and re-rank search results.

  • Typing 'fucntion' still finds functions. Query 'libery' surfaces 'library'. Boost factor: 0.5Γ— similarity score added to original ranking.
  • Auto-detection: queries with repeated characters, swapped letters, or common misspellings automatically enable fuzzy mode.
  • ENV`SEARCH_FUZZY_ENABLED` (default false) β€” enable fuzzy search by default for all queries.
  • πŸ“ Docs Update

    `tools-reference.md`: added sections for Regex Search, Symbol Filters, Search Cache, and Fuzzy Search with examples and best practices.

  • `configuration.md`: added 7 new environment variables for parallel indexing, search cache, and fuzzy search.
0.8.0

v0.8.0

  • ⚑ Parallel Indexing

    `index_codebase` now uses a worker threads pool (auto = CPU count βˆ’ 1, min 1 worker) to chunk and embed files in parallel.

  • Speed improvement: ~3–4Γ— faster indexing on multi-core machines. Real-time progress percentage shown during indexing.
  • ENV`INDEX_WORKERS` (default auto), `INDEX_PARALLEL_BATCH` (default 8).
  • πŸ’Ύ Search Cache

    LRU cache with 100 entries and 5-minute TTL. Cache key = `project|query|mode|limit|filters`.

  • Second identical search returns instantly (~5 ms vs ~800 ms). Cache auto-invalidates on `index_codebase` or `index_file`.
  • ENV`SEARCH_CACHE_SIZE` (default 100), `SEARCH_CACHE_TTL_MS` (default 300000).
  • πŸ” Regex Search

    New `mode: 'regex'` using JavaScript RegExp to match patterns in chunk content.

  • Auto-detect: wrap your query in `/pattern/flags`. Highlights matches with `**text**` markers. Results sorted by match count.
  • 🏷️ Symbol Filters

    Filter search results by `symbol_kind`: `function`, `class`, `method`, `interface`, `type`, `variable`, `enum`, `export`.

  • Only returns chunks from files containing matching symbol types. Uses the existing symbols table (v0.6.0).
  • πŸ“¦ Versions

    `vibe-hnindex` v0.8.0, `hnindex-cli` v0.8.0.

0.7.2

v0.7.2

  • ⏱️ Timeouts

    Added timeouts to prevent the MCP server from hanging when Ollama or Qdrant are unresponsive.

  • Ollama embed/health calls: `OLLAMA_TIMEOUT_MS` (default 30 s).
  • Qdrant client API calls: `QDRANT_TIMEOUT_MS` (default 15 s).
  • Overall search operation: `SEARCH_TIMEOUT_MS` (default 60 s).
  • πŸ›‘οΈ Search Stability

    `search` wrapped with `withTimeout()`. On timeout returns a clear error message instead of hanging indefinitely.

  • πŸ“– README

    Added a dedicated Timeouts section listing all timeout environment variables.

  • πŸ”„ CI

    Separated `create-release` job so GitHub Releases are created independently of npm publish (no more blocked releases).

0.7.1

v0.7.1

  • πŸ› Deep Indexing on Windows

    Fixed `realpath` crash when traversing deeply nested folders.

  • Now falls back to `path.resolve()` with lowercase path comparison on Windows, preventing entire subdirectory trees from being skipped.
  • πŸ“ Removed Extension Filter

    Deleted the hard-coded `SUPPORTED_EXTENSIONS` set.

  • Every text file (non-binary) is now indexed β€” no more silently skipping `.prisma`, `.env.local`, `.eslintrc`, and other uncommon formats.
  • πŸ“¦ CLI Bump

    `hnindex-cli` synced to v0.7.1.

0.7.0

v0.7.0 (vibe-hnindex) / hnindex-cli v0.7.0

  • πŸ”§ `server_diagnostics`

    One-call health check: Ollama, Qdrant, config summary, optional embedding probe.

  • Optional `project_name` parameter compares SQLite chunk count vs Qdrant collection points (`match` / `mismatch` / `unknown`).
  • πŸ“‹ `agent_rules_stub`

    Short markdown for CLAUDE.md / AGENTS.md with project path, last index time, top language + stats, and `package.json` script hints.

  • Optional `format`: `agents`, `claude`, or `generic`.
  • πŸ• Git Index Freshness

    SQLite `projects.indexed_git_head` stores `git rev-parse HEAD` after indexing.

  • `onboarding_prompt` shows Index Freshness when current HEAD differs from stored head. `project_briefing` cache key includes git head.
  • πŸ“¦ Versions

    MCP `server.json`, `.claude-plugin` metadata, npm packages, and startup log all updated to v0.7.0.

0.6.1

v0.6.1 (vibe-hnindex) / hnindex-cli v0.6.2

  • πŸ“ `EMBEDDING_DIMENSIONS`

    Documented in MCP `server.json`.

  • `hnindex init` now merges with existing MCP `env`, so `EMBEDDING_DIMENSIONS` (and other keys) persist when you re-run init without `--embedding-dimensions`.
  • πŸ“Ÿ Startup Log

    MCP server stderr now shows v0.6.1.

0.6.0

v0.6.0

  • πŸ–₯️ `hnindex-cli`

    New global CLI: `hnindex init --mcp <claude|claude-desktop|antigravity|cursor|cursor-project|windsurf|vscode>`, `hnindex update`, `hnindex version`.

  • Auto-merges `vibe-hnindex` into the correct MCP JSON path on Windows, macOS, and Linux.
  • πŸ—οΈ Symbols Table + Indexing

    Heuristic symbol extraction (TS/JS/TSX/JSX, Python) on index/reindex/watch. SQLite `symbols` table with name-based lookup.

  • πŸ”Ž `symbol_lookup` Tool

    Resolve symbols by name with optional kind and file pattern filters.

  • πŸ”€ `search` Mode `symbol`

    Find chunks via symbol name (explicit mode; `auto` does not route to symbol).

  • πŸ”„ Optional Rerank

    `RERANK_URL` for POST `{ query, documents }` β†’ `{ scores }`. Falls back to Qdrant semantic score reorder.

  • ENV`SEARCH_RERANK`, `SEARCH_RERANK_POOL`, `RERANK_TIMEOUT_MS`.
  • πŸ“Š `codebase_overview`

    Richer detection: Prisma, Tailwind, shadcn/ui (`components.json`), Turborepo/Nx, lockfile β†’ package manager, monorepo hints.

0.4.0

v0.4.0

  • πŸƒ Search β€” Project Race

    `getProjectWithRetry` eliminates rare "project not found" errors right after indexing.

  • βœ… Index Readiness

    Summary ends with `Ready: yes|no`. When Qdrant is up, shows `qdrant_vectors: <count>` after collection verify.

  • πŸ€– Mode: Auto

    Heuristic routing between keyword and hybrid. Set `SEARCH_AUTO_ROUTE=true` to treat omitted `mode` as `auto`.

  • πŸ” Keyword β†’ Semantic Fallback

    If keyword returns no hits and Ollama+Qdrant are OK, one semantic pass runs automatically.

  • Enabled by default. Set `SEARCH_KEYWORD_FALLBACK_SEMANTIC=false` to disable.
  • πŸ“ Explain

    Optional per-result score breakdown: path multiplier, RRF hints, semantic raw score.

  • πŸ“ MCP Schema

    `search` exposes `content_mode`, `max_content_chars`, `deprioritize_generated_paths`, `mode` (including `auto`), and `explain`.

0.5.0

v0.5.0

  • πŸ“‹ `project_briefing`

    Rule-based briefing from README, CLAUDE.md, `package.json`, and index statistics.

  • Cached in SQLite with key `file_count|chunk_count|last_indexed_at`. Supports `regenerate` parameter.
  • πŸš€ `onboarding_prompt`

    Single markdown block: briefing + stats + optional recent git activity. Truncated by `max_chars`.

  • πŸ‘€ `index_codebase` β€” Watch

    New `watch` parameter (default `false`). Enables file watcher after indexing, same as `watch_project`.

  • πŸ”„ Watch

    Shared `startWatchingProject` logic used by both `watch_project` and `index_codebase` + `watch`.

0.3.3

v0.3.3

  • πŸ”‘ `QDRANT_API_KEY`

    Optional for local Docker; required for Qdrant Cloud.

  • Set with `QDRANT_URL` = your HTTPS cluster URL from the Qdrant Cloud dashboard.
  • ⚠️ Startup Hint

    If `QDRANT_URL` looks like Cloud (HTTPS + `qdrant` host) but no API key is set, a clear warning is logged on first Qdrant use.

  • πŸ“š Docs

    Getting Started and Configuration pages now spell out Cloud vs self-hosted env vars. Default `OLLAMA_URL` is `http://localhost:11434`.

0.3.2

v0.3.2

  • πŸ“ `content_mode`

    Default `compact` truncates chunk bodies to save tokens. Use `full` for entire chunks.

  • πŸ”€ Keyword OR Fallback

    If strict FTS AND returns nothing with multi-token queries, automatically retries with OR and shows a warning.

  • πŸ“‚ Deprioritize Generated Paths

    Down-ranks results from `dist/`, `.next/`, `build/`, `coverage/`, `*.min.js`, `node_modules`, etc.

  • πŸ”„ Project Stats Retry

    Reduces rare "project not found" errors right after indexing by retrying the stats query.

0.3.1

v0.3.1

  • πŸ”€ Keyword Query Normalization

    Tokenizes punctuation-heavy queries for better FTS5 matching.

  • πŸ“„ Dedupe by File

    One chunk per file by default (`dedupe_by_file`). Cleaner, less noisy results.

  • πŸ™ˆ `.hnindexignore`

    Exclude paths from indexing using minimatch patterns (gitignore-style syntax).

View all releases on GitHub Releases