Skip to content

Changelog

What has shipped in Reed, newest first.

Per-page structured data. Every page now emits schema.org JSON-LD automatically — a TechArticle, or an Article with datePublished on changelog pages, plus a BreadcrumbList. Generated API pages get none. The site-wide structuredData switch turns it off; your own jsonLd blocks are unaffected either way. See Structured data.

_headers is emitted with every build. Static hosts commonly serve .md as application/octet-stream, which turns the markdown mirrors into downloads. Reed now writes the content-type rules, including a /*/llms.txt rule that covers sites mounted under a base. See Response headers.

Page chrome and llms.txt discovery. footer.columns and footer.status join footer.socials. llms.txt gained three discovery paths — a <head> link on every page, a robots.txt comment, and a footer link — where previously it was emitted but referenced by nothing.

A layout field you never set no longer overrides your template. Omitting layout.sidebar-width now leaves the template’s own baseline in control, so rapide renders at its designed 260px and black at 300px instead of both being forced to 280px. Set the field explicitly to keep the previous rendering. See Typography and layout.

Site addressing and head injection. site, base, head.meta, head.link, jsonLd, analytics and redirects all arrived together — the fields that let a build know its own public address. Setting site is what enables sitemap.xml, robots.txt and absolute URLs in llms.txt. head is data-only: there is no script surface.

The design system. 37 named MDX components with enforced contracts, a four-layer CSS cascade, and the DS-D* density and design diagnostics. A component outside the catalog is now an error rather than something that renders as literal text.

Skill packs got substantially better. A budgeted SKILL.md index with navigation, authentication and safety sections; reference entries now carry x-internal exclusion, deprecation markers, a responses table, and correct oneOf/anyOf/allOf rendering.

Offline builds. reed prefetch populates a pinned local dependency store, after which build and dev complete with no network access at all. check was, and remains, unconditionally offline. See Offline builds in CI.

Five-language HTTP snippets on every generated endpoint page — cURL, JavaScript fetch, Python requests, Python httpx and Go net/http — derived from the spec and injected into a derived copy, never into your file on disk. Your own x-codeSamples always win.

Fern parity adoption, closing the gap between what Fern’s own configuration expresses and what the importer understands.

MCP servers and Agent Skills can be generated from a configured OpenAPI spec, into your own repository. See Derived surfaces.

The Doc IR. Every derived surface is now emitted from one intermediate representation rather than from each other — which is also when llms.txt and the per-page markdown mirrors first appeared.

Reed. The project was renamed from docshine.

The default experience. The mint palette and structural sizing were rebuilt so a scaffolded site looks finished rather than like a template awaiting configuration.

Multi-spec API support, and an end to silent data loss. api.openapi became api.specs, a named map, lifting the one-API-per-project ceiling. Diagnostics were reclassified against a normative rule: content you declared that would never appear in the output is now an error, not a warning with exit code 0. Previously, a project declaring more than one API section had every section after the first silently discarded while the command reported success.

API reference pages from OpenAPI, and the MDX component layer.

The compiler core. docs.json plus a content directory, compiled to a static site.