Repository navigation
@christophervr/ole2 0.10.1
Upgrade to 0.10.1 before writing binary VSD files. The released 0.10.0 compressed text writer could return a file that Visio rejects, even for a same-length edit. An owned native Hello\n\n → Jello\n\n case reproduced the failure. The previously accepted World case did not establish safety for other text patterns.
npm install @christophervr/ole2@0.10.1This release fits compressed edits while preserving both the original encoded allocation and exact decoded block length, without adding decoded padding. Bounded token variations find an exact fit or reject the edit atomically, retaining bytes, model state and revision. Five production text cases passed native Visio open, save and reopen; only captured target text changed. No-op and repeated-edit artifacts are checked byte-for-byte.
It also refuses PPT slide/outline text edits whose owning container overlaps another live persist object or save-history metadata, and captures caller selection fields once. Legitimate native-verified title output remains byte-identical.
Validation: 635 tests, typecheck, build, packed-consumer and documentation checks passed, with independent source and native-artifact review. Native evidence covers declared semantic fields; rendering, complete legacy parity, nonempty masters/layers and general ShapeSheet evaluation remain unverified. Native VSD translation remains unsupported and is excluded from this release.
Source: 92a2750c9031dd97448b00dae7fd9a2807be6570.
Native evidence and reproduction · Visio safety history.
Expanded validation on the same released source passed 20 additional native Visio text cases covering varied ASCII, Japanese/Greek/Cyrillic, combining marks, emoji, seeded random text, repeated edits and restoration. Five representative cases also passed native save/reopen; 33 invalid edits were refused atomically, and two files serialized after refusals reopened unchanged. All 27 owned native processes closed. These checks compare captured semantics on two owned flat fixtures; they add no rendering or translation fidelity claim.