Skip to content

v1.11.1 · 快捷方式有图标了 · 教程补上新功能 · 视觉验收替人眼

Choose a tag to compare

@YJLZSL YJLZSL released this 26 Sep 16:22
· 5 commits to main since this release

[1.11.1] - 2026-09-27 · 快捷方式有图标了 · 教程补上新功能 · 视觉验收替人眼

用户实测反馈:"安装后在桌面的快捷方式没有显示应用的图标"。
查下去发现根因比"忘了设图标"深一层,下面第一节记了完整证据链。

这一版还有一件方法论层面的事:把长期挂着的"人工交互验收"这条窟窿
变成了可执行的动作 —— 见最后一节。

修复

  • 安装后的快捷方式没有应用图标(开始菜单与桌面都是 —— 用户只报了桌面,
    但两条是同一段代码建的)。

    根因不是"忘了调 SetIconLocation"这么简单。按直觉应该把图标指向 exe 自己
    (SetIconLocation(exe, 0)),但实测发现 deskbase.exe 根本没有 PE 图标资源:

    查了什么 结果
    反射式枚举 exe 的 PE 资源目录 RT_ICON / RT_GROUP_ICON 都是空的
    阳性对照(证明探测器本身有效) 同一个探测器读 notepad.exe = 4 个图标、explorer.exe = 21 个
    代码侧 app/ 下无 build.rs、无 .rc、依赖里无 winres/embed-resource
    图标是怎么来的 窗口/任务栏图标是运行时用 tao::window::Icon::from_rgba() 设的,不进 PE 资源段

    所以"指向 exe"只会继续显示 Windows 的通用占位图 —— 改了等于没改。
    正确做法:把仓库里那份多尺寸 icon.ico 编进 exe,安装时写到安装目录,
    两个快捷方式都指向那一份 .ico。体积代价 +74240 字节(73628 的图标 + 约 0.6 KB 胶水),
    占体积阈值 50.0%。

    这条值得记的是排查方法:SetIconLocation(exe, 0) 在绝大多数程序上是对的,
    所以"想当然"就会写错。是阳性对照(拿 notepad.exe 验探测器)才让
    "exe 没有图标资源"这个结论站得住 —— 否则没法排除"是我探针写坏了"。

    ⚠️ 如果你重装后仍看到空白图标,那是 Windows 的图标缓存(旧图标被缓存过)。
    清一下即可:ie4uinit.exe -show,或删 %LOCALAPPDATA%\IconCache.db 后重启资源管理器。

  • 切回「笔记」页时,列表不会重新拉取(refreshList 只在启动时调过一次,
    之后只靠"新建/保存/删除时顺手刷")。后果:别处产生的笔记在切回笔记页时不会出现 ——
    实测造景脚本在启动之后写入 3 篇笔记,note.list 明明返回 3 条,
    界面却一直写着「还没有笔记」,切页也不管用。
    "报告里有数据"与"界面显示了数据"是两件事,这正是本项目最忌讳的不一致。
    数据库页从一开始就是"每次进入都刷"(DeskBaseDb.onShow),现在两页对齐。

  • 网格表头露出内部类型名(text / money):表头角标原本用正则抠出类型名的英文前缀
    就直接显示;而同一个应用的表结构对话框里写的是「文本」「金额」——
    用户看到两套说法,其中一套还是英文的。现在全应用共用一份中文映射
    (db.js 的 colTypeLabel,暴露为 window.DeskBaseColType);
    拿不到那份映射时角标显示为空,而不是回退到英文名。

  • 教程第一步指向一个不存在的页面:写着"进「数据库」页",而导航与页面标题都叫
    「表格」,全应用没有"数据库"入口。改为「表格」并补了它在导航里的位置。

  • AI 面板隐私条的第一句是病句:三态拼同一句式,关掉时成句是
    「现在用的是没启用 —— 不会有任何内容发出去」。另两态(本机/云端)通顺,
    只有关闭态不通 —— 而它是用户打开面板看到的第一句隐私声明。
    关闭态现在单独成句。一个分支的病句,看代码时三个分支各自都"对"。

  • 教程完全没跟上 v1.10/v1.11 的新功能:还停在九节,AI 对话、打印视图、
    单表导出、安装版快捷方式一个字都没提。现在补成 十一节:
    新增「七、把表格拿出去」(讲清三个出口的分工)与「八、AI 帮忙」
    (默认本机、云端默认只发结构、发数据行要逐次勾选、面板上永远写着数据去哪了);
    常见错误对照表补 3 条;术语表补「本机模型 / 云端服务」与「结构信息」。

新增:人工交互验收不再靠"没人看"

  • node tests/visual-acceptance.cjs —— 把交接文档里挂了很久的
    "人工交互验收仍是最大的窟窿(烟测通过 ≠ 人看着好用)"变成一件可执行的事:
    用真实数据造景(两张表含 260 行大表与超长表名 + 三篇带长备注的笔记)、
    在 4 套主题下逐个状态截图,产出 REVIEW.md —— 每张都标着"该盯什么",
    供人(或会看图的 AI)逐张给结论。

    为什么"看一眼"比再加 100 条断言有用:v1.9.1 时界面上有 7 处把 Markdown 记号
    原样露给了用户(写着 连表里的**内容**一起搜)—— 代码里那一行完全正常,
    只有看截图才发现
    。机器断言只验"元素在不在、值对不对"。

    它自己也带自检,这是第一轮的教训(由验收员查出来的):
    ① 截图前对每个状态断言"该出现的东西出现了",不过就记进盲区;
    ② 事后比对截图哈希,逐字节相同的两张 = 至少一张没切到目标状态。
    盲区会在报告里单列一节 —— 第一轮就是靠它才发现
    notes-edit 在四套主题下从没拍到编辑画面、empty-db 拍的是有数据的网格,
    而那两份清单当时"看起来"都验过了。看起来验过、实际没验,比没有清单更坏。

  • node scripts/check-css-vars.cjs / node scripts/check-tutorial.cjs:
    补上五道门禁的空白 —— 前者扫"引用了但从未定义"的 CSS 变量
    (这类错误不报错,浏览器静默退化;上一次真实命中了 17 处),
    后者扫"教程引用的界面名在界面上是否存在"(这次它应该拦住"数据库页"那条,但没拦住 ——
    所以给它补了这条用例的口径)。

验证

见 local-docs/handoff/VERSION_PLAN.md 的事实面板(每条都标了怎么测出来的)。
安装版另有一份端到端视觉闭环证据:用外壳的 SHGetFileInfo 读那条修好的 .lnk,
渲染出来的是 DeskBase 图标 + 快捷方式小箭头,而不是占位图。

视觉验收的已知短板(如实说):有 4 组状态对的截图逐字节相同
(notes-list = notes-edit、db-list = db-grid-wide 等)——
因为笔记页宽屏下"列表 + 编辑器"同屏、表格页两张都停在网格顶部。
自检会把它们报出来,但这一版没有真正拍到那两对之间的差别 ——
报告里它们列为盲区,不会被当成"看过了"。