Skip to content

docs: prepare CHANGELOG and MIGRATING for v0.8.0#285

Merged
carlos7ags merged 5 commits into
mainfrom
docs/changelog-0.8.0
May 30, 2026
Merged

docs: prepare CHANGELOG and MIGRATING for v0.8.0#285
carlos7ags merged 5 commits into
mainfrom
docs/changelog-0.8.0

Conversation

@carlos7ags
Copy link
Copy Markdown
Owner

@carlos7ags carlos7ags commented May 2, 2026

Summary

Compiles the v0.7.1..main delta into release-ready CHANGELOG entries and updates MIGRATING with the v0.7.x -> v0.8.0 upgrade guide. Refreshed 2026-05-30 after rebase on origin/main to capture the ~25 PRs merged since the previous push. This is the final docs prep before tagging v0.8.0. No code changes.

git rev-list --count v0.7.1..HEAD = 198.

Refresh (2026-05-30) — newly catalogued PRs

Added or amended Unreleased entries for:

Dependabot bumps merged in the same window (#296, #297, #298, #316, #317) are intentionally not in CHANGELOG per folio convention.

CHANGELOG additions to Unreleased (cumulative across the branch)

MIGRATING additions for v0.7.x -> v0.8.0

  • C ABI surface grew from 388 to 393 (+5): folio_document_set_language + 4 PDF/A constants (document: extend PDF/A to A-3a and the PDF/A-4 family #214); folio_paragraph_measure_lines / measure_height / split_after_line (export: add C ABI wrappers for paragraph measure/split + language-aware font parse #283); folio_font_parse_for_language (export: add C ABI wrappers for paragraph measure/split + language-aware font parse #283). Verified via grep -r "^//export folio_" export/ | wc -l = 393.
  • layout.UnitValue no longer comparable with == — compile error for any out-of-tree consumer doing a == b on UnitValue.
  • layout.BackgroundImage.Position is now [2]layout.ResolvableLength (was [2]float64); plus new sibling FontSize float64 for em / rem resolution. Before / after example included.
  • html.ErrURLPolicyDenied message text changed from "folio/html: ..." to "html: ..."; the exported var identity is unchanged so errors.Is still works, but verbatim string comparisons against the old message must be updated.
  • Visual-change checklist for regression-diffing PDFs against a v0.7.x baseline (cursive horizontal placement, CJK page-break corruption, GPOS Type 5 fallback, NFC normalization, numeric font-weight rounding at 600, <th> honouring explicit text-align: left, 3D border bevel rendering).
  • Asset-resolution side-effects from html: centralize asset resolution behind a single resolveLocalAsset entry point #229: <img src="https://...svg"> and inline-SVG <img> URLs now flow through URLPolicy uniformly; @font-face url('/abs/system/font.ttf') succeeds with BaseFS: nil; FallbackFontPath retains a documented programmatic-only carve-out.

Scope

  • Documentation only. Zero code changes.
  • docs/CSS_SUPPORT.md is unchanged by go run ./internal/gen-css-docs/ — no commit needed for it.

Test plan

  • Both files render correctly as Markdown.
  • go test ./... green on b2cc61a (sanity check; no code changed).
  • C ABI export count verified at 393 via grep -r "^//export folio_" export/ | wc -l.
  • go run ./internal/gen-css-docs/ produced no diff against the on-disk docs/CSS_SUPPORT.md.

@carlos7ags carlos7ags force-pushed the docs/changelog-0.8.0 branch from a7661c8 to 0ccdd3d Compare May 2, 2026 15:13
carlos7ags added a commit that referenced this pull request May 2, 2026
CHANGELOG additions to Unreleased:
- Visual changes: <th> behavioural shift from #288 — explicit
  text-align: left on <th> is now preserved instead of being
  silently re-centered by the table-cell default heuristic.
- Added: text-align: start | end with direction-relative late
  binding (#288); text-decoration-line: overline (#289); CSS
  border styles groove/ridge/inset/outset rendered with per-side
  dark/light modulation (#290).

MIGRATING additions to the v0.7.x → v0.8.0 Visual changes section:
- <th> default-center heuristic shift (mirror of CHANGELOG entry,
  framed for upgraders auditing PDF diffs).
- border 3D styles now render the bevel — documents that used
  ridge/groove/inset/outset will see colored modulation instead
  of a flat solid line.

The text-align: start/end addition itself is in CHANGELOG Added but
intentionally omitted from MIGRATING Visual changes — the new
keywords were rejected pre-fix, so any document that relied on the
keyword is opting INTO the new behaviour rather than seeing an
existing render shift.

text-decoration overline is similarly omitted from MIGRATING — the
keyword was silently dropped pre-fix, so adding a visible overline
is an opt-in.

Three PRs (#283 C ABI, #284 calc fixes, #287 numeric font-weight)
are already entered. v0.8.0 is now release-note ready once #285
itself merges.
@carlos7ags carlos7ags force-pushed the docs/changelog-0.8.0 branch from 0ccdd3d to 86d3af1 Compare May 3, 2026 19:14
carlos7ags added a commit that referenced this pull request May 3, 2026
CHANGELOG additions to Unreleased:
- Visual changes: <th> behavioural shift from #288 — explicit
  text-align: left on <th> is now preserved instead of being
  silently re-centered by the table-cell default heuristic.
- Added: text-align: start | end with direction-relative late
  binding (#288); text-decoration-line: overline (#289); CSS
  border styles groove/ridge/inset/outset rendered with per-side
  dark/light modulation (#290).

MIGRATING additions to the v0.7.x → v0.8.0 Visual changes section:
- <th> default-center heuristic shift (mirror of CHANGELOG entry,
  framed for upgraders auditing PDF diffs).
- border 3D styles now render the bevel — documents that used
  ridge/groove/inset/outset will see colored modulation instead
  of a flat solid line.

The text-align: start/end addition itself is in CHANGELOG Added but
intentionally omitted from MIGRATING Visual changes — the new
keywords were rejected pre-fix, so any document that relied on the
keyword is opting INTO the new behaviour rather than seeing an
existing render shift.

text-decoration overline is similarly omitted from MIGRATING — the
keyword was silently dropped pre-fix, so adding a visible overline
is an opt-in.

Three PRs (#283 C ABI, #284 calc fixes, #287 numeric font-weight)
are already entered. v0.8.0 is now release-note ready once #285
itself merges.
Compiles the v0.7.1..main delta (114 commits, ~40 PRs) into
release-ready CHANGELOG entries and updates MIGRATING with the
v0.7.x → v0.8.0 upgrade guide.

CHANGELOG additions to Unreleased:
- Visual changes section: GPOS cursive horizontal placement (#220),
  CJK paragraphs across page breaks (#246), Unicode NFC normalization
  at layout entry point (#217)
- Changed (breaking): layout.UnitValue no longer comparable with ==
  (#236), in addition to the existing BasePath removal and @font-face
  resolution change (#85)
- Added: font.Fallback (#225), Paragraph.MeasureLines/Height (#238),
  Paragraph.SplitAfterLine (#253), layout.Anchor + auto-named-
  destinations (#223), layout.UnitCalc + CalcUnit (#236),
  Info.Language (#214), PDF/A-3a + PDF/A-4 family (#214), C ABI
  additions (#214 + #283), CSS :empty / ::placeholder (#215), 8 Indic
  scripts (#216), GPOS Types 3/5/6 (#218 / #213), body-flow
  counter(page) (#221), GCPM bookmark properties (#224), the calc
  shorthand series across 13 properties (#236-#261)
- Changed: HTML CSS parser refactored into declarative property
  registry (#271)
- Fixed: GPOS cursive double-counted hmtx + Type 5 3+ component
  fallback (#220), inline elements + Arabic OriginalText preserved
  across page splits (#241), font: paren-aware slash detector +
  column-rule none/hidden zeros width (#270), transform() paren-aware
  arg extractor (#272), parseAngle/parseNumericVal/parseLineHeight
  understand calc/min/max/clamp (#274 / #275 / #284), margin auto-flag
  detector aligned (#263)
- Deprecated reminder: the four core direct-field accesses from v0.7.0
  carry forward to v0.8.0; removal target stays v1.0
- Tests: hyphenation contract guard (#250)
- Documentation: docs/CSS_SUPPORT.md introduced (#271/#273) and
  extended with Selectors / At-rules / Functions sections (#162/#282)

MIGRATING additions for v0.7.x → v0.8.0:
- C ABI surface grew from 388 to 393 (+5): folio_document_set_language,
  FOLIO_PDFA_3A/4/4F/4E (#214), folio_paragraph_measure_lines /
  measure_height / split_after_line (#283), folio_font_parse_for_language
  (#283)
- layout.UnitValue compile-error break for == comparisons
- Visual-change checklist for regression-diffing PDFs
- Asset-resolution side-effects from #229 (URLPolicy uniformity,
  absolute system font path with BaseFS=nil, FallbackFontPath
  programmatic-only carve-out)
CHANGELOG:
- Visual changes: standard PDF-14 fonts now round weight ≥ 600 to
  Bold per CSS Fonts L4 §5.2. Pre-fix, font-weight: 600 against
  Helvetica picked Regular (the binary parser collapsed everything
  < 700 to "normal"); post-fix it picks Helvetica-Bold. Visible
  shift for documents that wrote 600 expecting Regular.
- Added: numeric font-weight ladder + nearest-weight @font-face
  matching (CSS Fonts L4 §3.1 + §5.2). computedStyle.FontWeight
  promoted to int over 100..900; resolveFontPair walks the spec's
  per-window algorithm (ascending toward 500 first for [400, 500],
  descending then ascending for < 400, ascending then descending
  for > 500). Closes the issue where 4 Inter weights declared via
  @font-face silently picked Regular for any document writing
  font-weight: 600.

MIGRATING:
- Visual changes section gains a bullet for the standard-font
  rounding shift, with the same explanation framed for upgraders.
CHANGELOG additions to Unreleased:
- Visual changes: <th> behavioural shift from #288 — explicit
  text-align: left on <th> is now preserved instead of being
  silently re-centered by the table-cell default heuristic.
- Added: text-align: start | end with direction-relative late
  binding (#288); text-decoration-line: overline (#289); CSS
  border styles groove/ridge/inset/outset rendered with per-side
  dark/light modulation (#290).

MIGRATING additions to the v0.7.x → v0.8.0 Visual changes section:
- <th> default-center heuristic shift (mirror of CHANGELOG entry,
  framed for upgraders auditing PDF diffs).
- border 3D styles now render the bevel — documents that used
  ridge/groove/inset/outset will see colored modulation instead
  of a flat solid line.

The text-align: start/end addition itself is in CHANGELOG Added but
intentionally omitted from MIGRATING Visual changes — the new
keywords were rejected pre-fix, so any document that relied on the
keyword is opting INTO the new behaviour rather than seeing an
existing render shift.

text-decoration overline is similarly omitted from MIGRATING — the
keyword was silently dropped pre-fix, so adding a visible overline
is an opt-in.

Three PRs (#283 C ABI, #284 calc fixes, #287 numeric font-weight)
are already entered. v0.8.0 is now release-note ready once #285
itself merges.
CSS max-width / max-height / min-width / min-height on <img>
(closes #291). Pre-fix the CSS parser stored the values but the
converter never threaded them to ImageElement, and ImageElement
had no fields to receive them. Post-fix adds cssMax*/cssMin*
fields, SetMaxSize/SetMinSize setters, and an aspect-preserving
clamp helper applied before object-fit dispatch and after auto-
resolution. Container width remains the absolute outer bound for
replaced elements per CSS 2.1 §10.4.

This is the spec-completeness shape — same as #287 (numeric
font-weight), #288 (text-align: start/end), #289 (overline),
#290 (border 3D styles): a CSS spec value the parser stored but
the consumer-side primitive didn't read.
Adds CHANGELOG entries for #293, #294, #300, #301-#306, #307, #309-#311,
#312, #313, #314, #315, and #319 (~25 PRs merged since the previous
refresh of this branch). The lazy bg-position resolution in #319
introduces a public breaking change to layout.BackgroundImage.Position
([2]float64 -> [2]layout.ResolvableLength); both CHANGELOG and
MIGRATING get a before/after example. MIGRATING also notes the
html.ErrURLPolicyDenied message-text change from #313 (var identity
unchanged, so errors.Is still works).

C ABI export count remains 393; docs/CSS_SUPPORT.md is unchanged by
go run ./internal/gen-css-docs/.
@carlos7ags carlos7ags force-pushed the docs/changelog-0.8.0 branch from 86d3af1 to b2cc61a Compare May 30, 2026 15:10
@carlos7ags carlos7ags merged commit d01435b into main May 30, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment