Releases
v1.5.6
Compare
Sorry, something went wrong.
No results found
🐞 问题修复 (Bug Fixes)
彻底解决打开文件面板/分屏时终端首行被遮挡削头缺陷 :
根因剖析 :当开启底部 SFTP 文件面板或拖拽分屏调节器时,终端容器高度被压缩;NativeTerminalScrollView.setFrameSize 中由于此前键盘输入将 isPinnedToBottom 置为 true,触发了 scrollToBottom(forceLayout: true)。此时远端 PTY 尚未下发缩小后的 Vim 行数,导致当前文档高度大于新的视口高度,scrollToBottom 计算出正向位移并滚动 clipView;AppKit 的 NSLayoutManager 在缩小后将 documentView.frame.origin.y 推入负坐标(例如 -8px),直接将首行 networks: 的上半部切断遮挡;
重构方案 :在 TerminalClipView.layout()、constrainBoundsRect、NativeTerminalScrollView.setFrameSize、refresh() 以及 scrollToBottom 中全面建立硬性安全门禁:当处于备用屏幕(Vim / Less / Htop)模式时,绝对禁止触发 scrollToBottom,并且不论视图如何重排缩放,强制将 documentView.frame.origin 和 clipView.bounds.origin 锁定在精确的 (0, 0) 原点,保全顶部 10px 安全边距,彻底杜绝文字削头截断。
彻底修复 Vim 模式下方向键移动光标看不见、不跟随及 DECCKM 应用光标支持 :
根因剖析 :
当 Vim 收到方向键移动光标时,通常下发光标绝对或相对定位序列(如 \e[row;colH 或 \e[B / \e[C / \e[1;2H)。RingBuffer.handleScreenCSI 在处理这些光标控制码时,更新了 screenRow 与 screenColumn,但没有递增 _screenRevision,导致前端未能感知视图更新;
NativeTerminalView.resetCursorBlink() 此前仅将新的光标位置矩形标记为 setNeedsDisplay,而旧的光标位置区域从未被重绘清除;当焦点发生转移(如点击了文件面板)时,stopCursorBlink() 直接将 isCursorVisible 置为 false,导致光标在非焦点状态下彻底隐形;
DECCKM(Application Cursor Keys Mode \e[?1h)缺失支持:当 Vim 开启应用光标键模式时,期望接收 \eOA、\eOB、\eOC、\eOD,此前硬编码发送标准 ANSI \e[A 等序列,导致部分 Vim 模式下方向键未被识别。
重构方案 :
RingBuffer 全面支持 DECCKM(Mode 1)应用光标键模式,NativeTerminalView 键盘输入及滚轮自动根据 DECCKM 模式无缝派发 \eOA 或 \e[A,并支持 Shift / Ctrl 方向键扩展修饰符;
handleScreenCSI 中所有光标移动序列及光标存取均原子递增 _screenRevision 并触发刷新;
重构光标渲染与双矩形清除机制:引入 lastRenderedCursorRect,移动光标时光标原位与新位同时执行局部重绘,彻底解决残影与重绘时序不同步;非焦点状态下光标转换为优雅的空心描边矩形(Hollow Outline),确保无论焦点在终端还是文件面板,光标位置始终 100% 清晰可见。
彻底修复 Vim 模式下无法退出(Esc / :q / 输入法拦截)问题 :
根因剖析 :
macOS 中文输入法拦截:当输入法处于中文模式时,用户键入冒号时被 IME 拦截并转译为全角冒号 :(U+FF1A),而 Vim 的 Ex 命令行仅接收半角 ASCII 冒号 :(U+003A),导致 :q、:wq、:q! 被 Vim 当作普通模式下的无效字符而吞掉或转入录制宏(recording @q),用户无法呼出底部命令行退出;
Esc 键被输入法截断:此前按 Esc 时若输入法处于候选状态,只退出了输入法候选词,却未向底层终端发送 \e,用户以为已回到正常模式,输入 :q 实际上仍在插入模式输入了字面量,导致无法退出。
重构方案 :
在 NativeTerminalView.insertText 中加入智能终端字符标准化过滤:自动将中文输入法误输入的中文全角冒号 :、分号 ; 规范化为 ASCII : 与 ;,即使在中文输入法下键入 :q、:wq、:q! 也能精准触发 Vim 命令行;
在备用屏幕(Vim / Nano)模式下,Esc 键按击无论当前输入法是否有候选状态,均无条件确保向远程 PTY 直通派发 \u{1B}(ESC)字符,确保用户永远能在第一下按键时立刻打断插入模式,返回 Normal 模式顺利退出。
🧪 质量门禁与性能对比 (Verification & Benchmarks)
测试套件扩充至 17 项 Vim 与备用屏幕专项测试 (VimAndScreenModeTests) :新增 DECCKM 应用光标键进出校验、光标相对位移与修订号自增门禁、中文输入法全角冒号过滤规整与 Vim 退出指令验证、分屏缩放视口原点锁定测试以及非焦点空心光标视觉呈现测试;
经由真实 macos27 虚拟机全量验证通过,35 个测试套件(240+ 用例)100% 绿灯(0 failures, 0 warnings);
8 项 Release 生产级性能基准全部大幅超越工程规范要求:
RingBuffer 写入吞吐: 1,934,160 行/秒 (195.52 MB/秒) (标准 ≥ 50,000)
ANSI / TrueColor 样式解析: 424,746 spans/秒 (标准 ≥ 150,000)
内存水位驻留集 (RSS): 103.98 MB (标准 ≤ 250 MB)
16 线程高并发争用写入: 2,411,082 writes/秒 (标准 ≥ 1,000,000)
64 核 Linux 无代理指标解析: 14,946 次/秒 (标准 ≥ 8,000)
OpenSSH 500 主机集群解析: 152,682 hosts/秒 (标准 ≥ 80,000)
SFTP 任务中心并发调度: 1,275 tasks/秒 (标准 ≥ 800)
物理按键直通与全链路键入延迟: 5.41 微秒 (μs) (标准 ≤ 15.0 μs)
You can’t perform that action at this time.