diff --git a/hindsight-docs/blog/2026-04-22-version-0-5-4.md b/hindsight-docs/blog/2026-04-22-version-0-5-4.md new file mode 100644 index 0000000000..2809bb1b8f --- /dev/null +++ b/hindsight-docs/blog/2026-04-22-version-0-5-4.md @@ -0,0 +1,59 @@ +--- +title: "What's new in Hindsight 0.5.4" +description: New features and improvements in Hindsight 0.5.4 +authors: [nicoloboschi] +date: 2026-04-22 +hide_table_of_contents: true +--- + +Hindsight 0.5.4 makes delta mental model refreshes dramatically faster and more accurate, hardens embedded mode with daemon crash recovery, and includes a wave of reflect and retain reliability fixes from the community. + + + +- [**Smarter Delta Refreshes**](#smarter-delta-refreshes): Delta mode now only recalls new memories, producing faster and more focused updates. +- [**Embedded Daemon Recovery**](#embedded-daemon-recovery): Liveness checks auto-restart crashed daemons. +- [**Reflect Reliability**](#reflect-reliability): Directive leak fix, mission identity framing, and soft-fail on startup. +- [**Retain & Worker Fixes**](#retain--worker-fixes): Duplicate memory prevention, document timestamp preservation, and worker schema scanning. + +## Smarter Delta Refreshes + +Delta mental model refreshes previously ran a full recall across every memory in the bank — identical to a full refresh — then asked a second LLM to diff the result against the existing document. This was slow, expensive, and caused content duplication when the LLM was overwhelmed by hundreds of observations. + +In 0.5.4, delta mode scopes the agentic recall loop to memories created or updated since `last_refreshed_at`. The existing document already captures prior knowledge; the reflect agent only retrieves what's genuinely new. The delta prompt has been rewritten to integrate new facts into the existing structure — merging overlapping topics, preserving concrete examples, and avoiding the wholesale section replacements that caused bloat. + +The reflect agent also receives context about the mental model's name and topic during refresh, helping it stay on-topic and discard tangential observations that retrieval may return. + +The result: delta refreshes that are cheaper (fewer recall queries, smaller LLM context), faster (skip the delta LLM call entirely when nothing changed), and produce cleaner documents. + +## Embedded Daemon Recovery + +The embedded mode daemon (`hindsight-all`, `hindsight-embed`) now includes a liveness check that detects when the background process has crashed or become unresponsive. On detection, the daemon is automatically restarted with the same configuration. The idle timeout is also disabled by default, so embedded instances stay alive between requests without manual keepalive. + +## Reflect Reliability + +Three fixes improve reflect quality and operational robustness: + +- **Directive leak prevention.** On empty banks with no memories, directive content could leak into the reflect answer text. Fixed — directives now stay in the system prompt where they belong. +- **Mission identity framing.** The `reflect_mission` bank setting now correctly shapes the agent's identity in the prompt builder, so agents with custom personalities actually use them. +- **Soft-fail on startup.** If the LLM provider is unreachable at startup, the server now logs a warning and continues instead of crashing. This prevents cascading restarts when a provider has a brief outage. + +## Retain & Worker Fixes + +- **Duplicate memory prevention.** Fixed chunk index scrambling during concurrent document upserts that could create duplicate memory units. +- **Document timestamp preservation.** The `created_at` timestamp is now preserved across document upserts instead of being reset. +- **Non-Latin text in prompts.** LLM prompts now use `ensure_ascii=False` so Chinese, Japanese, Korean, and other non-Latin text is sent correctly. +- **Worker schema scanning.** Workers now verify schemas are active before claiming tasks, preventing work on decommissioned tenants. +- **DeferOperation passthrough.** Extensions can now throw `DeferOperation` through `MemoryEngine.execute_task` for proper requeue handling. +- **Configurable embedding batch size.** OpenAI-compatible embedding providers support a configurable batch size for better throughput on large ingests. +- **Alembic head merge.** Divergent migration heads from v0.5.3 are merged so upgrades work cleanly. + +## Feedback and Community + +Hindsight 0.5.4 is a drop-in replacement for 0.5.3 with no breaking changes to the core API. + +Share your feedback: + +- [GitHub Discussions](https://github.com/vectorize-io/hindsight/discussions) +- [GitHub Issues](https://github.com/vectorize-io/hindsight/issues) + +For detailed changes, see the [full changelog](/changelog). diff --git a/hindsight-docs/src/pages/changelog/index.md b/hindsight-docs/src/pages/changelog/index.md index 8c0808fdaa..cf54c51e95 100644 --- a/hindsight-docs/src/pages/changelog/index.md +++ b/hindsight-docs/src/pages/changelog/index.md @@ -6,6 +6,34 @@ import PageHero from '@site/src/components/PageHero'; +## [0.5.4](https://github.com/vectorize-io/hindsight/releases/tag/v0.5.4) + +**Features** + +- Delta mental model refresh now scopes recall to memories created since the last refresh, making updates faster and more accurate.·@nicoloboschi@nicoloboschi·e90cfa4a +- OpenAI-compatible embedding providers now support configurable batch sizes for better throughput.·@r266-tech@r266-tech·30700de6 +- Embedded daemon now includes a liveness check that auto-recovers from crashes.·@nicoloboschi@nicoloboschi·59f9a2bf +- Disable daemon idle timeout by default so embedded instances stay alive between requests.·@nicoloboschi@nicoloboschi·f5dfe59b +- Add `{user_id}` template variable for retainTags in the Claude Code integration.·@soichisumi@soichisumi·9181c9a2 +- New `decommission-workers` and `worker-status` admin CLI commands for managing worker fleets.·@nicoloboschi@nicoloboschi·c8b898bd + +**Bug Fixes** + +- Fix duplicate memory units caused by chunk index scrambling during concurrent upserts.·@nicoloboschi@nicoloboschi·511ca723 +- Prevent directive content from leaking into reflect answers on empty banks.·@nicoloboschi@nicoloboschi·3d877b05 +- Honor the reflect_mission identity framing in the prompt builder so agent personality works correctly.·@nicoloboschi@nicoloboschi·a3b0d265 +- Allow reflect-specific LLM configuration when the default LLM provider is disabled.·@zwcf5200@zwcf5200·afd00c03 +- Preserve document `created_at` timestamp across upsert and add UI edit flow for documents.·@nicoloboschi@nicoloboschi·10785666 +- Fix `ensure_ascii=False` in json.dumps for LLM prompts so non-Latin text is preserved.·@harryplusplus@harryplusplus·d05b49a2 +- Route `update_bank` through the config resolver with generic config_updates.·@nicoloboschi@nicoloboschi·abbd3619 +- Workers now scan for active schemas before claiming tasks, preventing work on decommissioned tenants.·@cdbartholomew@cdbartholomew·7126bf8a +- Pass DeferOperation through MemoryEngine.execute_task so extensions can requeue work.·@cdbartholomew@cdbartholomew·858f0b3a +- Downgrade LLM verify_connection failure to a warning instead of crashing on startup.·@nicoloboschi@nicoloboschi·9901aa1e +- Fix `items_count` in list_operations response to populate from result_metadata.·@nicoloboschi@nicoloboschi·41710ba1 +- Align AI SDK ReflectBasedOn types with the OpenAPI spec.·@nicoloboschi@nicoloboschi·3d6b3805 +- Fix database migration path by merging divergent Alembic heads for v0.5.3.·@grimmjoww@grimmjoww·487e2a5e +- Lower OpenCode retainEveryNTurns default from 10 to 3 for more frequent memory saves.·@DK09876@DK09876·902704df + ## [0.5.3](https://github.com/vectorize-io/hindsight/releases/tag/v0.5.3) **Features**