From 159881a225f056f91516df635408f6f6b7ee20fc Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sun, 26 Apr 2026 21:28:32 +0000 Subject: [PATCH 1/5] Fix duplicate analysis route handler Co-authored-by: Cole Collins --- app/api/analyses/[id]/route.ts | 30 ------------------------------ 1 file changed, 30 deletions(-) diff --git a/app/api/analyses/[id]/route.ts b/app/api/analyses/[id]/route.ts index 0cfe7e4..8f62e49 100644 --- a/app/api/analyses/[id]/route.ts +++ b/app/api/analyses/[id]/route.ts @@ -1,36 +1,6 @@ import { NextRequest, NextResponse } from 'next/server' import { getAnalysisById, getBlueprintsByAnalysis, getRepositoriesForAnalysis } from '@/lib/queries' -export async function GET( - _request: NextRequest, - { params }: { params: Promise<{ id: string }> }, -) { - try { - const { id } = await params - const analysis = await getAnalysisById(id) - if (!analysis) { - return NextResponse.json({ error: 'Analysis not found' }, { status: 404 }) - } - - const [repositories, blueprints] = await Promise.all([ - getRepositoriesForAnalysis(id), - getBlueprintsByAnalysis(id), - ]) - - return NextResponse.json({ - ...analysis, - repositories, - blueprints, - apps: blueprints, - }) - } catch (error) { - console.error('Error fetching analysis details:', error) - return NextResponse.json({ error: 'Failed to fetch analysis details' }, { status: 500 }) - } -} -import { NextRequest, NextResponse } from 'next/server' -import { getAnalysisById, getBlueprintsByAnalysis, getRepositoriesForAnalysis } from '@/lib/queries' - export async function GET( _request: NextRequest, { params }: { params: Promise<{ id: string }> }, From 68ae0ed0dbed914caae23901b6bcc8585d184219 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 27 Apr 2026 04:11:35 +0000 Subject: [PATCH 2/5] Polish landing and app chrome Co-authored-by: Cole Collins --- app/page.tsx | 54 ++++++++++++++++----------------- components/app-logo.tsx | 34 +++++++++++++++++++++ components/dashboard-header.tsx | 14 ++++----- components/theme-toggle.tsx | 51 +++++++++++++++++++++++++++++++ 4 files changed, 118 insertions(+), 35 deletions(-) create mode 100644 components/app-logo.tsx create mode 100644 components/theme-toggle.tsx diff --git a/app/page.tsx b/app/page.tsx index fde5c59..1cf3cd8 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,6 +1,8 @@ import Link from 'next/link' import { Button } from '@/components/ui/button' -import { Github, Sparkles, Code2, Layers, ArrowRight, AlertCircle } from 'lucide-react' +import { Github, Sparkles, Code2, ArrowRight, AlertCircle, ShieldCheck, Workflow, FileJson2 } from 'lucide-react' +import { AppLogo } from '@/components/app-logo' +import { ThemeToggle } from '@/components/theme-toggle' const ERROR_MESSAGES: Record = { auth_required: 'You must sign in to access the dashboard.', @@ -27,20 +29,17 @@ export default async function HomePage({ searchParams }: { searchParams: Promise {/* Header */}
-
-
- -
- CodeVault -
-
-

+

Discover Apps Hidden in Your Code

@@ -85,27 +84,31 @@ export default async function HomePage({ searchParams }: { searchParams: Promise

- {/* Social proof strip — established product feel */}

- Built for builders who already have the hard parts + Built for teams that need confidence before generation

-
-
-

12k+

-

repos scanned

-
+
-

4.1k

-

blueprints surfaced

+
+ +
+

Read-only by design

+

Connect repositories without granting write access to source code.

-

38

-

stacks detected

+
+ +
+

Cross-repo intelligence

+

Map reusable components, APIs, hooks, and utilities across your stack.

-

New

-

cross-repo fusion engine

+
+ +
+

Portable outputs

+

Export structured blueprints that explain what exists and what to build next.

@@ -190,10 +193,7 @@ export default async function HomePage({ searchParams }: { searchParams: Promise