Skip to content

feat(docs): add blog: docs.yml config key [FSE-57] - #17468

Draft
adidavid014 wants to merge 1 commit into
mainfrom
adidavid/fse-57-cli-blog
Draft

feat(docs): add blog: docs.yml config key [FSE-57]#17468
adidavid014 wants to merge 1 commit into
mainfrom
adidavid/fse-57-cli-blog

Conversation

@adidavid014

Copy link
Copy Markdown
Contributor

Summary

Part of epic FSE-53 (Formal blog support). Adds a first-class blog: navigation key to docs.yml, mirroring changelog: end-to-end. A blog is a directory of dated markdown posts that the docs bundle renders as a card grid (vs. the changelog timeline). Design: fern-platform docs/adr/0023-formal-blog-support.md.

Authoring is identical to a changelog:

tabs:
  blog:
    display-name: Blog
    slug: blog
    blog: docs/blog   # <- new key

Changes (19 files, mirrors changelog:)

  • docs.yml schemaBlogConfiguration / BlogFolderRelativePath, added to the NavigationItem union and as a blog: tab (DocsYmlSchemas.ts, the generated schemas/sdk/{api,serialization} types, and the committed docs-yml.schema.json).
  • ParsedDocsConfigurationTabbedNavigationChild.Blog + DocsNavigationItem.Blog.
  • Parser — tab + nav-item blog branches, isRawBlogConfig, DEFAULT_BLOG_TITLE; getAllPages + getReferencedApiSections blog cases.
  • BlogNodeConverter (new) — mirrors ChangelogNodeConverter (same year/month/entry tree) but with title/filename-based entry slugs. Wired into DocsDefinitionResolver (toBlogNode/toTabBlogNode + the variant/nav/tab dispatchers).
  • docs-validator — validates blog-folder markdown pages.

⚠️ Draft — blocked on SDK publish

This depends on @fern-api/fdr-sdk shipping the blog/blogEntry FernNavigation node types (fern-platform PR #13396). CI will be red until the CLI's @fern-api/fdr-sdk catalog pin is bumped to a version that includes BlogNode. Verified to compile locally against a linked local fdr-sdk build.

Merge order: land fern-platform #13396 → publish fdr-sdk → bump the catalog here → this goes green.

How it was tested

All CLI packages (configuration, configuration-loader, docs-resolver, docs-validator) compile clean against a linked local fdr-sdk with BlogNode; biome-formatted. Full end-to-end render pending the SDK publish + a fix for the pre-existing local-bundle build breakage (FSE-63).

Generated with Claude Code

Adds a first-class `blog:` navigation key to docs.yml, mirroring `changelog:`
end-to-end. A blog is a directory of dated markdown posts that the docs bundle
renders as a card grid (vs. the changelog timeline). Part of epic FSE-53;
design in fern-platform docs/adr/0023-formal-blog-support.md.

- docs.yml schema: BlogConfiguration / BlogFolderRelativePath, added to the
  NavigationItem union and as a `blog:` tab (DocsYmlSchemas.ts + generated
  api/serialization schemas + the committed docs-yml.schema.json).
- ParsedDocsConfiguration: TabbedNavigationChild.Blog + DocsNavigationItem.Blog.
- Parser: tab + nav-item blog branches, isRawBlogConfig, DEFAULT_BLOG_TITLE;
  getAllPages + getReferencedApiSections blog cases.
- New BlogNodeConverter (mirrors ChangelogNodeConverter; same year/month/entry
  tree, but title/filename-based entry slugs). Wired into DocsDefinitionResolver
  (toBlogNode / toTabBlogNode + the variant/nav/tab dispatchers).
- docs-validator: validates blog-folder markdown pages.

NOTE (draft): depends on @fern-api/fdr-sdk shipping the `blog`/`blogEntry`
FernNavigation node types (fern-platform PR #13396). CI will be red until the
SDK catalog pin is bumped to a version that includes BlogNode. Verified to
compile locally against a linked local fdr-sdk build.

Co-Authored-By: Claude <noreply@anthropic.com>
@adidavid014 adidavid014 self-assigned this Aug 18, 2026
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.

2 participants