← All reportsPublic report

junegunn/fzf

:cherry_blossom: A command-line fuzzy finder

83k stars Go View on GitHubprofiled 11d ago
Try GitZoid
42PRs this week
4Contributors
0Deps scanned
0Issues found
01 · Repo overview

How fzf is put together

fzf is a general-purpose command-line fuzzy finder and interactive terminal toolkit written in Go, distributed as a single static binary. The core pipeline flows from input readers (files/stdin) through chunked item storage, a concurrent matcher running the fuzzy-matching algo package (with hand-written AVX2/NEON SIMD assembly on amd64/arm64), into a merger that feeds a terminal UI built either on a lightweight termios backend or tcell. An optional embedded HTTP server (--listen) exposes a minimal hand-rolled REST interface over TCP or Unix sockets to trigger actions or fetch results remotely. Shell integrations (bash/zsh/fish/nushell), a Vim plugin, and man pages are embedded into the binary via go:embed and emitted by CLI flags.

Languages

GoAssembly (amd64/ARM64 SIMD)Shell (bash/zsh/fish/nushell)VimscriptRuby (test/lint tooling)

Frameworks

gdamore/tcell/v2 (TUI backend)rivo/uniseg (Unicode segmentation)charlievieth/fastwalk (parallel directory walking)

Infrastructure

GitHub Actions CI (.github workflows referenced by README badge)goreleaser (.goreleaser.yml)DockerfileMakefileCross-platform single-binary distribution

Major components

CLI entrypoint & option parsing

main.go plus src/options.go parse flags, dispatch --bash/--zsh/--fish/--nushell/--man/--version modes, and bootstrap fzf.Run.

Fuzzy matching engine (src/algo)

Implements fuzzy scoring algorithms with platform-specific SIMD assembly (indexbyte2_amd64.s, indexbyte2_arm64.s) and pure-Go fallbacks.

Terminal UI (src/tui + src/terminal.go)

Renders the interactive finder using either a lightweight termios backend (light.go) or tcell (tcell.go), handling events, query editing, and preview windows.

Input reader & tokenizer (src/reader.go, src/tokenizer.go)

Streams items from stdin/files with fastwalk-based directory traversal and splits fields for transformed matching.

Matcher & merger (src/matcher.go, src/merger.go, src/chunklist.go)

Concurrent, chunked parallel matching over millions of items producing sorted result mergers.

HTTP action server (src/server.go)

Hand-rolled HTTP/1.1 server (no net/http) listening on TCP or Unix socket that accepts POST actions and GET result queries gated by an optional API key.

Shell integrations (shell/, bin/)

Key bindings and fuzzy completion scripts for bash, zsh, fish, and nushell, plus fzf-tmux launcher and preview helper scripts.

Editor plugin & process helpers (plugin/fzf.vim, src/proxy.go, src/tmux.go, src/zellij.go, src/winpty_windows.go)

Vim/Neovim integration and wrappers for spawning fzf under tmux, zellij, or winpty proxies.

Over the past five weeks, fzf's development focused on polishing terminal behavior and performance. Early weeks shipped a new release (0.74.2) with faster fuzzy matching and zsh fixes, followed by another release (0.74.3) with quoting and paste-mode corrections. The most recent weeks improved how fzf handles escape sequences and image previews in tmux, plus a change to run fzf asynchronously from the Vim plugin.

Week by week

2026-08-24A small tweak made fzf wait a bit longer before processing an incomplete keyboard sequence.latest1 change

Fix

Minimum wait for in-flight sequences

fzf now keeps a minimum wait time for a key sequence still arriving, so it doesn't misread partially received input.

2026-08-17fzf got better at handling escape-key sequences, the Vim plugin can launch it without blocking, and CI was stabilized.3 changes

Fix

Wait for full escape sequences

fzf now waits for the rest of an escape sequence before parsing it, avoiding garbled handling of special keys.

Feature

Async fzf in Vim plugin

The Vim plugin can now run fzf asynchronously so the editor stays responsive while the picker is open.

Chore

CI fix: pin nushell version

The automated test pipeline pins nushell to version 0.114 to keep tests passing.

2026-08-10Release 0.74.3 shipped alongside a batch of small correctness fixes for shell quoting, tests, and terminal behavior.5 changes

Chore

Release 0.74.3

A new point release bundled the week's fixes for users.

Fix

Platform quote placeholder for {fzf:prompt}

The prompt placeholder now uses the correct quoting style for each operating system's shell.

Chore

Quoting test cleanup

Tests were split to separately cover doubled versus plain backslash cases, and PowerShell temp-file matching was corrected.

Fix

Erase 'p' on Terminal.app

Fixed leftover character display when erasing input in Apple's Terminal.app.

Fix

Restore bracketed paste mode

Instead of forcing bracketed paste mode off, fzf now restores whatever mode was active before it started.

2026-08-03Performance work sped up non-ASCII text handling, and preview windows gained better line-breaking for image tools.5 changes

Refactor

Faster rune-mode input filtering

Input containing non-ASCII characters is prefiltered early, skipping unnecessary work for patterns that can't match.

Refactor

Skip normalization for unnormalizable runes

Characters that have no normalized form skip the normalization lookup table entirely.

Refactor

Optimized ToChars conversion

Converting bytes to characters now skips rune decoding for plain ASCII and avoids allocating more memory than needed.

Fix

Break preview lines on IND for chafa

Preview lines now break correctly on the IND control character so image previews via chafa render properly inside tmux.

Fix

Copy item text in replace-query

The replace-query action now copies the item's text rather than referencing shared data.

2026-07-27Release 0.74.2 landed with a faster fuzzy-matching fast path, several tmux image-preview fixes, and zsh widget corrections.6 changes

Chore

Release 0.74.2

A new point release packaged the week's improvements and fixes.

Refactor

Fast path for two-character patterns

Short two-character search patterns now take a quicker code path in fuzzy matching, with strengthened equivalence tests to confirm results are identical.

Fix

tmux image preview fixes

Kitty graphics sequences are wrapped for tmux passthrough, preview headers no longer split through images, and floating pane border labels are separated from pane titles.

Fix

zsh alt-c double-call fix

The alt-c directory-jump widget no longer triggers the chpwd hook twice, with a test added to verify this.

Fix

zsh history widget exit status

The fzf history widget now correctly reports its exit status when using perl-based capture.

Chore

Dependency bumps

Several build tools and libraries (GitHub Actions, ruby setup, go-isatty) were updated to newer versions.

03 · Security check

Dependencies and code review

0 dependencies scanned

Dependency advisories

Security Watch

No known advisories across 0 scanned dependencies.

No known advisories in the scanned dependencies.

Code review

No concrete code-level issues confirmed.

Get this report every week for your repos.

GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.

$19 a month, flat · First 10 outputs free · No card required