Skip to content

Commit 9bc2a17

Browse files
bloveclaude
andcommitted
copy(website): tagline is "The open-source thread plane for enterprise agents."
The hero H1, <title>, meta description, OG/Twitter defaults, OG image alt, About page, root and library READMEs, and the gtm docs all move from "The AI agent UI framework for Angular." to the new tagline. The site description becomes the 159-character sentence that follows it everywhere. The hero eyebrow drops "Open-source" so the hero does not say it twice. Tests that pinned the old strings pin the new ones. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
1 parent 4ad8893 commit 9bc2a17

16 files changed

Lines changed: 63 additions & 29 deletions

File tree

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
<p align="center">
22
<img
33
src="https://threadplane.ai/assets/hero.svg"
4-
alt="Threadplane — the AI agent UI framework for Angular"
4+
alt="Threadplane — the open-source thread plane for enterprise agents"
55
width="100%"
66
/>
77
</p>
88

99
<p align="center">
10-
<em>The AI agent UI framework for Angular.</em>
10+
<em>The open-source thread plane for enterprise agents.</em>
1111
</p>
1212

1313
<p align="center">
@@ -33,8 +33,8 @@
3333

3434
---
3535

36-
**Threadplane is the open-source Angular AI agent UI framework.** Chat, durable
37-
threads, human approvals, tool progress, subagents, and generative UI — built on
36+
**Threadplane is the open-source thread plane for enterprise agents.** Chat, durable
37+
threads, persistence, human approvals, tool progress, subagents, and generative UI — built on
3838
Angular Signals and dependency injection, for Angular 20–22. Your backend stays
3939
where it is: Threadplane adapts a LangGraph or AG-UI agent into a runtime-neutral
4040
`Agent` contract that the UI consumes, and renders generated UI with the design

