v0.3.2
What's Changed
Fix silent drops in import merger and add line-level safety nets
Import merger fixes:
- Single-line ours + multi-line theirs: merge specifiers instead of keeping only ours's single line
- Parse specifiers from single-line imports (fixes empty
theirs_specscausing all specifiers to be removed when theirs is single-line) - Remove wrong
base_specsskip in "truly new imports" section that dropped theirs imports when source existed in base
Safety nets (run on every clean merge):
- Line-level invariant: lines present in all 3 inputs must appear in output, otherwise fall back to git
- Two-tier added-lines check: significant lines (>40 chars) trigger fallback at threshold 0, shorter lines at threshold 3, with substring matching to avoid false positives from reformatting
Verification
Verified on JetBrains git_good_bench: 0 true silent drops across 450 merges, 667 conflict files (Python, Java, Kotlin). Issues #58 and #60 reproductions both produce correct output.
Full Changelog: v0.3.1...v0.3.2
What's Changed
- chore: bump sem-core from 0.3.20 to 0.3.23 by @sideeffffect in #59
Full Changelog: v0.3.1...v0.3.2