Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions design-qa.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Download Center Design QA

## Scope

- Official homepage download entry
- Simplified Chinese download center
- Traditional Chinese, English, Japanese, Korean, Thai, and Vietnamese download pages
- Live stable catalog integration

## Visual Review

- [x] The page uses the existing GoAgent site header, footer, typography, and color system.
- [x] Windows and macOS choices are separated into clear platform panels.
- [x] NVIDIA, RTX 50, TensorRT, OpenCL, CPU, and no-engine choices are visible without technical setup copy.
- [x] Apple silicon and Intel Mac choices are clearly distinguished.
- [x] TensorRT is presented as two required download parts.
- [x] The small Windows update is visually secondary to full downloads.
- [x] Download sizes and the current stable tag are loaded from the live catalog.
- [x] Empty, loading, and retry states remain understandable without exposing infrastructure details.

## Interaction Review

- [x] All 10 generated download actions use HTTPS and the official download host.
- [x] Catalog URLs are validated before being assigned to buttons.
- [x] The catalog failure state offers retry and a direct download-page fallback.
- [x] Navigation and footer download links stay inside the official website.
- [x] Localized pages reuse one component, preventing layout and asset drift between languages.
- [x] Interactive controls have visible labels and generated accessible names.

## Result

Passed local Astro build, website contract checks, desktop browser review, localized content review, and live catalog population checks.
52 changes: 23 additions & 29 deletions scripts/check_website.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ requireFile('website/src/pages/ai-go-review.astro')
requireFile('website/src/pages/compare.astro')
requireFile('website/src/pages/[locale].astro')
requireFile('website/src/pages/[locale]/[page].astro')
requireFile('website/src/components/DownloadChooser.astro')
requireFile('website/public/images/download-page-bg.webp')
requireFile('website/public/images/download-icons/windows.svg')
requireFile('website/public/images/download-icons/apple.svg')
requireFile('website/DEPLOYMENT.md')
requireFile('.github/workflows/deploy-website.yml')
requireFile('website/public/sitemap.xml')
Expand All @@ -58,6 +62,7 @@ const faqPage = read('website/src/pages/faq.astro')
const changelogPage = read('website/src/pages/changelog.astro')
const localizedHome = read('website/src/pages/[locale].astro')
const localizedPages = read('website/src/pages/[locale]/[page].astro')
const downloadChooser = read('website/src/components/DownloadChooser.astro')
const layout = read('website/src/layouts/BaseLayout.astro')
const privacy = read('website/src/pages/privacy.astro')
const deployment = read('website/DEPLOYMENT.md')
Expand All @@ -67,7 +72,6 @@ const manifest = read('website/public/site.webmanifest')
const llms = read('website/public/llms.txt')
const llmsFull = read('website/public/llms-full.txt')
const ai = read('website/public/ai.txt')
const baiduCodeLabel = ['提取', '码'].join('')
const chooserCopy = ['不会选', '也没关系'].join('')

