rename: replace all user-facing 'Atlas' references with 'Vibn'
Updated UI text in: project-shell (tab label), AtlasChat (sender name), FreshIdeaMain, TypeSelector, MigrateSetup, ChatImportSetup, FreshIdeaSetup, CodeImportSetup, prd/page, build/page, projects/page, deployment/page, activity/page, layout (page title/description), atlas-chat API route. Code identifiers (AtlasChat component name, file names) unchanged. Made-with: Cursor
This commit is contained in:
@@ -32,7 +32,7 @@ function typeColor(t: string) {
|
|||||||
|
|
||||||
const FILTERS = [
|
const FILTERS = [
|
||||||
{ id: "all", label: "All" },
|
{ id: "all", label: "All" },
|
||||||
{ id: "atlas", label: "Atlas" },
|
{ id: "atlas", label: "Vibn" },
|
||||||
{ id: "build", label: "Builds" },
|
{ id: "build", label: "Builds" },
|
||||||
{ id: "deploy", label: "Deploys" },
|
{ id: "deploy", label: "Deploys" },
|
||||||
{ id: "user", label: "You" },
|
{ id: "user", label: "You" },
|
||||||
|
|||||||
@@ -1022,14 +1022,14 @@ function PrdContent({ projectId }: { projectId: string }) {
|
|||||||
)}
|
)}
|
||||||
{!s.isDone && (
|
{!s.isDone && (
|
||||||
<div style={{ marginTop: 5, marginLeft: 32, fontSize: "0.7rem", color: "#c5c0b8" }}>
|
<div style={{ marginTop: 5, marginLeft: 32, fontSize: "0.7rem", color: "#c5c0b8" }}>
|
||||||
{s.phaseId ? "Complete this phase in Atlas" : "Generated when PRD is finalized"}
|
{s.phaseId ? "Complete this phase in Vibn" : "Generated when PRD is finalized"}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
|
|
||||||
{doneCount === 0 && (
|
{doneCount === 0 && (
|
||||||
<p style={{ fontSize: "0.76rem", color: "#b5b0a6", marginTop: 16, textAlign: "center" }}>Continue chatting with Atlas — saved phases appear here automatically.</p>
|
<p style={{ fontSize: "0.76rem", color: "#b5b0a6", marginTop: 16, textAlign: "center" }}>Continue chatting with Vibn — saved phases appear here automatically.</p>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ export default function DeploymentPage() {
|
|||||||
<div style={{ padding: "18px 0", textAlign: "center" }}>
|
<div style={{ padding: "18px 0", textAlign: "center" }}>
|
||||||
<p style={{ fontSize: "0.82rem", color: "#a09a90", marginBottom: 12 }}>
|
<p style={{ fontSize: "0.82rem", color: "#a09a90", marginBottom: 12 }}>
|
||||||
{!hasPRD
|
{!hasPRD
|
||||||
? "Complete your PRD with Atlas first, then build and deploy."
|
? "Complete your PRD with Vibn first, then build and deploy."
|
||||||
: !hasRepo
|
: !hasRepo
|
||||||
? "No repository yet — the Architect agent will scaffold one from your PRD."
|
? "No repository yet — the Architect agent will scaffold one from your PRD."
|
||||||
: "No deployment yet — kick off a build to get a live URL."}
|
: "No deployment yet — kick off a build to get a live URL."}
|
||||||
|
|||||||
@@ -374,7 +374,7 @@ export default function PRDPage() {
|
|||||||
{!s.isDone && (
|
{!s.isDone && (
|
||||||
<div style={{ marginTop: 6, marginLeft: 36, fontSize: "0.72rem", color: "#c5c0b8" }}>
|
<div style={{ marginTop: 6, marginLeft: 36, fontSize: "0.72rem", color: "#c5c0b8" }}>
|
||||||
{s.phaseId
|
{s.phaseId
|
||||||
? `Complete the ${s.savedPhase ? s.savedPhase.title : "discovery"} phase in Atlas`
|
? `Complete the ${s.savedPhase ? s.savedPhase.title : "discovery"} phase in Vibn`
|
||||||
: "Will be generated when PRD is finalized"}
|
: "Will be generated when PRD is finalized"}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
@@ -383,7 +383,7 @@ export default function PRDPage() {
|
|||||||
|
|
||||||
{doneCount === 0 && (
|
{doneCount === 0 && (
|
||||||
<p style={{ fontSize: "0.78rem", color: "#b5b0a6", marginTop: 20, textAlign: "center" }}>
|
<p style={{ fontSize: "0.78rem", color: "#b5b0a6", marginTop: 20, textAlign: "center" }}>
|
||||||
Continue chatting with Atlas — saved phases will appear here automatically.
|
Continue chatting with Vibn — saved phases will appear here automatically.
|
||||||
</p>
|
</p>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -299,7 +299,7 @@ export default function ProjectsPage() {
|
|||||||
No projects yet
|
No projects yet
|
||||||
</h3>
|
</h3>
|
||||||
<p style={{ fontSize: "0.82rem", color: "#a09a90", lineHeight: 1.6, marginBottom: 24 }}>
|
<p style={{ fontSize: "0.82rem", color: "#a09a90", lineHeight: 1.6, marginBottom: 24 }}>
|
||||||
Tell Atlas what you want to build and it will figure out the rest.
|
Tell Vibn what you want to build and it will figure out the rest.
|
||||||
</p>
|
</p>
|
||||||
<button
|
<button
|
||||||
onClick={() => setShowNew(true)}
|
onClick={() => setShowNew(true)}
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ Operating principles:
|
|||||||
for (const p of phaseRows) {
|
for (const p of phaseRows) {
|
||||||
lines.push(`- ${p.title}: ${p.summary}`);
|
lines.push(`- ${p.title}: ${p.summary}`);
|
||||||
}
|
}
|
||||||
lines.push(`(PRD not yet finalized — Atlas discovery is in progress)`);
|
lines.push(`(PRD not yet finalized — Vibn discovery is in progress)`);
|
||||||
} else {
|
} else {
|
||||||
lines.push(`\n## Product discovery: not yet started`);
|
lines.push(`\n## Product discovery: not yet started`);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ export async function POST(
|
|||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
// For init, send the greeting prompt but don't store it as a user message
|
// For init, send the greeting prompt but don't store it as a user message
|
||||||
message: isInit
|
message: isInit
|
||||||
? "Begin the conversation. Introduce yourself as Atlas and ask what the user is building. Do not acknowledge this as an internal trigger."
|
? "Begin the conversation. Introduce yourself as Vibn and ask what the user is building. Do not acknowledge this as an internal trigger."
|
||||||
: message,
|
: message,
|
||||||
session_id: sessionId,
|
session_id: sessionId,
|
||||||
history,
|
history,
|
||||||
@@ -146,7 +146,7 @@ export async function POST(
|
|||||||
const text = await res.text();
|
const text = await res.text();
|
||||||
console.error("[atlas-chat] Agent runner error:", text);
|
console.error("[atlas-chat] Agent runner error:", text);
|
||||||
return NextResponse.json(
|
return NextResponse.json(
|
||||||
{ error: "Atlas is unavailable. Please try again." },
|
{ error: "Vibn is unavailable. Please try again." },
|
||||||
{ status: 502 }
|
{ status: 502 }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ const ibmPlexMono = IBM_Plex_Mono({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "VIBN — Build with Atlas",
|
title: "VIBN — Build with Vibn",
|
||||||
description: "Chat with Atlas to define your product, then let AI build it.",
|
description: "Chat with Vibn to define your product, then let AI build it.",
|
||||||
manifest: "/manifest.json",
|
manifest: "/manifest.json",
|
||||||
appleWebApp: {
|
appleWebApp: {
|
||||||
capable: true,
|
capable: true,
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ function MessageRow({
|
|||||||
marginBottom: 5, textTransform: "uppercase", letterSpacing: "0.04em",
|
marginBottom: 5, textTransform: "uppercase", letterSpacing: "0.04em",
|
||||||
fontFamily: "Outfit, sans-serif",
|
fontFamily: "Outfit, sans-serif",
|
||||||
}}>
|
}}>
|
||||||
{isAtlas ? "Atlas" : "You"}
|
{isAtlas ? "Vibn" : "You"}
|
||||||
</div>
|
</div>
|
||||||
{/* Content */}
|
{/* Content */}
|
||||||
<div style={{
|
<div style={{
|
||||||
@@ -448,7 +448,7 @@ export function AtlasChat({ projectId }: AtlasChatProps) {
|
|||||||
}}>A</div>
|
}}>A</div>
|
||||||
<style>{`@keyframes breathe { 0%,100%{transform:scale(1)} 50%{transform:scale(1.08)} }`}</style>
|
<style>{`@keyframes breathe { 0%,100%{transform:scale(1)} 50%{transform:scale(1.08)} }`}</style>
|
||||||
<div style={{ textAlign: "center" }}>
|
<div style={{ textAlign: "center" }}>
|
||||||
<p style={{ fontSize: "0.88rem", fontWeight: 600, color: "#1a1a1a", marginBottom: 4 }}>Atlas</p>
|
<p style={{ fontSize: "0.88rem", fontWeight: 600, color: "#1a1a1a", marginBottom: 4 }}>Vibn</p>
|
||||||
<p style={{ fontSize: "0.78rem", color: "#a09a90", maxWidth: 260, lineHeight: 1.5 }}>
|
<p style={{ fontSize: "0.78rem", color: "#a09a90", maxWidth: 260, lineHeight: 1.5 }}>
|
||||||
Your product strategist. Let's define what you're building.
|
Your product strategist. Let's define what you're building.
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ interface ProjectShellProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const SECTIONS = [
|
const SECTIONS = [
|
||||||
{ id: "overview", label: "Atlas", path: "overview" },
|
{ id: "overview", label: "Vibn", path: "overview" },
|
||||||
{ id: "prd", label: "PRD", path: "prd" },
|
{ id: "prd", label: "PRD", path: "prd" },
|
||||||
{ id: "build", label: "Build", path: "build" },
|
{ id: "build", label: "Build", path: "build" },
|
||||||
{ id: "growth", label: "Growth", path: "growth" },
|
{ id: "growth", label: "Growth", path: "growth" },
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ export function ChatImportSetup({ workspace, onClose, onBack }: SetupProps) {
|
|||||||
<textarea
|
<textarea
|
||||||
value={chatText}
|
value={chatText}
|
||||||
onChange={e => setChatText(e.target.value)}
|
onChange={e => setChatText(e.target.value)}
|
||||||
placeholder={"Paste conversations from ChatGPT, Claude, Gemini, or any AI tool.\n\nAtlas will extract decisions, ideas, open questions, and architecture notes."}
|
placeholder={"Paste conversations from ChatGPT, Claude, Gemini, or any AI tool.\n\nVibn will extract decisions, ideas, open questions, and architecture notes."}
|
||||||
rows={8}
|
rows={8}
|
||||||
style={{
|
style={{
|
||||||
width: "100%", padding: "12px 14px", marginBottom: 20,
|
width: "100%", padding: "12px 14px", marginBottom: 20,
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ export function CodeImportSetup({ workspace, onClose, onBack }: SetupProps) {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<div style={{ fontSize: "0.75rem", color: "#a09a90", marginBottom: 20, lineHeight: 1.5, padding: "12px 14px", background: "#faf8f5", borderRadius: 8, border: "1px solid #f0ece4" }}>
|
<div style={{ fontSize: "0.75rem", color: "#a09a90", marginBottom: 20, lineHeight: 1.5, padding: "12px 14px", background: "#faf8f5", borderRadius: 8, border: "1px solid #f0ece4" }}>
|
||||||
Atlas will clone your repo, read key files, and build a full architecture map — tech stack, routes, database, auth, and third-party integrations. Tokens are used only for cloning and are not stored.
|
Vibn will clone your repo, read key files, and build a full architecture map — tech stack, routes, database, auth, and third-party integrations. Tokens are used only for cloning and are not stored.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<PrimaryButton onClick={handleCreate} disabled={!canCreate} loading={loading}>
|
<PrimaryButton onClick={handleCreate} disabled={!canCreate} loading={loading}>
|
||||||
|
|||||||
@@ -80,11 +80,11 @@ export function FreshIdeaSetup({ workspace, onClose, onBack }: SetupProps) {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<div style={{ fontSize: "0.75rem", color: "#a09a90", marginBottom: 20, lineHeight: 1.5, padding: "12px 14px", background: "#faf8f5", borderRadius: 8, border: "1px solid #f0ece4" }}>
|
<div style={{ fontSize: "0.75rem", color: "#a09a90", marginBottom: 20, lineHeight: 1.5, padding: "12px 14px", background: "#faf8f5", borderRadius: 8, border: "1px solid #f0ece4" }}>
|
||||||
Atlas will guide you through 6 discovery phases — Big Picture, Users, Features, Business Model, Screens, and Risks — building your product plan as you go.
|
Vibn will guide you through 6 discovery phases — Big Picture, Users, Features, Business Model, Screens, and Risks — building your product plan as you go.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<PrimaryButton onClick={handleCreate} disabled={!canCreate} loading={loading}>
|
<PrimaryButton onClick={handleCreate} disabled={!canCreate} loading={loading}>
|
||||||
Start with Atlas →
|
Start with Vibn →
|
||||||
</PrimaryButton>
|
</PrimaryButton>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ export function MigrateSetup({ workspace, onClose, onBack }: SetupProps) {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style={{ fontSize: "0.75rem", color: "#a09a90", marginBottom: 20, lineHeight: 1.5, padding: "12px 14px", background: "#faf8f5", borderRadius: 8, border: "1px solid #f0ece4" }}>
|
<div style={{ fontSize: "0.75rem", color: "#a09a90", marginBottom: 20, lineHeight: 1.5, padding: "12px 14px", background: "#faf8f5", borderRadius: 8, border: "1px solid #f0ece4" }}>
|
||||||
<strong style={{ color: "#4a2a5a" }}>Non-destructive.</strong> Atlas builds a full audit and migration plan. Your existing product stays live throughout the entire migration process.
|
<strong style={{ color: "#4a2a5a" }}>Non-destructive.</strong> Vibn builds a full audit and migration plan. Your existing product stays live throughout the entire migration process.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<PrimaryButton onClick={handleCreate} disabled={!canCreate} loading={loading}>
|
<PrimaryButton onClick={handleCreate} disabled={!canCreate} loading={loading}>
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ const ALL_FLOW_TYPES: {
|
|||||||
icon: "✦",
|
icon: "✦",
|
||||||
label: "Fresh Idea",
|
label: "Fresh Idea",
|
||||||
tagline: "Start from scratch",
|
tagline: "Start from scratch",
|
||||||
desc: "Talk through your idea with Atlas. We'll explore it together and shape it into a full product plan.",
|
desc: "Talk through your idea with Vibn. We'll explore it together and shape it into a full product plan.",
|
||||||
accent: "#4a3728",
|
accent: "#4a3728",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -29,7 +29,7 @@ const ALL_FLOW_TYPES: {
|
|||||||
icon: "⌁",
|
icon: "⌁",
|
||||||
label: "Import Chats",
|
label: "Import Chats",
|
||||||
tagline: "You've been thinking",
|
tagline: "You've been thinking",
|
||||||
desc: "Paste conversations from ChatGPT or Claude. Atlas extracts your decisions, ideas, and open questions.",
|
desc: "Paste conversations from ChatGPT or Claude. Vibn extracts your decisions, ideas, and open questions.",
|
||||||
accent: "#2e5a4a",
|
accent: "#2e5a4a",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -37,7 +37,7 @@ const ALL_FLOW_TYPES: {
|
|||||||
icon: "⌘",
|
icon: "⌘",
|
||||||
label: "Import Code",
|
label: "Import Code",
|
||||||
tagline: "Already have a repo",
|
tagline: "Already have a repo",
|
||||||
desc: "Point Atlas at your GitHub or Bitbucket repo. We'll map your stack and show what's missing.",
|
desc: "Point Vibn at your GitHub or Bitbucket repo. We'll map your stack and show what's missing.",
|
||||||
accent: "#1a3a5c",
|
accent: "#1a3a5c",
|
||||||
hidden: true,
|
hidden: true,
|
||||||
},
|
},
|
||||||
@@ -46,7 +46,7 @@ const ALL_FLOW_TYPES: {
|
|||||||
icon: "⇢",
|
icon: "⇢",
|
||||||
label: "Migrate Product",
|
label: "Migrate Product",
|
||||||
tagline: "Move an existing product",
|
tagline: "Move an existing product",
|
||||||
desc: "Bring your live product into the VIBN infrastructure. Atlas builds a safe, phased migration plan.",
|
desc: "Bring your live product into the VIBN infrastructure. Vibn builds a safe, phased migration plan.",
|
||||||
accent: "#4a2a5a",
|
accent: "#4a2a5a",
|
||||||
hidden: true,
|
hidden: true,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -273,7 +273,7 @@ export function FreshIdeaMain({ projectId, projectName }: FreshIdeaMainProps) {
|
|||||||
<div style={{ fontSize: "0.65rem", color: "#a09a90", marginTop: 2, lineHeight: 1.3 }}>
|
<div style={{ fontSize: "0.65rem", color: "#a09a90", marginTop: 2, lineHeight: 1.3 }}>
|
||||||
{phase === null
|
{phase === null
|
||||||
? "Generated when PRD is finalized"
|
? "Generated when PRD is finalized"
|
||||||
: "Complete this phase in Atlas"
|
: "Complete this phase in Vibn"
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|||||||
Reference in New Issue
Block a user