Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion apps/website/src/app/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,8 @@ export default async function HomePage() {
<Promises />
<ProofStrip />
<HomeFAQ />
<FinalCTA variant="dark" />
<RecentArticles />
<FinalCTA variant="dark" />
</>
);
}
4 changes: 2 additions & 2 deletions apps/website/src/components/landing/ProofStrip.spec.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ import { describe, it, expect } from 'vitest';
import { ProofStrip, PROOF_CELLS } from './ProofStrip';

describe('ProofStrip', () => {
it('renders three cells, each with a source link', () => {
it('renders four cells, each with a source link', () => {
render(<ProofStrip />);
expect(PROOF_CELLS).toHaveLength(3);
expect(PROOF_CELLS).toHaveLength(4);
for (const cell of PROOF_CELLS) {
expect(screen.getByText(cell.caption)).toBeTruthy();
const link = screen.getByRole('link', { name: cell.sourceLabel });
Expand Down
9 changes: 9 additions & 0 deletions apps/website/src/components/landing/ProofStrip.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { Container } from '../ui/Container';
import { Section } from '../ui/Section';
import { SectionHeader } from '../ui/SectionHeader';
import { WEBSITE_SUPPORTED_ANGULAR_MAJORS } from '../pricing/angular-support.mjs';

interface ProofCell {
/** Big Garamond numeral, or null when the cell renders a live badge. */
Expand Down Expand Up @@ -41,6 +42,14 @@ export const PROOF_CELLS: readonly ProofCell[] = [
sourceLabel: 'hvtracker.net/agents/threadplane',
sourceHref: 'https://hvtracker.net/agents/threadplane/',
},
{
// Revived per the homepage design spec's condition: npm @latest publishes
// ^20 || ^21 || ^22 (verified 2026-08-31). Derived, never hardcoded.
value: `${WEBSITE_SUPPORTED_ANGULAR_MAJORS[0]}–${WEBSITE_SUPPORTED_ANGULAR_MAJORS.at(-1)}`,
caption: 'Angular majors supported, CI-tested',
sourceLabel: 'npmjs.com/@threadplane/langgraph',
sourceHref: 'https://www.npmjs.com/package/@threadplane/langgraph',
},
];

export function ProofStrip() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,12 @@ export async function ChatLandingCodeShowcase() {
return (
<section className="chat-code">
<div className="chat-show-intro">
<p className="chat-show-eyebrow">
<div className="show-intro-rail">
<p className="chat-show-eyebrow">
Developer Experience
</p>
</p>
<span className="show-intro-rail-line" aria-hidden="true" />
</div>
<h2 className="chat-show-heading">
Full-featured chat in a few lines
</h2>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,12 @@ export async function LangGraphCodeShowcase() {
return (
<section className="angular-code">
<div className="lg-show-intro">
<p className="lg-show-eyebrow">
<div className="show-intro-rail">
<p className="lg-show-eyebrow">
Developer Experience
</p>
</p>
<span className="show-intro-rail-line" aria-hidden="true" />
</div>
<h2 className="lg-show-heading">
Production streaming in a few lines
</h2>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,12 @@ export async function RenderCodeShowcase() {
return (
<section className="render-code">
<div className="render-show-intro">
<p className="render-show-eyebrow">
<div className="show-intro-rail">
<p className="render-show-eyebrow">
Developer Experience
</p>
</p>
<span className="show-intro-rail-line" aria-hidden="true" />
</div>
<h2 className="render-show-heading">
Generative UI in a few lines
</h2>
Expand Down
18 changes: 14 additions & 4 deletions apps/website/src/styles/landing.css
Original file line number Diff line number Diff line change
Expand Up @@ -1005,7 +1005,6 @@
}
@media (max-width: 767px) { .render-code { padding: 60px 20px !important; } }
.render-show-intro {
text-align: center;
margin-bottom: 48px;
}
.render-show-eyebrow {
Expand Down Expand Up @@ -1054,7 +1053,6 @@
}
@media (max-width: 767px) { .angular-code { padding: 60px 20px !important; } }
.lg-show-intro {
text-align: center;
margin-bottom: 48px;
}
.lg-show-eyebrow {
Expand Down Expand Up @@ -1103,7 +1101,6 @@
}
@media (max-width: 767px) { .chat-code { padding: 60px 20px !important; } }
.chat-show-intro {
text-align: center;
margin-bottom: 48px;
}
.chat-show-eyebrow {
Expand Down Expand Up @@ -1337,7 +1334,7 @@
}
.proof-strip-cells {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-columns: repeat(4, 1fr);
gap: 18px;
list-style: none;
margin: 0;
Expand Down Expand Up @@ -1464,3 +1461,16 @@
text-transform: uppercase;
color: var(--color-text-muted);
}

/* Shared rail for the three CodeShowcase intros — the last centered kicker
* grammar, unified with the sitewide rail anatomy. */
.show-intro-rail {
display: flex;
align-items: baseline;
gap: 14px;
}
.show-intro-rail-line {
flex: 1;
height: 1px;
background: var(--color-border);
}
1 change: 0 additions & 1 deletion apps/website/tsconfig.tsbuildinfo

This file was deleted.

18 changes: 18 additions & 0 deletions docs/superpowers/specs/2026-08-31-followups-design.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Design-program follow-ups

**Date:** 2026-08-31 · **Status:** Approved. · **Branch:** `blove/followups`

1. **Showcase intros → rail.** The three CodeShowcase intros (lg/chat/render
`*-show-intro`) are the last centered kicker grammar. Each eyebrow wraps
in a shared `show-intro-rail` div + aria-hidden hairline; intros
left-align. Headings/snippets untouched.
2. **ProofStrip fourth cell (condition met).** npm @threadplane/langgraph
@latest publishes `^20 || ^21 || ^22` (verified 2026-08-31 against the
registry) — the shipped homepage spec's revival condition for the cut
Angular cell. New cell: value derived from
`WEBSITE_SUPPORTED_ANGULAR_MAJORS` (`20–22`, first–last, NOT hardcoded),
caption "Angular majors supported, CI-tested", source
npmjs.com/package/@threadplane/langgraph. Grid → repeat(4, 1fr); spec
3→4 first.
3. **RecentArticles moves above the dark FinalCTA** so the closer closes.
4. **Untrack `apps/website/tsconfig.tsbuildinfo`** (gitignored but tracked).
Loading