Files
claude-code-haha/site/index.html
T
程序员阿江(Relakkes) 5e156ec03e chore(site): 文档站自定义域名切换到 cchaha.ai
把 9 个文件里的 11 处 claudecode-haha.relakkesyang.org 换成 cchaha.ai。
apex 走 Cloudflare CNAME flattening,www 由 GitHub 自动 301 到裸域名。

- docs/public/CNAME 与 prepare-static-output.mjs 的 expectedCustomDomain
  必须同步:后者是硬校验,不一致会让 postbuild 直接 throw、Pages 发不出去。
  它同时驱动 canonical / hreflang / og:url / sitemap.xml / robots.txt。
- meta.js 的 SITE_ORIGIN 管前端运行时那一份同名标签。
- AGENTS.md 里的契约描述一并更新,否则后续改动会照旧域名回退。
- 桌面端 IM 文档跳转链接及其测试断言。

验证:site build 通过(78 路由 + 74 重定向)、check:docs 通过(78 页 323 链接)、
sitemap 80 条 loc 全为新域名、AdapterSettings 6 tests passed。
2026-07-28 13:15:56 +08:00

46 lines
2.3 KiB
HTML

<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)">
<meta name="theme-color" content="#201d17" media="(prefers-color-scheme: dark)">
<meta name="description" content="Claude Code Haha — Claude Code 的本地优先桌面客户端。会话、改动、Agent、定时任务都摆在明处,接哪个模型你说了算。">
<link rel="icon" href="/images/app-icon.png" type="image/png">
<link rel="preload" href="/fonts/inter-latin.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="/fonts/noto-serif-sc-latin.woff2" as="font" type="font/woff2" crossorigin>
<meta property="og:type" content="website">
<meta property="og:site_name" content="Claude Code Haha">
<meta property="og:title" content="Claude Code Haha — Claude Code 的本地优先桌面客户端">
<meta property="og:description" content="会话、改动、Agent、定时任务都摆在明处。接哪个模型你说了算,改哪一行你点头才算。">
<meta property="og:image" content="https://cchaha.ai/images/banner.png">
<meta name="twitter:card" content="summary_large_image">
<title>Claude Code Haha — Claude Code 的本地优先桌面客户端</title>
<script>
// 首帧就把主题定下来,避免深色偏好的用户先闪一下白屏。
(function () {
try {
var stored = localStorage.getItem('cch-theme')
var theme = stored === 'dark' || stored === 'light'
? stored
: (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')
document.documentElement.dataset.theme = theme
} catch (error) {
document.documentElement.dataset.theme = 'light'
}
})()
</script>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-D42DM82263"></script>
<script>
window.dataLayer = window.dataLayer || []
function gtag(){dataLayer.push(arguments)}
gtag('js', new Date())
gtag('config', 'G-D42DM82263')
</script>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.jsx"></script>
</body>
</html>