docs(B04): trace Base64 flash when expanding conversation details
This commit is contained in:
1 parent
bac89daf87
commit
8f4aa0d6b5
1 file changed
+51
@@ -0,0 +1,51 @@
|
||||
# B04:展开历史详情时图片地址闪现
|
||||
|
||||
日期:2026-10-21。状态:待开发。任务:YC-008,优先级 P1。
|
||||
|
||||
## 用户现象与定位
|
||||
|
||||
用户反馈 `hello`、`使用浏览器打开baidu.com,输入框中输入t…` 的详情似乎打不开,进一步明确为:展开时有大片文字一闪而过。
|
||||
|
||||
调查代码:`0fbc1616e5b6f262e75df5c7411562d3a5031096`。两条会话的保存数据可解析,正文可加载;隔离 Electron 使用当前 dev renderer,展开过程中没有捕获 renderer 异常。该结果是定向诊断,不是独立安装构建验收。
|
||||
|
||||
已确认根因在 `src/renderer/src/workbuddy/images/MarkdownImage.tsx`:
|
||||
|
||||
1. 第 32 行 `resolvedUrl` 首次渲染为 undefined。
|
||||
2. 安全图片 URL 也要等第 35 行的 effect 才设置 resolvedUrl。
|
||||
3. 第 62–69 行在此期间进入 fallback,空 alt 时显示 `src`。
|
||||
4. 对浏览器截图,src 是完整的 data URI/Base64,于是首帧将其显示为大量文本,随后才换成图片。
|
||||
5. `CompletedFold.tsx:192` 的展开分支会切换详情树,重新挂载图片,使该现象在展开时再次触发;不能仅检查首次打开会话。
|
||||
|
||||
## 已采集的帧证据
|
||||
|
||||
百度会话一次实际展开,requestAnimationFrame 采样:
|
||||
|
||||
| 时间 | 外层详情高度 | 图片 Markdown 块高度 | 块内文本字符数 | 图片节点 |
|
||||
| --- | ---: | ---: | ---: | --- |
|
||||
| 点击前 | 0px | 不适用 | 不适用 | 原树图片已就绪 |
|
||||
| 点击后约 28ms | 5704px | 5468px | 18076 | 重挂载处尚无图片节点 |
|
||||
| 点击后约 43ms | 636px | 400px | 1 | 图片就绪 |
|
||||
|
||||
另一轮采样同样出现 5704px → 636px。文字长度与约 18075 字符的截图 data URI 对应;未将真实会话内容、图片、用户配置或完整 URL 写入交接文件。
|
||||
|
||||
本机原始诊断产物保留在 dev 工作树 `.tmp/session-detail-review/`,其中 `native-SZ8eKi/report.json` 为上述帧数据,`native-vsZP6s/report.json` 为另一轮采样。表格和代码定位为可移交的脱敏证据;本机临时路径不是开发端唯一复现依据。
|
||||
|
||||
## 开发要求
|
||||
|
||||
- 安全且不需要宿主解析的图片地址,在第一次渲染即可使用;避免先进入地址文本占位再在 effect 中切换。
|
||||
- 异步解析中的图片使用稳定、简短的占位状态。空 alt 的 data/blob 等地址不得将完整 URI 显示为文字。
|
||||
- 失败态也不得显示完整 Base64。可以使用 alt 或简短的图片加载失败提示。
|
||||
- src 改变时不能继续展示上一个 src 的图片;保留异步请求取消、过期结果隔离和已有 URL 安全校验。
|
||||
- 详情展开导致的重挂载必须覆盖回归;是否进一步稳定详情 DOM 由开发端评估,但不能以更换折叠动画掩盖图片首帧问题。
|
||||
- 不修改、清理或迁移用户历史消息来绕过问题。
|
||||
|
||||
## 验收标准
|
||||
|
||||
1. 使用合成的长 Base64 图片、空 alt,冷挂载首帧到稳定态均不显示 URI 文本。
|
||||
2. 在已完成回复中放置图片,连续展开/收起、切换会话后再展开均无大片文字闪现。
|
||||
3. 采集展开前后连续帧,图片区域不因完整地址占位瞬间增高数千像素;不能只提交动画结束截图。
|
||||
4. 图片加载失败、宿主解析失败、无效地址均显示简短且稳定的失败态。
|
||||
5. 快速切换 src、展开/收起时无旧图串入、过期请求覆盖或 renderer 异常。
|
||||
6. 图片预览、下载、URL 安全策略和正常 Markdown 图片功能保持可用。
|
||||
|
||||
验收端本轮只读产品代码,未修改产品源码和正式用户数据,未重启用户窗口。本需求按用户授权提交至 Gitea 协作主线;开发端按 YC-008 实现后提交交付记录,由验收端复测连续帧。
|
||||
Reference in new issue
Block a user