github can1357/oh-my-pi v16.0.8

latest releases: v16.1.1, v16.1.0, v16.0.11...
23 hours ago

@oh-my-pi/pi-agent-core

Fixed

  • Stopped the compaction <files> summary from tracking scheme:// URLs — internal URIs (conflict://, artifact://, local://, history://, …) and web URLs are no longer recorded as files, and legacy entries rehydrated from older compaction summaries are dropped.

@oh-my-pi/pi-ai

Fixed

  • Improved reliability of auth-broker snapshot loading by implementing a robust manual schema check
  • Fixed MCP tool argument validation to drop optional empty-string parameters before schema validation, matching the existing optional null handling and avoiding pattern/type failures for omitted model-filled fields. (#2981)
  • Fixed API-key credential replacement to hard-delete superseded disabled api_key rows so auth_credentials does not grow indefinitely after key rotation. (#2941)
  • Fixed Cursor provider streaming to close text blocks before tool calls so post-tool text opens a new content block and TUI transcript cards render inline instead of grouped near the bottom. (#2924)

@oh-my-pi/pi-catalog

Changed

  • Refactored model family ID predicates and capability checkers to use a shared, uniform process-lifetime memo utility to eliminate caching boilerplate.

Fixed

  • Fixed LM Studio dynamic discovery to use native /api/v0/models metadata so VLM models advertise image input. (#2945)

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

Changed

  • Optimized app startup time by lazily loading site-specific scraper modules
  • Refactored internal archive handling into a unified src/utils/zip.ts module
  • Centralized all fflate (ZIP) and Bun.Archive (tar/tar.gz) operations into zip.ts
  • Optimized archive reading by using lazy, ranged central-directory access for ZIP files
  • Updated internal image processing to no longer include metadata text for fetched images
  • Optimized omp:// documentation indexing by compressing doc bodies into a lazily-inflated blob
  • Changed Mermaid fenced-block ASCII rendering to use the first-party vendored renderer in @oh-my-pi/pi-utils (src/vendor/mermaid-ascii), dropping the beautiful-mermaid npm package, its transitive elkjs (~3.13MB), and the beautiful-mermaid bun patch; CJK/emoji width handling and the layout-direction override are preserved.
  • Changed omp:// documentation embedding to a gzipped base64 index (docs-index.generated.txt, populated at build time and reset afterward) inflated on first read, instead of a ~1.6MB raw TypeScript map. The compiled binary / npm bundle drops ~0.9MB; the dev tree and source checkouts read docs/ from disk.
  • Replaced the markit-ai package with a vendored in-house document engine (src/markit) for the document formats it converts: PDF (via mupdf), DOCX (via mammoth), and PPTX/XLSX/EPUB (via fast-xml-parser). Conversion output is preserved, including the PDF column/table-detection pipeline and HTML-table normalization; markit-ai's unused converters and their dependency tail are gone. Legacy .doc/.ppt/.xls/.rtf remain unsupported (a conversion error), as before.
  • Centralized ZIP handling behind a single src/utils/zip.ts (fflate): the new document converters, the write tool's in-place archive editing, and the read tool's ranged archive reader now share one ZIP implementation instead of mixing jszip and fflate.

Fixed

  • Fixed settings overlay crash when scrolling past the last row in list views
  • Improved tool result formatting by correctly wrapping <out> blocks in dim-ink toggles
  • Fixed auto-retry after transient model-stream socket closes to replay text/thinking-only partial assistant output, including turns where incomplete tool-call arguments were dropped; completed tool calls still block retry to avoid duplicating tool execution.
  • Fixed omp update reporting EPERM: operation not permitted, unlink '<binary>.bak' on Windows when self-replacing a standalone binary, even though the new binary had already been installed. The backed-up old executable is still the running process image and cannot be unlinked until the process exits, so the post-verify backup cleanup is now best-effort, backups use a unique per-attempt name, and stale backups are swept on the next update (#845).
  • Fixed plan-mode Refine plan so the internal approval abort is hidden and the editor is ready for a follow-up prompt instead of showing Operation aborted (#2971).
  • Fixed TUI prompts beginning with shell-style variables such as $HOME being misrouted to Python eval; Python shortcuts now require $ <code> or $$ <code>. (#2944)
  • Fixed LM Studio runtime discovery to use native /api/v0/models metadata so inspect_image can select VLM models. (#2945)
  • Fixed omp crashing at startup with Cannot find module './browser-data/browser-data.js' (e.g. on Termux/proot Linux arm64). tools/browser/attach.ts value-imported the TargetType enum from puppeteer-core, which dragged the puppeteer-core barrel (and its @puppeteer/browsers Chromium downloader) back onto the eager startup import graph — defeating the lazy-load deferral and turning any bundling quirk in that subtree into a fatal boot crash instead of a recoverable browser-tool error. The import is now import type and the target check compares against the "page" literal, so puppeteer only loads on first browser use.
  • Fixed the standalone compiled binary aborting at startup with error: Cannot find package 'mupdf'. The vendored document engine kept mupdf external, but a single-file bun --compile binary has no node_modules to resolve it from, and the bundler resolves the otherwise-lazy import eagerly at boot. mupdf (and its WASM module, embedded at build time via scripts/embed-mupdf-wasm.ts) is now bundled into the binary, so startup and PDF/document conversion both work in the standalone binary; npm and source installs still load mupdf from node_modules. mupdf is also imported lazily inside the PDF converter now, which fixes a compiled-bundle init-order hazard — mupdf's top-level await made the bundled markit chunk's module init async, exposing the converters before their extension tables initialized — and keeps the ~10MB WASM off non-PDF document conversions.

Removed

  • Removed the markit-ai, exifr, music-metadata, and direct jszip dependencies. As a side effect, fetching an image or audio URL no longer appends EXIF/audio metadata text; image inlining and resizing are unchanged, and document conversion (PDF/DOCX/PPTX/XLSX/EPUB) is unaffected.

@oh-my-pi/snapcompact

Added

  • Added <out> block wrapping for tool results to improve document structure
  • Rendered thinking process as italicized blocks above assistant text
  • Displayed tool call intents as // comments in tool call headers
  • Changed conversation role markers to standard Markdown headings

Changed

  • Merged tool results into their corresponding tool call blocks
  • Preserved prose formatting around tool calls to maintain conversation flow
  • Hidden _i argument from tool call output when an intent is provided
  • Optimized assistant turn output to group thinking and text blocks efficiently

Fixed

  • Fixed improper splitting of assistant messages around useless tool calls

@oh-my-pi/pi-tui

Fixed

  • Fixed bracketed paste under kitty+tmux leaking [27;5;106~ escape tails throughout the pasted text (newlines became visible garbage instead of line breaks). tmux's default extended-keys-format=xterm re-encodes paste control bytes as modifyOtherKeys sequences (ESC[27;5;<code>~), which the paste sanitizer did not decode — only the sibling csi-u form (ESC[<code>;5u) was handled. Both forms are now decoded back to their literal control byte (Ctrl+J → "\n") before control-character stripping, and the decoder is shared by the multi-line editor and the single-line modal input.

@oh-my-pi/pi-utils

Changed

  • Mermaid diagrams are now rendered to ASCII by a first-party vendored renderer (src/vendor/mermaid-ascii, derived from the MIT-licensed beautiful-mermaid, ASCII pipeline only) with terminal display width measured via Bun.stringWidth (grapheme-aware, correct for wide/East-Asian glyphs and emoji). Inline label formatting (HTML formatting tags and markdown emphasis) is now reduced to plain text instead of printed raw.

Removed

  • Removed the external beautiful-mermaid dependency (and its transitive elkjs, ~3.13MB) in favor of the vendored ASCII renderer.

What's Changed

  • fix(coding-agent): hide plan refine approval abort by @roboomp in #2978
  • fix(ai): preserve Cursor tool-call ordering by @roboomp in #2927
  • fix(ai): purge superseded API-key credential rows by @roboomp in #2943
  • fix(providers): detect LM Studio VLM image input by @roboomp in #2948
  • fix(tui): require space after python prompt sigil by @roboomp in #2949
  • fix(ai): prune optional empty tool params by @roboomp in #2983

Full Changelog: v16.0.7...v16.0.8

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

NewReleases is sending notifications on new releases.