From a281d4d373a65b038a6bc18d7819f1b98cc4523c Mon Sep 17 00:00:00 2001 From: Mark Henderson Date: Thu, 19 Feb 2026 10:59:30 -0800 Subject: [PATCH] feat: update project creation modal success screen Replace .vibn file instruction with Gitea repo link, provisioning checklist, and Open IDE / Go to Project buttons. Store gitea repo info from API response to display in the success state. Co-authored-by: Cursor --- components/project-creation-modal.tsx | 115 +++++++++++++------------- 1 file changed, 59 insertions(+), 56 deletions(-) diff --git a/components/project-creation-modal.tsx b/components/project-creation-modal.tsx index c56b8e4..a848a74 100644 --- a/components/project-creation-modal.tsx +++ b/components/project-creation-modal.tsx @@ -16,9 +16,9 @@ import { Github, Loader2, CheckCircle2, - Copy, + XCircle, ExternalLink, - ChevronLeft + ChevronLeft, } from 'lucide-react'; import { toast } from 'sonner'; import { Card, CardContent } from '@/components/ui/card'; @@ -43,6 +43,7 @@ export function ProjectCreationModal({ const [productName, setProductName] = useState(''); const [selectedRepo, setSelectedRepo] = useState(null); const [createdProjectId, setCreatedProjectId] = useState(null); + const [createdGiteaRepo, setCreatedGiteaRepo] = useState<{ repo: string; repoUrl: string } | null>(null); const [loading, setLoading] = useState(false); const [githubConnected, setGithubConnected] = useState(false); @@ -88,6 +89,7 @@ export function ProjectCreationModal({ setProductName(''); setSelectedRepo(null); setCreatedProjectId(null); + setCreatedGiteaRepo(null); setLoading(false); }; @@ -120,6 +122,7 @@ export function ProjectCreationModal({ if (response.ok) { const data = await response.json(); setCreatedProjectId(data.projectId); + if (data.gitea) setCreatedGiteaRepo(data.gitea); toast.success('Project created!'); setStep(3); } else { @@ -134,11 +137,6 @@ export function ProjectCreationModal({ } }; - const copyToClipboard = (text: string) => { - navigator.clipboard.writeText(text); - toast.success('Copied to clipboard!'); - }; - const handleFinish = () => { onOpenChange(false); if (createdProjectId) { @@ -275,66 +273,71 @@ export function ProjectCreationModal({
- -
-

Project created successfully!

-

- Project ID: {createdProjectId} + +

+

+ {productName} is ready

+ {createdGiteaRepo ? ( + + + {createdGiteaRepo.repo} + + + ) : ( +

+ Gitea repo provisioning skipped +

+ )}
- - -

- Create a .vibn file in your project root: -

-
-
-{`{
-  "projectId": "${createdProjectId}",
-  "version": "1.0.0"
-}`}
-                    
- -
- {selectedRepo && ( - - )} -
-
+
+

What was provisioned:

+
    +
  • + + Project record saved to database +
  • +
  • + {createdGiteaRepo ? ( + + ) : ( + + )} + Gitea repo created at git.vibnai.com +
  • +
  • + {createdGiteaRepo ? ( + + ) : ( + + )} + Webhook registered (push, PR, issues → Vibn) +
  • +
+
- + +