All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
codelens estimate— Multi-model cost estimation subcommand- Four pluggable models via
EstimationModeltrait:- COCOMO Basic (Boehm 1981) — classic
E = a × KLOC^b × EAF - COCOMO II (Boehm 2000) — modern calibration with 5 scale factors
- Putnam/SLIM (1978) — Rayleigh-curve conservative estimate
- LOCOMO — LLM token cost model (AI-era code generation)
- COCOMO Basic (Boehm 1981) — classic
--model all(default) shows comparison table across all four models- Per-language cost breakdown for single model mode
- All model parameters configurable via CLI flags (
--eaf,--ck,--d0,--llm-input-price, etc.) - Full output format support (console, JSON, CSV, Markdown, HTML with Chart.js)
- Four pluggable models via
- Default
codelensoutput now includes health score and estimation comparison alongside statistics - HTML estimation templates with consistent header/footer matching existing report pages
Reportenum extended withEstimationandEstimationComparisonvariants- CLI help and examples updated to reflect new
estimatesubcommand
--show-estimateflag (superseded by default output including estimation)
- Deadlock in parallel walker when scanning repositories with more than 1000 files, caused by bounded channel consumer starting only after blocking
run()call returns; fixed by running consumer concurrently viastd::thread::scope
- Hotspot analysis returning empty results due to path prefix mismatch (
./src/main.rsvssrc/main.rs)
codelens health— Code health scoring with pluggable scoring models- Five dimensions: complexity, function size, comment ratio, file size, nesting depth
- Three-level reporting: project, directory, and file
- Grades from A (best) to F (worst)
ScoringModeltrait for custom scoring strategies
codelens hotspot— Change hotspot detection via churn × complexity- Integrates git change frequency with code complexity
- Risk levels: HIGH / MED / LOW
- Configurable time window (
--since 30d,6m,1y, orYYYY-MM-DD)
codelens trend— Codebase trend tracking with snapshots- Save snapshots with
--saveand optional--label - Compare snapshots with
--compare(supportslatest,latest~N, date prefix) - Per-language change tracking (Added / Removed / Changed)
- Snapshots stored in
.codelens/snapshots/as JSON
- Save snapshots with
- Git module (
git/) for repository integration via system git CLI - Full output format support (console, JSON, CSV, Markdown, HTML) for all new commands
- Interactive HTML reports with Chart.js (radar chart for health, bar charts for hotspot/trend)
- Colored CLI help with clap Styles and grouped examples
OutputFormattrait generalized withReportenum to support multiple report types- Project description updated to "High performance code analysis tool"
- P90 percentile used for nesting depth aggregation (instead of max) to reduce outlier impact
--topargument name conflict between subcommands andOutputArgs
- Byte-level state machine counter for fast line classification
- TokenTrie and ProcessMask (bloom filter) for unified token matching
- Precompiled regex patterns with OnceLock caching
- Criterion benchmarks for byte-level counter
- FileAnalyzer switched to byte-level state machine
- Per-thread buffer reuse, read bytes instead of String for zero-copy processing
- Multiline string support for Python, Rust, and other languages
- Improved filter rules for file exclusion
- Homebrew formula update workflow
- Initial Rust implementation of codelens
- High-performance parallel file traversal using
ignorecrate - Support for 70+ programming languages via TOML definitions
- Multiple output formats: Console, JSON, CSV, Markdown, HTML (with Chart.js)
- Smart directory exclusion based on project type detection
- Cyclomatic complexity analysis (function count, nesting depth)
- Respects
.gitignorerules automatically - Cross-platform support (Linux, macOS, Windows)
- Configuration file support (
.codelens.toml) - CI/CD pipeline with GitHub Actions
- Homebrew tap for macOS/Linux installation