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