Skip to content

Releases: peco/peco

v0.6.0

24 Feb 02:48

Choose a tag to compare

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

21 Mar 07:33

Choose a tag to compare

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

08 Jun 09:18

Choose a tag to compare

v0.5.10 - 08 Jun 2021
  * Previous release was botched. No code change except for version string,
    and Makefile typo.

v0.5.9 - 08 Jun 2021
  * Remove support for 386 arch
  * Add go.sum
  * Add darwin-arm
  * Fix double cursor issue (#513)

v0.5.8

18 Jul 11:15

Choose a tag to compare

v0.5.8 - 18 Jul 2020
  Features:
  * Add support for 256-colors in the configuration. You must first enable
    this in the config file by specifying "Use256Colors": true

v0.5.7

10 Jan 03:47

Choose a tag to compare

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

07 Jan 00:41

Choose a tag to compare

v0.5.6 - 07 Jan 2020
  Miscellaneous:
  * I completely messed up the release process. Retagging and uploading
    binaries properly. No code changes except for the version number (#493)

v0.5.5

01 Jan 23:27

Choose a tag to compare

v0.5.5 - 02 Jan 2020
  Features:
  * Properly exit out of peco if --select-1 and --query  are both specified,
    and the query produces exactly one result (#490)

v0.5.4

19 Dec 02:13

Choose a tag to compare

v0.5.4 - 19 Dec 2019
  Miscellaneous:
  * Properly set cursor position (#450)
  * Update termbox-go version (#487/#488)
  * Update go version to go 1.13

v0.5.3

11 Mar 22:30

Choose a tag to compare

v0.5.3 - 12 Mar 2018
  Features:
  * New --print-query option prints out the query upon successful exit
  * New actions ScrollFirstItem and ScrollLastItem
  Miscellaneous:
  * Update termbox-go version (#447)
  * Documentation fixes (#444)
  * Build peco using go1.10

v0.5.2

08 Dec 01:30
75f471e

Choose a tag to compare

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