diff --git a/scripts/check_website.mjs b/scripts/check_website.mjs index e8f0601..81aed0c 100644 --- a/scripts/check_website.mjs +++ b/scripts/check_website.mjs @@ -101,6 +101,12 @@ for (const keyword of [ 'fetchCatalogWithRetry', 'NVIDIA CUDA', 'RTX 20 / 30 / 40 / 50', + 'AMD RX 9000', + 'amd-rocm-experimental', + 'rocm-gfx120x', + 'RX 6000 / RX 7000 / Ryzen AI Max', + 'data-amd-release-link', + 'safeGithubReleaseUrl', 'TensorRT 可选版', 'tensorrt-optional', 'RTX 20 / GTX 16 可选', @@ -113,6 +119,15 @@ for (const keyword of [ ]) { if (!downloadChooser.includes(keyword)) fail(`download chooser must contain: ${keyword}`) } +const nvidiaRow = downloadChooser.indexOf("['nvidia', 'windows-portable', 'nvidia'") +const amdRow = downloadChooser.indexOf("['amd', 'amd-rocm-experimental', 'rocm-gfx120x', 'x64'") +const openclRow = downloadChooser.indexOf("['opencl', 'windows-portable', 'opencl'") +if (!(nvidiaRow >= 0 && amdRow > nvidiaRow && openclRow > amdRow)) { + fail('download chooser must place AMD RX 9000 between NVIDIA CUDA and OpenCL') +} +for (const keyword of ['ROCm 實驗版', 'Experimental ROCm', 'ROCm 実験版', 'ROCm 실험판', 'ROCm รุ่นทดลอง', 'ROCm thử nghiệm']) { + if (!downloadChooser.includes(keyword)) fail(`download chooser must localize AMD RX 9000: ${keyword}`) +} if (downloadChooser.includes('tensorrt-advanced')) fail('download chooser must use the stable TensorRT catalog category') if (downloadChooser.includes('RTX 30 系及以下可选')) fail('TensorRT recommendation must not target RTX 30') for (const keyword of ['www.goagent.top', 'goagent.top', 'Response.redirect', 'env.ASSETS.fetch']) { diff --git a/website/DEPLOYMENT.md b/website/DEPLOYMENT.md index 656abe3..b606dde 100644 --- a/website/DEPLOYMENT.md +++ b/website/DEPLOYMENT.md @@ -47,9 +47,9 @@ https://www.goagent.top/download/ -> https://goagent.top/download/ (301) - Cloudflare Pages 只部署 `goagent.top` 的静态页面,不存放大型安装包。 - Cloudflare R2 桶 `lizzieyzy-next-downloads` 通过 `download.goagent.top` 提供当前稳定版文件。 - 用户唯一公开下载入口是 `https://goagent.top/download/`。 -- 官网 `/download/` 从 `https://download.goagent.top/channels/stable/catalog.json` 读取公开目录,并按 Windows 显卡与 Mac 芯片展示下载按钮。 +- 官网 `/download/` 从 `https://download.goagent.top/channels/stable/catalog.json` 读取公开目录,并按 Windows 显卡与 Mac 芯片展示下载按钮。Windows 列表包含 NVIDIA CUDA、AMD RX 9000 ROCm 实验版、OpenCL、CPU、无引擎和 TensorRT 可选版。 - 发布维护期间目录中的下载地址可暂时指向 GitHub;官网允许 `download.goagent.top` 与 `github.com` 两种经过校验的 HTTPS 地址。目录加载失败时直接提供 GitHub Releases 备用入口,不跳回本页。 -- R2 只保留当前稳定版;历史版本、源码与未镜像资产继续由 GitHub 提供。 +- R2 只保留当前稳定版;历史版本、源码与未镜像资产继续由 GitHub 提供。AMD 仅镜像 `gfx120x` 的 RX 9000 实验包,RX 6000、RX 7000 与 Ryzen AI Max 实验包继续从当前 GitHub Release 下载。 - GoAgent 作为实验围棋智能体,仍从 `https://github.com/wimi321/GoAgent/releases` 下载。 R2 bucket CORS 只允许官网读取目录: @@ -164,7 +164,7 @@ curl https://goagent.top/sitemap.xml | grep -i goagent.top - `https://www.goagent.top/` 与 `https://www.goagent.top/download/` 均以 301 跳转到主域名的同一路径。 - `https://download.goagent.top/` 与 `/index.html` 均以 301 跳转到 `https://goagent.top/download/`。 - 页面中包含 `LizzieYzy Next`、`GoAgent`、官网下载入口和隐私说明入口。 -- `https://goagent.top/download/` 能读取稳定版目录并显示 Windows、macOS、CPU 与 TensorRT 下载项。 +- `https://goagent.top/download/` 能读取稳定版目录并显示 Windows、macOS、CPU、RX 9000 ROCm 实验版与 TensorRT 下载项;RX 9000 位于 NVIDIA CUDA 与 OpenCL 之间且不显示推荐标签。 - `https://download.goagent.top/channels/stable/catalog.json`、`/releases/*` 和 Range 请求保持正常,不受根路径跳转规则影响。 - `catalog.json` 对 `https://goagent.top` 返回正确的 `Access-Control-Allow-Origin`。 diff --git a/website/src/components/DownloadChooser.astro b/website/src/components/DownloadChooser.astro index 00f0b90..5b75c02 100644 --- a/website/src/components/DownloadChooser.astro +++ b/website/src/components/DownloadChooser.astro @@ -15,7 +15,7 @@ const copyByLang = { lead: '先选电脑,再下载与你硬件匹配的版本', loading: '正在获取最新正式版…', release: '当前正式版', - windowsLead: 'NVIDIA RTX 20 / 30 / 40 / 50 优先使用 CUDA;AMD、Intel 或旧 NVIDIA 显卡使用 OpenCL', + windowsLead: 'NVIDIA RTX 20 / 30 / 40 / 50 优先使用 CUDA;AMD RX 9000 可尝试 ROCm,其他显卡使用 OpenCL', macLead: '选择与你 Mac 芯片匹配的版本', download: '下载', recommended: '推荐', @@ -31,8 +31,11 @@ const copyByLang = { error: '版本列表暂时没有加载出来,请重试。', retry: '重新加载', openDirect: '打开 GitHub 备用下载', + amdMore: 'RX 6000 / RX 7000 / Ryzen AI Max 实验包在 GitHub;不确定型号请使用 OpenCL。', + amdMoreAction: '查看其他 AMD 实验包', rows: { nvidia: ['NVIDIA CUDA', 'RTX 20 / 30 / 40 / 50 统一版'], + amd: ['AMD RX 9000', 'ROCm 实验版 · RX 9060 / 9070 系列'], tensorrt: ['TensorRT 可选版', 'RTX 20 / GTX 16 可选 · 通常比 CUDA 更快 · GTX 10 不支持 · 下载两个分卷'], opencl: ['OpenCL 兼容版', 'AMD / Intel 显卡'], cpu: ['CPU 通用版', '没有独立显卡也能用'], @@ -43,51 +46,51 @@ const copyByLang = { }, 'zh-Hant': { title: '選擇你的版本', lead: '先選電腦,再下載與硬體相符的版本', loading: '正在取得最新正式版…', release: '目前正式版', - windowsLead: 'NVIDIA RTX 20 / 30 / 40 / 50 優先使用 CUDA;AMD、Intel 或舊 NVIDIA 顯示卡使用 OpenCL', macLead: '選擇與 Mac 晶片相符的版本', download: '下載', recommended: '推薦', + windowsLead: 'NVIDIA RTX 20 / 30 / 40 / 50 優先使用 CUDA;AMD RX 9000 可嘗試 ROCm,其他顯示卡使用 OpenCL', macLead: '選擇與 Mac 晶片相符的版本', download: '下載', recommended: '推薦', unavailable: '暫不可用', volume1: '分卷 1', volume2: '分卷 2', macTip: '下載後拖到「應用程式」即可安裝', updateTitle: '已經使用免安裝版?', updateText: '只更新主程式', updateAction: '下載小更新', help: '安裝說明', history: '歷史版本', error: '版本清單暫時無法載入,請重試。', - retry: '重新載入', openDirect: '開啟 GitHub 備用下載', - rows: { nvidia: ['NVIDIA CUDA', 'RTX 20 / 30 / 40 / 50 統一版'], tensorrt: ['TensorRT 選配版', 'RTX 20 / GTX 16 可選 · 通常比 CUDA 更快 · GTX 10 不支援 · 下載兩個分卷'], opencl: ['OpenCL 相容版', 'AMD / Intel 顯示卡'], cpu: ['CPU 通用版', '沒有獨立顯示卡也能用'], noEngine: ['無引擎版', '已有自己的 KataGo'], apple: ['Apple 晶片', 'M1 / M2 / M3 / M4 / M5'], intel: ['Intel 晶片', '舊款 Intel Mac'] } + retry: '重新載入', openDirect: '開啟 GitHub 備用下載', amdMore: 'RX 6000 / RX 7000 / Ryzen AI Max 實驗版在 GitHub;不確定型號請使用 OpenCL。', amdMoreAction: '查看其他 AMD 實驗版', + rows: { nvidia: ['NVIDIA CUDA', 'RTX 20 / 30 / 40 / 50 統一版'], amd: ['AMD RX 9000', 'ROCm 實驗版 · RX 9060 / 9070 系列'], tensorrt: ['TensorRT 選配版', 'RTX 20 / GTX 16 可選 · 通常比 CUDA 更快 · GTX 10 不支援 · 下載兩個分卷'], opencl: ['OpenCL 相容版', 'AMD / Intel 顯示卡'], cpu: ['CPU 通用版', '沒有獨立顯示卡也能用'], noEngine: ['無引擎版', '已有自己的 KataGo'], apple: ['Apple 晶片', 'M1 / M2 / M3 / M4 / M5'], intel: ['Intel 晶片', '舊款 Intel Mac'] } }, en: { title: 'Choose your version', lead: 'Pick your computer, then download the matching build', loading: 'Loading the latest stable release…', release: 'Stable release', - windowsLead: 'Use CUDA for NVIDIA RTX 20 / 30 / 40 / 50; use OpenCL for AMD, Intel, or older NVIDIA graphics', macLead: 'Choose the build for your Mac chip', download: 'Download', recommended: 'Recommended', + windowsLead: 'Use CUDA for NVIDIA RTX 20 / 30 / 40 / 50; RX 9000 can try ROCm, while other graphics should use OpenCL', macLead: 'Choose the build for your Mac chip', download: 'Download', recommended: 'Recommended', unavailable: 'Unavailable', volume1: 'Part 1', volume2: 'Part 2', macTip: 'Drag the app to Applications after downloading', updateTitle: 'Already use the portable edition?', updateText: 'Update the app only', updateAction: 'Small update', help: 'Install help', history: 'Older releases', error: 'The version list could not be loaded. Please try again.', - retry: 'Reload', openDirect: 'Open GitHub backup', - rows: { nvidia: ['NVIDIA CUDA', 'One build for RTX 20 / 30 / 40 / 50'], tensorrt: ['Optional TensorRT', 'For RTX 20 / GTX 16 · often faster than CUDA · GTX 10 unsupported · download both parts'], opencl: ['OpenCL compatible', 'AMD / Intel graphics'], cpu: ['CPU universal', 'Works without dedicated graphics'], noEngine: ['No-engine build', 'For your own KataGo'], apple: ['Apple silicon', 'M1 / M2 / M3 / M4 / M5'], intel: ['Intel chip', 'Older Intel Macs'] } + retry: 'Reload', openDirect: 'Open GitHub backup', amdMore: 'Find RX 6000 / RX 7000 / Ryzen AI Max experimental builds on GitHub. If unsure, use OpenCL.', amdMoreAction: 'Other AMD experimental builds', + rows: { nvidia: ['NVIDIA CUDA', 'One build for RTX 20 / 30 / 40 / 50'], amd: ['AMD RX 9000', 'Experimental ROCm · RX 9060 / 9070 series'], tensorrt: ['Optional TensorRT', 'For RTX 20 / GTX 16 · often faster than CUDA · GTX 10 unsupported · download both parts'], opencl: ['OpenCL compatible', 'AMD / Intel graphics'], cpu: ['CPU universal', 'Works without dedicated graphics'], noEngine: ['No-engine build', 'For your own KataGo'], apple: ['Apple silicon', 'M1 / M2 / M3 / M4 / M5'], intel: ['Intel chip', 'Older Intel Macs'] } }, ja: { title: 'バージョンを選択', lead: 'パソコンを選び、環境に合う版をダウンロード', loading: '最新の安定版を取得中…', release: '安定版', - windowsLead: 'NVIDIA RTX 20 / 30 / 40 / 50 は CUDA、AMD・Intel・旧型 NVIDIA は OpenCL を使用', macLead: 'Mac のチップに合う版を選択', download: 'ダウンロード', recommended: 'おすすめ', + windowsLead: 'NVIDIA RTX 20 / 30 / 40 / 50 は CUDA、AMD RX 9000 は ROCm を試用可能、その他は OpenCL を使用', macLead: 'Mac のチップに合う版を選択', download: 'ダウンロード', recommended: 'おすすめ', unavailable: '利用不可', volume1: '分割 1', volume2: '分割 2', macTip: 'ダウンロード後「アプリケーション」へドラッグ', updateTitle: 'ポータブル版を利用中ですか?', updateText: '本体だけ更新', updateAction: '小型更新', help: 'インストール案内', history: '過去の版', error: 'バージョン一覧を読み込めませんでした。再試行してください。', - retry: '再読み込み', openDirect: 'GitHub の予備ダウンロードを開く', - rows: { nvidia: ['NVIDIA CUDA', 'RTX 20 / 30 / 40 / 50 共通版'], tensorrt: ['TensorRT オプション版', 'RTX 20 / GTX 16 向け · CUDA より高速な場合あり · GTX 10 非対応 · 両方の分割を取得'], opencl: ['OpenCL 互換版', 'AMD / Intel GPU'], cpu: ['CPU 汎用版', '専用 GPU なしでも利用可能'], noEngine: ['エンジンなし', '自分の KataGo を使用'], apple: ['Apple シリコン', 'M1 / M2 / M3 / M4 / M5'], intel: ['Intel チップ', '旧型 Intel Mac'] } + retry: '再読み込み', openDirect: 'GitHub の予備ダウンロードを開く', amdMore: 'RX 6000 / RX 7000 / Ryzen AI Max 実験版は GitHub から取得できます。型番が不明なら OpenCL を使用してください。', amdMoreAction: 'その他の AMD 実験版', + rows: { nvidia: ['NVIDIA CUDA', 'RTX 20 / 30 / 40 / 50 共通版'], amd: ['AMD RX 9000', 'ROCm 実験版 · RX 9060 / 9070 シリーズ'], tensorrt: ['TensorRT オプション版', 'RTX 20 / GTX 16 向け · CUDA より高速な場合あり · GTX 10 非対応 · 両方の分割を取得'], opencl: ['OpenCL 互換版', 'AMD / Intel GPU'], cpu: ['CPU 汎用版', '専用 GPU なしでも利用可能'], noEngine: ['エンジンなし', '自分の KataGo を使用'], apple: ['Apple シリコン', 'M1 / M2 / M3 / M4 / M5'], intel: ['Intel チップ', '旧型 Intel Mac'] } }, ko: { title: '버전 선택', lead: '컴퓨터를 고른 뒤 하드웨어에 맞는 버전을 받으세요', loading: '최신 안정판을 불러오는 중…', release: '안정판', - windowsLead: 'NVIDIA RTX 20 / 30 / 40 / 50은 CUDA, AMD·Intel·구형 NVIDIA는 OpenCL을 사용하세요', macLead: 'Mac 칩에 맞는 버전을 선택하세요', download: '다운로드', recommended: '추천', + windowsLead: 'NVIDIA RTX 20 / 30 / 40 / 50은 CUDA, AMD RX 9000은 ROCm을 시험할 수 있으며 나머지는 OpenCL을 사용하세요', macLead: 'Mac 칩에 맞는 버전을 선택하세요', download: '다운로드', recommended: '추천', unavailable: '사용 불가', volume1: '분할 1', volume2: '분할 2', macTip: '다운로드 후 응용 프로그램으로 드래그하세요', updateTitle: '포터블 버전을 이미 사용 중인가요?', updateText: '프로그램만 업데이트', updateAction: '작은 업데이트', help: '설치 도움말', history: '이전 버전', error: '버전 목록을 불러오지 못했습니다. 다시 시도해 주세요.', - retry: '다시 불러오기', openDirect: 'GitHub 예비 다운로드 열기', - rows: { nvidia: ['NVIDIA CUDA', 'RTX 20 / 30 / 40 / 50 통합판'], tensorrt: ['TensorRT 선택형', 'RTX 20 / GTX 16용 · CUDA보다 빠른 경우가 많음 · GTX 10 미지원 · 두 파일 모두 다운로드'], opencl: ['OpenCL 호환', 'AMD / Intel 그래픽'], cpu: ['CPU 범용', '외장 그래픽 없이 사용'], noEngine: ['엔진 없음', '자체 KataGo 사용'], apple: ['Apple 실리콘', 'M1 / M2 / M3 / M4 / M5'], intel: ['Intel 칩', '구형 Intel Mac'] } + retry: '다시 불러오기', openDirect: 'GitHub 예비 다운로드 열기', amdMore: 'RX 6000 / RX 7000 / Ryzen AI Max 실험판은 GitHub에서 받을 수 있습니다. 모델을 모르면 OpenCL을 사용하세요.', amdMoreAction: '다른 AMD 실험판 보기', + rows: { nvidia: ['NVIDIA CUDA', 'RTX 20 / 30 / 40 / 50 통합판'], amd: ['AMD RX 9000', 'ROCm 실험판 · RX 9060 / 9070 시리즈'], tensorrt: ['TensorRT 선택형', 'RTX 20 / GTX 16용 · CUDA보다 빠른 경우가 많음 · GTX 10 미지원 · 두 파일 모두 다운로드'], opencl: ['OpenCL 호환', 'AMD / Intel 그래픽'], cpu: ['CPU 범용', '외장 그래픽 없이 사용'], noEngine: ['엔진 없음', '자체 KataGo 사용'], apple: ['Apple 실리콘', 'M1 / M2 / M3 / M4 / M5'], intel: ['Intel 칩', '구형 Intel Mac'] } }, th: { title: 'เลือกเวอร์ชันของคุณ', lead: 'เลือกคอมพิวเตอร์ แล้วดาวน์โหลดรุ่นที่ตรงกับฮาร์ดแวร์', loading: 'กำลังโหลดรุ่นเสถียรล่าสุด…', release: 'รุ่นเสถียร', - windowsLead: 'ใช้ CUDA กับ NVIDIA RTX 20 / 30 / 40 / 50 และใช้ OpenCL กับ AMD, Intel หรือ NVIDIA รุ่นเก่า', macLead: 'เลือกรุ่นให้ตรงกับชิป Mac', download: 'ดาวน์โหลด', recommended: 'แนะนำ', + windowsLead: 'ใช้ CUDA กับ NVIDIA RTX 20 / 30 / 40 / 50, ทดลอง ROCm ได้กับ AMD RX 9000 และใช้ OpenCL กับรุ่นอื่น', macLead: 'เลือกรุ่นให้ตรงกับชิป Mac', download: 'ดาวน์โหลด', recommended: 'แนะนำ', unavailable: 'ยังใช้ไม่ได้', volume1: 'ส่วน 1', volume2: 'ส่วน 2', macTip: 'ดาวน์โหลดแล้วลากไปยัง Applications', updateTitle: 'ใช้รุ่นพกพาอยู่แล้ว?', updateText: 'อัปเดตเฉพาะโปรแกรม', updateAction: 'อัปเดตขนาดเล็ก', help: 'วิธีติดตั้ง', history: 'รุ่นก่อนหน้า', error: 'โหลดรายการเวอร์ชันไม่สำเร็จ โปรดลองอีกครั้ง', - retry: 'โหลดใหม่', openDirect: 'เปิดดาวน์โหลดสำรองบน GitHub', - rows: { nvidia: ['NVIDIA CUDA', 'รุ่นเดียวสำหรับ RTX 20 / 30 / 40 / 50'], tensorrt: ['TensorRT ทางเลือก', 'สำหรับ RTX 20 / GTX 16 · มักเร็วกว่า CUDA · ไม่รองรับ GTX 10 · ดาวน์โหลดทั้งสองส่วน'], opencl: ['รุ่น OpenCL', 'การ์ดจอ AMD / Intel'], cpu: ['รุ่น CPU', 'ใช้ได้โดยไม่มีการ์ดจอแยก'], noEngine: ['ไม่มีเอนจิน', 'สำหรับ KataGo ของคุณเอง'], apple: ['ชิป Apple', 'M1 / M2 / M3 / M4 / M5'], intel: ['ชิป Intel', 'Mac Intel รุ่นเก่า'] } + retry: 'โหลดใหม่', openDirect: 'เปิดดาวน์โหลดสำรองบน GitHub', amdMore: 'รุ่นทดลองสำหรับ RX 6000 / RX 7000 / Ryzen AI Max อยู่บน GitHub หากไม่แน่ใจรุ่น ให้ใช้ OpenCL', amdMoreAction: 'รุ่นทดลอง AMD อื่น', + rows: { nvidia: ['NVIDIA CUDA', 'รุ่นเดียวสำหรับ RTX 20 / 30 / 40 / 50'], amd: ['AMD RX 9000', 'ROCm รุ่นทดลอง · RX 9060 / 9070'], tensorrt: ['TensorRT ทางเลือก', 'สำหรับ RTX 20 / GTX 16 · มักเร็วกว่า CUDA · ไม่รองรับ GTX 10 · ดาวน์โหลดทั้งสองส่วน'], opencl: ['รุ่น OpenCL', 'การ์ดจอ AMD / Intel'], cpu: ['รุ่น CPU', 'ใช้ได้โดยไม่มีการ์ดจอแยก'], noEngine: ['ไม่มีเอนจิน', 'สำหรับ KataGo ของคุณเอง'], apple: ['ชิป Apple', 'M1 / M2 / M3 / M4 / M5'], intel: ['ชิป Intel', 'Mac Intel รุ่นเก่า'] } }, vi: { title: 'Chọn phiên bản', lead: 'Chọn máy tính rồi tải bản phù hợp với phần cứng', loading: 'Đang tải bản ổn định mới nhất…', release: 'Bản ổn định', - windowsLead: 'Dùng CUDA cho NVIDIA RTX 20 / 30 / 40 / 50; dùng OpenCL cho AMD, Intel hoặc NVIDIA đời cũ', macLead: 'Chọn bản phù hợp với chip Mac', download: 'Tải xuống', recommended: 'Khuyên dùng', + windowsLead: 'Dùng CUDA cho NVIDIA RTX 20 / 30 / 40 / 50; RX 9000 có thể thử ROCm, các GPU khác dùng OpenCL', macLead: 'Chọn bản phù hợp với chip Mac', download: 'Tải xuống', recommended: 'Khuyên dùng', unavailable: 'Chưa có', volume1: 'Phần 1', volume2: 'Phần 2', macTip: 'Sau khi tải, kéo ứng dụng vào Applications', updateTitle: 'Đã dùng bản portable?', updateText: 'Chỉ cập nhật chương trình', updateAction: 'Bản cập nhật nhỏ', help: 'Hướng dẫn cài', history: 'Phiên bản cũ', error: 'Không tải được danh sách phiên bản. Hãy thử lại.', - retry: 'Tải lại', openDirect: 'Mở bản tải dự phòng trên GitHub', - rows: { nvidia: ['NVIDIA CUDA', 'Một bản cho RTX 20 / 30 / 40 / 50'], tensorrt: ['TensorRT tùy chọn', 'Dành cho RTX 20 / GTX 16 · thường nhanh hơn CUDA · không hỗ trợ GTX 10 · tải cả hai phần'], opencl: ['Tương thích OpenCL', 'Đồ họa AMD / Intel'], cpu: ['CPU phổ thông', 'Dùng được không cần GPU rời'], noEngine: ['Không kèm engine', 'Dùng KataGo riêng'], apple: ['Chip Apple', 'M1 / M2 / M3 / M4 / M5'], intel: ['Chip Intel', 'Mac Intel đời cũ'] } + retry: 'Tải lại', openDirect: 'Mở bản tải dự phòng trên GitHub', amdMore: 'Các bản thử nghiệm RX 6000 / RX 7000 / Ryzen AI Max có trên GitHub. Nếu không chắc, hãy dùng OpenCL.', amdMoreAction: 'Các bản AMD thử nghiệm khác', + rows: { nvidia: ['NVIDIA CUDA', 'Một bản cho RTX 20 / 30 / 40 / 50'], amd: ['AMD RX 9000', 'ROCm thử nghiệm · dòng RX 9060 / 9070'], tensorrt: ['TensorRT tùy chọn', 'Dành cho RTX 20 / GTX 16 · thường nhanh hơn CUDA · không hỗ trợ GTX 10 · tải cả hai phần'], opencl: ['Tương thích OpenCL', 'Đồ họa AMD / Intel'], cpu: ['CPU phổ thông', 'Dùng được không cần GPU rời'], noEngine: ['Không kèm engine', 'Dùng KataGo riêng'], apple: ['Chip Apple', 'M1 / M2 / M3 / M4 / M5'], intel: ['Chip Intel', 'Mac Intel đời cũ'] } } } as const @@ -96,6 +99,7 @@ const localeSlug = { 'zh-CN': '', 'zh-Hant': 'zh-hant', en: 'en', ja: 'ja', ko: const helpUrl = localeSlug ? `/${localeSlug}/docs` : '/docs' const rows = [ ['nvidia', 'windows-portable', 'nvidia', '', 'gpu-card', true], + ['amd', 'amd-rocm-experimental', 'rocm-gfx120x', 'x64', 'gpu-card', false], ['opencl', 'windows-portable', 'opencl', '', 'gpu-card', false], ['cpu', 'windows-portable', 'with-katago', '', 'cpu', false], ['noEngine', 'windows-portable', 'without.engine', '', 'gear', false], @@ -164,6 +168,10 @@ const macRows = [ ))} +
@@ -265,6 +273,12 @@ const macRows = [ } } + function safeGithubReleaseUrl(value) { + const url = safeDownloadUrl(value) + if (!url) return null + return new URL(url).hostname === 'github.com' ? url : null + } + function findAssets(catalog, entry) { const category = entry.dataset.category || '' const flavor = entry.dataset.flavor || '' @@ -329,6 +343,10 @@ const macRows = [ try { const catalog = await fetchCatalogWithRetry(hub.dataset.catalogUrl) hub.querySelectorAll('[data-entry]').forEach((entry) => fillEntry(hub, entry, catalog)) + const releaseUrl = safeGithubReleaseUrl(catalog.releaseUrl) + if (releaseUrl) { + hub.querySelectorAll('[data-amd-release-link]').forEach((link) => { link.href = releaseUrl }) + } if (status) status.textContent = `${hub.dataset.releaseLabel} · ${catalog.releaseTag}` } catch { if (status) status.textContent = hub.dataset.errorLabel @@ -346,6 +364,8 @@ const macRows = [