Repository navigation
v0.81.1
[v0.81.1] - 2026-10-10
Added
- Formatted Markdown for document engines, and a
markdownfilter for plain-data templates: the document engine contract gainsformat_markdowninpipelex.cogt.doc_gen.formatted_markdown, which reads a Markdown text by the rules the built-in PDF engine prints it by and returns aFormattedMarkdown, plain data of paragraphs, headings, list items with their marker and the paragraph or heading they open with, code blocks, rules and tables whose cells carry their column's alignment, every block with the list depth and the quote depth it sits at and holding text spans with their bold, italic, strikethrough, code and link, whosestr()is its plain text and which is false when the text formats into nothing, so an engine prints Markdown formatted in its own format.make_plain_data_template_environment()registers amarkdownfilter that returns one,{{ invoice.notes | markdown }}, which is false for an empty or a blank text, so{% set notes = invoice.notes | markdown %}{% if notes %}…{{ notes }}…{% endif %}converts the text once to test and print it, and takes an optionalfinalizethrough which an engine prints it, a value printing its plain text without one. Inside a template render the conversion is charged to the render's budget; called from an engine's own code it spends from a budget of its own, as large as one render's, and an overdraft raisesMarkdownFormattingBudgetError.
Fixed
- A PDF of deeply nested emphasis prints: the built-in PDF engine no longer fails with a
RecursionErroron a Markdown text whose emphasis nests hundreds deep, such as four hundred*abefore a word and four hundredc*after it; inline markup nested past fifty levels is dropped and its text printed.
What's Changed
- feature/Drift-contracts-logging · L-261009-f3ef28 by @lchoquel in #1399
- feature/Formatted-markdown-contract · L-261010-bd0748 by @lchoquel in #1400
- Release v0.81.1 by @lchoquel in #1402
Full Changelog: v0.81.0...v0.81.1