What's Changed
- docs: changelog and blog post for v0.8.3 by @nicoloboschi in #2290
- test(retain): serialize multichunk sub-batch coverage test on worker_tests xdist group by @nicoloboschi in #2272
- fix(docs): correct agrasandhany integration icon and ownership by @benfrank241 in #2294
- blog(agent-framework): Total Recall — persistent memory for Microsoft Agent Framework by @benfrank241 in #2293
- feat(aider): add Aider integration (session-bracketing memory wrapper) by @DK09876 in #2297
- fix(retain): make chunk_text idempotent so raised structured chunk size doesn't fail retains (#2301) by @nicoloboschi in #2308
- chore(deps): resolve high/medium/low Dependabot alerts by @dcbouius in #2303
- docs: drop removed 'opinion' fact type from MCP tool docstrings and quickstart by @r266-tech in #2302
- docs(monitoring): document worker operation metrics by @r266-tech in #2296
- fix(tests): eliminate test-api shard cross-test contamination (vchord cache, tenant schemas, maintenance routine TOCTOU) by @nicoloboschi in #2310
- perf(migrations): skippable extension reconcile + drop unused global vector index by @nicoloboschi in #2309
- fix(cache): prevent stale bank stats after concurrent invalidation by @zupengwang in #2315
- blog(openhands): OpenHands persistent memory via native MCP by @benfrank241 in #2316
- deps(security): bump langsmith floor to >=0.8.18 (GHSA-f4xh-w4cj-qxq8 HIGH) by @r266-tech in #2341
- chore(deps): bump dify-plugin to 0.9.1 to fix requests alert by @dcbouius in #2320
- docs(hermes): add standalone Hermes Desktop integration page + gallery card by @benfrank241 in #2351
- blog(hermes): Hindsight as one-click desktop memory provider by @benfrank241 in #2350
- fix(control-plane): make max upload size configurable (#2313) by @nicoloboschi in #2319
- docs(admin-cli): document run-db-migration --skip-extension-reconcile and --embedding-dimension by @r266-tech in #2327
- feat(reranker): detect Intel XPU for local cross-encoder acceleration by @r266-tech in #2328
- docs(models): sync anthropic default model to claude-haiku-4-5 alias by @r266-tech in #2326
- chore(deps): drop diskcache from crewai via instructor 1.15.3 by @dcbouius in #2325
- fix(release): build Linux CLI on ubuntu-22.04 (glibc 2.35) so binaries run on older distros by @r266-tech in #2330
- docs(integrations): drop removed 'opinion' fact type from recall_types/fact_types across SDK wrappers by @r266-tech in #2335
- feat(recall): configurable recency decay function (linear/exponential/none) by @nicoloboschi in #2318
- docs(python-client): drop removed 'opinion' fact type from recall()/arecall() docstrings by @r266-tech in #2323
- fix(claude-code): use realpath for directoryBankMap symlink resolution by @365diascollaboration-prog in #2324
- fix(stats): invalidate bank stats cache on unit/document deletes and observation clears by @r266-tech in #2337
- docs(api): correct ReflectResult.based_on key names (mental-models hyphen + add observation) by @r266-tech in #2338
- fix(mcp): omit reflect directives_applied alongside tool_trace/llm_trace by default by @r266-tech in #2342
- fix(anthropic): route strict structured output through forced tool_use instead of prompt-injection (#1002) by @eldar702 in #2339
- fix(config): validate disposition_* range on bank-config write so one malformed bank can't 500 the whole bank list (#2348) by @r266-tech in #2349
- [opencode] Add suport for HINDSIGHT_RETAIN_TAGS by @mdbenito in #2306
- fix(async-op): return 404 when bank doesn't exist instead of raw FK 500 by @cdbartholomew in #2352
- fix(recall): allow exact filtering of untagged/global observations (#2295) by @nicoloboschi in #2364
- feat(recall): prefer_observations — dedupe raw facts superseded by observations by @nicoloboschi in #2311
- fix(graph-maintenance): sort unit_ids to eliminate concurrent-insert deadlock by @cdbartholomew in #2353
- fix(http): reject negative limit/offset on list endpoints with 422 instead of raw Postgres 500 by @r266-tech in #2357
- feat: add Atlas Cloud as an OpenAI-compatible LLM provider by @lucaszhu-hue in #2362
- feat(tokens): propagate cached + thoughts tokens through return contexts by @cdbartholomew in #2356
- fix(gemini): avoid duplicate structured schema prompt by @r266-tech in #2277
- chore(entity-resolver): remove dead resolve_entity/_create_entity/link_unit_to_entity by @nicoloboschi in #2367
- test(graph-maintenance): reproduce concurrent-insert deadlock on the queue by @nicoloboschi in #2368
- chore(docs-skill): regenerate references for Atlas Cloud provider by @nicoloboschi in #2372
- fix(cli): pass u64 limit/offset to regenerated client by @nicoloboschi in #2370
- chore(embed): sync bundled env.example with repo-root .env.example by @nicoloboschi in #2373
- feat(llm): multi-LLM failover & round-robin via indexed config by @nicoloboschi in #2365
- fix(memory-defense): correct displayed pattern count by @Sanderhoff-alt in #2369
- Instrument recall trace so phase metrics account for total duration (#2361) by @nicoloboschi in #2371
- fix(worker): warn when worker_id unset inside a container (#2359) by @nicoloboschi in #2366
- blog: Persistent Memory for the Vercel AI SDK in Five Tools by @benfrank241 in #2374
- feat(github-copilot): add GitHub Copilot (VS Code) integration via MCP by @DK09876 in #2299
- fix(worker): warn for unstable standalone worker ids by @koriyoshi2041 in #2383
- fix(deps): raise hindsight-litellm LiteLLM floor by @r266-tech in #2382
- blog(retain): structuring chat logs for optimal ingestion by @dcbouius in #2375
- feat(windsurf): add Windsurf (Codeium) integration via MCP by @DK09876 in #2358
- feat(eve): add Eve agent-framework MCP connection helper by @benfrank241 in #2280
- test: eagerly import torch in conftest to fix test-api shard flake by @nicoloboschi in #2376
- fix(openai): propagate reasoning_tokens into TokenUsage for OpenAI-compatible providers by @r266-tech in #2378
- fix(hooks): keep uv lockfile frozen during lint by @Sanderhoff-alt in #2397
- fix(api): keep dry-run extract from creating banks by @Sanderhoff-alt in #2394
- fix(api): prevent PATCH bank from creating banks by @Sanderhoff-alt in #2391
- feat(config): let indexed multi-LLM members configure Vertex AI project/region by @cdbartholomew in #2384
- fix(release): bump marketplace version on claude-code release (#2386) by @nicoloboschi in #2398
- test(openai): fix tool-call mocks crashing reasoning-token accounting (#2378) by @nicoloboschi in #2400
- fix(llm-trace): keep provider token usage on parse/validation failures (#2387) by @nicoloboschi in #2396
- feat(config): multi-LLM members can configure litellmrouter config + Vertex SA key by @nicoloboschi in #2401
- refactor(llm): make LLMProvider constructor config-free by @nicoloboschi in #2405
- feat(mental-models): cron-scheduled refresh via the maintenance loop by @nicoloboschi in #2377
- Blog: Zapier persistent memory by @benfrank241 in #2408
- test(worker): cover retry-capped retain extraction failures by @koriyoshi2041 in #2418
- fix(control-plane): show pending uploaded documents (server-driven) by @nicoloboschi in #2420
- docs(mental-models): document scheduled refresh triggers by @r266-tech in #2421
- docs: add Epimetheus - pi community integration by @noctuid in #2414
- fix(retain): merge JSON arrays in append mode to preserve conversation-aware chunking by @qxxaa in #2412
- feat(recall): structured per-stage scores and two-level min_scores filtering by @nicoloboschi in #2422
- feat(devin-desktop): rename Windsurf→Devin Desktop + fix(continue) thread-safe adapter by @DK09876 in #2410
- fix(aider,openhands): close client on exit + OpenHands Docker MCP docs by @DK09876 in #2417
- fix(embed): find pythonw beside the installed API script on Windows by @r266-tech in #2411
- docs(recall): align min_scores score field names by @r266-tech in #2432
- fix(reflect): cap structured output retry budget by @koriyoshi2041 in #2433
- feat: add Requesty as an OpenAI-compatible provider by @Thibaultjaigu in #2399
- fix(cli): show filenames in operation list by @r266-tech in #2435
- Blog: Entity resolution in agent memory by @benfrank241 in #2424
- Fix(consolidation): populate search_vector on observation INSERT/UPDATE in consolidator by @qxxaa in #2425
- fix(migrations): honor configured vector extension before pgvector bootstrap by @r266-tech in #2426
- docs: fix operation image alt text by @koriyoshi2041 in #2436
- docs(api): drop removed 'opinion' fact_type from MemoryFact schema description by @r266-tech in #2439
- fix(retain): clarify fact type boundary for user rules by @koriyoshi2041 in #2440
- docs(api): correct stale memory-type taxonomy in published READMEs by @r266-tech in #2447
- fix(parsers): handle UTF-8 text files with ASCII prefix in markitdown by @nicoloboschi in #2456
- fix(config): thread groq/openai service_tier into constructed LLM providers by @r266-tech in #2438
- chore(repo): remove playwright debug artifacts by @Sanderhoff-alt in #2460
- refactor(extensions): centralize validator operation names by @Sanderhoff-alt in #2419
- chore(docs): sync hindsight docs skill references by @Sanderhoff-alt in #2461
- fix(consolidation): default missing dedup action to keep by @koriyoshi2041 in #2454
- fix(clients): thread recall min_scores through the maintained Python SDK wrapper by @r266-tech in #2446
- fix(langgraph): resolve tool bank IDs from config by @koriyoshi2041 in #2443
- fix(clients): thread recall min_scores through the maintained TypeScript SDK wrapper by @nicoloboschi in #2467
- fix(llm-trace): stash litellm tool-call usage so token cost survives arg-parse failures by @r266-tech in #2444
- fix(retain): preserve exception message in fact_extraction error summary by @nicoloboschi in #2468
- docs: document SDK version and MCP metadata helpers by @r266-tech in #2291
- fix(llm): wire default_headers into LiteLLM-backed providers (#2458) by @r266-tech in #2466
- feat(claude-code): Add recall tag filters to memory hook by @koriyoshi2041 in #2331
- fix(reflect): unwrap JSON answer envelopes by @xmh1011 in #2345
- feat(opencode): add env var overrides for retain and recall options by @ibousfiha in #2336
- fix(openclaw): apply configured defaults to dynamic banks by @devinkuhn in #2441
- fix(cursor-cli): parse Cursor 3.x role-nested agent transcripts by @bjornmp in #2465
- fix(hindsight-openclaw): skip synthetic tool_result user messages in sliceLastTurnsByUserBoundary by @kumaxs in #2307
- fix(llm): propagate per-scope LLM timeout + retry policy to the provider (#2452) by @nicoloboschi in #2470
- fix(llm): make per-operation temperature configurable (#2459) by @nicoloboschi in #2469
- Fix(cli): explore detail selection with table headers by @koriyoshi2041 in #2489
- fix(retain): honor configured LLM temperature in the batch fact-extraction path (#2469 follow-up) by @r266-tech in #2485
- chore(search): remove HINDSIGHT_API_LAZY_RERANKER flag (eager reranker init) by @nicoloboschi in #2478
- docs: document CODEX_HOME isolation for long-running Codex services by @nicoloboschi in #2496
- test: fix CI regressions (Vertex/litellmrouter construction, dedup config, trace recorder leak) by @nicoloboschi in #2491
- feat(stats): distributed bank_stats cache + ?refresh param + stats perf suite by @nicoloboschi in #2495
- Show full memory details in explore by @koriyoshi2041 in #2490
New Contributors
- @zupengwang made their first contribution in #2315
- @365diascollaboration-prog made their first contribution in #2324
- @lucaszhu-hue made their first contribution in #2362
- @noctuid made their first contribution in #2414
- @qxxaa made their first contribution in #2412
- @Thibaultjaigu made their first contribution in #2399
- @ibousfiha made their first contribution in #2336
- @devinkuhn made their first contribution in #2441
- @bjornmp made their first contribution in #2465
- @kumaxs made their first contribution in #2307
Full Changelog: v0.8.3...v0.8.4