From 24cd2b22f79c88d45c2542f62c5e5f593a8efd38 Mon Sep 17 00:00:00 2001 From: Brian Love Date: Fri, 15 May 2026 11:55:31 -0700 Subject: [PATCH 1/9] =?UTF-8?q?docs:=20spec=20for=20Phase=205=20=E2=80=94?= =?UTF-8?q?=20marketing=20rewire=20to=20canonical=20demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Full sweep: Hero, FinalCTA, ProofStrip, LiveCockpitFrame (renamed to LiveDemoFrame), Nav + Footer all gain "Try the demo" entries pointed at demo.cacheplane.ai. "See each feature in action" CTAs keep pointing at cockpit.cacheplane.ai. Captures two new canonical-demo screenshots (welcome + mid-conversation with markdown response) via Chrome MCP, saves to public/screenshots/. Deep-dive page cockpit references (chat, pilot-to-prod, dev/primitives, HomeFAQ) stay as-is — those contexts are cockpit-specific. Co-Authored-By: Claude Opus 4.7 (1M context) --- ...-canonical-demo-marketing-rewire-design.md | 152 ++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 docs/superpowers/specs/2026-05-15-canonical-demo-marketing-rewire-design.md diff --git a/docs/superpowers/specs/2026-05-15-canonical-demo-marketing-rewire-design.md b/docs/superpowers/specs/2026-05-15-canonical-demo-marketing-rewire-design.md new file mode 100644 index 000000000..8293be16b --- /dev/null +++ b/docs/superpowers/specs/2026-05-15-canonical-demo-marketing-rewire-design.md @@ -0,0 +1,152 @@ +# Phase 5 — Marketing Rewire — Design + +**Status:** Approved +**Date:** 2026-05-15 +**Goal:** Route marketing-site visitors who want to "try it" to the canonical demo at `demo.cacheplane.ai`, replacing the current "See it live" CTAs that point at `cockpit.cacheplane.ai`. Capture two new canonical-demo screenshots and place them in the Hero collage. Keep "See each feature in action" pointed at the cockpit. + +## Why now + +Phases 1–4 made `demo.cacheplane.ai` reachable, wallet-safe (rate-limit + body cap + CORS allowlist), and verified live. This phase drives the actual marketing traffic that justifies the deployment work. + +## Decisions locked during brainstorming + +| Decision | Choice | +|---|---| +| Scope | Full sweep — Hero + FinalCTA + ProofStrip + LiveDemoFrame (renamed from LiveCockpitFrame) + Nav "Demo" link + Footer "Demo" link | +| Distinguishing copy | "Try the demo →" → demo; "See each feature in action →" → cockpit | +| Screenshots to capture | Two — welcome state + mid-conversation with markdown response | +| Hero collage layering | Two of three slots become canonical-demo shots; third remains (genui-surface or code-editor) | +| `chat/page.tsx`, `pilot-to-prod/page.tsx`, `dev/primitives/page.tsx`, `HomeFAQ.tsx`, `page.tsx:44/76` cockpit refs | OUT of scope — these are deep-dive contexts; stay cockpit | +| New `/demo` route on marketing site | OUT of scope; demo lives at its own subdomain | + +## Architecture + +Three categories of `apps/website/src/` edits plus two new image assets. + +### 1. Primary "Try the demo" surfaces + +Replace `https://cockpit.cacheplane.ai` with `https://demo.cacheplane.ai` and update label + browser-frame URL in three components: + +- **`apps/website/src/components/landing/Hero.tsx`** (lines 62 + 79 + 85) + - Primary CTA href → demo + - `BrowserFrame url` label → `demo.cacheplane.ai` + - Collage screenshot `src` → `/screenshots/canonical-demo-conversation.webp` (the markdown-rich shot) +- **`apps/website/src/components/landing/FinalCTA.tsx`** (line 20) + - `DEFAULT_SECONDARY = { label: 'See each feature in action →', href: 'https://cockpit.cacheplane.ai', external: true }` stays + - Add `DEFAULT_PRIMARY = { label: 'Try the demo →', href: 'https://demo.cacheplane.ai', external: true }` as the new primary CTA + - Update the FinalCTA component to render both with distinct visual weights +- **`apps/website/src/components/landing/ProofStrip.tsx`** (lines 27–28) + - "Live" proof: `value: 'demo.cacheplane.ai'`, `href: 'https://demo.cacheplane.ai'` + +### 2. Production-patterns iframe — rename component + +- **`apps/website/src/components/landing/LiveCockpitFrame.tsx`** → `LiveDemoFrame.tsx` + - Update `