Skip to content
CAI
Software that uses CAICheck a score

garybernhardt/selecta

66.9

Adequate · 19 September 2026

3.6k

lines of production code

Ruby

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

Selecta is a standalone Ruby command-line utility that provides an interactive fuzzy-selection interface for choosing items from a list. It reads input from stdin, applies case-insensitive fuzzy matching with configurable scoring, and outputs the selected item to stdout. The system includes a test suite for its core logic and an automated script for managing releases and versioning.

Features

Automated release script for versioning and tagging

A new executable script at bin/release has been added to automate the release process. When invoked with a version number, it ensures the repository is clean, updates the VERSION constant in the 'selecta' source file, commits the change, and creates a corresponding git tag (e.g., v1.2.3).

bin · high confidence

Initial release of Selecta fuzzy selector

Introduces Selecta, a standalone fuzzy-selection tool that reads a list of choices from stdin and presents an interactive, case-insensitive fuzzy-matching UI in the terminal. Users can pipe any list (e.g., files, buffers, branches) into Selecta to quickly pick an item, which is then printed to stdout. The tool supports configurable UI height via --height, pre-populated search via -s, and standard navigation keys (Ctrl-N/Ctrl-P, Ctrl-U, Ctrl-W, Ctrl-H, Ctrl-C). It requires Ruby 1.9.3+, runs in an ANSI-compatible TTY, and exits with status 0 on selection or 1 when aborted or when no TTY is available. Documentation includes usage examples for Vim, Git, Zsh, and process selection.

(repo-wide) · high confidence

Test coverage

Added test suite for configuration, search, scoring, and rendering

Added comprehensive RSpec tests covering the application's core logic. The new specs verify that the Configuration class correctly handles command-line options (such as \--height\ and initial search queries) and sanitizes invalid UTF-8 input. Search behavior is tested, including navigation (up/down/looping), filtering, backspacing, and word deletion. The scoring algorithm is validated for word-boundary preference, case sensitivity, and match quality. Finally, the Renderer is tested to ensure it correctly displays choices, respects screen height, and highlights matching text.

spec · high confidence

Dependencies

Add Ruby dependency management with RSpec

Introduced a Gemfile and Gemfile.lock to manage Ruby dependencies, specifically adding the rspec gem (version 3.0.0) for development. Also added the selecta.gemspec file to define the project's gem specification, including metadata such as name, version, and author.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 67.

Lenses

  • Code Health 100
  • Architecture 100
  • Maturity 55
  • Readiness 55
  • Security 100

Changes since last survey

  • 300 commits — 272 feature/other, 28 fixes

By area

  • (root) — 238 commits
  • (repo) — 35 commits
  • spec/world_spec.rb — 10 commits
  • spec/search_spec.rb — 7 commits
  • spec/score_spec.rb — 4 commits
  • spec/configuration_spec.rb — 2 commits
  • spec/spec_helper.rb — 2 commits
  • bin/release — 1 commit
  • spec/text_spec.rb — 1 commit

Notable commits

  • fix: Fix Ruby 4.0 compatibility
  • fix: Fix undefined local variable or method `search'
  • fix: Merge pull request #58 from untitaker/readme-fix
  • fix: Revert "move up and down list with arrows (fixes #15)"
  • fix: Revert "special case exact and substring matches"
  • fix: add ruby version check (fixes #7)
  • fix: avoid negative remaining columns (fixes #3)
  • fix: don't draw past bottom of short screen (fixes #26)
  • fix: don't sort options (fixes #4)
  • fix: don't truncate in narrow windows (fixes #22)
  • fix: expand tabs when drawing to screen (fixes #75)
  • fix: fix --version, incrementing to 0.0.2
  • fix: fix IndexError when scrolling off end of list (#65)
  • fix: fix ZeroDivisionError when scrolling empty matches
  • fix: fix array-handling regression in renderer
  • fix: fix cursor at termination by printing blank lines
  • fix: fix error message when ^Cing selecta in vim
  • fix: fix failing spec
  • fix: fix failing specs; oops
  • fix: fix failures on ruby 1.9.3
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

garybernhardt/selecta was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 8f254747ed181c4b91f5662f4eb1859734478b54 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.