There was an error while loading. Please reload this page.
381fdc6
fix(display): 长消息尾部锚点时视口跨界消息被误卸载——绘制空白 症状(用户报告):滚动到长消息(展开的大思考块 / 超长正文)附近时, 视口出现一大片空白(内容消失),继续滚动后"自己变好";伴随上下文/ 缓存统计短暂消失。用真实会话复现并定位。 根因:updateMessageWindow 的前向覆盖计算 keep_hi 用**整条消息的 span** (从消息开头算)去凑"4 屏 + 一屏",漏了 anchor_row。锚点位于长消息 (如 894 行的消息)尾部时: - keep_hi 被截断在 anchor+1(复现:anchor=354 → keep_hi=355) - 视口实际跨界到的后续消息被误判为"区间外"卸载 (复现:[REPRO3] 19370 在视口内但被卸载) - 绘制时按冻结行数占位却画不出内容 → 空白 - 锚点移开后重新覆盖 → "自己变好" 修复:keep_hi 从**锚点剩余行**起算(a_span - min(anchor_row, a_rows)), 再向后累计。修复后同场景 keep_hi=372(正确覆盖跨界消息)。 验证: - 新增回归测试(真实库 894 行消息):锚点放尾部,断言视口跨界消息 保持加载;修复前失败、修复后通过 - 帧转储:修复后在长消息 5 个位置渲染,非空行 32~39/40,无空白 - 179 pass(含新回归测试) 另注:样本中"上下文/缓存统计消失"是状态栏在 usage 重置后短暂走 "暂无数据"分支(预期行为),非同因。