Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ Semver applies from 1.0.0. A breaking change to a documented API needs a major

## [Unreleased]

Nothing yet.

## 27.9.0 - 2026-10-11

### Added

Tier 2 — http. Tier 4 — ai.
Expand Down Expand Up @@ -36,6 +40,11 @@ Tier 1 — seo. Tier 5 — cli.
- **A URL `seo.robots.disallow` blocks is no longer in the sitemap.** `robots.txt` and the sitemap are written from one config, and the sitemap listed URLs the other told crawlers not to fetch ("submitted URL blocked by robots.txt"). A rule is read as a crawler reads it — a prefix, `*`, a trailing `$`; a locale copy it blocks leaves its hreflang cluster. An app whose sitemap shrinks on upgrade was listing a blocked page: narrow the rule to keep it.
- **A sitemap file past 50 MB is split.** Only the 50,000-URL cap was enforced; a site with many locales (every `<url>` carries the whole hreflang cluster) could pass the protocol's 50 MB uncompressed limit below it, which a crawler answers with "sitemap could not be read". Sections and the unsectioned split both cut on bytes now (`SITEMAP_MAX_BYTES`).

### Commits

- feat(ai): provider prompt caching for agent() and llm(); a tool-loop guard and a run deadline (#764)
- feat(seo): a sitemap index with named, paginated sections by configuration; prerender() says a page's lastmod and the locales it is listed in (#765)

## 27.8.1 - 2026-10-11

### Fixed
Expand Down
Loading
Loading