Theia rip-out: - Delete app/api/theia-auth/route.ts (Traefik ForwardAuth shim) - Delete app/api/projects/[projectId]/workspace/route.ts and app/api/projects/prewarm/route.ts (Cloud Run Theia provisioning) - Delete lib/cloud-run-workspace.ts and lib/coolify-workspace.ts - Strip provisionTheiaWorkspace + theiaWorkspaceUrl/theiaAppUuid/ theiaError from app/api/projects/create/route.ts response - Remove Theia callbackUrl branch in app/auth/page.tsx - Drop "Open in Theia" button + xterm/Theia PTY copy in build/page.tsx - Drop theiaWorkspaceUrl from deployment/page.tsx Project type - Strip Theia IDE line + theia-code-os from advisor + agent-chat context strings - Scrub Theia mention from lib/auth/workspace-auth.ts comment P5.1 (custom apex domains + DNS): - lib/coolify.ts + lib/opensrs.ts: nameserver normalization, OpenSRS XML auth, Cloud DNS plumbing - scripts/smoke-attach-e2e.ts: full prod GCP + sandbox OpenSRS + prod Coolify smoke covering register/zone/A/NS/PATCH/cleanup In-progress (Justine onboarding/build, MVP setup, agent telemetry): - New (justine)/stories, project (home) layouts, mvp-setup, run, tasks routes + supporting components - Project shell + sidebar + nav refactor for the Stackless palette - Agent session API hardening (sessions, events, stream, approve, retry, stop) + atlas-chat, advisor, design-surfaces refresh - New scripts/sync-db-url-from-coolify.mjs + scripts/prisma-db-push.mjs + docker-compose.local-db.yml for local Prisma workflows - lib/dev-bypass.ts, lib/chat-context-refs.ts, lib/prd-sections.ts - Misc: stories CSS, debug/prisma route, modal-theme, BuildLivePlanPanel Made-with: Cursor
35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
"use client";
|
|
|
|
/**
|
|
* Project home scaffold.
|
|
*
|
|
* Mirrors the /[workspace]/projects scaffold: VIBNSidebar on the left,
|
|
* cream main area on the right. Used only for the project home page
|
|
* (`/{workspace}/project/{id}`) — sub-routes use the (workspace) group
|
|
* with the ProjectShell tab nav instead.
|
|
*/
|
|
|
|
import { ReactNode } from "react";
|
|
import { useParams } from "next/navigation";
|
|
import { Toaster } from "sonner";
|
|
import { VIBNSidebar } from "@/components/layout/vibn-sidebar";
|
|
import { ProjectAssociationPrompt } from "@/components/project-association-prompt";
|
|
|
|
export default function ProjectHomeLayout({ children }: { children: ReactNode }) {
|
|
const params = useParams();
|
|
const workspace = params.workspace as string;
|
|
|
|
return (
|
|
<>
|
|
<div style={{ display: "flex", height: "100vh", background: "#f6f4f0", overflow: "hidden" }}>
|
|
<VIBNSidebar workspace={workspace} />
|
|
<main style={{ flex: 1, overflow: "auto" }}>
|
|
{children}
|
|
</main>
|
|
</div>
|
|
<ProjectAssociationPrompt workspace={workspace} />
|
|
<Toaster position="top-center" />
|
|
</>
|
|
);
|
|
}
|