feat: Comprehensive hanzo.app landing page and auto-releases
- Created hanzo.app landing page as central download hub - Added download options for all platforms: - Desktop apps (Windows, macOS, Linux) - Mobile apps (iOS, Android) - Browser extensions (Chrome, Firefox, Edge, Safari) - IDE extensions (VS Code, JetBrains) - CLI tools (dev, MCP server) - Cloud platform access - Updated CI/CD to create automatic nightly releases - Added Vercel deployment workflow - Created vercel.json with routing and redirects - Added npm scripts for preview and deployment - Landing page features: - Modern dark design with animations - Platform-specific download buttons - Quick start guide - Copy-to-clipboard for CLI commands - Responsive grid layout - All download links point to GitHub releases or official stores
This commit is contained in:
@@ -204,6 +204,10 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Generate build number
|
||||
id: buildnumber
|
||||
run: echo "build_number=$(date +'%Y%m%d.%H%M%S')" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Download artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
@@ -211,8 +215,10 @@ jobs:
|
||||
|
||||
- name: Create Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
with:
|
||||
tag_name: nightly-${{ steps.buildnumber.outputs.build_number }}
|
||||
name: Nightly Build ${{ steps.buildnumber.outputs.build_number }}
|
||||
prerelease: true
|
||||
files: |
|
||||
artifacts/vscode-extension/*.vsix
|
||||
artifacts/jetbrains-plugin/*.zip
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
name: Deploy Landing Pages
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
paths:
|
||||
- 'landing.html'
|
||||
- 'hanzo-app.html'
|
||||
- '.github/workflows/deploy-landing.yml'
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Vercel CLI
|
||||
run: npm install -g vercel
|
||||
|
||||
- name: Prepare deployment directory
|
||||
run: |
|
||||
mkdir -p deploy
|
||||
cp hanzo-app.html deploy/index.html
|
||||
cp landing.html deploy/dev.html
|
||||
|
||||
# Create vercel.json
|
||||
cat > deploy/vercel.json << EOF
|
||||
{
|
||||
"rewrites": [
|
||||
{ "source": "/dev", "destination": "/dev.html" },
|
||||
{ "source": "/", "destination": "/index.html" }
|
||||
],
|
||||
"headers": [
|
||||
{
|
||||
"source": "/(.*)",
|
||||
"headers": [
|
||||
{ "key": "X-Content-Type-Options", "value": "nosniff" },
|
||||
{ "key": "X-Frame-Options", "value": "DENY" },
|
||||
{ "key": "X-XSS-Protection", "value": "1; mode=block" }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
EOF
|
||||
|
||||
- name: Deploy to Vercel
|
||||
env:
|
||||
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
|
||||
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
|
||||
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
|
||||
run: |
|
||||
cd deploy
|
||||
vercel --prod --token $VERCEL_TOKEN
|
||||
@@ -266,9 +266,34 @@ Dev automatically assigns the right AI tool for each role:
|
||||
- **Git worktree support** for conflict-free development
|
||||
- **Framework-aware** code generation
|
||||
|
||||
## 🌐 Landing Pages
|
||||
|
||||
### hanzo.app - Download Hub
|
||||
Access Hanzo from any platform:
|
||||
- **Desktop Apps**: Windows, macOS, Linux
|
||||
- **Mobile Apps**: iOS, Android
|
||||
- **Browser Extensions**: Chrome, Firefox, Edge, Safari
|
||||
- **IDE Extensions**: VS Code, JetBrains
|
||||
- **CLI Tools**: Dev CLI, MCP Server
|
||||
- **Cloud Platform**: cloud.hanzo.ai
|
||||
|
||||
Visit [hanzo.app](https://hanzo.app) to download.
|
||||
|
||||
### Local Preview
|
||||
```bash
|
||||
npm run preview
|
||||
# Visit http://localhost:3000
|
||||
```
|
||||
|
||||
### Deployment
|
||||
```bash
|
||||
npm run deploy # Deploy to production
|
||||
npm run deploy:preview # Deploy preview
|
||||
```
|
||||
|
||||
## 🔗 Links
|
||||
|
||||
🚀 **[Login to Hanzo AI](https://iam.hanzo.ai)** | 🌐 **[Hanzo AI](https://hanzo.ai)** | 📖 **[Docs](https://docs.hanzo.ai)** | 💬 **[Discord](https://discord.gg/hanzoai)**
|
||||
🚀 **[Login to Hanzo AI](https://iam.hanzo.ai)** | 🌐 **[Hanzo AI](https://hanzo.ai)** | 📖 **[Docs](https://docs.hanzo.ai)** | 💬 **[Discord](https://discord.gg/hanzoai)** | 📱 **[Download Apps](https://hanzo.app)**
|
||||
|
||||
---
|
||||
|
||||
|
||||
+720
@@ -0,0 +1,720 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Hanzo - AI Development Platform for Every Device</title>
|
||||
<style>
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
:root {
|
||||
--primary: #ff0080;
|
||||
--secondary: #7928ca;
|
||||
--dark: #000;
|
||||
--darker: #0a0a0a;
|
||||
--gray: #888;
|
||||
--light-gray: #ccc;
|
||||
--border: #222;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||
background: var(--dark);
|
||||
color: #fff;
|
||||
line-height: 1.6;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
header {
|
||||
padding: 20px 0;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
background: rgba(0, 0, 0, 0.95);
|
||||
backdrop-filter: blur(20px);
|
||||
z-index: 1000;
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
|
||||
nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.logo {
|
||||
font-size: 28px;
|
||||
font-weight: 900;
|
||||
background: linear-gradient(135deg, var(--primary), var(--secondary));
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
}
|
||||
|
||||
.nav-links {
|
||||
display: flex;
|
||||
gap: 30px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.nav-links a {
|
||||
color: var(--light-gray);
|
||||
text-decoration: none;
|
||||
transition: color 0.3s;
|
||||
}
|
||||
|
||||
.nav-links a:hover {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.hero {
|
||||
padding: 120px 0 80px;
|
||||
text-align: center;
|
||||
background: radial-gradient(circle at 50% 0%, #1a0033 0%, var(--dark) 50%);
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 64px;
|
||||
font-weight: 900;
|
||||
margin-bottom: 20px;
|
||||
background: linear-gradient(135deg, #fff, var(--gray));
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
line-height: 1.1;
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
font-size: 24px;
|
||||
color: var(--gray);
|
||||
margin-bottom: 50px;
|
||||
max-width: 600px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.download-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
||||
gap: 20px;
|
||||
margin: 80px 0;
|
||||
max-width: 1000px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.download-card {
|
||||
background: var(--darker);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 16px;
|
||||
padding: 30px;
|
||||
text-align: center;
|
||||
transition: all 0.3s;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.download-card::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 3px;
|
||||
background: linear-gradient(135deg, var(--primary), var(--secondary));
|
||||
transform: scaleX(0);
|
||||
transition: transform 0.3s;
|
||||
}
|
||||
|
||||
.download-card:hover {
|
||||
transform: translateY(-5px);
|
||||
border-color: #444;
|
||||
}
|
||||
|
||||
.download-card:hover::before {
|
||||
transform: scaleX(1);
|
||||
}
|
||||
|
||||
.download-icon {
|
||||
font-size: 48px;
|
||||
margin-bottom: 20px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.download-title {
|
||||
font-size: 24px;
|
||||
font-weight: 700;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.download-desc {
|
||||
color: var(--gray);
|
||||
margin-bottom: 20px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.download-buttons {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.btn {
|
||||
padding: 12px 24px;
|
||||
border-radius: 8px;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
transition: all 0.3s;
|
||||
cursor: pointer;
|
||||
border: none;
|
||||
font-size: 14px;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background: linear-gradient(135deg, var(--primary), var(--secondary));
|
||||
color: white;
|
||||
}
|
||||
|
||||
.btn-primary:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 10px 30px rgba(255, 0, 128, 0.3);
|
||||
}
|
||||
|
||||
.btn-secondary {
|
||||
background: transparent;
|
||||
color: white;
|
||||
border: 1px solid #333;
|
||||
}
|
||||
|
||||
.btn-secondary:hover {
|
||||
border-color: #666;
|
||||
background: #111;
|
||||
}
|
||||
|
||||
.btn-small {
|
||||
padding: 8px 16px;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.platform-badge {
|
||||
display: inline-block;
|
||||
padding: 4px 12px;
|
||||
background: #111;
|
||||
border-radius: 20px;
|
||||
font-size: 12px;
|
||||
color: var(--gray);
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.feature-section {
|
||||
padding: 80px 0;
|
||||
background: #050505;
|
||||
}
|
||||
|
||||
.feature-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
||||
gap: 40px;
|
||||
margin-top: 50px;
|
||||
}
|
||||
|
||||
.feature {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.feature-icon {
|
||||
font-size: 48px;
|
||||
margin-bottom: 20px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.feature-title {
|
||||
font-size: 20px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.feature-desc {
|
||||
color: var(--gray);
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.quickstart {
|
||||
padding: 80px 0;
|
||||
background: var(--dark);
|
||||
}
|
||||
|
||||
.quickstart-content {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.code-block {
|
||||
background: var(--darker);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 12px;
|
||||
padding: 25px;
|
||||
margin: 30px 0;
|
||||
font-family: 'Monaco', 'Consolas', monospace;
|
||||
font-size: 14px;
|
||||
text-align: left;
|
||||
position: relative;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.code-block::before {
|
||||
content: attr(data-lang);
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
font-size: 12px;
|
||||
color: #666;
|
||||
font-family: -apple-system, sans-serif;
|
||||
}
|
||||
|
||||
.code-comment {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.code-string {
|
||||
color: #0ff;
|
||||
}
|
||||
|
||||
.section-title {
|
||||
font-size: 48px;
|
||||
text-align: center;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.section-subtitle {
|
||||
font-size: 20px;
|
||||
color: var(--gray);
|
||||
text-align: center;
|
||||
max-width: 600px;
|
||||
margin: 0 auto 50px;
|
||||
}
|
||||
|
||||
footer {
|
||||
padding: 60px 0 40px;
|
||||
background: var(--dark);
|
||||
border-top: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.footer-content {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
||||
gap: 40px;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.footer-section h4 {
|
||||
margin-bottom: 20px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.footer-links {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.footer-links li {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.footer-links a {
|
||||
color: var(--gray);
|
||||
text-decoration: none;
|
||||
transition: color 0.3s;
|
||||
}
|
||||
|
||||
.footer-links a:hover {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.footer-bottom {
|
||||
text-align: center;
|
||||
color: #666;
|
||||
padding-top: 40px;
|
||||
border-top: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.coming-soon {
|
||||
display: inline-block;
|
||||
padding: 2px 8px;
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
border-radius: 4px;
|
||||
font-size: 11px;
|
||||
margin-left: 5px;
|
||||
color: var(--gray);
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
h1 { font-size: 48px; }
|
||||
.nav-links { display: none; }
|
||||
.download-grid { grid-template-columns: 1fr; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<nav class="container">
|
||||
<div class="logo">Hanzo</div>
|
||||
<div class="nav-links">
|
||||
<a href="https://docs.hanzo.ai">Docs</a>
|
||||
<a href="https://github.com/hanzoai">GitHub</a>
|
||||
<a href="https://cloud.hanzo.ai/login" class="btn btn-secondary btn-small">Login</a>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<section class="hero">
|
||||
<div class="container">
|
||||
<h1>AI Development<br>Everywhere You Code</h1>
|
||||
<p class="subtitle">Access Hanzo's parallel AI agents from desktop, mobile, browser, IDE, or command line. One platform, endless possibilities.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="downloads">
|
||||
<div class="container">
|
||||
<div class="download-grid">
|
||||
<!-- Desktop App -->
|
||||
<div class="download-card">
|
||||
<span class="download-icon">🖥️</span>
|
||||
<h3 class="download-title">Desktop App</h3>
|
||||
<span class="platform-badge">Windows • macOS • Linux</span>
|
||||
<p class="download-desc">Native desktop experience with full system integration</p>
|
||||
<div class="download-buttons">
|
||||
<a href="https://github.com/hanzoai/desktop/releases/latest/download/hanzo-macos.dmg" class="btn btn-primary">
|
||||
<span>🍎</span> Download for macOS
|
||||
</a>
|
||||
<a href="https://github.com/hanzoai/desktop/releases/latest/download/hanzo-windows.exe" class="btn btn-secondary">
|
||||
<span>🪟</span> Windows
|
||||
</a>
|
||||
<a href="https://github.com/hanzoai/desktop/releases/latest/download/hanzo-linux.AppImage" class="btn btn-secondary">
|
||||
<span>🐧</span> Linux
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Mobile Apps -->
|
||||
<div class="download-card">
|
||||
<span class="download-icon">📱</span>
|
||||
<h3 class="download-title">Mobile Apps</h3>
|
||||
<span class="platform-badge">iOS • Android</span>
|
||||
<p class="download-desc">AI assistance on the go with mobile optimization</p>
|
||||
<div class="download-buttons">
|
||||
<a href="https://apps.apple.com/app/hanzo-ai" class="btn btn-primary">
|
||||
<span>📱</span> App Store
|
||||
</a>
|
||||
<a href="https://play.google.com/store/apps/details?id=ai.hanzo.app" class="btn btn-secondary">
|
||||
<span>🤖</span> Google Play
|
||||
</a>
|
||||
<a href="https://hanzo.ai/mobile" class="btn btn-secondary">
|
||||
<span>🌐</span> Web App
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Browser Extension -->
|
||||
<div class="download-card">
|
||||
<span class="download-icon">🌐</span>
|
||||
<h3 class="download-title">Browser Extension</h3>
|
||||
<span class="platform-badge">Chrome • Firefox • Edge • Safari</span>
|
||||
<p class="download-desc">AI assistance while browsing and researching</p>
|
||||
<div class="download-buttons">
|
||||
<a href="https://chrome.google.com/webstore/detail/hanzo-ai" class="btn btn-primary">
|
||||
<span>🔵</span> Chrome Web Store
|
||||
</a>
|
||||
<a href="https://addons.mozilla.org/addon/hanzo-ai" class="btn btn-secondary">
|
||||
<span>🦊</span> Firefox
|
||||
</a>
|
||||
<a href="https://microsoftedge.microsoft.com/addons/detail/hanzo-ai" class="btn btn-secondary">
|
||||
<span>🔷</span> Edge
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- VS Code Extension -->
|
||||
<div class="download-card">
|
||||
<span class="download-icon">💻</span>
|
||||
<h3 class="download-title">VS Code Extension</h3>
|
||||
<span class="platform-badge">Visual Studio Code</span>
|
||||
<p class="download-desc">Deep IDE integration with IntelliSense support</p>
|
||||
<div class="download-buttons">
|
||||
<a href="vscode:extension/hanzo-ai.hanzo-ai" class="btn btn-primary">
|
||||
<span>⚡</span> Install in VS Code
|
||||
</a>
|
||||
<a href="https://marketplace.visualstudio.com/items?itemName=hanzo-ai.hanzo-ai" class="btn btn-secondary">
|
||||
<span>🛍️</span> Marketplace
|
||||
</a>
|
||||
<a href="https://github.com/hanzoai/extension/releases/latest/download/hanzo-ai.vsix" class="btn btn-secondary">
|
||||
<span>📦</span> Download VSIX
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- JetBrains Plugin -->
|
||||
<div class="download-card">
|
||||
<span class="download-icon">🧩</span>
|
||||
<h3 class="download-title">JetBrains Plugin</h3>
|
||||
<span class="platform-badge">IntelliJ • PyCharm • WebStorm</span>
|
||||
<p class="download-desc">Full JetBrains IDE integration</p>
|
||||
<div class="download-buttons">
|
||||
<a href="https://plugins.jetbrains.com/plugin/12345-hanzo-ai" class="btn btn-primary">
|
||||
<span>🔌</span> Install Plugin
|
||||
</a>
|
||||
<a href="https://github.com/hanzoai/extension/releases/latest/download/hanzo-jetbrains.zip" class="btn btn-secondary">
|
||||
<span>📦</span> Download ZIP
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- CLI Tool -->
|
||||
<div class="download-card">
|
||||
<span class="download-icon">⌨️</span>
|
||||
<h3 class="download-title">Dev CLI</h3>
|
||||
<span class="platform-badge">Terminal • Command Line</span>
|
||||
<p class="download-desc">Powerful CLI for automation and scripting</p>
|
||||
<div class="download-buttons">
|
||||
<button class="btn btn-primary" onclick="copyCommand('npm install -g @hanzo/dev')">
|
||||
<span>📋</span> npm install -g @hanzo/dev
|
||||
</button>
|
||||
<button class="btn btn-secondary" onclick="copyCommand('brew install hanzo-dev')">
|
||||
<span>🍺</span> brew install
|
||||
</button>
|
||||
<a href="https://github.com/hanzoai/extension#cli" class="btn btn-secondary">
|
||||
<span>📚</span> CLI Docs
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- MCP Server -->
|
||||
<div class="download-card">
|
||||
<span class="download-icon">🔧</span>
|
||||
<h3 class="download-title">MCP Server</h3>
|
||||
<span class="platform-badge">Model Context Protocol</span>
|
||||
<p class="download-desc">Use with Claude Desktop and MCP-compatible tools</p>
|
||||
<div class="download-buttons">
|
||||
<button class="btn btn-primary" onclick="copyCommand('npm install -g @hanzo/mcp')">
|
||||
<span>📋</span> npm install -g @hanzo/mcp
|
||||
</button>
|
||||
<button class="btn btn-secondary" onclick="copyCommand('npx @hanzo/mcp configure')">
|
||||
<span>⚙️</span> Configure
|
||||
</button>
|
||||
<a href="https://docs.hanzo.ai/mcp" class="btn btn-secondary">
|
||||
<span>📚</span> MCP Docs
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Cloud Platform -->
|
||||
<div class="download-card">
|
||||
<span class="download-icon">☁️</span>
|
||||
<h3 class="download-title">Cloud Platform</h3>
|
||||
<span class="platform-badge">Web • API • Teams</span>
|
||||
<p class="download-desc">Web-based access with team collaboration</p>
|
||||
<div class="download-buttons">
|
||||
<a href="https://cloud.hanzo.ai" class="btn btn-primary">
|
||||
<span>🚀</span> Launch Cloud App
|
||||
</a>
|
||||
<a href="https://cloud.hanzo.ai/signup" class="btn btn-secondary">
|
||||
<span>✨</span> Start Free Trial
|
||||
</a>
|
||||
<a href="https://docs.hanzo.ai/api" class="btn btn-secondary">
|
||||
<span>🔌</span> API Docs
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Additional Platforms -->
|
||||
<div class="download-card">
|
||||
<span class="download-icon">✨</span>
|
||||
<h3 class="download-title">More Platforms</h3>
|
||||
<span class="platform-badge">Coming Soon</span>
|
||||
<p class="download-desc">Expanding to more platforms</p>
|
||||
<div class="download-buttons">
|
||||
<button class="btn btn-secondary" disabled>
|
||||
<span>📝</span> Cursor <span class="coming-soon">Soon</span>
|
||||
</button>
|
||||
<button class="btn btn-secondary" disabled>
|
||||
<span>🌊</span> Windsurf <span class="coming-soon">Soon</span>
|
||||
</button>
|
||||
<button class="btn btn-secondary" disabled>
|
||||
<span>✏️</span> Sublime <span class="coming-soon">Soon</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="quickstart">
|
||||
<div class="container">
|
||||
<div class="quickstart-content">
|
||||
<h2 class="section-title">Quick Start in 30 Seconds</h2>
|
||||
<p class="section-subtitle">Choose your preferred method and start shipping faster</p>
|
||||
|
||||
<div class="code-block" data-lang="bash">
|
||||
<span class="code-comment"># Option 1: CLI (Recommended)</span>
|
||||
npm install -g @hanzo/dev
|
||||
dev login
|
||||
dev enhance <span class="code-string">"add user authentication"</span>
|
||||
|
||||
<span class="code-comment"># Option 2: MCP Server for Claude Desktop</span>
|
||||
npm install -g @hanzo/mcp
|
||||
npx @hanzo/mcp configure
|
||||
|
||||
<span class="code-comment"># Option 3: Cloud Platform</span>
|
||||
<span class="code-comment"># Visit cloud.hanzo.ai and sign up</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="feature-section">
|
||||
<div class="container">
|
||||
<h2 class="section-title">One Platform, Every Device</h2>
|
||||
<p class="section-subtitle">Access the same powerful AI capabilities anywhere you work</p>
|
||||
|
||||
<div class="feature-grid">
|
||||
<div class="feature">
|
||||
<span class="feature-icon">⚡</span>
|
||||
<h3 class="feature-title">Parallel AI Agents</h3>
|
||||
<p class="feature-desc">Run 100+ AI agents simultaneously for instant results</p>
|
||||
</div>
|
||||
|
||||
<div class="feature">
|
||||
<span class="feature-icon">🧠</span>
|
||||
<h3 class="feature-title">Unified Memory</h3>
|
||||
<p class="feature-desc">Your entire codebase indexed and accessible</p>
|
||||
</div>
|
||||
|
||||
<div class="feature">
|
||||
<span class="feature-icon">🔄</span>
|
||||
<h3 class="feature-title">Cross-Device Sync</h3>
|
||||
<p class="feature-desc">Seamless experience across all your devices</p>
|
||||
</div>
|
||||
|
||||
<div class="feature">
|
||||
<span class="feature-icon">🤖</span>
|
||||
<h3 class="feature-title">200+ AI Models</h3>
|
||||
<p class="feature-desc">Access every major AI model through one interface</p>
|
||||
</div>
|
||||
|
||||
<div class="feature">
|
||||
<span class="feature-icon">🔧</span>
|
||||
<h3 class="feature-title">4000+ MCP Tools</h3>
|
||||
<p class="feature-desc">File ops, search, browser automation, and more</p>
|
||||
</div>
|
||||
|
||||
<div class="feature">
|
||||
<span class="feature-icon">👥</span>
|
||||
<h3 class="feature-title">Team Collaboration</h3>
|
||||
<p class="feature-desc">Share context and work together efficiently</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<footer>
|
||||
<div class="container">
|
||||
<div class="footer-content">
|
||||
<div class="footer-section">
|
||||
<h4>Products</h4>
|
||||
<ul class="footer-links">
|
||||
<li><a href="https://github.com/hanzoai/desktop">Desktop App</a></li>
|
||||
<li><a href="https://hanzo.ai/mobile">Mobile Apps</a></li>
|
||||
<li><a href="https://marketplace.visualstudio.com/items?itemName=hanzo-ai.hanzo-ai">VS Code Extension</a></li>
|
||||
<li><a href="https://cloud.hanzo.ai">Cloud Platform</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="footer-section">
|
||||
<h4>Developers</h4>
|
||||
<ul class="footer-links">
|
||||
<li><a href="https://docs.hanzo.ai">Documentation</a></li>
|
||||
<li><a href="https://docs.hanzo.ai/api">API Reference</a></li>
|
||||
<li><a href="https://github.com/hanzoai">GitHub</a></li>
|
||||
<li><a href="https://status.hanzo.ai">Status</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="footer-section">
|
||||
<h4>Company</h4>
|
||||
<ul class="footer-links">
|
||||
<li><a href="https://hanzo.ai/about">About</a></li>
|
||||
<li><a href="https://hanzo.ai/blog">Blog</a></li>
|
||||
<li><a href="https://hanzo.ai/careers">Careers</a></li>
|
||||
<li><a href="https://hanzo.ai/contact">Contact</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="footer-section">
|
||||
<h4>Support</h4>
|
||||
<ul class="footer-links">
|
||||
<li><a href="https://discord.gg/hanzoai">Discord Community</a></li>
|
||||
<li><a href="https://github.com/hanzoai/extension/issues">Report Issues</a></li>
|
||||
<li><a href="https://docs.hanzo.ai/faq">FAQ</a></li>
|
||||
<li><a href="mailto:support@hanzo.ai">Email Support</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="footer-bottom">
|
||||
<p>© 2024 Hanzo AI. Ship faster on every platform.</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
function copyCommand(command) {
|
||||
navigator.clipboard.writeText(command).then(() => {
|
||||
const btn = event.target.closest('.btn');
|
||||
const originalText = btn.innerHTML;
|
||||
btn.innerHTML = '<span>✅</span> Copied!';
|
||||
setTimeout(() => {
|
||||
btn.innerHTML = originalText;
|
||||
}, 2000);
|
||||
});
|
||||
}
|
||||
|
||||
// Add smooth scrolling
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener('click', function (e) {
|
||||
e.preventDefault();
|
||||
document.querySelector(this.getAttribute('href')).scrollIntoView({
|
||||
behavior: 'smooth'
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// Add animation on scroll
|
||||
const observerOptions = {
|
||||
threshold: 0.1,
|
||||
rootMargin: '0px 0px -100px 0px'
|
||||
};
|
||||
|
||||
const observer = new IntersectionObserver((entries) => {
|
||||
entries.forEach(entry => {
|
||||
if (entry.isIntersecting) {
|
||||
entry.target.style.opacity = '1';
|
||||
entry.target.style.transform = 'translateY(0)';
|
||||
}
|
||||
});
|
||||
}, observerOptions);
|
||||
|
||||
document.querySelectorAll('.download-card, .feature').forEach(el => {
|
||||
el.style.opacity = '0';
|
||||
el.style.transform = 'translateY(20px)';
|
||||
el.style.transition = 'opacity 0.6s, transform 0.6s';
|
||||
observer.observe(el);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+4
-1
@@ -282,7 +282,10 @@
|
||||
"publish:npm": "npm run build:claude-desktop && cd dist/claude-desktop && npm publish",
|
||||
"dev": "cross-env VSCODE_ENV=development npm run watch",
|
||||
"dev:mcp": "cross-env MCP_TRANSPORT=stdio node ./out/mcp-server-standalone.js",
|
||||
"start:prod": "cross-env VSCODE_ENV=production npm run watch"
|
||||
"start:prod": "cross-env VSCODE_ENV=production npm run watch",
|
||||
"preview": "npx serve . -p 3000",
|
||||
"deploy": "vercel --prod",
|
||||
"deploy:preview": "vercel"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/better-sqlite3": "^7.6.13",
|
||||
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"rewrites": [
|
||||
{ "source": "/dev", "destination": "/landing.html" },
|
||||
{ "source": "/", "destination": "/hanzo-app.html" }
|
||||
],
|
||||
"headers": [
|
||||
{
|
||||
"source": "/(.*)",
|
||||
"headers": [
|
||||
{ "key": "X-Content-Type-Options", "value": "nosniff" },
|
||||
{ "key": "X-Frame-Options", "value": "DENY" },
|
||||
{ "key": "X-XSS-Protection", "value": "1; mode=block" },
|
||||
{ "key": "Referrer-Policy", "value": "strict-origin-when-cross-origin" }
|
||||
]
|
||||
}
|
||||
],
|
||||
"redirects": [
|
||||
{
|
||||
"source": "/download/vscode",
|
||||
"destination": "https://marketplace.visualstudio.com/items?itemName=hanzo-ai.hanzo-ai",
|
||||
"permanent": false
|
||||
},
|
||||
{
|
||||
"source": "/download/jetbrains",
|
||||
"destination": "https://github.com/hanzoai/extension/releases/latest",
|
||||
"permanent": false
|
||||
},
|
||||
{
|
||||
"source": "/github",
|
||||
"destination": "https://github.com/hanzoai/extension",
|
||||
"permanent": false
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user