Skip to content

v0.49.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 04:45
· 1076 commits to master since this release

v0.49.0

This release stops repeated prompt-cache rewrites during Claude thinking and tool loops, reduces delays in long sessions, and addresses Oh My Pi turns blocked by late context notifications or sending history without context preparation. It also corrects historian settings and reporting. There is no database migration.

Upgrading

  • No migration. context.db stays at schema 95. Restart OpenCode 1, OpenCode 2, Pi or Oh My Pi after updating.
  • OpenCode 2 needs an explicit plugin update. Use /plugins and ctrl+u, or opencode plugin update; refreshing the plugin list does not install updates. Details.
  • Rust transform mode: update ck-mc too, then restart the host and module.
  • Dashboard changes require an updated dashboard build. The desktop app has its own releases.
  • No new configuration keys or changed defaults. Existing historian model, variant, temperature, timeout and output-limit settings remain in use.

New

  • OpenCode 1 and 2, Pi and Oh My Pi: ctx_search uses Synapse's ranking service to reorder results for natural-language queries when available. Short symbol or path lookups and automatic search hints keep the previous ranking; unavailable or failed reranking also falls back unchanged. Installs without Synapse keep exactly the previous results. a87b65cb07.

Changed

  • OpenCode 1 and 2, Pi and Oh My Pi: background-model temperature is sent only when model metadata explicitly supports it, using the cached models.dev catalogue when host metadata is silent; unknown support omits the parameter. cdd3dedf7f, 5a76f22fea, 7e90bdc95f.
  • OpenCode 1 and 2 in Rust mode: historian and dreamer transcripts request up to one day's retention where the model runner supports it; older runners keep their own lifetime policy. 6b780869c2.

Performance

  • Pi and Oh My Pi: faster turn preparation in long sessions, reusing previously checked message identities and tags instead of repeatedly scanning the full history. 873ee68257, 76ecddcf7b, edb6de0758, 4a88f90f6b.
  • OpenCode 1 and 2: fewer main-thread stalls while resolving summary boundaries and reading history after a restart. 1a34bc5316, 61fe94608d.
  • OpenCode 1 and 2, Pi and Oh My Pi: ctx_reduce checks only the requested tags, avoiding a full-session scan for each call. 1a34bc5316.
  • OpenCode 1 and 2 in Rust mode: faster context preparation in large sessions, with fewer repeated history scans and token counts while preserving the same model requests. 4f33ce6e55, 4604f276fb, 468a873aad.

Fixed

OpenCode 2

  • /btw reuses the latest prepared system prompt, history and tool definitions even after tool results without message IDs, preserving the new side question instead of using history from an earlier main request (#666). 7b3766c9c7.
  • On Windows, scheduled dreamer tasks run again. Session directories stored with forward slashes now match the plugin's backslash paths, so timer-started runs find their session; sessions from other folders are still kept out (#669). e3617d9049.
  • Configured historian temperature now reaches historian, editor and recompression requests when the selected model supports it. 96cd2dec6a.

OpenCode 1 and 2, Pi and Oh My Pi

  • Unfinished Claude thinking and tool loops no longer rewrite earlier history mid-turn. Queued cleanup, including /ctx-flush, waits and lands once in a single rebuild after the turn; when a rewrite cannot wait, the provider-signed thinking that depends on the old history is removed first (#665). f11f9737db, c49b1526bf.
  • The log names the real reason a turn's cleanup is held, once per turn, instead of reporting an unresolved session directory (#664). c49b1526bf.

Pi and Oh My Pi

  • Tag and history caches are refreshed correctly after session clears, message replacements or reuse of a deleted session ID, preventing stale message associations. 00a1d29944, f01bba51d8.
  • The historian recognizes newly tagged history after the first local tags are created, instead of continuing to read an empty cached view. 784bdd8ead.
  • Fallback message matching detects tag writes from older builds, including when another process writes the same session. c2a707dc99, 43f8057a2b.
  • Completed context passes keep their diagnostic decision rows even when the next pass starts more than 25 seconds later. 7ed16a4e87.

Oh My Pi

  • A replaced context pass no longer causes a false refusal of the newer prepared turn, including when the previous turn's end notification arrives late (#667). d226af895a, cda226f5a5, e420907676.
  • Unreadable input message lists produce a visible context refusal rather than letting an error escape the context hook (#667). d310f34c66.
  • Refusal diagnostics distinguish an ended turn from missing preparation and identify the last preparation stage, instead of incorrectly reporting a database write failure (#663). a1415d7fbf, f6a40f5700.
  • Stale, unprepared requests from recently replaced context passes are rejected, rather than accepted using the newer pass's preparation (#668). 2144ebb366, 850a28cbde, cf68110a93.
  • /dump on Oh My Pi 18.10.3 no longer runs context preparation or changes the live turn's preparation state (#668). 850a28cbde.
  • Ordinary provider sends avoid serializing the entire conversation when there are no rejected stale requests to check (#668). cf68110a93.

OpenCode 1 and 2 in Rust mode

  • Unfinished Anthropic thinking/tool loops keep the history preceding signed reasoning unchanged, including after prompt-cache expiry; a necessary history rewrite or context-limit recovery removes the signed reasoning first, and a request that still cannot fit is refused (#665). b554fea74c, 3c57193092, d2814a4209, 4c99df8733.
  • /ctx-wrapup uses the current historian model chain, variants, timeout and output cap, even when earlier context passes have failed. 7b31d27f31, 60bdfd333a.
  • Historian attempts honor each model's configured variant, including fallback models. fd26673701.
  • A still-running context transform reports that the engine is busy rather than immediately treating it as disconnected, and does not send unprepared history while that transform may still complete. cc91e31aca, 60bdfd333a.
  • Historian attempts can restart when their retained transcript has expired, rather than treating missing history as a model failure. 6b780869c2.
  • Cache diagnostics attribute the history rewrite when a saved recovery request is replaced by newly prepared context. 6309150a1a.

Dashboard and status

  • OpenCode 1 and 2 in Rust mode: historian runs appear again in the dashboard and /ctx-status, with model attempts, fallback relationships, errors, usage and published-output metrics recorded without blocking the run. bba149fca4.

Shared fixes

  • OpenCode 1 and 2, Pi and Oh My Pi: automatic search hints stay unchanged across search failures, retries and branch switches, avoiding late edits to messages already sent to the model. d4f5412c61, 6c162642ac, f906923e56.
  • OpenCode 1 and 2, Pi and Oh My Pi: a busy database while saving an automatic-search decision no longer refuses the turn; it serves without a hint and retries saving that decision later. 43ddbe1bec.
  • OpenCode 1 and 2: screenshot-heavy sessions can save larger recovery requests, avoiding repeated refusals caused by the previous snapshot-size limit. b0b8628bca.
  • OpenCode 1 and 2, Pi and Oh My Pi: concurrent log writers no longer rotate the same log twice and overwrite the previous log. 66873d6d04.