Releases: Cadons/Docraft
Release list
v1.0.0-RC5
What's Changed
- Fix document types list in README by @Cadons in #53
- fix(pagination): resolve infinite loop when handling oversized table … by @Cadons in #60
- feat(tools): add DocraftValidator for linting .craft and data files by @Cadons in #63
- Add PageNumber format support and fix chart/list font family handling by @Cadons in #61
- feat(fonts): add support for registering TTF fonts from memory by @Cadons in #64
- Validate Cell content: reject multiple children and unrecognized tags by @Cadons in #65
- feat(templating): add --strict mode to fail unresolved bindings by @Cadons in #70
- feat(loom): warn when a node overflows past the page bottom by @Cadons in #71
- 55 bundled font families roboto opensans cannot be selected by font name silently falls back to helvetica spams libharu errors new by @Cadons in #68
- fix(parser): raise error for duplicate or unrecognized top-level elem… by @Cadons in #76
- fix(parser): inherit background color for table cells from row by @Cadons in #77
- fix(parser): reject explicit width/height on content-sized nodes by @Cadons in #78
- 75 weight common attribute silently no ops outside layout orientationhorizontal by @Cadons in #79
- fix(text-wrapper): prevent boundary word duplication in line wrapping by @Cadons in #81
- refactor(layout): streamline fixed and flexible column width resolution by @Cadons in #84
- 82 warn when a tables explicit column widths sum wider than the available page width by @Cadons in #85
Full Changelog: v1.0.0-RC4...v1.0.0-RC5
v1.0.0-RC4
What's Changed
- 34 graphics and canvas by @Cadons in #37
- feat(craft): reject unrecognised attributes instead of dropping them by @Cadons in #47
- feat(craft): add CurveLine, and make Polygon only ever a polygon by @Cadons in #45
- fix(craft): honour Text width, table title font_size and name colors by @Cadons in #42
- fix(loom): place Canvas lines and circles at their declared geometry by @Cadons in #39
- 48 z indexing by @Cadons in #49
- Worktree readme hero visual by @Cadons in #51
- docs(skills): add craft-language skill for generating .craft files by @Cadons in #50
Full Changelog: v1.0.0-RC3...v1.0.0-RC4
v1.0.0-RC3
What's Changed
- Charts: native charts (scatter, line, spline, histogram and pie)
- Canvas: use this to draw free-form designs within a specified area.
- Bug fixes
Full Changelog: v1.0.0-RC2...v1.0.0-RC3
v1.0.0-RC2
v1.0.0-RC1
What's Changed
- build(cmake): add required dependency for fmt library by @Cadons in #15
- Enforce explicit accessor pattern across core APIs (remove macro/inline accessors) by @Cadons with @Copilot in #20
- General Refactor by @Cadons with @Copilot in #24
- Lines coordinates by @Cadons in #26
- 27 improve code duplication by @Cadons in #28
- 30 find the best pattern for layout engine by @Cadons in #32
Full Changelog: v1.0.0-beta.3...v1.0.0-RC1
v1.0.0-beta.3
What's Changed
- Fix VCPKG port build failures: Removed unused
#include <print>and replacedstd::formatwithfmt::format(PR #11) - Fix Windows x86 calling convention mismatch for HPDF error handler (PR #12)
Important Note for Users
As you mentioned, if you have installed the library and are using CMake's find_package, you must now explicitly require:
find_package(fmt CONFIG REQUIRED)This requirement is due to the replacement of std::format with fmt::format. The next version is expected to add support for fmt as part of the Docraft find_package requirements, making this unnecessary in future releases.
v1.0.0-beta.1
Docraft v1.0.0-beta.1 Release Notes
Release date: 2026-03-11
Status: Beta
Docraft v1.0.0-beta is the first public beta milestone for the project: a C++23, in-process PDF generation library built around the XML-based Craft Language.
Highlights
- Introduces the Craft Language for declarative document authoring (
.craft) with no coordinate-level drawing required. - Delivers automatic flow layout and pagination, including reusable header/body/footer sections and automatic page numbering.
- Adds runtime templating features (
${variables}and<Foreach>) for JSON-driven document generation. - Provides rich document elements including tables, lists, shapes, images, and nested horizontal/vertical layouts.
- Ships with both a linkable
docraftlibrary and thedocraft_toolCLI renderer. - Supports pluggable rendering abstractions with libharu currently used as the PDF backend.
What Is Included In This Beta
- Core library:
docraft(static by default, optional shared build). - CLI executable:
docraft_toolfor rendering.craftfiles to PDF. - Craft parser stack: parsing for text, shapes, images, tables, layouts, settings, and foreach blocks.
- Template engine: key/value and JSON-array binding for data-driven output.
- Documentation: Sphinx and Doxygen docs with API and getting-started material.
Build and Compatibility
- Language standard: C++23.
- Build system: CMake 3.16+.
- Key dependencies: libharu, pugixml, nlohmann-json.
- Test dependency: GoogleTest (when
BUILD_TESTS=ON). - Platforms: macOS, Linux, and Windows workflows are documented in
README.md.
Quality and Test Coverage
The beta test suite includes coverage across:
- document model primitives and cloning
- layout and pagination behavior
- Craft language parsing (tables, shapes, images, settings)
- rendering/painter smoke paths
- templating and utility modules (keyword extraction, logging)
Breaking Changes
- None announced for this beta tag.
Known Limitations (Beta)
- Public APIs and Craft syntax may still evolve before stable GA.
- Backend support is currently centered on libharu implementations.
- Performance tuning and broader production hardening are ongoing.
Upgrade / Adoption Notes
If you are evaluating this beta:
- Build with your target toolchain using the documented CMake flow.
- Validate your Craft templates and runtime data models against your production scenarios.
- Keep integrations version-pinned to this beta tag until stable release notes are published.
Acknowledgments
Thanks to all contributors and early adopters helping validate the first Docraft beta.
Full Changelog
Initial beta milestone release.