Releases: 88plug/total-recall
Releases · 88plug/total-recall
Release list
v2.3.18
Fixed — bound MCP responses so heavy load can't crash the stdio pipe
Under heavy recall usage the MCP could disconnect mid-session (the whole Claude
Code session lost the tool). Root cause: search_messages returned each message's
full text verbatim via _row_to_hit; a single ~172k-char tool-result blob (times
limit rows) produced a JSON-RPC response large enough to break the stdio pipe.
_row_to_hitcaps bulky free-text fields (text/content/value/preview/
body/snippet) at 1500 chars with<key>_truncated+<key>_full_charsmarkers
— one chokepoint bounds every recall/message tool.search_messagesclampslimitto ≤50 and applies a 256 KB total-response
backstop that trims rows and appends a non-silent_meta.- Internal Python callers bypass
_row_to_hit, so they keep full text — no logic change. - New
tests/test_mcp_payload_bounds.pypins the bounds.
v2.3.0
Fixed
- LLM refinement crash:
'<' not supported between instances of 'NoneType' and 'int'— sort keys incmd_rebuild.pynow useor 0to handle SQLite NULL frequency/message_count values.
Changed
fastembed>=0.4andsqlite-vec>=0.1.6moved from optional[vec]extra to core dependencies — vec/hybrid search works out of the box with no extra install step.[vec]and[llm]extras emptied (kept for backwards compatibility); ollama is an external daemon, not a Python package dep.- Dev dep floors raised:
pytest>=9,pytest-cov>=7,ruff>=0.15,mypy>=2,build>=1.5,twine>=6. - Removed
Operating System :: Microsoft :: Windowsclassifier (hooks are bash-only; no Windows CI).
v2.2.0
Added
- Goose CLI source adapter (
lib/sources/goose.py): reads sessions from SQLite DB at~/.local/share/goose/sessions/sessions.db. Supports 10 CLI clients total. - Grok CLI source adapter (
lib/sources/grok.py): reads JSONL chat history from~/.grok/sessions/. URL-decodes CWD from directory names. docs/install/goose.md,docs/install/grok.md: install guides for new adapters.- Support matrix updated: 10 clients (was 8).
Changed
hooks/lib/common.sh: GPU-aware ollama resolver. Bundled binary takes priority over system PATH.RECALL_OLLAMAenv override bypasses GPU check entirely.- MCP: added
title=to all 26 tools; annotated all withreadOnlyHint=TrueviaToolAnnotations; bumpedmcp>=1.28.0SDK floor. - CI: bumped checkout@v7.0.0, setup-python@v6.2.0, Python 3.13 across all workflows; added
workflow_dispatchtrigger.
v2.1.0
v2.1.0 — gte embeddings, worktree pooling (schema v5), compaction con…
v2.0.1
v2.0.0
fix(v2.0.0): complete the vec backfill wiring + finish version bumps The v2.0.0 commit (e7578b1) shipped INCOMPLETE: the _backfill_vectors edit failed on a stale anchor so the function was never added (rebuild couldn't import it), and only __init__.py got bumped — plugin.json / marketplace / pyproject / uv.lock stayed at 1.6.0, failing the version-consistency gate. This finishes the job: - total_recall/cmd_rebuild.py: add _backfill_vectors() and call it after the LLM-refinement block in rebuild_cmd (cold path; TOTAL_RECALL_VEC gate; optional + non-fatal). - bump plugin.json / marketplace-entry.json / pyproject.toml / uv.lock to 2.0.0 so all 5 version sources agree. Gate (with this applied): - unit: 1320 passed, 15 skipped (exit 0) — version-consistency tests now green - vec eval: 2 passed (rebuild->embed e2e + FTS5 0.133 -> hybrid 0.933, +0.800) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
v1.6.0
v1.6.0 — vec hybrid eval harness (+0.800 P@5 measured)
v1.5.0
v1.5.0 — near-duplicate dedup + score floor
v1.4.1
v1.4.1 — actually wire composite re-rank + tests
v1.4.0
v1.4.0 — composite re-rank (recency + kind priority)