|
1 | 1 | # Changelog |
2 | 2 |
|
| 3 | +## [3.4.4] - May 20, 2026 |
| 4 | + |
| 5 | +- fix(pptx): prevent `NullReferenceException` in `GetSlideTitle` when `cSld`/`spTree` is missing (#287) |
| 6 | +- fix(html): render Word page breaks as CSS `page-break` div in HTML output (#281) |
| 7 | +- fix(word): `RemoveSoftHyphens` and `RemoveLastRenderedPageBreak` in `MarkupSimplifier` were silently ignored (#284) |
| 8 | +- perf: replace `ToUpper()`+`StartsWith()` with `OrdinalIgnoreCase` comparisons (#282) |
| 9 | +- perf: replace `.Where(pred).Count()` with `.Count(pred)` and `Count()!=1` with `Skip(1).Any()` (#270) |
| 10 | +- perf: replace `ContainsKey`+indexer double-lookups with `TryGetValue` (#274) |
| 11 | +- refactor: modernize `GetListItemText` locale files (#283) |
| 12 | +- refactor: modernize `UnicodeMapper.cs` (#278) |
| 13 | +- refactor: modernize Word/Assembler helper files (#275) |
| 14 | +- refactor: modernize `MetricsGetter.cs` — file-scoped namespace, `is null`/`is not null`, pattern matching (#273) |
| 15 | +- refactor: modernize `FieldRetriever.cs` — file-scoped namespace, `W.*` constants, `is null`, slices, `TryGetValue` (#272) |
| 16 | +- refactor: simplify `Select().SelectMany()` chains in `WmlComparer` to `SelectMany()` (#271) |
| 17 | +- refactor: simplify `FileUtils.GetFilesRecursive` using `SearchOption.AllDirectories` (#268) |
| 18 | +- refactor: modernize null checks to use `ArgumentNullException.ThrowIfNull` (#265) |
| 19 | +- test: add unit tests for `OpenXmlPowerToolsDocument` and `OpenXmlMemoryStreamDocument` (OXD001–OXD040) (#266) |
| 20 | +- test: add `ReferenceAdder` unit tests (RA100–RA140) and fix `AddTof` `w:dirty` namespace bug (#263) |
| 21 | +- chore(deps): update TUnit 1.43.11 → 1.45.8 (#264, #267, #276, #277) |
| 22 | + |
3 | 23 | ## [3.4.3] - May 6, 2026 |
4 | 24 |
|
5 | 25 | - fix(pptx): fix `ArgumentNullException` in `FluentPresentationBuilder` when slides have null data (#256) |
|
0 commit comments