按本文件协议,跨端对齐目标文件被改动后**重新核对**而非抄新哈希:
骨架逐项复核**未变**(gridPane(flex:1) + 400px 右栏两栏结构、工具条分组与
顺序、手势与按钮共用 shift()、非本月农历小字仍 text-gray-400)。
本次三处差异**全是行为不是骨架**:
① doExport 的 URL.revokeObjectURL 从同步撤销改为 setTimeout(…,0)
并把 <a> 挂上 document 再摘除(Chromium 容忍同步撤销、
Firefox/WebKit 不容忍 ⇒ 静默 0 字节 .ics)
② load() 加 loadGen 代次守卫(照 ThreadView.tsx 既有形状)
③ BackgroundPicker 预设缩略图去掉覆盖性的内联 backgroundImage
47 lines
5.9 KiB
JSON
47 lines
5.9 KiB
JSON
{
|
||
"_": [
|
||
"对齐参照物的**版本登记**(pi 邮件 `6e14b410`:对齐本身要有版本号)。",
|
||
"为什么需要:WebUI 那边同一个文件可能同时在动(gui-lab 有未合入的改动),",
|
||
"照工作副本画完之后,参照物一变,这一版就成了「照一份没人认领的草案对齐的」,",
|
||
"而且**没人能判它对不对 —— 因为参照物没有版本号**。",
|
||
"所以:把参照物的 blob 哈希登记在这里,**它一变就红**,逼一次「重新核对再更新登记」。"
|
||
],
|
||
"refs": [
|
||
{
|
||
"id": "calendar-view",
|
||
"path": "client/electron/src/components/CalendarView.tsx",
|
||
"blob": "ae08613c454c56c17bef58df2c2dab57783a1309",
|
||
"atCommit": "WORKTREE-2026-09-26",
|
||
"atCommitSubject": "fix(webui): 三处真 bug —— 日历导出 object URL 同步撤销、翻月请求无代次守卫、预设缩略图被内联样式覆盖",
|
||
"note": "P6 日历骨架的对齐目标。**2026-09-26 第四次重新核对**(审查修 bug 顺带改了本文件 ⇒ 底本必变,按协议重新核对而非抄新哈希)。本次差异**三处,全是行为不是骨架**:① `doExport` 的 `URL.revokeObjectURL` 从紧跟 `a.click()` 同步撤销改为 `setTimeout(…, 0)` 并把 `<a>` 挂上 document 再摘除(Chromium 容忍同步撤销、Firefox/WebKit 不容忍 ⇒ 静默 0 字节 .ics);② `load()` 加 `loadGen` 代次守卫(照 `ThreadView.tsx:62-84` 既有形状,快速翻月时只认最后一次响应);③ `BackgroundPicker` 预设缩略图去掉覆盖性的内联 `backgroundImage`。**骨架逐项复核未变**:仍是 gridPane(flex-1) + `w-full lg:w-[400px]` 右栏两栏结构、工具条分组与顺序、手势与按钮共用 `shift()`、非本月农历小字仍为 `text-gray-400`(参照物 2026-09-19 记的那处对比度修复未被回退)。鸿蒙侧不受影响。此前三笔:动画类 rise-in → pane-rise、非本月农历小字 gray-300 → gray-400、pane-rise 拆两档时改名。"
|
||
}
|
||
],
|
||
"radius": [
|
||
{
|
||
"semantic": "卡片圆角",
|
||
"webui": "--radius-card: 0.875rem(=14px,client/electron/src/index.css:278)",
|
||
"harmony": "Theme.ets:105 radiusCard = $r('sys.float.ohos_id_corner_radius_card')",
|
||
"judgement": "**按语义对齐,不按数值对齐**:两端都表示「卡片圆角」,但取值来源不同(WebUI 自定 rem,鸿蒙用**系统**资源)。数值是否一致属于形态差异,等设备上并排看再定 —— 见 docs/DEBTS.json 的 radius-card-numeric-divergence。**鸿蒙侧不许把 0.875rem/14 抄成裸数字**(那正是当初 14 处 Material 调色板被清零的同一形态,量纲从颜色换成长度)。",
|
||
"webuiValue": "0.875rem = 14px",
|
||
"harmonyValue": "**本工作区读不到数值**:`toolchains/id_defined.json` 里该条目只有 name/type(没有 value),SDK 的 `ets-loader/sysResource.js` 只有**资源 ID 125829709**(btn 是 125829702)—— 实体值在**系统资源包**里(编译进 resources.index / 随设备)",
|
||
"policy": "**语义以 WebUI 为准;数值按平台各自成立**(两端数值来源不同:WebUI 自定 rem,鸿蒙用系统档)。**不相等是对的** —— 不是\"数值待补齐\"。**追认**:pi 以 WebUI 侧负责人身份追认(pi 邮件 `90372ca1`),骨架按此执行,不必再等追认。保留的是**验证**:真机并排若看出感知不一致 ⇒ 反向并**登记成决定**(那是等设备的 env 项,与策略无关,别混成一笔)。",
|
||
"unitNote": "**px 与 vp 之间没有\"差值\"**:`px` 是桌面 CSS 像素,`vp` 是设备密度无关单位,两者只能通过屏幕密度 + 观看距离换算 —— 所以这里不是\"差值暂时未知\",而是**\"差值\"在这个比较里没有定义**。**停止追这个数**:把它当待补的数,会诱使下一个人去追一个改变不了结论的数字,最后以\"抄一个 vp 进去\"收场,而那正是这笔账要防的事。"
|
||
},
|
||
{
|
||
"semantic": "控件圆角",
|
||
"webui": "--radius-control: 0.5rem(=8px,client/electron/src/index.css:279)",
|
||
"harmony": "Theme.ets:107 radiusControl = $r('sys.float.ohos_id_corner_radius_button')",
|
||
"judgement": "同「卡片圆角」:语义对齐、数值来源不同。",
|
||
"webuiValue": "0.5rem = 8px",
|
||
"harmonyValue": "同卡片圆角:本工作区只能读到资源 ID 125829702,读不到 vp 值",
|
||
"policy": "**语义以 WebUI 为准;数值按平台各自成立**(两端数值来源不同:WebUI 自定 rem,鸿蒙用系统档)。**不相等是对的** —— 不是\"数值待补齐\"。**追认**:pi 以 WebUI 侧负责人身份追认(pi 邮件 `90372ca1`),骨架按此执行,不必再等追认。保留的是**验证**:真机并排若看出感知不一致 ⇒ 反向并**登记成决定**(那是等设备的 env 项,与策略无关,别混成一笔)。",
|
||
"unitNote": "**px 与 vp 之间没有\"差值\"**:`px` 是桌面 CSS 像素,`vp` 是设备密度无关单位,两者只能通过屏幕密度 + 观看距离换算 —— 所以这里不是\"差值暂时未知\",而是**\"差值\"在这个比较里没有定义**。**停止追这个数**:把它当待补的数,会诱使下一个人去追一个改变不了结论的数字,最后以\"抄一个 vp 进去\"收场,而那正是这笔账要防的事。"
|
||
}
|
||
],
|
||
"agc": {
|
||
"file": "client/harmony/entry/src/main/resources/rawfile/agconnect-services.json",
|
||
"packageName": "com.jianf.agentmail",
|
||
"appId": "6917616450599975320",
|
||
"note": "AGC 下发的配置(加密信封格式,非明文密钥)。**包名必须与 AppScope/app.json5 的 bundleName 完全一致** —— 不一致时 Push Kit 推不到设备,这不是风格问题而是功能性约束(pi 邮件 `1f9ff3b4` 实测:AGC 拒绝 `com.agentmail.harmony`,因为 `harmony` 是包名保留字;用户定 `com.jianf.agentmail`)。"
|
||
}
|
||
} |