peco

peco·peco.peco

Simplistic interactive filtering tool.

winget install --id peco.peco --exact --source winget

Latest 0.6.0·February 24, 2026

Release Notes

v0.6.0 - 24 Feb 2026 [Breaking Changes]

  • Migrated terminal backend from termbox-go to tcell (#567).
  • Removed deprecated config fields Matcher, InitialMatcher, and CustomMatcher. Use InitialFilter and CustomFilter instead. Note: CustomFilter uses a different format than CustomMatcher: Before: "CustomMatcher": { "MyFilter": ["/path/to/cmd", "$QUERY"] } After: "CustomFilter": { "MyFilter": { "Cmd": "/path/to/cmd", "Args": ["$QUERY"] } }
  • Removed deprecated CLI option --initial-matcher. Use --initial-filter instead.
  • The action ViewArround has been renamed to ViewAround (fix typo). The old name still works but shows a deprecation notice. If you have "ViewArround" in your config, please update it to "ViewAround".
  • Removed Use256Color config field. After the tcell migration, 256-color and truecolor support is automatic via terminfo detection. Existing configs with this field will continue to load without error.
  • Shift+Tab is now mapped to Tab internally. Use M-[,Z in your keymap config if you need a distinct Shift+Tab binding.
  • Default key bindings for GoToNextSelection and GoToPreviousSelection have changed. GoToNextSelection was previously unbound (it silently conflicted with KillEndOfLine on Ctrl+K in v0.5.x) and is now bound to Alt+j. GoToPreviousSelection was previously bound to Ctrl+J and is now bound to Alt+k.
  • ANSI color support is now enabled by default (--color=auto). ANSI escape sequences in input are now parsed and rendered with colors preserved. To disable, use --color=none or set "Color": "none" in your config file.
  • Query terms starting with - are now interpreted as negative (exclusion) filters. In v0.5.x, foo -bar searched for lines matching both "foo" and literal "-bar"; in v0.6.0 it searches for "foo" while excluding lines containing "bar". To match a literal hyphen prefix, escape it with a backslash: \-bar. [Features]
  • Added YAML configuration file support. You can now use ~/.config/peco/config.yaml in addition to JSON (#576).
  • Added negative filter terms. Prefix a search term with - to exclude matching lines, e.g. -unittests SSO matches "SSO" but excludes lines containing "unittests" (#434, #592).
  • Added peco.FreezeResults / peco.UnfreezeResults actions. Freezing locks the current result set so you can clear the query, switch filters, and continue filtering against the frozen subset (#424, #596).
  • Added --height option for inline display. Accepts a line count (e.g. --height 5) or a percentage (e.g. --height 50%) and renders peco inline instead of taking over the full screen (#471, #598).
  • Added peco.ZoomIn / peco.ZoomOut actions that expand visible context around matched lines, showing surrounding lines (#289, #600).
  • Added ANSI color rendering support via --color=auto|none CLI flag and "Color" config field. Colored output from tools like git log --color or rg --color is now displayed with colors preserved. Default is auto (enabled) (#398, #602).
  • Added IRegexp filter for case-insensitive regexp matching, so you no longer need to manually type (?i) in regex queries. IRegexp can also be used as a value for --initial-filter / InitialFilter (#564).
  • Added --exit-0 option to immediately exit with non-zero status when the input is empty, analogous to --select-1 (#538, #582).
  • Added Ctrl+Shift key modifier and CSI u / fixterms escape sequence support for modern terminals (#529, #581).
  • Added Page Up/Down and Home/End key support (#428, #584).
  • Added a new top-down-query-bottom layout: top-down list with query prompt at the bottom. Use --layout top-down-query-bottom or "Layout": "top-down-query-bottom" in config (#445, #595).
  • Added man page (peco.1) for offline documentation (#467, #587).
  • Added support for ANSI color codes in the --prompt string (#294, #586).
  • Added --select-all option to select all input lines and immediately exit without displaying the selection view. When combined with --query, only matching lines are selected.
  • Added SuppressStatusMsg config field to suppress the status message bar at the bottom of the screen.
  • Added FilterBufSize config field to control the internal buffer size (in lines) used during filtering. Default is 1000.
  • Added Prompt and Context style targets. Prompt controls the appearance of the query prompt prefix (e.g. QUERY>). Context controls the appearance of context lines shown by ZoomIn (default: bold).
  • Added #RRGGBB truecolor support in style configuration. You can now use hex color values like "#ff6600" for foreground and "on_#003366" for background colors.
  • Added QueryCursor style for explicit control over the query prompt cursor appearance. When not configured, the cursor is derived from the Query style by swapping fg/bg colors. [Bugs/Fixes]
  • Fixed ToggleQuery (C-t) not working correctly (#563).
  • Fixed fuzzy sort producing incorrect order with >1000 lines of input due to chunk-size boundary (#557, #589).
  • Fixed matched highlight style bleeding to the right edge of the terminal (#460, #583).
  • Fixed screen not being properly redrawn when stderr output from piped commands corrupts the display (#455, #588).
  • Suppressed flickering "Running query..." status message (#511, #585).
  • Fixed --null not working correctly with custom filters (#312, #577).
  • Fixed doGoToNextSelection and doGoToPreviousSelection sharing the same default key binding (#575, #579). GoToNextSelection is now bound to Alt+j and GoToPreviousSelection to Alt+k. The previous Ctrl+J and Ctrl+K bindings have been removed (Ctrl+K remains bound to KillEndOfLine). If you relied on Ctrl+J or Ctrl+K for selection navigation, update your keymap config.
  • Fixed GoToPreviousSelection being registered with a malformed internal name (\tdoGoToPreviousSelection) in v0.5.x. Users who had "peco.GoToPreviousSelection" in their config keymap will find that it now correctly binds to the action.
  • Fixed lastLine tracking variable not being updated (#574, #578).
  • Fixed tab rendering off-by-one error (#672).
  • Restored mouse support lost during the tcell migration (#735).
  • Fixed Ctrl-C not properly exiting peco due to meta character handling (#715, #716).
  • Fixed --select-1 not triggering on interactive queries and not respecting context for streaming sources (#726).
  • Fixed filter cache not being invalidated on freeze/unfreeze, causing stale results (#727).
  • Fixed external filters (CustomFilter) incorrectly running in parallel, which could produce garbled results. They now run sequentially (#722).
  • Removed redundant Esc key timer; Escape should now feel more responsive (#728).
  • Filter errors are now reported to the status bar instead of being silently swallowed (#682).
  • Fixed screen Init error being swallowed on suspend/resume (#681).
  • Fixed I/O errors during stdin read being silently ignored (#680).
  • Fixed ANSI SGR parser not handling malformed escape sequences gracefully (#692).
  • Fixed potential panic on negative index in FilteredBuffer (#770).
  • Fixed errors from external filters being silently dropped (#752, #766).
  • Fixed various internal race conditions, resource leaks, and potential deadlocks. [Performance]
  • Optimized filtering for large inputs with parallelized workers, achieving 7-30x speedup for ~1M lines (#454, #590).
  • Reduced overall memory consumption (#572).
  • Reduced per-query allocation overhead and GC pauses: sync.Pool for match structs, in-place merge, slice reuse in regexp/fuzzy filters, closure elimination, stack-allocated ANSI parsing, and fast-path ANSI stripping (#781-#789, #765).

Installer type: zip

ArchitectureScopeDownloadSHA256
x64Download5BD9AA4BC02338A6EC8AB1EF212C7B2E54C23E2416254C7681F03E9FA6857863

Details

Homepage
https://github.com/peco/peco
License
MIT
Publisher
peco
Support
https://github.com/peco/peco/issues
Moniker
peco

Older versions (1)

0.5.11
ArchitectureScopeDownloadSHA256
x64DownloadBD0F92CF415F43B9FE19515D8C49B31683826CF3626B485217E6487D3635C95D