Skip to content

feat(renderer): per-collection feeds and structured-data guide (RFC-0042 step 6) - #108

Merged
Madraka merged 1 commit into
mainfrom
feat/stage3-feeds
Oct 23, 2026
Merged

Madraka merged 1 commit into
mainfrom
feat/stage3-feeds

Conversation

@Madraka

@Madraka Madraka commented Oct 23, 2026

Copy link
Copy Markdown
Contributor

Step 6, the last step of RFC-0042's rollout (ADR-0044), plus two gaps left from step 3 (#105).

Per-collection feeds

  • A new pre middleware in the cloudhal() integration serves <prefix>/rss.xml, and its locale variants, only when the theme's own routes answer 404.
  • Feeds respect feed: false and expiry (unlist and hide), and use the site feed's cache headers capped at the next gate, plus listCacheTag.
  • Collections without a fixed prefix (/{slug}) get no feed.
  • Static builds: staticPaths().feeds now lists collection feeds too, so the existing [...path]/rss.xml route (old frozen themes have it as well) prerenders them through the middleware.
  • collectionFeedLink(site, collection, origin, locale?) for themes. The starter links feeds on entry pages and listing pages.
  • Visible changes: every site now also gets its posts feed (e.g. cloudhal.com /blog/rss.xml), and the home page links a posts feed next to the site feed.

Gaps closed from step 3

  • Previews apply where/orderBy: renderSectionHtml takes a listing option and uses the live renderer's evaluator. Studio, API and MCP previews now list correctly.
  • The workerd route sweep covers derived gates. Past an unlist gate the entry page stays and is listed on no other route. Past a hide gate it is 404 and leaks on no route, with no-store. Collection feeds are served on the Worker.

Docs: docs/guides/structured-data.md (presets, mapping, preview, expiry, field listings, listing pages, feeds, theme API), linked in the docs site; the renderer README is updated.

Tests

  • astro-renderer: 295/295.
  • cloudflare: 54/54.
  • docs: 33/33.
  • cli: 176/176, including the workerd sweep, e2e (static and dev feeds) and the compat test (v0.3.10, v0.4.0 and v0.5.0 all get /events/rss.xml).
  • turbo typecheck 20/20, Biome and size check are clean.

Changeset: minor (astro-renderer, cli).

🤖 Generated with Claude Code

… step 6)

- A pre middleware serves <prefix>/rss.xml (and per locale) for each
  collection with a fixed prefix when the theme answers 404: feed:false
  and expiry respected, the site feed's cache headers and tags. Static
  builds list the paths, so old themes' [...path]/rss.xml route writes
  them too. collectionFeedLink for themes; the starter links feeds on
  entries and listing pages.
- Previews apply contentList where/orderBy with the live evaluator
  (renderSectionHtml listing option).
- The workerd route sweep covers derived gates (unlist and hide).
- docs/guides/structured-data.md; renderer README.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Madraka <8898640+Madraka@users.noreply.github.com>
@Madraka
Madraka merged commit db6eb3e into main Oct 23, 2026
5 checks passed
@Madraka
Madraka deleted the feat/stage3-feeds branch October 23, 2026 13:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant