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

9.4 KiB
Raw Permalink Blame History

表格引用与附件样式核对(2026-10-18)

后续用户已授权实施,本轮修复与验证见修复记录。下文保留修复前的核对结论,不代表当前实现。

结论与本轮范围

用户提供的两张截图确实反映了结构差异:原版是圆角输入框内的“表格图标 + 会话表格”短标签,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;没有加载设计改版指导或引入新配色/字号体系。本记录是定向原版一致性核对,不是全站发布就绪审计。