All notable user-facing changes to RusDox are documented here.
The format follows Keep a Changelog, and releases follow Semantic Versioning.
[Unreleased]
[1.0.0] - 2026-08-24
Added
- Shared DOCX/PDF page setup, visible headers and footers, configurable page fields, explicit page and section breaks, hyperlinks, bookmarks, TOC fields, and footnotes.
- Rich and merged table cells, nested tables, repeating headers, row-splitting controls, and measured overflow diagnostics.
- Executable dual-output and international-script contract fixtures with 21-check HTML/JSON parity reports.
- Structural OOXML validation for XML well-formedness, content types, and internal relationships; an external-DOCX round-trip fixture; dated viewer evidence; exact Linux page baselines; and buildable fuzz targets.
- Default, customizable resource ceilings for DOCX ZIP/XML, specs/includes, PNG/JPEG, SVG, and raster allocations.
- Versioned small/medium/1,000-page benchmarks with isolated validation, DOCX, PDF, dual-output, and existing-DOCX pipelines; machine-readable host/hash/memory evidence; scheduled regression detection; and generated history charts.
- Word-native DOCX template inspection and strict/lenient rendering from JSON, including split-run placeholders, nested values, complete paragraph/table-row loops, conditions, deterministic filters, reusable partials, native PDF output, and parity reports.
- Three externally authored starter templates for invoices, proposals, and board/compliance reporting.
- Versioned document specs with a generated JSON Schema shared by YAML, JSON, TOML, and a bundled zero-dependency VS Code extension.
- Schema generation, atomic migration, source-located validation, bounded conditional branches, nested paths, deterministic filters, and literal-brace escaping.
- A zero-install, local-first spec playground with six verified examples, structural preview, editable YAML downloads, exact CLI reproduction commands, and artifact integrity guards.
- A dated WASM feasibility spike and explicit browser-rendering capability boundary.
- A
rusdox devfeedback loop with a loopback-only PDF/status dashboard, debounced input/config/include/asset watching, last-success preservation, per-stage timings, JSON Lines events, browser opening, and quiet bounded runs. - A signed curated template registry with hash-verified
template list,search,add, andupdatecommands; seven discovery categories; contributor credit; accessibility metadata; a featured monthly template; and pull-request preview artifacts. - A reusable source-built GitHub Action that validates and renders specs, annotates exact pull-request lines, uploads parity-only evidence, and upserts a metadata-only visual-diff summary, plus release-note, invoice, compliance, and scheduled-report recipes.
- An object-safe, in-memory Rust renderer boundary and stable local JSON protocol v1 over newline-delimited stdin/stdout or opt-in loopback HTTP, with atomic hash-described outputs and executable Node, Python, Go, and CI examples.
- A contributor field guide with an end-to-end architecture map, ten fixture-backed starter tasks, isolated fixture preparation, visual-diff commands, contributor credit checks, and a published governance policy.
- Frozen v1 spec, template, renderer, and local-protocol contracts; cross-surface SemVer, deprecation, support, and release policies; an exact Rust 1.88.0 MSRV gate; complete public-item rustdoc; and release-time API compatibility scanning.
- A machine-enforced 31-capability v1 feature contract covering every document block variant and its DOCX/PDF/parity status, including an explicit unsupported PDF-conformance entry.
- Bounded concurrent batch rendering with aggregate source-memory preflight, ordered outcomes, and cooperative cancellation between native render stages.
- Default and hosted TOML/JSON resource profiles, including expansion/depth/output ceilings for Word templates and operator-owned limits for local protocol workers.
- A dated, executable v1 security review with DTD rejection, SVG external-resource denial, weekly RustSec auditing, and explicit residual-risk tracking.
- Reproducibility receipts for twice-built release binaries, deterministic tar/ZIP packaging, release provenance verification before installer smoke tests, and per-target receipts attached to releases.
- An accessible long-term benchmark dashboard backed by absolute runtime and peak-memory budgets for all 13 protocol scenarios.
- Required visual alt text, BCP 47-style document language metadata in DOCX and PDF, explicit accessibility parity checks, font embedding/licensing evidence, and machine-gated RTL/CJK graduation.
- A sourced tagged PDF, PDF/UA, and PDF/A implementation decision that keeps every conformance claim false until exact validator and human review gates pass.
- An immutable, separately keyed v1 template-registry channel with 1.x compatibility bounds and 21-check template evidence, while retaining the legacy channel for 0.1.1 clients.
Contributors
- Othmane Blial — maintainer and author of the current unreleased document engine, parity, distribution, integration, and contributor-experience work.
- Dependabot — automated dependency update pull requests.
No external human contribution has landed in this unreleased cycle yet. New contributors will be added here when a meaningful pull request is merged.
Changed
PageSetup,Run,RowSpec, and related low-level constructors now carry the expanded dual-output contract; this pre-1.0 Rust API change is incorporated into the v1 contract.- PDF page geometry now comes from the document's
PageSetup; PDF config geometry remains a compatibility fallback when no document-level value is supplied. - PDF nested tables use a bounded flattened-row representation and do not claim exact nested-grid geometry.
- Benchmark summaries now report true extrema plus medians; the previous multi-iteration maximum accidentally reported the sum of samples.
- Updated
anyhowandmemmap2lockfile entries to versions that clear the 2026-08-24 RustSec unsoundness advisories; upstreamrustybuzz/ttf-parsermaintenance warnings remain tracked in the security review.
Fixed
- Script-mode CLI tests now share a Cargo target cache and use unique package names, preventing multi-gigabyte temporary build accumulation and binary collisions.
- DOCX, PDF, and spec writes now preserve the previous valid destination when a render/write is interrupted, including atomic replacement on Windows instead of deleting the old file first.
- Signed registry text assets retain LF bytes on every checkout, and local registry fixtures hash the checked-out bytes so Windows CRLF policy cannot create false integrity failures.
[0.1.1] - 2026-08-23
Changed
- User installs now expose only the
rusdoxexecutable; stress generators remain available to maintainers through themaintainer-toolsfeature. - crates.io releases now use short-lived GitHub OIDC credentials through Trusted Publishing instead of a long-lived repository secret.
- Installer fixtures derive the expected version from
Cargo.tomlso release checks cannot silently drift.
Fixed
cargo binstall rusdoxcan consume the native GitHub Release archive without falling back to a source build for missing maintainer-only binaries.
[0.1.0] - 2026-08-23
Added
- A public product roadmap focused on trustworthy DOCX/PDF parity, Word-native templates, and production adoption.
- Lean crates.io packaging that excludes the duplicated showcase bundle and generated binary documents.
- Structured community routes for support questions and private vulnerability reports.
- Pure-Rust DOCX generation and native PDF preview rendering.
- YAML, JSON, and TOML document specifications.
- Variables, includes, repeaters, named styles, metadata, visuals, and tables.
validate,watch, andbenchCLI workflows.- Cross-platform release installers for Linux, macOS, and Windows.
Changed
- Repository, documentation, CI, and security references now consistently target the
mainbranch. - CI verifies the exact locked dependency graph and the publishable crate package.
[Unreleased]: https://github.com/OthmaneBlial/rusdox/compare/v1.0.0...HEAD [1.0.0]: https://github.com/OthmaneBlial/rusdox/compare/v0.1.1...v1.0.0 [0.1.1]: https://github.com/OthmaneBlial/rusdox/compare/v0.1.0...v0.1.1 [0.1.0]: https://github.com/OthmaneBlial/rusdox/releases/tag/v0.1.0