Skip to content

v1.5.3 - 终端顶部首行视口遮挡缺陷彻底修复版

Choose a tag to compare

@bcblr1993 bcblr1993 released this 30 Sep 04:36
· 20 commits to master since this release

🐞 问题修复 (Bug Fixes)

  • 彻底根除终端顶部第一行被顶出视口/遮挡及输入看不到的严重缺陷:
    • 根因剖析:AppKit 原生 NSClipView 默认 isFlipped 为 false,而 NSTextView 为 true,在零尺寸(frame .zero)初始挂载渲染或内容行数较少时,默认坐标翻转计算会导致文档原点被错误推入负空间(-36.0pt),导致视口上方首行内容被裁剪出界,用户在首行敲击键盘时文字不可见,需按回车换行或手动滑动滚轮才能显示。
    • 重构方案:
      1. 引入专有 TerminalClipView(继承自 NSClipView 并强制 isFlipped = true),与 NSTextView 实现 1:1 无损同构坐标映射;
      2. 在 TerminalClipView.constrainBoundsRect 与 scroll(to:) 中加入强一致性坐标约束,当内容未填满视口时强制锁定在 y = 0,绝不允许视口原点进入负坐标或非预期向下滚动;
      3. NativeTerminalScrollView 初始化与 setFrameSize 增加兜底安全几何尺寸,重设尺寸时自动校准 terminalView.frame.origin 为零点,彻底杜绝任何场景下的首行遮挡与视口偏移现象。

🧪 质量门禁与性能对比 (Verification & Benchmarks)

  • 经由真实 macos27 虚拟机全量验证通过,34 个测试套件(220+ 用例,包括新增的 4 项视口零尺寸初始化、清屏与分屏动态调整首行保留测试)100% 绿灯(0 failures, 0 warnings);
  • 8 项 Release 生产级性能基准全部大幅超越工程规范要求(RingBuffer 吞吐 187万 行/秒,打字端到端延迟 5.19 μs)。