docs(计划): P2a/P2b 归属入册(鸿蒙侧,参照物是 WebUI 已成的形态);产物自证两条报错补"最常见的错误修法"
1. **归属弄反了**(pi 2026-09-14):联系人卡片视图 / 收件箱按会话折叠 / 删平级 tab **全在鸿蒙侧落地**;WebUI 的 `ContactPanel.tsx`(列表/卡片两视图)、`lib/mailGroups.ts` (按会话折叠)都是**参照物**,WebUI 根本没有平级会话入口。已写进计划文档, 并写明「收件箱只取 50 封」那件事**不与 P2a 互相阻塞**(它是 WebUI 现存缺陷,单独查)。 2. **§14 落到产物自证这一族**:`build-stamp` / `packaging` 的报错原先只有「正确修法」 (重构建 / 重打包),补上**最常见的错误修法** —— 别改 `BUILD_INFO.json` 的 `gitRev`/`srcHash`、别改断言或塞一份手抄 dist:那是把判据废掉。
This commit is contained in:
@ -128,7 +128,10 @@ test('★ 产物必须自报来源:BUILD_INFO 精确比对(不是比时间
|
|||||||
` 重构建:cd client/electron && npm run build(注意别把它的退出码丢在管道里)`);
|
` 重构建:cd client/electron && npm run build(注意别把它的退出码丢在管道里)`);
|
||||||
if (now.gitRev && info.gitRev) {
|
if (now.gitRev && info.gitRev) {
|
||||||
assert.equal(info.gitRev, now.gitRev,
|
assert.equal(info.gitRev, now.gitRev,
|
||||||
`产物是在另一个提交上构建的(产物记 ${info.gitRev},当前 HEAD ${now.gitRev})—— 重构建再复核`);
|
`产物是在另一个提交上构建的(产物记 ${info.gitRev},当前 HEAD ${now.gitRev})—— 重构建再复核。` +
|
||||||
|
`\n**别去改 BUILD_INFO.json 里的 gitRev / srcHash 了事** —— 那是把这条判据废掉` +
|
||||||
|
`(§14 说的「最常见的错误修法」):产物自证的意义就是「产物必须来自当前源码」,` +
|
||||||
|
`改记录只会让两者不一致却看不出来。正确修法只有一个:重跑构建。`);
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* `gitDirty` 只**展示**不判定:共享工作区常年是脏的(并发写作者的未提交改动),
|
* `gitDirty` 只**展示**不判定:共享工作区常年是脏的(并发写作者的未提交改动),
|
||||||
|
|||||||
@ -87,7 +87,9 @@ test('★ 安装包里的 dist 必须与当前构建一致(否则装上去的
|
|||||||
[],
|
[],
|
||||||
'安装包里的 dist 与当前构建不一致(前端改了但没重打包):\n' +
|
'安装包里的 dist 与当前构建不一致(前端改了但没重打包):\n' +
|
||||||
` 缺:${missing.join(', ')}\n` +
|
` 缺:${missing.join(', ')}\n` +
|
||||||
' 重打:npx electron-builder --linux -c.electronDownload.isVerifyChecksum=false'
|
' 重打:npx electron-builder --linux -c.electronDownload.isVerifyChecksum=false\n' +
|
||||||
|
' **别去改这条断言、也别往包里塞一份手抄的 dist 了事** —— 那是把判据废掉\n' +
|
||||||
|
' (§14 说的「最常见的错误修法」):包里的 dist 必须就是当前构建的产物。'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -1043,3 +1043,18 @@ pi 的疑问:「系统那三个 `mask_*` —— light/regular/thick 是**浓
|
|||||||
不标的多半是被 `git add -A` 卷进去的。判据在 `test/commit-hygiene.test.mjs`:
|
不标的多半是被 `git add -A` 卷进去的。判据在 `test/commit-hygiene.test.mjs`:
|
||||||
基线 = 该判据文件自己的引入提交(**历史不改**,规则管从今往后),
|
基线 = 该判据文件自己的引入提交(**历史不改**,规则管从今往后),
|
||||||
配分类逻辑的合成自检(否则"解析没跑起来"时会全绿)。
|
配分类逻辑的合成自检(否则"解析没跑起来"时会全绿)。
|
||||||
|
|
||||||
|
## P2a / P2b(鸿蒙侧 —— pi 2026-09-14 明确归属:**不是** WebUI 的活)
|
||||||
|
|
||||||
|
三件事的**落地全在鸿蒙**;WebUI 那边已经是目标形态,是**参照物**不是待办:
|
||||||
|
|
||||||
|
| 项 | 参照物(WebUI,已经是目标形态) | 鸿蒙要做的 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| **P2a** 联系人页两个视图 | `client/electron/src/components/ContactPanel.tsx` + `useContactStore.view`(列表 / 卡片) | `ContactsTab` 补**卡片视图**:承接现在鸿蒙平级「会话」tab 的东西(主题、最新一封摘要、是人还是 Agent、`PermissionChip`、`BudgetChip`)—— 它不是「多余入口」,是**放错了位置的卡片视图** |
|
||||||
|
| **P2b** 收件箱按会话折叠 | `client/electron/src/lib/mailGroups.ts` | 鸿蒙收件箱加**按会话折叠**,组头带未读 |
|
||||||
|
| **P2b** 删平级「会话」tab | WebUI **没有**平级会话入口(所以没有「删 tab」这回事) | 前两项到位后**再删**;在那之前删 = 把轮次预算、`status`、`from_agent` 从屏幕上抹掉,而「预算跑满」正是需要人介入的信号 |
|
||||||
|
|
||||||
|
**开工顺序**:P6(日历)之后。**不以下列事情为前置条件**:
|
||||||
|
|
||||||
|
- 「`/me/mail/inbox` 只取 50 封」被折叠伪装成「只有这么多会话」——若成立,它是 **WebUI 的现存缺陷**
|
||||||
|
(WebUI 的折叠早就在跑),**单独查一眼**即可,**不是**鸿蒙 P2a 的开工条件(pi 明确否掉了这个绑定)。
|
||||||
|
|||||||
Reference in New Issue
Block a user