Skip to content

Commit e62b335

Browse files
committed
release: v0.8.0 — The Theodore Release
187 files changed, 35K+ lines added. Major features: - Token savings flag, .semforaignore, gitignore support - Vendor detection, incremental indexing - Performance: streaming queries, compressed indexes, consolidated shards - Apache 2.0 license, GitHub Actions release pipeline - Comprehensive CLI audits and documentation
1 parent aaaea78 commit e62b335

2 files changed

Lines changed: 70 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
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.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "semfora-engine"
3-
version = "0.7.7-beta"
3+
version = "0.8.0"
44
edition = "2021"
55
description = "Semantic code analyzer with TOON output"
66
license = "Apache-2.0"

0 commit comments

Comments
 (0)