This release includes 1 breaking change for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
ReleasePort's take
Light signalThe release fixes multiple UI rendering bugs in header/footer editing, table handling, and anchored objects across page breaks. It also adds MS Word‑style watermark support.
Why it matters: Bug severity is uniformly 40; addressing these issues improves document fidelity for developers and SREs managing docx workflows.
Summary
AI summaryUpdates Patch Changes, Minor Changes, and eaa6f7f across a mixed release.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
Enables editing and tracking changes inside footnote and endnote bodies. Enables editing and tracking changes inside footnote and endnote bodies. Source: granite4.1:30b@2026-06-04-audit Confidence: low |
— |
| Feature | Low |
Adds MS Word‑style watermark support (text and picture watermarks). Adds MS Word‑style watermark support (text and picture watermarks). Source: llm_adapter@2026-06-04 Confidence: high |
— |
| Bugfix | Medium |
Fixes text selection not showing in Vue headers and footers. Fixes text selection not showing in Vue headers and footers. Source: llm_adapter@2026-06-04 Confidence: high |
— |
| Bugfix | Medium |
Preserves mid-body section breaks on headless roundtrip. Preserves mid-body section breaks on headless roundtrip. Source: llm_adapter@2026-06-04 Confidence: high |
— |
| Bugfix | Medium |
Prevents long table row content from being cut off across page breaks. Prevents long table row content from being cut off across page breaks. Source: llm_adapter@2026-06-04 Confidence: high |
— |
| Bugfix | Medium |
Renders vertically‑merged table cells correctly when tables cross page breaks. Renders vertically‑merged table cells correctly when tables cross page breaks. Source: llm_adapter@2026-06-04 Confidence: high |
— |
| Bugfix | Medium |
Stops squashing anchored images near the right edge of a page. Stops squashing anchored images near the right edge of a page. Source: llm_adapter@2026-06-04 Confidence: high |
— |
| Bugfix | Medium |
Honors horizontal position of anchored text boxes in headers and footers. Honors horizontal position of anchored text boxes in headers and footers. Source: llm_adapter@2026-06-04 Confidence: high |
— |
| Bugfix | Medium |
Preserves table row‑level conditional formatting on headless roundtrip. Preserves table row‑level conditional formatting on headless roundtrip. Source: llm_adapter@2026-06-04 Confidence: high |
— |
| Bugfix | Medium |
Renders anchored text boxes with top‑and‑bottom wrapping at their OOXML position. Renders anchored text boxes with top‑and‑bottom wrapping at their OOXML position. Source: llm_adapter@2026-06-04 Confidence: high |
— |
| Bugfix | Medium |
Improves watermark fidelity across headers and on title/even pages. Improves watermark fidelity across headers and on title/even pages. Source: llm_adapter@2026-06-04 Confidence: high |
— |
| Bugfix | Low |
Fixes caret, drag‑selection, and table cell selection highlights in header/footer editing. Fixes caret, drag‑selection, and table cell selection highlights in header/footer editing. Source: granite4.1:30b@2026-06-04-audit Confidence: low |
— |
| Refactor | Low |
`computeHfCaretRectFromView` and `computeHfSelectionRectsFromView` now require a `section` argument. `computeHfCaretRectFromView` and `computeHfSelectionRectsFromView` now require a `section` argument. Source: granite4.1:30b@2026-06-04-audit Confidence: low |
— |
Full changelog
Minor Changes
-
5e51a9b: Fix the caret, drag-selection highlight, and table cell-selection highlight appearing in the header while editing the footer. The active header/footer is now resolved per section, so they render in the region being edited. The header/footer caret also stays glued to the text while scrolling instead of drifting away. The hovered region shows a text cursor in edit mode, and the inactive region shows a normal arrow. Fixes #671
The
@publiccomputeHfCaretRectFromViewandcomputeHfSelectionRectsFromView(exported from@eigenpal/docx-editor-core/layout-bridge) now take a requiredsection: 'header' | 'footer'argument. -
1be9cf5: Edit and track-change footnote and endnote bodies.
Note bodies are now serialized on save, so edits and tracked changes (
w:ins/
w:del) inside footnotes and endnotes persist instead of being dropped — the
run model preserves the separator markers and the in-body auto-number marks, and
repackDocxwritesword/footnotes.xml/word/endnotes.xmlfrom the model.
DocxReviewer.getChanges()gainsincludeFootnotes/includeEndnotesoptions;
when set, tracked changes inside note bodies are reported withnoteId/
noteType. -
0f3eb97: Fix watermark fidelity when saving to OOXML. Picture watermarks applied across a document's headers now bind each header to its own image relationship (previously the same relationship id was reused across header parts, which could break the image on title or even pages). Watermarks now also appear on title pages and even pages by creating the first/even header parts a section displays but lacks, without disturbing existing header inheritance. Picture watermarks keep the image's aspect ratio instead of being forced into a square.
-
eaa6f7f: Add MS Word–style watermarks. Watermarks in opened documents now render behind the body content on every page, and a new Insert → Watermark dialog lets you add, edit, or remove text watermarks (preset or custom, with font, color, diagonal/horizontal layout, and semitransparent options) and picture watermarks (with scale and washout). Watermarks round-trip back to valid OOXML so Word shows the same result.
Patch Changes
- 15966fc: Stop squashing anchored images that sit near the right edge of the page. A floating image positioned so its width reaches into the page margin (e.g. a logo flush to the top-right) was being capped to the remaining content width by the global
img { max-width: 100% }reset and then stretched against its fixed height. Painted floating images now keep their exact OOXML size. - 2003cec: Honor an anchored text box's horizontal position in headers and footers. A text box anchored centered relative to the page (e.g. a "For Internal Use" classification banner) now renders centered instead of pinned to the left.
- cb5f622: Preserve mid-body section breaks (
w:pPr/w:sectPr) on headless roundtrip. A parseDocx → repackDocx roundtrip no longer collapses a multi-section document down to its final section. Fixes #680. - 5fcca3b: Content controls (
w:sdt) inside footnote and endnote bodies now round-trip through the editable model instead of freezing the whole note to a verbatim copy. Notes whose only block-level construct is a content control stay fully editable; the verbatim fallback now applies only to notes carrying block-level bookmarks orw:customXml. - f73706e: Stop dropping several properties on headless roundtrip. Table row-level conditional formatting (
w:trPr/w:cnfStyle, e.g. header-row/banding context) is now serialized, matching the cell path. Explicit "off" formatting overrides also survive: a run or paragraph that cancels a style value (<w:strike w:val="0"/>,<w:keepNext w:val="0"/>, and similar for doubleStrike, smallCaps, allCaps, outline, shadow, emboss, imprint, vanish, rtl, cs, keepLines, contextualSpacing, pageBreakBefore, suppressLineNumbers, suppressAutoHyphens, bidi) previously serialized to nothing and silently re-inherited the style value. - 0d5beed: Fix long content in a table row getting cut off / hidden instead of flowing across pages. A table cell now measures its stacked paragraphs the way it paints them — collapsing adjacent paragraph before/after spacing (like Word) instead of adding it — so the row's height matches what's rendered and page breaks land on whole lines instead of slicing a line in two. Selecting text across a table that spans a page break no longer scatters selection highlights into the gap between pages, and contextual spacing is now suppressed inside table cells. Fixes #570.
- 5b38696: Render vertically-merged table cells like Word when a table crosses a page. Merged cells now keep their column and borders on the continuation page (instead of disappearing and shifting the other cells), and a tall merged cell flows its content across the page break (the row breaks mid-content like Word, honoring
w:cantSplit). Each fragment closes with a border on the cut edge at the page break — including the merged column when it spans the boundary — and horizontal cell borders no longer render unevenly thick due to sub-pixel positioning. Fixes #666. - 15966fc: Render anchored text boxes with
topAndBottomwrapping at their OOXML position instead of in the body flow. A title banner pinned to the top of the page (a shape withwp:wrapTopAndBottomand a page-relative vertical anchor) now sits flush at the page top with the body text flowing below it, matching Word, instead of being dropped into the text where its anchor paragraph happens to fall. - f3d6861: Fix text selection not showing in Vue headers and footers. Selecting text while editing a header or footer now paints the highlight (the body overlay was suppressed in HF mode but the HF rects were never drawn), and double/triple-click word and paragraph selection resolves against the header/footer text instead of a body run at the same position. On multi-page documents, the caret and selection now render on the header/footer instance being edited rather than always on page one's copy. Fixes #691
Breaking Changes
- The `computeHfCaretRectFromView` and `computeHfSelectionRectsFromView` functions now require a mandatory `section: 'header' | 'footer'` argument.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Docx Editor
All releases →Related context
Related tools
Earlier breaking changes
- v@eigenpal/[email protected] Shared i18n package extracted into @eigenpal/docx-editor-i18n.
- v@eigenpal/[email protected] `showPrintButton` prop removed from `<DocxEditor>` and toolbar components.
- v@eigenpal/[email protected] Toolbar naming unified across React and Vue adapters; classic toolbar removed.
- v@eigenpal/[email protected] Agent UI components relocated to new agent packages and API changed.
- v@eigenpal/[email protected] Shared i18n package extracted from adapters into dedicated locale bundle.
Beta — feedback welcome: [email protected]