mirror of
https://github.com/NanmiCoder/claude-code-haha.git
synced 2026-10-10 03:43:11 +08:00
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。
This commit is contained in:
+2
-2
@@ -16,7 +16,7 @@
|
||||
[](https://github.com/NanmiCoder/cc-haha/blob/main/LICENSE)
|
||||
[](README.md)
|
||||
[](README.en.md)
|
||||
[](https://claudecode-haha.relakkesyang.org)
|
||||
[](https://cchaha.ai)
|
||||
|
||||
</div>
|
||||
|
||||
@@ -95,7 +95,7 @@ See [environment variables](docs/en/cli/env.md) and [CLI setup](docs/en/cli/inde
|
||||
|
||||
## More Documentation
|
||||
|
||||
Full documentation site: <https://claudecode-haha.relakkesyang.org>
|
||||
Full documentation site: <https://cchaha.ai>
|
||||
|
||||
| Section | Documents |
|
||||
|------|------|
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
[](https://github.com/NanmiCoder/cc-haha/blob/main/LICENSE)
|
||||
[](README.md)
|
||||
[](README.en.md)
|
||||
[](https://claudecode-haha.relakkesyang.org)
|
||||
[](https://cchaha.ai)
|
||||
|
||||
</div>
|
||||
|
||||
@@ -95,7 +95,7 @@ cp .env.example .env
|
||||
|
||||
## 更多文档
|
||||
|
||||
完整文档站:<https://claudecode-haha.relakkesyang.org>
|
||||
完整文档站:<https://cchaha.ai>
|
||||
|
||||
| 分区 | 文档 |
|
||||
|------|------|
|
||||
|
||||
@@ -8,7 +8,7 @@ import { useSettingsStore } from '../stores/settingsStore'
|
||||
import type { AdapterFileConfig } from '../types/adapter'
|
||||
|
||||
const FEISHU_CREATE_BOT_URL = 'https://open.feishu.cn/page/openclaw?form=multiAgent'
|
||||
const IM_CONFIG_DOCS_URL = 'https://claudecode-haha.relakkesyang.org/im/'
|
||||
const IM_CONFIG_DOCS_URL = 'https://cchaha.ai/im/'
|
||||
|
||||
function renderAdapterSettings(
|
||||
config: AdapterFileConfig,
|
||||
|
||||
@@ -13,7 +13,7 @@ type ImPlatform = 'telegram' | 'feishu' | 'wechat' | 'dingtalk' | 'whatsapp'
|
||||
type AdapterUnbindTarget = 'wechatAccount' | 'dingtalkBot' | 'whatsappAccount'
|
||||
|
||||
const FEISHU_CREATE_BOT_URL = 'https://open.feishu.cn/page/openclaw?form=multiAgent'
|
||||
const IM_CONFIG_DOCS_URL = 'https://claudecode-haha.relakkesyang.org/im/'
|
||||
const IM_CONFIG_DOCS_URL = 'https://cchaha.ai/im/'
|
||||
|
||||
export function AdapterSettings() {
|
||||
const t = useTranslation()
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
claudecode-haha.relakkesyang.org
|
||||
cchaha.ai
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@ These rules apply to the public landing page and documentation experience under
|
||||
|
||||
- Keep the site independently installable with `npm ci` and buildable with `npm run build`.
|
||||
- Keep `npm run check` deterministic, offline, and responsible for site-specific validation beyond compilation.
|
||||
- Preserve the GitHub Pages custom-domain contract; production assets and routes must work from the root of `claudecode-haha.relakkesyang.org`. `scripts/prepare-static-output.mjs` hard-fails when the CNAME drifts.
|
||||
- Preserve the GitHub Pages custom-domain contract; production assets and routes must work from the root of `cchaha.ai`. `scripts/prepare-static-output.mjs` hard-fails when the CNAME drifts.
|
||||
- Treat files under `docs/` as the source of truth for long-form Chinese and English documentation. Keep paired public routes aligned when both languages exist.
|
||||
- Do not copy private user state, credentials, local filesystem paths, or unredacted product screenshots into the site.
|
||||
- Run `bun run check:docs` after site or docs changes and include desktop plus narrow-mobile browser evidence for user-visible layout changes.
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@
|
||||
<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://claudecode-haha.relakkesyang.org/images/banner.png">
|
||||
<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>
|
||||
|
||||
@@ -4,7 +4,7 @@ import path from 'node:path'
|
||||
import { generateDocsManifest, paths } from './generate-docs-manifest.mjs'
|
||||
|
||||
const distDir = path.join(paths.siteDir, 'dist')
|
||||
const expectedCustomDomain = 'claudecode-haha.relakkesyang.org'
|
||||
const expectedCustomDomain = 'cchaha.ai'
|
||||
|
||||
async function pathExists(targetPath) {
|
||||
return fs.access(targetPath).then(() => true, () => false)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
const SITE_ORIGIN = 'https://claudecode-haha.relakkesyang.org'
|
||||
const SITE_ORIGIN = 'https://cchaha.ai'
|
||||
|
||||
function upsert(selector, create) {
|
||||
let node = document.head.querySelector(selector)
|
||||
|
||||
Reference in New Issue
Block a user