亮点与主要变更
本版本带来 Windows 写权限修复、4.4212 前端词库补齐、macOS 4.16336 安装修复,以及项目落地页改版。合入 3 个 PR,感谢 3 位贡献者。
1. 补齐 4.4212 前端词库 4,081 条,覆盖率 98.6%(合入 #231 by @happycooltony)
以 4.4212.0 Windows x64 包 ion-dist.asar!/i18n/en-US.json(40,242 条)为分母,新增 4,081 条译文,词库 39,119 → 43,200 条;按入口统计覆盖率 39,661 / 40,242 = 98.56%,未覆盖的 23 条均为路径、品牌名与占位模板。
- 新增 4,081 条中 4,076 条对应 4.4212 的 en-US,其余 5 条来自 4.29;
- 16 条原值为英文的既有条目改为中文(其中 4 条在 4.4212 中仍有引用);
- ICU 占位符、select/plural 分支、
#、HTML 标签、首尾空格逐条比对;英文用\n分段的 29 条保留真实换行; - zh-CN 引号统一为
“”;zh-HK/zh-TW由scripts/convert_traditional.py生成; - 沿用仓库既有的跨版本合并策略:39,119 条中有 2,976 条在 4.4212 中不再引用,本次未删除,以免影响旧版本用户。
2. Windows 写权限改为三段式探测 + takeown 兜底(合入 #232 by @happycooltony)
问题背景:Windows 上 Kimi 装在 C:\Program Files\WindowsApps\<包名>\app 时,默认 ACL 的 owner 是 TrustedInstaller,当前用户有显式 FullControl,但 BUILTIN\Administrators 只继承到 ReadAndExecute。install-windows.bat 经 UAC 提权后以 Administrators 运行,反而写不进去;旧 Grant-WriteAccess 用 -ErrorAction SilentlyContinue 吞掉 Set-Acl 异常,脚本以为权限就绪,继续重建 ion-dist.asar 后才报一个含糊的写入失败。
修复内容:
Test-WriteAccess:实际探测而非读 ACL——目录建临时子目录再删、文件以ReadWrite打开;Grant-WriteAccess:先探测,可写直接返回;否则依次给「当前用户」和BUILTIN\Administrators追加 FullControl,Set-Acl改为-ErrorAction Stop;Allow 已加却仍不可写时清理这两个主体的显式 Deny;Take-OwnershipAndGrant:仍不奏效才用takeown /a+icacls接管所有权并复测;Enable-WriteAccess补齐app.asar、Kimi.exe两个目标,返回明确状态;Assert-WriteAccess在安装和卸载路径共用,拿不到权限直接中止,避免留下「asar 已改、exe 哈希没写回」的半坏状态;- 交互模式执行 takeown 前二次确认,输入
n可跳过且不再对后续路径重复询问;非交互调用默认不接管,必须显式-AllowTakeOwnership或环境变量KIMI_ZH_ALLOW_TAKE_OWNERSHIP=1; - 卸载路径在无备份且无中文资源时跳过权限检查;商店版给出「改用官网安装包」的明确提示;
Remove-LanguageFiles汇总未能删除的条目并提示;- README 写明所有权从 TrustedInstaller 改为 Administrators、卸载不自动恢复、仅重装/升级后由系统重置等副作用。
新增 tests/Test-WriteAccess.ps1 并接入 Windows / Linux 两个 CI job;包含写探测、Deny 恢复、已可写目标不动 ACL、失败中止、非交互拒绝与「拒绝后不再询问」等用例。
3. 支持 macOS 4.16336 的占位前端目录与拆分后的语言白名单(合入 #234 by @yycy134679,修复 #233)
4.16336.0 同时提供 ion-dist.asar(真正前端)与一个只含占位页 index.html 的 ion-dist/ 目录,旧脚本在 ASAR 模式下发现同名目录即退出;同时语言白名单从单个 bundle 拆到 assets/v1/shared-123-*.js(语言解析)和 shared-62-*.js(可用性校验),旧 patch_language_whitelist 命中第一个文件就返回,校验列表仍不含 zh-CN 导致回落英文。
prepare_frontend_target:目录内不含任何*.js时按占位页删除并继续 ASAR 布局;含 JS 仍保留保护性退出。删除发生在copy_app后的临时副本内,不动原包;patch_language_whitelist:遍历全部 chunk 并累计替换,命中后再判定是否失败;LANG_LIST_RE会吞掉已有 zh 项,重复运行幂等;- 新增 3 项回归测试(占位目录与 ASAR 并存、目录含 JS 时仍拦截、白名单分布在多个 chunk 时全部补齐)。
在 4.16336.0 实机完成 --dry-run 与正式安装验证:占位目录被移除,两处白名单补齐,3836 处硬编码文案替换,重打包后 ASAR 完整性校验通过,应用以中文启动。
4. 落地页改版(维护者提交)
docs/index.html 加入 three.js 墨点纸面动画、卡片 3D 倾斜/高光、磁吸按钮、特性卡片聚光、点击墨溅、标题逐字悬停、印章重盖与中英例句轮播;Star 数增加 ungh.cc / shields.io 备用源与本地缓存。尊重 prefers-reduced-motion,CDN 或 WebGL 不可用时静默降级。
验证与测试
- Python 回归测试 26 项全部 PASS;
- Windows PowerShell / Linux CI 全部通过,新增
Test-WriteAccess.ps1; - 4.4212 前端词库:40,242 条键集逐条比对,ICU/换行/引号/繁体生成均通过校验;
- macOS 4.16336.0 真机完成安装与启动验证;
git diff --check无格式问题。
已知遗留(非本版本回归)
- 4.16336 的斜杠命令菜单补丁锚点未命中,该菜单保持英文;
- 4.16336 新增文案仍有部分回退英文,旧版词库键在新版中也有失效;
install-mac.command在set -e下失败仍会「终端闪退」——本版本让 4.16336 不再触发失败,但未来若结构再变仍可能看不到错误。
以上建议另开 issue 跟进。