← all releases

v0.2.31

Termy 0.2.31

Command palette

  • Fuzzy search with ranking. The palette now matches subsequences (gsw "Git: Switch Branch") and ranks results by match quality instead of listing them in static order.
  • Recently used commands rank higher. Commands you run often surface first; unavailable commands sink to the bottom in ranked modes.
  • Better scannability. Matched characters are highlighted inline, rows show category labels, icons are tinted per category, and keyboard shortcuts render as keycap chips.
  • Inline reasons for unavailable commands. Disabled rows explain why instead of just looking dead.
  • Navigation and hover fixes. Arrow/Home/End navigation and viewport scrolling behave correctly, and selection no longer jumps under a stationary mouse.

Plugins

  • Context-menu commands. Commands can declare placements: ["commandPalette", "terminalContextMenu", "tabContextMenu"]. Context-menu placements are available on Linux and Windows; placements: [] makes a command keybinding-only.
  • Native views inside the palette. view.open accepts target: "commandPalette" to render a plugin's native view in the palette results area, keeping palette search and footer, instead of a centered modal.
  • Stale-revision safety. Actions and native-view updates returned by a request whose plugin changed, was disabled, or was removed are now rejected.

Fixes

  • ANSI text attributes preserved across renderers. Bold, italic, underline and friends now survive the GPUI grid, FFI frame snapshots, and the macOS SwiftUI renderer consistently.
  • Windows new tab button placement. Corrected tab strip layout and titlebar drag regions on Windows.

Docs

  • Termy agent skills published: build-termy-plugins (plugin authoring for coding agents) and ghostty-to-termy (Ghostty config conversion), with docs on the website.
  • Plugin docs updated for placements, palette-targeted views, and lifecycle guarantees.

Full Changelog: https://github.com/lassejlv/termy/compare/v0.2.30...v0.2.31