Skip to content

v0.8.0 — 工程重构(绘制度量层/拆大文件/i18n自检)+ 自动更新

Choose a tag to compare

@ExpertKT ExpertKT released this 15 Sep 12:43
· 58 commits to main since this release

v0.8.0

这一版没加新功能,做的是工程上的三件事(避免项目变成没人敢改的"屎山"),外加一个自动更新

一、绘制度量层 DrawKit

项目里同一个错误犯过四次:测量用一套参数、绘制用另一套 → 文字被裁、框和图形错位、预览正常但导出跑偏。
根子不是"写错了",而是约定没有被强制

新层把「量」的结果封装成 Fit 值(字体、字号、样式都在里面),画的时候只接受它 —— 调用方拿不到单独的字号,也就没法"另起一套"去画。错误在结构上写不出来。

配套 tests/drawkit-test.cs(项目第一套像素级自动化测试,6/6 通过),当场逼出两个没预料到的问题:字号与宽度不是线性关系(改迭代缩小)、缩到下限仍放不下时会一直溢出(改逐字截断加省略号)。

同时全线改用 GDI+:实测 GDI 的 DrawText 在 2560×1440 画布上单次 9.2ms(小画布 0.43ms,差 21 倍)。

二、拆大文件

文件 拆前 拆后
75-SettingsForm.cs 1607 1057
61-WheelForm.Draw.cs 1205 357
51-OverlayForm.Annotate.cs 1194 616
50-OverlayForm.cs 1000 763
64-WheelForm.Input.cs 769 593

每一处都用同一个标准验证:拆完编译,exe 大小与拆分前完全一致(322,048 字节)—— 证明是纯搬移、零行为变化。

三、多语言自检脚本

tools/check-i18n.ps1:扫漏翻、扫"同一个中文配了不同英文"(翻译漂移)、扫长度异常。实测 395 条全部健康。

四、自动更新(不花一分钱

不需要服务器、不需要代码签名、不需要任何付费账号。

检查(匿名读 GitHub Releases,限流 60 次/小时够用)→ 下载到临时目录 → 用 --apply-update 启动"更新器模式"的自己:等主进程退出 → 覆盖文件 → 重新拉起主程序 → 自己退出。

升级是覆盖已有文件,不触发 SmartScreen。托盘菜单新增「检查更新」,设置里保留开关(启动时静默检查,只在新版时提一句)。
自己实现了 ZIP 解压兜底(DeflateStream)—— 因为编译目标是 .NET 4.0,反射调不到系统解压组件,这个坑是测试发现的。

下载

  • SnapWheel-v0.8.0-full.zip — 完整版(含万能键)
  • SnapWheel-v0.2.22-nokey.zip — 无万能键版