Skip to content

v1.8.37

Choose a tag to compare

@wudream813 wudream813 released this 05 Sep 10:51
· 96 commits to master since this release

v1.8.37 — 修复分屏「拖条/关窗后旧背景残留」两个渲染 bug

🐛 修复

  1. 拖动分屏移动条时右侧多出一块背景:render_split 清整行原来只发 \x1b[0m\x1b[K(清到行尾),窗格铺底/边框却只覆盖各自矩形列。framediff 按「整行字节块」差分——拖分隔线时布局移动,那些本帧没有新显式字符、上一帧却是旧边框高亮/旧窗格内容的列,[K 在增量帧里不能保证被重发,旧背景色就残留。改为清屏时把整行显式铺成面板底色空格到屏幕右缘(每列都有显式字节),布局一变整行必判脏、整行重建,随后窗格/边框再覆盖,不再依赖 [K 的行尾擦除。
  2. 关闭窗格时右半屏没重置、左窗格没变大:整屏渲染每行末尾,有滚动条时(宽终端默认开)原来只在最右列画滚动条轨道、不发清行尾。分屏关闭后活动窗格扩宽,正文末尾到屏幕右缘这段上一帧是右窗格内容、本帧无显式字符覆盖,残留右侧。改为每行正文输出后无条件先清行尾,再回最右列画滚动条(隐藏滚动条的情况同样修复)。配合 v1.8.35 的「单叶子分屏自动 resize 回整屏」,左窗格正确扩宽铺满。

📝 说明

  • 窗格 ConPTY 扩宽后,新区域由 shell 重绘填充(与普通窗口拉大一致,属终端固有行为);本次保证的是上一帧旧内容/旧边框不再残留。

✅ 验证

  • verify_dirty_cursor(整帧 vs framediff 增量逐格语义差分,两处变异均被捕获)、verify_framediff_oom(整行显式铺底后行块变大,扩容/退化不越界)通过。
  • 单元测试 302 / 0 failed;verify_all.py 全过;MinGW gcc / g++ 双 -Werror。

📦 资产

  • termux.exe(242688 字节),64 位 MinGW 单文件构建。
  • termux.exe.sha256:SHA-256 校验。