Pure Ruby, version 0.1.0
Find the right path before the next keystroke.
Spica ranks fuzzy subsequence matches, returns the exact characters to highlight, and reuses work as a query grows.
app/models/admin_user.rb
app/mailers/user_mailer.rb
4.93 ms
First-key filtering across 100,000 candidate paths
2.39 ms
Second key scans only the 10,000 retained matches
0
Runtime dependencies and native extensions
Made for the search loop.
The small details a command palette needs are part of the result, not work left for your UI.
-
Incremental by design
Prefix history and cached backspace results keep repeated queries lean.
-
Highlights included
Each match carries Unicode character positions, ready for accurate emphasis.
-
Stable ranking
Configurable fzy-style scoring and deterministic tie-breaking prevent flicker.
-
Safe to ship
Pure Ruby 3.1+, immutable results, smart case, and RBS signatures.
From install to ranked results.
Use one call for a list, or keep an index and session for an interactive palette.
Explore the API$ gem install spica
require "spica"
candidates = [
"app/models/user.rb",
"app/models/order.rb",
"README.md"
]
Spica.filter("amu", candidates, limit: 3)
Separate the signal from the noise.
MIT licensed. Built for Ruby 3.1 and newer.