if (!index.includes('LizzieYzy Next')) fail('homepage must contain LizzieYzy Next')
Expand All @@ -78,27 +82,25 @@ for (const keyword of ['KataGo 官方推荐', '免费开源', '解压即用', '
if (!index.includes(keyword)) fail(`homepage must focus LizzieYzy Next on the new core value prop: ${keyword}`)
}
if (index.includes('README')) fail('homepage should say official recommendation instead of README wording')
if (!index.includes('https://pan.baidu.com/s/1wthaL8YwGMxy_u0U7Mabpw?pwd=3i8w')) fail('homepage must link LizzieYzy Next Baidu Netdisk')
if (!index.includes('国内下载(百度网盘)')) fail('homepage hero must expose the domestic Baidu download button')
if (!index.includes('国内用户优先用百度网盘下载')) fail('homepage hero must explain Baidu Netdisk as the domestic priority')
if (!index.includes('备用:从 GitHub 下载')) fail('homepage hero must explain GitHub as backup')
if (!index.includes("const lizzieDownload = '/download'")) fail('homepage must route LizzieYzy Next downloads through the official download center')
if (index.includes(chooserCopy)) fail('homepage hero must not use unnecessary chooser copy')
if (index.includes('打不开再用')) fail('homepage should use priority/backup wording instead of troubleshooting-first wording')
if (index.includes(baiduCodeLabel)) fail('homepage must not show a separate Baidu code label because it is already in the link')
if (!index.includes('https://github.com/wimi321/lizzieyzy-next/releases')) fail('homepage must link LizzieYzy Next GitHub download')
if (!index.includes('https://github.com/wimi321/GoAgent/releases')) fail('homepage must still link GoAgent GitHub download')
if (!layout.includes('QQ 1030632742')) fail('site layout must expose QQ community')
if (index.includes('Trust')) fail('homepage should not include Trust section')
if (!index.includes('下载顺序很简单')) fail('homepage download section must use simple download sequence copy')
if (!downloadPage.includes('不知道选哪个?国内用户优先用百度网盘下载')) fail('download page must explain the simplest download choice')
for (const keyword of ['SHA256', '回滚', '归档']) {
if (downloadPage.includes(keyword)) fail(`download page should avoid technical wording: ${keyword}`)
if (!downloadPage.includes('<DownloadChooser lang="zh-CN" />')) fail('download page must render the unified download chooser')
for (const keyword of ['download.goagent.top/channels/stable/catalog.json', 'TensorRT 高性能版', 'CPU 通用版', 'Apple 芯片', 'Intel 芯片', '下载小更新']) {
if (!downloadChooser.includes(keyword)) fail(`download chooser must contain: ${keyword}`)
}
for (const keyword of ['不用研究术语', '第一步:先下载 LizzieYzy Next', '国内用户:优先用百度网盘下载']) {
for (const keyword of ['Cloudflare R2', 'mirrorUrls', 'SHA256', 'manifest']) {
if (downloadChooser.includes(keyword)) fail(`download chooser should avoid implementation wording: ${keyword}`)
}
for (const keyword of ['不用研究术语', '第一步:先下载 LizzieYzy Next', '官网下载中心']) {
if (!docsPage.includes(keyword)) fail(`docs page must contain simple user guidance: ${keyword}`)
}
if (docsPage.includes('百度网盘打不开:')) fail('docs page should not lead with Baidu troubleshooting wording')
for (const keyword of ['我应该先下载哪个?', 'GitHub 是备用下载入口', '不用先懂']) {
for (const keyword of ['我应该先下载哪个?', '我该点哪个下载?', '不用先懂']) {
if (!faqPage.includes(keyword)) fail(`FAQ page must answer normal-user questions: ${keyword}`)
}
for (const keyword of ['官网首页更简单', '多语言页面同步更新', '普通用户不用先理解项目区别']) {
Expand All @@ -107,13 +109,13 @@ for (const keyword of ['官网首页更简单', '多语言页面同步更新', '
for (const keyword of [
'homeCopy',
'Review Go games?',
'GitHub download',
'officialDownloadCopy',
'home-proof-strip',
'hero-actions',
'Officially recommended by KataGo',
'Free, open source, unzip-and-run',
'Choose the package for Windows, macOS, or Linux on GitHub.',
'Tải từ GitHub'
'lizzieDownload',
'Tải LizzieYzy Next'
]) {
if (!localizedHome.includes(keyword)) fail(`localized homepage must use the simplified homepage system: ${keyword}`)
}
Expand All @@ -130,21 +132,13 @@ for (const forbidden of [
}
if (localizedHome.includes('<figure class="hero-art">')) fail('localized homepage must not render the old hero-art layout')
if (localizedHome.includes('README')) fail('localized homepage should say official recommendation instead of README wording')
for (const keyword of [
'simpleDownloads',
'Download LizzieYzy Next first',
'What should I download first?',
'Changelog - LizzieYzy Next and GoAgent Website',
'Tải LizzieYzy Next trước',
'ดาวน์โหลด LizzieYzy Next',
"page === 'download' ? simpleDownloads"
]) {
if (!localizedPages.includes(keyword)) fail(`localized pages must use simple download/docs/FAQ/changelog copy: ${keyword}`)
for (const keyword of ['DownloadChooser', 'downloadMeta', '<DownloadChooser lang={meta.lang} />']) {
if (!localizedPages.includes(keyword)) fail(`localized download pages must use the unified chooser: ${keyword}`)
}
for (const keyword of ['本地', 'LLM', 'TTS']) {
if (!privacy.includes(keyword)) fail(`privacy page must contain ${keyword}`)
}
for (const keyword of ['Cloudflare Pages', 'Spaceship', 'goagent.top', '百度网盘']) {
for (const keyword of ['Cloudflare Pages', 'Cloudflare R2', 'download.goagent.top', 'lizzieyzy-next-downloads']) {
if (!deployment.includes(keyword)) fail(`DEPLOYMENT.md must contain ${keyword}`)
}
for (const keyword of ['cloudflare/wrangler-action@v3', 'CLOUDFLARE_API_TOKEN', 'pages deploy website/dist --project-name=goagent']) {
Expand All @@ -167,13 +161,13 @@ for (const keyword of [
]) {
if (!sitemap.includes(keyword)) fail(`sitemap.xml must contain ${keyword}`)
}
for (const keyword of ['LizzieYzy Next', 'GoAgent', 'katago-review', 'AI Go review', 'Product comparison', 'pan.baidu.com']) {
for (const keyword of ['LizzieYzy Next', 'GoAgent', 'katago-review', 'AI Go review', 'Product comparison', 'https://goagent.top/download']) {
if (!llms.includes(keyword)) fail(`llms.txt must contain ${keyword}`)
}
for (const keyword of ['Primary recommendation', 'Experimental project', 'Important pages', 'https://goagent.top/compare', 'Baidu Netdisk']) {
for (const keyword of ['Primary recommendation', 'Experimental project', 'Important pages', 'https://goagent.top/compare', 'Official download center']) {
if (!llmsFull.includes(keyword)) fail(`llms-full.txt must contain ${keyword}`)
}
for (const keyword of ['canonical_product: LizzieYzy Next', 'secondary_product: GoAgent', 'best_links', 'baidu_netdisk']) {
for (const keyword of ['canonical_product: LizzieYzy Next', 'secondary_product: GoAgent', 'best_links', 'official_download']) {
if (!ai.includes(keyword)) fail(`ai.txt must contain ${keyword}`)
}
if (!manifest.includes('"name": "LizzieYzy Next"')) fail('site.webmanifest must name LizzieYzy Next')
Expand Down
29 changes: 14 additions & 15 deletions website/DEPLOYMENT.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,24 +42,21 @@ https://www.goagent.top/* https://goagent.top/:splat 301

## 4. 下载文件策略

不要把安装包放入 Cloudflare Pages
官网界面与安装包分开部署

- Pages 适合静态官网,不适合作为大型安装包仓库。
- Pages 单文件大小有限,不适合托管 `.exe`、`.dmg`、`.zip`。
- 官网首推下载按钮链接 LizzieYzy Next GitHub 下载页:
`https://github.com/wimi321/lizzieyzy-next/releases`
- 官网也提供 LizzieYzy Next 百度网盘入口,方便国内用户下载:
`https://pan.baidu.com/s/1wthaL8YwGMxy_u0U7Mabpw?pwd=3i8w`,提取码 `3i8w`
- GoAgent 作为实验围棋智能体,下载入口链接:
`https://github.com/wimi321/GoAgent/releases`
- Cloudflare Pages 只部署 `goagent.top` 的静态页面,不存放大型安装包。
- Cloudflare R2 桶 `lizzieyzy-next-downloads` 通过 `download.goagent.top` 提供当前稳定版文件。
- 官网 `/download` 从 `https://download.goagent.top/channels/stable/catalog.json` 读取公开目录,并按 Windows 显卡与 Mac 芯片展示下载按钮。
- R2 只保留当前稳定版;历史版本、源码与未镜像资产继续由 GitHub 提供。
- GoAgent 作为实验围棋智能体,仍从 `https://github.com/wimi321/GoAgent/releases` 下载。

未来可以用 VPS 或对象存储做
R2 bucket CORS 只允许官网读取目录

- `api.goagent.top`
- `download.goagent.top`
- release mirror
- Origins: `https://goagent.top`、`https://www.goagent.top`
- Methods: `GET`、`HEAD`
- 不需要凭据或用户身份信息。

但 VPS 不参与官网主站
`download.goagent.top` 的根路径重写规则必须同时匹配主机名,不能把 `/` 的重写应用到 `goagent.top`,否则 Astro 对 `/index.html` 的规范化会形成循环跳转

## 5. 本地构建和检查

Expand Down Expand Up @@ -148,6 +145,8 @@ curl https://goagent.top/sitemap.xml | grep -i goagent.top

- `https://goagent.top/` 返回 200。
- `https://www.goagent.top/` 跳转到 `https://goagent.top/` 或正常展示同一站点。
- 页面中包含 `LizzieYzy Next`、`GoAgent`、百度网盘、GitHub 下载链接和隐私说明入口。
- 页面中包含 `LizzieYzy Next`、`GoAgent`、官网下载入口和隐私说明入口。
- `https://goagent.top/download` 能读取稳定版目录并显示 Windows、macOS、CPU 与 TensorRT 下载项。
- `catalog.json` 对 `https://goagent.top` 返回正确的 `Access-Control-Allow-Origin`。

如果 `dig goagent.top A` 返回 `198.18.*`,请先删除 Cloudflare DNS 中的占位 A 记录,再回到 Pages 项目的 Custom domains 重新激活 `goagent.top`。如果 `www.goagent.top` 返回 Cloudflare `530`,通常表示 DNS 到了 Cloudflare,但没有指向有效 Pages 部署或 custom domain 还未激活。
4 changes: 2 additions & 2 deletions website/public/ai.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
site: https://goagent.top/
canonical_product: LizzieYzy Next
secondary_product: GoAgent
baidu_netdisk: https://pan.baidu.com/s/1wthaL8YwGMxy_u0U7Mabpw?pwd=3i8w
official_download: https://goagent.top/download

summary:
LizzieYzy Next is the recommended Go / Weiqi / Baduk desktop review workbench for stable KataGo whole-game analysis.
Expand All @@ -13,6 +13,6 @@ best_links:
- https://goagent.top/fox-go-review
- https://goagent.top/ai-go-review
- https://goagent.top/compare
- https://pan.baidu.com/s/1wthaL8YwGMxy_u0U7Mabpw?pwd=3i8w
- https://goagent.top/download
- https://github.com/wimi321/lizzieyzy-next/releases
- https://github.com/wimi321/GoAgent/releases
21 changes: 21 additions & 0 deletions website/public/images/download-icons/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
The MIT License (MIT)

Copyright (c) 2019-2024 The Bootstrap Authors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
3 changes: 3 additions & 0 deletions website/public/images/download-icons/apple.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions website/public/images/download-icons/arrow-repeat.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions website/public/images/download-icons/book.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions website/public/images/download-icons/clock-history.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions website/public/images/download-icons/cpu.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions website/public/images/download-icons/gear.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading