github can1357/oh-my-pi v15.7.2

3 hours ago

@oh-my-pi/pi-coding-agent

Added

  • Added providers.autoThinkingModel setting so users can choose the auto thinking classifier backend (online smol or local tiny-memory model)
  • Added an auto thinking level that classifies each real user turn and resolves to a concrete low-through-xhigh effort, with online smol classification by default and an opt-in local on-device classifier.

Changed

  • Updated the interactive thinking selectors in model/model-role pickers and ACP thinking options to include auto as a selectable level
  • Updated footer and status-line rendering to show auto while auto-thinking is being resolved and auto → <level> once it resolves
  • Changed the local tiny-model device default to CPU on every platform; explicit providers.tinyModelDevice / PI_TINY_DEVICE values still opt into accelerated ONNX providers.

Fixed

  • Prevented auto-thinking classification from running on non-user synthetic turns and non-reasoning models, keeping the session on its provisional concrete effort
  • Added a bounded auto-thinking classification path that falls back to the provisional effort on failures/timeouts so prompts continue without interruption
  • Bypassed auto classifier for ultrathink prompts and resolved directly to the highest supported auto effort
  • Fixed the JavaScript eval kernel crashing the whole process with a segfault (SIGTRAP, getImportedModule on a null record) when imported code reached a local module whose relative-import graph contains a cycle — e.g. await import("…/edit/streaming.ts"), or any workspace path with cyclic re-exports. The LocalModuleLoader linked and evaluated each local module individually inside the recursive vm.SourceTextModule linker callback, which re-entered Bun's node:vm module linker mid-instantiation and detonated JSC on the first cycle. The loader now constructs the entire local module graph first and drives a single link() + evaluate() from the graph root, so cyclic graphs instantiate in one pass; external (node_modules) modules stay eagerly loaded since they carry no imports and cannot form a cycle.
  • Fixed the streaming edit preview rendering a blank box for hashline edits whose payload sits on the trailing in-flight line (the common single-op replace/insert case). The preview path trimmed that still-typing line before diffing, so a single-payload op collapsed to a "No changes" result — shown as an empty box — for almost the entire stream. Hashline previews now feed the raw in-flight text through applyPartialTo, whose streaming-tolerant parser drops a payload-less trailing op and projects a partially-typed payload line as it grows, so the diff appears and fills in live. Transient errors from the actively-typed trailing section are also suppressed while streaming (regardless of section count) so a mid-typed op can't wipe an already-good preview frame; real errors still surface once args are complete.

@oh-my-pi/pi-mnemosyne

Fixed

  • Fixed Windows startup crashes by keeping fastembed's older ONNX Runtime binding lazy until local embeddings are used.
  • Fixed a segfault at startup from eagerly loading fastembed: importing the embeddings module pulled in fastembed, which eagerly loads the onnxruntime-node native addon. The import is now deferred until a local fastembed model is actually initialized, so API-model, disabled-embeddings, and test runtimes never load the native addon.

What's Changed

Full Changelog: v15.7.1...v15.7.2

Don't miss a new oh-my-pi release

NewReleases is sending notifications on new releases.