v0.43.0
Natural groups
Read your codebase as the communities it actually forms: who depends on whom, which groups are locked in a cycle, how heavy the shared kernel is, and where to start cutting. The page names the verdict in plain words and the map draws it.
Three project rules come with it, so the boundaries you just drew stay drawn: no_community_cycles, max_community_cross_share and no_cross_community_dependencies.
- feat: Simplified communities by @Halleck45 in #191
Architecture
Modules are now named the way an import names them (Go path, Python dotted path, Rust crate path, TypeScript path), so the map no longer collapses into a single node. Dependencies are read from the syntax tree for PHP, Java and C# too.
- Keep the architecture map from collapsing into one node by @Halleck45 in #188
AI architecture classification is now opt-in
Breaking change. The AI-based architecture classification no longer runs by default. Pass --architecture to enable it.
- [BC] feat(cli): add optional architecture analysis flag by @Halleck45 in #184, #186
Per-source configuration
Each project of a monorepository can hold its own .ast-metrics.yaml. The closest configuration wins whole, configurations never merge, and a project file reads the same whether the project is analyzed alone or inside the monorepository.
- feat: per-source configuration, so each project of a monorepository has its own rules by @Halleck45 in #187
Fixes
- fix(python): count a triple-quoted string as a comment only when it is a bare statement by @Halleck45 in #189
- fix(tui): nil-safety in class table and stable language menu ordering by @acornforth in #194
Build & distribution
- ci(distribute): pin and tag the Python bridge on every release by @Halleck45 in #190
- fix(ci): read workflow_run inputs through env vars in distribute by @Halleck45 in #192
New contributors
- @acornforth made their first contribution in #194
