• fsylvain released this 2026-10-04 19:04:12 +02:00 | 71 commits to main since this release

    This release lets your website read article bodies as markdown, HTML or structured blocks, and fixes text alignment in the editor.

    New

    Article body formats

    • Read an article body as markdown, HTML or a typed block array with the format query parameter, so a headless frontend can render it with markdown-it, comark or its own components.
    • Keep text alignment in every format: markdown wraps centered, right-aligned and justified blocks in a div with an inline style, and the block array carries an align field.
    • Keep plain text plain: text that merely looks like markdown, such as # not a heading or - not a list, is escaped in the markdown output.
    • See the Integration page snippets and the article API reference for the full contract.

    Improvements and fixes

    • Fix the text alignment buttons in the article editor, which were disabled and showed a blocked cursor. Paragraphs and headings can be aligned left, center, right or justified again, and unaligned text stays free of inline styles.
    • The web interface requests HTML explicitly when it loads, saves, publishes, unpublishes or creates an article, so the editor and the image counts behave exactly as before.

    API

    • Changed: GET /v1/article/, GET /v1/article/{id}, POST /v1/article/, PATCH /v1/article/{id}, PATCH /v1/article/{id}/publish and PATCH /v1/article/{id}/unpublish now return body as markdown by default. Pass ?format=html to keep the previous HTML body.
    • Every article object now includes body_format (markdown, html or json), which names the format of body.
    • ?format=json on the same routes returns body as a JSON array of typed blocks instead of a string.
    • An unsupported format answers 400 before anything is read or written.
    • Storage and the request bodies of POST and PATCH stay HTML.

    Under the hood

    • Add the article body renderer port in the domain, with a markdown and JSON block adapter, and tests for every supported element.
    • Update golang.org/x/crypto to v0.57.0 and add golang.org/x/net as a direct dependency for HTML parsing.
    • Add @tiptap/extension-text-align to the web interface.

    Upgrading

    • Replace the binary. No database migration or new environment variable is required.
    • Clients that read an article body as HTML must add ?format=html to their article requests, because the default is now markdown.
    • A markdown renderer needs raw HTML enabled for text alignment to show, for example html: true in markdown-it.
    Downloads