Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
2f706b5
Add Pomerado customer quote to the homepage and as a shareable image
willwashburn Oct 28, 2026
5b8142a
Show customer quotes as a compact row before the final call to action
willwashburn Oct 29, 2026
e3d1212
Merge main: keep customer quotes after hosting as the last homepage s…
willwashburn Nov 1, 2026
818398c
Add Serg's X post next to the Pomerado quote
willwashburn Nov 2, 2026
3bddb69
Subset brand fonts with curly quotes and non-breaking characters; emp…
willwashburn Nov 2, 2026
02067e7
Document the curly quotes and non-breaking characters in the font subset
willwashburn Nov 2, 2026
3ee838b
Download for your OS from the homepage, landing on a page that explai…
willwashburn Nov 2, 2026
29e132b
Merge branch 'main' of https://github.com/AgentWorkforce/agentrelay.c…
willwashburn Nov 2, 2026
e002d2b
Turn the download start page into onboarding: sign up, then install a…
willwashburn Nov 2, 2026
6088baf
Steady hero download label, no repeat downloads, larger tap targets, …
willwashburn Nov 2, 2026
a84611e
Lead the download page with what Agent Relay does: runs in the backgr…
willwashburn Nov 2, 2026
e71c3b1
Download only on fresh visits, keep button transitions, fail-open lab…
willwashburn Nov 2, 2026
dba60e0
Give Windows downloads an install step for the installer and the zip
willwashburn Nov 2, 2026
27de3d4
Show agents talking on the download page: Claude Code and Codex throu…
willwashburn Nov 2, 2026
728e042
Remember started downloads across in-app navigation back to the start…
willwashburn Nov 2, 2026
eb8b059
Split the download page: task on the left, every agent wired through …
willwashburn Nov 2, 2026
7bf7626
Test when the download start page downloads
willwashburn Nov 2, 2026
bb40f7f
Offer other builds from the download start page
willwashburn Nov 2, 2026
f016430
Replace the download page animation with a plain account of what the …
willwashburn Nov 2, 2026
61d8837
Drop the explainer eyebrow and put the download status under the head…
willwashburn Nov 2, 2026
3904b5c
Lead the download page with "Let your agents talk to each other"
willwashburn Nov 2, 2026
d798df5
Keep a hidden heading over the download page's explainer points
willwashburn Nov 2, 2026
39b8149
Drop sign-in from the download page; the app's own sign-in is the one…
willwashburn Nov 2, 2026
78815dd
Move the download fallback links to the bottom, muted
willwashburn Nov 2, 2026
85a5b28
One nav across the site: GitHub stars and the download button
willwashburn Nov 2, 2026
c0f2ff2
Download button in the docs mobile menu; stars give way on the narrow…
willwashburn Nov 2, 2026
953b987
Say "Check your Downloads folder" when the start page skips a repeat …
willwashburn Nov 2, 2026
522abe8
Track the desktop download funnel: desktop_download_clicked and deskt…
willwashburn Nov 2, 2026
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
13 changes: 2 additions & 11 deletions web/app/about/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { HomePosterText } from '../../components/home/HomePosterText';
import { ScribbleUnderline } from '../../components/home/icons';
import { SiteFooter } from '../../components/SiteFooter';
import { SiteNav } from '../../components/SiteNav';
import { SiteNavActions } from '../../components/SiteNavActions';
import { DEFAULT_OG_IMAGE_PATH, ogImage } from '../../lib/og-meta';
import { absoluteUrl, SITE_NAME } from '../../lib/site';
import s from '../landing.module.css';
Expand Down Expand Up @@ -66,20 +67,10 @@ export const metadata: Metadata = {
};

