Changelog
All notable changes to vibe-hnindex. Stay up to date with the latest features and fixes.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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`.
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`.
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`.
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.
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