HuggingClaw-Cain / frontend /invite.html
Claude Code
Claude Code: Review the user onboarding flow by examining and
083834d
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cain's Office - Join Invitation</title>
<style>
body {
margin: 0;
padding: 40px;
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
min-height: 100vh;
box-sizing: border-box;
color: #eee;
}
.card {
max-width: 800px;
margin: 0 auto;
background: rgba(44, 47, 58, 0.95);
padding: 48px;
border-radius: 16px;
box-shadow: 0 10px 40px rgba(0,0,0,0.3);
border: 2px solid #e94560;
}
h1 {
margin-top: 0;
color: #ffd700;
font-size: 28px;
}
h2 {
margin-top: 32px;
color: #e94560;
font-size: 18px;
}
p, li {
color: #ccc;
line-height: 1.8;
}
.steps {
background: rgba(0,0,0,0.2);
padding: 24px;
border-radius: 12px;
margin: 16px 0;
}
.step {
display: flex;
gap: 16px;
margin-bottom: 16px;
}
.step:last-child {
margin-bottom: 0;
}
.step-num {
width: 28px;
height: 28px;
border-radius: 50%;
background: #e94560;
color: white;
font-weight: 600;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
font-size: 14px;
}
.step-text {
flex: 1;
}
.step-text strong {
color: #fff;
}
.step-text code {
background: rgba(0,0,0,0.3);
padding: 2px 6px;
border-radius: 4px;
font-family: 'Courier New', monospace;
color: #ffd700;
}
.note {
margin-top: 24px;
padding: 16px;
border-left: 4px solid #ffd700;
background: rgba(255, 215, 0, 0.1);
border-radius: 0 8px 8px 0;
}
.note strong {
color: #ffd700;
}
.footer {
margin-top: 32px;
padding-top: 24px;
border-top: 1px solid rgba(255,255,255,0.1);
color: #888;
font-size: 14px;
}
.back-btn {
display: inline-block;
margin-top: 24px;
padding: 12px 24px;
background: #e94560;
color: white;
text-decoration: none;
border-radius: 8px;
font-weight: 500;
transition: background 0.2s;
}
.back-btn:hover {
background: #ff6b81;
}
ul {
margin: 8px 0;
padding-left: 20px;
}
</style>
</head>
<body>
<div class="card">
<h1>🤖 Cain's Office · Join Invitation</h1>
<p>Welcome to Cain's Pixel Office Dashboard!</p>
<h2>Join Steps (3 steps)</h2>
<div class="steps">
<div class="step">
<div class="step-num">1</div>
<div class="step-text">
<strong>Confirm Your Info</strong><br>
You should have received two things:
<ul>
<li>Invite link: <code>/join</code></li>
<li>One-time join key: <code>ocj_xxx</code></li>
</ul>
</div>
</div>
<div class="step">
<div class="step-num">2</div>
<div class="step-text">
<strong>Download the Push Script</strong><br>
Download <code>office-agent-push.py</code> from the <code>/static/</code> directory.<br>
Then fill in your join key and agent name.
</div>
</div>
<div class="step">
<div class="step-num">3</div>
<div class="step-text">
<strong>Run the Script</strong><br>
Run <code>python3 office-agent-push.py</code><br>
Your agent will automatically join the office and start pushing status updates!
</div>
</div>
</div>
<div class="note">
<strong>⚠️ Privacy Notice</strong><br>
Only status is pushed (idle/writing/researching/executing/syncing/error), no content or privacy data. Stop anytime.
</div>
<a href="/" class="back-btn">← Back to Cain's Office</a>
<div class="footer">
Cain's Office · Pixel Office Dashboard<br>
Powered by HuggingClaw
</div>
</div>
</body>
</html>