apps/website/e2e/website.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ async function expectNoHorizontalOverflow(
2121
test('landing page renders hero headline', async ({ page }) => {
2222
await page.goto('/');
2323
await expect(page.locator('#hero-heading')).toBeVisible();
24-
await expect(page.locator('#hero-heading')).toHaveText('The AI agent UI framework for Angular.');
24+
await expect(page.locator('#hero-heading')).toHaveText('The open-source thread plane for enterprise agents.');
2525
const headline = await page.locator('#hero-heading').textContent();
2626
expect(headline?.toLowerCase()).toContain('angular');
2727
});

apps/website/src/lib/positioning.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,12 @@ function parses(code: string): boolean {
4646

4747
describe('positioning: hero copy', () => {
4848
it('names the exact category in eyebrow, H1, title and description', () => {
49-
expect(HERO_EYEBROW).toBe('Open-source · Angular · LangGraph & AG-UI');
50-
expect(HERO_H1).toBe('The AI agent UI framework for Angular.');
49+
expect(HERO_EYEBROW).toBe('Angular · LangGraph & AG-UI');
50+
expect(HERO_H1).toBe('The open-source thread plane for enterprise agents.');
5151
expect(HERO_SUBHEAD).toBe('Chat, threads, approvals, and generative UI on Signals and DI. Your backend stays where it is.');
52-
expect(HOME_TITLE).toBe('Threadplane — Angular AI Agent UI Framework');
52+
expect(HOME_TITLE).toBe('Threadplane — The open-source thread plane for enterprise agents');
5353
expect(HOME_DESCRIPTION).toBe(
54-
'Open-source Angular AI agent UI framework for LangGraph and AG-UI: chat, durable threads, human approvals, and generative UI with Signals and DI.',
54+
'The open-source thread plane for enterprise agents: chat, durable threads, persistence, human approvals, and generative UI for Angular, on LangGraph and AG-UI.',
5555
);
5656
expect(HOME_DESCRIPTION.length).toBeLessThanOrEqual(160);
5757
});

apps/website/src/lib/positioning.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
import { WEBSITE_SUPPORTED_ANGULAR_MAJORS } from '../components/pricing/angular-support.mjs';
33
import type { StageBeat } from './stage-beats';
44

5-
export const HERO_EYEBROW = 'Open-source · Angular · LangGraph & AG-UI';
6-
export const HERO_H1 = 'The AI agent UI framework for Angular.';
5+
export const HERO_EYEBROW = 'Angular · LangGraph & AG-UI';
6+
export const HERO_H1 = 'The open-source thread plane for enterprise agents.';
77
export const HERO_SUBHEAD =
88
'Chat, threads, approvals, and generative UI on Signals and DI. Your backend stays where it is.';
99

@@ -28,13 +28,13 @@ export const HERO_SECONDARY_LABEL = 'See it running in the docs →';
2828
export const HERO_SECONDARY_HREF = '/docs/chat/guides/generative-ui?mode=run';
2929

3030
/** Kept for layout.tsx default title and the OG image alt. */
31-
export const PRIMARY_TAGLINE = 'Threadplane — Angular AI Agent UI Framework';
31+
export const PRIMARY_TAGLINE = 'Threadplane — The open-source thread plane for enterprise agents';
3232
export const HOME_TITLE = PRIMARY_TAGLINE;
3333
export const HOME_DESCRIPTION =
34-
'Open-source Angular AI agent UI framework for LangGraph and AG-UI: chat, durable threads, human approvals, and generative UI with Signals and DI.';
34+
'The open-source thread plane for enterprise agents: chat, durable threads, persistence, human approvals, and generative UI for Angular, on LangGraph and AG-UI.';
3535
/** Longer form used by layout.tsx OG/Twitter defaults and the About page. */
3636
export const LONG_SUBHEAD =
37-
'Threadplane is the open-source Angular AI agent UI framework: signal-native chat, durable threads, human approvals, tool progress, subagents, and generative UI for LangGraph and AG-UI backends — without replacing your backend or design system.';
37+
'Threadplane is the open-source thread plane for enterprise agents: signal-native chat, durable threads, persistence, human approvals, tool progress, subagents, and generative UI for Angular, on LangGraph and AG-UI — without replacing your backend or design system.';
3838

3939
// ── Trust line (values verified by positioning.spec.ts + angular-support-copy.spec.ts) ──
4040
export function formatAngularRange(majors: readonly number[]): string {

apps/website/src/lib/site-metadata.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ import { resolveWebsiteDir } from './website-dir';
1818

1919
describe('site positioning copy', () => {
2020
it('exports the approved primary tagline and supporting copy', () => {
21-
expect(PRIMARY_TAGLINE).toBe('Threadplane — Angular AI Agent UI Framework');
22-
expect(LONG_SUBHEAD).toContain('open-source Angular AI agent UI framework');
21+
expect(PRIMARY_TAGLINE).toBe('Threadplane — The open-source thread plane for enterprise agents');
22+
expect(LONG_SUBHEAD).toContain('open-source thread plane for enterprise agents');
2323
expect(LONG_SUBHEAD).toContain('LangGraph and AG-UI');
2424
expect(HERO_SUBHEAD).toBe(
2525
'Chat, threads, approvals, and generative UI on Signals and DI. Your backend stays where it is.',
@@ -65,7 +65,7 @@ describe('site positioning copy', () => {
6565
type: 'website',
6666
});
6767

68-
expect(metadata.title).toBe('Threadplane — Angular AI Agent UI Framework');
68+
expect(metadata.title).toBe('Threadplane — The open-source thread plane for enterprise agents');
6969
expect(metadata.description).toBe(HOME_DESCRIPTION);
7070
});
7171
});
@@ -142,7 +142,7 @@ describe('createPageMetadata article fields', () => {
142142
expect(openGraph.images[0].url).toBe('/opengraph-image');
143143
expect(openGraph.images[0].width).toBe(1200);
144144
expect(openGraph.images[0].height).toBe(630);
145-
expect(openGraph.images[0].alt).toMatch(/agent UI framework for Angular/);
145+
expect(openGraph.images[0].alt).toMatch(/open-source thread plane for enterprise agents/);
146146
});
147147

148148
it('accepts a page-specific social image', () => {

apps/website/src/lib/site-metadata.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export const DEFAULT_SOCIAL_IMAGE_META = {
2020
url: DEFAULT_SOCIAL_IMAGE,
2121
width: 1200,
2222
height: 630,
23-
alt: 'Threadplane — the AI agent UI framework for Angular. Chat, threads, approvals, and generative UI on Signals and DI, for LangGraph and AG-UI.',
23+
alt: 'Threadplane — the open-source thread plane for enterprise agents. Chat, durable threads, persistence, human approvals, and generative UI for Angular, on LangGraph and AG-UI.',
2424
} as const;
2525
export {
2626
CODING_AGENT_PROMPT,

docs/gtm/messaging.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
55
## Positioning statement (durable)
66

7-
> For Angular teams building AI agents on LangGraph, AG-UI, or custom backends, Threadplane is the open-source agent UI framework that turns streaming agent events into production-ready Angular experiences: chat, durable threads, interrupts, subagents, planning, memory, generative UI, fallbacks, observability, and tests. Unlike React-first agent UI stacks or raw streaming SDKs, Threadplane is Angular-native, DI-friendly, design-system-first, self-hostable, and built for enterprise Angular apps.
7+
> For Angular teams building AI agents on LangGraph, AG-UI, or custom backends, Threadplane is the open-source thread plane for enterprise agents: it turns streaming agent events into production-ready Angular experiences: chat, durable threads, interrupts, subagents, planning, memory, generative UI, fallbacks, observability, and tests. Unlike React-first agent UI stacks or raw streaming SDKs, Threadplane is Angular-native, DI-friendly, design-system-first, self-hostable, and built for enterprise Angular apps.
88
99
## Hero (locked for Spec 2 to implement)
1010

@@ -63,7 +63,7 @@ Hidden attribution fields (populated by URL params + referrer): `source_page`, `
6363

6464
## Launch narrative (Spec 6 spine)
6565

66-
> Angular teams are building agents, but the last mile is still messy: streaming state, tool progress, interrupts, durable threads, subagents, planning, memory, generated UI, fallbacks, and tests. React has mature examples. Backend agent frameworks have protocols. Angular teams need something that speaks Signals, DI, templates, standalone components, and enterprise design systems. Threadplane is an MIT-licensed agent UI framework for Angular that connects LangGraph, AG-UI, A2UI, and custom backends to production-ready Angular surfaces.
66+
> Angular teams are building agents, but the last mile is still messy: streaming state, tool progress, interrupts, durable threads, subagents, planning, memory, generated UI, fallbacks, and tests. React has mature examples. Backend agent frameworks have protocols. Angular teams need something that speaks Signals, DI, templates, standalone components, and enterprise design systems. Threadplane is the MIT-licensed thread plane for enterprise agents: it connects LangGraph, AG-UI, A2UI, and custom backends to production-ready Angular surfaces.
6767
6868
## Avoid
6969

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Tagline and description: "the open-source thread plane for enterprise agents"
2+
3+
Date: 2026-09-06. Status: approved in conversation, implemented in the same branch.
4+
5+
## Decision
6+
7+
The public tagline changes from "The AI agent UI framework for Angular." to:
8+
9+
> The open-source thread plane for enterprise agents.
10+
11+
The site description (meta description, npm/GitHub summary) becomes:
12+
13+
> The open-source thread plane for enterprise agents: chat, durable threads, persistence, human approvals, and generative UI for Angular, on LangGraph and AG-UI.
14+
15+
Both strings were supplied by Brian. The description is 159 characters, inside the 160-character meta budget enforced by `positioning.spec.ts`.
16+
17+
## Scope ("everywhere")
18+
19+
`apps/website/src/lib/positioning.ts` stays the single source of truth for the website. Derived strings change with it:
20+
21+
- `HERO_H1` = the tagline. `HERO_EYEBROW` drops "Open-source" so the hero does not say it twice.
22+
- `PRIMARY_TAGLINE` / `HOME_TITLE` = `Threadplane — The open-source thread plane for enterprise agents` (em dash kept: `opengraph-image.tsx` splits on it for the brand name).
23+
- `HOME_DESCRIPTION` = the description above.
24+
- `LONG_SUBHEAD` (OG/Twitter default, About page) = the description expanded with the capability list, ending in "without replacing your backend or design system".
25+
- `DEFAULT_SOCIAL_IMAGE_META.alt` in `site-metadata.ts` restated on the tagline.
26+
27+
Outside the website, every literal "the AI agent UI framework for Angular" is replaced with "the open-source thread plane for enterprise agents": root `README.md` (hero alt, tagline line, lead paragraph), the seven `libs/*/README.md` intros, `docs/gtm/messaging.md` positioning statement, and `gtm.md` §1–2. The GitHub repository description is set to the tagline plus description.
28+
29+
Tests pinning the old strings (`positioning.spec.ts`, `site-metadata.spec.ts`, `e2e/website.spec.ts`) are updated to the new ones. The public-copy contract gate has no rule touching these phrases.
30+
31+
## Out of scope
32+
33+
npm `package.json` descriptions (they describe each package, not the product), historical specs/plans under `docs/superpowers`, blog posts, and the `hero.svg` artwork (it carries no text).

gtm.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@
66
77
## 1. What we are
88

9-
Threadplane is the production agent UI framework for Angular teams. It turns LangGraph, AG-UI, A2UI, and custom agent streams into real Angular experiences — chat, threads, tool progress, human approvals, generative UI, fallbacks, observability, tests — without rewriting in React or adopting a proprietary cloud.
9+
Threadplane is the open-source thread plane for enterprise agents, built for Angular teams. It turns LangGraph, AG-UI, A2UI, and custom agent streams into real Angular experiences — chat, threads, tool progress, human approvals, generative UI, fallbacks, observability, tests — without rewriting in React or adopting a proprietary cloud.
1010

1111
## 2. Category
1212

1313
- **Primary:** Threadplane
14+
- **Tagline (2026-09-06):** "The open-source thread plane for enterprise agents." The description that follows it everywhere: "The open-source thread plane for enterprise agents: chat, durable threads, persistence, human approvals, and generative UI for Angular, on LangGraph and AG-UI."
1415
- **Secondary (only after "Agent UI"):** Angular Agent UI Framework
1516
- **Do not use:** "Threadplane" (ambiguous with backend runtimes and coding agents), "Enterprise Angular agent framework" (reads sales-first).
1617

libs/a2ui/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# @threadplane/a2ui
22

3-
The A2UI (Agent-to-UI) protocol layer behind generative UI in [Threadplane](https://github.com/cacheplane/angular-agent-framework), the AI agent UI framework for Angular, targeting the **A2UI v0.9.1 stable release**. It defines the wire format an agent uses to drive a UI surface, plus the parser and resolver that read it — framework-agnostic, pure TypeScript, no Angular dependency, usable in any TypeScript environment.
3+
The A2UI (Agent-to-UI) protocol layer behind generative UI in [Threadplane](https://github.com/cacheplane/angular-agent-framework), the open-source thread plane for enterprise agents, targeting the **A2UI v0.9.1 stable release**. It defines the wire format an agent uses to drive a UI surface, plus the parser and resolver that read it — framework-agnostic, pure TypeScript, no Angular dependency, usable in any TypeScript environment.
44

55
<p align="center">
66
<a href="https://www.npmjs.com/package/@threadplane/a2ui">

0 commit comments

Comments
 (0)