36 lines
2.5 KiB
Markdown
36 lines
2.5 KiB
Markdown
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](../api/articles.md) 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.
|