Search Reliability, Thread Sync Stability, and Cleaner Cross-Client Behavior
0.7.4 is a reliability-heavy release focused on search quality/transparency, thread sync responsiveness, and consistency across desktop, web, remote, and mobile clients.
- Pinned threads now behave as one thread everywhere: pin/unpin works reliably without duplicate rows or key-warning side effects.
- Background session sync no longer makes Mem feel frozen while Claude Code/Codex/Cursor/OpenCode imports catch up.
- Search explanations and per-result score factors now stay honest and query-bound, with clearer product-language breakdowns for Meaning/Text/Keywords/graph hints.
- Search rebuild now validates real semantic indexing readiness and no longer marks a text-only fallback as a successful semantic rebuild.
- Remote/mobile space switching and Settings usage counts now reflect real server state instead of stale fallback data.
- Graph Memory Auto now stays truly automatic after OOM recovery instead of silently becoming a stale fixed limit.
- Claude Code integration updates now follow Claude's official upgrade path instead of marketplace-guess heuristics, reducing plugin drift during updates.
- AI Now now works cleanly when loopback API auth is required, so local-only secured setups no longer break chat startup.
- Quitting the desktop app now waits for final save handoff before backend teardown, reducing last-moment data-loss races.
- Streaming OpenAI-compatible generation no longer blocks the rest of backend API work while one reply is still arriving.
- Background watcher sync now parses large transcript files off the API loop and serializes watcher-triggered imports, so normal Mem API surfaces stay responsive while sync catches up.
- Threads now keep canonical public IDs across read/delete/append/reconcile paths, so cross-space sync/import flows no longer clone the same conversation under drifting identities.
- Step-limited thread analysis now pauses cleanly without pretending a thread was fully analyzed or immediately hot-looping the same work.
- Remote thread distill and knowledge-graph preview paths now return on bounded interactive contracts instead of paying background-grade polish cost before preview.
- Knowledge graph extraction now follows your configured remote text model by default instead of silently drifting to local MLX.
- Search details now consistently use product language and preserve explicit per-result factors, so ranking explanations remain understandable and numerically grounded.
- Fast search quality is improved for broad multi-word queries with better cheap keyword extraction and full-query coverage weighting.
- Deep search and reranking metadata now stay robust under edge-case result shapes, so strong candidates outside the first cut can still surface correctly.
- Deep-search explanations now stay tied to the request that produced them even after later post-processing stages, preventing cross-query explanation drift.
- Fast search keeps primary meaning/text evidence stronger and avoids diluting relevance with non-retrieval bonus noise.
- Graph search quality is improved for focus-mode queries: weaker tail matches are trimmed, memory seed ranking is aligned with trusted memory relevance, and layout settling is clearer.
- OpenRouter attribution now consistently identifies Mem (desktop agents, background jobs, browser extension) instead of mixed SDK/app labels.
- Pinned threads no longer duplicate or refuse to unpin due mixed ID/favorite state paths; pinned sidebar and thread view now stay in sync.
- Thread unpin now updates immediately in open detail view and pin-state toggles stay visually consistent right after fresh toggles.
- Pinned memories and threads no longer disappear when early favorites windows include duplicate or false rows; favorites views now stay stable.
- Remote/mobile clients now switch spaces reliably without stale fallback-roster revalidation blocking the selected lane.
- Settings space usage counts on remote/web now come from the correct full snapshot path instead of incorrectly showing all spaces as empty.
- Search rebuild now validates semantic backend readiness and reports underlying startup dependency errors instead of generic failure labels.
- Local semantic search gets a longer first-query warmup budget and no longer falls back too early while the embedding service is still loading.
- Imported coding-agent scaffold/system prompts are excluded from distill/extract relevance views and provenance so extracted memories stay focused.
- Session append fast path now stays fast and append responses keep valid message counts even when sparse internal rows are returned.
- Turning off automatic thread analysis now truly disables that path instead of continuing background analysis unexpectedly.
- Threads browse pagination now stays page-sized even with historical duplicate rows, and legacy blank-space thread rows no longer appear twice in Default.
- Thread analysis state and pinned-thread truth now stay scoped correctly across spaces and repeat sync cycles, avoiding cross-space state drift.
- Memory labels now behave consistently across clients and views: creation/removal paths use canonical contracts and no longer report fake success on no-op failures.
- AI Now no longer black-screens on a single rich-reply renderer failure; rendering errors are isolated to the affected message.
- AI Now input reliability is improved: first-question composer clearing and resume-queue handling no longer leave stale or misflushed messages.
- Feed URL capture now falls back to rendered-page text for low-signal SPA shells (for example X), preserving real post content instead of shell markup.
- Data export no longer fails mid-run with `No active transaction for COMMIT` on busy apps.
- Library export now includes the source records and files users expect, not only graph rows.
- Browser-extension Distill now surfaces the real failing boundary instead of a bare `Failed to fetch`, making troubleshooting actionable.
- Graph Intelligence chat now works in remote/web mode again, no longer failing with misleading auth errors; it also handles more OpenAI-compatible response-shape edge cases safely.
- Graph Intelligence chat no longer drops mid-conversation when GitHub Copilot or Codex tokens expire; token refresh now keeps sessions alive.
- Graph controls text is now readable in light mode.
- Graph Memory Auto now preserves auto mode after OOM recovery with explicit floor/cap behavior and reset controls, instead of silently degrading to stale fixed limits.
- macOS non-admin CLI installation now completes as a usable terminal command by updating the active shell startup path and cleaning stale fallback PATH blocks when no longer needed.
