Skip to content

v0.49.7

Choose a tag to compare

@github-actions github-actions released this 16 Oct 20:28
· 797 commits to master since this release

v0.49.7

This patch release reduces pauses during background work, makes image cleanup work across providers, and fixes conversation replay on OpenCode, Pi and Oh My Pi. There is no database migration.

Upgrading

  • No migration. context.db stays at schema 95 and store.db at schema 63. Restart OpenCode 1, OpenCode 2, Pi or Oh My Pi after updating.
  • Rust mode needs an updated ck-mc. Update Magic Context's Rust module executable (ck-mc) as well as the plugin to receive the Rust image-cleanup and raw-replay fixes. Updating the plugin alone does not update ck-mc.

Fixed

  • OpenCode no longer pauses for several seconds while Magic Context updates a compaction marker. The marker's database connection no longer takes on OpenCode's pending WAL checkpoint work. Marker updates still wait for their database write to succeed before being used.
  • Pi and Oh My Pi stay responsive while background memory tasks read old sessions. Historical scans and primer assembly now yield between bounded chunks instead of occupying the main thread for the whole scan. Memory-candidate searches also run asynchronously.
  • Background memory mapping finishes its work instead of timing out. Batches now fit within their step budget and keep every mapping they found even if a batch stops early, so the dreamer no longer reports a slow model when the batch was simply too large. This applies on every host.
  • Old processed images are cleaned up on every provider, not just Anthropic. This includes tool-result images and OpenCode 2's native media parts. Recent images remain protected, including images without their own message tag; an image whose position cannot be established is kept. Saved cleanup decisions replay consistently after a restart or a provider change (issue 699).
  • Rust-mode image cleanup no longer leaves mismatched thinking or image parts behind. Some providers sign a model's thinking blocks and reject requests if the surrounding history becomes inconsistent. Cleanup now handles those blocks, image placeholders and tool-result images together and replays saved decisions consistently. Rust mode follows the same recent-image protection rule as OpenCode and Pi (issue 699).
  • Sticky notes no longer move relative to saved search hints on later turns. First delivery and subsequent replays use the same position, avoiding an unnecessary prompt-cache change. A note that must wait for a safe history rewrite is not treated as delivered merely because a rewrite was allowed.
  • A retry after a partially saved reduction keeps the reductions that were saved. Pi and OpenCode reconcile the last successfully sent request with committed drop decisions instead of bringing already-dropped content back into the retry. A retry is refused if those changes would invalidate retained signed thinking. Split tool results remain bound to the correct tool call, and ambiguous older tool identities are left untouched. Pi also saves stale context-tool cleanup before changing the outgoing history.
  • Oh My Pi correctly rewrites native assistant text after it is dropped or compressed. Replies represented as output_text now reflect the managed history instead of retaining their original text. This continues the compatibility fixes prompted by the reports in issues 686 and 698; thanks @Qiiks.
  • Pi stops repeatedly retrying compaction markers whose synthetic anchor has been absorbed into a real user message. Those unusable markers are diagnosed and retired; markers that can still be recovered remain eligible for retry (issue 693).
  • Search results can be expanded even when the host no longer exposes the original message. When retained search-index text is available, ctx_expand returns that text and identifies it as an archive excerpt rather than claiming to return the complete original conversation. This also covers Pi results from history that is no longer on the active branch.
  • Rust-mode replay stays stable when message tags arrive late. Content already sent during streaming is not rewritten just because a later pass can assign it a tag. When previously sent source content changes or disappears, recovery is bounded instead of repeatedly refusing the same history, and replay evidence no longer stores another full copy of large tool outputs.
  • Slow database writes are easier to diagnose. Writes that wait for or hold the context database writer for more than 100 ms are attributed in the logs. Pi prepares saved-request metadata before acquiring the writer, reducing the time other sessions have to wait.