问题描述
在进行日志展开折叠后,会出现界面渲染卡顿,和页面的渲染位移
打开或关闭新面板时,会有旧页面残留
改造方案
- 把当前折叠/展开路径从“全量
rebuildTranscript”拆成两条
- Full Path:仅在消息变化、宽度变化时走(现在逻辑)。
- Fast Path:仅在折叠状态切换时走,不触发其他面板计算。
- 入口在 update.go 的
toggleTranscriptProcessExpansionWithAnchor()。
- Fast Path 只做 transcript 层更新,不动 layout
- 不调用
applyComponentLayout(...)。
- 不触发
rebuildActivity() / rebuildTodo() / command menu 相关计算。
- 只更新
transcriptContent + transcript.SetContent(...) + YOffset clamp。
- 引入 transcript 内部块缓存(App 层,不是 markdown 层)
- 缓存每条 message block 的渲染结果(按
width + message hash)。
- 折叠切换时只重组字符串,不重新 markdown 渲染整页。
- 这样“页面计算影响范围”就被限制在 transcript 组装阶段。
- 增加“残留防护”刷新步骤(只在 transcript)
- 折叠切换后:
SetContent -> clamp offset -> 清理 selection/drag 临时态。
- 防止你看到的展开后局部残影和错位。
- 保留锚点行为但简化代价
- 继续支持点击位置锚定。
- 锚定失败时只回退到合法 offset,不触发全局重排。
- 回归验证(重点)
- 连续折叠/展开 + PgUp/PgDn 不应影响 todo/activity。
- 展开后立即翻页无残留。
- 运行中流式输出时折叠切换不引起明显卡顿。
问题描述
在进行日志展开折叠后,会出现界面渲染卡顿,和页面的渲染位移
打开或关闭新面板时,会有旧页面残留
改造方案
rebuildTranscript”拆成两条toggleTranscriptProcessExpansionWithAnchor()。applyComponentLayout(...)。rebuildActivity()/rebuildTodo()/command menu相关计算。transcriptContent + transcript.SetContent(...) + YOffset clamp。width + message hash)。SetContent->clamp offset-> 清理 selection/drag 临时态。