Files
ClassHelper/website/404.html
T
LoveChengke 0ea6bd887f feat(website,docs,build): 官网加一个下载页(挑版本装机),文档站的照片换成与 README 同一份
下载页(`website/download.html` + `assets/download.js`)

- 官网首页的「立即下载」、顶栏与页脚的「取安装包」全部指向新页 `/download.html`。
  那一页是「先挑一个版本,再挑要装的那一份」:一个版本分段控件 + 四张卡
  (班级端 / 服务端 Windows / 服务端 Linux / ClassIsland 插件),每张卡列出这一版里
  真实存在的文件、体积与直链;
- 版本与文件清单**不在站点里存副本**,每次打开都由 `assets/download.js` 当场读 GitHub
  Releases —— 文件名、体积、链接照抄发布页,不靠命名约定去猜;
- 读不到时(离线,或匿名接口 60 次/小时按出口 IP 被限流)退回页面上那份
  `<meta name="ch-version">`,按发布命名约定拼直链,并在页面上**明说这是拼出来的**;
- 老版本缺哪个包就显示「这一版没有发布…」(`v0.1.0-fix` 只有插件包,实测正确);
  Linux 那一行安装命令跟着选中版本钉上 `--version`(tag 不是 `x.y.z` 时不带);
- 动态建出来的卡片与文件行派发 `ch:content`,由 `main.js` 补挂按压反馈
  —— 这些元素是拉到清单之后才出现的,启动时还看不到它们。

文档站的照片(`docs/images/`)

- 页面里的图一律从 `docs/screenshots/**` 换成 `docs/images/**`:后者就是 README 与官网
  吃的那一份(字节相同),前者是 9-26 的冒烟留档,比 README 落后一个版本;
- 展示图与回归留档这两套图的分工写进 `docs/dev/testing.md`「截图留档」,含重新采集命令
  (冒烟会把「岛外留白对照图」落在同一个目录,所以要先落临时目录再挑);
- 顺带修 README 手机截图那张标错的图注(`mobile-dashboard.jpg` 是仪表盘,不是抽屉菜单);
- `docs/reference.md` 验收表里那张 ClassIsland「真机实测截图」不再嵌图:它是连着桌面、
  任务栏和另一个窗口整屏截下来的,当文档配图不能用。断言与用例名都保留,另外注明了抓图位置。

版本落点

- `scripts/version.mjs` 增加 `website/download.html` 的兜底版本号,落点 13 → 14 处
  (`AGENTS.md` §4.4 与 `docs/dev/release.md` 同步);
- README「开始使用」表里那三个文件名改成**发布页上真实的名字**
  (`-x64-client-setup` / `-x64-client-portable` / `-x64-server-setup`)—— 原来写的是构建
  产物的名字;「上传前把产物改成 ASCII 名」这一步也一并写进发布流程,
  它是官网下载页离线兜底与 README 表格的共同依据。
2026-10-06 18:37:42 +08:00

138 lines
3.5 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<!--
站点根 404 页(**不经过 docfx**,放在 website/ 下,由发布流程注入 {{BASE}})。
一个仓库在 GitHub Pages 上只有一个站点,官网在根、文档站在 /docs/ 下 —— 因此严格来说
整个站点只有这一份 404 生效:Pages 对任何未知路径都返回站点根的 404.html。
docs/404.html(docfx 那份)只在「文档站被单独托管」时才用得上,合并站点里它是备而不用的。
所以这一页要把两条路都给出来:回官网、去文档站。
-->
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<base href="{{BASE}}" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="robots" content="noindex" />
<title>页面不存在 | ClassHelper</title>
<style>
:root {
--board: #16231e;
--chalk: #eef3ef;
--chalk-2: #b9c7bf;
--chalk-3: #8a9a91;
--blue: #2f8fe6;
--line: rgba(238, 243, 239, 0.14);
}
* {
box-sizing: border-box;
}
html {
color-scheme: dark;
}
body {
margin: 0;
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
padding: 32px;
background: var(--board);
color: var(--chalk);
font-family:
'Segoe UI Variable Text',
'Segoe UI',
'Microsoft YaHei UI',
'Microsoft YaHei',
-apple-system,
BlinkMacSystemFont,
'PingFang SC',
'Hiragino Sans GB',
sans-serif;
line-height: 1.75;
}
main {
max-width: 34em;
}
.code {
font-family: ui-monospace, Consolas, monospace;
font-size: 4rem;
font-weight: 600;
line-height: 1;
color: var(--blue);
}
h1 {
margin: 18px 0 10px;
font-size: 1.5rem;
font-weight: 600;
}
p {
margin: 0 0 26px;
color: var(--chalk-2);
}
.links {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
a {
display: inline-block;
padding: 11px 20px;
border: 1px solid var(--line);
border-radius: 4px;
color: var(--chalk);
text-decoration: none;
transition:
border-color 0.15s ease,
color 0.15s ease,
background-color 0.15s ease;
}
a:hover {
border-color: var(--chalk-3);
background: rgba(238, 243, 239, 0.06);
}
a.primary {
background: var(--blue);
border-color: var(--blue);
color: #fff;
}
a.primary:hover {
background: #1280dd;
border-color: #1280dd;
}
@media (prefers-reduced-motion: reduce) {
a {
transition: none;
}
}
</style>
</head>
<body>
<main>
<div class="code">404</div>
<h1>这里没有这一页</h1>
<p>链接可能过期了,或者这一页已经被重写进了别的章节。</p>
<div class="links">
<a class="primary" href="index.html">回到官网首页</a>
<a href="download.html">下载</a>
<a href="docs/index.html">文档站</a>
<a href="docs/get-started/index.html">快速上手</a>
<a href="docs/faq.html">常见问题</a>
<a href="https://github.com/LoveChengke/ClassHelper">GitHub 仓库</a>
</div>
</main>
</body>
</html>