docs(33): release notes for the gap-fix follow-ups (quick-261104-xae)

This commit is contained in:
Jakub Zych
2026-11-05 00:23:39 +01:00
parent 5ce50bedfb
commit 9d299a4455
3 changed files with 4 additions and 4 deletions

View File

@@ -17,8 +17,8 @@ Excerpt: One H1 per post page, a heading outline and link attributes in the edit
- **Requires SummerCMS v0.6.1.**
- **Content descriptors list only locales with content.** Posts, categories, tags and authors still describe every enabled locale, but a locale gets an address (and so an hreflang link and a sitemap address) only when the record has content in it: a post or a category when its own translation in that locale holds text (title, content or excerpt; a category's name or description; a translated slug alone does not count), a tag or an author when at least one of its published posts is translated into it, and the default locale always. Sites with an enabled but untranslated locale stop advertising its fallback pages. Menu items keep every locale.
- The H1 to H2 conversion never rewrites a markdown body: a code sample that shows `<h1>` keeps it, and only the rendered HTML is converted (API saves, imports, `journal:fix-headings` and translations).
- Setting an image's alt text through the API or MCP on a markdown post writes it into the markdown (`![alt](src)`), so the next save keeps it; an image the markdown does not hold that way is refused with a validation error.
- The H1 to H2 conversion leaves code samples alone: in a markdown body an `<h1>` inside a code block or code span keeps its tag, also when the body starts with an HTML block, and a raw `<h1>` elsewhere is converted as in the rendered page (API saves, imports, `journal:fix-headings` and translations).
- Setting an image's alt text through the API or MCP on a markdown post writes it into the markdown (`![alt](src)`, or a raw `<img>` outside code), also when the markdown starts with an HTML tag, so the next save keeps it; an image the markdown does not hold that way is refused with a validation error. A translation that holds only HTML gets the alt in its HTML.
- **Upgrade:** run the migrations, then `journal:fix-headings` (dry run first) to convert H1s already stored, and `journal:image-variants` once to write the variants of existing featured images. For the faster WebP encoder install libwebp on the server; the binary is now dynamically linked against glibc (see SummerCMS v0.6.1).
## Fixed

View File

@@ -13,7 +13,7 @@ Excerpt: Structured data, breadcrumbs, hreflang and pagination in every resolve
- Publisher, local business and home crumb settings; per-record schema type, Service fields and custom JSON-LD with validation and a graph preview in the SEO tab.
- Pagination in the query or path form with title and description suffixes.
- Site audit settings, a nightly crawl, Site audit and Crawls screens and their MCP tools. With `golem15.seo.crawl_chrome_path` set, a rendered comparison through headless Chrome (chromedp).
- Crawl cancel and time limits: cancelling a running crawl shows it as **Cancelling** until its job stops, then it ends cancelled with the pages fetched so far; no other crawl starts before that. A crawl that reaches the 6-hour job limit ends failed and keeps what it fetched, and a crawl whose job disappeared (for example after a worker restart) is ended by the next start instead of staying "running".
- Crawl cancel and time limits: cancelling a running crawl shows it as **Cancelling** until its job stops, then it ends cancelled with the pages fetched so far; no other crawl starts before that. A crawl that reaches the 6-hour job limit ends failed and keeps what it fetched, and a crawl whose job disappeared (for example after a worker restart) is ended by the next start instead of staying "running". When storing a crawl's results takes longer than 10 minutes, the crawl still ends at once, failed with that error, instead of staying "running" until the next start.
- A sitemap filter for sm-sitemap-plugin that leaves noindex, canonicalised and redirected addresses out.
- The route report takes an optional `noindex` list: the static paths the frontend serves noindex (pages behind a login, pages with a noindex robots meta). The sitemaps leave them out, Additional addresses included, and a changed list asks the sitemap for a rebuild. vue-seo-layer v0.2.0 sends it; a frontend that sends no list keeps working.
- Links settings (outbound rules, new tab) and site cache purges after SEO writes.

View File

@@ -22,4 +22,4 @@ Excerpt: hreflang and one JSON-LD graph on every page, robots.txt and sitemaps s
## Fixed
- robots.txt, sitemap.xml and llms.txt answer 503 with `Retry-After` while the backend has not answered since the server started, so a crawler retries instead of reading a missing robots.txt as allow-all; this also keeps a staging site's `Disallow` in force.
- robots.txt, sitemap.xml and llms.txt answer 503 with `Retry-After` while the backend has not answered since the server started, so a crawler retries instead of reading a missing robots.txt as allow-all; this also keeps a staging site's `Disallow` in force. Once the backend has answered, its last answer is used while it is down, so on a site whose backend has no SEO plugin these files keep coming from the app during an outage.