chore(release): 1.3.3 发布并退役旧联动
This commit is contained in:
1 parent
b7cdc7c9ea
commit
c0ebf88138
184 files changed
+5450
-11705
No files matched your search
@@ -18,7 +18,7 @@
|
||||
*
|
||||
* 版本分段控件 → 一行状态 → 「装什么」分段控件 → 卡片(图标 / 名称 / 系统要求 / 主按钮 + 变体下拉)
|
||||
*
|
||||
* 默认停在**客户端**(进来最先要的多半是它),服务端与插件各是一个可切换的分组。
|
||||
* 默认停在**客户端**(进来最先要的多半是它),服务端是另一个可切换的分组。
|
||||
* 两个分段控件共用同一套指示器实现;建完卡片会派发一次 `ch:content`,
|
||||
* 让 main.js 把按压反馈补挂上 —— 这些元素是拉到清单之后才出现的。
|
||||
*/
|
||||
@@ -172,29 +172,6 @@
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'plugin',
|
||||
label: '插件',
|
||||
note: {
|
||||
text: '给教室那台已经装了 ClassIsland 的机器加装 —— 课表从这里上报,老师发的提醒弹到全屏。',
|
||||
},
|
||||
cards: [
|
||||
{
|
||||
mark: 'plugin',
|
||||
name: 'ClassIsland 联动插件',
|
||||
req: '装在教室已有的 ClassIsland 2.x 上 · 教室大屏',
|
||||
desc: '上课时段的普通通知先收着,打下课铃补弹;紧急通知与叫人立刻全屏提醒,可以语音朗读。',
|
||||
files: [
|
||||
{
|
||||
role: '下载 .cipx',
|
||||
note: '在 ClassIsland 的插件页里选它安装',
|
||||
match: /classislandplugin\.cipx$/i,
|
||||
expect: () => 'ClassHelper.ClassIslandPlugin.cipx',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
const versionHost = $('#ver-tabs');
|
||||
|
||||
@@ -752,13 +752,13 @@
|
||||
}
|
||||
if (say.normalScreen) {
|
||||
say.normalScreen.textContent = period.inClass
|
||||
? '暂存起来,打下课铃补弹(插件订阅课程事件)。'
|
||||
: '直接全屏弹出。';
|
||||
? '暂存起来,下课后由客户端补弹。'
|
||||
: '由客户端与灵动岛显示。';
|
||||
}
|
||||
if (say.urgentScreen) {
|
||||
say.urgentScreen.textContent = period.inClass
|
||||
? '立刻全屏弹出,可以语音朗读 —— 老师正在等学生。'
|
||||
: '立刻全屏弹出,可以语音朗读。';
|
||||
? '灵动岛立即展开 —— 老师正在等学生。'
|
||||
: '灵动岛立即展开提醒。';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -946,11 +946,7 @@
|
||||
kind: 'screen',
|
||||
cap: '成绩录入 —— 单条 / 批量 / 表格导入,重复判定按「同班同学生同考试同课程」',
|
||||
},
|
||||
{
|
||||
file: 'web-integrations.jpg',
|
||||
kind: 'screen',
|
||||
cap: 'ClassIsland 联动 —— 设备在线状态、当前节次、回传与镜像开关',
|
||||
},
|
||||
|
||||
{
|
||||
file: 'web-classes.jpg',
|
||||
kind: 'screen',
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 64 KiB |
@@ -6,19 +6,19 @@
|
||||
<title>下载 ClassHelper —— 挑版本、挑平台</title>
|
||||
<meta
|
||||
name="description"
|
||||
content="从 GitHub Releases 直接下载 ClassHelper:教室机器要的班级端、服务器要的服务端(Windows 安装程序 / Linux 压缩包)、教室大屏要的 ClassIsland 联动插件。版本与文件清单取自本仓库的发布页,显示什么就能下什么。"
|
||||
content="从 GitHub Releases 直接下载 ClassHelper:教室机器要的班级端、服务器要的服务端(Windows 安装程序 / Linux 压缩包)。版本与文件清单取自本仓库的发布页,显示什么就能下什么。"
|
||||
/>
|
||||
<meta name="theme-color" content="#16231e" />
|
||||
<meta property="og:title" content="下载 ClassHelper" />
|
||||
<meta
|
||||
property="og:description"
|
||||
content="班级端、服务端(Windows / Linux)、ClassIsland 联动插件 —— 选好版本,下面显示什么就能下什么。"
|
||||
content="班级端、服务端(Windows / Linux) —— 选好版本,下面显示什么就能下什么。"
|
||||
/>
|
||||
<meta property="og:type" content="website" />
|
||||
<!-- 页面上所有版本号与文件名都从这一行起步:脚本会去 GitHub Releases 取真实清单,
|
||||
取不到时(离线、被限流)就按这份版本号 + 发布命名约定拼直链。
|
||||
它和根 package.json 一起由 `pnpm version:bump` 维护 —— 别在这儿单独改。 -->
|
||||
<meta name="ch-version" content="1.3.2" />
|
||||
<meta name="ch-version" content="1.3.3" />
|
||||
<link rel="icon" href="assets/icon.png" />
|
||||
<link rel="apple-touch-icon" href="assets/icon.png" />
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
<span class="reveal-line reveal-grad">再挑要装的那一份</span>
|
||||
</h1>
|
||||
|
||||
<p class="hero-sub intro-seq" style="--intro-delay: 150ms">班级端 · 服务端 · ClassIsland 插件</p>
|
||||
<p class="hero-sub intro-seq" style="--intro-delay: 150ms">班级端 · 服务端</p>
|
||||
|
||||
<p class="lead intro-seq" style="--intro-delay: 200ms">
|
||||
下面的版本与文件清单是当场从本仓库的 GitHub Releases 读出来的:文件名、体积都照抄发布页,
|
||||
@@ -127,7 +127,6 @@
|
||||
<ul class="hero-badges intro-seq" style="--intro-delay: 350ms">
|
||||
<li>Windows 10/11 x64</li>
|
||||
<li>Linux x64 · Docker</li>
|
||||
<li>ClassIsland 2.x 插件</li>
|
||||
<li>包内自带 Node 运行时</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -139,9 +138,9 @@
|
||||
<div class="wrap">
|
||||
<h2 class="h2">装什么,挑一下</h2>
|
||||
<p class="lead narrow">
|
||||
四个交付物互不依赖安装顺序,但
|
||||
三个交付物互不依赖安装顺序,但
|
||||
<strong>服务端要先有一台机器跑着</strong>
|
||||
,另外三个才连得上 —— 不确定就先切到「服务端」看一眼。
|
||||
,管理端与客户端才连得上 —— 不确定就先切到「服务端」看一眼。
|
||||
</p>
|
||||
|
||||
<div class="dl-groups">
|
||||
@@ -150,7 +149,6 @@
|
||||
<span class="dl-seg-indicator" id="group-indicator" aria-hidden="true"></span>
|
||||
<button class="dl-seg-item" type="button" role="tab" data-value="client">客户端</button>
|
||||
<button class="dl-seg-item" type="button" role="tab" data-value="server">服务端</button>
|
||||
<button class="dl-seg-item" type="button" role="tab" data-value="plugin">插件</button>
|
||||
</div>
|
||||
<p class="dl-pick-note" id="group-note" role="status"></p>
|
||||
</div>
|
||||
|
||||
+21
-35
@@ -44,7 +44,7 @@
|
||||
<a class="brand" href="#top" data-press="0.96">
|
||||
<img class="brand-mark" src="assets/icon.png" alt="" width="32" height="32" />
|
||||
<span class="brand-name">ClassHelper</span>
|
||||
<span class="brand-ver">1.3.2</span>
|
||||
<span class="brand-ver">1.3.3</span>
|
||||
</a>
|
||||
<nav class="topnav" aria-label="页内导航">
|
||||
<span class="nav-pill" aria-hidden="true"></span>
|
||||
@@ -93,7 +93,7 @@
|
||||
</div>
|
||||
|
||||
<ul class="hero-badges intro-seq" style="--intro-delay: 300ms">
|
||||
<li>v1.3.2</li>
|
||||
<li>v1.3.3</li>
|
||||
<li>Windows 10/11</li>
|
||||
<li>Linux · Docker</li>
|
||||
<li>触摸屏可用</li>
|
||||
@@ -176,8 +176,8 @@
|
||||
|
||||
<ul class="facts">
|
||||
<li>装着 SQLite 就能跑,需要时一键换到 MySQL —— 数据也跟着搬过去。</li>
|
||||
<li>课表由教室的 ClassIsland 上报,不用在小助手这边再排一遍。</li>
|
||||
<li>教室把通知交给哪个端,由教室那台机器自己选:客户端、大屏,或者两边都弹。</li>
|
||||
<li>课表由教师在管理端维护,教室客户端实时接收变更。</li>
|
||||
<li>通知实时送达客户端与灵动岛,普通提醒会等待下课再显示。</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
@@ -189,9 +189,9 @@
|
||||
<div class="wrap">
|
||||
<h2 class="h2">装什么,挑一下</h2>
|
||||
<p class="lead narrow">
|
||||
四个交付物互不依赖安装顺序,但
|
||||
三个交付物互不依赖安装顺序,但
|
||||
<strong>服务端要先有一台机器跑着</strong>
|
||||
,另外三个才连得上。 下面的版本与文件清单是当场从本仓库的 GitHub Releases
|
||||
,管理端与客户端才连得上。 下面的版本与文件清单是当场从本仓库的 GitHub Releases
|
||||
读出来的:显示什么,就真能下到什么。
|
||||
</p>
|
||||
|
||||
@@ -210,7 +210,6 @@
|
||||
<span class="dl-seg-indicator" id="group-indicator" aria-hidden="true"></span>
|
||||
<button class="dl-seg-item" type="button" role="tab" data-value="client">客户端</button>
|
||||
<button class="dl-seg-item" type="button" role="tab" data-value="server">服务端</button>
|
||||
<button class="dl-seg-item" type="button" role="tab" data-value="plugin">插件</button>
|
||||
</div>
|
||||
<p class="dl-pick-note" id="group-note" role="status"></p>
|
||||
</div>
|
||||
@@ -262,7 +261,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<p class="pipe-step">两端弹出</p>
|
||||
<p class="pipe-body">灵动岛展开成卡片,ClassIsland 同时全屏提醒,可以语音朗读。</p>
|
||||
<p class="pipe-body">灵动岛展开成卡片,客户端同步显示通知。</p>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
@@ -312,13 +311,13 @@
|
||||
</div>
|
||||
<div class="outcome">
|
||||
<p class="outcome-what">普通通知</p>
|
||||
<p class="outcome-where">教室大屏 · ClassIsland</p>
|
||||
<p class="outcome-where">教室大屏 · ClassHelper</p>
|
||||
<p class="outcome-say" id="o-normal-screen">先收着,下课补弹</p>
|
||||
</div>
|
||||
<div class="outcome outcome-alert">
|
||||
<p class="outcome-what">紧急通知 / 叫人</p>
|
||||
<p class="outcome-where">教室大屏 · ClassIsland</p>
|
||||
<p class="outcome-say" id="o-urgent-screen">立刻全屏弹出,不打断也拦不住</p>
|
||||
<p class="outcome-where">教室大屏 · ClassHelper</p>
|
||||
<p class="outcome-say" id="o-urgent-screen">灵动岛立即展开提醒</p>
|
||||
</div>
|
||||
<div class="outcome">
|
||||
<p class="outcome-what">不管什么时候</p>
|
||||
@@ -346,14 +345,14 @@
|
||||
|
||||
<section class="band band-paper" id="parts">
|
||||
<div class="wrap">
|
||||
<h2 class="h2">一份代码,四个交付物</h2>
|
||||
<h2 class="h2">一份代码,三个交付物</h2>
|
||||
<p class="lead narrow">
|
||||
一个 pnpm monorepo。三端共用同一份类型与权限矩阵,所以不会出现「Web 端说有、客户端说没有」。
|
||||
</p>
|
||||
|
||||
<div class="table-scroll">
|
||||
<table class="sheet">
|
||||
<caption class="sr-only">四个交付物、它们的形态与使用者</caption>
|
||||
<caption class="sr-only">三个交付物、它们的形态与使用者</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">交付物</th>
|
||||
@@ -368,7 +367,7 @@
|
||||
Express 5 + Prisma 7 + Socket.IO,接口前缀
|
||||
<code>/api</code>
|
||||
</td>
|
||||
<td>其它三端</td>
|
||||
<td>管理端与客户端</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Web 管理端</th>
|
||||
@@ -380,11 +379,6 @@
|
||||
<td>Electron + Vue 3,带灵动岛与系统托盘,断网可用</td>
|
||||
<td>教室机器、学生机</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">ClassIsland 联动插件</th>
|
||||
<td>.NET 8 插件,装进教室已有的 ClassIsland 里</td>
|
||||
<td>教室大屏</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -466,7 +460,8 @@
|
||||
<p class="feature-tag">#成绩</p>
|
||||
<h4 class="feature-title">单条、批量,或者整张表导进来,还带排名</h4>
|
||||
<p class="feature-body">
|
||||
重复判定按「同班 + 同学生 + 同考试 + 同课程」,导入报错精确到 Excel 行号。单科排名自动出;这次考试要不要把各科相加排总分榜,你说了算。
|
||||
重复判定按「同班 + 同学生 + 同考试 + 同课程」,导入报错精确到 Excel
|
||||
行号。单科排名自动出;这次考试要不要把各科相加排总分榜,你说了算。
|
||||
</p>
|
||||
</div>
|
||||
<div class="feature-block">
|
||||
@@ -480,21 +475,22 @@
|
||||
<p class="feature-tag">#权限</p>
|
||||
<h4 class="feature-title">谁能做什么,点着勾</h4>
|
||||
<p class="feature-body">
|
||||
建权限组、把账号分进去。没分组的按角色默认生效,分组之后只按组的并集算 —— 既能放权,也能收权。
|
||||
建权限组、把账号分进去。没分组的按角色默认生效,分组之后只按组的并集算 ——
|
||||
既能放权,也能收权。
|
||||
</p>
|
||||
</div>
|
||||
<div class="feature-block">
|
||||
<p class="feature-tag">#教室机器</p>
|
||||
<h4 class="feature-title">一个班一张卡,两条链路一起管</h4>
|
||||
<h4 class="feature-title">统一管理设备、远控与更新</h4>
|
||||
<p class="feature-body">
|
||||
大屏(ClassIsland)和灵动岛(客户端)的状态放在同一张卡上,勾几个班就能批量下发课表或更新;想下发或取回课表,点一下才发生 —— 教室和这边不会互相自动覆盖。
|
||||
统一查看客户端在线状态、版本与远控结果,按设备或班级下发更新;可立即安装,或等待放学后安装。
|
||||
</p>
|
||||
</div>
|
||||
<div class="feature-block">
|
||||
<p class="feature-tag">#大模型助手</p>
|
||||
<h4 class="feature-title">说一句话就发出去</h4>
|
||||
<p class="feature-body">
|
||||
它只把话解析成待确认的卡片,你点了才落库 —— 权限、上课时段、ClassIsland 推送还是原来那套。
|
||||
它只把话解析成待确认的卡片,你点了才落库 —— 权限与上课时段保护仍复用既有流程。
|
||||
</p>
|
||||
</div>
|
||||
<div class="feature-block">
|
||||
@@ -693,16 +689,6 @@
|
||||
<span class="ledger-what">对打包后 / 已安装的那份 EXE 复跑同一套冒烟</span>
|
||||
<span class="ledger-num"><span data-ticker="105">105</span></span>
|
||||
</div>
|
||||
<div class="ledger-row">
|
||||
<code class="ledger-cmd">pnpm verify:classisland</code>
|
||||
<span class="ledger-what">设备令牌、课表上报、提醒下发与回执、镜像契约、幽灵行清理</span>
|
||||
<span class="ledger-num"><span data-ticker="42">42</span></span>
|
||||
</div>
|
||||
<div class="ledger-row">
|
||||
<code class="ledger-cmd">pnpm verify:classisland-plugin</code>
|
||||
<span class="ledger-what">插件清单、注册完整性、C# DTO 与服务端校验逐字段对齐</span>
|
||||
<span class="ledger-num"><span data-ticker="68">68</span></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="ledger-foot">
|
||||
@@ -746,7 +732,7 @@
|
||||
ClassHelper
|
||||
<span>Class Helper</span>
|
||||
</p>
|
||||
<p class="foot-ver">版本 1.3.2 · 源码公开 · 装在你自己的机器上</p>
|
||||
<p class="foot-ver">版本 1.3.3 · 源码公开 · 装在你自己的机器上</p>
|
||||
</div>
|
||||
</div>
|
||||
<nav class="foot-nav" aria-label="相关链接">
|
||||
|
||||
@@ -90,7 +90,6 @@ const DESKTOP_PAGES = [
|
||||
{ name: 'web-homeworks', route: '/homeworks', title: '作业发布' },
|
||||
{ name: 'web-notifications', route: '/notifications', title: '通知发布', pickClass: '高二(3)班' },
|
||||
{ name: 'web-grades', route: '/grades', title: '成绩录入' },
|
||||
{ name: 'web-integrations', route: '/integrations', title: 'ClassIsland 联动' },
|
||||
{ name: 'web-database', route: '/database', title: '数据库管理' },
|
||||
];
|
||||
|
||||
|
||||
Reference in new issue
Block a user