github can1357/oh-my-pi v15.11.1

latest releases: v15.11.3, v15.11.2
8 hours ago

@oh-my-pi/pi-ai

Changed

  • Exported resolveAnthropicMetadataUserId so non-streaming Anthropic Messages consumers (e.g. the coding-agent web search provider) can produce the same Claude-Code-shaped metadata.user_id as the main streaming path.

Fixed

  • Preserved Anthropic stop_details on assistant messages so refusal and sensitive classifier stops remain structurally visible to callers. (#2290)
  • Fixed OpenAI Responses, Azure OpenAI Responses, and OpenAI Completions streams hanging until the 120s idle watchdog errored the turn when a provider delivers the terminal frame but never sends [DONE] nor closes the connection. processResponsesStream now breaks out of the event loop on response.completed/response.incomplete (mirroring the Codex websocket/SSE terminal break), and the completions consumer breaks once finish_reason plus a usage payload arrived — or, for hosts that never send usage, ends the stream cleanly via a short post-finish grace window (iterateWithTerminalGrace) that aborts the transport to release the socket.

@oh-my-pi/pi-catalog

Fixed

  • Fixed NVIDIA NIM Qwen turns failing with 400 Validation: Unsupported parameter(s): enable_thinking. NIM's chat-completions schema is additionalProperties: false and exposes thinking via the vLLM convention chat_template_kwargs.enable_thinking; buildOpenAICompat was sending top-level enable_thinking for every qwen/* id regardless of host. Registered nvidia as a known host (integrate.api.nvidia.com) and routed NVIDIA-hosted Qwen models to thinkingFormat: "qwen-chat-template" (#2299).
  • Fixed Moonshot/Kimi native OpenAI-compatible request metadata so Kimi K2 uses max_tokens and omits OpenAI-only store, restoring first-turn output with MOONSHOT_API_KEY (#2289).

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

Added

  • Added the statusLine.transparent appearance setting (default off): when enabled, the status line skips the theme's statusLineBg fill and powerline end caps so the bar inherits the terminal's default background — useful in Ghostty and other terminals whose theme background does not match the theme's hardcoded status-line color (#2306)

Changed

  • Changed display.smoothStreaming to animate streamed tool-call arguments (including write/edit/bash previews) at the smooth streaming cadence so partial tool input now appears progressively instead of in large jumps
  • Changed streamed updates for custom wire tools to render incremental raw input as { input } prefixes for preview
  • async.enabled now defaults to true, keeping background task execution and async bash available out of the box; disable it to force blocking subtasks (#2301).
  • Shortened the status line's background-job indicator to a dedicated gear icon plus count (e.g. ⚙ 1 instead of 👥 1 job running) and moved it left of the session name in the right segment group

Fixed

  • Fixed the task tool's streaming call preview rendering the per-agent list above the shared context/assignment briefs: agent rows now render below them, matching the result layout, so the list no longer pushes the brief down as items stream in and then jumps below it once the first progress snapshot arrives
  • Fixed interrupted or ending tool calls to flush streamed argument previews to the full received payload instead of freezing on a partial reveal chunk
  • Fixed tool-argument reveal to avoid splitting UTF-16 surrogate pairs at frame boundaries
  • Fixed input lag in long sessions whenever a spinner was visible: loader ticks forced a full TUI re-compose (re-walking every transcript block) 12.5 times per second. Animations that only change their own rows (status loaders, welcome intro, voice mic glyph, /btw streaming panel) now use the new component-scoped render path (TUI.requestComponentRender), which reuses every other root subtree's rows; resize, overlays, inline images, forced repaints, root-list changes, or any concurrent full request still compose the full frame
  • Fixed transcript rendering so blocks with rows committed to scrollback while still streaming rerender on the first finalized frame, so the final committed output is visible instead of stale in-flight lines
  • Fixed committed transcript bypass logic to re-render finalized blocks when their version changes, so post-finalization updates like restored inline errors and late tool-result content now appear in scrollback
  • Cached stable edit/write preview highlighting inside each tool component so steady-state frame renders do not re-enter the native syntax highlighter.
  • Skipped rendering finalized transcript blocks whose rows are already committed to native scrollback, keeping long restored sessions from re-rendering historical tool blocks every frame.
  • Fixed MCP OAuth authorization and token requests to include the required resource indicator for the target MCP server.
  • Restored async.enabled=false as the task tool's blocking mode, so subagents no longer become background jobs when async execution is disabled (#2301).
  • Fixed the /tree selector and HTML session export dropping the inherited gutter for chain rows under a last-sibling branch, so the conversation flow under a └─ branch stays visually anchored to its parent message (#2298).
  • Fixed Anthropic web search requests to include metadata.user_id, matching the main Messages path: API-key requests forward the active session id verbatim, OAuth requests build the Claude-Code-shaped {session_id, account_uuid?, device_id} JSON envelope so gateways see consistent attribution (#2295).
  • Fixed Anthropic classifier refusals to switch through configured retry fallback chains without same-model retries, and to keep the fallback pinned for the conversation. (#2290)
  • Fixed the edit-tool hashline prompt to stop steering agents toward insert after block N: on closing delimiter lines; opener-only block anchors now point visible closing-line insertions to plain insert after M:. (#2292)

@oh-my-pi/hashline

Fixed

  • Fixed the insert after block N: prompt guidance so it explicitly says N must be the block opener, not the closing delimiter or last visible line, and points visible closing-line edits to plain insert after M:. (#2292)

@oh-my-pi/pi-tui

Added

  • Added TUI.requestComponentRender(component) to schedule component-scoped renders for self-contained updates

Changed

  • Changed the render pipeline to reuse only affected root subtrees for component-scoped updates, avoiding full-tree compose when animations or other isolated component changes occur

Fixed

  • Fixed component-scoped renders to preserve prior live scrollback seam data for skipped root children, preventing duplicate or missing rows during spinner-only updates
  • Reported committed native scrollback row counts to interested child components so immutable history can be skipped without breaking live-region commit bookkeeping.
  • Fixed ProcessTerminal treating asynchronous stdout EIO errors as uncaught exceptions: stdout error events now mark the terminal dead, disable future renders, and keep the active session process alive (#2284).

@oh-my-pi/pi-utils

Fixed

  • Fixed cleanup reentry noise during fatal shutdown: recursive cleanup requests now no-op idempotently instead of logging repeated Cleanup invoked recursively errors (#2284).

What's Changed

  • fix(tui): handle stdout EIO renderer failures by @roboomp in #2285
  • fix(mcp): hide Windows cmd stdio shims by @roboomp in #2288
  • fix(catalog): correct Moonshot Kimi request shaping by @roboomp in #2291
  • fix(hashline): clarify insert-after-block anchors by @roboomp in #2293
  • fix(retry): fall back on Anthropic refusals by @roboomp in #2294
  • fix(providers): send Anthropic search metadata.user_id by @roboomp in #2296
  • fix(catalog): route NVIDIA-hosted qwen to chat_template_kwargs.enable_thinking by @roboomp in #2300
  • fix(tui): extend chain gutter past last-sibling branches in tree view by @roboomp in #2303
  • feat(tui): add statusLine.transparent setting for terminal-native status bar background by @roboomp in #2307
  • Fix MCP OAuth resource indicator by @th3fallen in #2269
  • Fix render CPU thrash in long transcripts by @cexll in #2309

New Contributors

Full Changelog: v15.11.0...v15.11.1

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

NewReleases is sending notifications on new releases.