Changelog
1.19.1 (2026-04-10)
Bug Fixes
- build: include benchmarks/ in published package (0dd332c)
1.19.0 (2026-04-06)
Features
- api: add relativePath parameter to find_symbol (5ce07fa)
- chunker: use # separator for instance methods, . for static (06fd221), closes Reranker#rerank
- drift: add schema-v11 migration for parentName → parentSymbolId rename (405e52c)
- explore: add ChunkGrouper component (CodeChunkGrouper + DocChunkGrouper) (eb02cfd)
- explore: chunk grouping — file outlines, doc TOC, #/. separator (86e0fcf), closes Class#method
- git: add merge-branch-resolver for fix branch propagation (b5fb30e)
- git: add offset-tracker for drift-free chunk attribution (9b2ddaf)
- git: add parent SHAs to CommitInfo via %P in git log format (ea048e4)
- onnx: add resolveModelInfo for runtime dimensions and context length (b1050b7)
- pipeline: set parentName to relative path for doc chunks (e99ac33)
- presets: add 'dangerous' composite preset for high-risk code detection (63010c9)
- presets: add proven rerank preset for battle-tested code (faf6533)
Improvements
- api: expose headingPath in API responses for agent navigation (2742457)
- dx: add mid-session reindex rule to search-cascade (7e1f84a)
- dx: persist eval cases for chunk-grouping + enforce in optimize-skill (749de06)
- dx: update search-cascade for chunk grouping features (e4ea7b5)
- explore: remove members array from ChunkGrouper output (d7bda45)
- explore: slim down ChunkGrouper payload — no spread, explicit fields only (3f028b4)
- mcp: generate signal-labels resource dynamically from PayloadSignalDescriptors (26b7a98)
- mcp: generate signal-labels resource dynamically from PayloadSignalDescriptors (657fe70)
- signals: wire merge-branch-resolver into chunk-level bugFixRate (2ee0d25)
- signals: wire merge-branch-resolver into file-level bugFixRate (a074915)
Bug Fixes
- ci: remove dead integration test step from pre-commit hook (59b338d)
- embedding: Ollama fallback race condition and cooldown bugs (ed474f2)
- explore: merge essential trajectory fields with overlay in metaOnly (cde0eda)
- git: wire offset tracker into chunk-reader for drift-free attribution (e8c4d54)
- qdrant: countPoints error wrapping and deletion filter explosion (d54a010)
- signals: raise BugFixSignal FALLBACK_THRESHOLD from k=8 to k=10 (2f5ed3c)
- signals: rewrite isBugFixCommit with strict classification (f880b76), closes #123
- signals: rewrite isBugFixCommit with strict classification (01be60e), closes #123
Documentation
- explore: add outlineDoc strategy + chunk-grouping plan (f8a2565)
- mcp: update find_symbol description with #/. separator convention (b82c9fc)
- mcp: update search-guide and overview resources for chunk grouping (ebcf9fc)
- signals: add bugFixRate accuracy implementation plan (b103683)
- signals: update bugFixRate detection rules in website docs (24f1dfa)
- signals: update bugFixRate plan — k=10, drift fix via offset tracker (fcf8d2a)
- specs: add file-level find_symbol design spec (74a28d7)
Code Refactoring
- api: rename parentName → parentSymbolId across codebase (227bbcb)
- explore: integrate ChunkGrouper into resolveSymbols (178a051)
- mcp: deduplicate search-guide — examples only, routing in cascade (413b03b)
- test: split git-log-reader.test.ts into domain-specific modules (f4677c2)
1.18.0 (2026-04-01)
Features
- adapters: add OllamaEmbeddings.resolveModelInfo() via /api/show (38b2da8)
- chunker: write headingPath to markdown chunk metadata (5e7cf76)
- drift: track navigation field in schema drift detection (5dcb0a2)
- dto: add stripInternalFields to hide headingPath from API responses (a2c0fa5)
- ingest: auto-detect model context and dimensions from Ollama (cd38fd0)
- migration: schema v10 — purge markdown chunks for re-chunking (3d68028)
- pipeline: generate doc symbolId hashes and navigation links (95c65cc)
- presets: add documentationRelevance preset with auto-activation (79c81e4)
- signals: add HeadingRelevanceSignal for markdown heading boost (1fee0e2)
- trajectory: write navigation and headingPath to Qdrant payload (e2a9e93)
- types: add navigation field to CodeChunk metadata (6245061)
Improvements
- chunker: group small h3 sections into parent h2 chunk (ec49fe0)
- dx: optimize coverage-expander agent for tea-rags and npm scripts (8f45f3f)
Bug Fixes
- adapters,chunker: Ollama error taxonomy and markdown chunk splitting (d1649c5)
- adapters: prevent mid-operation URL switching in Ollama fallback (3a60511)
- adapters: replace OperationLock with per-operation URL snapshot in Ollama fallback (73d617e)
- chunker: include grouped h3 headings in headingPath (51d12e4)
- explore: move collection existence check to resolveAndGuard (5a422ae)
- ingest: lower CHARS_PER_TOKEN from 3 to 2 for safer context cap (1e8fece)
- migration: use mtime=0 instead of hash="" for snapshot invalidation (f831b8a)
- pipeline: persist sparseVersion in schema metadata on fresh index (99dbc95)
- pipeline: skip secrets detection for test files (1ba9856)
- scripts: save tune history to ~/.tea-rags/benchmarks and show Qdrant mode (56fa223)
Documentation
- dx: add chunk navigation guidance to search-cascade (af875be)
- plans: add chunk navigation implementation plan (7c5cb24)
- plans: add Ollama model info auto-detection implementation plan (3fd1332)
- rules: add snapshot invalidation guide to migration rules (730438b)
- search-cascade: add documentation rerank auto-activation rule (a368c1d)
- specs: add chunk navigation design spec (fc19cd7)
- specs: add heading relevance boost design spec and plan (65d59d3)
- specs: add Ollama model info auto-detection design (73c7a29)
1.17.6 (2026-03-30)
Improvements
- embedding: add Ollama fallback switch observability to pipeline log (d2c4665)
Bug Fixes
- pipeline: self-correcting recovery guard detects stale markers (4103e1e)
- pipeline: skip enrichment recovery when marker shows all enriched (9b21ea7)
Performance Improvements
- pipeline: deduplicate facade pre-checks, remove index skill subagent (d79943b)
- pipeline: local file guard for recovery, fire-and-forget execution (ba48370)
- pipeline: make refreshStats non-blocking for incremental reindex (6a74f30)
1.17.5 (2026-03-30)
Improvements
- dx: enforce tea-rags search injection for all subagents (bede8e9)
1.17.4 (2026-03-30)
Bug Fixes
- dx: resolve plugin source paths relative to repo root (910f1df)
1.17.3 (2026-03-30)
Bug Fixes
- dx: use relative source paths in marketplace.json, fix ENAMETOOLONG on plugin update (eac2343)
1.17.2 (2026-03-30)
Improvements
- plugin: merge research into explore, add baseline-first eval to optimize-skill (ffc6c42)
- plugin: optimize risk-assessment skill, decouple from DDG chain (3e8c8fe)
Documentation
- architecture: add pattern vocabulary design spec (2e47001)
1.17.1 (2026-03-29)
Improvements
- dx: add skill-creator dependency to optimize-skill, enforce marketplace version sync (08cc218)
1.17.0 (2026-03-29)
⚠ BREAKING CHANGES
- ingest: IndexPipeline.indexCodebase() now throws IndexingFailedError instead of returning stats with status='failed'. MCP error handler already handles typed errors correctly.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- ingest: IndexPipeline.indexCodebase() now throws IndexingFailedError instead of returning stats with status='failed'. MCP error handler already handles typed errors correctly.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Features
- api: add risk-assessment skill for multi-dimensional code health scan (ba99b7f)
- ingest: add IndexingFailedError + wrapUnexpectedError base method (b12eff3)
Improvements
- plugin: optimize explore skill — eval-driven, fix pathPattern + codeReview bugs (ef974a0)
- plugin: refactor search-cascade — modularize, skills-first, eval-driven (2f25288)
- plugin: update risk-assessment skill (4d8df59)
Bug Fixes
- explore: apply pathPattern filter in findSimilar via buildMergedFilter (edf1e7b)
- explore: propagate chunk ID through rank_chunks pipeline (0a01d0f)
- explore: propagate must_not from pathPattern in findSymbol (3c5dd45)
- explore: wrap Qdrant 404 as ChunkNotFoundError in find_similar (378ebaa)
- ingest: harden risk zones — daemon lock, status-module codec, unified errors (ef94055)
- ingest: unify IndexPipeline error handling, reorder alias-before-marker (65ead0a)
- pipeline: stamp enrichedAt on chunks with no git commits (79a762d)
- qdrant: use exact match for pathPattern with literal file paths (2a35062)
Documentation
- ingest: add reindexing decomposition spec and implementation plan (47a8a8b)
- plans: add ingest risk zones hardening implementation plan (7719f9a)
- specs: add ingest risk zones hardening design (f825eec)
1.16.0 (2026-03-29)
⚠ BREAKING CHANGES
- deps: zod upgraded from v3 to v4. Users extending MCP tool schemas must use z.record(z.string(), valueSchema) instead of z.record(valueSchema). No changes needed for MCP tool consumers.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- deps: Minimum Node.js version remains 22, but .tool-versions now defaults to 24.14.1. Users on Node 22 are unaffected. tree-sitter dependency now resolves to @artk0de/tree-sitter fork with prebuilt native binaries — no CXXFLAGS or compilation required.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- enrichment: EnrichmentInfo and ChunkEnrichmentInfo removed. IndexStatus.enrichment is now Record<string, EnrichmentProviderHealth>. IndexStatus.chunkEnrichment removed.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- api: get_index_metrics signals format changed from Record<signalKey, SignalMetrics> to Record<language, Record<signalKey, SignalMetrics>>. Global stats are now under signals["global"]. Per-language stats under signals["typescript"] etc. Consumers must update to access signals.global instead of signals directly.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Features
- api: add find_symbol MCP tool — LSP-like symbol lookup (810eb52)
- api: add infraHealth to get_index_status + auto-cleanup stale markers (3c13bcd)
- api: add infraHealth to get_index_status + auto-cleanup stale markers (5e02ebd)
- api: per-language signal statistics (e967864)
- api: per-language signals in get_index_metrics response (7a737ea)
- api: scoped signal metrics in get_index_metrics output (2636794)
- chunker: add RSpec scope-centric chunking with parent setup injection (2ad5cd3)
- chunker: add RSpec scope-centric chunking with parent setup injection (6a119a2)
- cli: add tea-rags tune command (7d4a550)
- contracts: add perLanguage to CollectionSignalStats type (97856a5)
- contracts: add ScopedSignalStats type, CODE_TEST_PATHS config, and v5 cache (cbc20ef)
- dx: add /tea-rags-setup:tune skill, remove tune scripts (8f9c073)
- dx: add node, tea-rags, and ollama install scripts (unix) (64ae330)
- dx: add qdrant, tune, analyze, and configure scripts (unix) (c25ccec)
- dx: add setup progress CRUD script (unix) (b9c750a)
- dx: add setup scripts (windows) (63aa8c6)
- dx: add setup skill orchestrator (SKILL.md) (c812177)
- embedded: auto-reconnect to Qdrant daemon on port change (d893617)
- enrichment: add enrichedAt migration for existing collections (e1d2848)
- enrichment: add enrichment health to get_index_metrics output (949be11)
- enrichment: add EnrichmentRecovery module for unenriched chunk detection and re-enrichment (6a448ff)
- enrichment: add health mapper with stale detection for StatusModule (f7be1c9)
- enrichment: enrichment failure recovery with per-provider health tracking (b30f64a)
- enrichment: per-level marker updates with heartbeat in coordinator (923b628)
- enrichment: replace flat EnrichmentInfo with per-provider health types (f34751c)
- enrichment: wire recovery and migration into indexing pipeline (271b4e3)
- enrichment: write enrichedAt timestamps in applier batch payloads (3b881a3)
- explore: add ExploreFacade.findSymbol() with scroll + resolve pipeline (19e9df4)
- explore: add symbol-resolve.ts with merge and outline strategies (dfda4b9)
- filters: add symbolId filter with text index and partial match (c038f2e)
- infra: add detectScope() utility for test/source classification (57e8d1f)
- infra: add migration framework — Migrator, Migration interface, types (6416a71)
- infra: add SnapshotMigrator and snapshot migration classes (72ffee2)
- ingest: add per-provider per-level enrichment marker types (8632769)
- ingest: compute per-language signal statistics (bb470e7)
- ingest: scope-aware signal stats computation (source vs test) (c63a161)
- mcp: health-aware error interceptor with infra context (1ebb68e)
- mcp: health-aware error interceptor with infra context (e1deef2)
- mcp: register find_symbol tool with Zod schema (dccc9a7)
- qdrant: add QdrantManager.scrollFiltered() for filter-based scroll (d1e2159)
- rerank: scope-aware label resolution (source vs test thresholds) (0c91455)
- scripts: abstract embedding provider for Ollama/ONNX support (2c48d48)
- scripts: add --path arg and test values for new benchmark params (17573b3)
- scripts: add benchmark functions for pipeline, qdrant gaps, and git trajectory (dc720d8)
- scripts: add file collector for benchmark corpus (27fe55a)
- scripts: add new params to benchmark output (5a66096)
- scripts: benchmark expansion — pipeline, git trajectory, ONNX, CLI tune command (1d490c8)
- scripts: integrate git trajectory benchmarks into tune.mjs (0e67210)
- scripts: integrate pipeline + qdrant gap benchmarks into tune.mjs (98d20b1)
Improvements
- cli: add --qdrant-url, --embedding-url, --model, --provider params to tune command (918633c)
- cli: add tune embeddings subcommand, fix provider display, remove device restrictions (cfc693a)
- dx: add subagent tea-rags injection rule to search-cascade (99c9b54)
- dx: add subagent tea-rags injection rule to search-cascade (54a1b8a)
- dx: add subagent tea-rags injection rule to search-cascade (13b3c79)
- dx: emphasize duration field in index/force-reindex skill prompts (c6310bd)
- dx: enhance migration rule frontmatter, fix skill templates (610ef09)
- dx: harden install wizard — cross-platform fixes, decompose SKILL.md (a727edd)
- dx: inject tea-rags search rules into subagent prompts via PreToolUse hook (2368987)
- dx: inject tea-rags search rules into subagent prompts via PreToolUse hook (3270062)
- dx: replace configure-mcp scripts with MCP integrator agent (a5da1f0)
- dx: require explicit user confirmation for force-reindex skill (40afa1d)
- dx: require explicit user confirmation for force-reindex skill (c55718d)
- dx: update skills for per-language signals format (33f7d74)
- ingest: add 'code' (fenced blocks from markdown) to config languages (ec18c11)
- ingest: exclude config languages (markdown, bash, json, etc.) from per-language stats (e9c33bd)
- ingest: exclude config languages from global, hide global if mono-lang (b601fde)
- mcp: add limit/offset to find_symbol for pagination (e8f81ec)
- mcp: add metaOnly to find_symbol, update plugin skills (4fc6095)
- mcp: add rerank parameter to find_symbol for ranking overlays (e0f83b9)
- mcp: clean up TODO markers in enrichment output formatters (f2cb4be)
- qdrant: cap scrollFiltered total results at limit parameter (215c6f2)
- rerank: labels only for code languages in perLanguage, no global fallback (9f81f6b)
Bug Fixes
- api: add missing FindSymbolRequest DTO and barrel export (b41dd91)
- benchmarks: update import paths after project restructuring (27c55d9)
- chunker: fix RSpec scope chunking and expand signal coverage (76ac375)
- dx: correct plugin version to 0.11.0 (3b639db)
- embedding: add health probe before embed to fix cold-start timeout (1e9e6ed)
- embedding: add health probe before embed to fix cold-start timeout (b2a52ac)
- enrichment: use _type filter instead of has_id to exclude metadata points in recovery scroll (8a4742b)
- explore: detect class from residual block with parentType (b31fe43)
- explore: detect class from residual block with parentType=class_declaration (9e011ee)
- ingest: cleanup stale _vN when legacy real collection or alias exists (cabc89c)
- ingest: cleanup stale _vN when legacy real collection or alias exists (6b38f37)
- ingest: delete chunks for newly ignored files during incremental reindex (6ff33cf)
- ingest: heartbeat-based stale detection + remove embedding check from getIndexStatus (84e0dd6)
- ingest: heartbeat-based stale detection + remove embedding check from getIndexStatus (c9d4a7c)
- ingest: heartbeat-based stale detection + remove embedding check from getIndexStatus (1ded172)
- ingest: resolve versioned collection status + batch timeout (24e71ae)
- ingest: resolve versioned collection status + batch timeout (4bfd471)
- ingest: resolve versioned collection status + batch timeout (daa4ccb)
- mcp: omit driftWarning from structured output when null (7c8f5a5)
- migration: SparseVectorRebuild version 2 → 1 to match CURRENT_SPARSE_VERSION (c06bb9d)
- migration: use _type filter in enrichment store adapter, add empty collection guard in v9 (474d6bb)
- onnx: auto-detect device, fix socket path, add connect keepalive, terminate on exit (d024261)
- qdrant: centralize connection error handling via call() guard (1e1e134)
- qdrant: centralize connection error handling via call() guard (677694e)
- rerank: per-language + level-aware label resolution in overlay (c06b941)
- rerank: skip label resolution for config languages in overlay (a887136)
- scripts: align QDRANT_TUNE_DELETE_FLUSH_TIMEOUT_MS key between tune and output (38120ba)
- scripts: correct import paths in benchmarks/lib/ (../../build not ../build) (3a6f9cf)
- scripts: use ONNX default model name instead of Ollama model name (78ee713)
- test: add retry and timeout to flakey GitLogReader integration tests (bca75ca)
- test: add retry and timeout to flakey GitLogReader integration tests (0371422)
- test: update ingest-facade mocks for enrichment recovery wiring (b9bb104)
Documentation
- api: add find_symbol design spec (0c9c402)
- api: add find_symbol implementation plan (fa3392f)
- api: add migration framework design spec (0d1044d)
- api: update migration framework spec — remove stats-cache, add file structure (5cfd651)
- dx: add migration rule and add-migration skill (f87a894)
- dx: add plugin restructuring spec (60b547a)
- dx: add setup skill spec and implementation plan (779201c)
- enrichment: add enrichment recovery design spec (b377994)
- enrichment: add enrichment recovery implementation plan (66996df)
- enrichment: add heartbeat-based stale detection to recovery spec (7dcb44d)
- infra: add migration framework barrel export and update project docs (d77b728)
- infra: add migration framework implementation plan (6e9ee50)
- mcp: update get_index_metrics docs for scoped signal output (11061ba)
- specs: per-language signal statistics spec and plan (507abed)
Code Refactoring
- dx: rename setup plugin to tea-rags-setup (e1aecdc)
- dx: rename setup skill to install (51169b7)
- dx: split plugin into tea-rags@tea-rags + setup@tea-rags (e649590)
- infra: unify migrations into infra/migration framework (d4af2e2)
- ingest: remove old migration code replaced by infra/migration framework (fa18e73)
- ingest: wire Migrator into factory and ReindexPipeline (9a0c412)
- migration: extract SparseMigrator from SchemaMigrator (dac3173)
- migration: latestVersion on all runners, rename snapshot migrations (df6fd24)
- migration: move enrichedAt backfill to migration framework as schema-v9 (372de9d)
- migration: move sparse rebuild to sparse_migrations/sparse-v1-vector-rebuild (fe707d5)
- migration: remove CURRENT_SPARSE_VERSION hardcode, simplify sparse apply() (26a4b3b)
Chores
- deps: upgrade major dependencies (openai 6, eslint 10, zod 4) (d7b0d89)
- deps: upgrade to Node 24 LTS and bump safe dependencies (ccda0d6), closes tree-sitter/node-tree-sitter#276
1.15.1 (2026-03-23)
1.15.0 (2026-03-22)
- improve(api): expose qdrantUrl in get_index_status response (04ca10a)
- improve(dx): optimize bug-hunt skill to reduce unnecessary tool calls (d5c6d8b)
- improve(dx): require full metrics output in index/force-reindex skills (af8ec5f)
- improve(dx): simplify index/force-reindex skills — report complete response as-is (1d27adf)
- improve(dx): update search-cascade with BM25 v3 audit results (6f4c084)
- improve(embedding): background probe for primary URL recovery (29f1834)
- improve(embedding): better hint for OllamaModelMissingError (020195d)
- improve(ingest): address code review — tmpdir() in tests, rename path variable (e828992)
- improve(ingest): wire checkSparseVectorVersion() into runMigrations() (8b7f86c)
- improve(ingest): wire SnapshotCleaner into IndexPipeline.indexCodebase() (b5a0032)
- improve(ingest): wire SnapshotCleaner into ReindexPipeline.reindexChanges() (338a29f)
- fix(api): expose sparseVersion in get_index_status response (ed927f5)
- fix(api): pass migrations from reindexChanges through incremental indexCodebase (008b6e8)
- fix(config): treat BREAKING CHANGE as minor bump, not major (e00da12)
- fix(dx): add PreToolUse hook to block unauthorized git push (b22c1c4)
- fix(dx): allow summarize in index/force-reindex skill output (b490ffb)
- fix(embedding): propagate OllamaModelMissingError without fallback attempt (838965c)
- fix(embedding): run model guard before embed call in all facades (e291820)
- fix(filters): add is_empty guard to age filters for missing chunk fields (49bb006)
- fix(filters): maxAgeDays/minAgeDays false positives from chunk ageDays=0 (98cf09e)
- fix(ingest): fix empty debug labels in SnapshotCleaner log output (3b90d4f)
- chore(ci): reduce pre-commit hook output — dot reporter, suppress stderr (c3da3f3)
- chore(ci): reduce pre-commit hook output — dot reporter, suppress stderr (c54e39f)
- chore(dx): bump plugin version to 0.8.1 (6c95e3b)
- feat(config): default enableHybrid to true (401a259)
- feat(dx): add post-search-validation rule with no-match detection and disambiguation (1111b4b)
- feat(embedding): add EmbeddingModelGuard to detect model mismatch (27c20e2)
- feat(hybrid): rebuild BM25 sparse vectors — code tokenizer, feature hashing, TF-only (e04a58e)
- feat(ingest): add SnapshotCleaner for post-indexing artifact cleanup (ea552de)
- feat(metrics): add git enrichment time range to collection stats (c9d95b1)
- feat(qdrant): add checkSparseVectorVersion and v7 schema migration (1fa242f)
- feat(qdrant): add updateCollectionSparseConfig() and scrollWithVectors() (2a90acc)
- docs(dx): add embedding model guard spec and test golden rule (d7ed2d3)
- docs(plans): add snapshot cleanup spec and plan (e656bbb)
- docs(plans): add sparse vector migration implementation plan (8c018b8)
- docs(specs): add safety net for enableHybrid toggle after schema v7 (254ea54)
- docs(specs): add sparse vector migration and snapshot cleanup specs (eb4d4ca)
- docs(website): update enableHybrid default to true and migration guidance (0b05b81)
BREAKING CHANGE
- Existing hybrid collections must be reindexed — sparse vectors are incompatible with previous vocabulary-based implementation.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- footer should not trigger major version bumps for this project. Internal data format changes (sparse vectors, migrations) are handled automatically and don't break the user-facing API.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- INGEST_ENABLE_HYBRID now defaults to true. Existing non-hybrid collections auto-migrate on next reindex.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1.14.4 (2026-03-22)
- fix(dx): register check-plugin-version hook in settings.json (237a7c1)
- improve(dx): skill audit round 2 — proven weights, taskIds essential, disambiguation (b45f0f3)
1.14.3 (2026-03-21)
- improve(dx): skill audit fixes — polyglot rule, filter levels, stable preset, resource DRY (ae9eb9a)
- improve(plugin): optimize bug-hunt skill for speed and token efficiency (9c2fcf4)
- fix(dx): add plugin versioning rule and bump to 0.5.1 (71d4584)
- fix(plugin): restore lost rules from bug-hunt pre-cascade version (29a5153)
- fix(plugin): restore pagination and analytics options in bug-hunt REFINE (32c5390)
- fix(plugin): restore two-phase search in bug-hunt skill (9280400)
- fix(plugin): skip VERIFY when all checkpoint fields filled in DISCOVER (3e25974)
- fix(plugin): use metaOnly=false in bug-hunt DISCOVER step (840e892)
1.14.2 (2026-03-21)
1.14.1 (2026-03-21)
- fix(ingest): clear enrichment in_progress marker when no chunks produced (1230e45)
1.14.0 (2026-03-21)
- feat(embedding): add EMBEDDING_FALLBACK_URL for Ollama provider failover (0fe1a88)
- chore(dx): bump plugin version to 0.5.0 (bb915ff)
1.13.1 (2026-03-21)
- fix(ingest): preserve enrichment coverage stats on scoped reindex and regroup output (2e73825)
1.13.0 (2026-03-21)
- improve(explore): address 12 skill audit findings in search-cascade (fc3f6a9)
- improve(explore): complete search-cascade audit fixes (eeec0a3)
- improve(mcp): unify index_codebase and reindex_changes output format (63bdd06)
- fix(explore): preserve rankingOverlay in rank_chunks results (284a496)
- fix(ingest): scope enrichment to changed files and skip for deletion-only reindex (6b5da2d)
- feat(chunker): add RSpec-aware chunking for Ruby spec files (6e7389c)
1.12.3 (2026-03-21)
- improve(ingest): update lastUpdated on no-change incremental reindex (4b46a3f)
- fix(ingest): update completedAt marker on incremental reindex (1c27125)
1.12.2 (2026-03-21)
- fix(website): escape MDX placeholders and fix broken links in troubleshooting page (7666b6b)
1.12.1 (2026-03-21)
- fix(dx): move marketplace.json to repo root for plugin discovery (28f0b04)
1.12.0 (2026-03-21)
- fix(adapters): pass original error as cause instead of wrapping in new Error (b3b1855)
- fix(all): replace every remaining plain Error with typed errors (35d2e41)
- fix(bootstrap): update default Ollama model to unclemusclez/jina-embeddings-v2-base-code (e15e209)
- fix(config): add OLLAMA_URL as fallback for EMBEDDING_BASE_URL (3421332)
- fix(infra): add defensive assertion in resolveCollection, fix no-op test (41c5095)
- fix(ingest): add embedding health check before indexing and status queries (2d559a3)
- fix(ingest): propagate TeaRagsError from indexCodebase instead of swallowing (0245241)
- fix(pipeline): propagate batch errors instead of silently swallowing them (ad376cf)
- test(ingest): add TDD tests for OllamaUnavailableError propagation (681e41b)
- improve(bootstrap): graceful startup — remove pre-flight Ollama check (d17ca83)
- improve(dx): merge reindex-changes into index skill (5b3bbc1)
- improve(mcp): deprecate reindex_changes — index_codebase handles both (d49ad79)
- improve(plugin): delegate tool selection to search-cascade, add refactoring-scan skill (5cc8cee)
- improve(plugin): enforce search-cascade as critical tool selection rule (ec84096)
- improve(plugin): expand LSP profile with call chain, implementations, performance warning (0290e74)
- improve(plugin): expand pattern-search intent triggers in explore skill (4e10504)
- improve(plugin): integrate pattern-search as internal explore strategy (7917a0b)
- improve(plugin): integrate search-cascade into pattern-search SEED step (f0362d9)
- improve(plugin): remove LSP references — causes hangs, use ripgrep/tree-sitter (01ffd96)
- improve(plugin): rewrite search-cascade with combo strategy and profiles (0d2dcad)
- refactor(adapters): extract shared retry utility and deduplicate config/schema builders (b507faf)
- refactor(all): extract logic from barrel index.ts files (b67ffb4)
- refactor(ingest): extract helpers and remove unused for+break duplicates (aaa2211)
- feat(adapters): add InfraError hierarchy with adapter-specific errors (e0924fe)
- feat(cli): add CLI entrypoint and update bin to cli/index.js (0d55a84)
- feat(cli): add YAML config loader with project/global merge (7f65da5)
- feat(cli): add yargs entrypoint with server command stub (81cfbb6)
- feat(cli): implement tea-rags server command (f86f762)
- feat(contracts): add TeaRagsError hierarchy, InputValidationError, migrate CollectionRefError (e915bd7)
- feat(dx): add background indexing skills and update search-cascade (4847cf7)
- feat(ingest): track ignore pattern changes in reindex + decompose pipelines (2ee3843)
- feat(ingest): zero-downtime forceReindex via Qdrant collection aliases (414781c)
- feat(mcp): add errorHandlerMiddleware, migrate all tools to registerToolSafe (e5be47f)
- feat(plugin): add pattern-search skill for cross-codebase pattern discovery (4ac2ed0)
- feat(qdrant): add static payload indexes for language, fileExtension, chunkType (24266d4)
- docs(cli): add CLI executable design spec (86811d2)
- docs(dx): add typed-errors rule for mandatory error hierarchy usage (e646922)
- docs(dx): update search-cascade for typed error handling (9dc91bc)
- docs(operations): add AliasOperationError and zero-downtime reindex FAQ (31ccecc)
- docs(operations): add error codes reference, rename troubleshooting page (51b41e3)
- docs(plans): add collection aliases implementation plan (41143cf)
- docs(plans): add error handling implementation plan (6c7ca33)
- docs(plans): add streaming chunk enrichment plan (e86701c)
- docs(specs): add collection aliases and project registry design specs (bbecbe9)
- docs(specs): add unified error handling design spec (3ed02fd)
- docs(specs): fix error handling spec after review (f10c8fc)
- docs(specs): fix review issues, add typed-errors rule, complete migration (1425c23)
- docs(specs): update error handling spec with brainstorming decisions (926982f)
- docs(usage): add Ignoring Files page with dynamic ignore tracking (5a16536)
- chore(deps): add yargs and yaml for CLI (2daa77e)
- chore(plugin): bump version to 0.3.1 for new indexing skills (5534a4c)
- feat(adapters,domains): migrate all throw sites to typed errors (5c500df)
- fix(adapters,domains): replace all remaining plain Error throws with typed errors (0b5fe9c)
- style(rerank,schemas): apply eslint auto-fixes (9e2ae4d)
1.11.0 (2026-03-17)
- test(explore): add offset pagination tests for BaseExploreStrategy (e9846da)
- fix(dx): deny commit instead of ask when plugin version not bumped (448e611)
- feat(api): add offset parameter to semantic_search, hybrid_search, search_code (95f6119)
- feat(dx): add PreToolUse hook to check plugin version bump before commit (84b0ace)
- refactor(plugin): move pagination to cascade rule — applies to all tools (2c96c0e)
- improve(plugin): remove hard limits from research — agent decides iteration (e3ecc40)
- improve(plugin): remove symbol verification from research, add balanced rerank (6e97f55)
- improve(plugin): research outputs facts not strategy, adds iteration budget (3791215)
- improve(plugin): research skill flags problematic zones, uses filters (81d307e)
1.10.0 (2026-03-17)
- feat(plugin): add explore + research skills, refactor data-driven-generation (467fa49)
- chore(plugin): bump version to 0.1.1 (88ed825)
1.9.1 (2026-03-17)
- improve(plugin): make session start instructions imperative (3bdbd17)
1.9.0 (2026-03-17)
- fix(plugin): always reindex_changes on session start, not only on drift (b9abfb6)
- fix(plugin): prepare for marketplace install with working hooks (80a4699)
- fix(plugin): use script for hook instead of inline cat with env var (5f14117)
- improve(plugin): add session start check, presets/filters reference to cascade (c18e422)
- improve(plugin): add tool selection examples to search-cascade rule (ea046f9)
- improve(plugin): LSP-first cascade, auto-detect tools on session start (6c5c349)
- improve(plugin): memorize label thresholds after indexing (066abf4)
- improve(plugin): remove mandatory verify — trust the index (014f606)
- feat(plugin): inject search-cascade rules via SessionStart hook (37e2176)
1.8.0 (2026-03-17)
- improve(plugin): drill-down + spread check in bug-hunt (415ea7d)
- improve(plugin): enforce self-execution and label trust in bug-hunt (10b10dc)
- improve(plugin): force ripgrep MCP in bug-hunt verify step (ecbe63d)
- improve(plugin): make ripgrep optional in bug-hunt — agent decides (381cf73)
- improve(plugin): multi-query discovery with intersection in bug-hunt (f75e7b5)
- improve(plugin): optimize bug-hunt to 4 steps with parallel tool calls (4bfe45e)
- improve(plugin): parallel tree-sitter + ripgrep in verify discover step (7e70c92)
- improve(plugin): restructure bug-hunt skill as checkpoint loop + fix applier overwrite (63eabd5)
- feat(filters): glob pre-filter via Qdrant full-text index on relativePath (1f06e5b)
- fix(plugin): consolidate bug-hunt skill — original structure + mandatory ripgrep (b8c67ae)
- fix(plugin): fix cascade rule — read files for understanding, ripgrep for confirming (7ff01f6)
- fix(plugin): limit=10 default, use offset for pagination (c089f64)
- fix(plugin): make ripgrep MCP mandatory in bug-hunt (c9377b2)
- fix(plugin): no rerank on discover step — pure similarity for area finding (4d6e274)
- fix(plugin): scope ripgrep to discovered area, not entire project (aa902e9)
- fix(plugin): split discover + verify into separate steps in bug-hunt (547b314)
- fix(presets): add rank_chunks to bugHunt preset tools list (dd23c4b)
- refactor(plugin): enforce strict tool discipline in bug-hunt skill (62d7408)
- refactor(plugin): remove redundant verify, prefer ripgrep over file reads (d0d525c)
- refactor(plugin): rewrite bug-hunt skill per writing-skills best practices (8b2c05c)
- revert(plugin): restore per-step verify in bug-hunt skill (14b8429)
1.7.3 (2026-03-16)
- improve(plugin): move validation to single verify step in bug-hunt (366bcd4)
1.7.2 (2026-03-16)
- improve(plugin): make bug-hunt verify step concrete (94501b3)
1.7.1 (2026-03-16)
- improve(ingest): add .contextignore.local support and raise test coverage to 96.9% (f98323c)
- improve(plugin): enforce strict tool parameters in bug-hunt skill (51a843e)
- fix(explore): overfetch in scroll-rank when pathPattern is set (35164ce)
- chore(plugin): add marketplace.json for local and remote installation (434d02a)
1.7.0 (2026-03-16)
- improve(plugin): add hybrid_search fallback to semantic_search (2d076b2)
- feat(plugin): create tea-rags Claude Code plugin (2d70a06)
- docs(plans): add data-driven generation plugin implementation plan (9b96737)
- docs(specs): add data-driven generation Claude plugin design spec (1952a42)
1.6.0 (2026-03-16)
- feat(mcp): add signal-labels schema resource, fix label declarations (05d2a58)
- fix(ingest): use readPayloadPath for dominantAuthor in distributions (057d32a)
- fix(onnx): detect stale daemon socket and respawn automatically (88321c7)
1.5.0 (2026-03-16)
- feat(api): add getIndexMetrics to App interface and ExploreFacade (6657cb2)
- feat(dto): add IndexMetrics DTO for get_index_metrics (2d66e68)
- feat(infra): bump StatsCache to v3 with distributions support (b0f5cab)
- feat(ingest): compute distributions and min/max in computeCollectionStats (f8ceb71)
- feat(mcp): register get_index_metrics tool (ec42101)
- feat(presets): add bugHunt preset for finding potential bug locations (65d13b3)
- feat(reranker): add label-resolver for overlay value labeling (68daa7f)
- feat(reranker): integrate label resolution into buildOverlay() (26c80e3)
- refactor(contracts): add min/max to SignalStats, add Distributions (72d7863)
- refactor(contracts): replace percentiles with labels in SignalStatsRequest (6979647)
- refactor(reranker): remove derived from OverlayMask and RankingOverlay (7f764b5)
- docs(plans): add index-metrics + overlay labels implementation plan (780aae7)
- docs(presets): add JSDoc to all 11 rerank presets (9da1aaf)
- docs(signals): add JSDoc to all 20 derived signals and enforce in rules (85ec69e)
- docs(specs): add get_index_metrics + overlay labels design spec (d608e82)
1.4.0 (2026-03-15)
- feat(config): add QDRANT_QUANTIZATION_SCALAR env flag (a767bc8)
- feat(ingest): pass quantizationScalar to collection creation in IndexPipeline (5efd311)
- feat(qdrant): add scalar quantization support to createCollection (d83b9f2)
- feat(qdrant): wire quantizationScalar through CollectionOps and AppDeps (679c219)
- refactor(infra): move signal-utils from contracts/ to infra/ (5fae09c)
- docs(plans): add scalar quantization implementation plan (d76ca6f)
- docs(specs): add scalar quantization design spec (1587b5b)
- style(mcp): fix no-useless-concat in schema descriptions (cb6b5a1)
1.3.0 (2026-03-15)
- fix(api): fix schema inconsistencies and incorrect resource examples (b96bd97)
- improve(api): compact search_code and index_codebase descriptions (10bfe54)
- improve(api): compact semantic_search and hybrid_search descriptions (abaef5d)
- improve(api): consolidate filter parameters in MCP schemas (908047a)
- improve(api): trim 'Use for' from typed filter descriptions (e9e7846)
- improve(mcp): add schema overview link to search tool descriptions (1581205)
- improve(mcp): add ToolAnnotations to all tools (1714577)
- improve(mcp): compact SchemaBuilder — remove per-value descriptions from tool schema (fc43880)
- improve(presets): add per-preset descriptions to MCP schema (076a93f)
- test(api): tighten path assertion in indexing guide test (703452a)
- test(signals): add signal level tests for types, helpers, and blending (689cfaa)
- feat(api): add search-guide and indexing-guide resource builders (fbb9597)
- feat(api): extend PresetDescriptors with preset details for resource docs (af11e04)
- feat(api): register search-guide and indexing-guide resources, add Guides to overview (b2dfa26)
- feat(mcp): add schema documentation MCP Resource (3f99285)
- feat(mcp): add shared outputSchema for search tools (c436059)
- feat(mcp): split schema documentation into 4 focused MCP resources (2ff993e)
- docs(api): add schema compaction wave 2 design spec (b138140)
- docs(api): add schema compaction wave 2 implementation plan (49d367f)
- docs(mcp): add per-resource schema docs implementation plan (07c09f5)
- docs(mcp): add per-resource schema documentation design spec (16ae541)
- docs(mcp): improve tool and parameter descriptions (6796bf6)
1.2.1 (2026-03-15)
- docs(api): add level parameter and signalLevel docs to tools.md (22ac932)
1.2.0 (2026-03-15)
- feat(rerank): add signalLevel system for preset scoring granularity (2d5d83c)
- docs(plans): signal level implementation plan — 11 tasks (50a2465)
- docs(specs): replace SignalLevel "auto" with "chunk" — explicit is better (a7df600)
- docs(specs): signal level & consistent level parameter design (394ebc6)
1.1.1 (2026-03-15)
- improve(presets): add chunk-level signals to securityAudit, techDebt, ownership presets (2883199)
1.1.0 (2026-03-14)
- chore(dx): add .claude/worktrees to gitignore (438e09b)
- docs(api): add find_similar tool documentation (43fa7e2)
- docs(explore): add find_similar spec, plan, update add-mcp-endpoint skill (15877f5)
- feat(api): add FindSimilarRequest DTO for find_similar tool (2a07f30)
- feat(explore): add ExploreFacade.findSimilar() and App wiring (77f78ca)
- feat(explore): add QdrantManager.query() for recommend API (9626a15)
- feat(explore): add SimilarSearchStrategy for find_similar tool (b2c7cd1)
- feat(mcp): register find_similar tool with Zod schema (9f6faa3)
- feat(presets): add find_similar to preset tools[] arrays (e9d64ba)
1.0.4 (2026-03-14)
- (5c4ff7c)
- fix(ci): escape angle brackets in changelog for MDX compatibility (ba48aae)
- docs(dx): add parallel-sessions rule and .claudeignore (3640992)
1.0.3 (2026-03-14)
1.0.2 (2026-03-14)
- fix(ci): deploy docs on every push, not just release commits (94630db)
- fix(ci): deploy docs only on chore(release) commits (dbb7b89)
- (682622b)
1.0.1 (2026-03-13)
- ci(docs): make deploy-docs a self-contained job with own checkout (7424f9c)
- docs(dx): add path shortcuts, deep navigation rule, and add-language-hook skill (1ff2a0b)
- docs(dx): add skills for signals/presets and rules for wiring/testing (25845cf)
- refactor(dx): add domain barrel files and barrel-files rule (b869152)
1.0.0 (2026-03-13)
- chore(ci): reduce CI output to errors and warnings only (c89e11b)
- chore(config): add files field for npm publish (195ca16)
- chore(config): add md/json/yaml/css to lint-staged prettier (dc307c9)
- chore(config): update rule paths from search/ to explore/ (1e773cb)
- chore(dx): add .claude/**/.local/ to .gitignore (f29de79)
- chore(dx): add skills for MCP endpoint and DTO creation (0f9b1b1)
- fix(embedded): set cwd for Qdrant daemon to binary directory (db2e10b)
- fix(embedded): store Qdrant binary in ~/.tea-rags/qdrant/bin/ (47839e7)
- fix(embedded): use env vars instead of CLI args for Qdrant config (bf09cd7)
- fix(presets): remove search_code from decomposition preset tools (015f87b)
- fix(rerank): rank_chunks scoring, overlay visibility, and preset tuning (69f9dff)
- fix(test): make validatePath test cross-platform (4807cb7)
- style: run prettier on all source and test files (2e99305)
- refactor: migrate home directory from .tea-rags-mcp to .tea-rags (6235cc6)
- refactor: move embedded qdrant to core/adapters/qdrant/embedded (17d7ad5)
- refactor(adapters): extract mergeQdrantFilters, add TrajectoryRegistry.buildMergedFilter (4f3cf13)
- refactor(adapters): move filter-utils.ts → filters/utils.ts (3cb2dec)
- refactor(api): move domain modules into core/domains/ (ae404ce)
- refactor(api): split core/api/ into public/ and internal/ (2c419ee)
- refactor(bootstrap): add App to AppContext via createApp() (7fe2216)
- refactor(config): add ResolvedPaths to AppConfig, DI all path consumers (522481a)
- refactor(contracts): consolidate search types → ExploreResponse, ExploreCodeRequest (0c62860)
- refactor(contracts): extract App DTOs from api/app.ts to contracts/types/app.ts (b3fe83d)
- refactor(contracts): move EmbeddingConfig, TrajectoryGitConfig, QdrantTuneConfig to core/contracts (e4ce1b7)
- refactor(dx): split CLAUDE.md/AGENTS.md into focused rules (4399abd)
- refactor(explore): add BaseExploreStrategy with shared defaults, postProcess, metaOnly (8282790)
- refactor(explore): add rerank and metaOnly to SearchContext (58d8724)
- refactor(explore): collapse searchCodeTyped+searchCode into single searchCode(DTO) (5bb6b1a)
- refactor(explore): delete ExploreModule, legacy types, consolidate ExploreResponse (e99295d)
- refactor(explore): ExploreFacade deps object, delegate buildMergedFilter to registry (dee9179)
- refactor(explore): HybridSearchStrategy extends BaseExploreStrategy (da56f75)
- refactor(explore): remove excludeDocumentation from ScrollRankStrategy (13f4286)
- refactor(explore): rename RawResult → ExploreResult<P>, executeSearch → executeExplore (0cfdc8e)
- refactor(explore): rename search domain to explore (e7ec383)
- refactor(explore): rename search module to explore (1cde3de)
- refactor(explore): rename SearchContext → ExploreContext (4d9f572)
- refactor(explore): rename SearchStrategy → ExploreStrategy, extract base class to base.ts (88f4fe8)
- refactor(explore): rewrite ExploreFacade with unified strategy pipeline (9c2d242)
- refactor(explore): ScrollRankStrategy extends BaseExploreStrategy with own defaults (4727a38)
- refactor(explore): update strategy factory and barrel, createSearchStrategy → createExploreStrategy (6b9d81d)
- refactor(explore): VectorSearchStrategy extends BaseExploreStrategy (b2d8154)
- refactor(filters): extend FilterDescriptor for must_not support (FilterConditionResult) (3be7a04)
- refactor(infra): extract isDebug into core/infra layer (d939542)
- refactor(infra): move collection utils from ingest/ to infra/collection-name.ts (4c64b8d)
- refactor(infra): move StatsCache and SchemaDriftMonitor from api/ to infra/ (76ef5b1)
- refactor(ingest): move collection utilities from contracts to ingest (eee9259)
- refactor(mcp): thin MCP handlers delegating to unified App interface (bfe5f55)
- refactor(search): remove trajectory dependency via DI filter builder (c80c6ee)
- docs: add scope-based versioning rules and improve commit type (82137d9)
- docs(api): add GRASP/SOLID cleanup design spec (1baad7a)
- docs(api): add GRASP/SOLID cleanup implementation plan (5abbe3f)
- docs(config): update CLAUDE.md for domain boundaries and explore rename (3f498da)
- docs(explore): add unified explore filters & type consolidation design spec (b2d83d0)
- docs(infra): update CLAUDE.md layer descriptions and project structure (cb990d6)
- docs(website): update documentation for embedded Qdrant and package rename (56dc94d)
- feat(api): add App interface and typed response types (7045b9a)
- feat(api): add CollectionOps and DocumentOps (21a67d2)
- feat(api): add createApp() factory, rename SearchFacade → ExploreFacade (8ce014c)
- feat(api): expand SearchFacade with semantic/hybrid/rank methods (4c2c3dc)
- feat(embedded): add Qdrant binary downloader and postinstall script (df7494d)
- feat(embedded): add Qdrant daemon with refcounting and idle shutdown (82734d7)
- feat(embedded): add version lock, Qdrant docs page, and strict lint (914a4f0)
- feat(embedded): add Windows support for Qdrant binary download (f35d49f)
- feat(embedded): integrate Qdrant daemon into bootstrap (ca5f14b)
- feat(explore): add buildMergedFilter + TypedFilterParams for typed search filters (e6e0a7a)
- feat(explore): add exploreCode method with auto-detect hybrid and typed filters (5098920)
- feat(explore): add search strategies + post-process module (6b7d827)
- feat(mcp): add rank_chunks tool with scroll-based chunk ranking (f09c0a0)
- feat(mcp): add typed filter params to all search tool schemas (d335a6c)
- feat(mcp): pass typed filter params through all search handlers (aa841c6)
- feat(presets): add rank_chunks to all preset tool lists (c75b7a7)
- feat(search): add RankModule for scroll-based chunk ranking (10ba9b0)
- improve(api): address App interface review feedback (bb1bd26)
- improve(explore): add barrel export and fix type casts in strategies (ac2e923)
- improve(presets): refine rank_chunks and add hybrid_search to preset tool lists (badd8d1)
- feat!: rename package to tea-rags (3e8a79f)
- ci: configure BREAKING CHANGE ordering and commit rules (a4e4e87)
- ci: use dot reporter for vitest to show only failures (a7c380c)
BREAKING CHANGE
- package renamed from @artk0de/tea-rags-mcp to tea-rags. Binary command renamed from qdrant-mcp-server to tea-rags.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- QDRANT_URL default changed from http://localhost:6333 to autodetect. Set QDRANT_URL explicitly if using external Qdrant.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
0.9.0 (2026-03-08)
- fix: resolve all ESLint errors and warnings (73 → 0) (bd7e337)
- fix(onnx): resolve eslint warnings in daemon and worker (7e7633a)
- fix(onnx): revert pipeline batch size propagation, fix probe diversity (36384fc)
- fix(test): stabilize flaky git-log-reader date filter test (a8e7099)
- docs: add design docs for daemon batching and adaptive batch size (8d7510e)
- docs: update ONNX provider scale and batch size documentation (49319c4)
- refactor(onnx): move recommendedPipelineBatchSize to BatchSizeController (5317982)
- refactor(onnx): rename GPU_BATCH_SIZE to DEFAULT_GPU_BATCH_SIZE, add adaptive constants (e5c641d)
- feat(onnx): add BatchSizeController for adaptive GPU batch sizing (5e4f541)
- feat(onnx): add calibrationCachePath to paths module (b2969dd)
- feat(onnx): add daemon-side batch splitting for GPU-safe inference (3000740)
- feat(onnx): add GPU_BATCH_SIZE constant (d65b160)
- feat(onnx): add worker timing, calibration probe, and cache (4912a6f)
- feat(onnx): expose recommendedBatchSize from OnnxEmbeddings (23f5d56)
- feat(onnx): integrate BatchSizeController into daemon (ed5bc7b)
- feat(onnx): pipeline uses GPU-calibrated batch size when not explicitly configured (ec19920)
- feat(onnx): recommendedBatchSize = max(32, calibrated * 2) (23bde57)
- feat(onnx): restore pipeline batch size propagation from calibration (5636959)
- perf(onnx): add session options and warm-up batch for GPU inference (8e4d50f)
- perf(onnx): raise default pipeline batch size from 8 to 32 (a0ec051)
- chore: add .dolt/ and *.db to root .gitignore (d110cfb)
- chore: remove unused check-coverage hook (19c0d8f)
- chore(beads): untrack SQLite db files covered by .gitignore (f0f4be4)
0.8.0 (2026-03-07)
- chore: add remark-frontmatter dependency (c472322)
- chore: AGENTS.md beads upgrade (7bb835e)
- chore: enforce coverage threshold in pre-commit hook (48338b7)
- chore(beads): close 2o2 (squash-aware sessions), open 6h3 (trace_metrics) (4846ccd)
- chore(beads): sync issues, add post-merge hook, close 47m (af4a5b7)
- chore(deps): add @huggingface/transformers as optional dependency (c156b5d)
- chore(scripts): update verify-providers to use makeConfig helper (9b0ff9f)
- docs: add markdown chunker implementation plan (e01ffb8)
- docs: add markdown chunker quality improvement design (91f2c86)
- docs: add ONNX worker thread design (242693f)
- docs(providers): add embedding provider pages and refactor config (315c6d1)
- test: raise code coverage to 97% with 48 new tests across 18 files (fb7e369)
- test(chunker): add oversized section test (spec review fix) (5d3f5cd)
- test(decomposition): add integration tests for methodLines/methodDensity scoring (6f48709)
- test(onnx): add daemon end-to-end integration test (543ac56)
- test(onnx): raise daemon coverage to 97% (19c3d39)
- test(trajectory/static): add tests for StaticTrajectory, PayloadBuilder, filters + update CLAUDE.md (79097c1)
- feat(chunker): add MarkdownChunker with frontmatter, code block dedup, and Mermaid filtering (daa7b13)
- feat(chunker): populate methodLines in tree-sitter, add methodDensity to payload (fbfb0fa)
- feat(config): add "onnx" to embedding provider enum (0349b96)
- feat(config): add daemon socket and PID file paths (f789d17)
- feat(config): add ingest, trajectoryGit, qdrantTune zod slices (ed85601)
- feat(config): standardize env var naming with category prefixes (4b8acf2)
- feat(config): zod schema for core + embedding slices (2b132d0)
- feat(drift): payload schema drift detection — warn agent once per session (25e0013)
- feat(embedding): adaptive batch sizing with exponential backoff (3d90152)
- feat(embedding): add OnnxEmbeddings provider with lazy loading (ae1ea68)
- feat(embedding): cache models in ~/.tea-rags-mcp, guided HF auth, int8 default (8474e6a)
- feat(embedding): safe initial batch size, DI for cacheDir, backoff tests (5df5876)
- feat(embedding): wire OnnxEmbeddings into factory (c5eba6a)
- feat(factory): wire daemon socket paths into OnnxEmbeddings (229e5f8)
- feat(hybrid): replace RRF/DBSF with weighted score fusion (0539075)
- feat(onnx): add daemon CLI entry point and spawn logic (a0ccdf8)
- feat(onnx): add daemon protocol types and NDJSON serialization (637875b)
- feat(onnx): add EMBEDDING_DEVICE config with auto-detect and GPU fallback (864af4e)
- feat(onnx): add NDJSON line splitter for socket communication (7244276)
- feat(onnx): add process exit hook and GPU sequential lock (1662322)
- feat(onnx): add worker thread message types (da9f08d)
- feat(onnx): implement daemon server with Unix socket and lifecycle management (e93ea97)
- feat(onnx): move inference to worker thread, rewrite proxy (0ce8d35)
- feat(onnx): rewrite OnnxEmbeddings as daemon socket client (575f617)
- feat(onnx): switch to WebGPU + FP16 for 2.5x faster embeddings (ca4f7ab)
- feat(rerank): add decomposition preset with chunkDensity signal (f93605f)
- feat(search): raise candidate pool defaults to ×4/×6 with min 20 (0760beb)
- feat(signals): ChunkSizeSignal reads methodLines, fix readRawSource for top-level keys (5c5ce21)
- feat(trajectory): add squash-aware session grouping for git metrics (99c1633)
- feat(trajectory): create static trajectory module with signals, presets, filters, payload builder (ce024fe)
- feat(types): add methodLines to CodeChunk metadata (b7097d2)
- fix: methodLins now correctly writes in chunk payload (23a4fe3)
- fix: methodLins now correctly writes in chunk payload (c60d73b)
- fix: update stale comment ref to MarkdownChunker (6fef9a9)
- fix(chunker): graceful worker shutdown to eliminate flaky test crashes (cc918bd)
- fix(chunker): splitOversizedChunk gives sub-chunks correct startLine/endLine (5085d7a)
- fix(chunker): strip frontmatter from whole-document fallback (252454c)
- fix(config): send deprecation warnings via MCP logging (9bf2567)
- fix(embedding): add ambient types for optional @huggingface/transformers (bf719c3)
- fix(embedding): add internal batch splitting to prevent OOM in ONNX (e31ac15)
- fix(embedding): fix onnx build errors — proper Dtype typing, remove stale ts-expect-error (f295f9d)
- fix(embedding): use q8 dtype (maps to model_quantized.onnx), not int8 (ef6ed00)
- fix(git): use native child_process timeout instead of JS-level setTimeout (94ac050)
- fix(logs): use local timezone for pipeline debug log timestamps (2f6ae55)
- fix(mcp): coerce string params to number/boolean, lazy-init debug logger (3249e3b)
- fix(signals): ChunkDensitySignal reads methodDensity with adaptive bounds (49a0665)
- refactor(chunker): wire MarkdownChunker into TreeSitterChunker (933f03f)
- refactor(composition): register StaticTrajectory, simplify resolvePresets to 2-level (6f31b57)
- refactor(config): centralize app data paths into config/paths.ts (9fd2721)
- refactor(config): kill CodeConfig, use typed Zod slices (64e153e)
- refactor(config): modularize config.ts into config/ directory (63af188)
- refactor(config): move defaults to config/, fix flaky pre-commit (028e21a)
- refactor(config): parseAppConfig delegates to Zod, remove validateConfig (ea2c220)
- refactor(config): replace debug-logger ENV reads with getConfigDump (8a22861)
- refactor(debug): centralize DEBUG flag via runtime.ts (1a4dffd)
- refactor(embedding): extract DEFAULT_ONNX_MODEL constant, use jinaai namespace (e457e62)
- refactor(embedding): extract dtype from model name suffix (86cf8fb)
- refactor(embeddings): DI config slice, remove createFromEnv and process.env (5a86dc1)
- refactor(ingest): DI config slices for pipeline, remove process.env (847d4bc)
- refactor(pipeline): delegate payload construction via PayloadBuilder DIP (4d84cd6)
- refactor(qdrant): align hybridSearch contract with search() (89f6e87)
- refactor(qdrant): DI config slice for accumulator + client (f31d3e5)
- refactor(trajectory): delete old signal/preset files from search/, contracts/ (79cea84)
- refactor(trajectory): DI config slice, remove process.env (a41bf01)
- refactor(trajectory): make enrichment optional on Trajectory interface (97b9d1b)
- refactor(trajectory): rename GIT** env vars to TRAJECTORY_GIT** prefix (ebd8cc8)
- (bb0e815)
- ci(release): exclude merge commits from changelog (22e71e4)
0.7.0 (2026-03-04)
- Merge branch 'main' of github.com:artk0de/TeaRAGs-MCP (63a2531)
- feat(presets): enrich onboarding with age, ownership penalty, volatility (bb40e25)
- feat(presets): enrich stable and recent with multi-signal weights (66f00e7)
- ci(release): verify npm token before semantic-release (ec07642)
0.6.0 (2026-03-04)
- feat: wire signal stats lifecycle — cold start + post-index refresh (3d9160d)
- feat(adapters): scrollAllPoints helper for collection-wide stats (3169cab)
- feat(api): add composition root, wire TrajectoryRegistry (d47ffe8)
- feat(api): StatsCache — JSON file persistence for collection signal stats (42ceeee)
- feat(chunker): add TypeScript class body chunker hook (AST-based) (af45bc3)
- feat(chunker): add TypeScript comment capture hook (AST-based) (1a0de42)
- feat(chunker): merge adjacent small top-level declarations into blocks (1661f23)
- feat(chunker): split markdown only on h1/h2 boundaries (84669d3)
- feat(chunker): wire TypeScript hooks and enable class method extraction (f0dc534)
- feat(contracts): add BASE_PAYLOAD_SIGNALS for static payload fields (7f5dc30)
- feat(contracts): add derivedSignals to EnrichmentProvider, wire in git provider (c076732)
- feat(contracts): add essential flag to PayloadSignalDescriptor (60378ae)
- feat(contracts): add generic computeCollectionStats() for adaptive thresholds (5bfc6c6)
- feat(contracts): add PayloadSignalDescriptor, ExtractContext, SignalStats types (0577a47)
- feat(contracts): create contracts layer with provider and reranker types (34b7c64)
- feat(contracts): DerivedSignalDescriptor type, add sources to git signal descriptors (6cbbe3a)
- feat(contracts): TrajectoryRegistry.getAllDerivedSignals() with duplicate validation (136702f)
- feat(git): add chunk-level taskIds from commit messages (c55ebb8)
- feat(mcp): auto-generate ScoringWeightsSchema from signal descriptors (a2834b7)
- feat(reranker): L3 alpha-blending, chunk temporal signals, techDebt redesign (1714371)
- feat(search): add RelevancePreset + preset resolution infrastructure (c079277)
- feat(search): descriptor-based scoring replaces monolith calculateSignals() (14fb640)
- feat(search): mask git payload in metaOnly by overlay or essential fields (070f556)
- feat(search): Reranker v2 class with ranking overlay, descriptor-based metadata (145412b)
- feat(search): use collection-level p95 as adaptive bounds fallback (1785a76)
- feat(search): wire essentialTrajectoryFields through deps chain (52f13e8)
- feat(search): wire Reranker v2 into search-pipeline and search-module (798e434)
- feat(trajectory): add chunk-level churnVolatility, flat payload descriptors, fix volatility blending (2d4d678)
- feat(trajectory): add Git trajectory presets with descriptions (026a365)
- feat(trajectory): add scorer classes, metrics decomposition, and config fixes (bc36120)
- feat(trajectory): add shared trajectory contract types (8d62ac0)
- feat(trajectory): add Trajectory interface and GitTrajectory entry point (422c928)
- feat(trajectory): git signal descriptors and filter descriptors (01f93c2)
- feat(trajectory/git): mark ageDays and commitCount as essential signals (5699902)
- feat(website): update docusaurus config and navbar logo (67f8d97)
- refactor: consolidate normalize() and p95() in contracts/signal-utils (be0b39d)
- refactor: delete duplicate ingest/enrichment/trajectory/git/ (35ac52b)
- refactor: delete Signal interface, remove dead code (c434720)
- refactor: domain boundaries — Qdrant types, FieldDoc→Signal, CLAUDE.md (772add7)
- refactor: enforce domain boundaries — registry, collection utils, SRP (1a26f65)
- refactor: EnrichmentRegistry to contracts/, delete trajectory/types.ts (eda53e2)
- refactor: finalize rerank/ directory structure, update CLAUDE.md (9538e01)
- refactor: merge EnrichmentProvider+QueryContract, propagate overlay types (ed97b04)
- refactor: move git payload accessors from contracts/ to trajectory/git/infra/ (8927220)
- refactor: move presets into rerank/ directories (3c1a32c)
- refactor: move signal-utils to contracts layer (b3851c6)
- refactor: remove scorer classes — wrong abstraction level (d03f6f9)
- refactor: reorganize signals — derived-signals layer, rename payload-fields to signals (68fe7ee)
- refactor: terminology alignment — Metadata→Signals, fix boundary violations (3786fca)
- refactor: wire Reranker via composition root, make required in all consumers (7c626f4)
- refactor(api): add SchemaBuilder — MCP schemas via DIP, no hardcoded imports (50fae12)
- refactor(chunker): extract shared findClassBody util and clarify offset comments (f38fb57)
- refactor(contracts): add OverlayMask type and transition fields to RerankPreset (9345c03)
- refactor(contracts): add RerankPreset interface, update provider preset contract (3b1d476)
- refactor(contracts): extensible PayloadSignalDescriptor.stats and SignalStats (b4174bc)
- refactor(contracts): extract generic signal math from git helpers (4e4cdbf)
- refactor(contracts): finalize RerankPreset — remove tool, require tools[] and overlayMask (77b36f6)
- refactor(contracts): remove derived from overlay, flatten raw to file/chunk (b59e5f5)
- refactor(contracts): update DerivedSignalDescriptor.extract() to (rawSignals, ctx?) (8305970)
- refactor(reranker): move confidence dampening into descriptors (4069f7a)
- refactor(reranker): move dampeningSource from trajectory-level to per-signal DerivedSignalDescriptor (f299a06)
- refactor(reranker): per-source adaptive bounds, fix all derived signal sources (1b9dbc6)
- refactor(search): address code review — import canonical RankingOverlay, guard empty git (18405b3)
- refactor(search): consolidate types — remove duplication from reranker.ts (a370253)
- refactor(search): DampeningConfig DI — remove trajectory-specific hardcode from Reranker (cf21672)
- refactor(search): delegate git filters to TrajectoryRegistry.buildFilter() (fbe22c8)
- refactor(search): extract structural signals into individual classes (c9322c9)
- refactor(search): generic Reranker with PayloadSignalDescriptor[] and dot-notation (cfff0a5)
- refactor(search): remove facade functions, fix domain boundary, simplify constructor (73835d6)
- refactor(search): support tools[] matching and overlay mask in Reranker (8724c8f)
- refactor(search): update preset resolution for tools[] array (1b0b0b3)
- refactor(search): wire resolved presets into Reranker via optional DI (92a0fa8)
- refactor(trajectory): convert gitSignals to gitPayloadSignalDescriptors (927d915)
- refactor(trajectory): extract git derived signals into individual classes (e27517b)
- refactor(trajectory): extract preset classes with overlay masks (51e9413)
- refactor(trajectory): move TrajectoryRegistry to trajectory/index.ts (8429bf4)
- refactor(trajectory): rename signals.ts → payload-signals.ts, add stats to all numeric signals (531599b)
- docs: add claude rules for payload-signals and rerank-presets (bd12711)
- docs: add metaOnly git masking design (bf73d23)
- docs: signal taxonomy glossary in CLAUDE.md (a02b471)
- docs: update CLAUDE.md with preset class architecture and derived-signals layer (314ee16)
- docs: update CLAUDE.md with reranker modularization changes (e79b663)
- fix(chunker,search): metaOnly fields, 0-line chunks, body chunk merging (215b636)
- fix(bootstrap): remove direct Reranker import, use CompositionResult type (b10833e)
- fix(chunker): ensure minimum 1-line span for single-line AST nodes (45abfe8)
- fix(contracts): remove non-null assertions in computeCollectionStats (b53b509)
- fix(filters): correct stale Qdrant keys, add level-aware ageDays/commitCount (eac899d)
- fix(presets): correct weights/overlays/tools, remove impactAnalysis, DRY defaultBound (d3799fa)
- fix(reranker): fix chunk-only scoring, onboarding overlay, and adaptive bounds (39b90ce)
- fix(trajectory): canonical file./chunk. sources, deduplicate chunk signals (da632ac)
- fix(website): mobile sidebar and TOC broken by CSS containing block (e9e9693)
- fix(website): restore search icon and make it gold in dark mode (f5e8201), closes #c5a864 #333
- chore: remove dead code and stale re-exports (9e406f1)
- chore(beads): plan reranker infrastructure tasks and techDebt redesign (d296e36)
0.5.3 (2026-02-25)
- docs: add chunk metrics and interaction model research documents (8c71159)
- ci: use RELEASE_TOKEN PAT for semantic-release to trigger CI on release commits (7707697)
0.5.2 (2026-02-24)
- fix(ci): relaunch ci (2c821b6)
- fix(ci): remove [skip ci] from semantic-release to fix Codecov coverage tracking (1cab357)
0.5.1 (2026-02-24)
- refactor: remove dead git field from ChunkItem, fix CI coverage (267a0ab)
- ci: merge docs deployment into release pipeline (1ac3905)
0.5.0 (2026-02-24)
- build: reset versioning to 0.4.0 and add dual changelog output (464e7e3)
- fix: make README logo clickable, links to docs site (31f8eeb)
- fix: point all repo links to artk0de/TeaRAGs-MCP (b9edcd7)
- fix: resolve all ESLint issues (329 → 0 problems) (b07f753)
- fix: update verify-providers.js import path after refactoring (6cbf6c2)
- fix: use full-size logo in README (3a7c0d2)
- fix(ci): exclude website tests from main suite, scope docs deploy to website/** (7981503)
- fix(website): address code review — deps, ref placement, resetSeenHashes (b980b94)
- fix(website): correct baseUrl to /TeaRAGs-MCP/ for GitHub Pages (cc74bf4)
- fix(website): dino now reaches chicken before catch bang fires (38310d3)
- fix(website): use useBaseUrl for logo path in DinoLogo (d6de9fa)
- chore: merge refactor/solid-ingest-pipeline into main (96b62ea)
- chore: sync beads from main (fbaf5d5)
- test: add multi-provider and empty-provider coordinator tests (743a6e1)
- test: restructure tests to mirror src/ and raise coverage to 95% (be7a4d9)
- refactor: decompose EnrichmentModule into coordinator + chunk-churn + metadata-applier (6000857)
- refactor: decompose src/ into bootstrap/core/mcp domain layers (SRP) (e100933)
- refactor: delete deprecated git-metadata-service and blame types (8c8650a)
- refactor: extract basic git operations to adapters/git/ layer (14db196)
- refactor: extract chunk-reader from git-log-reader, move pathspec to adapters (33d1c66)
- refactor: extract EnrichmentProvider interface and extractTaskIds to enrichment/ (919d6f3)
- refactor: extract file-reader from git-log-reader (257ce77)
- refactor: extract git enrichment cache to enrichment/git/cache.ts (81f707a)
- refactor: extract infrastructure from orchestrators (Phase 6) (80153bb)
- refactor: extract pure metrics to enrichment/git/metrics.ts (497f42e)
- refactor: extract shared lifecycle into BaseIndexingPipeline (Phase 5) (f5bb62d)
- refactor: inject dependencies via IngestDependencies factory (Phase 5b) (36d8a31)
- refactor: layer git types and move GitLogReader into enrichment domain (76d525c)
- refactor: make EnrichmentCoordinator multi-provider with ProviderState map (1e1adb6)
- refactor: move enrichment into pipeline/, git into pipeline/enrichment/trajectory/git/ (6301ee4)
- refactor: move git/ and enrichment/ into ingest/trajectory/ domain (Phase 8) (1582fce)
- refactor: move status-module and indexing-marker into pipeline/ (2cfb1e2)
- refactor: remove hardcoded git payload from ChunkPipeline (51dfe9e)
- refactor: remove isomorphic-git heavy fallbacks to prevent OOM on large repos (f28cbf7)
- refactor: reorganize pipeline/ into infra/, chunker/infra/, chunker/utils/ (8f97197)
- refactor: restructure ingest/ domain layout (7596072)
- refactor: SOLID cleanup of ingest domain — facades, Template Method, DRY (29612a1)
- refactor: wire EnrichmentCoordinator, nested payload, delete old modules (ab65bae)
- refactor: wire EnrichmentRegistry into IngestFacade, remove git guards from base (f3397c2)
- feat: add createEnrichmentProviders registry factory (901acf9)
- feat: create generic EnrichmentApplier with nested payload structure (0b4d785)
- feat: create generic EnrichmentCoordinator with provider interface (27cf0dd)
- feat: create GitEnrichmentProvider implementing EnrichmentProvider interface (89fa2a3)
- feat(website): add Docusaurus documentation site with unified signal naming (a2c9efc)
- docs: condense README with emojis and trimmed docs table (0cd340f)
- docs: multi-provider enrichment architecture design (8d03350)
- docs: multi-provider enrichment implementation plan (7ac870f)
- docs: trajectory enrichment redesign plan (6cafd0c)