Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ All notable changes to RecallForge will be documented in this file.

## [Unreleased]

## [0.3.1] — 2026-05-17

RecallForge 0.3.1 is the final project closeout release for the Memory MCP launch push. It publishes the post-0.3.0 Linear work that landed after the original 0.3.0 tag.

- Added staged background reindex promotion so document, video, audio, and conversation replacements stay hidden until their parent/child memory batches are complete.
- Added index-version-aware query caching for repeated text/media embeddings and generated expansion branches.
- Added MCP progress notifications for long-running search, ingest, batch, memory write, and FTS rebuild tool calls when clients provide a progress token.
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "recallforge"
version = "0.3.0"
version = "0.3.1"
description = "Local multimodal memory for AI agents — cross-modal vision-language search"
authors = [{name = "Brian Meyer", email = "brian@recallforge.dev"}]
readme = "README.md"
Expand Down
2 changes: 1 addition & 1 deletion src/recallforge/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import warnings
from typing import Optional, Tuple

__version__ = "0.3.0"
__version__ = "0.3.1"


def _has_torch() -> bool:
Expand Down
4 changes: 3 additions & 1 deletion tests/test_cross_modal_benchmark_defs.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import unittest
from pathlib import Path

from recallforge import __version__


def _load_cross_modal_ablation():
repo_root = Path(__file__).resolve().parent.parent
Expand Down Expand Up @@ -298,7 +300,7 @@ def test_output_payload_tracks_partial_progress(self):
error="Interrupted by user",
)

self.assertEqual(payload["version"], "0.3.0")
self.assertEqual(payload["version"], __version__)
self.assertEqual(payload["configuration"]["expansion_profile"], "caption_only")
self.assertEqual(payload["configuration"]["smoke_profile"], "safe")
self.assertEqual(payload["configuration"]["rss_limit_mb"], 4096)
Expand Down