Skip to content

v0.15.0

Choose a tag to compare

@github-actions github-actions released this 04 Oct 12:37
· 925 commits to main since this release

Highlights

The seven stable Word Rust crates, the rdocx CLI, and the rdocx Python
distribution move together to 0.15.0 from the reviewed S88 source. One
release carries six CLI archives, six cp39-abi3 wheels, one source
distribution, and a SHA256SUMS covering all thirteen payloads. Each
payload has build provenance verifiable with gh attestation verify FILE -R tensorbee/rdocx. This answers
@hadim's
Issue 266 request for one
current-main release with matching CLI and Python versions.

Added

  • Word authoring now covers rich content and comments in all six header and
    footer variants, together with rich footnotes and endnotes whose references,
    relationships, pictures, hyperlinks, and unmodelled XML survive save and
    reopen. High-level style formatting covers alignment, spacing, indentation,
    font, size, bold, and colour for
    Issue 264.
  • Python editing exposes tables, sections, styles, bookmarks, fields, story
    content, pictures, hyperlinks, tracked revisions, and counted replacement.
    The CLI can inspect and compare related stories, anchor comments on text,
    select accepted or tracked revision views, and emit structured results.
    These surfaces incorporate
    PR 176,
    PR 186,
    PR 187,
    PR 194,
    PR 198,
    PR 201,
    PR 203,
    PR 204,
    PR 212,
    PR 220,
    PR 236, and
    PR 256.
  • Native Word story traversal and replacement reach content controls, text
    boxes, footnotes, endnotes, tracked insertions, simple fields, smart tags,
    and custom XML wrappers. This incorporates
    PR 177,
    PR 179,
    PR 180,
    PR 191,
    PR 195,
    PR 202,
    PR 210, and
    PR 211.

Fixed

  • The rdocx CLI runs comparison and other document commands on an eight MiB
    stack on Windows, avoiding a stack overflow in the complete Word workflow.
  • Editing Word parts writes compact XML without repeating canonical namespace
    declarations on every retained paragraph. It preserves producer aliases,
    root attributes, unknown content, and unchanged package parts, building on
    PR 154 and
    PR 251 for
    Issue 245.
    Newly created documents now carry Word-compatible application metadata, and
    nested tables retain their required trailing paragraph.
  • Word layout uses the governing section for each paragraph and table. Line
    height, inline picture height, tab stops, TOC entries, page fields,
    keep-with-next chains, row minimum heights, and terminal spaces follow the
    reviewed Word cases. This incorporates
    PR 148,
    PR 199,
    PR 200,
    PR 225,
    PR 237,
    PR 241, and
    PR 242.
    PR 265 supplied independent
    mixed-section regression coverage.
  • Comparison now records changed picture bytes and final table or paragraph
    changes as revisions that survive acceptance and rejection. Accepted text,
    HTML, Markdown, JSON, PDF layout, and media traversal omit deleted table
    rows and join paragraphs whose marks were deleted. This incorporates
    PR 228,
    PR 229,
    PR 257,
    PR 258,
    PR 259,
    PR 260,
    PR 261,
    PR 262, and
    PR 263.
  • CLI and package saves refuse unintended overwrite and stage replacement
    atomically. Edited border and namespace declarations, shared-run field
    text, and XML-valid characters survive their supported read and write paths.
    This incorporates
    PR 174,
    PR 178,
    PR 185,
    PR 197,
    PR 232,
    PR 233, and
    PR 239.

Compatibility

The exact seven publishable stable crates move from 0.14.0 to 0.15.0:
rdocx-opc, rdocx-oxml, rdocx-layout, rdocx-html,
rdocx-pdf, rdocx, and rdocx-cli. Update their pins together.
They use the separately prepared shared OOXML 0.13.1 family. The Python
distribution and import name stay rdocx, and its 0.15.0 wheels require
Python 3.9 or newer. Historical v0.14.0 and py-rdocx-v0.14.0
remain unchanged. The unpublished rdocx-wasm and npm package are outside
this crates.io and PyPI release.

This pre-1.0 minor release has source-incompatible Rust model changes.
rdocx_layout::PageGeometry was Copy in 0.14.0 and is now Clone
because it owns column tracks and optional page metadata. Pass it by
reference or call .clone() where a copy was previously implicit. Full
PageGeometry struct literals must supply columns,
column_separator, page_borders, line_numbers,
vertical_alignment, mirror_margins,
do_not_use_html_paragraph_auto_spacing, and body_rotation.
Public GlyphRun, LineBreakParams, and LayoutInput also gained
fields. Update full literals and exact-output fixtures when upgrading.
rdocx replace now refuses input-as-output and existing output paths.
Scripts that overwrote a source file must choose a new output path.

Contributors

@hadim, Hadrien Mary, reported
Issue 266 and
Issue 245. The linked Word,
Python, CLI, layout, comparison, and preservation PRs above supplied
reference behavior that was reconciled or hardened in maintainer commits.
Those GitHub PRs were closed without direct merges.
@set2374 supplied the independent
PR 265 mixed-section regression.
@Andrewkoro105 requested the
Issue 264 high-level style
API. Atul Sharma reviewed and integrated the release family.