v3.0.3
Fixed
smem watch crashed on every backend (fixes #138). WatchStateTracker
reached into a private SQLiteStorage attribute (storage._db, a raw
aiosqlite.Connection) at five call sites. No other backend — including
SurrealDB, the only production backend since v2.0.0 — ever had that
attribute, so every entry point (the MCP smem_watch tool, smem watch, and
the server's background reindex loop) raised AttributeError.
File-watch state now lives behind the storage interface (a new watch_state
table on SurrealDB, matching in-memory support for tests), implemented the
same way pinning and training-file tracking already are. A second,
previously-masked bug on the same path — a call to a storage method that
never existed on any backend — is fixed too.
smem index walked the same repository up to 24 times over when run
from a directory containing Claude Code's .claude/worktrees/ (one full
nested checkout per agent session). Excluded .claude alongside .git,
.venv, and node_modules.
Upgrade
pipx upgrade surreal-memoryNo config or data migration needed.