export default function AboutPage() {
const navGetStartedLink = (
<Link href="/docs" className={`${s.ctaPrimary} ${s.homeNavAction}`}>
Get Started
</Link>
);
const mobileGetStartedLink = (
<Link href="/docs" className={`${s.ctaPrimary} ${s.homeNavAction}`}>
Get Started
</Link>
);

return (
<div className={`${s.page} ${s.homePage}`}>
<SiteNav actions={navGetStartedLink} mobileMenuContent={mobileGetStartedLink} hideLinks />
<SiteNav hideLinks singleAction actions={<SiteNavActions />} />

<main className={s.homeMain}>
<HomePosterText visual="relay" />
Expand Down
4 changes: 2 additions & 2 deletions web/app/agents/[slug]/page.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import type { Metadata } from 'next';
import { notFound } from 'next/navigation';

import { GitHubStarsBadge } from '../../../components/GitHubStars';
import { SiteFooter } from '../../../components/SiteFooter';
import { SiteNav } from '../../../components/SiteNav';
import { SiteNavActions } from '../../../components/SiteNavActions';
import { agentAsset, allAgentSlugs, getAgent } from '../../../lib/agents';
import { absoluteUrl, SITE_NAME } from '../../../lib/site';
import { AgentDetail } from './AgentDetail';
Expand Down Expand Up @@ -46,7 +46,7 @@ export default async function AgentPage({ params }: PageProps) {

return (
<>
<SiteNav actions={<GitHubStarsBadge />} />
<SiteNav hideLinks singleAction actions={<SiteNavActions />} />
<AgentDetail agent={agent} />
<SiteFooter />
</>
Expand Down
4 changes: 2 additions & 2 deletions web/app/agents/page.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import type { Metadata } from 'next';

import { GitHubStarsBadge } from '../../components/GitHubStars';
import { SiteFooter } from '../../components/SiteFooter';
import { SiteNav } from '../../components/SiteNav';
import { SiteNavActions } from '../../components/SiteNavActions';
import { absoluteUrl, SITE_NAME } from '../../lib/site';
import { AgentsGallery } from './AgentsGallery';

Expand All @@ -27,7 +27,7 @@ export const metadata: Metadata = {
export default function AgentsPage() {
return (
<>
<SiteNav actions={<GitHubStarsBadge />} />
<SiteNav hideLinks singleAction actions={<SiteNavActions />} />
<AgentsGallery />
<SiteFooter />
</>
Expand Down
3 changes: 2 additions & 1 deletion web/app/agents/register/checklist/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import remarkGfm from 'remark-gfm';
import { mdxComponents } from '../../../../components/docs/mdx-components';
import { SiteFooter } from '../../../../components/SiteFooter';
import { SiteNav } from '../../../../components/SiteNav';
import { SiteNavActions } from '../../../../components/SiteNavActions';
import {
REGISTER_CHECKLIST_BODY,
REGISTER_CHECKLIST_MARKDOWN_URL,
Expand Down Expand Up @@ -62,7 +63,7 @@ export default async function RegisterChecklistPage() {
return (
<div className={`${flows.page} ${home.messagingPage} ${s.page}`}>
<a className="skip-link" href="#main">Skip to content</a>
<SiteNav />
<SiteNav hideLinks singleAction actions={<SiteNavActions />} />

<main id="main" className={r.content}>
<section className={s.hero}>
Expand Down
3 changes: 2 additions & 1 deletion web/app/agents/register/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import type { Metadata } from 'next';
import { CopyCodeButton } from '../../../components/docs/CopyCodeButton';
import { SiteFooter } from '../../../components/SiteFooter';
import { SiteNav } from '../../../components/SiteNav';
import { SiteNavActions } from '../../../components/SiteNavActions';
import {
AGENT_DIRECTORY_URL,
ARELAY_LIVE_EXAMPLE_URL,
Expand Down Expand Up @@ -41,7 +42,7 @@ export default function RegisterAgentPage() {
return (
<div className={`${flows.page} ${home.messagingPage} ${s.page}`}>
<a className="skip-link" href="#main">Skip to content</a>
<SiteNav />
<SiteNav hideLinks singleAction actions={<SiteNavActions />} />

<main id="main" className={r.content}>
<section className={s.hero}>
Expand Down
4 changes: 2 additions & 2 deletions web/app/agents/use-cases/page.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import type { Metadata } from 'next';

import { GitHubStarsBadge } from '../../../components/GitHubStars';
import { SiteFooter } from '../../../components/SiteFooter';
import { SiteNav } from '../../../components/SiteNav';
import { SiteNavActions } from '../../../components/SiteNavActions';
import { absoluteUrl, SITE_NAME } from '../../../lib/site';
import { UseCasesContent } from './UseCasesContent';

Expand All @@ -27,7 +27,7 @@ export const metadata: Metadata = {
export default function UseCasesPage() {
return (
<>
<SiteNav actions={<GitHubStarsBadge />} />
<SiteNav hideLinks singleAction actions={<SiteNavActions />} />
<UseCasesContent />
<SiteFooter />
</>
Expand Down
14 changes: 2 additions & 12 deletions web/app/blog/[slug]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ import { HighlightedPre } from '../../../components/docs/HighlightedCode';
import { SignupBand } from '../../../components/home/SignupBand';
import { SiteFooter } from '../../../components/SiteFooter';
import { SiteNav } from '../../../components/SiteNav';
import { SiteNavActions } from '../../../components/SiteNavActions';
import { getAllPosts, getPost, slugifyHeading } from '../../../lib/blog';
import { getAuthorInitials, getBlogAuthor } from '../../../lib/blog-authors';
import { OG_IMAGE_HEIGHT, OG_IMAGE_WIDTH } from '../../../lib/og-meta';
import { absoluteUrl, SITE_NAME, SITE_URL } from '../../../lib/site';
import landingStyles from '../../landing.module.css';

type PageProps = {
params: Promise<{ slug: string }>;
Expand Down Expand Up @@ -134,16 +134,6 @@ export default async function BlogPostPage({ params }: PageProps) {
.slice(0, 4);
const postUrl = absoluteUrl(`/blog/${slug}`);
const imageUrl = post.frontmatter.coverImage || absoluteUrl(`/blog/${slug}/og.png`);
const navGetStartedLink = (
<Link href="/docs" className={`${landingStyles.ctaPrimary} ${landingStyles.homeNavAction}`}>
Get Started
</Link>
);
const mobileGetStartedLink = (
<Link href="/docs" className={`${landingStyles.ctaPrimary} ${landingStyles.homeNavAction}`}>
Get Started
</Link>
);
const structuredData = {
'@context': 'https://schema.org',
'@type': 'BlogPosting',
Expand Down Expand Up @@ -264,7 +254,7 @@ export default async function BlogPostPage({ params }: PageProps) {

return (
<div className={styles.blogPage}>
<SiteNav actions={navGetStartedLink} mobileMenuContent={mobileGetStartedLink} hideLinks />
<SiteNav hideLinks singleAction actions={<SiteNavActions />} />
Comment thread
willwashburn marked this conversation as resolved.
Resolved

<section className={styles.postHero}>
<div className={styles.postHeroInner}>
Expand Down
14 changes: 2 additions & 12 deletions web/app/blog/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ import { Rss } from 'lucide-react';
import styles from '../../components/blog/blog.module.css';
import { SiteFooter } from '../../components/SiteFooter';
import { SiteNav } from '../../components/SiteNav';
import { SiteNavActions } from '../../components/SiteNavActions';
import { getAllPosts } from '../../lib/blog';
import { getAuthorInitials, getBlogAuthor } from '../../lib/blog-authors';
import { defaultOgImage } from '../../lib/og-meta';
import { absoluteUrl, SITE_NAME, SITE_URL } from '../../lib/site';
import landingStyles from '../landing.module.css';

export const metadata: Metadata = {
title: { absolute: 'Agent Relay Blog — Multi-Agent Systems & AI Coordination' },
Expand Down Expand Up @@ -47,16 +47,6 @@ function formatDate(dateStr: string): string {
export default function BlogIndexPage() {
const posts = getAllPosts();
const allPosts = posts;
const navGetStartedLink = (
<Link href="/docs" className={`${landingStyles.ctaPrimary} ${landingStyles.homeNavAction}`}>
Get Started
</Link>
);
const mobileGetStartedLink = (
<Link href="/docs" className={`${landingStyles.ctaPrimary} ${landingStyles.homeNavAction}`}>
Get Started
</Link>
);
const structuredData = {
'@context': 'https://schema.org',
'@type': 'CollectionPage',
Expand All @@ -77,7 +67,7 @@ export default function BlogIndexPage() {

return (
<div className={styles.blogPage}>
<SiteNav actions={navGetStartedLink} mobileMenuContent={mobileGetStartedLink} hideLinks />
<SiteNav hideLinks singleAction actions={<SiteNavActions />} />

<main className={styles.blogMain}>
<script
Expand Down
4 changes: 2 additions & 2 deletions web/app/brand/deploy-button/page.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import type { Metadata } from 'next';

import { GitHubStarsBadge } from '../../../components/GitHubStars';
import { SiteFooter } from '../../../components/SiteFooter';
import { SiteNav } from '../../../components/SiteNav';
import { SiteNavActions } from '../../../components/SiteNavActions';
import { absoluteUrl } from '../../../lib/site';
import { DeployButtonShowcase } from './DeployButtonShowcase';

Expand All @@ -21,7 +21,7 @@ export const metadata: Metadata = {
export default function DeployButtonPage() {
return (
<>
<SiteNav actions={<GitHubStarsBadge />} />
<SiteNav hideLinks singleAction actions={<SiteNavActions />} />
<DeployButtonShowcase />
<SiteFooter />
</>
Expand Down
4 changes: 2 additions & 2 deletions web/app/brand/page.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import type { Metadata } from 'next';

import { GitHubStarsBadge } from '../../components/GitHubStars';
import { SiteFooter } from '../../components/SiteFooter';
import { SiteNav } from '../../components/SiteNav';
import { SiteNavActions } from '../../components/SiteNavActions';
import { absoluteUrl, SITE_NAME } from '../../lib/site';
import { BrandShowcase } from './BrandShowcase';

Expand Down Expand Up @@ -51,7 +51,7 @@ export const metadata: Metadata = {
export default function BrandPage() {
return (
<>
<SiteNav actions={<GitHubStarsBadge />} />
<SiteNav hideLinks singleAction actions={<SiteNavActions />} />
<BrandShowcase />
<SiteFooter />
</>
Expand Down
4 changes: 2 additions & 2 deletions web/app/brand/theme/page.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import type { Metadata } from 'next';

import { GitHubStarsBadge } from '../../../components/GitHubStars';
import { SiteFooter } from '../../../components/SiteFooter';
import { SiteNav } from '../../../components/SiteNav';
import { SiteNavActions } from '../../../components/SiteNavActions';
import { defaultOgImage } from '../../../lib/og-meta';
import { absoluteUrl, SITE_NAME } from '../../../lib/site';
import { ThemeShowcase } from './ThemeShowcase';
Expand Down Expand Up @@ -43,7 +43,7 @@ export const metadata: Metadata = {
export default function BrandThemePage() {
return (
<>
<SiteNav actions={<GitHubStarsBadge />} />
<SiteNav hideLinks singleAction actions={<SiteNavActions />} />
<ThemeShowcase />
<SiteFooter />
</>
Expand Down
14 changes: 2 additions & 12 deletions web/app/careers/page.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import type { Metadata } from 'next';
import Link from 'next/link';

import { SiteFooter } from '../../components/SiteFooter';
import { SiteNav } from '../../components/SiteNav';
import { SiteNavActions } from '../../components/SiteNavActions';
import { HOME_OG_IMAGE_PATH, ogImage } from '../../lib/og-meta';
import { absoluteUrl, SITE_NAME } from '../../lib/site';
import s from '../landing.module.css';
Expand Down Expand Up @@ -30,20 +30,10 @@ export const metadata: Metadata = {
};

export default function CareersPage() {
const navGetStartedLink = (
<Link href="/docs" className={`${s.ctaPrimary} ${s.homeNavAction}`}>
Get Started
</Link>
);
const mobileGetStartedLink = (
<Link href="/docs" className={`${s.ctaPrimary} ${s.homeNavAction}`}>
Get Started
</Link>
);

return (
<div className={`${s.page} ${s.homePage}`}>
<SiteNav actions={navGetStartedLink} mobileMenuContent={mobileGetStartedLink} hideLinks />
<SiteNav hideLinks singleAction actions={<SiteNavActions />} />

<main className={`${s.homeMain} ${s.careersMain}`}>
<section className={s.careersCallout} aria-label="Careers contact">
Expand Down
14 changes: 2 additions & 12 deletions web/app/company/page.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import type { Metadata } from 'next';
import Link from 'next/link';

import { SiteFooter } from '../../components/SiteFooter';
import { SiteNav } from '../../components/SiteNav';
import { SiteNavActions } from '../../components/SiteNavActions';
import { HOME_OG_IMAGE_PATH, ogImage } from '../../lib/og-meta';
import { absoluteUrl, SITE_NAME } from '../../lib/site';
import s from '../landing.module.css';
Expand Down Expand Up @@ -30,20 +30,10 @@ export const metadata: Metadata = {
};

export default function CompanyPage() {
const navGetStartedLink = (
<Link href="/docs" className={`${s.ctaPrimary} ${s.homeNavAction}`}>
Get Started
</Link>
);
const mobileGetStartedLink = (
<Link href="/docs" className={`${s.ctaPrimary} ${s.homeNavAction}`}>
Get Started
</Link>
);

return (
<div className={`${s.page} ${s.homePage} ${s.aboutPage}`}>
<SiteNav actions={navGetStartedLink} mobileMenuContent={mobileGetStartedLink} hideLinks />
<SiteNav hideLinks singleAction actions={<SiteNavActions />} />

<main className={s.aboutMain}>
<div className={s.aboutWaveField} aria-hidden="true">
Expand Down
3 changes: 2 additions & 1 deletion web/app/directory/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import type { Metadata } from 'next';

import { SiteFooter } from '../../components/SiteFooter';
import { SiteNav } from '../../components/SiteNav';
import { SiteNavActions } from '../../components/SiteNavActions';
import { AGENT_DIRECTORY_PATH, getAgentDirectory, type AgentDirectory } from '../../lib/agent-directory';
import { defaultOgImage } from '../../lib/og-meta';
import { absoluteUrl } from '../../lib/site';
Expand Down Expand Up @@ -47,7 +48,7 @@ export default async function AgentDirectoryPage() {
return (
<div className={`${flows.page} ${home.messagingPage} ${s.page}`}>
<a className="skip-link" href="#main">Skip to content</a>
<SiteNav />
<SiteNav hideLinks singleAction actions={<SiteNavActions />} />

<main id="main">
<section className={s.hero}>
Expand Down
15 changes: 13 additions & 2 deletions web/app/docs/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { DocsSearch } from '../../components/docs/DocsSearch';
import { DocsGitHubStarsBadgeServer } from '../../components/DocsGitHubStarsBadgeServer';
import { SiteFooter } from '../../components/SiteFooter';
import { SiteNav } from '../../components/SiteNav';
import { NavDownloadButton } from '../../components/SiteNavActions';
import styles from '../../components/docs/docs.module.css';
import { getSearchIndex } from '../../lib/docs';
import { productBasePath, productSections, getProductSearchIndex } from '../../lib/product-docs';
Expand All @@ -30,8 +31,18 @@ export default function DocsLayout({ children }: { children: ReactNode }) {
<div className={styles.docsPage}>
<SiteNav
center={<DocsSearch index={searchIndex} productScopes={productScopes} />}
actions={<DocsGitHubStarsBadgeServer />}
mobileMenuContent={<DocsNav variant="mobileMenu" />}
actions={
<>
<DocsGitHubStarsBadgeServer />
<NavDownloadButton />
Comment thread
willwashburn marked this conversation as resolved.
Resolved
Comment thread
willwashburn marked this conversation as resolved.
Resolved
</>
}
mobileMenuContent={
<>
<DocsNav variant="mobileMenu" />
<NavDownloadButton />
</>
}
hideMobileDocsLink
/>
<div className={styles.docsBody}>
Expand Down
Loading
Loading