Files
ycode/docs/表格与附件样式核对-2026-10-18.md
T

68 lines
9.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 表格引用与附件样式核对(2026-10-18)
> 后续用户已授权实施,本轮修复与验证见[修复记录](表格与附件样式修复-2026-10-18.md)。下文保留修复前的核对结论,不代表当前实现。
## 结论与本轮范围
用户提供的两张截图确实反映了结构差异:原版是圆角输入框内的“表格图标 + 会话表格”短标签,YCode 是输入框外的 Markdown 摘要横条。文件、图片、文件/文件夹引用以及发送后的展示也尚未对齐。
本轮是核对与问题收集,没有修改业务代码、重启用户应用或调用模型。以前的表格引用专项通过只能证明当时实现的功能与选定 CSS 声明符合测试,不能证明选中了原版正确的渲染路径。TODO02 的输入态、发送态及组合验收重新打开。
## 证据与限制
- 用户原版截图:`C:/Users/Administrator/AppData/Local/Temp/codex-clipboard-5d262c85-84aa-4796-a383-21057ffec352.png`;用户 YCode 截图:`C:/Users/Administrator/AppData/Local/Temp/codex-clipboard-51238fe6-c4f4-4202-b9c7-47578d46d5d3.png`。截图本身不证明版本号、悬停、点击、上传中或失败状态。
- 沿用已留存的 REA 证据,不直接读取 WorkBuddy 安装文件或连接目标协议。运行时脚本索引 `.tmp/rea-runtime-scripts.json` 的来源为 `ev_717fa5e846e64d67ac19c8925d121bff632c0d3aefb3603b10858559cabb2dcb`,原有记录标注 WorkBuddy 5.8.3。
- 上述索引内 `src-DbE1_mgM.js` SHA-256:`6c6ce63c93854783270e855572797d75e536e3b8d4548410e31fe9d147e1feb4`;`contexts-BMeWSUHk.js`:`5f35b7489b107e21ef452c8ee88a95265756f6fc444841eef869228bbc44768b`。本轮重新计算正文摘要,与 REA 记录一致。
- 样式沿用既有 WorkBuddy 5.8.2 REA CSS 证据 `ev_377c8790468b3c67dad8577aabb327f98d3140659f0fffdbabfcff5a40cc9e94`,`src-CyXHA0IC.css` SHA-256:`a5e26b537bb50323aefbf25abddad52e288dd3868598be8d255d70886fe77cfe`。与稍后宿主脚本合用说明结构和声明;不把跨版本静态证据当作当前所有运行态的像素验收。
- 表格菜单几何另有 `ev_38cca1ac66606ab07fb495035e3509f5c4d8ec3e5e2b74d0fdcfcfadb120da3b`,它不能单独证明“添加后显示了哪个组件”。
- 本轮 REA `list_electron_targets` 请求原有 `http://127.0.0.1:9223` 返回 `provider_unavailable / endpoint_unreachable`,没有新采原版页面,也没有为核对而重启原版。原版当前悬停、图片预览、窄窗口、失败和编辑等实时画面仍未补验。
## 原版渲染路径已经查清
1. `installConversationMessageQuoteEvents` 的 table 分支调用 `createTableMessageQuoteReference`;中文 `messageQuote.tableLabel` 的值是“会话表格”。
2. `createEmbeddedReference` 创建 `payload.displayBlocks`,其中 `buildEmbeddedDisplayBlock` 写入 `displayAsPhrase: true`、`displayAsContext: false`、表格 SVG、短标签、来源和表格 Markdown 快照。
3. `InputBannerRail` 明确过滤掉 `displayBlocks` 全部为 `displayAsPhrase` 的引用。因此不能因为原版 bundle 里存在 `QuoteReferenceCard` 就让所有表格进入该卡片。
4. 文件、图片和文件夹引用也生成短语内容块,由共同的标签渲染器显示。`createAttachmentBlock` 设置文件/图片图标和文件名;`createReferenceFileBlock` 设置文件/文件夹图标、`displayText: name`,完整路径保留在元数据。
5. 标签渲染器根据类型、图标、只读态、处理状态和上下文选择样式。普通文件类标签命中 `._fileTag_1krka_111`:23px 高、100px 圆角、padding `1px 8px`、13px/500、21px 行高、14px 图标。短标签内部 gap 为 4px;正文内短语与独立上下文行还有不同的包裹和间距,不能只复制一个高度。
6. 图片在标签上提供 `ImagePreviewTooltip`,图像预加载成功才展示预览,源码上限 300×300;不是直接把缩略图固定塞进标签。悬停移除会隐藏原图标,在同一位置显示关闭图标。
7. 发送后,`convertUserFrame` 分开处理纯上下文块与用户内容块;`UserContentRenderer` 使用只读内容编辑器保留短语块。表格和附件不能统一迁到气泡外,也不能把表格改成普通文本引用图标。
## 已确认差异
| 项 | YCode 当前表现与定位 | 原版依据 / 应修方向 |
| --- | --- | --- |
| 表格输入态 | `ComposerControls.tsx:424` 统一选 `MessageQuoteCard`;引用在 `.cr-input-container` 外。`TableMessageQuoteAction.tsx` 把整个 Markdown 压缩进 `preview`。实测卡片 36px 高、圆角10,并带强调竖线。 | 使用表格短语标签,显示“会话表格”和表格 SVG,放进输入内容区;Markdown 仍作为完整引用载荷保存。 |
| 普通文件 | `ComposerControls.tsx:430` 与 `composer.css:236` 自定义附件卡。实测 34px 高、圆角6、12px/18px,前方直接显示“文件”两个字,关闭按钮常驻右侧。 | 共用来源标签的文件图标、23px 高胶囊样式、13px 字体和图标位置的悬停关闭规则。 |
| 图片 | `ComposerControls.tsx:433` 与 `composer.css:249` 使用24×24常驻缩略图,并沿用34px自定义卡;没有该标签的图片预览 tooltip。 | 图片图标与文件名短标签,加原版图片悬停预览;保留真实图片载荷及发送能力。 |
| 资源引用与能力标签 | `ComposerControls.tsx:443` 使用另一套 `.wb-composer__resources`,实测32px高、圆角6、12px/18px、完整路径、没有文件/文件夹图标。`ChatPane.tsx` 的引用技能也使用此自定义资源样式。 | 将文件/文件夹/技能按各自类型接共同标签规则;名称、完整路径提示、图标、正文内位置分别处理。技能的所有交互态本轮未做原版运行验证。 |
| 发送后与历史 | `MessageQuoteTag.tsx:37` 使用文本引用 T 图标和 Markdown 摘要,实测22px高/圆角6。`MessageBubble.tsx:75` 将附件放在气泡外;非图片只有文件名文本。 | 复用正确表格/附件短标签,按原始内容块组织用户气泡与只读态;保留来源跳转和附件预览。当前表格快照/来源已持久化,不应为修样式而丢失。 |
| 混合布局及状态 | 表格、文件/图片、资源分别成行并都在输入框外,内容越多越抬高消息区域。附件 `stageFiles` 完成后才加入列表;处理中无逐项标签,失败为区域级文案。 | 对应原版内容区布局、折行和正文顺序;按文件保留 processing/failed 状态,以加载图标、`.7`透明度、失败颜色和提示呈现。当前运行画面的动效/错误色仍待 REA 补验。 |
现有 `textarea` 与分离的 `quotes / attachments / resources` 数组还能维持传输功能,但不能表达“文字中间插入引用”的光标位置及混合顺序。完整还原混排、选择、键盘删除和编辑恢复时,需要内容块编辑/只读投影;只把三组 div 移进边框不能算全部对齐。
## YCode 实际画面核对
本轮运行 `.tmp/audit-attachment-styles-20261018.cjs`,使用已构建 YCode 的真实主进程、preload、附件暂存和粘贴/资源引用链路,独立 userData/工作目录;未调用模型,历史消息为测试数据。
结果:退出码0、renderer错误0。五组状态:表格草稿、表格+文件、表格+文件+图片、混合资源浅色、混合资源深色。报告包含元素实际边界、是否位于输入框内、字体/行高/圆角/背景、图片尺寸与关闭按钮。
- 报告:`.tmp/attachment-style-audit-8rW9bB/report.json`
- 浅色混合:`.tmp/attachment-style-audit-8rW9bB/mixed-references-light.png`
- 深色混合:`.tmp/attachment-style-audit-8rW9bB/mixed-references-dark.png`
- 历史完整页面:`.tmp/attachment-style-audit-8rW9bB/history-full-dark.png`
以上是缺陷复现和测量,不是修复结果,也不是两边同状态像素对比。普通文件、图片、资源的边界均测得 `insideComposer: false`。
## 后续修改与验收顺序
1. 修正表格引用的分支和标签数据:标签文案/图标与 Markdown 载荷分开,旧数据按 kind 恢复正确显示。
2. 恢复共同标签组件与输入内容区布局,让表格、文件、图片、资源及技能使用有类型的渲染规则,包含悬停关闭、名称截断、路径提示和图片预览。
3. 把发送后、历史重载及编辑态接同一内容块投影;保留本地附件路径、引用快照、来源、清理与重试逻辑。
4. 接逐项处理/失败状态;验收多附件折行、长文件名、文字混排、浅深色、删除、图片预览及恢复。
5. 修正旧 `scripts/verify-quote-table.cjs` 的错误视觉期望。其现有卡片36px/圆角10/强调条断言,以及历史标签包含 `| 项目 |` 的断言,正好把本次错误写成了“原版正确值”。保留真实引用内容、来源、草稿和 IPC 验证。
6. 对原版已知证据可直接恢复的部分先实现;未知交互用 REA 补帧,记录版本和 Evidence ID,再做同尺寸同状态像素比较。
本轮只更新本记录、总清单状态及接手记录;未运行构建和业务回归,因为没有修改业务源码。主工作树的既有修改全部保留。
技能使用:沿用 `reverse-engineer-anything` 的固定证据/未知项边界及 `ui-design` Audit 的先报告原则。读取了两份 `SKILL.md`、REA `runtime-observation.md`,以及 UI Audit 的 `feature-playbooks.md`、`ship-readiness.md`、`output-adapters.md`;没有加载设计改版指导或引入新配色/字号体系。本记录是定向原版一致性核对,不是全站发布就绪审计。