# OpenTerminal 更新日志 ## v1.0.22 - 2026-10-08 ### 输入法 - **修复中文输入法候选窗不跟随光标**(v1.0.21 回归):v1.0.21 的构建环境中终端组件依赖未按锁定版本安装,安装包实际打进的是不含上游输入法修复的旧版本;本版本恢复 v1.0.20 所用的终端组件版本,候选窗重新紧贴光标。 ### 安装包 - 不再提供 MSI 安装包(electron-updater 本就不支持 MSI 自动更新),统一使用 NSIS exe 安装包。 ### 内部 - 打包流程新增依赖一致性校验:构建前自动比对实际安装的依赖与锁定清单,不一致即中止,防止同类问题再次发生。 ## v1.0.21 - 2026-10-07 ### 背景图体验 - **浅色主题不再「洗白」**:设置背景图后,调低透明度在任何主题下都是压暗图片(此前浅色主题下调透明度会把图洗成白色,文字完全看不清)。 - **文字自动提亮**:图片模式下终端文字对比度提升到 WCAG AA 级别,浅色主题的深色文字在壁纸上也能清晰可读。 - **新增「背景压暗」滑杆**(设置 → 主题):在图片之上叠加独立压暗层,图片保持饱和度的同时整体变暗,亮图建议 30–50%。 - 背景图默认透明度从 60% 调整为 30%。 ### 性能 - 设置写入不再让所有终端窗格重写参数并重排(字段级订阅,只有相关窗格响应)。 - SFTP 文件列表虚拟滚动:上万条目的目录(如 node_modules)不再卡死窗口。 - 单个窗格崩溃不再拖垮整个工作区:每个面板独立错误边界 + 重试按钮。 - SSH 底部面板拖动更顺滑;传输面板与监控图表的渲染开销显著降低。 ### 安装包体积 - 安装包精简约 **90MB**(内置依赖 98MB → 8.1MB):纯界面依赖不再重复打进安装包。 ### 安全加固 - SFTP 上传/下载与 ZMODEM 收发的本地路径,只接受通过系统对话框选择的位置,阻断恶意构造路径的读写。 - SSH 私钥文件增加校验(必须是 ≤1MB 的普通文件)。 - 窗口安全选项显式固定(contextIsolation / nodeIntegration / webSecurity),不再依赖默认值。 ### 稳定性修复 - ZMODEM:写入错误正确终结传输、进度事件节流、会话 detach 时补发终结事件。 - 连接/命令配置文件损坏时自动备份旧文件再重建,不再静默丢配置。 - 布局模板应用失败时恢复原布局;锁屏期间后弹出的浮层也被正确禁用。 - 发布通道防降级(拒绝把旧版本盖到更新通道),资产按 sha512 校验。 - SFTP 各操作增加超时兜底,半死连接自动重试一次。 - 启动链路与主机密钥校验多处加固。 ### 其他 - 终端标签的自动编号标题(「终端 3」)现在跟随界面语言切换。 - 锁屏快捷键 Ctrl+L 改用物理键位判定,Dvorak 等非 QWERTY 布局也能正确触发。 - 设置页移除无效的「更新通道」下拉框。 ## v1.0.20 - 2026-10-01 ### 输入法修复 - **修复中文输入法候选窗不跟随光标**:此前在终端里输入中文时(尤其是 Kimi Code、Claude Code 等高频刷新的 TUI 界面),候选窗会漂到远离光标的位置;现已紧贴光标显示。内置终端组件升级至包含上游输入法修复的版本。 ### 锁屏加固 - **锁定期间移除应用菜单**:Alt 键唤出的菜单里「重新加载 / 开发者工具 / 缩放」可通过鼠标点击绕过键盘拦截,锁定期间整个菜单摘除,解锁后自动恢复。 - Ctrl+L 立即锁屏的按键判定重构为独立模块并补充 29 条测试用例,防止回归。 - 全局唤起快捷键的录制器保留 Ctrl+L 不允许占用,避免全局注册在系统层静默禁用紧急锁屏。 - 修复:系统休眠或窗口失焦后,锁屏密码框的冷却倒计时可能超过真实截止时间,导致可输入时间被无谓延长。 ## v1.0.19 - 2026-09-28 ### 更新机制调整 - **更新源改为 GitHub 优先**:检查更新先走 GitHub releases(跟随系统代理),并带 20 秒连通性探测——没有代理或连不通时不会干等,自动改用国内更新通道(强制直连)兜底。 - **GitHub releases 恢复随版本发布安装包**(exe + blockmap + latest.yml),与国内通道保持一致。 ### 终端高亮:性能与兼容性 - **引擎提速**:颜色序列改为编译期预计算(不再逐处解析 hex);高亮区间认领从线性扫描改为有序插入(二分查找);纯文本洪流(如 cat 大文件)跳过重扫描。实测 200KB 负载:密集匹配场景提速约 19–56%,纯文本流式提速约 54%,输出与旧版逐字节一致。 - **转义序列覆盖更全**:新增 DCS/APC/PM/SOS(tmux 透传、sixel、kitty 图形协议)与 DEC 单字符序列(保存/恢复光标等)的识别,这些场景下同行的正常文本不再丢失高亮。 ### 高亮设置页修复 - 「按分类分组」视图现在真正按分类聚簇(此前会被优先级排序打散)。 - 规则编辑器新增「基础规则」开关:可将自建规则加入「仅基础」模式的生效集合。 - 规则集(profile)编辑器勾选部分规则时,会列出未包含的规则。 - 「替换现有规则」导入增加确认提示,且每次打开弹窗默认回到「追加」。 - 修复若干小问题:快速连续开关规则可能丢改动、数值分级行不按阈值排序、清除背景色后色块残留等。 ## v1.0.18 - 2026-09-24 - **修复 v1.0.17 的严重回归:锁屏后无法输入密码**。v1.0.17 在锁屏期间由渲染层拦截了全部键盘输入(本意是挡住缩放/刷新快捷键),但按键的默认行为正是「向聚焦的输入框插入字符」,导致锁屏界面密码框收不到任何输入、无法解锁。 - 快捷键拦截已全部移到主进程(`before-input-event`),只拦截刷新/开发者工具/缩放组合键,普通输入不受影响。 - **新增锁屏快捷键 Ctrl+L**:应用内任意位置(包括终端里)按下立即锁屏;未设置锁屏密码时不占用该组合键(shell 的 Ctrl+L 清屏不受影响)。 - **已被 v1.0.17 锁定的用户恢复方法**:完全退出应用 → 删除 `%APPDATA%\OpenTerminal\lock.json` → 重新启动(锁屏数据删除后不会再弹锁屏),升级到本版本后可重新设置锁屏密码。 ## v1.0.17 - 2026-09-24 - **新增 设置 → 锁屏 选项卡**:可设置、修改、移除锁屏密码(仅存本机,scrypt 单向哈希,不存明文、无账号体系) - **三种锁定方式**:立即锁屏、系统闲置指定时长后自动锁定(1/5/15/30/60 分钟,默认关闭)、启动时锁屏 - 锁定后以完全不透明的遮罩覆盖窗口,背后的终端会话保持运行、不会断开,解锁后恢复原状 - 密码输错进入渐进冷却(1 秒→30 秒),防止在键盘前暴力猜测 - **退出并重新启动应用后锁定仍然生效**:托盘退出、任务管理器强杀、崩溃都绕不过锁屏 - 锁定期间停用 Ctrl+R / F5 重新加载、开发者工具与缩放快捷键,避免误触终止遮罩背后的会话 - 忘记密码无法找回,只能删除本机 `%APPDATA%\OpenTerminal\lock.json` 后重新设置 - 打包版本不再读取 `ELECTRON_RENDERER_URL` / `OT_UPDATE_URL` 环境变量,阻断把应用或更新通道指向恶意地址的注入路径 - 渲染进程 preload 重新启用沙箱隔离 - known_hosts 储存无法读取或损坏时改为拒绝连接、提示修复或删除文件,不再静默覆盖全部已固定的主机指纹 - 连接时的密码/口令输入与书签的认证方式统一(密钥/agent 认证的书签不再弹出密码框、不再送出残留的已存密码) - 修复 SSH 连接异常中断时会话退出通知漏发或重发的问题,终端不再卡在「连接中」 - 分割面板的系统监控在一侧关闭后不再误停另一侧的监控 - 会话日志索引加入路径校验,防止被篡改的索引把日志写到目录之外 - 设置保存改为原子写入,Windows 下文件被占用时自动重试,修复偶发的设置保存失败 - 新增 CI(GitHub Actions):类型检查 + 10 个离线测试 + 构建 - 窗口隐藏到托盘时,冻结检测日志不再把定时器节流误报为约 1 分钟的「卡死」 ## v1.0.16 - 2026-09-23 - **内置规则 11 条 → 22 条**:新增危险/破坏性命令(`rm -rf`、`mkfs`、`dd if=`、`chmod 777`、`drop database`、管道给 `sh` 等)、疑似密钥/令牌提醒、删除/移动/覆盖操作、新建/创建操作、日志级别、退出码、HTTP 状态码、耗时(毫秒)、百分比进度、网络与 IP 地址、时间日期、`root@` 提示符、Shell 关键字、字符串、环境变量等 - **状态词三分配色且不分大小写**:成功(`Success` / `Succeeded` / `Successfully` / `good` / `done` / `OK` / `✓`)、警告(`Warning` / `Caution` / `Deprecated` / `⚠`)、错误与致命(`Error` / `NG` / `err` / `bug` / `fail` / `FATAL` / `CRITICAL` / `PANIC` / `✗`)各自一种颜色 - `not ok` / `not found` 正确显示为错误,不会被误染成成功绿 - **数值分级取色**:百分比低于 20% 红、20–50% 黄、50–80% 浅绿、80% 以上绿;退出码、HTTP 状态码、耗时同样按数值分级取色 - **高亮模式三档**:全部 / 仅基础(只保留错误、成功、警告、危险命令、密钥等关键规则,开销约为全部的 1/4)/ 关闭(零开销) - 规则支持「忽略大小写」与「数值分级」开关,编辑器内可用测试文本实时预览着色效果 - 规则可导入 / 导出 JSON,方便团队分享同一套配色 - **按主机规则集**:可把规则子集存成命名规则集,并在 SSH 连接编辑里绑定给某台主机(默认关,未绑定的主机跑全部规则) - **命中/耗时统计**:每条规则在本会话的命中次数与扫描耗时(默认关,关闭时零开销) - **高亮颜色跟随终端主题**:规则颜色映射到当前主题的调色板,换主题不再突兀(默认关) - 高亮设置页新增分类列(安全 / 状态 / 文件 / 网络 / 文本 / 数值),可按分类分组查看规则 - 修复高亮设置页工具栏在窄窗口下标签被挤成竖排、按钮不靠右的问题 - 新增关键词高亮规则回归测试(词边界、大小写、反向词、数值分级、导入导出、分块流),`npm test` 全量通过 ## v1.0.15 - 2026-09-20 - **自定义终端背景图片**:设置 → 主题 → 背景图片,可为终端指定任意本地图片作为背景,并支持 10%–100% 的图片不透明度调节;移除图片后恢复纯色背景 - **主题编辑器重名提醒**:新建/编辑主题与内置或其他主题重名时给出黄色提示(仍可保存) - 主题编辑器种子颜色自动规范化,非法颜色值不再能进入自定义主题 - 自定义主题颜色数据损坏时自动修复为默认色,并记录告警日志 - 设置弹窗左侧导航选中项文字改为白色,与未选中项对比度一致(修复蓝色文字在深色背景上看不清的问题) - 设置弹窗背景图片、透明度等新增控件与四语言(简/繁/英/日)文案同步上线 - 渲染进程与主进程新增冻结时长探测日志,便于后续诊断"卡死无响应"类问题 ## v1.0.14 - 2026-09-20 - 修复上传 **大于约 250KB** 的文件会被静默损坏的问题(文件大小正确但内容出现字节错乱) - 修复每次下载泄漏一个远端文件句柄、每次传输遗留一个 SFTP 通道的问题;服务器协议异常不再导致整个应用退出 - 上传遇到同名文件时先询问是否覆盖;删除多个文件时部分失败会如实报告 - 权限编辑修复:未知权限的文件不再误发 `chmod 000`;GID 留空不再被误改成 UID 的值;正确显示并保留 setuid / setgid / sticky 特殊位 - chmod / chown 增加超时,远端无响应不再永久转圈 - 修复 SSH 输出中文乱码(跨网络包被截断的多字节字符) - 修复按 Tab 接受补全后命令历史丢失或记录错乱的问题 - 修复 Ctrl+U / Ctrl+W 等编辑键被写进命令历史(表现为历史里出现"两条命令拼接") - `cd ~/目录`、`cd $HOME/...` 现在能正确记忆目录,新终端按此恢复 - 中文行内的网址链接点击范围不再错位;窗口尺寸过小时不再向终端发送异常尺寸 - SSH 会话退出时显示真实退出码;ZMODEM 超时/出错不再向终端和日志倾倒乱码 - 启动恢复失败不再导致本次运行期间会话快照永久停止保存 - 监控面板 CPU / 网络历史曲线现在会实时重绘;切到本地终端工作区时停止向服务器轮询 - 广播输入:SSH 分屏关闭一侧不再让另一侧丢失广播目标;取消勾选一个目标不再清空其余选择 - 连接失败时显示真实原因(密码错误 / 拒绝连接等),双击不再重复创建连接 - 修复"关闭其他 / 关闭右侧"会漏关标签的问题 - 界面语言切换首帧即生效;切换主题后活动标签文字颜色自动适配,不再出现浅色主题下看不清 - 私钥路径字段提示纠正为"本机路径"(此前提示为服务器路径,照做会连接失败) - 禁止把文件拖入窗口导航;外部链接仅允许 http(s) / ftp;IPC 增加来源校验 - 仅密码认证的连接才使用存储的密码(密钥认证的连接不再回退发送密码) - 连接书签、主机指纹等配置改为原子写入,崩溃不再导致数据丢失 - 渲染进程异常退出时自动回收其全部终端会话与日志 - 自定义主题数据损坏不再导致应用无法启动 - 内置更新通道发布改为原子操作,发布中途失败不再导致自动更新不可用 ## v1.0.13 - 2026-09-20 - 支持简体中文 / 繁體中文 / English / 日本語,入口在「设置 → 系统 → 界面语言」,切换即时生效并持久化 - 全应用文案完成迁移:设置各页、工作区、终端右键菜单与搜索、SSH 连接管理、文件面板、系统监控、命令面板、托盘菜单与关闭询问 - antd 组件内置文案(空状态、分页等)随界面语言切换 - 更新日志改为**随安装包内置**,离线也能查看;不再依赖网络接口 - 更新日志支持多语言:按当前界面语言显示,某版本缺翻译时自动回退简体中文 - 修复「关闭按钮行为 = 每次询问」不生效的问题(此前会被静默改回「最小化到托盘」,选项形同虚设) - 高亮规则不再因字段形状问题被静默丢弃:优先级字符串、0/1 布尔值、缺失前景色等会被自动修复,未知字段保留 - 设置解析告警写入 `settings-warnings.log`,配置异常可追溯 - 终端右上角工具条可配置(设置 → 渲染与行为):打开工作区目录(默认开启)、记录会话日志、打开日志目录 - 「打开工作区目录」按钮:一键在资源管理器打开终端当前目录,随 `cd` 实时跟踪 - 全局唤起快捷键改为**按键录制**:点击输入框后直接按组合键,Esc 取消、退格清空;需带修饰键或功能键,避免误占普通按键 - 「输入建议」「记录命令历史」默认关闭(已有安装会一次性重置,之后手动开关不再被覆盖) - 修复设置弹窗内容列无法滚动的问题(antd v6 容器类名变更导致),主题页去掉多余的双层滚动条 - 界面细节:渲染模式与界面语言按钮改为连体分段样式,选中态文字对比度修正 发布时由 `scripts/sync-changelog.cjs` 自动把 RELEASE_NOTES.md 合并进此文件; 内容随安装包内置,「关于」页的更新日志直接读这里,不依赖网络。 ## v1.0.12 - 2026-09-20 ### 浅色主题对比度修复 - 标签栏/侧栏颜色改为按主题背景亮度自适应:浅色主题下标签栏与终端同色系(不再出现浑浊灰色条),深色主题外观不变 - 修复浅色主题下标签呈深色块、白字的问题:标签底色与文字改由主题变量接管,非活动标签浅底深字,活动标签文字自动压深 - 设置弹窗全面适配浅色主题:字体、高亮、主题等页面的标签/描述/表格/调色板文字改为跟随主题前景色,浅色下清晰可读 ### 稳定性 - 会话日志写入改为每文件缓冲 + 单条写循环:高输出场景下合并写入、顺序有保障,不再随写入次数无限堆积 - 设置保存串行化:托盘修改关闭行为与设置界面保存并发时不再互相覆盖丢更新