From a60a7a3d1f9166110b07342f2b22b7b73fc327f3 Mon Sep 17 00:00:00 2001 From: Val Alexander Date: Wed, 1 Apr 2026 04:02:41 -0500 Subject: [PATCH 1/2] Fix marketing Vercel output config --- apps/marketing/next-env.d.ts | 2 +- apps/marketing/next.config.mjs | 3 +++ turbo.json | 4 ++++ vercel.json | 6 ++++++ 4 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 vercel.json diff --git a/apps/marketing/next-env.d.ts b/apps/marketing/next-env.d.ts index c4b7818fb..9edff1c7c 100644 --- a/apps/marketing/next-env.d.ts +++ b/apps/marketing/next-env.d.ts @@ -1,6 +1,6 @@ /// /// -import "./.next/dev/types/routes.d.ts"; +import "./.next/types/routes.d.ts"; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/apps/marketing/next.config.mjs b/apps/marketing/next.config.mjs index bd3419136..8ee7a7de9 100644 --- a/apps/marketing/next.config.mjs +++ b/apps/marketing/next.config.mjs @@ -1,5 +1,8 @@ /** @type {import('next').NextConfig} */ const nextConfig = { + turbopack: { + root: new URL("../..", import.meta.url).pathname, + }, typescript: { ignoreBuildErrors: true, }, diff --git a/turbo.json b/turbo.json index c9471e538..040ee2c39 100644 --- a/turbo.json +++ b/turbo.json @@ -18,6 +18,10 @@ "dependsOn": ["^build"], "outputs": ["dist/**", "dist-electron/**"] }, + "@okcode/marketing#build": { + "dependsOn": ["^build"], + "outputs": [".next/**", "!.next/cache/**"] + }, "dev": { "dependsOn": ["@okcode/contracts#build"], "cache": false, diff --git a/vercel.json b/vercel.json new file mode 100644 index 000000000..dc2a991dd --- /dev/null +++ b/vercel.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://openapi.vercel.sh/vercel.json", + "buildCommand": "bun run build:marketing", + "installCommand": "bun install", + "outputDirectory": "apps/marketing/.next" +} From 034e12478726c56b5bc4e2f02a440c6662c9f1a2 Mon Sep 17 00:00:00 2001 From: Val Alexander Date: Wed, 1 Apr 2026 06:37:55 -0500 Subject: [PATCH 2/2] Add staged motion to marketing hero mockup - Animate the 3D hero stage with a floating wrapper and pulsing CTA - Stagger mockup chat content, typing indicator, and active file-tree state --- apps/marketing/components/hero-3d-stage.tsx | 64 +++--- apps/marketing/components/okcode-mockup.tsx | 211 +++++++++++++++----- 2 files changed, 199 insertions(+), 76 deletions(-) diff --git a/apps/marketing/components/hero-3d-stage.tsx b/apps/marketing/components/hero-3d-stage.tsx index dc57ade8a..7a6cf07ae 100644 --- a/apps/marketing/components/hero-3d-stage.tsx +++ b/apps/marketing/components/hero-3d-stage.tsx @@ -130,35 +130,53 @@ export function Hero3DStage() { position: "relative", }} > - {/* Transformed base - Use CSS variables */} + {/* Floating animation wrapper */} - + {/* Transformed base - Use CSS variables */} + + + diff --git a/apps/marketing/components/okcode-mockup.tsx b/apps/marketing/components/okcode-mockup.tsx index cdcac6a9b..2c5c19339 100644 --- a/apps/marketing/components/okcode-mockup.tsx +++ b/apps/marketing/components/okcode-mockup.tsx @@ -198,70 +198,126 @@ export function OKCodeMockup() { {/* Chat Content */}
{/* Task Title */} -
+
install deps
2:47:33 AM
-
+ {/* AI Response */}
-

- { - "I'm checking the repo for its package manager and lockfiles first, then I'll install dependencies with the project's intended tool." - } -

-
2:47:44 AM • 11s
+ +

+ { + "I'm checking the repo for its package manager and lockfiles first, then I'll install dependencies with the project's intended tool." + } +

+
2:47:44 AM • 11s
+
{/* Collapsed Command */} - - -

- The repo is pinned to pnpm via{" "} - pnpm-lock.yaml. {"I'm installing with"}{" "} - pnpm install from the workspace root now. -

-
2:47:46 AM • 2.5s
- -

- pnpm has started linking packages from the lockfile.{" "} - {"I'm waiting for it to finish and checking for any postinstall failures."} -

-
2:47:50 AM • 4.1s
+ + + + + +

+ The repo is pinned to pnpm via{" "} + pnpm-lock.yaml. {"I'm installing with"}{" "} + pnpm install from the workspace root now. +

+
2:47:46 AM • 2.5s
+
+ + +

+ pnpm has started linking packages from the lockfile.{" "} + {"I'm waiting for it to finish and checking for any postinstall failures."} +

+
2:47:50 AM • 4.1s
+
{/* Expanded Command */} -
-
- - - {"Ran command - /bin/zsh -lc 'pnpm install'"} - + +
+
+ + + {"Ran command - /bin/zsh -lc 'pnpm install'"} + +
-
+ {/* Response Status */} -
-
- - RESPONSE • WORKED FOR 22S + +
+
+ + RESPONSE • WORKED FOR 22S +
-
- -

- Dependencies are installed with pnpm. -

- -

- pnpm install completed successfully in{" "} - /Users/buns/.okcode/worktrees/psi-claw/okcode-ad7415a3, and{" "} - node_modules is now populated. One note:{" "} - pnpm ignored the msw build script - under its build-approval policy. If this app depends on msw - {"'s"} postinstall behavior, run pnpm approve-builds and - allow it. -

-
2:47:55 AM • 4.2s
+ + + +

+ Dependencies are installed with pnpm. +

+
+ + +

+ pnpm install completed successfully in{" "} + /Users/buns/.okcode/worktrees/psi-claw/okcode-ad7415a3, and{" "} + node_modules is now populated. One note:{" "} + pnpm ignored the msw build script + under its build-approval policy. If this app depends on msw + {"'s"} postinstall behavior, run pnpm approve-builds and + allow it. +

+
2:47:55 AM • 4.2s
+
+ + {/* Typing indicator - appears while messages are loading, fades out after last message */} +
@@ -298,9 +354,19 @@ export function OKCodeMockup() { - +
@@ -467,8 +533,10 @@ function FileTreeItem({ const iconColor = type === "doc" ? "text-[#f59e0b]" : type === "config" ? "text-[#666]" : "text-[#999]"; + const El = active ? motion.div : ("div" as unknown as typeof motion.div); + return ( -
{/* Spacer for alignment */} {name} -
+ ); } @@ -524,6 +600,35 @@ function TabButton({ label, active = false }: { label: string; active?: boolean ); } +function TypingIndicator() { + return ( + + {[0, 1, 2].map((i) => ( + + ))} + + ); +} + function TOCItem({ label }: { label: string }) { return (