Skip to content

v9.6.2 - Compatibility Mode Support

Choose a tag to compare

@ItMeDiaTech ItMeDiaTech released this 06 Feb 03:27
· 391 commits to main since this release

What's New in v9.6.2

Compatibility Mode Support (Phases 1-3)

Detect and upgrade Word compatibility modes. Equivalent to clicking File > Info > Convert in Microsoft Word.

  • getCompatibilityMode() - Returns Word version mode (11/12/14/15)
  • isCompatibilityMode() - Check if document targets a legacy Word version
  • getCompatibilityInfo() - Full parsed compat settings including legacy flags and modern entries
  • upgradeToModernFormat() - Upgrade to Word 2013+ mode, removes legacy flags, adds modern settings

Settings.xml is now preserved during round-trip processing with schema-aware merge on save. Documents are no longer silently upgraded to mode 15.

Preserved Element Types

New element types for round-trip fidelity:

  • AlternateContent - mc:AlternateContent blocks (Word 2010+ shapes/VML fallback)
  • MathParagraph / MathExpression - Math equations (m:oMathPara, m:oMath)
  • CustomXmlBlock - Custom XML data (w:customXml)
  • PreservedElement - Generic preserved elements (w:proofErr, w:permStart, w:permEnd, w:altChunk, w:ruby)

Corruption Fixes

  • Auto-generation of mc:Ignorable attribute prevents Word "unreadable content" errors
  • Orphaned numId references, missing people.xml authors, and pPrChange attribute ordering fixed
  • 15 regression tests added

Enhanced Element Parsing

  • 14 new Run content types (symbols, position tabs, embedded objects, date fields)
  • 6 new Run formatting properties (complex script, multi-font support)
  • 40+ page number formats per ECMA-376
  • Table band size, row width/spacing, section footnote/endnote properties
  • formatDateForXml() utility for OOXML date compliance

Breaking Changes

  • Document.normalizeTableLists() removed (moved to consumer applications)
  • BaseManager abstract class removed (no external API impact)
  • Unused all and tailwindcss dependencies removed

Stats

  • 2260+ tests passing across 99 test suites
  • 118 source files, 73,500+ lines of code

See CHANGELOG.md for full details.