Skip to content

v0.7.0

Choose a tag to compare

@mkorpela mkorpela released this 26 Feb 11:08
· 1107 commits to main since this release
Immutable release. Only release title and notes can be modified.
c749981

v0.7.0

4 bug fixes discovered through real-world contract redlining.

Bug Fixes

  • Tab normalization — get_run_text() now normalizes literal \t characters to spaces, consistent with how <w:tab/> elements are handled. Previously this caused spurious track changes showing tab deletions and space insertions.

  • Bold/italic inheritance bleed — Replacing formatted text with plain text no longer incorrectly inherits the deleted run's bold or italic properties. _apply_run_props() now accepts a suppress_inherited flag that explicitly turns off formatting carried over via deepcopy of the anchor run's rPr.

  • Markdown marker leaking into diffs — _trim_common_context() now backtracks prefix and suffix trim points to avoid leaving unbalanced ** or _ markers in the edit delta. It also absorbs balanced outer wrappers (e.g. **Bold** → **Bolder** now diffs as Bold → Bolder).

  • Overlapping edit detection — apply_edits() now tracks occupied character ranges across both the indexed and heuristic edit paths. When a second edit targets a range already covered by an applied edit, it is skipped rather than applied on top of shifted indices, preventing document corruption.

Thank you @sarturko-maker for the reports!