Skip to content

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.

Query amu
app/models/user.rb

app/models/admin_user.rb

app/mailers/user_mailer.rb

10,000 matches 4.93 ms first key

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.

View the source