Repository navigation
v1.11.1 · 快捷方式有图标了 · 教程补上新功能 · 视觉验收替人眼
[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 等)——
因为笔记页宽屏下"列表 + 编辑器"同屏、表格页两张都停在网格顶部。
自检会把它们报出来,但这一版没有真正拍到那两对之间的差别 ——
报告里它们列为盲区,不会被当成"看过了"。