Skip to content

v0.8.7 — Search overhaul: relevance, grouping, recency, honest truncation

Latest

Choose a tag to compare

@scalecode-solutions scalecode-solutions released this 28 May 22:07
· 13 commits to main since this release

Search overhaul for AI memory-recovery, plus a build on Rust 1.96 / edition 2024.
(Spans 0.8.3–0.8.7; the crate is published to crates.io at the same version.)

Highlights

  • Anti-recursion tag, actually wired. Every stream now opens with a meta record stamping <smc-cc-cli>; search excludes its own prior output by default (the guard previously existed but was never emitted). Survives token-budget truncation.
  • Match-centered snippets. Snippets are a window centered on the hit (not a fixed prefix that often missed the match). New --snippet-len; matches report match_offset and msg_chars.
  • Honest truncation. The summary is always emitted (even when the budget cuts output short) and now carries total_matched, truncated, and capped.
  • --sort {document|recency|oldest|relevance}. Cap is applied after sorting, so --sort recency --max N returns the N most recent matches. Results are now deterministic (the racy early-exit was removed; search is exhaustive).
  • --group-by {session|thread}. Collapse many hits about one conversation into a single group record (count, timestamp range, sample snippets). thread walks the parentUuid chain to its root.
  • BM25 relevance (--score, --sort relevance). Standard BM25 (k1=1.2, b=0.75) over corpus stats gathered during the scan; opt-in, pure Rust, no new dependencies.
  • uuid emitted per match (stable handle).

Notes

  • Requires Rust 1.85+ (edition 2024).
  • Binary asset below is macOS arm64 (aarch64-apple-darwin). Other platforms: cargo install smc-cli-cc.

Full per-version detail is in the v0.8.3–v0.8.7 commit messages.