|
|
5f12ea3df9
|
fix(gui): 补星图面板缺失的 </div>,修对话页 5 个页签空白
## 实测故障
对话页里「终端 / 运行中命令 / 记忆 / 上下文 / 知识」五个页签点进去全是
空白,只有「对话」和「星图」正常。
## 根因:少一个 </div>
构造星图面板的那段 HTML 里有 **4 个 `<div>` 开、只有 3 个 `</div>` 闭**,
它没闭合 —— 后面拼接的所有 chat-panel 都被浏览器塞进 chat-panel-starmap
**内部**。
CDP 查真实 DOM 的铁证:
.chat-layout 的直接子节点只有 3 个:
DIV.chat-tabs / DIV#chat-panel-chat / DIV#chat-panel-starmap
terminal/cmd/memory/context/knowledge 的父节点
= chat-panel-starmap ← 不是同级的 chat-layout
后果:这些面板 display 是flex(switchChatPanel 把 active 加对了),
但父级 display:none ⇒ getBoundingClientRect() 恒为 0x0 ⇒ 显示为空白。
实测尺寸对照(修复前 → 修复后):
terminal 0x0 → 1156x621
cmd 0x0 → 1156x621
memory 0x0 → 1156x621
context 0x0 → 1156x621
knowledge 0x0 → 1156x621
## 为什么一直没被发现
标签不配对在源码里看不出来(跨行字符串拼接的 HTML 片段),浏览器也
**不报错** —— 它只是「尽力修复」成畸形结构。现象是「点了没反应/一片空白」,
很容易被归因为数据没到或后端挂了(我最初就查了半天气网络与接口 401)。
而且它只在部分面板上发作:chat 与 starmap 恰好是前两个,位置靠前不受影响,
于是「大部分能用」掩盖了「后面全废」。
## 判据(cmd/gui/chat-panel-dom.test.mjs)
3 条:整段 div 标签配平、各面板独立配平、各面板顶层不被嵌套进前一面板。
逐面板断言能定位到**具体是哪个**面板不配平(变异测试下报
`starmap(开4/闭3)`),而不只是「总数差了 1」。
变异测试:去掉一个 `</div>` ⇒ 前两条转红并指出 starmap。
判据自身也错过一次:还原 HTML 时把 `"` 全替换成 `'`,而 marker 用的是双引号,
7 个面板全报「未找到」。已修正并记在注释里。
|
2026-10-06 13:09:12 +08:00 |
|