Skip to content

v0.49.1

Choose a tag to compare

@github-actions github-actions released this 14 Oct 18:21
· 963 commits to master since this release

v0.49.1

This patch release fixes a memory leak in long Pi sessions, Oh My Pi turns refused after a late end notification, Pi exiting when Esc cancels a long tool call, and several avoidable prompt-cache rewrites after a flush or a busy database. It also makes the ONNX Runtime telemetry opt-out effective for local embeddings and adds a Restore action for dismissed user memories in the dashboard. 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.
  • 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.
  • models.window_overlay_path is deprecated and ignored. Fusiform no longer publishes window-overlay data, so removing the setting changes nothing in practice. Configs that still set it load normally with a deprecation warning; remove the key.

New

  • Dashboard: dismissed user memories can be restored to the active set with a Restore button, and running sessions pick up the restored entry (#670, thanks @ICEY16360). c936fa7567, 1d609401eb.

Changed

  • OpenCode 1 and 2 (including Rust mode), Pi and Oh My Pi: ctx_reduce replies with a short count, such as "3 tags stamped.", instead of listing each queued or held tag. ba021fdcc9, a630c7cb62.
  • OpenCode 1 and 2, Pi and Oh My Pi: after a busy database forced Magic Context to serve a saved request, that request is not resent after a restart until a normal pass has rebuilt it. If the database is still busy on the first turn after the restart, that turn is refused instead of sending an out-of-date request; the next turn with the database free rebuilds normally. Windows cannot record this across a restart, so there a request saved during busy-database recovery is never resent after a restart. eadcb52a5a, cc47f005bb.

Fixed

Oh My Pi

  • Turns are no longer refused when the previous run's end notification arrives after the context was published or in the middle of a run, including goal continuations and provider fallback retries (#673, #674, thanks @Qiiks). 1dce69accf, 4d7ecc0f61, 06f89f99ea.
  • The first chat-completions request in headless mode is no longer refused because of the system instruction Oh My Pi adds itself (#673, thanks @Qiiks). 7a21d17ffd.

Pi

  • Pressing Esc during a long tool call cancels the call instead of exiting Pi (#680, thanks @luelueluez7Z). 11c4f12401.
  • pi.subagent_extensions passes npm:, git:, github:, http:, https:, ssh: and builtin: sources through to Pi instead of resolving them as relative paths; ~ and file:// entries are expanded (#677, thanks @Shrub24). 7cd7bc2c02.
  • Pi and Oh My Pi: an old system reminder that was already removed no longer reappears during Claude thinking tool calls and disappears again on the next user message, which rewrote the prompt cache each time. caa7db3415.

OpenCode 2

  • Tag notation the model copied into its own replies is no longer sent back to it on later requests; the stored reply is unchanged (#671, thanks @CaptKitCarson). 7eca5261d4.

OpenCode 1 and 2 in Rust mode

  • /ctx-flush on a session that has no summarized history yet now takes effect instead of staying queued. 320ab695ae.

Prompt cache

  • OpenCode 1 and 2, Pi and Oh My Pi: Claude thinking signatures are no longer counted as text, which could trigger a false 95% context emergency and an unneeded rebuild. 9b347d26d1.
  • OpenCode 1 and 2: after a rebuild, the next request trims history at the same point the rebuilt request used, instead of cutting differently and rewriting the cache again. 9b347d26d1, baaebec0f3.
  • OpenCode 1 and 2 (including Rust mode): the date in the system prompt's environment block no longer rewrites the cache at midnight; it updates with the next prompt rebuild, and only for the request that is rebuilding. 9b347d26d1, e1f75688af.
  • OpenCode 1 and 2: an image strip that fails to save is no longer applied, so the image is not removed on one pass and sent again on the next. 6320a8b418.
  • OpenCode 1 and 2 (including Rust mode), Pi and Oh My Pi: a system-prompt change during a Claude thinking turn no longer causes a second rebuild on the next wake. fdd2c3674f, fd258448fd.
  • OpenCode 1 and 2, Pi and Oh My Pi: after a busy database forces a saved request to be served, later passes no longer add tags to messages already sent, avoiding a cache rewrite. eadcb52a5a, cc47f005bb, 7bb0871a73.

Local embeddings

  • OpenCode 1 and 2, Pi and Oh My Pi: the ONNX Runtime telemetry opt-out now takes effect for local embeddings under Bun and Node, including compiled Bun hosts. On Windows, ONNX Runtime uses the operating system's event tracing instead, and a one-time log line explains this (#672, thanks @botbeech). ecb17b4b23, a51d353793.

Pi memory

  • Pi and Oh My Pi: a long session no longer keeps every completed context pass in memory. Each pass's ownership check held on to the previous pass and its full message history, so memory grew with every turn until the session was cleared, reaching several gigabytes in long native Pi sessions. Completed passes are now released after each turn (#681, thanks @chpock). d42b7c801d.

Security

  • Smart-note file conditions refuse symbolic links whose target does not exist, rather than evaluating a path that could later point elsewhere. 5950150519.