# Changelog

All notable changes to SoulDoc are documented in this file.

## 1.0.3 — 2026-07-30

Compatibility release for native SVG editors.

### Fixed

- Replaced XHTML `foreignObject` output with native SVG `text`, `tspan`,
  `rect`, and `image` primitives.
- Corrected SVG physical units, table rendering, and z-index paint order.
- Added SVG XML, native image, and vector-editor compatibility coverage.

### Changed

- Rich HTML and Markdown are flattened to editable text in SVG output.

## 1.0.2 — 2026-07-30

Maintenance release with updated project links and package documentation.

### Changed

- Updated the project homepage to `tentags.org`.
- Added the dedicated SoulDoc documentation URL at `tentags.org/souldoc`.
- Updated package examples and version references for the 1.0.2 release.

## 1.0.1 — 2026-07-30

Maintenance release with refreshed package and project documentation.

### Changed

- Updated package examples and version references for the 1.0.1 release.
- Simplified the README introduction and project attribution.

## 1.0.0 — 2026-07-30

First stable release with flow layout and multi-format export.

### Added

- `SoulLayoutDocument` pre-layout model.
- `Text`, `Markdown`, `Image`, `Table`, `Row`, `Column`, `Grid`, and `Absolute`
  components.
- Shared `SoulStyle`, `EdgeInsets`, and renderer-neutral CSS mapping.
- Deterministic text measurement, wrapping, automatic geometry, pagination,
  repeated headers and footers, and table row splitting.
- Optional Pillow text measurer for application-provided font metrics.
- Printable, self-contained HTML renderer.
- One-page-per-document SVG geometry reference renderer.
- PDF export by printing the same HTML in an offline Chromium session.
- Visual editable XLSX output with text box shapes, native cells, merged
  ranges, images, print areas, and one worksheet per SoulDoc page.
- Direct layout-document support in the DOCX renderer.
- Unified `render_document()` and `save_document()` APIs for HTML, SVG, JSON,
  DOCX, PDF, and XLSX.
- `Table.from_tentags()` and `tentags_table()` layout integration.
- PyCells `MD(...)` record recognition.
- Dependency-free Markdown conversion for records without evaluated HTML.
- Semantic Markdown rendering across HTML, SVG, PDF, DOCX, and XLSX.
- Explicit `SoulContentKind.MARKDOWN` with JSON round-trip support.
- Cross-format visual geometry regression tests.

### Security

- Printable HTML embeds resolved images and disables implicit external image
  sources by default.
- Chromium PDF rendering aborts all HTTP and HTTPS requests.

### Known limitations

- Default font measurement is deterministic and approximate. Exact typography
  requires an application-supplied Pillow font resolver.
- SVG uses XHTML `foreignObject` to preserve editable rich content.
- XLSX is a visual approximation because spreadsheets do not have a native
  page-layout model equivalent to SoulDoc.
- PDF export requires Playwright and an installed Chromium browser.
- Mathematical expressions are editable source text, not OMML.

## 0.1.0 — 2026-07-30

Initial alpha release candidate.

### Added

- Dependency-free positioned-document IR.
- Friendly `SoulDocument`, `SoulPage`, and `SoulBox` API.
- A single public Python namespace: `souldoc`.
- Apache License 2.0.
- Portrait, landscape, custom-sized, and mixed-sized pages.
- Strict and compatibility normalization modes.
- Versioned JSON serialization with forward-field preservation.
- Document, page, box, and resource metadata.
- External resources with application-provided resolvers.
- Editable DOCX renderer with positioned Word textboxes.
- Editable rich text, links, bookmarks, images, and Word tables.
- Table `rowspan` and `colspan` support.
- Dependency-free TenTags parser with a public table model and HTML converter.
- TenTags styles, links, marks, images, values, line breaks, and physical
  `<cm>`/`<rm>` merges.
- TenTags preamble `scale(...)` with semantic HTML and native DOCX row and
  column dimensions.
- Automatic combination of PyCells TenTags source with evaluated HTML values.
- Typed package marker and optional DOCX dependencies.
- Test matrix for Python 3.10 through 3.14.

### Fixed

- `resource_id` now renders an image without requiring duplicate `<img>` HTML.
- Nested HTML tables are emitted as native editable Word tables.
- Ordered and unordered HTML lists retain visible markers in DOCX.
- Strict integer parsing rejects floats, booleans, and numeric strings.
- DOCX rendering validates the SoulDoc model before producing a file.
- Resource `sha256` values are validated and checked during image rendering.

### Known limitations at 0.1.0

- Mathematical expressions are emitted as editable source text, not OMML.
- SVG images use their alternative-text fallback.
- HTML sanitization remains the responsibility of the host application.
- HTML and PDF renderers were not part of the 0.1.0 baseline.
