Skip to main content

Changelog

Releases shipped to crates.io and Homebrew. Latest: v0.7.1.

v0.7.1

Latest
2026-05-09

v0.7.0

2026-05-09

Features

  • add AnalysisContext and ScanMode types5740e04
  • add baseline fingerprint module with entity, multi-entity, file-level hashing82b99ee
  • add baseline load/save/match with dedup and prunece58966
  • add confidence scoring to N+1 detector with severity adjustment9631d1b
  • add confidence_threshold to detector config overridesf90dc24
  • add consumer pattern exemptions to N+1 detector (Phase 0.5)58efcc5
  • add graph-aware delta detection — changed node mapping and impact walk1738e4c
  • add merge-base LCA algorithm to pure Rust git implementation4eb010d
  • add post-detection filter stage for baseline, config overrides, attributioncd40a1c
  • analyze--no-auto-calibrate flag plumbingd5d7af4
  • analyzeapply user FP/TP labels during postprocess6ef61d9
  • analyzeauto-save StyleProfile on first analyze9ffaf61
  • apply session persistence infrastructure from stash8b187ff
  • cacheadd fingerprint-based auto-invalidationcb01e8b
  • calibrateadd StyleProfile::function_count() accessor176a9a7
  • claude-hookatomic_write with mode + symlink preservationc720ff0
  • claude-hookdeny-response builder with score line + top-5 truncationf31e9bd
  • claude-hookfull hook runtime (stdin → diff → deny)cf12cfe
  • claude-hookgit-commit regex matcher with full test inventory4b758f8
  • claude-hookinstall flowfe3f4cc
  • claude-hookJSON mutators (insert, filter, cleanup) for settings.json041e016
  • claude-hookread_settings_or_empty with size + type + JSON validation5d54a06
  • claude-hookscaffold subcommand structure2460f5d
  • claude-hooksettings_path resolver with CLAUDE_CONFIG_DIR + home crate9cb8b2a
  • claude-hookuninstall flow with precise filter32f4a15
  • cliremove clean command, add --force-reanalyze0cdab12
  • cliwire up baseline command (update, add, prune)ea44303
  • command-injectiondetect shell metacharacters in static-literal commands45105f3
  • complete commit-aware analysis pipeline04b81e1
  • configadd [per_file_ignores] table for path-glob to detector suppressions13fdb2a
  • configadd Serialize derive to ProjectConfig and nested typesea92443
  • detectorstop-10 slowest-detector summary in runner1b04715
  • diffadd attribution-aware markdown formattercbc43cf
  • diffadd hunk-level attribution parser for git diff -U07cf9eea
  • diffauto-analyze when no cached findings existc63cfb2
  • diffshow hint when findings exist but are filtered by attribution271f725
  • diffwire hunk attribution + update formatters with --all/--changed flags2dfa7aa
  • enable jemalloc as default allocator46c4975
  • engineadd fingerprint to session cache01340ad
  • enginewire baseline loading into filter stage3cce59e
  • feedbackadd load_label_map() for finding_id → is_tp lookupa6217eb
  • git/rawadd commit and tree parsersede36b4
  • git/rawadd DEFLATE decompressor (RFC 1951)3ce80bb
  • git/rawadd line-level blame algorithm7f330bf
  • git/rawadd loose object reader3629558
  • git/rawadd pack index v2 reader3424efe
  • git/rawadd packfile reader with delta reconstructionebdee83
  • git/rawadd RawRepo with discovery, refs, and object lookup43f7504
  • git/rawadd SHA-1 implementation (RFC 3174)137ee98
  • git/rawadd time-sorted revwalk1959684
  • git/rawadd tree-to-tree diff with Myers blob difff72b75a
  • git/rawfinalize public API surface in mod.rs28d0131
  • git/rawscaffold module with error type and OIDaf99e92
  • graphadd hand-rolled Tarjan SCC, dominators, and WeightedOverlay3934e8b
  • graphadd NodeIndex newtype (replaces petgraph NodeIndex)693e3aa
  • graphenable BFS vertex reordering at freeze time5525afd
  • graphhand-roll string interner (replace lasso)d8102a9
  • httpreplace ureq with hand-rolled HTTP/1.1 client over rustls5ee70e1
  • logreplace tracing-subscriber with hand-rolled stderr subscriber80d454f
  • modelsadd FindingStatus, Attribution, and Confidence enums506f45a
  • mutual-recursionhonor repotoire:ignore suppression comments1f8908d
  • ngramstateful cross-line tokenizer with multi-line string and block-comment awareness8b2242f
  • parserslog tree-sitter ERROR nodes at debug levelbf5f218
  • quantizereplace nalgebra with hand-rolled dense matrix + Householder QRa20a7de
  • security/python-importsadd aliased-module import resolver0e0fa12
  • securityapply Python aliased-module import resolution to eval/command/pickle/crypto detectorse34cdec
  • securityapply Python from-import alias resolution to eval/command/pickle detectors3aadf2a
  • telemetryenrich detector_feedback with language, title, reasonfcf4682
  • tuireplace ratatui + crossterm with hand-rolled mini TUI frameworkf03e4ae
  • wire filter stage into engine pipeline between postprocess and score8989f58

