|
| 1 | +# Changelog |
| 2 | + |
| 3 | +## [0.8.0] - 2026-03-06 |
| 4 | + |
| 5 | +### 🎉 Theodore Release |
| 6 | + |
| 7 | +A landmark release named for Theodore Stover, born the same day this version shipped. 187 files changed, 35,000+ lines added across 60+ commits — semfora-engine grew up today. |
| 8 | + |
| 9 | +### ⚡ Performance |
| 10 | + |
| 11 | +- **Streaming symbol index queries** — reduced peak memory by loading symbols on-demand instead of all at once (#52) |
| 12 | +- **Reduced peak RAM during indexing** — explicit drops and streaming serialization cut memory usage on large repos (#110) |
| 13 | +- **Compressed JSONL index files** — gzip compression for `symbol_index` and `signature_index` reduces disk usage (#109) |
| 14 | +- **Consolidated symbol shards** — single indexed file replaces multiple shard files for faster lookups (#108) |
| 15 | + |
| 16 | +### 🚀 New Features |
| 17 | + |
| 18 | +- **`--token-savings` flag** — global flag on all commands showing input chars vs output chars compression ratio. On PyTorch (216K symbols): 16,871x compression — 5.4M tokens down to 321 |
| 19 | +- **`.semforaignore` support** — project-level ignore file using gitignore syntax, plus `--exclude`/`--include` CLI flags (#33) |
| 20 | +- **`.gitignore` support during indexing** — `index generate` and `analyze` now respect `.gitignore`. Add `--no-gitignore` to disable (#32) |
| 21 | +- **Dependency/vendor detection** — auto-detect third-party code with `--exclude-deps`, `--exclude-generated`, and `--first-party-only` flags. Reports first-party vs vendor breakdown (#35) |
| 22 | +- **Incremental/partial indexing** — `index generate --path` for partial indexes, `index update` for changed-files-only, `index prune` for cleanup (#36, #31) |
| 23 | +- **Enriched `query overview`** — now includes `total_files`, `total_modules`, `total_symbols`, `language_breakdown`, `file_type_stats`, and `top_risk_modules` |
| 24 | +- **Enriched `trace` output** — resolved symbol names, file paths, line ranges, and `depth` field for call chain visualization |
| 25 | +- **Enriched `validate --duplicates`** — summary stats: `total_clusters`, `duplicated_percentage`, `top_modules_by_duplicates`, plus `--limit` flag |
| 26 | +- **Filtered search results** — ripgrep fallback no longer returns noise from non-code files (CODEOWNERS, Cargo.lock, etc.) |
| 27 | +- **Simple JSX/TSX wrapper detection** — boilerplate filter for shadcn/ui-style components (Card, Button, etc.) across JS/TS/JSX/TSX (#100) |
| 28 | +- **Inheritance edge tracking** — `RefKind::Inherits` variant in call graph for class inheritance relationships (#28) |
| 29 | +- **Async flag detection** — CommonJS exports now correctly detect async functions (#27) |
| 30 | +- **Package metadata on external symbols** — trace output includes package info for `ext:` nodes (#30) |
| 31 | +- **Schema enrichment v2** — async detection, inheritance tracking, import analysis, return types (#20, #21) |
| 32 | +- **BM25 SQLite persistence** — semantic search indexes persisted for faster subsequent queries |
| 33 | +- **Benchmark timing** — `benchmark` command now includes per-file timing breakdown (#104) |
| 34 | + |
| 35 | +### 🐛 Bug Fixes |
| 36 | + |
| 37 | +- **`validate` summary stats** computed from all clusters, not just paginated subset (#97) |
| 38 | +- **Redundant `clusters` key** removed from validate JSON output (#98) |
| 39 | +- **Divergent duplicates** no longer bypass `--threshold` in validate (#99) |
| 40 | +- **`validate` with no scope** now returns an error instead of silently falling through (#103) |
| 41 | +- **`benchmark --format json`** flag now respected (#102) |
| 42 | + |
| 43 | +### 📖 Documentation |
| 44 | + |
| 45 | +- **Man page** — complete `semfora-engine.1` roff man page covering all commands and options (#42) |
| 46 | +- **Installation docs** — `docs/install.md` with from-source, GitHub releases, and package manager instructions (#44) |
| 47 | +- **Test fixtures** — 6 open-source repos (tokio, next.js, kubernetes, spring-boot, rails, llvm-project) documented for cross-language testing (#43) |
| 48 | +- **CLI audit findings** — comprehensive audits of `analyze`, `index`, `search`, `query`, `trace`, `validate`, `mcp-server`, and `benchmark` commands (#45-#51) |
| 49 | +- **Improvement audit** — `docs/IMPROVEMENT_AUDIT.md` with prioritized recommendations (#54) |
| 50 | +- **QUICKSTART.md** — getting started guide |
| 51 | + |
| 52 | +### 🏗️ Infrastructure |
| 53 | + |
| 54 | +- **Apache 2.0 license** — switched from MIT for enterprise adoption. NOTICE file with attribution to Jeremy Ryan Stover (#53) |
| 55 | +- **GitHub Actions release pipeline** — automated binary builds for Linux (x86_64, aarch64), macOS (x86_64, aarch64), Windows, with checksums (#44) |
| 56 | +- **crates.io publishing** — automated `cargo publish` on stable releases |
| 57 | +- **Deduplicated `collect_files`** — three separate implementations unified into one shared module (#34) |
| 58 | + |
| 59 | +### 📊 Stats |
| 60 | + |
| 61 | +- **187 files changed**, **35,281 insertions**, **6,715 deletions** |
| 62 | +- **60+ commits** from 5 contributors |
| 63 | +- Tested against PyTorch (216K symbols), tokio, Next.js, Kubernetes, Spring Boot, Rails, and LLVM |
| 64 | + |
| 65 | +--- |
| 66 | + |
| 67 | +## [0.7.0-beta] - Previous release |
| 68 | + |
| 69 | +Initial beta release with core semantic analysis, TOON output, duplicate detection, call graph tracing, BM25 search, and MCP server support. |
0 commit comments