Skip to content
CAI
Software that uses CAICheck a score

cantino/mcfly

57.3

Adequate · 29 September 2026

5.2k

lines of production code

Rust

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

McFly is a shell history assistant that replaces default terminal history behavior with a fuzzy-search interface and neural-network-based suggestions. It integrates with Bash, Zsh, Fish, and PowerShell to track commands, rank results using features like age and directory context, and manage history synchronization. The system includes shell initialization scripts, cross-platform binary distribution, and configuration via TOML files.

Features

Initial release of McFly shell history assistant

Introduces McFly, a shell history search and suggestion tool that replaces the default terminal history behavior. The application provides a fuzzy-search interface with configurable key schemes (Emacs and Vim), result sorting (by rank or recency), and directory filtering. It supports Bash, Zsh, Fish, and PowerShell, automatically detecting shell-specific history formats and managing history file synchronization. The tool includes a neural-network-based suggestion engine that weights results by factors such as command age, length, and directory context, and offers commands to dump history in JSON or CSV formats, view usage statistics, and train the suggestion model.

src · high confidence

McFly v0.9.4 release notes and shell initialization scripts

This change introduces the McFly v0.9.4 changelog, which highlights case-sensitive input highlighting, Fish shell fixes, improved dark mode selection visibility, and an upgrade to the Rust 2024 edition. It also adds the core shell initialization scripts for Bash, Zsh, Fish, and PowerShell, which integrate McFly into the user's shell environment by handling history tracking, command search bindings (such as Ctrl+R), and session management.

(repo-wide) · high confidence

Behavioural changes

Homebrew formula deprecated in favor of core repository

The custom Homebrew tap formula for McFly (v0.9.4) is now deprecated and will display a warning directing users to uninstall the tap and install the package from the core Homebrew repository instead. This change ensures users migrate to the official Homebrew core distribution, simplifying maintenance and ensuring they receive updates through the standard Homebrew channel.

pkg · high confidence

Migrate CI infrastructure from Travis CI to GitHub Actions

The project has replaced its Travis CI-based build and deployment pipeline with a new set of shell scripts designed for GitHub Actions. This change introduces a custom \install.sh\ script for end-users to install the binary, which now supports x86 builds on Apple M1 hardware and fetches release tags without requiring \jq\. The CI scripts (\build.bash\, \test.bash\, \before\_deploy.sh\) utilize the \cross\ tool for cross-compilation and package the binary along with shell completions for Bash, Zsh, and Fish into release archives.

ci · high confidence

The history search mechanism now uses a neural network (via a custom SQLite scalar function \nn\_rank\) to rank results based on ten distinct features (such as age, length, exit code, and directory overlap) instead of previous heuristics. This change requires an automatic database schema migration (upgrading to version 3) which adds a \selected\_commands\ table to track user selections and a \selected\ column to the \commands\ table, ensuring backward compatibility for existing users.

src/history · high confidence

Dependencies

McFly v0.9.4 release with Rust 2024 edition and dependency updates

The product has been renamed to McFly and updated to version 0.9.4, migrating the codebase to the Rust 2024 edition. This release updates core dependencies including clap to v4, crossterm to v0.28, and rusqlite to v0.38, while adding support for configuration via TOML files and enabling the sqlite-bundled feature by default.

(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

Score

  • CAI 60 → 57 (-2.9)
  • Rubric changed (rubric-2026.09.9 → rubric-2026.09.17) — scores are not directly comparable.

Lenses

  • Code Health 83 → 83 (+0.0)
  • Architecture 100 → 100 (+0.0)
  • Maturity 53 → 53 (+0.0)
  • Readiness 68 → 50 (-18.0)
  • Security 52 → 62 (+9.5)

Resolved (3)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Off-boarding risk: anonymized user #1

New (8)

  • Ambiguous naming and return type for retrieval methods. find_matches and commands both retrieve commands from history. find_matches implies searching/filtering, while commands implies listing. However, both return a single Command (likely the best match or first item), which is confusing. Additionally, find_matches takes a cmd string for filtering, while commands takes a session_id. The distinction between 'finding' and 'getting' is blurred by the return type.
  • Dependency hygiene PARTLY measured — Cargo dependencies read, dependency currency not (crates.io unreachable)
  • Duplicate type definition for DumpFormat. The same enum/struct appears in both the CLI module and the Settings module, likely representing the same output format for dumping history but defined separately.
  • Duplicate type definition for HistoryFormat. The same enum/struct appears in both the CLI module and the Settings module, likely representing the same concept (shell history file format) but defined separately.
  • Duplicate type definition for InitMode. The same enum/struct appears in both the CLI module and the Settings module, likely representing the same configuration option for initialization mode but defined separately.
  • Duplicate type definition for SortOrder. The same enum/struct appears in both the CLI module and the Settings module, likely representing the same sorting preference but defined separately.
  • Inconsistent naming and return types for 'last' operations. last_command returns a Command object, while last_command_templates returns a String. This suggests last_command_templates might be returning a formatted string or a specific field, but the naming implies a similar retrieval operation. The return type difference makes the API less predictable.
  • Off-boarding risk: anonymized user #1

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

Survey your own repository

cantino/mcfly 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 29 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 6eed8ebd879c257249f1f4e07b8515edb1e9e395 — the exact code this score is about.
  • Scored under rubric-2026.09.17 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-705631bb727e.