github can1357/oh-my-pi v18.0.8

4 hours ago

@oh-my-pi/pi-ai

Added

  • Added Z.AI GLM Coding Plan usage tracking: credit-based CREDIT_LIMIT windows (5h + weekly) now surface in omp usage and the status line with the plan tier (plan: lite/pro/max).

Fixed

  • Fixed Amazon Bedrock requests to OpenAI-schema models (the gpt-5.x SKUs) failing with HTTP 400 unknown_parameter: 'thinking' when reasoning was enabled, by sending reasoning.effort instead of Anthropic's thinking budget block for models the catalog marks as effort-controlled.
  • Fixed Cursor replay rejecting sessions with orphaned tool results while preserving their output as assistant context.

@oh-my-pi/pi-catalog

Fixed

  • Fixed the thinking control mode for OpenAI models served over Bedrock Converse (global.openai.gpt-5.6-luna, -sol, -terra), which are now classified as effort rather than budget so requests use OpenAI's reasoning schema.
  • Fixed LiteLLM discovery leaking a colliding bundled model's provider-specific transport onto custom endpoints: a discovered alias (e.g. kimi-k3) matching a bundled Fireworks model no longer inherits that model's wire-id transform, which had caused requests to POST a model id the endpoint never advertised and return HTTP 400 (#9938).

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

Added

  • Transcript usage rows now show the total prompt-to-yield time (Δ + clock, including tool calls) after the turn timestamp, opt-in via display.showTurnTime (off by default).
  • omp usage now shows Z.AI GLM Coding Plan credit quotas (5h + weekly) with the subscribed plan tier.
  • The usage status line now labels untiered quota windows with the report's plan tier, surfacing Z.AI Coding Plan (pro) and Codex plan names next to the 5h/7d percentages.

Fixed

  • Fixed corrupt session headers silently overwriting recoverable transcripts during resume (#9915).
  • Fixed a startup race that left a new session with almost no tools and an empty skill inventory. An early reconcile could commit a small live tool set as the permanent enabled set. The enabled set is now seeded from the construction-time tool slate, and reconcileCodeMode samples it inside the registry mutation lock.
  • Fixed snapcompact compaction frames larger than the persistence limit being truncated into invalid image base64 on session resume, which made the provider reject every subsequent request with HTTP 400; already-corrupted archives now resume from their retained source text instead (#9901).
  • Fixed prompts hanging when a successful automatic retry ended through an early terminal path such as yield.
  • Fixed hub send await:true blocking for the full IRC timeout when the awaited agent finished without replying; the send now settles as soon as the peer stops (#9913).
  • Fixed workspace symbol searches reporting success when every configured language server failed; partial failures now remain visible alongside successful results (#8387).
  • Handle denied working-directory changes without crashing resume, move, or startup flows.
  • Fixed Cursor-only sessions becoming permanently unusable after replaying orphaned async tool results.
  • Fixed !command config values (auth.broker.url, auth.broker.token, custom headers) passing inherited file descriptors to the resolution command; on POSIX these commands now run under /bin/sh (Windows keeps the built-in shell and is unchanged)
  • Fixed providers.amazon-bedrock guardrail, transport, and header settings being dropped for models referenced by an inference-profile ARN.
  • Fixed the welcome screen staying at its original width after a terminal resize; a settled rebuild now recomposes it at the new width like the rest of the transcript.
  • Fixed omp if-bench ending an Anthropic model's run on a transient Refusal (cyber) classification; the cyber classifier is stochastic near the threshold, so a refused turn is now retried with a fresh session (up to 3 attempts) before it is scored as a run-ending provider failure.
  • Fixed streamed assistant responses crashing when a later provider delta revised earlier Markdown; assistant output now stays mutable until finalization.
  • Fixed an orphaned foreground tool card surviving a later agent turn and pinning the entire transcript outside native scrollback; new turns now seal abandoned cards while preserving background-task updates.
  • Fixed resize and display replays to include naturally emitted active-head rows in one atomic bottom-first transaction without rewinding lifecycle state, while graceful shutdown still drains every eligible final suffix.
  • Fixed terminal resizes lagging on large transcripts: the transient resize repaint now renders only the visible tail instead of the entire committed transcript per resize event.
  • Fixed cache-miss dividers crashing completed streamed assistant messages after stable rows had entered native history; cache-miss status now trails the assistant output.
  • Fixed quitting re-streaming the entire committed transcript when a resize-triggered scrollback replay was still pending; shutdown now flushes only genuinely un-retired rows.
  • Fixed fast tool completions leaving a permanent running summary that blocked transcript retirement and squeezed later tool output.
  • Fixed omp git hunk navigation (alt+↓/alt+↑) appearing to do nothing while the file sidebar had focus: the diff cursor band now stays visible (dimmed) when the pane is unfocused.
  • Fixed the git TUI sidebar jumping back to the top of the file list after staging or unstaging a file; selection now stays on the nearest remaining row
  • Fixed the aarch64-linux nix build output segfaulting in the dynamic loader before startup by repointing the stale DT_VERDEF that patchelf leaves behind when it grows .dynamic, and surfaced smoke-test signal deaths in the build log instead of masking them (#9881).
  • Added custom RPC launcher builders so embedded clients can transport omp RPC through SSH and remote process managers.

@oh-my-pi/collab-web

Added

  • Transcript Markdown now renders LaTeX: $…$ and \(…\) inline, $$…$$ and \[…\] in display mode, plus own-line $$/\[ blocks. Currency ("$5 and $10"), escaped dollars, and code spans stay literal, and half-streamed delimiters stay visible until the equation closes.
  • Note: parity with the TUI covers these delimited forms only. Bare \begin{…}…\end{…} environments without $$/\[ fences remain literal here (the TUI typesets them); web support is a follow-up.

@oh-my-pi/pi-natives

Fixed

  • Large session histories no longer leave macOS Terminal unresponsive during repaint.
  • Bounded the interactive PTY reader→JS queue (64 × ≤64 KiB) and forward chunks through a separate call_async pump so a fast child plus a stalled JS consumer cannot accumulate unbounded output in-process, without freezing PTY input/resize/kill. After a finite child exit, wait until accepted output reaches on_chunk; only a permanently open slave skips that wait. Cancel, timeout, and that stuck-open path abort the pump before start() resolves. Same defect class as the non-PTY bash bridge (#4078).

@oh-my-pi/pi-tui

Added

  • ProcessTerminal accepts a conpty option to force ConPTY-hosted behavior on or off, keeping terminal tests hermetic on WSL where live env detection would otherwise flip kitty-keyboard flags and write chunking (#9887).

Fixed

  • Fixed pending-work animations repeatedly composing expensive frames without applying their full render cost to CPU backpressure.
  • Fixed unfinished live viewport rows entering tmux pane history and duplicating streamed output (#9780).

@oh-my-pi/pi-utils

Added

  • Added the Linux subreaper spawn option to retain reparented descendants for process-tree cleanup.

Fixed

  • Keep project-directory state unchanged when changing directories fails.
  • Fixed ptree timeout cleanup and output capture so timed commands retain their deadline through descendant-held pipes and untimed commands read output to EOF.

What's Changed

  • fix(tui): apply full-frame cost to loader backpressure by @roboomp in #9892
  • fix(hub): settle await:true send when recipient stops without replying by @roboomp in #9914
  • fix(session): reject corrupt headers before resume by @roboomp in #9924
  • fix(catalog): stop litellm discovery leaking cross-provider wire transport by @roboomp in #9941
  • fix(cwd): Handle denied project directories by @christian-auguste in #9631
  • fix(coding-agent): spawn !command config children with stdio pipes only by @ghosty-11 in #9640
  • fix(voice): widen PulseAudio buffers when PULSE_SERVER targets a remote server by @sjawhar in #9680
  • fix(session): filter orphaned tool results from replay by @roboomp in #9861
  • Fix Bedrock Guardrails with AIPs by @cyruscook in #9863
  • fix(session): seed enabled tool set from the construction slate by @ephraimduncan in #9874
  • fix(bedrock): send reasoning.effort to OpenAI-schema models by @jordan-augment in #9876
  • fix(tui): prevent duplicated and interleaved text in tmux scrollback by @savanne-kham in #9877
  • fix(pi-natives): bound PTY output queue like bash (#4078) by @sheeki03 in #9879
  • fix(nix): repair stale DT_VERDEF in aarch64-linux build output by @roboomp in #9882
  • fix(ai): cannot query z.ai GLM model usage by @coderredlab in #9883
  • test(mnemopi): isolate local-llm Mnemopi instances on temp db paths by @roboomp in #9888
  • fix(tui): add conpty seam so terminal tests stay platform-hermetic by @roboomp in #9889
  • fix(lsp): surface workspace symbol server failures by @dungartoriaaa in #9891
  • fix(natives): prevent macOS Terminal output stalls by @mazzanfar in #9893
  • fix(session): externalize snapcompact frames to blob store on persist by @roboomp in #9902
  • fix(coding-agent): finalize retry lifecycle after recovery by @rpie9 in #9904
  • feat(coding-agent): show prompt-to-yield time on transcript usage rows by @H4vC in #9943

New Contributors

Full Changelog: v18.0.7...v18.0.8

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

NewReleases is sending notifications on new releases.