Changelog
1.28.0 (2026-05-24)
Features
- adapters: add DuckDB graph adapter + migration runner with cg_symbols schema (350e18c)
- api: integrate codegraph slice 1 — App methods, GraphFacade, MCP tools (9bd4079)
- chunker: add TypeScript extraction walker (file-level, sink wiring deferred to T10) (762a92e)
- codegraph: add 7 derived signals and blastRadius preset (bb6659b)
- codegraph: add CodegraphEnrichmentProvider with sink + file/chunk signals (4d6cac1)
- codegraph: add in-memory GlobalSymbolTable (99bb461)
- codegraph: add SymbolsTrajectory and L1 family factory (603ccc5)
- codegraph: add TypeScript CallResolver with tsconfig path mapping (87641fb)
- codegraph: comprehensive multi-language corner-case fixes (JS/Python/Go/Java/Rust) (6910269)
- codegraph: exclude Rails db/schema.rb from graph layer (d4bd523)
- codegraph: find_cycles MCP tool + Tarjan SCC over file and method graphs (efa72ca)
- codegraph: PageRank method-graph signal + cg_symbols_metrics table (dc3e404)
- codegraph: per-collection DB pool, streaming spill, layered ignore, Python types (d8e9e45)
- codegraph: persist symbol table to DuckDB with lazy hydration (8f3f232)
- codegraph: polyglot walkers for JavaScript, Go, Java, Rust, Bash (f01ce06)
- codegraph: Python + Ruby (Zeitwerk-aware) walkers + universal entryPoint composite (ab41ab5)
- codegraph: Ruby
class << selfblock → class methods (40d2277), closes Bar#inner - codegraph: Ruby DSL macro synthetic symbols (attr_* + AR associations) (56ebd77), closes #name #name #name #name #name #name_id
- codegraph: Ruby inheritance + mixin walk in resolver (closes x3in, u17l) (301c69e)
- codegraph: Ruby local type tracking via constructor + AR finders + YARD (e2c5092)
- codegraph: Ruby send/&block / delegate / habtm / define_method + AR chain guard (7373068), closes #name #a #b AbstractPolicy#result
- codegraph: transitiveImpact file signal via depth-capped reverse BFS (004d18b)
- codegraph: wire end-to-end — env-driven CODEGRAPH_ENABLED + composition + bootstrap (ee2570b)
- composite-presets: D4 overrides + architecturalHub (codegraph-aware reranking) (e4efbf2)
- contracts: add codegraph slice 1 contracts (FileExtraction, GraphDbClient, CallResolver) (75c8ac1)
- contracts: handleDeletedPaths hook on EnrichmentProvider + coordinator dispatch (63d9547)
- metrics: per-provider EnrichmentMetrics with codegraph extraction stats (5214014)
- presets: introduce composite trajectory namespace and move blastRadius (188a317)
- sync: route file deletions through EnrichmentCoordinator before Qdrant (fc34474)
Bug Fixes
- chunker: inherit symbolId + chunkType in chunkOversizedNode subChunks (d9e666f)
- codegraph: aggregate classAncestors across all files (global pass-1 → pass-2) (6d44896), closes PaginatableForm#page ProductsController#index IndexForm#search_params PaginatableForm#page
- codegraph: end-to-end live MCP integration on tea-rags + chunk metric rename (a286df0)
- codegraph: match qualified type name against scope tail in Ruby Step 0 (491e2f5), closes IndexForm#search_params
- codegraph: prefer Class.method over Class#method for Zeitwerk dispatch (53f48e1)
- codegraph: qualify Go methods + drop unsafe short-name fallback in Go/Java resolvers (9965ae4)
- codegraph: use Record (not Map) for classAncestors to survive NDJSON spill (13fad35)
- codegraph: use Record (not Map) for classFieldTypes to survive NDJSON spill (735744d)
- codegraph: use Record (not Map) for classFieldTypes to survive NDJSON spill (2908640)
- codegraph: walk ancestors for Class.method calls in Zeitwerk branch (Ruby) (13a2548)
- skills: correct DSL test-chunker language list to include Ruby (d87854a)
Documentation
- codegraph: implementation plan for symbols slice 1 (1a755cf)
- codegraph: sync spec with plan-time refinements (walker, flat App, duckdb-node-api) (2e12031)
- plan: clarify composite preset directory + reclassify Slice 1 blastRadius (bbf74df)
- specs: clarify track separation in static-complexity spec (8501af8)
- specs: composite preset overrides instead of modifying trajectory presets (8fdfac0)
- specs: plan static complexity + universal fan-graph + temporal coupling tracks (c9436a2)
Code Refactoring
- codegraph: move graph algorithms to trajectory/codegraph/infra; adapter becomes pure CRUD (720c4d4)
- facades: drive IngestFacade enrichment providers from TrajectoryRegistry (5c8b6a4)
- presets: relocate fanOutPerLine to codegraph + add imports-field-semantics rule (08367f6)
1.27.0 (2026-05-19)
Features
- rerank: add find_similar to ProvenPreset tools list (70c0695)
- tea-rags: add extract-project-patterns recipe skill (16546c5)
Improvements
- dinopowers: wire extract-project-patterns into executing-plans per Task (33bbd9c)
- dinopowers: wire extract-project-patterns into writing-plans per code-gen Task (8a4a844)
- tea-rags: delegate DDG Step 2 TEMPLATE to extract-project-patterns (4ac2b17)
Documentation
- ddg: design spec for project-wide proven templates with locale fallback (f782ddb)
- ddg: fix gate expression mangled by markdownlint autofix (5aea14f)
- extract-project-patterns: implementation plan with 5 tasks + beads sync (6208b55)
- extract-project-patterns: rewrite spec — three-level locality cascade as agent-only recipe (3499a15)
- website: tighten incremental indexing claim and claude-context row (a747415)
1.26.0 (2026-05-17)
⚠ BREAKING CHANGES
- contracts: External consumers typing against the global ErrorCode union must now import the per-domain unions (IngestErrorCode etc.) for strict typing. Loose string typing continues to work for runtime checks.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Features
- chunker: add TypeScript test-spec DSL chunking + orchestrator hook claim invariant (e5e6880)
- skills: add agent-invocable filter-building and analytics-rerank skills (6d186ad)
- tea-rags,dinopowers: add tests-as-context skill + DSL test chunk integration (644b1e3)
Bug Fixes
- api: make path optional in search_code + index_codebase; stabilize fs.watch flaky test (b3a574b)
- hooks: merge worktree-refactor-ingest-restructure pre-commit fix (7b43908)
- hooks: skip plugin-version-bump check on merge commits (1529bb4)
- tea-rags: spec-extraction recipe uses semantic_search not find_symbol (aa44ab3)
- tests: clear remaining 6 git-filter + limit drifts — all assertions green (de7d255)
- tests: embedded Qdrant cascade + smoke-run drift fixes (3d61840)
Documentation
- bench: update spec-extraction recipe shape in summary table (14d6b7e)
- chunker: add TypeScript test DSL chunking design spec (396c642)
- mcp: expose hidden tea-rags functionality in tool descriptions, MCP resources, and search-cascade (949f9d1)
- plans: archive ingest-restructure plan from completed refactor (020e9a1)
- rules: add silo-pairing process rule (8064cd0)
- rules: clarify subdomain import boundaries in barrel rule (4058481)
- rules: document Stats vs Metrics taxonomy (bfbc69f), closes IndexMetricsQuery#buildSignalMetrics
- rules: link silo-pairing.md from CLAUDE.md (45c69c8)
- rules: mandatory subdomain barrels for ingest restructure (2da2bb8)
- rules: require asking user to start ollama when embedding is down (a3a962b)
- superpowers: add tech-debt Q2 2026 epic design (68fd853)
- superpowers: add tech-debt Q2 2026 implementation plan (b122c89)
- website: fix three rerank documentation drifts in api/tools.md (ad88ffd)
Code Refactoring
- adapters: extract InfraErrorCode local union (06f0c6b)
- api: extract InputErrorCode local union from contracts (6190ec2)
- api: extract wireFacades + wireOps from createApp (9c67fd2)
- config: extract ConfigErrorCode local union (6755193)
- contracts: collapse ErrorCode union to loose string contract (9f016a8)
- explore: extract ExploreErrorCode local union (e3cab76)
- ingest: decompose reindexing block (158 -> 3 phases) (32a00ac)
- ingest: extract BatchDeleteExecutor from performDeletion (19a4534)
- ingest: extract DeletionRetryHelper from performDeletion (922605b)
- ingest: extract DeletionRetryHelper from performDeletion (b769043)
- ingest: extract HeartbeatGuard from IndexPipeline (4283a5e)
- ingest: extract IngestErrorCode local union, re-export from barrel (add496c)
- ingest: extract MissedFileTracker from EnrichmentApplier (9226cdf)
- ingest: extract OptimizerLifecycle from IndexPipeline (4362feb)
- ingest: group cross-cutting helpers under infra/ (5d85893)
- ingest: move IndexPipeline/ReindexPipeline into operations/ (5a1c2e5)
- ingest: move stats-recompute from explore to ingest (b3f52b1)
- ingest: wire sync/ barrel + repoint ingest/ barrel to new paths (d6f2f16)
- mcp: split registerCodeTools by tool family (326 -> 5 modules) (746e114)
- skills: slim search-cascade, extract filter/analytics skills, eval coverage (6598eac)
- sync: extract merkle + consistent-hash into sync/infra/ (db4fc9a)
- sync: group snapshot persistence under sync/snapshot/ (035bcbf)
- sync: split deletion cascade into sync/deletion/ with shorter names (e7b85be)
- tests: post-SOLID integration test infrastructure (0d47f9c)
- tests: remap easy integration suites to build/core paths (00d071d)
- tests: rewrite chunk-A integration suites under IngestFacade/ExploreFacade (69582a5)
- tests: rewrite chunk-B integration suites under IngestFacade/ExploreFacade (82ddc59)
- tests: rewrite chunk-C integration suites under IngestFacade/ExploreFacade (dfd6a25)
- tests: rewrite chunk-D integration suites under IngestFacade/ExploreFacade (625c8c3)
- trajectory: extract TrajectoryErrorCode local union (9f2d401)
1.25.1 (2026-05-15)
Bug Fixes
- scripts: escape curly braces in changelog for MDX safety (41dad25), closes #123 #125
- website: unbreak docs build after 1.25.0 release (04d12e0)
1.25.0 (2026-05-15)
⚠ BREAKING CHANGES
- explore: Reranker.rerank() returns Promise. External callers must await. setCollectionStats accepts an optional opts arg with { collectionName, payloadFieldKeys } — wiring needed for lazy backfill persistence. setRecomputeService(service) is the new injection point; ExploreOps wires it before publishing stats.
Tests: rerank.test.ts (94 calls), rerank-rank-chunks-fixes.test.ts, decomposition.test.ts updated to await + async it() callbacks. explore-facade tests get setRecomputeService mock; post-process tests await the now-async free function. 4300+ tests green.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- cli: the standalone commands
tea-rags register-project,tea-rags list-projects, andtea-rags unregister-projectare removed. Usetea-rags projects register,tea-rags projects list, andtea-rags projects unregisterinstead.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- api: resolveCollection(collection, path) signature removed; internal callers migrated. No public API impact (this function is internal to core/).
Features
- api: add ProjectPathMissingError typed validation error (f063c22), closes 6/#7
- api: add ProjectRegistryOps for register/list/unregister (47a0928)
- api: add ProjectRegistryOps.recoverFromQdrant for doctor (a8dd1f3)
- api: add ProjectRegistryOps.recoverFromQdrant for doctor (impl + tests) (4961ae7)
- api: add projectSchema with regex validation to SchemaBuilder (f2bf971)
- api: expose registerProject/listProjects/unregisterProject on App (8360d0f)
- bootstrap: start CollectionRegistry watcher for MCP server context (7ea0793), closes #2
- cli: 'tea-rags projects unregister --purge' + verbose hint (41960e2), closes #8 #12
- cli: add --project option to tune command (481d10f)
- cli: add 'tea-rags doctor' health summary (bb7687d), closes 6/#7
- cli: add 'tea-rags projects orphans' subcommand (1823d77), closes #8
- cli: add applyProjectDefaults helper for --project resolution (07324bd)
- cli: add register-project command (8f9884b)
- cli: add tab-completion for --project alias values (bash/zsh) (4dd22f1)
- cli: auto-install fish completion via postinstall when fish is detected (b622ba7)
- cli: register 'doctor' command in createCli (70096c9), closes 7/#8
- cli: replace flat project-* commands with 'tea-rags projects [sub]' group (e1078e8)
- cli: wire 'tea-rags doctor --recover-registry' to ProjectRegistryOps (1f32ece), closes #7
- contracts: add SignalConfidence + ConfidenceClampRule types (9a3cc8d)
- contracts: add typed errors for project registry validation (6926b84)
- dto: add CollectionIdentifier mixin with optional project field (09d2e92)
- explore: confidence-aware label resolution (0cbe54e)
- explore: lazy hot recompute for missing percentiles (3e0a948)
- explore: plumb confidence context through reranker (bc38780)
- mcp: add list_projects tool (dbf823e)
- mcp: add register_project tool (65a42e6)
- mcp: add unregister_project tool (0c72652)
- mcp: add unregister_project tool source (d8c076f)
- mcp: expose project parameter in project-aware tools (482cbb3)
- metrics: percentilesToCompute + validateSignalDependencies + lazy-recompute spec (c5cc24c)
- registry: add atomic registry file IO (3011d57)
- registry: add CollectionRegistry class (191b80d)
- registry: add foundation types, errors, barrel for project registry (ab59d9f)
- registry: add migration framework and corrupt-file backup (1a316f9), closes #3 #10
- registry: add PROJECT_NAME_RE constant and RegistryConcurrencyError (fa393f4), closes #9 #1
- registry: fs.watch-based cache invalidation in CollectionRegistry (a8b4ad3)
- registry: reject malformed entries in CollectionRegistry.record() (1da2aec), closes #5
- signals: bugFixRate opts in to unified confidence (b6f12c1)
Improvements
- agents: forbid test buckets in coverage-expander (9ea760c), closes #5
- agents: rewrite coverage-expander to use tea-rags + json coverage (38afdbf)
- api: drop fake new Date() stamp in tryEnrichFromQdrant (37cd902), closes #14 #5
- api: register_project rename-only fast path skips Qdrant for populated entries (76c5d38)
- cli: 'projects info' surfaces realpath divergence and missing-on-disk (1ba4c4c)
- cli: applyProjectDefaults throws typed errors and ignores empty-string registry stubs (a285165), closes #15
- cli: tune handler catches InputValidationError from applyProjectDefaults (86eaf03), closes #15
- mcp: mark project as RECOMMENDED in MCP tool descriptions (1f8f5cc)
- qdrant: tune auto-spawns embedded daemon when no Qdrant URL given (1b056ca)
- rules: document typed filters + MCP resource fetching in search-cascade (ddbbdbd)
- tea-rags: index skill offers to register project after first-time index (1f085af)
Bug Fixes
- agents: repair prettier-corrupted tea-rags tool names in coverage-expander (695bbe1)
- api: register_project recovers teaRagsVersion + indexedAt from indexing-marker (f2d9401)
- cli: align 'doctor' orphan count with 'projects orphans' alias filter (a5bf55a)
- cli: exclude aliased physical collections from 'projects orphans' (a4621f9)
- cli: per-option file completion for --path; suppress noise for --name register (0e30ab4)
- cli: tab-completion fires properly through yargs fallback-fn protocol (53dfa61)
- explore: siblingValues for confidence clamp come from raw payload (5654101)
- registry: enrichment reads embeddingModel from indexing-marker, not random chunk (91ae98c)
- registry: merge-on-write with inode+mtime CAS in flush() (02a1d40), closes #1
- registry: T4 review — rename PATH_NOT_EXISTS code, humanize invalid-name reason (64102b9)
- registry: watch dataDir instead of registry.json (fs.watch inode regression) (b5fb94e), closes #2
- signals: restore adaptive precedence for BugFixSignal dampening (88a3534)
- test: T16 review — use .js extension for ESM import (c41b127)
Documentation
- dinopowers: wrappers prefer project alias over path in enrichment calls (05b4803)
- document project registry MCP tools and CLI commands (0588d78)
- plans: add PR1 implementation plan for project registry hardening (12c4c00), closes #1 #2 #3 #4 #9 #10
- plans: add PR2 implementation plan for project registry recovery + UX (fab86ab), closes #5 #6 #7 #8 #12
- plans: add PR3 implementation plan for project registry polish (a2fd2ae), closes #5 #13 #15
- plans: add project registry implementation plan (d9e4e0a)
- plans: unified plan for hotspot signal interpretation rework (8f3a9d0)
- presets: align HotspotsPreset docstring with weights (eb21700)
- registry: clarify PROJECT_NAME_RE SoT scope and align barrel order (4475aec)
- registry: correct CAS worst-case comment + @throws JSDoc + tombstone test (264dc91), closes audit-#1
- registry: document partial nature of registry/errors layer relocation (01763f7)
- rules,website: update confidence/label docs for adaptive thresholds + percentilesToCompute (4ce41b3)
- rules,website: update signal-confidence + reranking for lazy-at-rerank (1a673fa)
- rules: add npm link workflow for MCP integration testing in worktrees (40b2179)
- rules: add reindex / schema-drift guidance to MCP integration testing (a664dc9)
- rules: clarify npm link sequence — merge between worktree and main (a7b7bff)
- rules: Fragile Silo pattern + small-N anti-pattern + recipe (fe96954), closes #8
- rules: how to use SignalConfidence in payload signal descriptors (08a16a2)
- specs: add project registry design (gr4o ∪ 2mrz) (557bfe3)
- specs: add project registry hardening design (bd78bd4)
- specs: split hotspot/bug-prone signal interpretation into six per-problem specs (86e4b23), closes #8
- tea-rags: teach search-cascade to prefer project alias over path (698ccbb)
- website: add Project Registry pages (267e1d2)
- website: document project registry doctor command, orphans, --purge, and new typed errors (33c7bd5)
- website: drop lazy-backfill subsection from core-concepts/reranking (287514f)
Code Refactoring
- api: resolveCollection accepts registry+project; plumb registry via DI (05b59e3)
- explore: move stats recompute from stats-load to rerank-time (39ce11a)
- registry: introduce RegistryNameConflictError for infra-level conflict (138cf7f), closes #4
- registry: relocate registry errors to adapters layer + barrel-import cleanup (bb30458)
- registry: route all PROJECT_NAME_RE callers to shared constant (2cd113f), closes #9
- signals: BugFixSignal reads dampening from descriptor (4ea7d27)
- signals: migrate 6 remaining derived signals to unified confidence + adaptive labels (654b838)
Unreleased
Features
- registry: project registry (
registry.json) — auto-populated collection metadata + named project bindings.- New MCP tools:
register_project,list_projects,unregister_project. - New CLI commands:
register-project,list-projects,unregister-project. - All project-aware tools and commands accept an optional
projectparameter (resolution priority:collection > project > path). BaseIndexingPipeline.finalizeProcessingrecords collection metadata to the registry after Qdrant writes complete.ProjectRegistryOps.recoverFromQdrantfor future doctor usage.
- New MCP tools:
1.23.2 (2026-05-08)
Bug Fixes
- enrichment: FIFO serialize concurrent prefetch in EnrichmentCoordinator (5943a87), closes #2
- enrichment: per-run RunState container in EnrichmentCoordinator (b8bb167), closes #1
- stats: re-fire onChunkEnrichmentComplete after backfill (8e40ed8)
Documentation
- plans: enrichment RunState — implementation plan (2d1e6e9)
- specs: enrichment RunState — per-run state container (d11fa3c), closes #1 #2
1.23.1 (2026-05-07)
Bug Fixes
- plugin: drop type:mcp_tool hooks — Opus 4.7 timing makes them unusable (72fdd2b)
1.23.0 (2026-05-07)
⚠ BREAKING CHANGES
- stats: STATS_ACCUMULATOR_KEYS.AUTHOR_COUNTS / LINE_AUTHOR_COUNTS keys were renamed to RECENT_AUTHOR_COUNTS / BLAME_AUTHOR_COUNTS. Any external code referencing the old keys must be updated. Distributions DTO gains a new required field topBlameAuthors.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- presets: proven preset ranking shifts. Files where ownership and knowledgeSilo disagreed (concentrated author share with ≥3 contributors) no longer get penalized. Stable preset top-N also moves slightly.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- signals: payload field renames break existing search queries that filter
by
git.file.dominantAuthor,git.file.authors,git.file.contributorCount, orgit.chunk.contributorCount. Schema migration applies on next index_codebase run; agents/skills must update to the new field names. Filter paramsauthorandlineOwnerremoved; userecentAuthorandblameOwner.
Refs spec 2026-05-06-line-based-ownership-from-blame.md (Task 7.5).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- signals: rerank: "ownership" returns different top-N than before. Files written long ago by a now-departed author who still owns the live lines now rank as silos correctly; files only recently fix-touched no longer falsely register as concentrated. Plugin heuristics that read raw ownership values must reindex with forceReindex=true to populate lineDominantAuthor* fields.
Refs spec 2026-05-06-line-based-ownership-from-blame.md (Task 5).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Features
- api: expose line-based ownership in filters, stats, MCP schemas (eb6649a)
- filters: name-or-email author match + recent-contributor range (75b1ecb)
- git: add blame primitive for line-based ownership (807b78b)
- plugin: auto-fire session start protocol via mcp_tool hooks (ecbbcd1), closes #26112
- presets: add line-based ownership to overlays + recentActivityConcentration weight (68b4aa2)
- signals: add blame ownership extractor for line-based signals (3d4bd1b)
- signals: add line-based ownership payload schema (45f12cf)
- signals: reorient ownership/knowledgeSilo to live-line authorship (d2ea7cc)
- signals: wire blame ownership into chunk-level overlays (2d3f844)
- signals: wire git blame into file-level ownership signals (b639eaf)
Improvements
- dinopowers: chain executing-plans into tea-rags:data-driven-generation for code-gen Tasks (48f090b)
- presets: knowledgeSilo for proven, drop ownership from stable (9970121)
Bug Fixes
- enrichment: chunk-level backfill + surface marker write failures (03faeb4)
- enrichment: re-poll unenriched count after grace period for marker (d940199)
- enrichment: use scoped key for backfill writes (clobber prevention) (449fed2)
- enrichment: wait for streaming work before firing onChunkEnrichmentComplete (fe7e457)
- migration: write nested git.* keys instead of flat dot-keys in V13 (2a625cc)
- rules: correct duplicate step 3 numbering in Session Start section (024657d)
- signals: accumulate blameByRelPath across batched buildFileSignals calls (fdd2adf)
- signals: process single-chunk files through chunk-level pipeline (73b7341)
- stats: write enrichment stats under public alias + clarify author taxonomy (6ae9d83)
Documentation
- dinopowers,tea-rags: switch plugin skills to recent*/blame* ownership split (1fac677)
- plan: add enrichment-coordinator split implementation plan (90d4375)
- rules: add end-to-end verification and nested-write guidance for migrations (0400cd1)
- spec: add enrichment-coordinator split design (7d272c6)
- specs: add codegraph symbols sub-trajectory vertical slice 1 design (391fb49)
- website,rules: document recent*/blame* ownership split (8ab19c2), closes #6
Code Refactoring
- enrichment: coordinator finalization + barrel cleanup (1059748)
- enrichment: extract ChunkPhase with shared Semaphore + streaming dedup (3e6574c)
- enrichment: extract CompletionRunner with explicit 7-step run (1a7489c)
- enrichment: extract EnrichmentBackfiller; narrow applier accessors (5c21270)
- enrichment: extract EnrichmentMarkerStore from coordinator (ca3f3c0)
- enrichment: extract FilePhase with prefetch + per-batch apply (1ca1899)
- enrichment: introduce ProviderContext type computed in prefetch (575beff)
- enrichment: move runRecovery race-guard into EnrichmentRecovery.recoverAll (db36cab)
- signals: rename ownership payload fields with semantic prefixes (85e4916)
1.22.0 (2026-05-05)
⚠ BREAKING CHANGES
- dinopowers: New UserPromptSubmit hook injects routing context into every user prompt in projects with the dinopowers plugin enabled. Users who don't want this can disable the plugin or comment out the hook in plugin.json.
Benchmark: .claude-plugin/.benchmarks/dinopowers-wrappers/benchmark.md
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Features
- dinopowers: rewrite descriptions, add main-session hook, override CLAUDE.md naming (783377c)
Bug Fixes
- chunker: enforce hard cap on chunk size to prevent Ollama context overflow (3797b04), closes symbolId#partN
- ingest: apply context safety factor even when user sets chunkSize (dd76155)
Code Refactoring
- ingest: split file/chunk marker writes in awaitCompletion (aeb992d)
1.21.0 (2026-04-24)
⚠ BREAKING CHANGES
- qdrant: QdrantManager constructor 4th parameter changed from
isStarting?: () => booleantodaemon?: EmbeddedDaemonProbe. Internal API only - no public DTO change.
Features
- adapters: add QdrantOptimizationInProgressError (2b219d7)
- adapters: expose Qdrant status and optimizerStatus in getCollectionInfo (a4df5a7)
- adapters: probe collection status on countPoints failure (ecdccc3)
- config: embedded-aware delete tuning defaults (c3960b8)
- config: introduce .qdrant-required-version + rename to EMBEDDED_QDRANT_VERSION (0b5cc18)
- contracts: add ChunkSignalOptions with external semaphore support (94be2e4)
- contracts: add status and optimizerStatus to CollectionInfo DTO (db74c1e)
- contracts: surface Qdrant collection status in IndexStatus.infraHealth (86c5153)
- infra: add async Semaphore for bounded concurrency (1964e2c)
- ingest: DeletionOutcome tracks per-path delete success (b842029)
- ingest: ReindexCoordinator gates upsert on delete success per file (5896815)
- ingest: use cached pointsCount for deletion delta reporting (7fe52a7)
- pipeline: AdaptiveBatchSizer halves upsert batch on Qdrant yellow (2fa202f)
- pipeline: ChunkPipeline reduces upsert batch size on Qdrant yellow (d8a27ca)
- pipeline: per-file FILE_INGESTED telemetry with top-N slow-file tracker (0a393f1)
- pipeline: register schema v12 in SchemaMigrator (51f7c50)
- pipeline: schema v12 migration adds enrichment payload indexes (3bc3d36)
- pipeline: streaming chunk enrichment per-batch in coordinator (9012768)
- qdrant: enable multi-core defaults for embedded daemon (66adad5)
- qdrant: split embedded daemon startup errors, non-blocking spawn (146ec62)
- qdrant: unify version constant, add external check and downgrade guard (3978b8e)
- signals: add pair diagnostics layer for architectural interpretation (5f92166)
Bug Fixes
- explore: symmetrize find_symbol payload contract with semantic/hybrid (dc1a2a1)
- ingest: gate modified-file upsert on delete success per file (7fe355d)
- ingest: prevent stale enrichment marker overwriting current run (b09bcd1)
- ingest: recover stale enrichment.in_progress at health-mapper read (600744d)
- ingest: run enrichment recovery even on reindex with 0 changes (9fa596d)
- ingest: stamp chunk-level enrichedAt for missed files, sync marker with real count (d74b09a)
- ingest: surface per-path delete failures via DeletionOutcome (1a07d70)
- pipeline: getIndexStatus reads from alias, not orphan _v(N+1) (3311406)
Performance Improvements
- qdrant: scroll+delete-by-IDs and optimizer pause for large-delta reindex (6220f86)
Documentation
- specs: add sub-collections cold memory design spec (4aaa873)
- specs: implementation plans for reindex resilience and yellow handling (f3b43c2)
- specs: qdrant yellow-status handling design (7f75745)
Code Refactoring
- pipeline: fix FILE_INGESTED type cast and hoist bytes computation (60fe61f)
1.20.0 (2026-04-22)
⚠ BREAKING CHANGES
- config: TRAJECTORY_GIT_ENABLED default changed from false to true. Users who previously relied on the absent-env-var meaning "disabled" must now set TRAJECTORY_GIT_ENABLED=false (or CODE_ENABLE_GIT_METADATA=false) to opt out. No action needed for users already setting the variable explicitly, or for non-git directories (silently skipped either way).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Features
- dinopowers: add brainstorming wrapper with 3-preset risk enrichment (9eb9054)
- dinopowers: add executing-plans wrapper with per-Task pre-touch guard (c28b28b)
- dinopowers: add finishing-a-development-branch wrapper with branch-wide risk scan (b5ccf04)
- dinopowers: add receiving-code-review wrapper with impact-verdict ladder (b770086)
- dinopowers: add requesting-code-review wrapper with reviewer-context bundle (4308ecc)
- dinopowers: add subagent routing hook, README, versioning rule entry (a3ae389)
- dinopowers: add systematic-debugging wrapper composing with tea-rags:bug-hunt (4fd8dd9)
- dinopowers: add test-driven-development wrapper with proven-test pattern search (c60129e)
- dinopowers: add verification-before-completion wrapper with collateral-damage scan (0167524)
- dinopowers: add writing-plans wrapper with per-file impact enrichment (22f675f)
- dinopowers: scaffold plugin and add writing-skills bootstrap wrapper (52660b7)
Improvements
- config: enable git trajectory enrichment by default (f0a9e17)
Bug Fixes
- dinopowers: redirect inner superpowers:Y chain-hops to dinopowers:Y wrappers (6d8f78f)
- embedding: detect primary Ollama death mid-session via background probe (dd4e1f0)
- setup: correct Node version, use global tea-rags binary, auto-install Ollama on macOS (98e61cc)
Documentation
- add specs and plans for 3 hygiene refactorings (f2bac4b)
- document dinopowers plugin in skills page and main README (b03ae0b)
- explore: plan for Reranker.rerank() phase extraction (8a73803)
- explore: spec for Reranker.rerank() phase extraction (a44741a)
- fix superpowers attribution (obra/superpowers, not anthropic/skills) (db25657)
- readme+website: fix "not for solo projects" — document GIT SESSIONS mode (906b308), closes #git-sessions
- readme: align README with landing page, drop docker/npm clone, add plugin install (c2b366d)
- website: fill priority empty sections + mermaid fix (00c24c0)
- website: fill remaining extending + knowledge-base stubs (fdda285)
- website: fill roadmap sections from beads epics (22934cc)
- website: invert quickstart flow, fix claude mcp add syntax (028cf04)
- website: plugin-first quickstart with manual install fallback (3c25dc6)
- website: restructure usage/, rewrite landing, fix concept drift (3e78a34)
- website: sync api/config/architecture/agent-integration with current signals and env vars (4a38f03), closes #9
Code Refactoring
- bootstrap: extract resolveInfrastructure + wireComposition from createAppContext (0fb5772)
- chunker: extract phase methods from MarkdownChunker#chunk (2ecfc73)
- explore: add isSimilarityOnly + groupByTop pure helpers for rerank() (ac830bf)
- explore: collapse semantic+hybrid dispatchers, extract ctx builders (e7a60ef)
- explore: extract ExploreOps + close the cosmetic-thinning loophole in facade-discipline (e24f107)
- explore: extract findSimilar validation into validateFindSimilarRequest (846a52e)
- explore: extract findSymbol into SymbolSearchStrategy + FileOutlineStrategy (cc9cb8d)
- explore: extract getIndexMetrics into IndexMetricsQuery (c0cc189)
- explore: extract resolveMode + scoreResults and rewrite rerank() as orchestrator (8513700), closes Reranker#resolveMode Reranker#scoreResults
- extract phases from createAppContext and TreeSitterChunker#chunk (2f3047c)
- ingest: complete IngestFacade under facade-discipline iter-3 (ce5e9f8)
- ingest: decompose extractSignalValues into trajectory-owned StatsAccumulators (f8e6967)
- ingest: extract indexCodebase branching into IndexingOps (38c9412)
- mcp: replace 5 copy-paste registerToolSafe blocks with SEARCH_TOOLS array (7ef22c8)
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)