Notable changes since v0.2.27
Fixes
- MCP schema sanitizer (
memora/server.py) — strips Pydantic-generated nullableanyOfcombinators from tool input schemas before servingtools/list. Anthropic's tool validator rejected these, which 400'd the entire MCP handshake and made Claude Code disconnect the server. Reviewed end-to-end by an inter-agent bus loop (claude-B audit + codex review). 19 of 41 memora tools were affected; all clean after sanitize. - Embedding fallback observability (#457) — stops silent fallback to TF-IDF when the OpenAI embedding endpoint fails; warns visibly instead of degrading silently. Also adds explicit warn-on-fallback log path.
- API issue filter tightening —
/api/memoriesissue filter now requires strictmetadata.typematch instead of fuzzy heuristic. - Graph spin fixes (5 commits) —
vis-networkphysics now disables after stabilization, force-disables 1.5s after drag, re-enables on dragStart for elasticity, explicitly starts simulation on drag events, and stops endless spinning aftermemory_updaterealtime reload. - Favorites filter (#544) — fetches the full memory set from the server instead of filtering only the loaded page.
Features
- Issues tab in web UI — inline status / category editing for memories of
type: issue.
Reverts
- Reverted Block 4 of duplicate-review UI action-buttons wiring (held back pending follow-up work).