Repository navigation
Releases: zzz-sc-tech/juting
Release list
v0.7.9
v0.7.9 — 词级时间轴钉位 + 盲听位置线
语料(本轮主菜:行级 → 词级)
- 词级时间戳钉位 v2:20 门 2501 行起点从「能量岛估计」升级为「云 ASR 词级时间戳真实词位」,
承接 v0.7.7/v0.7.8 的行级精修链路再往下压一档精度 - 修复钉位 v1 的传送损伤:标签互换、短句被前推 4~12 秒等回退全部回滚重钉
(算法重写:文本顺序为权威、seal 只收缩不前推、同文多现要求唯一命中) - 六级十套 19 段漏句补行:正文/题干整段缺失(原文对号 + 译文)
- 两处数据纠错:#55 组播报误写成 Q1 题干(改回模板 + 重钉)、#1012 游离重复 Q21 删除
- 听感验证修复 6 门:锚点起播 + 题干错位钉位
审计指标(97 门全量):锚点源行 1391/1391、区间首句 1194/1194、开场报头 194/194 全部 100%,
结构违规 0,门禁 6/6 PASS。
词典 / 听写
- 内置词典重生成:10113 词条(+3022)、词形映射 3186、语境例句 24147 条(97 课全量刷新)
- 听写词表纳入四级:此前只读六级 seed,四级课程听写会误放行错拼
功能
- 盲听位置线:泛听阶段关闭字幕时,声波纹理上显示当前位置——锚点标签 + 「第 N / M 句」,
随播放推进平滑移动。盲听不再"失位"。
下载选择
| 包 | 适合 | 体积 |
|---|---|---|
win-lite |
只装程序(自选语料/已有数据) | ~68 MB |
win-cet4 |
只要四级(49 门) | ~496 MB |
win-full-cet6 |
要六级(48 门) | ~808 MB |
win-full-cet6cet4 |
六级 + 四级全量(内部/自用) | ~1237 MB |
老用户点软件里「一键更新」即可——本轮音频没变不重下媒体层,时间轴精修、词典、
盲听位置线全部在 ~5-9 MB 程序层里。
v0.7.8
v0.7.8 — 译文 100% + 逐句音频精修补全
语料
- 四六级学习句译文 100% 双满分(四级 7843 句、六级 8489 句全译;此前六级新课译文只覆盖 80.1%)
- 六级十套缺行补齐 30 行:开场报头、Directions 整段、"Then mark…" 尾句、题组播报 7 条
(缺播报=锚点缺失)——文本用标准考试模板 + MiMo 对号入座 - 逐句↔锚点全量精修(承接 v0.7.7):锚点源行/首句/开场报头 100% 对齐、拆裂行清理、
531 行滑窗词级钉位、重复词去重 76 处("really really" 等合法英语全数保留) - 播报题号全库对表:646 组与音频逐条 diff,零冲突
工具链(面向维护者)
scripts/audit/check-all.mjs:门禁六连一条龙scripts/local/release.mjs:发版一条龙(本版本即由它打包)scripts/local/dispatch-translations.mjs:批量翻译调度(并发限频保护)- GitHub Actions 自动发版(试验性)
下载选择
| 包 | 适合 | 体积 |
|---|---|---|
win-lite |
只装程序(自选语料/已有数据) | 68 MB |
win-cet4 |
只要四级(49 门) | ~496 MB |
win-full-cet6 |
要六级(48 门) | ~808 MB |
win-full-cet6cet4 |
六级 + 四级全量(内部/自用) | ~1237 MB |
老用户点软件里「一键更新」即可,本轮只下程序层 ~5-9 MB(音频没变,不会重下媒体层)。
v0.7.7 — 逐句↔锚点对应精修:点锚点第一声就是该单元开头
v0.7.7 — 逐句 ↔ 锚点对应精修:点锚点第一声就是该单元开头
这次修什么
前几版把字幕的文本和时间轴都修好了,但点对话锚点跳转的体验还有四块空白:
- 开场报头偏 2~3 秒:点「Section A / Conversation 1」先听到几秒静音或上一段尾巴
(whisper 对开头几秒整段漏转写,行只能插值) - 题干行截开头:点题组锚点后,第一句题干播放时开头被截掉最多 6.8 秒
- 正文行系统性偏晚:retime 管线的「字符比例铺岛」假设失准,约 500+ 行点行
播放时开头截、逐句连播时尾巴带上一句 - 行级文本缺陷:重复词("As a As a"、"two Two")、拆裂对("Only once." 单独成行)、
域层模式外的说明段变体泄漏进学习池
怎么修的
三层 MiMo 逐岛钉位(音频词图 > 官方原文 > 现存文本),全程缓存、复跑零调用:
- 锚点级:开场报头 ±45s 标签词匹配(含同音变体——MiMo 把 "Section A" 听成
"Section Eight")、题组播报碰撞细分、标签前向搜索("Conversation Two" 播报在行后 52s) - 正文行滑窗级:对错位行所在的合并岛滑 2s 窗逐窗转写,行的前 3 词出现在窗文本
头部即锁定起点——用纯文本 ASR 逼近词级时间戳,531 行钉正 - 题号全库对表:646 条题组播报与音频逐条 diff,零冲突(#16 型原文题号错无残留)
外加拆裂对合并、幻影行删除、重复词去重(听证序列计数判定,"really really" /
"had had" / 同位语等合法英语全数保留)。
验证结果
| 指标 | 修前 | 修后 |
|---|---|---|
| 锚点源行 ±1.2s 对齐率 | 97.22% | 100% |
| 开场报头(点锚点第一声) | 184/194 | 194/194 |
| 区间首句 ±1.5s | 97.61% | 100% |
| 指令行越界 | 40 | 0 |
| 正文行 ±2s | 92.99% | 93.96%(另 531 行窗口级钉正) |
四门禁 + 缺题检查 + 单调/重叠/负时长全 PASS;审计器与三精修器复跑幂等(字节一致 / 零变更零调用)。
范围
四六级全部 97 门(49 + 48),行数 18945 → 18883(-62,拆裂合并与幻影删除),
MiMo 总调用约 11800 次全部落缓存。详见 temp/REPORT-anchor-refine.md。
下载选择
| 包 | 适合 | 体积 |
|---|---|---|
win-lite |
只装程序(自选语料/已有数据) | 68 MB |
win-cet4 |
只要四级(49 门) | 496 MB |
win-full-cet6 |
要六级(48 门) | 808 MB |
win-full-cet6cet4 |
六级 + 四级全量(内部/自用) | 1237 MB |
老用户点软件里「一键更新」即可,本轮只下程序层 ~5-9 MB(音频没变,不会重下媒体层)。
v0.7.6 — 六级补齐 2015/2016 十套 + 四六级逐句对齐精修
v0.7.6 — 六级补齐 2015/2016 十套 + 四六级逐句对齐精修
语料
- 六级新增 2015/2016 年 10 套真题(48 门全):2015-06×3、2015-12×3、2016-06×2、2016-12×2,每套 25/25 题干齐全
- 四六级逐句对齐精修:以「词组 ↔ 语音岛 DP 对齐」重铺词时间,题干/播报行逐岛 MiMo 转写钉位——四级对齐率 86%→98.5%(偏晚 53 条→18,最重 6.8s→1.7s),六级 97%→99%(截开头清零)
- 全库播报残片修复:33 行截断播报补全 + 1 对拆裂行合并;#16 原文题号范围错误按音频纠正(22-25→23-25)
- #16 等课程的题组播报现在与音频逐字一致
界面
- 精听/难点复习的未揭晓提示(「点击播放逐句揭晓,或按 R 显示原文」)改为居中空态模块,不再缩在卡片一角
下载选择
| 包 | 适合 | 体积 |
|---|---|---|
win-lite |
只装程序(自选语料/已有数据) | 68 MB |
win-cet4 |
只要四级(49 门) | 293 MB |
win-full-cet6 |
要六级(48 门,含 2015/2016 新增十套) | 329 MB |
每个 flavor 均提供三层增量包:-update.zip(程序)/ -deps.zip(依赖)/ -media.zip(音频,lite 无此项)。老用户可只下 update + media 增量升级。
SHA256SUMS.txt 为全部资产的校验和。
v0.7.5 — 四级字幕时间轴重建:修掉「播放本句只有 1 秒」
v0.7.5 — 字幕时间轴重建:修掉「播放本句只有 1 秒」
这次修什么
v0.7.4 修好了四级字幕的文本(找回 26% 丢失内容、补回标点、修好题号结构),但时间轴坏了:
- 145 行被压成 0.5 秒(41/49 课),点「播放本句」只能听到一小段甚至静音
- 典型:#1038 的
Question 1只占 0.98 秒,而紧随的Question 2占了 27.92 秒 - 887 行(9.5%)的时间区间落在音频静音上
原因是 whisper 对整段 20 分钟音频做分段时,段边界会横跨 15~20 秒的答题停顿;字幕行按字符比例铺在这段上,就被摊进了静音。
怎么修的
按长停顿切块重做时间轴,文本一个字没改:
- 能量检测找出真实语音段(-48 dBFS)
- 按 >3 秒的停顿切块,块内再按最大停顿切成 ≤55 秒的小块
- 每个小块:MiMo 转写拿准确文本,whisper 拿词级时间,两者对齐
- 全课词序与现有字幕文本对齐,重建每行起止
- 行边界吸附到真实语音段
cet4 共 49 课、1920 次 MiMo 调用、0 失败。
验证结果
| 指标 | 修前 | 修后 |
|---|---|---|
| 压缩行(<0.1 秒/词) | 145 | 0 |
| 落在静音的行 | 887(9.5%) | 76(0.8%) |
| 完全落在静音 | 287 | 47(多为 "A." "B." 这类不朗读的选项标签) |
门禁全过:
node scripts/audit/check-invariants.mjs # 87/87 PASS
node scripts/audit/check-duration-sanity.mjs # 0 违例
node scripts/audit/check-timeline-speech-overlap.mjs cet4 # 0.8% PASS
node scripts/audit/check-timeline-speech-overlap.mjs cet6 # 0.2% PASS题号覆盖仍是 cet4 392 组 / cet6 266 组、零缺题;时间戳单调、无重叠、无负时长。
抽检 4 条随机样本,把新窗口切出来单独做 ASR,结果与字幕文本逐字一致:
#1002 l19 字幕 Question one: Why were many passengers stranded at the railway station?
音频 Question 1. Why were many passengers stranded at the railway station?
#1038 l20 字幕 Question 1: What may be the reason that friends are similar...
音频 Question 1. What may be the reason that friends are similar...
新增门禁
scripts/audit/check-timeline-speech-overlap.mjs —— 按能量检测语音段,检查每行时间是否真的落在语音上。现有门禁只查时间戳自洽(单调/不重叠/正时长),查不出这类问题。
影响范围
- 只有
presets/cet4/seed.json的时间戳变化(v20261021.2 → v20261022.3),文本、译文、题号、锚点结构全部不动 scripts/audit/data-contract.mjs修了saveTranscript的写盘目标:原来硬编码 cet6,写四级会覆盖 cet6 seed- 六级语料本次未改(其时间轴本来就正常)
v0.7.4 — 四六级语料重建:找回丢失的 26% 内容
这一版在修语料
上一版的字幕有严重的底层问题,用 MiMo ASR 与本地 whisper 交叉核验后发现:音频里说的话,有四分之一没进字幕。
以四级 2015年6月第1套为例,音频里是:
At least 16 people were killed and up to 150 trapped under the rubble when a factory collapsed in an industrial area of Lahore in eastern Pakistan.
字幕里是:
t least 16 people were killed and up to 150 trapped under the rubble...
首字母 A 丢了。这不是个例——四级 49 套里有 1,098 句(14.8%)丢了首字母,1,042 句(14%)在句子中间被切断,点「播放本句」只能听到半句。
根因
原语料的 ASR 管线丢标点、丢词:四级原数据 85,555 词,音频实际 117,957 词,少了 26%。标点全丢导致句子边界消失,切分和锚点跟着一起坏。
怎么修的
用 MiMo ASR 按 60 秒分块重新转写(文本准确),再用 whisper 的词级时间轴对齐(时间准确),两者合成新字幕。
四级 49 套全部重建:
| 指标 | 修复前 | 修复后 |
|---|---|---|
| 词数 | 85,555 | 117,957(+38%) |
| 丢首字母 | 1,098(14.8%) | 2(0.02%) |
| 句子被切断 | 1,042(14.0%) | 3(0.03%) |
残留的 111 个问题点(缩写误切、块边界、重复碎片)逐个用 MiMo 核验,修掉 109 个。
六级 38 套基线较好(丢首字母 0.8%),核验 196 个疑点后修掉 19 个真问题。
译文补全
字幕重建后行边界全变,原译文全部失效。用 MiMo 重新翻译:四级 8,391 条、六级 7,603 条。
抽检 400 条长句核验质量,2.5% 有瑕疵(多为「过度具体化」),已全部重译修正:
| 原译 | 修正 |
|---|---|
| 颜色和图表 | 颜色和地图 |
| 这些空间由大脑构建 | 这些气泡由大脑构建 |
| 把压岁钱存进去 | 把礼金存起来 |
词典扩容
内置词典原来只收六级词汇,四级的 8,057 个词里有 37% 查不到释义(abolish、acid、acquaintance 都查不到)。
现在两个库都收,并加了「所有格/连字符回退词根」规则(company's → company、four-inch → inch):
| 改前 | 改后 | |
|---|---|---|
| 词条数 | 7,368 | 9,567 |
| 未命中率 | 6.78% | 2.13% |
下载哪个
| 你考什么 | 下载 |
|---|---|
| 四级 | juting-v0.7.4-win-cet4.7z(293 MB) |
| 六级 | juting-v0.7.4-win-full-cet6.7z(276 MB) |
| 不确定 | juting-v0.7.4-win-lite.7z(68 MB,空课程,可后续导入) |
老用户:客户端「设置 → 检查更新」会自动下载增量包(程序层 5MB + 媒体层 217-238MB),不需要重下整包。
已知问题
- iOS Safari 未验证(无设备)
- 六级译文是原装的,本轮只做了问题点精修,未整体重译
- 仍有约 2% 的句子存在跨词切断(如
An iPhone+SE with),规则修复会误伤,保留原样
校验
SHA256SUMS.txt 已随附。数据完整性已验证:两库时间戳单调、零重叠、零负时长。
v0.7.3 — 界面可用性大修 + 真机验收修复
这一版做了什么
v0.7.2 之后做了一轮完整的界面可用性审查与修复,共 6 个提交、约 60 个文件。核心是「用起来不别扭」,不是加功能。
界面与层级
- 首页重排:今日进度做成 28px 主数字 + 进度条占第一视觉位;「继续学习」提到趋势图上方;右栏收敛为 3 张卡(≥2 门在学才出现「课程完成度」)
- 考试页:0 答时「交卷」降为描边;播放器移到题号与选项之间;不可作答时给一句能执行的提示
- 状态不再只靠颜色:当前阶段 = 左侧竖条 + 实心序号,已完成 = 对勾角标,句子的难点/掌握 = 图标 + 读屏文本
- 四主题对比度:次级灰字从 1.2–2.1:1 提到 4.95–5.28:1;极简白主题下泛听原文从 1.48:1 → 7.73:1(之前整页英文几乎看不见)
- 字号收敛:26 档声明 → 8 档(12/13/14/15.5/18/24/28/40),字重 6 档 → 4 档
手机
- 390 宽下泛听媒体区 100px → 310px,阶段导航 350px → 52px
- 题号导航从 148px 竖网格改成 56px 单行横滚,切题后自动滚到导航下方
- 横屏改章节窄轨:正文起点从视口外拉回屏内
- 触控目标统一 44px(含歌词插旗、倍速项、菜单项、侧栏关闭)
可用性与无障碍
- 键盘可用:章节列表改 roving tabindex(99 个 tab stop → 3 个),↑↓/Home/End 移动,Shift+F10 唤出菜单
- 加载态分三态,不再「请求还没回来就说没有课程」
- 弹层支持 Esc 关闭并把焦点还给触发按钮;焦点环改成 2px 实色描边
- 空态统一成「图标 + 标题 + 说明 + 主次按钮」,文案去掉「管理端 / 索引 / 服务已启动」这类黑话
真机验收(Android Chrome)
- 修掉词典侧栏整体跑到屏幕外、底部「加入生词本」点不到的问题(入场动画的
fill-mode给 fixed 后代新建了包含块) - 侧栏改用
100dvh;关闭按钮 26px → 44px - 弯撇号不再把
don’t拆成don+t(点词会查到错误释义) - 320 宽下文档被隐藏元素撑宽 52px 的问题
其它
- 生词本新增本地筛选(词形 / 释义),搜索页的生词结果可直接带词跳转
- 清理 39 条没人用的界面文案键;术语统一(「标记难点 / 移出难点 / 已掌握」「原文」)
下载哪个
| 文件 | 用途 |
|---|---|
juting-v0.7.3-win-full-cet6.7z |
全新安装:程序 + 便携 Node/MySQL + 六级 38 套真题(含音频) |
-update.zip |
已有安装的程序层更新(约 5 MB) |
-deps.zip / -media.zip |
依赖层 / 媒体层,客户端会按清单哈希自动判断是否需要下载 |
SHA256SUMS.txt |
校验和 |
已装 v0.7.2 的用户在设置页点「检查更新」即可:依赖与媒体没变,只会下载约 5 MB 的程序层。
已知未验
iOS Safari 未做真机验证(本版有一处 animation-fill-mode 改动与 100dvh,iPhone 上建议确认词典侧栏位置与底部按钮是否可见)。
v0.7.2 — 点词查词典 + 数据备份 + 学习动效
v0.7.2 — 点词查词典 + 数据备份 + 学习动效
本 Release 为六级版(38 套六级真题)。
三批功能:点词查词典 / 四项增强(备份·听时长·错题·复习·搜索)/ 动效打磨。
一、点词查词典 + 生词本增强
以前收生词要从整句里自己挑词、再手动敲一遍。现在改成点句中任意单词:
- 右侧滑出侧栏,显示音标 / 词性 / 中文释义 / 考试标签(六级·考研·雅思…)/ 本库例句
- 例句来自本库 38 课的真实语境(跨课各取首句,最多 6 条),点击可跳转该课该句
- 侧栏内一键「加入生词本」,再点同一词收起
- 内置精简词典:7368 词条 + 1762 词形映射(1.3MB),只收本库出现的词
- 词形自动归位:
children's → children、patients' → patient、foods → food - 未收录词(专有名词)优雅降级显示「未收录」,仍可收藏
- 词形自动归位:
二、四项增强
学习数据导出 / 导入(防丢失)
设置页新增「数据」区块:一键导出全部学习进度为 JSON 文件,可导入恢复。
- 支持覆盖与合并两种模式(合并时进度取并集、生词取并集、成绩去重追加)
- 畸形文件会被明确拒绝,不会写入任何数据
- 启动时自动保留最近 3 份进度快照(误清缓存时兜底)
首页「累计所听时长」
统计区新增第 5 格:累计时长 + 今日时长。按墙钟计时(不乘倍速),
切走标签页自动停止累计。
错题档案
- 首页「你最常错的题」:跨场次聚合反复错的题(需 ≥2 场或同题错 ≥2 次)
- 交卷后「成绩历史」:历场日期/得分/错题/未答/各 Section 分布 + 得分走势折线
生词复习调度
生词本顶部新增「今日待复习 N 词」,按遗忘曲线 1/3/7/15 天 安排:
- 复习卡用收藏时的原句挖空出题(不脱离语境背单词)
- 「认识」→ 间隔推后;「不认识」→ 归零重排;连续 4 次 → 标记「已掌握」
- 老生词自动迁移,首次打开即可复习
跨课全文搜索
TopBar 放大镜或 /search:搜索句子 / 生词 / 课程标题,命中高亮,
点击结果直接跳到该课精听并定位到该句。
三、动效打磨
- 句子切换:上下句带方向感的滑入(200ms),不再瞬间替换
- 阶段切换:舞台淡入 + 横向位移
- 列表增删:生词本删除后其余行平滑上移,新增项缩放淡入
- 波形播放头:从跳格改为连续滑动(
transform走合成器,不阻塞主线程) - 按钮反馈:按下轻微缩小 + 回弹
- 无障碍:尊重系统「减少动态效果」设置,动画自动降为瞬时
四、资产说明
| 文件 | 用途 |
|---|---|
juting-v0.7.2-win-full-cet6.7z |
首次安装用这个,需 7-Zip 解压 |
juting-v0.7.2-win-full-cet6-update.zip |
程序层(客户端一键更新必下) |
juting-v0.7.2-win-full-cet6-deps.zip |
依赖层(按需,客户端自动判断) |
juting-v0.7.2-win-full-cet6-media.zip |
音频层(按需,客户端自动判断) |
SHA256SUMS.txt |
校验和 |
从 v0.7.1 升级:音频未变,客户端只会下载程序层(约 5MB)+ 依赖层(45MB)。
若已是最新的依赖(本次有依赖变化),会完整下载一次 45MB。
五、数据
- 六级版:38 门 / 2017—2026 真题 / 字幕 7690 行 / 译文覆盖 99% / 题干锚点映射 100%
- 词典:7368 词条 + 1762 词形映射,1.3MB
六、验证
- 构建通过(JS 1830.96 kB / gzip 611.87 kB)
- 浏览器实测:点词侧栏内容齐全、收藏落盘、跨课例句跳转、搜索命中与空态、
导出文件完整、畸形导入被拒、动效 computed style 生效(line-enter-next 0.2s/
stage-enter 0.2s/ 播放头 transform 推进)、reduced-motion 降为 0.01ms - 三服务启动正常(8100 API / 8101 学习端 / 8102 管理端)
v0.7.1 — 体积再瘦身:安装包与磁盘双降
v0.7.1 — 体积再瘦身:安装包与磁盘双降
本 Release 为六级版(38 套六级真题)。
在 v0.7.0 增量更新的基础上,继续压缩安装体积与下载量。
这次省了什么
| 项 | v0.7.0 | v0.7.1 | 省下 |
|---|---|---|---|
| 安装后磁盘占用 | 约 1.26 GB | 约 1.0 GB | 约 260 MB |
依赖包 -deps.zip |
123 MB | 约 55 MB | 约 68 MB |
完整包 .7z |
299 MB | 约 240 MB | 约 60 MB |
程序包 -update.zip |
3.6 MB | 3.6 MB | — |
怎么做到的
① 依赖树按「运行期闭包」裁剪
前端与管理后台都以预编译好的产物提供服务,运行期根本不需要 React、antd、
Vite、TypeScript、ESLint 这些构建期依赖。改用白名单制:从真正的运行入口出发
递归展开依赖图,只保留闭包内的包(node_modules 解压后 365 MB → 141 MB)。
顺带清掉三个死依赖:resend(邮件服务,源码零引用)、mysql v2(已废弃,
实际用 mysql2)、以及一批 Expo/React Native 残留。
② MySQL 单机自用调参
| 参数 | 原值 | 新值 | 原因 |
|---|---|---|---|
innodb_redo_log_capacity |
100 MB(默认) | 32 MB | 数据库才 16 MB |
skip-log-bin |
关闭→开启 | 开启 | binlog 是为主从复制设计的,单机无用且持续增长 |
| 临时表空间上限 | 无限增长 | 64 MB | 防跑飞 |
innodb_buffer_pool_size |
256 MB | 128 MB | 省的是内存不是磁盘 |
实测:MySQL 数据目录 219 MB → 约 140 MB,数据完好(38 门课程校验通过)。
③ 这些改动对老用户同样生效
MySQL 配置由启动器每次启动时生成,存量安装下次启动即生效,无需重装。
依赖裁剪则通过更新包传递——并且本版改了依赖门控的判据(见下),
确保老用户能真正拿到裁剪版、且本地多余依赖会被清理掉。
依赖门控改版(重要)
v0.7.0 用 package-lock.json 的哈希判断「依赖有没有变」。但裁剪只改打进包的内容,
不改 lock 文件——照旧判据,老用户会得出「依赖没变」从而跳过依赖层,
磁盘永远瘦不下来。
本版改为:
- 更新清单里带依赖文件清单的哈希与归属包名清单;
- 客户端比对本地标记(更新器安装成功后写入),哈希不同才下载;
- 依赖层安装后清理本地多余的旧依赖(覆盖安装只覆盖不删除),
工作区包@juting/*永不删。
结果:老用户升级到本版时会下载一次依赖包(约 55 MB),之后本地多出来的
构建期依赖会被自动清掉,释放约 220 MB 磁盘。
资产说明
| 文件 | 用途 |
|---|---|
juting-v0.7.1-win-full-cet6.7z |
首次安装用这个,需 7-Zip 解压 |
juting-v0.7.1-win-full-cet6-update.zip |
程序层(客户端一键更新必下) |
juting-v0.7.1-win-full-cet6-deps.zip |
依赖层(按需,客户端自动判断) |
juting-v0.7.1-win-full-cet6-media.zip |
音频层(按需,客户端自动判断) |
SHA256SUMS.txt |
校验和 |
验证
改动涉及依赖裁剪,风险在「裁掉运行期要用的包」。因此做了真实启动验证
(不是静态检查):裁剪后的目录完整跑通全栈启动——数据库初始化、38 门课程导入、
后端健康检查、学习端与管理端 HTTP 200、音频流实测返回 audio/ogg 与完整字节数、
课程数据接口返回完整元数据。
过程中实测抓到两个会导致崩溃的裁剪 bug(作用域包容器目录被误删、
vite preview 依赖的 @vitejs/plugin-react 被误裁),均已修复并补了回归测试。
数据
- 六级版:38 门 / 2017—2026 真题 / 字幕 7690 行 / 译文覆盖 99% / 题干锚点映射 100%
v0.7.0 — 增量更新:日常更新只需几 MB
v0.7.0 — 增量更新:日常更新只需几 MB
本 Release 为六级版(38 套六级真题)。
从 v0.6.0 起更新不需要重新下载音频。
更新包拆成三层,只下变化的部分
以前每次更新都要下载完整的更新包(466 MB),哪怕只改了几行程序代码。
本版把更新包拆成三层,客户端先比对本机已有的内容,只下载确实变化的那层:
| 层 | 体积 | 什么时候需要下载 |
|---|---|---|
| 程序 | 3.6 MB | 每次更新 |
| 依赖库 | 123 MB | 仅依赖库本身有更新时 |
| 音频 | 217 MB | 仅音频有更新时 |
实测效果:日常更新从 466 MB 降到 3.6 MB(约 129 倍)。
音频与依赖库留在本机原样不动,不再重复下载。
判断完全自动,你不需要做任何选择。update.log 里能看到每层「已就位,跳过」或「下载」的明细。
顺带修掉一处浪费
旧版更新包里包含了便携 MySQL 与 Node 运行时(约 122 MB),
但覆盖安装时这两个目录本来就是受保护的、永远不会被替换——
等于每次更新白下 122 MB。本版已从更新包中排除。
兼容与过渡
- 旧版客户端可以无缝升级到本版:v0.6.0 的「检查更新」会照常选中本版的程序包,
完成升级后新逻辑自动生效,从下一次更新起才开始省流量。 - 完整安装包(
.7z)与更新包的覆盖安装语义不变,学习数据(temp/runtime/)始终不受影响。 - 更新包内的媒体文件采用「只补缺失、不覆盖已有」策略,不会破坏本机已就位的音频。
资产说明
| 文件 | 体积 | 用途 |
|---|---|---|
juting-v0.7.0-win-full-cet6.7z |
299 MB | 首次安装用这个,需 7-Zip 解压 |
juting-v0.7.0-win-full-cet6-update.zip |
3.6 MB | 程序层(客户端一键更新必下) |
juting-v0.7.0-win-full-cet6-deps.zip |
123 MB | 依赖层(按需,客户端自动判断) |
juting-v0.7.0-win-full-cet6-media.zip |
217 MB | 音频层(按需,客户端自动判断) |
SHA256SUMS.txt |
— | 校验和 |
手动更新(网络受限时):下载
.7z完整包,解压后全部覆盖到安装目录即可。
客户端一键更新会按需自动取用后三个文件,无需手动下载。
数据
- 六级版:38 门 / 2017—2026 真题 / 字幕 7690 行 / 译文覆盖 99% / 题干锚点映射 100%
技术说明
分层与门控的完整设计、验证数据与踩坑记录见
docs/增量更新方案.md。