v1.13.0
What's Changed
- docs(roadmap): bring the roadmap up to date with v1.12.0 by @thomas-villani in #334
- fix(benchmarks): restore the PMC corpus to 66 articles by @thomas-villani in #335
- fix(pdf): stop counting one rejected table region twice by @thomas-villani in #336
- feat(benchmarks): record why a table region was rejected, and how many were by @thomas-villani in #337
- feat(benchmarks): measure whether figure captions reach their figures by @thomas-villani in #339
- fix(tests): stop the ci profile making every CI run verbose by @thomas-villani in #341
- ci: run the generative gates per PR, and make discovery actually discover by @thomas-villani in #342
- fix(asciidoc): join a list item's run-on lines into its principal text by @thomas-villani in #344
- feat(ast): give figures a caption of their own by @thomas-villani in #345
- test(fuzz): teach the generative strategies to build footnotes by @thomas-villani in #348
- fix(benchmarks): parse third-party XML with defusedxml by @thomas-villani in #349
- fix(pdf): take a figure's caption from the layout model, not a band of nearby text by @thomas-villani in #350
- test(fuzz): teach the generative strategies to build definition lists by @thomas-villani in #354
- fix(pptx): recurse into grouped shapes and wire run hyperlinks into output by @thomas-villani in #355
- fix(api): infer markdown, not plaintext, from an unrecognized output extension by @thomas-villani in #356
- fix(detection): stop reading inline content strings as filenames by @thomas-villani in #358
- fix(eml): stop claiming .msg so Outlook files reach the Outlook parser by @thomas-villani in #357
- fix(eml): emit email attachments and rich bodies as AST, not spliced markdown by @thomas-villani in #359
- fix(mediawiki): stop dropping trailing prose and fusing words around inline markup by @thomas-villani in #360
- fix(asciidoc): render hard line breaks in table cells as spaces, not row splits by @thomas-villani in #361
- fix(input): report 'Path does not exist' for missing Path inputs, not 'Unsupported input type' by @thomas-villani in #362
- fix(renderers): place table cells on the shared grid, not their declared spans by @thomas-villani in #364
- fix(markdown): four renderer audit fixes — nested quotes, single-line contexts, caption escaping, inert options by @thomas-villani in #365
- fix(parsers): keep the space at a run formatting boundary by @thomas-villani in #363
- fix(parsers): Org greater blocks, list continuation lines, AsciiDoc ';;' description lists by @thomas-villani in #366
- fix(pdf): caption cue rejects plural prose openers; header_min_occurrences counts lines, not characters by @thomas-villani in #368
- fix(api,chunking): honor the kwargs warn-and-drop contract beside options objects; keep chunk spans on the section basis by @thomas-villani in #369
- fix(pdf): audit cluster — dead pipeline, ruling-line text loss, grid caps, silent page drops, list nesting order by @thomas-villani in #370
- fix: transform AST walkers, HTML loose body text, XLSX hyperlink cells by @thomas-villani in #367
- fix(benchmarks): flush pending short blocks when a phrase placement lands by @thomas-villani in #371
- fix(webarchive): UTF-8 subresource writes and Windows-safe filenames; drop dead metadata enricher by @thomas-villani in #372
- test: patch pymupdf.open directly and assert exact docx escaping forms by @thomas-villani in #373
- test: make assert_markdown_valid a real oracle that can fail by @thomas-villani in #374
- test(fuzz): derandomize the five generative gates that drew a fresh corpus per run by @thomas-villani in #375
- fix(markdown): keep nested ordered lists with start != 1 through a round trip by @thomas-villani in #376
- build: per-PR changelog fragments compiled at release; cancel superseded PR CI runs by @thomas-villani in #377
- fix(pdf): route the detected caption to Image.caption instead of discarding it by @thomas-villani in #378
- feat(pdf): emit captioned figures under the default alt_text mode by @thomas-villani in #380
- feat(ast): add the Figure caption-bearing block container (#338) by @thomas-villani in #381
- feat(html): default figures_parsing to "figure" (#338) by @thomas-villani in #382
- feat(pdf): emit Figure containers for captioned, grouped, and vector figures (#338) by @thomas-villani in #383
- feat(pdf): recover borderless tables from word-box gutters (#386) by @thomas-villani in #387
- ci(benchmarks): give the PMC lane the defusedxml its fetcher imports by @thomas-villani in #388
- feat(pdf): recover rotated tables by running the gutter sweep in the table's frame by @thomas-villani in #390
- fix(markdown): emit markdown the renderer's own parser reads back by @thomas-villani in #392
- fix(rst,org): give definition descriptions their separators back by @thomas-villani in #394
- feat(pdf): admit two-column word-gutter grids behind measured guards by @thomas-villani in #393
- fix(asciidoc): close the AsciiDoc round-trip cluster by @thomas-villani in #395
- fix(dokuwiki): stop fusing footnote definition paragraphs by @thomas-villani in #396
- fix(rst): footnotes survive round trips with their identifiers and paragraphs (#347) by @thomas-villani in #397
- fix(org): footnote definitions keep their paragraphs across round trips (#347) by @thomas-villani in #398
- fix(rst): stop dropping line blocks in the parser by @thomas-villani in #399
- fix(pdf): stop fusing a subsection heading into the section heading above it (#400) by @thomas-villani in #401
- docs: tell the measured PDF story in the README and pdf guide by @thomas-villani in #402
- feat(benchmarks): pin a held-out PMC corpus the development work never tuned against by @thomas-villani in #403
- docs(benchmarks): re-record the PMC reference on post-merge main by @thomas-villani in #404
- chore(release): prepare v1.13.0 by @thomas-villani in #407
Full Changelog: v1.12.0...v1.13.0