Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
335780f
Run update script + manual fixes
haydenbleasel Dec 5, 2025
a306a37
Add locales
haydenbleasel Dec 5, 2025
a1549e9
Run translation script
haydenbleasel Dec 5, 2025
cf99ec3
Manual fixes
haydenbleasel Dec 5, 2025
ed14ef8
Update next.config.ts
haydenbleasel Dec 5, 2025
ea7d65b
Update pnpm-lock.yaml
haydenbleasel Dec 5, 2025
2310b88
Update route.ts
haydenbleasel Dec 5, 2025
443c84c
Fix image tags
haydenbleasel Dec 5, 2025
f40487a
Remove translations
haydenbleasel Dec 9, 2025
15b9961
Revert og:image change
haydenbleasel Dec 9, 2025
64e2fc1
Merge branch 'main' into update-docs-2
haydenbleasel Dec 9, 2025
1d66fbe
Update docs/components/geistdocs/mdx-components.tsx
haydenbleasel Dec 9, 2025
0065701
Run updater
haydenbleasel Dec 9, 2025
2721f94
Remove custom og:image
haydenbleasel Dec 9, 2025
b7aae70
Revert "Run updater"
haydenbleasel Dec 9, 2025
cfc5757
Run updater
haydenbleasel Dec 10, 2025
b6a4337
Merge branch 'main' into update-docs-2
haydenbleasel Dec 10, 2025
63114e7
Update pnpm-lock.yaml
haydenbleasel Dec 10, 2025
aead963
Update db.ts
haydenbleasel Dec 10, 2025
89f561c
Merge main into update-docs-2
haydenbleasel Jan 18, 2026
3216417
Delete docs/content/docs/api-reference/workflow/create-hook.jp.mdx
haydenbleasel Jan 18, 2026
90eced6
Update pnpm-lock.yaml
haydenbleasel Jan 18, 2026
b07c299
Update docs/components/geistdocs/mdx-components.tsx
VaguelySerious Jan 23, 2026
2777574
[web-shared] Improve spacing, styling, and scroll behavior of trace v…
VaguelySerious Jan 19, 2026
eb6e504
[web] Add view to display a list of all events (#806)
VaguelySerious Jan 19, 2026
7144ee0
Add support for custom class instance serialization (#762)
TooTallNate Jan 19, 2026
ac7a9ac
Fix layout shift flicker in runs table by using refresh hook instead …
karthikscale3 Jan 20, 2026
665ebc1
Show opaque marker when deserializing custom classes and instances in…
TooTallNate Jan 20, 2026
534cdb9
[world-local] Update log message when PORT not set, and make less pro…
VaguelySerious Jan 20, 2026
60b4593
Update SWC plugin `spec.md` with latest state of compiler (#815)
TooTallNate Jan 20, 2026
1992665
Enqueue @workflow/serde for publish
TooTallNate Jan 21, 2026
2a3afeb
Version Packages (beta) (#807)
vercel-release-bot Jan 21, 2026
183e6f6
Add retry for filesystem operation errors on Windows (#818)
TooTallNate Jan 21, 2026
ecc3300
Clamp setTimeout value to 32-bit integer (~25d) for `sleep()` (#824)
TooTallNate Jan 21, 2026
e5f43d1
Throw an error if no deployment ID was specified (#820)
TooTallNate Jan 21, 2026
cc88fe9
postgres-world: Delete redundant and bugged migration (#804)
lcneves Jan 21, 2026
5506c7b
Add `workflow health` CLI command and web functionality (#816)
TooTallNate Jan 21, 2026
e83d9e1
Fix `getWorld()` import naming (#826)
TooTallNate Jan 22, 2026
38848ba
[web-shared] Tone down colors on event list (#828)
VaguelySerious Jan 22, 2026
a3e4493
Version Packages (beta) (#819)
vercel-release-bot Jan 22, 2026
45adf16
fix(builders): manifest missing workflow-only files (no steps), add t…
michael-han-dev Jan 23, 2026
cc62297
implement event-sourced architecture (#621)
pranaygp Jan 23, 2026
fe2adf5
Merge branch 'main' into update-docs-2
VaguelySerious Jan 23, 2026
0b0f915
Fix lock
VaguelySerious Jan 23, 2026
2b426aa
Merge branch 'main' into update-docs-2
VaguelySerious Jan 26, 2026
d1d1828
Add missing SWC dependencies for NestJS builder
VaguelySerious Jan 26, 2026
2ab0c4e
Merge branch 'main' into update-docs-2
VaguelySerious Jan 27, 2026
c42c411
Rename
VaguelySerious Jan 27, 2026
fcf5826
Fix
VaguelySerious Jan 27, 2026
cfe3b53
Merge branch 'main' into update-docs-2
VaguelySerious Jan 28, 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
9 changes: 0 additions & 9 deletions docs/app/(home)/layout.tsx

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export const CTA = () => (
<h2 className="font-semibold text-xl tracking-tight sm:text-2xl md:text-3xl lg:text-[40px]">
Create your first workflow today.
</h2>
<Button asChild className="w-fit" size="lg" className="text-base h-12">
<Button asChild size="lg" className="w-fit text-base h-12">
<Link href="/docs/getting-started">Get started</Link>
</Button>
</section>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { CodeBlock } from '@/app/(home)/components/code-block';
import { CodeBlock } from '@/app/[lang]/(home)/components/code-block';

const data = [
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { CodeBlock } from '@/app/(home)/components/code-block';
import { CodeBlock } from '@/app/[lang]/(home)/components/code-block';
import { IntroTabs } from './intro-tabs';
import { NonWorkflowExample } from './non-workflow';
import { WorkflowExample } from './workflow';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { ComponentProps } from 'react';
import { CodeBlock } from '@/app/(home)/components/code-block';
import { CodeBlock } from '@/app/[lang]/(home)/components/code-block';
import { cn } from '@/lib/utils';

const DigitalOcean = (props: ComponentProps<'svg'>) => (
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { CodeBlock } from '@/app/(home)/components/code-block';
import { CodeBlock } from '@/app/[lang]/(home)/components/code-block';
import { UseCasesClient } from './use-cases-client';

const useCases = [
Expand Down
14 changes: 14 additions & 0 deletions docs/app/[lang]/(home)/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { HomeLayout } from '@/components/geistdocs/home-layout';
import { source } from '@/lib/geistdocs/source';

const Layout = async ({ children, params }: LayoutProps<'/[lang]'>) => {
const { lang } = await params;

return (
<HomeLayout tree={source.pageTree[lang]}>
<div className="bg-sidebar pt-0 pb-32">{children}</div>
</HomeLayout>
);
};

export default Layout;
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { Step, Steps } from 'fumadocs-ui/components/steps';
import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
import { createRelativeLink } from 'fumadocs-ui/mdx';
import type { Metadata } from 'next';
import { notFound } from 'next/navigation';
import { AgentTraces } from '@/components/custom/agent-traces';
import { AskAI } from '@/components/geistdocs/ask-ai';
Expand All @@ -10,29 +11,26 @@ import {
DocsDescription,
DocsPage,
DocsTitle,
generatePageMetadata,
generateStaticPageParams,
} from '@/components/geistdocs/docs-page';
import { EditSource } from '@/components/geistdocs/edit-source';
import { Feedback } from '@/components/geistdocs/feedback';
import { getMDXComponents } from '@/components/geistdocs/mdx-components';
import { OpenInChat } from '@/components/geistdocs/open-in-chat';
import { ScrollTop } from '@/components/geistdocs/scroll-top';
import { TableOfContents } from '@/components/geistdocs/toc';
import * as AccordionComponents from '@/components/ui/accordion';
import { Badge } from '@/components/ui/badge';

import { Separator } from '@/components/ui/separator';
import { getLLMText, source } from '@/lib/geistdocs/source';
import { TSDoc } from '@/lib/tsdoc';

// No-op component for world MDX files rendered outside /worlds/ context
// These pages redirect to /worlds/[id] but still get statically generated
const WorldTestingPerformanceNoop = () => null;

const Page = async (props: PageProps<'/docs/[[...slug]]'>) => {
const params = await props.params;
const Page = async ({ params }: PageProps<'/[lang]/docs/[[...slug]]'>) => {
const { slug, lang } = await params;

const page = source.getPage(params.slug);
const page = source.getPage(slug, lang);

if (!page) {
notFound();
Expand All @@ -43,17 +41,19 @@ const Page = async (props: PageProps<'/docs/[[...slug]]'>) => {

return (
<DocsPage
slug={params.slug}
full={page.data.full}
tableOfContent={{
component: (
<TableOfContents>
style: 'clerk',
footer: (
<div className="my-3 space-y-3">
<Separator />
<EditSource path={page.path} />
<ScrollTop />
<Feedback />
<CopyPage text={markdown} />
<AskAI href={page.url} />
<OpenInChat href={page.url} />
</TableOfContents>
</div>
),
}}
toc={page.data.toc}
Expand Down Expand Up @@ -83,14 +83,24 @@ const Page = async (props: PageProps<'/docs/[[...slug]]'>) => {
);
};

export const generateStaticParams = generateStaticPageParams;
export const generateStaticParams = () => source.generateParams();

export const generateMetadata = async ({
params,
}: PageProps<'/[lang]/docs/[[...slug]]'>) => {
const { slug, lang } = await params;
const page = source.getPage(slug, lang);

if (!page) {
notFound();
}

export const generateMetadata = async (
props: PageProps<'/docs/[[...slug]]'>
) => {
const params = await props.params;
const metadata: Metadata = {
title: page.data.title,
description: page.data.description,
};

return generatePageMetadata(params.slug);
return metadata;
};

export default Page;
10 changes: 10 additions & 0 deletions docs/app/[lang]/docs/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { DocsLayout } from '@/components/geistdocs/docs-layout';
import { source } from '@/lib/geistdocs/source';

const Layout = async ({ children, params }: LayoutProps<'/[lang]/docs'>) => {
const { lang } = await params;

return <DocsLayout tree={source.pageTree[lang]}>{children}</DocsLayout>;
};

export default Layout;
29 changes: 29 additions & 0 deletions docs/app/[lang]/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import '../global.css';
import { Footer } from '@/components/geistdocs/footer';
import { Navbar } from '@/components/geistdocs/navbar';
import { GeistdocsProvider } from '@/components/geistdocs/provider';
import { basePath } from '@/geistdocs';
import { mono, sans } from '@/lib/geistdocs/fonts';
import { cn } from '@/lib/utils';

const Layout = async ({ children, params }: LayoutProps<'/[lang]'>) => {
const { lang } = await params;

return (
<html
className={cn(sans.variable, mono.variable, 'scroll-smooth antialiased')}
lang={lang}
suppressHydrationWarning
>
<body>
<GeistdocsProvider basePath={basePath} lang={lang}>
<Navbar />
{children}
<Footer />
</GeistdocsProvider>
</body>
</html>
);
};

export default Layout;
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ export const revalidate = false;

export async function GET(
_req: Request,
{ params }: RouteContext<'/llms.mdx/[[...slug]]'>
{ params }: RouteContext<'/[lang]/llms.mdx/[[...slug]]'>
) {
const { slug } = await params;
const page = source.getPage(slug);
const { slug, lang } = await params;
const page = source.getPage(slug, lang);

if (!page) {
notFound();
Expand All @@ -26,6 +26,10 @@ export async function GET(
);
}

export function generateStaticParams() {
return source.generateParams();
}
export const generateStaticParams = async ({
params,
}: RouteContext<'/[lang]/llms.mdx/[[...slug]]'>) => {
const { lang } = await params;

return source.generateParams(lang);
};
15 changes: 15 additions & 0 deletions docs/app/[lang]/llms.txt/route.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import type { NextRequest } from 'next/server';
import { getLLMText, source } from '@/lib/geistdocs/source';

export const revalidate = false;

export const GET = async (
_req: NextRequest,
{ params }: RouteContext<'/[lang]/llms.txt'>
) => {
const { lang } = await params;
const scan = source.getPages(lang).map(getLLMText);
const scanned = await Promise.all(scan);

return new Response(scanned.join('\n\n'));
};
17 changes: 10 additions & 7 deletions docs/app/rss.xml/route.ts → docs/app/[lang]/rss.xml/route.ts
Original file line number Diff line number Diff line change
@@ -1,30 +1,33 @@
import { Feed } from 'feed';
import type { NextRequest } from 'next/server';
import { title } from '@/geistdocs';
import { source } from '@/lib/geistdocs/source';

const protocol = process.env.NODE_ENV === 'production' ? 'https' : 'http';
const baseUrl = `${protocol}://${process.env.NEXT_PUBLIC_VERCEL_PROJECT_PRODUCTION_URL}`;

export const revalidate = false;

export const GET = () => {
export const GET = async (
_req: NextRequest,
{ params }: RouteContext<'/[lang]/rss.xml'>
) => {
const { lang } = await params;
const feed = new Feed({
title: 'Workflow DevKit Documentation',
description:
'use workflow brings durability, reliability, and observability to async JavaScript. Build apps and AI Agents that can suspend, resume, and maintain state with ease.',
title,
id: baseUrl,
link: baseUrl,
language: 'en',
language: lang,
copyright: `All rights reserved ${new Date().getFullYear()}, Vercel`,
});

for (const page of source.getPages()) {
for (const page of source.getPages(lang)) {
feed.addItem({
id: page.url,
title: page.data.title,
description: page.data.description,
link: `${baseUrl}${page.url}`,
date: new Date(page.data.lastModified ?? new Date()),

author: [
{
name: 'Vercel',
Expand Down
File renamed without changes.
13 changes: 13 additions & 0 deletions docs/app/[lang]/worlds/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { HomeLayout } from '@/components/geistdocs/home-layout';
import { source } from '@/lib/geistdocs/source';

const Layout = async ({ children, params }: LayoutProps<'/[lang]/worlds'>) => {
const { lang } = await params;
return (
<HomeLayout tree={source.pageTree[lang]}>
<div className="pb-8 sm:pb-32">{children}</div>
</HomeLayout>
);
};

export default Layout;
File renamed without changes.
10 changes: 5 additions & 5 deletions docs/app/actions/feedback/emotions.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
export const emotions = [
{
name: 'angry',
emoji: '😡',
name: 'cry',
emoji: '😭',
},
{
name: 'sad',
emoji: '🙁',
emoji: '😕',
},
{
name: 'happy',
emoji: '🙂',
},
{
name: 'ecstatic',
emoji: '😍',
name: 'amazed',
emoji: '🤩',
},
];
Loading
Loading