chore: establish YCode replication baseline and TODO
This commit is contained in:
commit
6dc59f89ba
1118 files changed
+196002
No files matched your search
@@ -0,0 +1,58 @@
|
||||
# 统一字体与间距
|
||||
|
||||
WorkBuddy 有统一的字体与间距处理。本轮将已核实的全局字号机制和标准 token 接入 YCode,修复原先只改两个变量、静态字号消费者不随档位变化的问题。本轮完成的是公共基础层,不是每个组件最终外观的像素验收。
|
||||
|
||||
## REA 证据
|
||||
|
||||
- 字号行为来自既有 REA runtime Evidence `ev_717fa5e846e64d67ac19c8925d121bff632c0d3aefb3603b10858559cabb2dcb` 的 `app-core-DN1jMv6r.js`,SHA-256 `e19055ad9feca6a9ccc2e60d00b191afac90c4cd3948113a81cb72196e66c260`。六档表约在 UTF-16 offset 21817;覆盖函数 `[23603,26434)`;应用与事件 `[26434,27496)`;快捷键 `[27703,28465)`;WB token 覆盖表 `[29292,30500)`。
|
||||
- 快捷键避让逻辑来自同一 REA 导出的 `browser-zoom-hotkeys-CInnb_kx.js`,SHA-256 `20c206bc9a675bfbf2d45818b35e94cb8539e42169dcb47cd030a208447d92b8`。它避让已注册且聚焦的浏览器预览缩放目标,并非排除输入框。
|
||||
- 通过 REA `extract_artifact` 重新读取本地历史资源 ZIP,Evidence `ev_267e2188e816796acee76650153ab5a1c1f902e3a761d686979d2fe9926eed07`。本轮只读取 REA 新输出目录中的文件,没有直接读取原版安装目录或旧手工提取目录。
|
||||
- 对当前 WorkBuddy 5.8.2 ASAR 重新执行 REA inventory,Evidence `ev_97959691fb7cabf7c41f948b08332196924fec1fa8cb71e34dbafd65d912e637`;ASAR SHA-256 `035254bc76310ea46317433e4840602094543ef323d2d5c5aff7c131729de918`。三份 CSS 的 artifact ID 与 ZIP 提取结果完全一致,原包 occurrence 均为 `hash_status: verified`。因此使用的 CSS 不仅有旧文件名依据,还有当前安装包的身份匹配。
|
||||
|
||||
本轮产品实际使用 `tokens-Df-i-zsO.css`,SHA-256 `13f2bf82c96e5167a7d7098e36950c6c22c475b3337dbb8bb29ad2fe79cde696`,artifact `art_a0886b61c79588910cdbcd7819dd236f5cc318b81430b31eabde93158982fc7d`。匹配的另外两份是 `contexts-BkjwYSZT.css`(SHA `50cbd673f7f35fc7f966bdddc6c9f5677fdfe944cb904888d214619fca259380`)和 `agent-chat-pane-F5lfde1Z.css`(SHA `a09e1806f1b3dbed21432858357c876ebb6b878ed499069361e7b42ef557421c`)。它们不包含当前 `cr-*` 对话组件全部样式,不能冒充完整组件 CSS。
|
||||
|
||||
## 公共机制
|
||||
|
||||
| 层 | 已确认的行为 |
|
||||
| --- | --- |
|
||||
| 基础 token | 字号、字重、行高、等宽字体、标准 spacing、控件字号/尺寸等统一定义 |
|
||||
| 六档字号 | Markdown 根字号为 16、17.143、18.286、20.571、22.857、26.286px;原始偏移为 -1、0、1、2、3、4 |
|
||||
| 控件偏移 | 消费时使用 `clamp(-1, globalOffset, 2)`;高档位继续放大正文,普通控件封顶 +2px |
|
||||
| 静态字号 | 扫描可读 CSSOM 的 px 与带 px fallback 的 `var()`,以 fallback 数值为基准生成 `max(8px, base + offset)`;保留原版 media 分支与去重语义 |
|
||||
| 固定区域 | `.cb-font-size-fixed` 及后代跳过静态字号覆盖,并还原 WB 语义 token 基准值 |
|
||||
| 动态样式 | 监听 head/body 直接新增的 style/stylesheet link,100ms 后重新构建覆盖;offset=0 移除覆盖 |
|
||||
| 标准间距 | 0、2、4、5、8、12、16、20、24、32、40、48、64px;它们不跟随字号缩放 |
|
||||
|
||||
## 工程变化
|
||||
|
||||
- `workbuddy/typography/tokens.css` 保留 115 个经 REA 验证的原版 root 声明,由 `scripts/rea/recover-typography-reference.mjs` 生成;脚本核对 REA 提取摘要及当前 ASAR artifact 身份后才读输入。
|
||||
- `styles/tokens.css` 中 59 个本地字号、字重、行高和间距定义改成原版 WB token 的别名,通用语义体例不再自行叠加第二份偏移。固定区域重新声明语义别名,避免 CSS 自定义属性在 root 提前求值后继承,导致固定区域仍放大。
|
||||
- `workbuddy/typography/font-size.ts` 恢复 px/fallback 扫描、原版 WB token override、固定例外、观察器和快捷键解析;`fontSize.ts` 保留 YCode 的存储与事件合同,同时补齐 CB/WB 兼容变量与事件。输入框聚焦时快捷键有效。
|
||||
- 现有静态字号消费者增加明确的 px fallback,让统一扫描器处理用户气泡、代码、菜单和资源预览等;根字号和已经动态处理的语义 token 使用无 fallback 的变量,避免重复调整。
|
||||
|
||||
YCode 存储键、初始化清理和兼容事件接线是本地适配。没有访问或迁移 WorkBuddy 用户偏好,也没有接入尚不存在的 WorkBuddy host preference、快捷键录制状态或浏览器预览目标。普通界面的 sans 字体回退链仍是当前实现;本轮原版 token 能直接证明等宽字体定义,不能证明当前机器最终选中的中文字体与原版一致。
|
||||
|
||||
## 验证
|
||||
|
||||
`npm run test:font-size`:57 项检查通过,覆盖六档映射、原版 fallback 数字解析、media 去重、静态字号下限、固定区域 token、注入/清理、后加载样式重建与快捷键。`npm run build`:类型检查和实际产物构建通过。
|
||||
|
||||
通过自有构建产物 `?fixture=typography` 在 Chromium 内实际按快捷键切换六档并读取计算样式。输入框保持焦点,检查非零档仅有两份 override,重复切档不累积;最大档刷新后仍为 6,Ctrl+0 回到标准档并移除 override;未出现页面横向溢出或控制台错误。
|
||||
|
||||
| 档位 | 正文 px(约值) | 用户气泡 px | 代码 px | 通用 body token px | 固定 body token px | 当前段落下边距 |
|
||||
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
|
||||
| 1 | 14 | 12 | 11.857 | 13 | 14 | 12px |
|
||||
| 2 | 15 | 13 | 12.857 | 14 | 14 | 12px |
|
||||
| 3 | 16 | 14 | 13.857 | 15 | 14 | 12px |
|
||||
| 4 | 18 | 15 | 14.857 | 16 | 14 | 12px |
|
||||
| 5 | 20 | 15 | 14.857 | 16 | 14 | 12px |
|
||||
| 6 | 23 | 15 | 14.857 | 16 | 14 | 12px |
|
||||
|
||||
表中是 YCode 现有组件基准值接入统一机制后的实测,不是新采集的 WorkBuddy 计算样式。正文 root/比例及代码基准仍需组件 CSS 对照;本轮没有将所有字号和行高强行等比缩放。
|
||||
|
||||
样本 `scripts/fixtures/typography.mjs`,测量 `.tmp/typography-browser-measurements-2026-10-15.json`,截图 `.tmp/typography-default-2026-10-15.png`、`.tmp/typography-level-6-2026-10-15.png`。只使用离线假会话,未向模型发送消息;浏览器字号已恢复标准档。
|
||||
|
||||
## 剩余边界
|
||||
|
||||
标准 token 已统一;每个组件实际选用的 margin/padding/gap、正文嵌套样式、头像与正文距离、字体实际回退和逐像素布局仍需 REA 的组件样式/运行时证据。当前段落下边距 12px 只是已有组件选择,本轮验证了其来自标准 token,不等于完成原版段距验收。保留的本地间距 56px 和行高 26px 等扩展也不应声称是已核实的同名原版 token。
|
||||
|
||||
REA 原版截图仍有上一轮 `target_not_allowed` 限制。本轮没有绕过它,也未重启原版或正在运行的 YCode 原生窗口。
|
||||
Reference in new issue
Block a user