v3.7.0
Highlights
@byline/richtext-lexical— addedlexicalToMarkdown(exported from/server, with thelexicalEditorToMarkdownServer()factory): a one-way, server-safe serializer that walks storedSerializedEditorStateJSON directly — no@lexical/headless, no DOM, no node registration. Coverage mirrors the render serializer (headings, nested lists, GFM tables, code fences, links including internal-link envelopes, inline images with flattened captions, video embeds as links, layout containers flattened to stacked sections). Admonitions emit GFM alerts (> [!NOTE], title as a bold lead paragraph) — deliberately distinct from the editor toggle's:::dialect; the output is lossy-tolerant by contract and pinned by contract tests.@byline/core— addeddocumentToMarkdown(doc, definition, options): a schema-aware assembler that renders a whole document to one markdown file — YAML frontmatter (title, description, canonical, locale, collection, published, updated), an H1 fromuseAsTitle, the summary as standfirst, blocks/richtext as the document body, relations as links, and a "content, not configuration" rule (booleans/json render nothing). Rich-text leaves delegate through the newServerConfig.fields.richText.toMarkdownseam (the sibling ofembed/populate), keeping core editor-agnostic; URL resolution arrives via callbacks, keeping routing knowledge out of core.- monorepo — the reference app (
apps/webapp) now ships the complete agent-readable surface as copyable patterns:.mdroutes per content locale (TanStack suffixed path params{$path}[.]md, a locale-rewrite carve-out treating.mdas content, and a dev-only Vite passthrough plugin),llms.txtand a dynamicsitemap.xml(hreflang alternates) built over one shared published-URL index so the two surfaces cannot drift, an opt-in L1 tagged in-memory cache with collection-hook invalidation (docs/DATA-CACHE-DESIGN.md), and all three advertisement channels —.mdURLs,<link rel="alternate" type="text/markdown">head tags, and strictAccept: text/markdown302 negotiation that can never divert a browser. The present-state reference isdocs/MARKDOWN-EXPORT.md.
Bug Fixes
- monorepo — the reference app's
getServerConfig()now falls back fromimport.meta.envtoprocess.envso plaintsxscripts (seeds,import-docs) no longer crash inside collection hooks, and supplies sanelog/portdefaults.
All other @byline/* packages bumped to 3.7.0 in lockstep with no behavioural changes this cycle.