Natecraddock Zf Versions Save

a commandline fuzzy finder designed for filtering filepaths

0.9.1

3 months ago

A small release to fix two potential crashes

  • fix: fix crash when input is invalid utf8 (50e3a8)

    zf incorrectly assumed that the input was valid utf-8 encoded unicode. Now the input is validated before normalization.

  • fix: avoid integer overflow when selecting line down (0456b7)

0.9.0

7 months ago

This is a smaller release. The main goal of this is to have a stable version of zf that targets Zig 0.11.0. There are also improvements to support the new Zig package manager, refactorings, and small fixes.

I originally planned to include a UI preview feature in this release, but I ran into some issues with in release builds and I haven't had time to debug properly. So that will be postponed until the next release of zf. But a lot of refactoring and code to support a UI preview is already included in this release.

And although this news is months old, zf is now available in nix.

See the changelog for full details.

0.8.0

1 year ago

This release adds multiselect to the UI, improves the strict path matching feature added in the previous release, and improves the highlighting logic to be more accurate. The library API has also been updated.

See the changelog for full details.

0.7.0

1 year ago

The headline feature of this release is strict path matching, another way that zf is optimized for filtering filepaths with accuracy and precision.

With strict path matching, when a query token contains a / character, any other characters after the slash must appear in a single path segment. As an example, the query /foo would match /foo/bar/ but not /fo/obar because the characters "foo" must appear in a single path segment.

This is useful for narrowing down results when you know the exact path structure of your files. As a more complex example, with the following paths

app/models/foo/bar/baz.rb
app/models/foo/bar-baz.rb
app/models/foo-bar-baz.rb
app/monsters/dungeon/foo/bar/baz.rb

The query a/m/f/b/baz filters to only app/models/foo/bar/baz.rb whereas in previous versions of zf the string app/monsters/dungeon/foo/bar/baz.rb is also included in the results. To end strict path matching, just add a space to start a new token.

This release also includes many fixes, refactors, optimizations, unicode support, and a few other small features.

See the changelog for more details.

0.6.0

1 year ago

This release is focused on small optimizations, refactors, and using zf as a library. Because zf is now packaged as a Zig library, it makes sense to switch back to semantic versioning which makes this version 0.6.0 rather than 0.6. This release also updates the source code to support Zig 0.10.0.

While refactoring zf to be more easily consumed by a library, I designed the library to require zero allocations and be passed external slices of memory. Alongside this I also added a restriction to zf as a cli tool. The number of space-separated tokens in the query is now limited to 16. This seems like a safe upper limit, but can be raised if needed.

See the changelog for more details.

0.5

1 year ago

This smaller release fixes a few bugs and adds support for a few environment variables. A long time coming (I've been focused on other projects), I'm finally back to work on zf. The next release will be focused on utf-8 unicode support.

See the changelog for more details.

0.4

2 years ago

This release includes many refactors and cleanups to the code. Flicker in drawing the UI has been resolved, and work has begun on macOS support. And finally, the algorithm for matching on filenames has received an update and should be even more precise.

See the changelog for more details.

0.3

2 years ago

This release improves the ranking algorithm, adds two new commandline options, fixes a few bugs, and optimizes the TUI drawing code. Shell completion scripts are now provided for bash, zsh, and fish.

See the changelog for more details.

0.2

2 years ago

This release fixes a few minor bugs, optimizes drawing the terminal user interface, and introduces a number of new features:

See the changelog for more details.