Theia rip-out (parent):
- Remove theia submodule entry (the local fork, Gitea repo, Coolify app,
Cloud Run services, and Artifact Registry image are all gone)
- Drop README.md + INFRASTRUCTURE.md (obsolete "Project OS" snapshots
that also leaked API tokens) and setup.sh (Theia clone bootstrap)
- Delete UI-DESIGN-GUIDE.md, BACKEND_AGENTS_PLAN.md, VIBN_BUILD_PLAN.md,
VISUAL_EDITOR_PLAN.md, core-packages.md, ai-packages.md, tools-list.md
(all 100% Theia-specific or superseded)
- Surgical scrubs of remaining Theia mentions in
AGENT_EXECUTION_ARCHITECTURE.md and TURBOREPO_MIGRATION_PLAN.md
Submodule bumps:
- vibn-agent-runner: Theia rip-out + MCP refactor (api/wrapper/server
pattern across shell/file/git/memory/prd/search/agent/gitea/coolify)
- vibn-frontend: Theia rip-out + P5.1 attach E2E + Justine UI WIP
Retire platform/ scaffold:
- Remove platform/backend/ (control-plane, executors, mcp-adapter),
platform/client-ide/ (gcp-productos extension), platform/contracts/,
platform/infra/terraform/, platform/scripts/templates/turborepo/
(replaced by vibn-agent-runner + vibn-frontend + Coolify direct)
- Drop architecture.md, technical_spec.md, vision-ext.md,
"1.Generate Control Plane API scaffold.md" (same era)
Docs / planning snapshots (new):
- AI_CAPABILITIES.md, AI_CAPABILITIES_ROADMAP.md
- AGENT_TELEMETRY_STREAMING_PROJECT.md
- VIBN_PRD.md, product-idea-a.md
Design assets (new):
- branding/{coolify,gitea,ux-testing}/ static brand collateral
- justine/ HTML mockups for the new onboarding/build flows
- preview-assist-ui/ Vite scratch app
- master-ai.code-workspace
Infra helpers (new):
- setup-coolify-montreal.sh provisioner
- gitea-docker-compose.yml
- vibn-coolify-schema.sql for the Coolify Postgres extensions
- prd-agent-prompt.pdf, prompt, root.txt, remixed-9edec9e9.tsx scratch
- flatten.sh helper
.gitignore: ignore **/node_modules, **/.next, **/.turbo, **/coverage
Made-with: Cursor
120 lines
5.7 KiB
HTML
120 lines
5.7 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="icon" href="favicon_clean.ico">
|
||
<title>Sign in – Google Accounts</title>
|
||
<link href="https://fonts.googleapis.com/css2?family=Google+Sans:wght@400;500;600&family=Roboto:wght@400;500&display=swap" rel="stylesheet">
|
||
<style>
|
||
*{box-sizing:border-box;margin:0;padding:0;}
|
||
body{font-family:'Roboto',sans-serif;background:#FFFFFF;display:flex;flex-direction:column;align-items:center;min-height:100vh;padding:40px 24px;}
|
||
|
||
.card{width:100%;max-width:400px;border:1px solid #DADCE0;border-radius:8px;padding:40px 40px 28px;display:flex;flex-direction:column;align-items:center;}
|
||
|
||
.google-logo{margin-bottom:24px;}
|
||
|
||
h1{font-family:'Google Sans',sans-serif;font-size:24px;font-weight:400;color:#202124;margin-bottom:8px;text-align:center;}
|
||
.subtitle{font-size:16px;color:#202124;margin-bottom:24px;text-align:center;}
|
||
|
||
/* Account tile */
|
||
.account-tile{width:100%;border:1px solid #DADCE0;border-radius:8px;padding:12px 16px;display:flex;align-items:center;gap:16px;cursor:pointer;transition:background 0.15s;margin-bottom:12px;}
|
||
.account-tile:hover{background:#F8F9FA;}
|
||
.avatar{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,#4285F4,#34A853);display:flex;align-items:center;justify-content:center;font-family:'Google Sans',sans-serif;font-size:16px;font-weight:500;color:#FFFFFF;flex-shrink:0;}
|
||
.account-info{flex:1;text-align:left;}
|
||
.account-name{font-family:'Google Sans',sans-serif;font-size:14px;font-weight:500;color:#202124;margin-bottom:2px;}
|
||
.account-email{font-size:13px;color:#5F6368;}
|
||
.chevron{color:#5F6368;}
|
||
|
||
/* Add account */
|
||
.add-account{width:100%;border:1px solid #DADCE0;border-radius:8px;padding:12px 16px;display:flex;align-items:center;gap:16px;cursor:pointer;transition:background 0.15s;margin-bottom:24px;}
|
||
.add-account:hover{background:#F8F9FA;}
|
||
.add-icon{width:40px;height:40px;border-radius:50%;background:#F1F3F4;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:20px;color:#5F6368;}
|
||
.add-label{font-size:14px;color:#202124;}
|
||
|
||
.divider{width:100%;height:1px;background:#E8EAED;margin-bottom:20px;}
|
||
|
||
/* Continue button */
|
||
.btn-continue{background:#1A73E8;color:#FFFFFF;border:none;border-radius:4px;padding:10px 24px;font-family:'Google Sans',sans-serif;font-size:14px;font-weight:500;cursor:pointer;transition:background 0.15s,box-shadow 0.15s;box-shadow:0 1px 2px rgba(0,0,0,0.2);}
|
||
.btn-continue:hover{background:#1765CC;box-shadow:0 2px 6px rgba(0,0,0,0.2);}
|
||
|
||
.footer{margin-top:auto;padding-top:24px;display:flex;gap:24px;justify-content:center;}
|
||
.footer a{font-size:12px;color:#5F6368;text-decoration:none;}
|
||
.footer a:hover{text-decoration:underline;}
|
||
|
||
/* Loading state */
|
||
.loading{display:none;flex-direction:column;align-items:center;gap:16px;margin-top:20px;}
|
||
.spinner{width:32px;height:32px;border:3px solid #E8EAED;border-top-color:#1A73E8;border-radius:50%;animation:spin 0.8s linear infinite;}
|
||
@keyframes spin{to{transform:rotate(360deg);}}
|
||
.loading-text{font-size:14px;color:#5F6368;}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
|
||
<div class="card">
|
||
|
||
<!-- Google logo -->
|
||
<div class="google-logo">
|
||
<svg width="75" height="24" viewBox="0 0 75 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<path d="M30.5 12.3c0-.7-.1-1.4-.2-2h-9.6v3.8h5.5c-.2 1.3-1 2.4-2.1 3.1v2.6h3.4c2-1.8 3-4.5 3-7.5z" fill="#4285F4"/>
|
||
<path d="M20.7 19.9c2.7 0 5-.9 6.7-2.4l-3.4-2.6c-.9.6-2 1-3.3 1-2.6 0-4.7-1.7-5.5-4.1H11.7v2.7c1.7 3.4 5.2 5.4 9 5.4z" fill="#34A853"/>
|
||
<path d="M15.2 11.8c-.2-.6-.3-1.2-.3-1.8s.1-1.2.3-1.8V7.5H11.7C11 8.8 10.7 10.3 10.7 12s.3 3.2 1 4.5l3.5-2.7z" fill="#FBBC05"/>
|
||
<path d="M20.7 5.9c1.4 0 2.7.5 3.7 1.5l2.8-2.8C25.7 3 23.4 2 20.7 2c-3.8 0-7.3 2-9 5.4l3.5 2.7c.8-2.4 2.9-4.2 5.5-4.2z" fill="#EA4335"/>
|
||
<text x="36" y="17" font-family="'Product Sans',Roboto,sans-serif" font-size="16" fill="#5F6368">Google</text>
|
||
</svg>
|
||
</div>
|
||
|
||
<h1>Sign in</h1>
|
||
<p class="subtitle">to continue to vibn</p>
|
||
|
||
<!-- Account selector (shown by default) -->
|
||
<div id="account-select" style="width:100%;">
|
||
<div class="account-tile" onclick="selectAccount()">
|
||
<div class="avatar">J</div>
|
||
<div class="account-info">
|
||
<div class="account-name">Jane Smith</div>
|
||
<div class="account-email">jane@gmail.com</div>
|
||
</div>
|
||
<svg class="chevron" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 18l6-6-6-6"/></svg>
|
||
</div>
|
||
|
||
<div class="add-account" onclick="selectAccount()">
|
||
<div class="add-icon">+</div>
|
||
<div class="add-label">Use another account</div>
|
||
</div>
|
||
|
||
<div class="divider"></div>
|
||
|
||
<p style="font-size:12px;color:#5F6368;text-align:center;line-height:1.6;">To continue, Google will share your name, email address, and profile picture with vibn.</p>
|
||
</div>
|
||
|
||
<!-- Loading state (shown after selection) -->
|
||
<div class="loading" id="loading">
|
||
<div class="spinner"></div>
|
||
<div class="loading-text">Signing you in…</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="footer">
|
||
<a href="#">Help</a>
|
||
<a href="#">Privacy</a>
|
||
<a href="#">Terms</a>
|
||
</div>
|
||
|
||
<script>
|
||
function selectAccount(){
|
||
// Show loading
|
||
document.getElementById('account-select').style.display='none';
|
||
document.getElementById('loading').style.display='flex';
|
||
|
||
// After brief delay, notify parent and close
|
||
setTimeout(function(){
|
||
if(window.opener){
|
||
window.opener.postMessage({type:'google-auth-success',name:'Jane Smith',email:'jane@gmail.com'},'*');
|
||
}
|
||
window.close();
|
||
}, 1000);
|
||
}
|
||
</script>
|
||
</body>
|
||
</html>
|