You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(website): repair frontmatter handling in docs, then use it for SERP descriptions (#827)
Two regressions that hid each other. `FRONTMATTER_DESCRIPTION_PATTERN` spliced
the opening and closing fences into one match and required a key to *follow*
`description:`, so the last key in a block never matched — and `description:` is
the last key in every frontmatter block in content/docs/. Every such page
silently fell back to its first paragraph.
Because the description was ignored, the only visible symptom was the second
bug: the docs route handed raw file contents to `next-mdx-remote`, which does
not strip frontmatter unless asked. Markdown then read the block as an `<hr>`
followed by a setext `<h2>`, putting a junk "title: … description: …" heading
above the real `<h1>` on /docs/chat/guides/custom-catalogs and
/docs/render/api/views — in the page, its table of contents, and its heading
anchor labels. Live in production since the frontmatter was added.
Match the block first and search it for keys; strip it via a shared
`stripFrontmatter` (the one route that was already correct,
/docs/choosing-an-adapter, had its own private copy — now deleted). `ResolvedDoc`
gains an explicit `body`: the description is read from `content`, so stripping
in place would have traded one bug for the other.
With frontmatter working, set descriptions on the three pages the Search Console
data singles out. Derived descriptions truncate at 180 chars and Google cuts at
~155, so /docs/langgraph/api/inject-agent — 101 impressions at position 5.6, the
site's top striking-distance page — was serving a snippet that ended mid-word.
All three replacements are under 155 and answer the query rather than restating
the title. `resolveDocDescription` is shared with the JSON-LD, so the meta tag
and the structured data stay in sync.
Not touched: `ag ui angular` and `json-render vs a2ui` reads at n=8..25, where
hyphen/space twins of one query swing 0%->25% at the same position. That is
binomial noise, not a CTR signal.
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: apps/website/content/docs/ag-ui/api/inject-agent.mdx
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,3 +1,7 @@
1
+
---
2
+
description: injectAgent() returns the AG-UI agent configured by provideAgent() — Angular Signals for chat state, async methods for submit and tool calls.
3
+
---
4
+
1
5
# injectAgent()
2
6
3
7
`injectAgent()` retrieves the AG-UI agent from Angular's dependency injection container. Call it in an Angular injection context — typically as a component field initializer. The returned object exposes Angular Signals for reactive UI state and async methods for user actions.
Copy file name to clipboardExpand all lines: apps/website/content/docs/langgraph/api/inject-agent.mdx
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,3 +1,7 @@
1
+
---
2
+
description: injectAgent() connects an Angular app to a LangGraph Platform assistant — streaming messages, tool calls, and interrupts as Angular Signals.
3
+
---
4
+
1
5
# injectAgent()
2
6
3
7
`injectAgent()` is the LangGraph adapter for Angular. It connects to a LangGraph Platform assistant, consumes the LangGraph SDK event stream, and projects the result into the runtime-neutral `Agent` contract used by `@threadplane/chat`.
Copy file name to clipboardExpand all lines: apps/website/content/docs/render/concepts/json-render-vs-a2ui.mdx
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,3 +1,7 @@
1
+
---
2
+
description: json-render renders a fixed spec. A2UI is an agent-to-UI protocol for surfaces that update over time and send user actions back. When to pick each.
3
+
---
4
+
1
5
# json-render vs A2UI
2
6
3
7
`@threadplane/render` and `@threadplane/a2ui` both render structured UI, but they solve different problems.
0 commit comments