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): fit meta descriptions to the search-snippet budget (#880)
GSC follow-up to #826: descriptions over ~160 chars get re-truncated by
Google mid-sentence, and the docs fallback path hard-sliced the first
paragraph at 177 chars mid-word with '...'.
- New clampMetaDescription in site-metadata.ts: ≤160 chars, prefers a
sentence boundary past 60% of the budget, otherwise cuts at a word
boundary with a real ellipsis. Applied centrally in createPageMetadata
and at the docs/blog description sources so each page's JSON-LD stays
byte-identical to its meta description.
- Docs extracted-paragraph path now uses the clamp (no more mid-word
'...' cuts on the 111 pages without frontmatter descriptions).
- Rewrote the 5 over-budget blog descriptions and the pricing page
description by hand so the author-chosen copy fits without clamping.
- Specs: clamp unit tests, a docs sweep (every page ≤160, no legacy
'...', guarded against an empty slug list), and a real-content blog
frontmatter gate in site-metadata.spec.ts (blog.spec.ts mocks fs).
The clamp immediately caught the pricing page description losing its
'$29 per developer per month' claim — shortened at the source instead.
nx test green (371 passing), lint 0 errors, production build green.
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: apps/website/content/blog/2026-05-21-build-fullstack-agentic-angular-apps-using-ag-ui.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
2
title: "Build Fullstack Agentic Angular Apps Using AG-UI"
3
-
description: "A practical, signal-native walkthrough for wiring any AG-UI backend (LangGraph, CrewAI, Mastra, Pydantic AI, Microsoft Agent Framework) to a production Angular chat UI."
3
+
description: "A practicalwalkthrough for wiring any AG-UI backend — LangGraph, CrewAI, Mastra, Pydantic AI, and more — to a production Angular chat UI."
Copy file name to clipboardExpand all lines: apps/website/content/blog/2026-05-28-human-in-the-loop-langgraph-agents-in-angular.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
2
title: "Human-in-the-Loop LangGraph Agents in Angular"
3
-
description: "Build a human-in-the-loop LangGraph agent in Angular — pause runs before money moves with a structured approval dialog from @threadplane/chat and @threadplane/langgraph."
3
+
description: "Build a human-in-the-loop LangGraph agent in Angular — pause runs before money moves with a structured approval dialog from the Threadplane libraries."
Copy file name to clipboardExpand all lines: apps/website/content/blog/2026-06-04-human-in-the-loop-ag-ui-agents-in-angular.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
2
title: "Human-in-the-Loop AG-UI Agents in Angular"
3
-
description: "Build a human-in-the-loop AG-UI agent in Angular — the same chat-approval-card composition from the LangGraph version, wired to an AG-UI-fronted LangGraph backend via @threadplane/ag-ui."
3
+
description: "Build a human-in-the-loop AG-UI agent in Angular — the same chat-approval-card composition as the LangGraph version, wired to AG-UI via @threadplane/ag-ui."
Copy file name to clipboardExpand all lines: apps/website/content/blog/2026-06-24-threadplane-earns-grade-a-hvtrust.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
2
title: "Threadplane Earns a Grade A for Trust"
3
-
description: "An independent tracker scored Threadplane's supply-chain trust at 82.8/100 — a Grade A, #7 of 75 agent frameworks, and the only Angular agent framework on the board. Here's the work behind the grade, and why it matters for agent frameworks specifically."
3
+
description: "An independent tracker scored Threadplane's supply-chain trust at 82.8/100 — Grade A, #7 of 75 agent frameworks. The work behind the grade, and why it matters."
Copy file name to clipboardExpand all lines: apps/website/content/blog/2026-08-13-angular-chat-app-tutorial-with-ag-ui.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
2
title: 'Angular Chat App Tutorial with AG-UI'
3
-
description: 'Build an Angular chat app on AG-UI where the browser owns its own tools — action, view, and ask client tools rendering real components inline, plus agent-shared state.'
3
+
description: 'Build an Angular chat app on AG-UI where the browser owns its own tools — action, view, and ask tools rendering real components inline, plus shared state.'
Copy file name to clipboardExpand all lines: apps/website/src/app/pricing/page.tsx
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@ import { createPageMetadata } from '../../lib/site-metadata';
12
12
exportconstmetadata=createPageMetadata({
13
13
title: 'Pricing — Threadplane',
14
14
description:
15
-
'Most Threadplane packages are MIT-licensed. @threadplane/chat is free for permitted noncommercial use and evaluation; commercial production plans start at $29 per developer per month. Threadplane runs in your own stack.',
15
+
'Most Threadplane packages are MIT-licensed. @threadplane/chat plans start at $29 per developer per month. Threadplane runs in your own stack.',
it('clamps the meta and OpenGraph descriptions centrally',()=>{
91
+
constmetadata=createPageMetadata({
92
+
title: 'T',
93
+
description: `${'Lead sentence that is deliberately made long enough to pass the sixty percent sentence-boundary threshold of the budget for this clamp.'} Overflow text beyond the snippet budget.`,
0 commit comments