What's Changed
- docs(skill): sync the docs skill's openapi.json to v0.10.0 by @nicoloboschi in #4362
- feat(api): attachment filenames for store-owned banks by @nicoloboschi in #4360
- fix(attachments): never reclaim attachments for a store-owned bank by @nicoloboschi in #4363
- fix(retain): guard concise prompt examples by @koriyoshi2041 in #4284
- fix(memory-defense): redact Hindsight Cloud API keys by @cdbartholomew in #4276
- fix(oauth): do not fail the store lock when the store cannot be written by @LoneExile in #4286
- blog: Onboarding an Engineer vs. Onboarding an Agent by @benfrank241 in #4100
- fix(coding-agents): take Codex user turns from UserMessage events by @nicoloboschi in #4377
- fix(reranker): release the MLX buffer cache after each jina-mlx batch by @w-seok in #4305
- fix(coding-agents): read transcripts whole so append survives past 32MB by @nicoloboschi in #4388
- chore(skills): add ship-it skill by @nicoloboschi in #4390
- fix(api): report
deleted_countfrom the bulk memories delete by @1jeffchristensen in #4312 - fix(api): keep a converted file's reference on a store-owned bank's document by @nicoloboschi in #4367
- fix(reflect): honour configured recall budgets and bound tool token asks (#4239) by @nicoloboschi in #4290
- fix(storage): delete a bank's stored files with it, and scope file keys to the tenant by @nicoloboschi in #4376
- fix(embed): pin the probe's decode instead of taking the locale's by @L4XB in #4347
- fix(memory-defense): avoid redacting technical numbers as credit cards by @kyletser in #4333
- feat(python-client): add task-local retain suspension by @roli-lpci in #4285
- fix(api): fail fast when the listen port is unavailable, before engine init by @nicoloboschi in #4386
- fix(api): async-submit RetainContext parity — document_id and attachments (#4373) by @nicoloboschi in #4394
- feat: configurable default trigger for new knowledge pages by @nicoloboschi in #4393
- fix(engine): serialize same-bank cleanup before document locks by @r266-tech in #4339
- feat(control-plane): lighter recall and reflect option forms, with help on every option by @nicoloboschi in #4397
- feat(admin): hindsight-admin rename-bank — change a bank's id in place by @nicoloboschi in #4392
- fix(banks): cap new bank ids at 192 bytes and refuse control characters by @nicoloboschi in #4395
- fix(coding-agents): capture background git stderr by @kyletser in #4334
- chore(coding-agents): track stable OpenCode 2 packages by @oliver-mee in #4351
- test(client): exempt suspend_retains from the async-twin contract by @nicoloboschi in #4402
- docs(embeddings): the input cap is counted in Hindsight's tokens, not the provider's by @nicoloboschi in #4399
- fix(coding-agents): preserve distinct non-ASCII document titles by @Shy7777 in #4330
- fix(coding-agents): drop the hardcoded 20s cap on the automatic reflect by @nicoloboschi in #4401
- fix(extensions): drop per-request tenant state from the shared ExtensionContext by @nicoloboschi in #4400
- fix(coding-agents): resolve the auto-update version check through npm by @Sanderhoff-alt in #4385
- fix(recall): search pg_search queries as pruned word terms, not the raw sentence (#4313) by @nicoloboschi in #4403
- fix(recall): anchor the default temporal window on UTC, not the server clock by @ebarkhordar in #4356
- fix(engine): lock the observation sweep's rows in id order so re-ingest cannot deadlock a delete by @nicoloboschi in #4407
- test(recall): give the hub-traversal test random-prefixed unit ids by @nicoloboschi in #4405
- docs(claude): refine architecture inventory, test setup, and providers by @Sanderhoff-alt in #4383
- fix(retain): state the language rule as a mapping, not a detection step; add a retain-language eval by @nicoloboschi in #4410
- fix(coding-agents): tell dsh users to start new sessions after install by @nicoloboschi in #4413
- fix(control-plane): serve the UI when bound to a loopback address by @snevesgraca-nwmo in #4379
- fix(engine): close the remaining delete/re-ingest deadlocks from #4251 by @nicoloboschi in #4414
- fix(recall): cache and reuse observation source memory IDs across pipeline by @Sanderhoff-alt in #4370
- fix(mental-models): keep a page's current state when a refresh brings older events by @nicoloboschi in #4427
- fix(retain): keep non-English facts in their own script by @nicoloboschi in #4432
- fix(extensions): give the operation validator the engine's ExtensionContext by @nicoloboschi in #4433
- fix(coding-agents): pre-create host-owned harness diagnostics by @heyallencao in #4430
- feat(coding-agents): autoInject — choose reflect, pages or recall for the first-prompt injection by @nicoloboschi in #4415
- feat(system-evals): replace the in-repo LoComo/LongMemEval runners with AMB by @nicoloboschi in #4429
- fix(coding-agents): deliver the companion skill on the plugin-manager route by @nicoloboschi in #4439
- fix(codex): preserve rollout event timestamps by @carlosrve in #4425
- fix(openclaw): read the transcript session_end does not carry by @L4XB in #4348
- fix(openclaw): expose knowledge tool payloads as details for Code Mode by @L4XB in #4310
- fix(codex): support current custom tool calls by @carlosrve in #4426
- blog: Stop Growing Your System Prompt by @benfrank241 in #4099
- feat(transfer): unified bank transfer API (export/import) with a documented scope by @nicoloboschi in #4431
- fix(anthropic): stop the uncapped-caller default truncating long output (#4437) by @nicoloboschi in #4440
- blog: What It Takes to Put a Screenshot in an Agent's Memory by @benfrank241 in #4454
- test(multilingual): give the language-preservation retries a budget that matches the model by @nicoloboschi in #4447
- feat(openclaw): per-agent bank mapping (agentBankMap) by @nicoloboschi in #4446
- fix(client): cancel capacity-retry backoff on abort by @Tosko4 in #4448
- fix(openclaw): forward recall deadlines to the client transport by @Tosko4 in #4449
- fix(openclaw): invalidate recall work across service generations by @Tosko4 in #4450
- feat(transfer): clone a bank in one API call by @nicoloboschi in #4444
- fix(api): 404 recall for a bank that was never created (#4442) by @nicoloboschi in #4465
- fix(api): 0 disables the recall query token cap by @nicoloboschi in #4475
- fix(migrations): scope the vector-index lookup to one relation by @nicoloboschi in #4472
- fix(transfer): build the bank archive off the event loop and outside the read transaction by @nicoloboschi in #4474
- feat(coding-agents): per-page knowledge-page config (pages) by @nicoloboschi in #4467
- ci(core-llm): run the quality job on gemini-2.5-flash by @nicoloboschi in #4473
- fix(api): repair two crossed merges on main by @nicoloboschi in #4480
- feat(attachments): an attachment belongs to its document by @nicoloboschi in #4471
- fix(transfer): import and clone into a bank whose memories live in the memories store by @nicoloboschi in #4479
- feat(api): separate LLM config for the automatic mental-model refresh (#4463) by @nicoloboschi in #4477
- fix(embed): launch the base pythonw for uv venv trampolines on Windows (#4466) by @nicoloboschi in #4478
- fix(reflect): spell out what a disposition level means in the tools prompt by @nicoloboschi in #4435
- perf(banks): stop aggregating all of memory_units to list banks by @nicoloboschi in #4486
- blog: See the Exact Prompt Before You Spend a Token by @benfrank241 in #4482
- fix(api): refuse recall before answering 404 for a missing bank by @nicoloboschi in #4487
- test(transfer): read an archived fact's document through the memories store by @nicoloboschi in #4484
- fix(attachments): keep a store-owned bank's attachments and uploaded originals in step with its documents by @nicoloboschi in #4504
- feat(hermes): bring the Hermes Agent memory plugin into this repo by @nicoloboschi in #4505
- fix(local-models): stop using Apple Silicon MPS entirely by @nicoloboschi in #4508
- feat(coding-agents): improve how often the agent reads memory by @nicoloboschi in #4510
- feat(control-plane): advanced knowledge-page search dialog by @nicoloboschi in #4511
- fix(reflect): reject a blank query instead of burning 8 LLM calls (#4416) by @nicoloboschi in #4507
- fix(knowledge): normalize knowledge-page search scores onto 0..1 by @nicoloboschi in #4512
- fix(retain): opt-in flag to let a fact leave when/where/who/why unset (#4457) by @nicoloboschi in #4506
- feat(api): server-side time filtering and sorting on GET /memories/list and GET /documents by @nicoloboschi in #4509
- fix(retain): opt-in server flag to let a fact leave when/where/who/why unset (#4457) by @nicoloboschi in #4513
- feat(control-plane): filter the documents list by time, with presets and a custom range by @nicoloboschi in #4515
- chore(deps): bump soupsieve to 2.9.2 in root uv.lock by @cdbartholomew in #4517
- fix(retain): retry the FK violation from the delete race instead of dropping the retain (#4453) by @nicoloboschi in #4516
- fix(packaging): install mlx only on Apple Silicon by @nicoloboschi in #4520
- feat(llm): Cursor's agent CLI as an LLM provider (#4501) by @nicoloboschi in #4519
- feat(reflect): make the search_observations budget and its entities configurable (#4483) by @nicoloboschi in #4521
- blog: What Hindsight Learned This Summer by @benfrank241 in #4518
- fix(storage): object-store backends must return native bytes from retrieve() by @cdbartholomew in #4524
- chore(deps): bump anyio to 4.15.1 in hindsight-integration-tests/uv.lock by @cdbartholomew in #4539
- chore(deps): bump anyio to 4.14.2 in hindsight-integrations/composio/uv.lock by @cdbartholomew in #4540
- chore(deps): bump anyio to 4.14.2 in hindsight-integrations/haystack/uv.lock by @cdbartholomew in #4541
- chore(deps): bump anyio to 4.14.2 in hindsight-integrations/superagent/uv.lock by @cdbartholomew in #4542
- chore(deps): bump anyio to 4.15.1 in hindsight-integrations/claude-agent-sdk/uv.lock by @cdbartholomew in #4543
- chore(deps): bump anyio to 4.14.2 in hindsight-integrations/google-adk/uv.lock by @cdbartholomew in #4544
- chore(deps): bump anyio to 4.14.2 in hindsight-integrations/litellm/uv.lock by @cdbartholomew in #4546
- chore(deps): bump anyio to 4.14.2 in hindsight-integrations/pydantic-ai/uv.lock by @cdbartholomew in #4547
- chore(deps): bump anyio to 4.14.2 in hindsight-integrations/crewai/uv.lock by @cdbartholomew in #4548
- chore(deps): bump anyio to 4.14.2 in hindsight-integrations/langgraph/uv.lock by @cdbartholomew in #4550
- chore(deps): bump anyio to 4.14.2 in hindsight-integrations/pipecat/uv.lock by @cdbartholomew in #4552
- chore(deps): bump anyio to 4.14.2 in hindsight-integrations/openai-agents/uv.lock by @cdbartholomew in #4553
- chore(deps): bump anyio to 4.14.2 in hindsight-integrations/llamaindex/uv.lock by @cdbartholomew in #4554
- chore(deps): bump anyio to 4.15.1 in hindsight-integrations/ag2/uv.lock by @cdbartholomew in #4555
- chore(deps): bump anyio to 4.14.2 in uv.lock by @cdbartholomew in #4538
- chore(deps): bump anyio to 4.14.2 in hindsight-integrations/dify/uv.lock by @cdbartholomew in #4551
- fix(admin): move a renamed bank's stored files to its new prefix (#4502) by @nicoloboschi in #4573
- feat(llm): inject x-opencode-session for any provider targeting opencode.ai by @davidneyra2804 in #4489
- fix(llm): read a numeric retry_after from the rate-limit body by @i-Hun in #4481
- perf(retain): hoist prompt and schema generation outside chunk loop by @Sanderhoff-alt in #4382
- fix(entities): apply the word-level agreement check to in-batch clustering too by @ebarkhordar in #4441
- fix(recall): order the temporal arm by temporal_score before fusion by @rocke2020 in #4494
- feat(reranker): TypeSafe provider (Jev) that can prune irrelevant candidates by @nicoloboschi in #4522
- fix(embed): stop the HTTP probe clearing its caller's event loop, and make the Hermes gate test our plugin by @nicoloboschi in #4575
- fix(http): honour proxy env vars on outbound aiohttp calls by @nicoloboschi in #4574
- chore(deps): bump anyio to 4.14.2 in hindsight-integrations/strands/uv.lock by @cdbartholomew in #4545
- chore(deps): bump anyio to 4.14.2 in hindsight-integrations/agno/uv.lock by @cdbartholomew in #4549
New Contributors
- @LoneExile made their first contribution in #4286
- @w-seok made their first contribution in #4305
- @1jeffchristensen made their first contribution in #4312
- @L4XB made their first contribution in #4347
- @roli-lpci made their first contribution in #4285
- @oliver-mee made their first contribution in #4351
- @Shy7777 made their first contribution in #4330
- @snevesgraca-nwmo made their first contribution in #4379
- @heyallencao made their first contribution in #4430
- @carlosrve made their first contribution in #4425
- @davidneyra2804 made their first contribution in #4489
- @i-Hun made their first contribution in #4481
- @rocke2020 made their first contribution in #4494
Full Changelog: v0.10.0...v0.10.1