Files
openclaude/web/index.html
4eb486ef83 Feat/web landing refresh (#958)
* feat(web): openclaude landing — runs anywhere, uses anything

A new marketing site for openclaude under web/, plus the minimal root
infrastructure to build, ignore, and gate it without affecting the
published npm package.

Landing page (web/)
- Vite + React 19 with monospace gitlawb typography (sf mono / fira code).
- Hero: pill, two-line wordmark "runs anywhere. / uses anything.",
  copy-to-clipboard install command, github cta.
- Six feature rows in hermes-style "title — sentence" format on hairline
  dividers (any model, real tools, profiles per repo, streaming,
  gateway routing, editor + server modes).
- Install block: same copyable command + three numbered steps.
- One-line footer with brand, version, gitlawb link, and license.
- Light theme is the default with a no-flash bootstrap script and a
  ☀ / ☾ toggle persisted to localStorage.
- New orange terminal-face logo at 36px in the nav.
- Body wash: dual orange radial gradients for warmth on both themes.

Root infra
- web/ excluded from npm publish via .npmignore (belt-and-suspenders
  alongside the existing files whitelist).
- web/ excluded from docker context (.dockerignore).
- web:dev / web:build / web:preview / web:typecheck scripts in
  package.json that delegate via --cwd web (no root deps added).
- web typecheck + build added to the pr-checks workflow.
- web/dist/ and web/*.tsbuildinfo ignored.

Co-Authored-By: OpenClaude <openclaude@gitlawb.com>

* added vercel in .gitignore

---------

Co-authored-by: OpenClaude <openclaude@gitlawb.com>
2026-04-30 18:22:01 +08:00

41 lines
2.1 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<meta name="description" content="openclaude — runs anywhere, uses anything. open source, model-neutral, terminal-first. by gitlawb." />
<meta name="theme-color" content="#fafaf7" />
<meta name="color-scheme" content="light dark" />
<meta property="og:title" content="openclaude — runs anywhere, uses anything" />
<meta property="og:description" content="not a chatbot wrapper or another ide plugin. an open coding agent that runs in your terminal, talks to any model, and keeps every change reviewable." />
<meta property="og:type" content="website" />
<meta property="og:site_name" content="openclaude" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="openclaude — runs anywhere, uses anything" />
<meta name="twitter:description" content="not a chatbot wrapper or another ide plugin. open coding agents in your terminal, on any model." />
<title>openclaude — runs anywhere, uses anything</title>
<link rel="icon" type="image/png" href="/openclaude.png" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600;700&display=swap" />
<script>
// Theme bootstrap — runs before paint to prevent flash.
// Default is light; user toggle is honored via localStorage.
(function () {
try {
var stored = localStorage.getItem('openclaude-theme');
var theme = stored === 'dark' || stored === 'light' ? stored : 'light';
document.documentElement.dataset.theme = theme;
document.documentElement.style.colorScheme = theme;
} catch (_) {
document.documentElement.dataset.theme = 'light';
}
})();
</script>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>