Repository navigation
v2.5.0 — 2026-11-11
Highlights
- PDF, PowerPoint and Word are three full outputs of one document.
- A release reaches Maven Central as one deployment.
- The DOCX export writes the page the engine laid out, as a document an editor can change.
- A chart is a Word chart.
- The export says what it could not carry, node by node.
- The same document exports to the same bytes on one platform, when asked to.
- Word export without naming the backend.
- The DOCX export is held to a corpus in Word and LibreOffice.
- A copied line keeps its emoji.
Migrating the DOCX export from 2.4
- Code that exports today compiles and runs unchanged.
- What you get is a different document.
- The log says less, and the report says all of it.
- Exporting costs a layout pass.
- Files carry their fonts.
- An editable rule comes from
addLineoraddDivider. - Byte comparisons need the deterministic backend.
graph-compose-render-docxis enough on its own.- Two narrow source breaks for code that takes records apart.
Public API
- A DOCX export of a document the engine cannot lay out says why in its report.
- A DOCX export writes only a divider, of all boxes of a colour, as Word's horizontal rule; any other box goes the way every drawing goes.
- A DOCX export writes a page zone the page builds otherwise for the first page into the first page's header or footer.
- A multi-section document exports to Word, a section per section.
- The same document exports to the same DOCX bytes, when asked to.
- A session can export Word without naming the backend, and can be told what the export could not carry.
- A semantic export backend can ask for the compiled layout.
- An inline SVG icon can state the text it stands for.
- A PDF carries the text of an inline icon, so a copied line keeps its emoji.
Fixed
- Word no longer cuts off a date or a title beside a row's spacer when it sets the text at a rounded size.
- A DOCX export writes its document when a registered family's classpath face cannot be read.
- Centred and right-aligned DOCX text set at a size Word rounds stands where the page sets it, over several lines, beside a picture and in a header or footer slot.
- Text typed at the end of a DOCX document starts below a block written over the flow.
- The DOCX report's count of paragraphs written at an exact height includes those in text boxes.
- A DOCX export draws a shape laid over a painted neighbour in front of the text, as the layer stack paints it, instead of under that neighbour's shading.
- A DOCX export writes what a node kind of the caller's own holds, where the layout places it.
- A PDF header or footer says in the log what it draws otherwise than it states.
- A DOCX export's report names where it writes a list item's pictures, a stack's layer, a panel and a cell's padding off the page, and what a section with no layout loses of them.
- A DOCX export writes the shaded spaces closing a paragraph as no-break spaces, so Word fills them and counts them in the line.
- A DOCX export measures the space a later layer of a band resumes with to the box of a panel, not through its padding, so a block under a panel in a stack of overlapping layers stands where the page sets it.
- A DOCX export keeps a canvas and an alignment wrapper on the page the layout moves them to, whole.
- A DOCX export keeps the space above a shape container, a canvas, a barcode, a page reference and a stack of side-by-side columns on the page the layout moves them to.
- A DOCX export draws a dashed line or path dashed.
- A DOCX export keeps a table's rows from creeping lower than the page's, row after row.
- A DOCX export writes a chart as a Word chart.
- A DOCX export keeps Word and LibreOffice from breaking a line at a hyphen where the page does not.
- A DOCX export's embedded faces survive a save in LibreOffice.
- A DOCX export writes a band of three or more one-line captions as one line, as it did a band of two.
- A DOCX export writes a timeline's rail as the border of the cells it runs along, so it stretches with the entries when one is edited.
- A DOCX export draws a timeline's rail as a bar LibreOffice draws upright, held by the entry it starts in.
- A DOCX export keeps the gap below a table above a block the layout moves to a new page, where the editor breaks the page elsewhere.
- A DOCX export keeps a page zone's row in its columns: each part of the row stands at a tab stop where the page sets it, so a label and the page number beside it no longer read as one word.
- A DOCX export names what a node was written as where that is not the kind of thing the node is, rather than saying it only when the node happened to lose something else as well.
- A DOCX export names the drawings that a painted panel standing beside them covers, rather than losing them in silence.
- A DOCX export asks the same order of a composed cell's paragraphs as of a block's, so a drawing a table's cell draws is anchored in the paragraph of that cell which places it nearest rather than in the first one the cell writes.
- A DOCX export anchors a drawing in the paragraph of its block that places it at the smallest offset, not in the first one the block writes, so an edit that breaks the page between the two no longer leaves the drawing behind.
- A DOCX export measures the space round a stack of overlapping layers to the box of the panel holding its text, not through that panel's padding, so a card under an icon laid over its corner stands where the page sets it.
- A DOCX export anchors a drawing in a paragraph written by any writer of text — a list's item, the one line two halves of a band share — so a card whose only text is written so moves its drawings with it when the text above is edited.
- A DOCX export anchors what a table's composed cell draws in that cell, so it moves with the cell's row when the text above is edited.
- A drawing is placed from its paragraph's top only where Word reads that offset back.
- A DOCX export anchors a drawing in a paragraph of the block it belongs to, so it moves with that block when the text above is edited.
- A DOCX export writes a painted box holding text in the body as a panel, its text inside its outline.
- A DOCX export bookmarks a block of drawings alone where its first drawing is anchored, so a page reference or a link to its anchor works.
- A DOCX export bookmarks a layer stack's column, so a page reference or a link to its anchor works.
- A DOCX export keeps a page break the layout makes by itself after a card where the page makes it.
- A DOCX export writes the margins of a page that starts at a panel's cut as a Word section there.
- A DOCX export cuts a panel whose table the layout breaks over pages into a table a page.
- A DOCX export writes no page break where the page breaks none: in a row's column, a table's composed cell, a layer stack's layer, a shape container's layer or a canvas.
- A DOCX export breaks a page inside a section or a panel of a panel where the page does.
- A DOCX export's lines of runs of several depths grow with their text where every line is as deep as the deepest.
- A DOCX export's Word list items grow with their text where their face holds their marker.
- A DOCX export's lines holding a picture within their text grow with it.
- A DOCX export's table text cells grow with their text where they are as tall as their faces' own.
- A DOCX export's lines grow with their text where they are as tall as their faces' own.
- A DOCX export's page-margin notes name every page they are about.
- A DOCX export's report names what a table's cell is composed of by its cell.
- A DOCX export splits a body table at the row where a page with other top and bottom margins starts.
- A DOCX export writes top and bottom margins that change from page to page as Word sections.
- A DOCX export names a document's timeline rails once.
- A DOCX export sets a panel set in from its table cell's text where the page sets its text.
- A DOCX export holds a row's auto column's editor point in the gap after it.
- A DOCX export ends a panel hung out of its table cell where the page ends it.
- A DOCX export ends a rule where the page ends it in Word.
- A DOCX export stands a table's rules where the page draws them beside a column sized to its content.
- A DOCX export names a panel's left edge its table cell holds in.
- A DOCX export ends a panel where the page ends it.
- A DOCX export stands a badge and its initials where the page draws them.
- A DOCX export names what of a paragraph's pull up nothing above it gives back.
- A DOCX export names a panel's right border its table cell's edge would cut off.
- A DOCX export names what a picture among a paragraph's words loses of its place, its width or its paint.
- A DOCX export writes a list marker Word would read as a level's number as text.
- A DOCX export names a block that writes no paragraph for its anchor's bookmark.
- A DOCX export keeps the space above a list, a line pair, and a table, a row or a panel opening a band, on the page the layout moves them to.
- A DOCX export sets a later layer where the page does when its first block's edge reaches above the layers before it.
- A DOCX export keeps a band of layers and a shape container on the page the layout puts them on.
- A DOCX export names a block Word may break inside a panel the layout moves it down in.
- A DOCX export keeps a stack of one layer on the page the layout puts it on.
- A DOCX export keeps the space above a spacer opening a stack of one layer on a new page.
- A DOCX export keeps the space above the first paragraph or picture of a stack of one layer the layout moves to a new page.
- A picture, a shape or a barcode composed in a table cell keeps its own size.
- A DOCX export keeps the space above a picture the layout moves to a new page.
- A DOCX export keeps the room a contained picture leaves in its box.
- A DOCX export keeps a panel's padding round its outline.
- A DOCX export sets a panel's layer where its alignment sets it.
- A DOCX export sets a layer across where its offset moves it.
- A DOCX export stacks its drawings as the page paints them.
- A DOCX export names what a text header or footer shows otherwise in Word.
- A DOCX export names the blank page Word adds before a section.
- A DOCX export writes a page zone whose predicate reads the page total on the pages the page draws it on.
- A DOCX export names a table its rules stand taller in Word.
- A DOCX export writes a chart in a table cell as its data table, and draws nothing of it over that table.
- A DOCX export names a table whose columns it leaves to the editor.
- A DOCX export names a border Word draws at another width than the page, and writes a text header's or footer's separator of no width.
- A DOCX export says why a drawing is not in it and what a section with no layout leaves to the editor, names the application that made it, gives every table a grid, and names an anchor in a repeated table header.
- A DOCX export keeps each anchor's bookmark its own, writes no control character the page draws nothing for, sets a margin below zero out past its side, and says what a rounded panel keeps.
- A DOCX export sets a row and an alignment composed in a table cell where the page sets them.
- A DOCX export reads a table's cells, its headers and footers, its page references and its lists' runs for the faces and headings it writes, and checks each page reference against the bookmarks the file holds.
- A DOCX export writes a rule in a table's cell once, draws a line thicker than a border, and anchors a shape alone before a page break.
- A DOCX export's report names a layer written under the layers the page lays it over.
- A DOCX export's report says a shape container's layers are written inline only where they are.
- A DOCX export's report no longer names a cell's tile dropped while its table draws it, nor corners drawn alike as unequal.
- A DOCX export ends and turns a drawing's outline as the page strokes it.
- A DOCX export's report names what it draws as a picture, or draws without, where it said nothing or more than was lost.
- A DOCX export gives a paragraph opening a row's column the gap above its first line out of the space above the row.
- A DOCX export settles a list item's exact lines with the page, and what a cell's lines carry at its end.
- A DOCX export carries what a paragraph's exact lines are off the page by, too little to settle below it, on to the next paragraph's.
- A DOCX export raises a line pair's shared line into the space above it where neither half is moved by its position.
- A DOCX export raises a line Word sets low in a band into the space above it, as in the flow, and the band pays what it owes below.
- A DOCX export keeps a one-row body table kept with what follows with it in LibreOffice too.
- A DOCX export takes what a column of a layer stack hangs past the stack's foot out of the gap under the stack, as it takes a row's cell's.
- A DOCX export raises a line Word sets low in a layer stack of one layer, and lifts a row there, as in the flow.
- A DOCX export lowers a paragraph's line Word sets high by a tenth to half a point, by the space between it and what follows.
- A DOCX export hangs what a rule's paragraph stands past the rule's box below it, for the space under it to take.
- A DOCX export lowers a Word list's item that Word sets high by the space above it, its marker with its text.
- A DOCX export writes a list composed in a table cell on the lines its table laid out for it, as it does a paragraph there.
- A DOCX export stands a list's items where the page sets them in their exact lines, as it does a paragraph's.
- A DOCX export stands the first line of a panel, a table's composed cell and a row's column where the page sets it, where nothing was written above the line to raise it into.
- A DOCX export stands a table text cell's text where the page sets it by the height of its lines, where its row's margins leave less than half a point of what it calls for.
- A DOCX export holds a shape's row less its borders as wide as Word draws them, and a table's row between two others less the rules it holds.
- A DOCX export seats the label of a chip composed in a table cell where the page sets it.
- A DOCX export counts a table's rules as Word and LibreOffice do, and holds a cell's margins and a chip composed in it to the twip the page gives them.
- A DOCX export stands a table's text cells on the page's baselines, and what follows a paragraph or a ruled table where the page sets it.
- A DOCX export raises a line Word sets low into the space above it, where both editors keep it.
- A DOCX export no longer stands what follows a width anchor, or a paragraph Word sets taller, lower than the page.
- A DOCX export sets what follows a panel where the page sets it, and names what Word sets lower.
- A DOCX page zone writes its picture — a logo — in its line, where the page draws it.
- A DOCX export writes a row's fill, outline and side borders, as a panel holding its columns.
- A DOCX export writes an auto-sized paragraph's text at the size the page fits it to.
- A DOCX export writes a list item the page reads as markdown as the page sets it.
- A DOCX export writes a paragraph the page reads as markdown as the page sets it.
- A DOCX page zone's text stands on the page's baseline.
- A DOCX canvas holds its height.
- A DOCX export keeps a colour's translucency where Word can hold it, and names where it cannot.
- A DOCX export's report names a paragraph or a list item the page reads as markdown.
- A DOCX export's report names where a page zone's parts stand, and what its paragraphs lose.
- A DOCX export's report names what a paragraph's own fields lose.
- A DOCX export's report names what a list's items lose.
- A DOCX export's report names a clip where it cuts something, and a turned container's transform where no outline names it.
- A DOCX export's report names what a container written as its contents leaves of its own layout.
- A DOCX table with padding on its sides keeps the layout's grid, row heights and unbroken rows.
- A DOCX export's report names the geometry a block is written without.
- A DOCX export's report names what each written or drawn node goes without.
- The DOCX export report names what it used to leave out in silence, or misnamed.
- A DOCX timeline's dots, and drawings centred on a line, move with their text too.
- A DOCX's drawings move with the text they stand beside.
- Restyling Normal reaches a DOCX's body text when the body is in runs or tables.
- A reader can type below a DOCX's closing table.
- A DOCX chip takes the room its padding takes on the page.
- Enter in a DOCX continues the text it follows.
- A DOCX panel in the body starts its text the whole padding in.
- A centred or right-aligned DOCX line of its own stands as wide as the page sets it.
- A nested list item with no marker stands where the page sets its text in DOCX.
- A DOCX list without
hangingIndentwraps where the page does. - A panel with a left border in a DOCX cell no longer widens the cell in Word.
- A paragraph or a list in DOCX keeps its own sides on a layer, and its edge in a cell.
- A
hangingIndent(true)list's top level takes the page's marker column in DOCX, text markers too. - A list item whose marker is a picture starts its text where the page does in DOCX.
- A centred or right-aligned line that fills its box keeps to one line in Word.
- A table or a row keeps its own margins in DOCX.
- Text hanging past a block takes its place out of the space above a stack that follows in DOCX.
- A ruled table's first and last rows keep the page's height in DOCX.
- A row's cell whose last line hangs below the row takes it out of the gap under the row in DOCX.
- A spacer is as tall in DOCX as on the page.
- A body paragraph or spacer the layout moves to a new page keeps the space above it there in DOCX.
- What follows a line holding only a drawn shape stands where the page sets it in DOCX.
- A panel bled to the paper's edge stands where the page puts it in Word.
- A drawing over text in a row nested through a one-layer stack takes its room in DOCX.
- A table or row the layout moves to a new page keeps its top edge there in DOCX.
- A paragraph opening a table cell keeps its lines the page's distance apart in DOCX.
- A
bulletOffsetparagraph's wrapped lines keep the page's distance in DOCX. - A paragraph's
bulletOffsetindents its lines in DOCX as it does on the page. - A row's fixed columns keep their widths in DOCX when they add up to less than the row.
MidnightNavy's sidebar stands where the page sets it in Word.SlateOrange's sidebar stands where the page sets it in Word.CobaltRotastands where the page sets it in Word and LibreOffice.OrangeOpsstands on one page in Word.- A paragraph breaks its lines where the page does, though Word sets its size to the half point.
NavySidebarstands where the page sets it in Word.- A cell ending in a nested table is no taller in LibreOffice than on the page.
CobaltRota's outlined chips are as tall in Word as on the page.MerchantInvoicefits its page in Word again.- An icon alone in a table cell moves with its row in Word.
- A line pulled up into the line above it, with no space above to take the pull from, is no longer dropped in Word.
- A chip's label taller than the chip no longer makes it taller in Word.
- A table row's cells keep their own vertical padding in Word, not the row's largest.
- A line holding an icon keeps the page's height in Word.
- A block pulled up by a negative top edge, and a row padded down its column, stand where the page puts them in Word.
- A row a drawing makes tall, and a title pulled above its row, keep the page's height in Word.
- A bordered panel in a table cell shows its right border in Word.
- A ruled table's rows are as tall in Word as on the page, and a table that states no rule is ruled as the page rules it.
- Text stands on the page's baseline in Word's exact lines, and stacked title lines take the container's height.
- A value set from its start keeps its start in Word.
- Text seated off its baseline sits there in Word, and text hanging below its band takes its overhang from the gap under it.
- Text laid over the flow stands where the page sets it in Word.
- A row after a row rises into the gap above it in Word.
- A container hanging left by a negative margin hangs left in Word.
- A paragraph's own margin and padding hold its text in in Word, and a word the page sets whole stays whole.
- A shape container's margin and padding are space in Word.
- A table with no paragraph before it keeps the space above it in Word.
- A line break in a paragraph's text is a line break in Word.
- A grid of cards is one row of columns in Word.
- Stacked title lines and icons beside their labels keep the page's height in Word.
- A badge holds its initials, and bordered cards keep the page's spacing in Word.
- Icons inside painted panels show in Word, beside the text they belong to.
- Page numbers keep their colour, panels their height, and a document ending in a table no page of its own.
- Table rows and the text in composed cells keep the page's height.
- Icons and shapes inside table cells reach Word.
- A filled pill inside a table cell keeps its colour in Word.
- Text headers and footers reach Word.
- A badge's glyph stands in the middle of its circle in Word.
- Shapes print whole in Word, and show in filled panels.
- A line among the text of a layer stack of one layer is a rule.
- A strip drawn in two layers is written as one strip.
- Paths and polygons reach Word as custom geometry.
- A line the editor may grow sets its paragraph mark in the text's size and face.
- Drawing reaches Word as shapes where the page draws them.
- A block set in an alignment stands where the alignment puts it.
- Layers laid over each other stand across where the page puts them.
- A line holding an icon asks Word for the icon's height where Word puts it.
- A container's
spacingreaches Word, and a spacer is its height alone. - Word no longer adds 8pt under every paragraph.
- A paragraph's line in Word is as tall as the text on it.
- The gap between a paragraph's wrapped lines reaches Word.
- No space is written below the last line of a section in Word.
- A title at the left and dates at the right of one band stay on one line in Word.
- A title raised above the top of its row lifts the row.
- Overlapping layers keep the page's distances in Word.
- A drawing the export leaves out still takes its room in Word.
- Columns drawn as layers stand side by side in Word.
- Page backgrounds reach Word.
- A container that writes nothing in Word keeps the space above it waiting.
- A timeline with its markers on the rail keeps its entries in Word.
- A right-to-left paragraph in a padded container is held in on the page's sides in Word.
- A table cell's
lineSpacingis space between its lines. - A picture or an icon in a line reaches Word.
- A dot, an arrow or a checkbox in a line reaches Word.
- A drawn picture the page raises stands where the page puts it in LibreOffice too.
- A rule reaches Word as Word's own.
- A barcode reaches Word, and scans.
- A table cell's alignment reaches Word.
- A card is a card in Word.
- A container's content sits inside its margin and padding in Word.
- No empty line under a table inside a cell.
- Two tables in a row stay two tables in Word.
- A table of contents keeps its page numbers in Word, and they stay right.
- A table of contents' labels stay whole in the editor.
- A link to a section, table or image reaches it in Word.
- A page zone drawn on some pages only lands on the same pages in Word.
- A block kept together in the layout is kept together in Word.
- A landscape page exports as landscape.
- A DOCX table breaks across pages where the page breaks it.
- A table cell with no style of its own is written in the face the page draws it in.
- A table cell carries the line height its row was sized with.
- A link inside a list item exports as a link.
- A header or footer sits as far from its page edge as the page puts it.
- A picture and a list keep the space they hold around themselves.
- A table keeps the space it holds above and below itself.
- A table cell keeps the space the document put inside its edges.
- A gap between two blocks in an exported Word file is one gap.
- An inline chip keeps its fill in the exported Word file.
- An exported Word document has an outline.
- A link in the document is a link in the exported Word file.
- A composed table cell carries whatever it was built from.
- A container's fill and borders now reach the DOCX export.
- A row no longer exports with visible table rules, and a page-number footer sits at the right margin again.
- A row's children sit where the page puts them in its height.
- A DOCX list is now a real Word list.
- A DOCX export now names its own body text as Word's Normal style.
- A DOCX table and row now state the width the layout gives them, where that width can be known.
- The DOCX export now takes line height and column widths from the resolved layout, and carries the space around a block.
- A DOCX export now ships the faces the document is set in.
Packaging
graph-compose-render-docxis enough on its own.
Tests
- The Word fidelity baseline records Word's full build, and the Linux LibreOffice baseline takes CI's rows for two proposals.
- A guard holds the DOCX column of the capability matrix to the export's code.
- Word's editing protocol reads typing onto a new page from the page the saved copy shows.
- The DOCX fidelity corpus holds kept groups at the foot of a page.
- Word's editing protocol reads how far drawings and text moved from Word's own PDF.
- Word's editing protocol makes the edits the LibreOffice one makes, and reads them by the same verdicts.
- An editing protocol runs the DOCX fidelity corpus through LibreOffice, as one already runs it through Word.
- The DOCX fidelity gate holds each line to its width as well as its place, and is fed a document of short lines set in another face.
- The DOCX fidelity gate reads only the text the page's clip does not hide, and is fed a document whose last card is held to a height its text does not fit.
- The DOCX fidelity gate is fed a document changed after export in each way it is there to fail on, through the same editor and the same measurement as the corpus, and the run fails unless the gate fails on every one.
- The DOCX fidelity corpus holds eleven more documents composed the way a user builds one, so the line-by-line gate reaches forms no template preset has.
- A plate, a progress bar and a divider — boxes of one colour each, no taller than Word's thickest border — are held to the forms the DOCX export writes them in: the plate and the bar drawn at their own size, place and colour, and only the divider written as Word's rule.
- A table composed in a cell inside a block held on one page is now held to what actually keeps it whole — the row round it, since neither of the two writers that hold an ordinary table reaches it. And a kept block's table is asked for both of those writers on the
keepTogetherpath, where only one half of the pair was asked for before. - A fixture holds the record a page an editor adds past a one-page section is painted from: the export is grown by eighty appended paragraphs through POI and read back, and the fills are in the header of the one section the grown document has.
- The reading that answers whether a document states different even and odd pages reads the element in either form it can be written in, and is one helper the tests share where two of them held a copy of their own.
- The editing protocol reads both thresholds it judges a drawing by off the grid Word's own readings land on, and reads a cell's text as reaching to that cell's edges rather than past them — so neither the verdict nor the set it is taken over turns on the last digit of a float, and neither turns on the column beside the drawing.
- The editing protocol asks a drawing to follow text only where a paragraph carries it, and names the ones nailed to the sheet with what they did instead of counting them as having failed to follow — so the figure it reports is of the drawings the question is about.
- The editing protocol holds a drawing to the paragraph whose space above it stands in, reads the drawings beside text an edit leaves standing, and lengthens the first paragraph of body text rather than the longest — so what it measures of a document is most of it, and what it says of a drawing no longer depends on a space it could not see.
- The editing protocol reads where a floating drawing stands from Word's own page geometry, so a drawing that follows its text is no longer recorded as leaving it behind.
- A test holds every drawing the DOCX export writes for a block that writes text to a paragraph of that text, so none of them is left placed from the page.
- The DOCX fidelity gate holds each document where its baseline puts it, whichever way it moved, instead of only catching lines set further from the page.
- The DOCX fidelity corpus holds an icon laid over a card's corner, as the export writes it today.
- A body card whose text fills its outline is held to grow with that text.
- The DOCX fidelity corpus holds its three body shape containers where the export now sets them.
- The DOCX fidelity corpus holds three shape containers in the body, as the export writes them today.
- Every page reference a DOCX export writes names a bookmark the file holds.
- The DOCX fidelity corpus holds the ways a page breaks inside a panel.
- The DOCX field ledger names what a session hands an export beside the tree.
- The DOCX field ledger states where a field it gave as written, or as moving nothing, is lost.
- The DOCX field ledger reaches the values a node holds, and names the losses it knows of and its report does not.
- Word's editing protocol fails a restyle that leaves text without room for it.
- The DOCX fidelity corpus holds a line where it stands across, as well as down.
- The DOCX fidelity corpus measures a line from its first letter.
- The DOCX fidelity corpus reports which presets are set as the page sets them.
- Word holds the DOCX export to its corpus too.
- CI holds the DOCX export to its corpus.
- The DOCX export is held to its corpus, line by line.
- One DOCX export's state stays in that export — now pinned.
PublishTrainGuardTestholds the deploy to exactly one-plreactor run, its selection to the lockstep modules derived from the poms (standalone, publishing, on the reactor version), and keeps fonts, emoji and the build-only modules out of it.- The release smoke can run before anything is published.
- The release smoke exports Word the way a consumer does.
- Five render-docx test classes that passed on a broken export now check what they claim.
- Six export-report notes that no test asserted are now asserted, each on the document that makes it:
- The numbers the Word export takes from an editor say where they came from.
- Branches of three render-docx classes that no test took are taken, each asserted on DOCX XML.
Performance
- A large table's DOCX export is linear in its size again.
- What a DOCX export costs is now measured.
Build
- Dependency updates from the
maven-minor-patchgroup (#767, #991, #1034). - The coverage aggregate counts the Word export.
- The binary-compatibility gate holds the Word export's Stable path.
- CI and CodeQL run on every push to
2.5-dev. - A release reaches Maven Central as one deployment instead of eight.
Documentation
- The backend capability matrix reads at a glance.
- The README banner and the twin-output page show the Word output beside PDF and PowerPoint.
- The Word docs say which canvas pages read right in Word.
- The Word module's README says first that core and render-docx are all you add.
- The README names all three outputs from its first line and shows a Word export.
- The docs present PDF, PowerPoint and Word as three full outputs.
- The knowledge pack routes a Word export.
ROADMAP.mdsays what 2.5 did for DOCX and what is left.- The
render-docxREADME andWordExportExampleshow the session's Word export as it is. - The DOCX recipe says what Word and LibreOffice do with the export's page fields once a page is added, and why the file asks for no update on open.
- The recipe and the capability matrix now say what was measured of a kept block at the foot of a page, and finish the half-sentence they carried about a table inside one.
- The release runbook describes the single deployment.
- A card of a preset shows the code that draws that preset.
- The catalogue comes before the install instructions.
- The line above the catalogue says what clicking a preview does.
- The site has a link preview drawn for the shape a link preview is.
- The DOCX module's README says what the export writes today.
- The capability matrix's DOCX column says what the export carries.
- The capability matrix's DOCX column agrees with the code, and lists every subject the export report names.
Each entry above is the first line of its CHANGELOG entry. The full notes — what changed, why, and how it was verified — are longer than a GitHub Release body allows; read them in CHANGELOG.md at v2.5.0.