Skip to content

fix(tui):增加折叠后出现页面渲染错误 #587

@creatang

Description

@creatang

问题描述

在进行日志展开折叠后,会出现界面渲染卡顿,和页面的渲染位移
打开或关闭新面板时,会有旧页面残留

改造方案

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions