Repository navigation
Fullbleed 2.5.30: inline spacing and pagination
Same-font colored spans, nested spans and generated content now preserve authored row spacing at line-height: 1. A 24-row document that fits on three pages as plain text no longer expands to four pages after adding an accent color. Direct rendering and compiled reflow use the corrected logical line box, while retaining table, page-margin, atomic-inline and floated-initial placement.
The installed-output gate covers 380 saved-PDF cases, including fractional origins and mixed-size text. The Acme invoice golden changes only in its large heading: its corrected baseline matches an independent Chrome saved PDF with the same font. Remote-template help now points to fullbleed new list.
Validation:
- 1,387 native tests, 11 doctests and all 660 Python tests pass; package, contract, metadata, licensing, bundled-Skill and golden checks pass.
- All 440 regression PDFs match across local debug, local optimized, Linux CI and Windows CI builds. Candidate CI.
- The complete independent corpus retains exactly the stable baseline: 1,620 PASS, 24 FAIL and 18 REFERENCE-DISPUTED. All 1,662 PDFs and 3,827 raster files are byte-identical. Its failed workflow records the existing failures; no reference or tolerance was relaxed.
Runtime dependencies and authoring APIs are unchanged. The static Bootstrap component alpha remains a separate opt-in release. These are bounded regression checks, not a complete CSS or standards-conformance claim.
The release evidence retains the positive/negative controls, browser observations, reviewed golden correction and full corpus comparisons. See the runbook.
Install with python -m pip install fullbleed==2.5.30 or fullbleed = "=2.5.30" in Cargo. All 15 public Python wheels and the source distribution were downloaded and matched against the release artifacts. The public Rust crate matches the tagged source and registry checksum.
Fresh public Python and Rust consumers reproduce all 440 qualified PDFs byte for byte; the exact-tag Linux release gate matches the same outputs. The Rust consumer repeats every render and verifies determinism. The dedicated PDF/VT validator remains unconfigured.