What's New
Zero-config language detection for extensionless files
sem now detects 19 languages from file content alone, no extension needed. It scans the first ~20 lines for high-confidence markers (imports, declarations, opening tags). Shebang lines and vim modelines also work.
.semrc custom extension mappings
Drop a .semrc in your project root to map any extension to a supported language:
.xyz = cpp
.j = json
.mypy = python
.gitattributes support
sem reads your existing diff= and linguist-language= patterns automatically. No extra config needed.
Intra-file move detection
When a method moves between classes or impl blocks within the same file, sem now reports it as a move instead of a delete + add.
Parent name context in output
Entity changes now show parent context: Calculator::add instead of just add. Thanks @nminev (#97)
Precise parent suppression
When a container's own declaration changes alongside its children, both are now reported correctly. Thanks @nminev (#98)
Path-based sem entities
sem entities now accepts file/directory paths, skipping invalid files gracefully. Thanks @Celsiusss (#102)
Other
- PHP
.inc/.phtml/.moduleextension support - Depth-limited impact analysis with fallback warning
#[non_exhaustive]onSemanticChangefor safer downstream use