+17 internal changes (build, test, refactor) →

v0.6.0

2026-03-30

Features

  • add 4 bus factor detectors (single-owner, silo, orphaned, critical-path)eeca7b6
  • add DOA-based ownership model and config for bus factor analysis1b7df5a
  • integrate ownership model into reporting layer19d404e
  • predictiveadd L3 quantized embedding scorer with cache and RelationalScorer enumbdf682e
  • predictivewire L3 embedding scorer into analysis pipeline with background computation16a5ec7
  • predictivewire L3 quantized embeddings into analysis pipeline47af2c2
  • quantizeadd knn_search_rerank + benchmark both ADC and rerank recall09cba14
  • quantizeadd TurboQuant benchmark harness (Task 5)71d7c15
  • quantizeadd TurboQuant vector quantization module (Tasks 1-3)7212c79
  • wire ownership model into pipeline and AnalysisContexta944bfa

+8 internal changes (build, test, refactor) →

v0.5.0

2026-03-19

Features

  • enhanced version output with build info, remove stale action.ymlb9cbe47

v0.4.0

2026-03-19

Features

  • --min-confidence flag and config option for confidence-gated output422cf87
  • add --json-sidecar flag for CI actions (single analysis, two outputs)0cbe43a
  • add 3 graph-primitives detectors (SPOF, bridge risk, mutual recursion)f454412
  • add 5 Phase B GraphQuery methods + CodeGraph wiring88bac51
  • add AnalysisContext, FileProvider shim, and new Detector trait methods35a51cc
  • add AnalysisContext::test() constructor for unit tests747f9a5
  • add API surface detection, downgrade security findings on API definitions5351e8f
  • add bypass_postprocessor() trait method for per-detector GBDT bypass21f0e7b
  • add co-change config support + Phase B integration teste486154
  • add CoChangeMatrix with decay-weighted co-change computation5ce324d
  • add CommunityMisplacementDetector (file vs Louvain community)0fd7fa2
  • add compute_edge_fingerprint() to GraphStore for topology change detectionbc3674e
  • add context enrichment to AnalysisContext (Tasks 6-10.5)f8b18a0
  • add core diff logic with fuzzy finding matchingdf2beaf
  • add DetectorContext — shared callers/callees maps, file contents, class hierarchy in precompute599ecf8
  • add DetectorInit, RegisteredDetector trait, and registry infrastructureb79a6a6
  • add DetectorScope enum and detector_scope() trait methoda6acce0
  • add diff output formatters (text, JSON, SARIF)84e0dad
  • add e2e validation script for self-analysis and real-world projects02f7eab
  • add engine persistence (save/load) and rewire MCP to AnalysisEngine43e185f
  • add export annotations to C/C++ parsers, complete C++ class method extraction1982e5f
  • add file_extensions/content_requirements to 12 taint detectorsc324eec
  • add file_extensions/content_requirements to all remaining detectors188a323
  • add FileIndex with lazy pre-computed content6e473b6
  • add get_all_edges() to GraphStore for determinism testingf81cd70
  • add GraphPrimitives accessor methods to CodeGraph0ac4b54
  • add GraphPrimitives struct with empty compute()0b0514c
  • add GraphWide detector_scope() overrides for cross-file detectors1ae67a2
  • add HiddenCouplingDetector (co-change without structural edge)304850d
  • add NodeIndex-based GraphQuery API and migrate key consumers (Phase C)ec1f57a
  • add PageRankDriftDetector (static vs weighted importance divergence)a9a556a
  • add per-detector timing report to --timings flag651eaf7
  • add persistent graph cache — bincode save/load with index rebuilde816b9f
  • add Phase B fields to GraphPrimitives + weighted overlay stubc91b3cf
  • add PrecomputedAnalysis alias and to_context() on GdPrecomputed2da4723
  • add RegisteredDetector impl to 81 detectors and populate DETECTOR_FACTORIES5df3d61
  • add remove_file_entities() for graph delta patching861349a
  • add repotoire diff CLI command289f6ba
  • add repotoire_diff MCP toolbe2b3db
  • add shared AST fingerprinting utility for AI detectors2ade359
  • add standalone detector runner with pure functions23a07de
  • add TemporalBottleneckDetector (change-propagation critical paths)85995ca
  • AIBoilerplateDetector uses tree-sitter AST fingerprinting for structural clustering574d940
  • AIChurnDetector uses git2 for function-level churn analysis4a3261b
  • AIDuplicateBlockDetector uses tree-sitter normalized AST for cross-file duplicate detection8eb0085
  • AINamingPatternDetector analyzes variable names in function bodiesd635e32
  • cacheadd cross-file value dependency tracking to incremental cache3e2f251
  • CLI analyze uses persisted AnalysisSession for incremental re-analysis2e46373
  • complete detector registry with all 100 detectors in DETECTOR_FACTORIES549764d
  • confidence display in all 5 output formatse15cfaf
  • confidence enrichment pipeline with content classifier and multi-detector signals4c82ae4
  • create engine module with public API types and stage stubs57141ec
  • detect callback function arguments as call edges in JS/TSa1a18b6
  • detect exported functions/classes in all parsers via annotation781da9e
  • emit synthetic Calls edges for decorated functions2a80236
  • emit trait implementation Inherits edges in graph88d3266
  • engineimplement AnalysisEngine with cold analysis path7910435
  • engineimplement incremental analysis path with graph patching4ad9fb9
  • extend ContentFlags from 2 to 16 categories77bcfe0
  • extend GraphQuery trait with 10 primitive query methods0181791
  • extract JS/TS decorator names into annotations20b3d9b
  • extract Python decorator names into function/class annotationsd69efa9
  • extract Rust #[attribute] into function/class annotations4aaed87
  • extract shared cross-line user-input helper with tests63b2c6f
  • file-level suppression (repotoire:ignore-file) and auto-suppress detector test fixtures9f5e370
  • graph-verified semantic overlap for clone detection27e7094
  • harden analysis pipeline with symlink/traversal/size protectionc39fc72
  • implement 7 parser features (doc comments, annotations, React patterns)9b380b2
  • implement 8 stage wrappers for analysis pipeline rewritef7b3c79
  • implement all 6 graph primitive algorithms with rayon parallelism0ebfb21
  • implement Builder/Frozen graph architecture (Phase A)9329ae8
  • implement Dijkstra-based weighted betweenness centralityea57380
  • implement GraphQuery primitive overrides for CodeGraph and Arc<CodeGraph>5767e48
  • implement Louvain community detection algorithm6f37ba8
  • implement weighted overlay graph builderc6df966
  • implement weighted PageRank algorithm1cdf141
  • improve CLI help text with examples and descriptions6b2f7bd
  • integrate AnalysisSession into MCP server for incremental analysis269ebba
  • mandatory default confidence on all findings by categoryad4265e
  • mcpadd AI tool handlers (search_code, ask, generate_fix)149c100
  • mcpadd analysis tool handlers (analyze, get_findings, get_hotspots)e38e80d
  • mcpadd evolution tool handler (query_evolution -- 7 temporal query types)f6ee810
  • mcpadd file tool handlers (get_file, get_architecture, list_detectors)65a61a6
  • mcpadd graph tool handlers (query_graph, trace_dependencies, analyze_impact)b035add
  • mcpadd parameter structs with schemars JSON Schema generationa79634a
  • mcpimplement rmcp ServerHandler with 13 tools via tool_router509fec7
  • mcpwire rmcp server with stdio + HTTP transports and CLI --http-port flagb444352
  • ML classifier pipeline — GBDT model, 28 evidence-backed features, debt scoringd0c5f19
  • multi-dimensional Rust type evaluation in LazyClass detectorf355354
  • opt 22 security detectors into GBDT bypassd261a1c
  • precision scoring harness for benchmark suitefdcc04c
  • predictiveadd HierarchicalSurprisalDetector replacing flat surprisal55cfcfa
  • predictiveadd L1 token scorer and L2 structural scorer84faea9
  • predictiveadd L1.5 dependency-chain surprisal scorer6769332
  • predictiveadd L3 relational scorer with per-edge-type node2vec797e93b
  • predictiveadd L4 architectural module-level scorer2ca39d1
  • predictiveadd module skeleton and compound scoring785ed50
  • predictiveport node2vec + word2vec from repotoire-fastd13b2e6
  • predictivewire up PredictiveCodingEngine orchestrating all 5 levelsf266e66
  • rearchitect 8 top detectors with context-aware FP reduction1a98737
  • refactor UnreachableCodeDetector — remove dead function overlap, scope-aware return detectione6448a6
  • replace DeadCodeDetector pattern lists with graph flags and role-based gatingf7b6295
  • replace LazyClass EXCLUDE_PATTERNS with role analysis and adaptive thresholds5211f76
  • rewire CLI analyze to use AnalysisEngine via run_engine()d94d97f
  • rewrite AIMissingTestsDetector with graph-based test reachability3f9c25f
  • rewrite DeadStoreDetector with ValueStore-based analysis92bd41c
  • rewrite watch mode to use AnalysisSession for incremental updates3cb169c
  • role-aware ShotgunSurgery thresholds with ContextHMM utility detection85a0451
  • seed model training pipeline — export-training flag, bootstrap labels, embedded GBDTa900686
  • selective normalization in AST fingerprinting for clone detection72cbc97
  • session persistence optimization and detector skip filtering292f01c
  • size-adaptive similarity threshold for clone detection6d531bf
  • skip single-assignment module-scope vars (effectively const)b238200
  • upgrade top 8 detectors with context-based FP reduction4427532
  • valuesadd language configs for all 9 supported languages4b5996c
  • valuesadd SymbolicValue, LiteralValue, BinOp core types with guard railse209439
  • valuesadd ValueStore with query API, Assignment, RawParseValues typese7a95e8
  • valuesbuild ValueStore during graph construction with Variable nodes and propagatione1afd50
  • valuescross-function propagation with cycle detection and depth limitsbd262b3
  • valuesintegrate value extraction into parse phase, reuse tree-sitter treeb3a0060
  • valuestable-driven extraction framework with Python config and node_to_symbolic511013b
  • valuesthread ValueStore through pipeline to detectors via DetectorContext60df4c4
  • wire CoChangeMatrix through git enrich → freeze pipelineca232c9
  • wire ContextHMM + ThresholdResolver into AnalysisContext (Phase 0)9508730
  • wire FileIndex into engine pipeline, call detect_ctx()4b707d1
  • wire GraphPrimitives into GraphIndexes::build()600d6a2
  • wire persistent graph cache into analyze pipeline — load on incremental, save after build29a11f6
  • wire pipeline to Builder/Frozen CodeGraph flow (Phase B)d31706f
  • wire ProjectType into scoring bonuses for framework-aware scoring33ef8f1

+4 internal changes (build, test, refactor) →