cantino/mcfly
57.3
Adequate · 29 September 2026
5.2k
lines of production code
Rust
primary language
2
measurements over time
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
Neural network ranking and schema migration for history search
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.