Releases: peco/peco
Releases · peco/peco
v0.6.0
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).
v0.5.11
v0.5.11 - 21 Mar 2023
[Features]
* Added new option for "FuzzyLongestSort" flag that can be specified in your config file
as
```
{
"FuzzyLongestSort": true,
...
}
```
allows you to sort matched lines with the following ordering precedence (#539):
1. longer substring
2. earlier (left positioned) substring, and
3. shorter line.
[Miscellaneous]
* Posted project status at https://github.com/peco/peco/discussions/540
v0.5.10
v0.5.8
v0.5.7
v0.5.7 - 10 Jan 2020
Bugs/Fixes:
* Code introduced in v0.5.5 in turn caused a bug where if the input is coming
from standard input and is possibly infinite, the user would see the
query being "stuck" after the first character is entered.
If peco was applied on a finite set of data, this did not manifest itself.
(#494 fixed by #495)
v0.5.6
v0.5.5
v0.5.4
v0.5.3
v0.5.2
v0.5.2 - 08 Dec 2017
Backwards Incompatible Change:
* --version flag now prints out the Go version used to build the binary
Micellaneous:
* Various doc fixes
* Build peco using go1.9.2.
* There have apparently been problems running the stock peco binary in
MacOS High Sierra, with an error message like "failed MSpanList_Insert...",
which can averted by compiling the binary with a newer Go.
Reports suggest that peco v0.5.1 is not affected by this problem, but
we're making this release anyway just to make sure that we're building
on a new-ish Go, and that users have a way to see what Go version was
used to build their binaries